ngx-register-base 1.3.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/README.md +10 -0
  2. package/esm2022/lib/components/checkbox-selector/checkbox-selector.component.mjs +3 -3
  3. package/esm2022/lib/components/column-settings/column-settings.component.mjs +30 -25
  4. package/esm2022/lib/components/column-settings/components/column-settings-template/column-settings-template.component.mjs +4 -12
  5. package/esm2022/lib/components/column-settings/components/reset-settings-form/reset-settings-form.component.mjs +13 -0
  6. package/esm2022/lib/components/column-settings/consts/column-settings.consts.mjs +9 -9
  7. package/esm2022/lib/components/filter-button/filter-button.component.mjs +4 -5
  8. package/esm2022/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.mjs +22 -22
  9. package/esm2022/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.mjs +9 -6
  10. package/esm2022/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.mjs +13 -8
  11. package/esm2022/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.mjs +4 -4
  12. package/esm2022/lib/components/filters/components/filter-list/filter-list.service.mjs +16 -13
  13. package/esm2022/lib/components/filters/components/filter-list/filters-section/filters-section.component.mjs +4 -4
  14. package/esm2022/lib/components/filters/components/filter-list.module.mjs +33 -7
  15. package/esm2022/lib/components/filters/register-table-filter.component.mjs +5 -4
  16. package/esm2022/lib/components/filters/register-table-filter.module.mjs +5 -5
  17. package/esm2022/lib/components/index.mjs +2 -2
  18. package/esm2022/lib/components/inputs/index.mjs +4 -4
  19. package/esm2022/lib/components/inputs/param-calendar-year/param-calendar-year.component.mjs +37 -30
  20. package/esm2022/lib/components/inputs/param-custom/param-custom.component.mjs +3 -3
  21. package/esm2022/lib/components/inputs/param-date/param-date.component.mjs +27 -15
  22. package/esm2022/lib/components/inputs/param-date-range/index.mjs +2 -0
  23. package/esm2022/lib/components/inputs/param-date-range/param-date-range.component.mjs +80 -18
  24. package/esm2022/lib/components/inputs/param-date-time/param-date-time.component.mjs +65 -30
  25. package/esm2022/lib/components/inputs/param-date-time-range/date-time-range/date-time-range.component.mjs +406 -0
  26. package/esm2022/lib/components/inputs/param-date-time-range/date-time-range/date-time-range.consts.mjs +13 -0
  27. package/esm2022/lib/components/inputs/param-date-time-range/param-date-time-range.component.mjs +31 -34
  28. package/esm2022/lib/components/inputs/param-dropbox/param-dropbox.component.mjs +126 -0
  29. package/esm2022/lib/components/inputs/param-month/param-month.component.mjs +40 -9
  30. package/esm2022/lib/components/inputs/param-month-range/param-month-range.component.mjs +29 -8
  31. package/esm2022/lib/components/inputs/param-multi-select/param-multi-select.component.mjs +97 -113
  32. package/esm2022/lib/components/inputs/param-select/param-select.component.mjs +41 -45
  33. package/esm2022/lib/components/inputs/param-switcher/index.mjs +2 -0
  34. package/esm2022/lib/components/inputs/param-switcher/param-switcher.component.mjs +61 -11
  35. package/esm2022/lib/components/inputs/param-switcher/param-switcher.types.mjs +2 -0
  36. package/esm2022/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.mjs +7 -25
  37. package/esm2022/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.mjs +21 -20
  38. package/esm2022/lib/components/inputs/param-text/param-text.component.mjs +11 -6
  39. package/esm2022/lib/components/inputs/param-textarea/param-textarea.component.mjs +5 -3
  40. package/esm2022/lib/components/inputs/param-toggle/param-toggle.component.mjs +24 -7
  41. package/esm2022/lib/components/inputs/param-tree/param-tree.component.mjs +3 -3
  42. package/esm2022/lib/components/inputs/param-tree/services/param-tree.service.mjs +9 -2
  43. package/esm2022/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.mjs +13 -6
  44. package/esm2022/lib/components/inputs/param-tree-select/param-tree-select.component.mjs +9 -4
  45. package/esm2022/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.mjs +9 -5
  46. package/esm2022/lib/components/inputs/sub-components/param-label-hint-icon/param-label-hint-icon.component.mjs +12 -0
  47. package/esm2022/lib/components/paginator/paginator.component.mjs +10 -12
  48. package/esm2022/lib/components/register-table/register-table.component.mjs +31 -12
  49. package/esm2022/lib/components/search-input/search-input.component.mjs +5 -7
  50. package/esm2022/lib/components/sliding-panel/sliding-panel.component.mjs +23 -35
  51. package/esm2022/lib/components/template-modal/index.mjs +3 -0
  52. package/esm2022/lib/components/template-modal/template-modal.base.mjs +16 -0
  53. package/esm2022/lib/components/template-modal/template-modal.component.mjs +16 -0
  54. package/esm2022/lib/core/param/index.mjs +1 -1
  55. package/esm2022/lib/core/param/param-base.mjs +28 -3
  56. package/esm2022/lib/core/param/param-date-base.mjs +20 -11
  57. package/esm2022/lib/core/param/param-select-base.mjs +14 -6
  58. package/esm2022/lib/core/register-base/register-base.store.mjs +1 -1
  59. package/esm2022/lib/directives/date/date-time.types.mjs +1 -1
  60. package/esm2022/lib/providers/index.mjs +2 -0
  61. package/esm2022/lib/providers/provide-icons.mjs +23 -0
  62. package/esm2022/lib/services/date-time.service.mjs +1 -38
  63. package/esm2022/lib/services/dialog/dialog.service.mjs +1 -13
  64. package/esm2022/lib/services/dialog/dialog.types.mjs +2 -2
  65. package/esm2022/lib/services/message.service.mjs +48 -0
  66. package/esm2022/lib/services/validation-message.service.mjs +52 -0
  67. package/esm2022/lib/store/fast-query-store.service.mjs +16 -1
  68. package/esm2022/lib/utils/index.mjs +2 -1
  69. package/esm2022/lib/utils/utils.mjs +17 -0
  70. package/esm2022/public-api.mjs +2 -1
  71. package/fesm2022/ngx-register-base.mjs +1464 -1026
  72. package/fesm2022/ngx-register-base.mjs.map +1 -1
  73. package/icons/arrow-turn-up-left.svg +3 -0
  74. package/icons/check.svg +3 -0
  75. package/icons/floppy.svg +3 -0
  76. package/icons/star-empty.svg +10 -0
  77. package/icons/star-fill.svg +3 -0
  78. package/icons/trash.svg +3 -0
  79. package/icons/xmark.svg +3 -0
  80. package/lib/components/column-settings/column-settings.component.d.ts +9 -9
  81. package/lib/components/column-settings/components/column-settings-template/column-settings-template.component.d.ts +5 -5
  82. package/lib/components/{reset-settings-form → column-settings/components/reset-settings-form}/reset-settings-form.component.d.ts +2 -5
  83. package/lib/components/column-settings/consts/column-settings.consts.d.ts +8 -8
  84. package/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.d.ts +5 -8
  85. package/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.d.ts +2 -1
  86. package/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.d.ts +2 -1
  87. package/lib/components/filters/components/filter-list/filter-list.service.d.ts +2 -3
  88. package/lib/components/filters/components/filter-list.module.d.ts +7 -7
  89. package/lib/components/filters/register-table-filter.component.d.ts +2 -1
  90. package/lib/components/filters/register-table-filter.module.d.ts +2 -2
  91. package/lib/components/index.d.ts +1 -1
  92. package/lib/components/inputs/index.d.ts +3 -4
  93. package/lib/components/inputs/param-calendar-year/param-calendar-year.component.d.ts +2 -8
  94. package/lib/components/inputs/param-custom/param-custom.component.d.ts +1 -1
  95. package/lib/components/inputs/param-date/param-date.component.d.ts +7 -10
  96. package/lib/components/inputs/param-date-range/index.d.ts +1 -0
  97. package/lib/components/inputs/param-date-range/param-date-range.component.d.ts +13 -16
  98. package/lib/components/inputs/param-date-time/param-date-time.component.d.ts +8 -13
  99. package/lib/components/inputs/param-date-time-range/date-time-range/date-time-range.component.d.ts +96 -0
  100. package/lib/components/inputs/param-date-time-range/date-time-range/date-time-range.consts.d.ts +12 -0
  101. package/lib/components/inputs/param-date-time-range/param-date-time-range.component.d.ts +17 -16
  102. package/lib/components/inputs/param-dropbox/param-dropbox.component.d.ts +31 -0
  103. package/lib/components/inputs/param-month/param-month.component.d.ts +10 -8
  104. package/lib/components/inputs/param-month-range/param-month-range.component.d.ts +10 -8
  105. package/lib/components/inputs/param-multi-select/param-multi-select.component.d.ts +9 -11
  106. package/lib/components/inputs/param-select/param-select.component.d.ts +9 -12
  107. package/lib/components/inputs/param-switcher/index.d.ts +2 -0
  108. package/lib/components/inputs/param-switcher/param-switcher.component.d.ts +21 -5
  109. package/lib/components/inputs/param-switcher/param-switcher.types.d.ts +7 -0
  110. package/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.d.ts +3 -2
  111. package/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.d.ts +5 -4
  112. package/lib/components/inputs/param-text/param-text.component.d.ts +6 -4
  113. package/lib/components/inputs/param-textarea/param-textarea.component.d.ts +2 -1
  114. package/lib/components/inputs/param-toggle/param-toggle.component.d.ts +3 -2
  115. package/lib/components/inputs/param-tree/services/param-tree.service.d.ts +1 -1
  116. package/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.d.ts +2 -1
  117. package/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.d.ts +2 -1
  118. package/lib/components/inputs/sub-components/param-label-hint-icon/param-label-hint-icon.component.d.ts +5 -0
  119. package/lib/components/paginator/paginator.component.d.ts +3 -4
  120. package/lib/components/register-table/register-table.component.d.ts +5 -3
  121. package/lib/components/sliding-panel/sliding-panel.component.d.ts +8 -8
  122. package/lib/components/template-modal/index.d.ts +2 -0
  123. package/lib/components/template-modal/template-modal.base.d.ts +9 -0
  124. package/lib/components/template-modal/template-modal.component.d.ts +6 -0
  125. package/lib/core/param/index.d.ts +1 -0
  126. package/lib/core/param/param-base.d.ts +18 -2
  127. package/lib/core/param/param-date-base.d.ts +15 -9
  128. package/lib/core/param/param-select-base.d.ts +12 -7
  129. package/lib/core/register-base/register-base.store.d.ts +2 -3
  130. package/lib/directives/date/date-time.types.d.ts +0 -2
  131. package/lib/providers/index.d.ts +1 -0
  132. package/lib/providers/provide-icons.d.ts +3 -0
  133. package/lib/services/date-time.service.d.ts +0 -13
  134. package/lib/services/dialog/dialog.service.d.ts +1 -3
  135. package/lib/services/dialog/dialog.types.d.ts +0 -3
  136. package/lib/services/message.service.d.ts +20 -0
  137. package/lib/services/validation-message.service.d.ts +14 -0
  138. package/lib/store/fast-query-store.service.d.ts +1 -0
  139. package/lib/utils/index.d.ts +1 -0
  140. package/lib/utils/utils.d.ts +3 -0
  141. package/package.json +5 -12
  142. package/public-api.d.ts +1 -0
  143. package/styles/common-param.less +15 -0
  144. package/styles/flex.less +5 -1
  145. package/styles/icons.less +8 -0
  146. package/styles/modals.less +54 -0
  147. package/styles/overrides/tui/tui-input.less +94 -121
  148. package/styles/styles.less +2 -0
  149. package/esm2022/lib/components/inputs/inputs.module.mjs +0 -166
  150. package/esm2022/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.mjs +0 -15
  151. package/esm2022/lib/components/reset-settings-form/reset-settings-form.component.mjs +0 -18
  152. package/esm2022/lib/components/sliding-panel/sliding-panel.module.mjs +0 -19
  153. package/esm2022/lib/utils/prizm.shared.module.mjs +0 -284
  154. package/icons/calendar-blank.svg +0 -10
  155. package/lib/components/inputs/inputs.module.d.ts +0 -31
  156. package/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.d.ts +0 -6
  157. package/lib/components/sliding-panel/sliding-panel.module.d.ts +0 -9
  158. package/lib/utils/prizm.shared.module.d.ts +0 -14
  159. /package/icons/{calendar-icon.svg → calendar-date-time.svg} +0 -0
  160. /package/icons/{calendar-custom.svg → calendar-date.svg} +0 -0
@@ -198,10 +198,10 @@ export class ParamTreeComponent {
198
198
  });
199
199
  }
200
200
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ParamTreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
201
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ParamTreeComponent, isStandalone: true, selector: "sproc-param-tree", inputs: { multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null }, checkedNodes: { classPropertyName: "checkedNodes", publicName: "checkedNodes", isSignal: true, isRequired: false, transformFunction: null }, nodeTemplate: { classPropertyName: "nodeTemplate", publicName: "nodeTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedNodesChange: "selectedNodesChange" }, ngImport: i0, template: "<div class=\"tree-custom-class__container\">\n @for (node of treeNodes$ | async; track node) {\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\"></tui-loader>\n } @else {\n @if (defaultNodeOpenedState() === undefined) {\n <tui-tree\n class=\"tui_tree--not-collapsed\"\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n >\n </tui-tree>\n } @else {\n <tui-tree\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n [tuiTreeController]=\"!!defaultNodeOpenedState()\"\n [map]=\"openedNodesState()\"\n (toggled)=\"onToggle($event)\"\n >\n </tui-tree>\n }\n }\n }\n</div>\n\n<ng-template #contentTemplate let-node>\n @let isChecked = checkedNodesState().get(node);\n\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\"></tui-loader>\n } @else if (nodeTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate()\"\n [ngTemplateOutletContext]=\"{ node, isChecked, onChecked }\"\n ></ng-container>\n } @else {\n <label tuiLabel class=\"tree-custom-class__label-checkbox-container\">\n <input\n size=\"s\"\n tuiCheckbox\n type=\"checkbox\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"onChecked(node, $event)\"\n />\n <small>{{ node.name }}</small>\n </label>\n }\n</ng-template>\n", styles: [".tree-custom-class__label-checkbox-container{margin-inline-start:4px}\n"], dependencies: [{ kind: "component", type: i1.TuiTreeComponent, selector: "tui-tree", inputs: ["value", "trackBy", "content"] }, { kind: "directive", type: i1.TuiTreeChildren, selector: "tui-tree[childrenHandler]", inputs: ["childrenHandler"] }, { kind: "directive", type: i1.TuiTreeControllerDirective, selector: "[tuiTreeController][map]", inputs: ["tuiTreeController", "map"], outputs: ["toggled"], exportAs: ["tuiTreeController"] }, { kind: "directive", type: TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: TuiCheckbox, selector: "input[type=\"checkbox\"][tuiCheckbox]", inputs: ["size"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
201
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ParamTreeComponent, isStandalone: true, selector: "sproc-param-tree", inputs: { multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null }, checkedNodes: { classPropertyName: "checkedNodes", publicName: "checkedNodes", isSignal: true, isRequired: false, transformFunction: null }, nodeTemplate: { classPropertyName: "nodeTemplate", publicName: "nodeTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedNodesChange: "selectedNodesChange" }, ngImport: i0, template: "<div class=\"tree-custom-class__container\">\n @for (node of treeNodes$ | async; track node) {\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\" />\n } @else {\n @if (defaultNodeOpenedState() === undefined) {\n <tui-tree\n class=\"tui_tree--not-collapsed\"\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n >\n </tui-tree>\n } @else {\n <tui-tree\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n [tuiTreeController]=\"!!defaultNodeOpenedState()\"\n [map]=\"openedNodesState()\"\n (toggled)=\"onToggle($event)\"\n >\n </tui-tree>\n }\n }\n }\n</div>\n\n<ng-template #contentTemplate let-node>\n @let isChecked = checkedNodesState().get(node);\n\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\" />\n } @else if (nodeTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate()\"\n [ngTemplateOutletContext]=\"{ node, isChecked, onChecked }\"\n />\n } @else {\n <label tuiLabel class=\"tree-custom-class__label-checkbox-container\">\n <input\n size=\"s\"\n tuiCheckbox\n type=\"checkbox\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"onChecked(node, $event)\"\n />\n <small>{{ node.name }}</small>\n </label>\n }\n</ng-template>\n", styles: [".tree-custom-class__label-checkbox-container{margin-inline-start:4px}\n"], dependencies: [{ kind: "component", type: i1.TuiTreeComponent, selector: "tui-tree", inputs: ["value", "trackBy", "content"] }, { kind: "directive", type: i1.TuiTreeChildren, selector: "tui-tree[childrenHandler]", inputs: ["childrenHandler"] }, { kind: "directive", type: i1.TuiTreeControllerDirective, selector: "[tuiTreeController][map]", inputs: ["tuiTreeController", "map"], outputs: ["toggled"], exportAs: ["tuiTreeController"] }, { kind: "directive", type: TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: TuiCheckbox, selector: "input[type=\"checkbox\"][tuiCheckbox]", inputs: ["size"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
202
202
  }
203
203
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ParamTreeComponent, decorators: [{
204
204
  type: Component,
205
- args: [{ selector: 'sproc-param-tree', standalone: true, imports: [TuiTree, TuiLabel, TuiCheckbox, FormsModule, AsyncPipe, TuiLoader, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"tree-custom-class__container\">\n @for (node of treeNodes$ | async; track node) {\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\"></tui-loader>\n } @else {\n @if (defaultNodeOpenedState() === undefined) {\n <tui-tree\n class=\"tui_tree--not-collapsed\"\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n >\n </tui-tree>\n } @else {\n <tui-tree\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n [tuiTreeController]=\"!!defaultNodeOpenedState()\"\n [map]=\"openedNodesState()\"\n (toggled)=\"onToggle($event)\"\n >\n </tui-tree>\n }\n }\n }\n</div>\n\n<ng-template #contentTemplate let-node>\n @let isChecked = checkedNodesState().get(node);\n\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\"></tui-loader>\n } @else if (nodeTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate()\"\n [ngTemplateOutletContext]=\"{ node, isChecked, onChecked }\"\n ></ng-container>\n } @else {\n <label tuiLabel class=\"tree-custom-class__label-checkbox-container\">\n <input\n size=\"s\"\n tuiCheckbox\n type=\"checkbox\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"onChecked(node, $event)\"\n />\n <small>{{ node.name }}</small>\n </label>\n }\n</ng-template>\n", styles: [".tree-custom-class__label-checkbox-container{margin-inline-start:4px}\n"] }]
205
+ args: [{ selector: 'sproc-param-tree', standalone: true, imports: [TuiTree, TuiLabel, TuiCheckbox, FormsModule, AsyncPipe, TuiLoader, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"tree-custom-class__container\">\n @for (node of treeNodes$ | async; track node) {\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\" />\n } @else {\n @if (defaultNodeOpenedState() === undefined) {\n <tui-tree\n class=\"tui_tree--not-collapsed\"\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n >\n </tui-tree>\n } @else {\n <tui-tree\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n [tuiTreeController]=\"!!defaultNodeOpenedState()\"\n [map]=\"openedNodesState()\"\n (toggled)=\"onToggle($event)\"\n >\n </tui-tree>\n }\n }\n }\n</div>\n\n<ng-template #contentTemplate let-node>\n @let isChecked = checkedNodesState().get(node);\n\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\" />\n } @else if (nodeTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate()\"\n [ngTemplateOutletContext]=\"{ node, isChecked, onChecked }\"\n />\n } @else {\n <label tuiLabel class=\"tree-custom-class__label-checkbox-container\">\n <input\n size=\"s\"\n tuiCheckbox\n type=\"checkbox\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"onChecked(node, $event)\"\n />\n <small>{{ node.name }}</small>\n </label>\n }\n</ng-template>\n", styles: [".tree-custom-class__label-checkbox-container{margin-inline-start:4px}\n"] }]
206
206
  }], ctorParameters: () => [] });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0tdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL3BhcmFtLXRyZWUvcGFyYW0tdHJlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL3BhcmFtLXRyZWUvcGFyYW0tdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFeEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFB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LEtBQUssTUFBTSxJQUFJLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM3QixDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBclBVLGtCQUFrQjttR0FBbEIsa0JBQWtCLG1pQkNuQy9CLDhqREFtREEsc2lCRHJCcUIsUUFBUSw0REFBRSxXQUFXLG1HQUFFLFdBQVcsMmdCQUFFLFNBQVMsOENBQUUsU0FBUyxpSUFBRSxnQkFBZ0I7OzRGQUtsRixrQkFBa0I7a0JBUjlCLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixDQUFDLG1CQUc3RSx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIERlc3Ryb3lSZWYsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFR1aUNoZWNrYm94LCBUdWlUcmVlIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBUdWlMYWJlbCwgVHVpTG9hZGVyIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEVNUFRZLCBleHBhbmQsIGZpbHRlciwgZnJvbSwgb2YsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENoaWxkcmVuSGFuZGxlclR5cGUsIElUcmVlTm9kZSB9IGZyb20gJy4vdHlwZXMvcGFyYW0tdHJlZS50eXBlcyc7XG5pbXBvcnQgeyBQYXJhbVRyZWVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wYXJhbS10cmVlLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgVFJFRV9MT0FESU5HX05PREUsXG4gIHRyZWVOb2Rlc0ZsYXR0ZW4sXG4gIHVwZGF0ZXNDaGVja2VkTm9kZXNFcXVhbCxcbn0gZnJvbSAnLi9jb25zdHMvcGFyYW0tdHJlZS5jb25zdHMnO1xuXG4vKiog0JrQvtC80L/QvtC90LXQvdGCINC40LXRgNCw0YDRhdC40YfQtdGB0LrQvtCz0L4g0YHQv9C40YHQutCwICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcHJvYy1wYXJhbS10cmVlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1R1aVRyZWUsIFR1aUxhYmVsLCBUdWlDaGVja2JveCwgRm9ybXNNb2R1bGUsIEFzeW5jUGlwZSwgVHVpTG9hZGVyLCBOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhcmFtLXRyZWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcGFyYW0tdHJlZS5jb21wb25lbnQubGVzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQYXJhbVRyZWVDb21wb25lbnQ8VD4ge1xuICAvKipcbiAgICog0KDQtdC20LjQvCDQstGL0LHQvtGA0LAg0L3QtdGB0LrQvtC70YzQutC40YUg0LfQvdCw0YfQtdC90LjQuVxuICAgKlxuICAgKiBAZGVmYXVsdCDQktGL0LHQvtGAINC10LTQuNC90YHRgtCy0LXQvdC90L7Qs9C+INGD0LfQu9CwICovXG4gIHB1YmxpYyBtdWx0aSA9IGlucHV0KGZhbHNlKTtcbiAgLyoqINCX0LDQtNCw0YLRjCDQstGL0LHRgNCw0L3QvdGL0LUg0YPQt9C70YsgKi9cbiAgcHVibGljIGNoZWNrZWROb2RlcyA9IGlucHV0PElUcmVlTm9kZTxUPltdPihbXSk7XG4gIC8qKiDQmtCw0YHRgtC+0LzQvdGL0Lkg0YjQsNCx0LvQvtC9INGD0LfQu9CwICovXG4gIHB1YmxpYyBub2RlVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqINCS0YvQsdGA0LDQvdC90YvQtSDRg9C30LvRiyDQstC10YDRhdC90LXQs9C+INGD0YDQvtCy0L3RjyAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWROb2Rlc0NoYW5nZSA9IG91dHB1dDxJVHJlZU5vZGU8VD5bXT4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF90cmVlU2VydmljZSA9IGluamVjdChQYXJhbVRyZWVTZXJ2aWNlPFQ+KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZHIgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlZmF1bHROb2RlT3BlbmVkU3RhdGUgPSB0b1NpZ25hbCh0aGlzLl90cmVlU2VydmljZS5kZWZhdWx0Tm9kZU9wZW5lZFN0YXRlJCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBvcGVuZWROb2Rlc1N0YXRlID0gdGhpcy5fdHJlZVNlcnZpY2Uub3BlbmVkTm9kZXNTdGF0ZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoZWNrZWROb2Rlc1N0YXRlID0gdGhpcy5fdHJlZVNlcnZpY2UuY2hlY2tlZE5vZGVzU3RhdGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbGFzdENoZWNrZWROb2RlID0gdG9TaWduYWwodGhpcy5fdHJlZVNlcnZpY2UubGFzdENoZWNrZWROb2RlJCwge1xuICAgIGluaXRpYWxWYWx1ZTogbnVsbCxcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdXBkYXRlc0NoZWNrZWROb2RlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2hlY2tlZE5vZGVzKCksIHtcbiAgICBlcXVhbDogKHByZXYsIGN1cnIpID0+IHVwZGF0ZXNDaGVja2VkTm9kZXNFcXVhbChwcmV2LCBjdXJyLCB0aGlzLl90cmVlU2VydmljZSksXG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0cmVlTm9kZXMkID0gdGhpcy5fdHJlZVNlcnZpY2Uubm9kZXMkO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBUUkVFX0xPQURFUiA9IFRSRUVfTE9BRElOR19OT0RFO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hpbGRyZW5IYW5kbGVyOiBDaGlsZHJlbkhhbmRsZXJUeXBlPFQ+ID0gKG5vZGUpID0+XG4gICAgdGhpcy5fdHJlZVNlcnZpY2UuZ2V0Q2hpbGRyZW4obm9kZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy51cGRhdGVzQ2hlY2tlZE5vZGVzKCk7XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLmNoZWNrZWROb2Rlc1N0YXRlLnNldChuZXcgTWFwPElUcmVlTm9kZTxUPiwgYm9vbGVhbiB8IG51bGw+KCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3RyeVRvU2V0Tm9kZXNSZWN1cnNpdmUobm9kZXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRWYWx1ZShcbiAgICBjdXJyZW50Tm9kZTogSVRyZWVOb2RlPFQ+LFxuICAgIHN0YXRlOiBNYXA8SVRyZWVOb2RlPFQ+LCBib29sZWFuIHwgbnVsbD5cbiAgKTogYm9vbGVhbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm11bHRpKClcbiAgICAgID8gdGhpcy5faXNTZWxlY3RlZE11bHRpKGN1cnJlbnROb2RlLCBzdGF0ZSlcbiAgICAgIDogdGhpcy5faXNTZWxlY3RlZFNpbmdsZShjdXJyZW50Tm9kZSwgc3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNTZWxlY3RlZE11bHRpKFxuICAgIGN1cnJlbnROb2RlOiBJVHJlZU5vZGU8VD4sXG4gICAgc3RhdGU6IE1hcDxJVHJlZU5vZGU8VD4sIGJvb2xlYW4gfCBudWxsPlxuICApOiBib29sZWFuIHwgbnVsbCB7XG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGZsYXR0ZW5Ob2RlcyA9IHRyZWVOb2Rlc0ZsYXR0ZW48VD4oY3VycmVudE5vZGUsIHRoaXMuX3RyZWVTZXJ2aWNlKTtcbiAgICBjb25zdCBmaXJzdE5vZGUgPSBmbGF0dGVuTm9kZXNbMF07XG5cbiAgICBpZiAoZmlyc3ROb2RlKSB7XG4gICAgICByZXN1bHQgPSAhIXN0YXRlLmdldChmaXJzdE5vZGUpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBmbGF0dGVuTm9kZXMpIHtcbiAgICAgIGlmIChyZXN1bHQgIT09ICEhc3RhdGUuZ2V0KG5vZGUpKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRMZXZlbE5vZGUgPSBmbGF0dGVuTm9kZXMuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUucGFyZW50ID09PSBub2RlLnBhcmVudCk7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnRMZXZlbE5vZGUuZXZlcnkoKHZhbHVlKSA9PiAhIXN0YXRlLmdldCh2YWx1ZSkpID8gdHJ1ZSA6IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgX2lzU2VsZWN0ZWRTaW5nbGUoXG4gICAgY3VycmVudE5vZGU6IElUcmVlTm9kZTxUPixcbiAgICBzdGF0ZTogTWFwPElUcmVlTm9kZTxUPiwgYm9vbGVhbiB8IG51bGw+XG4gICk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICBjb25zdCBsYXN0Tm9kZSA9IHRoaXMuX2xhc3RDaGVja2VkTm9kZSgpO1xuICAgIGNvbnN0IGZsYXR0ZW5Ob2RlcyA9IHRyZWVOb2Rlc0ZsYXR0ZW48VD4oY3VycmVudE5vZGUsIHRoaXMuX3RyZWVTZXJ2aWNlKTtcbiAgICBjb25zdCBpc0xpbmtlZE5vZGUgPSBmbGF0dGVuTm9kZXMuc29tZSgobm9kZSkgPT4gISFzdGF0ZS5nZXQobm9kZSkpO1xuXG4gICAgaWYgKCFpc0xpbmtlZE5vZGUgfHwgIWxhc3ROb2RlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3ROb2RlID09PSBjdXJyZW50Tm9kZSB8fFxuICAgICAgdGhpcy5faXNEZWVwUGFyZW50KGN1cnJlbnROb2RlLCBsYXN0Tm9kZSkgfHxcbiAgICAgIHRoaXMuX2lzRGVlcENoaWxkKGN1cnJlbnROb2RlLCBsYXN0Tm9kZSlcbiAgICAgID8gdHJ1ZVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNEZWVwUGFyZW50KHBhcmVudDogSVRyZWVOb2RlPFQ+LCBjaGlsZDogSVRyZWVOb2RlPFQ+KTogYm9vbGVhbiB7XG4gICAgaWYgKCFjaGlsZC5wYXJlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAocGFyZW50ID09PSBjaGlsZC5wYXJlbnQgJiYgcGFyZW50LmNoaWxkcmVuIS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjaGlsZC5wYXJlbnQuY2hpbGRyZW4gJiYgY2hpbGQucGFyZW50LmNoaWxkcmVuLmxlbmd0aCAhPT0gMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9pc0RlZXBQYXJlbnQocGFyZW50LCBjaGlsZC5wYXJlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNEZWVwQ2hpbGQoY2hpbGQ6IElUcmVlTm9kZTxUPiwgcGFyZW50OiBJVHJlZU5vZGU8VD4pOiBib29sZWFuIHtcbiAgICBpZiAoIXBhcmVudC5jaGlsZHJlbiB8fCBwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBub2RlIG9mIHBhcmVudC5jaGlsZHJlbikge1xuICAgICAgaWYgKG5vZGUgPT09IGNoaWxkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5faXNEZWVwQ2hpbGQoY2hpbGQsIG5vZGUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblRvZ2dsZShjdXJyZW50Tm9kZTogSVRyZWVOb2RlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5fdHJlZVNlcnZpY2VcbiAgICAgIC5sb2FkQ2hpbGRyZW4oY3VycmVudE5vZGUpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZHIpKVxuICAgICAgLnN1YnNjcmliZSgoY2hpbGRyZW4pID0+IHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gY2hpbGRyZW4/LlswXT8ucGFyZW50O1xuXG4gICAgICAgIGlmIChwYXJlbnQgJiYgdGhpcy5jaGVja2VkTm9kZXNTdGF0ZSgpLmdldChwYXJlbnQpKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy5jaGVja2VkTm9kZXNTdGF0ZSgpLnNldChjaGlsZCwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNoZWNrZWQgPSAoY3VycmVudE5vZGU6IElUcmVlTm9kZTxUPiwgY2hlY2s6IGJvb2xlYW4pID0+IHtcbiAgICB0aGlzLl90cmVlU2VydmljZS5zZXRMYXN0Q2hlY2tlZE5vZGUoY2hlY2sgPyBjdXJyZW50Tm9kZSA6IG51bGwpO1xuICAgIGNvbnN0IGZsYXR0ZW5Ob2RlcyA9IHRyZWVOb2Rlc0ZsYXR0ZW48VD4oY3VycmVudE5vZGUsIHRoaXMuX3RyZWVTZXJ2aWNlKTtcblxuICAgIGlmICh0aGlzLm11bHRpKCkpIHtcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBmbGF0dGVuTm9kZXMpIHtcbiAgICAgICAgdGhpcy5jaGVja2VkTm9kZXNTdGF0ZSgpLnNldChub2RlLCBjaGVjayk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2hlY2tlZE5vZGVzU3RhdGUoKS5jbGVhcigpO1xuXG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgZmxhdHRlbk5vZGVzKSB7XG4gICAgICAgIHRoaXMuY2hlY2tlZE5vZGVzU3RhdGUoKS5zZXQobm9kZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlQ2hlY2tlZE5vZGVzKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQ2hlY2tlZE5vZGVzKG9wdGlvbnM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogdm9pZCB7XG4gICAgY29uc3QgdG9wTGV2ZWxOb2RlcyA9IHRoaXMuX3RyZWVTZXJ2aWNlLmdldFRvcExldmVsTm9kZXMoKTtcbiAgICBjb25zdCBzdGF0ZSA9IG5ldyBNYXA8SVRyZWVOb2RlPFQ+LCBib29sZWFuIHwgbnVsbD4oKTtcbiAgICB0aGlzLl9jYWxjQ2hlY2tlZFN0YXRlTm9kZXModG9wTGV2ZWxOb2Rlcywgc3RhdGUpO1xuICAgIHRoaXMuY2hlY2tlZE5vZGVzU3RhdGUuc2V0KHN0YXRlKTtcblxuICAgIGlmIChvcHRpb25zPy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXNDaGFuZ2UuZW1pdCh0aGlzLl9maW5kRnVsbHlTZWxlY3RlZE5vZGVzKHRvcExldmVsTm9kZXMpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9maW5kRnVsbHlTZWxlY3RlZE5vZGVzKG5vZGVzOiBJVHJlZU5vZGU8VD5bXSk6IElUcmVlTm9kZTxUPltdIHtcbiAgICBjb25zdCBmdWxseVNlbGVjdGVkTm9kZXM6IElUcmVlTm9kZTxUPltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgIGNvbnN0IGNoZWNrZWQgPSB0aGlzLmdldFZhbHVlKG5vZGUsIHRoaXMuY2hlY2tlZE5vZGVzU3RhdGUoKSk7XG5cbiAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgIGZ1bGx5U2VsZWN0ZWROb2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChjaGVja2VkID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5fdHJlZVNlcnZpY2UuZ2V0Q2hpbGRyZW4obm9kZSk7XG4gICAgICAgIGNvbnN0IGZ1bGx5U2VsZWN0ZWRDaGlsZHJlbiA9IHRoaXMuX2ZpbmRGdWxseVNlbGVjdGVkTm9kZXMoY2hpbGRyZW4pO1xuICAgICAgICBmdWxseVNlbGVjdGVkTm9kZXMucHVzaCguLi5mdWxseVNlbGVjdGVkQ2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmdWxseVNlbGVjdGVkTm9kZXM7XG4gIH1cblxuICBwcml2YXRlIF9jYWxjQ2hlY2tlZFN0YXRlTm9kZXMoXG4gICAgbm9kZXM6IElUcmVlTm9kZTxUPltdLFxuICAgIHN0YXRlOiBNYXA8SVRyZWVOb2RlPFQ+LCBib29sZWFuIHwgbnVsbD5cbiAgKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICBjb25zdCBjaGVja2VkID0gdGhpcy5nZXRWYWx1ZShub2RlLCB0aGlzLmNoZWNrZWROb2Rlc1N0YXRlKCkpO1xuXG4gICAgICBpZiAoY2hlY2tlZCAhPT0gZmFsc2UpIHtcbiAgICAgICAgc3RhdGUuc2V0KG5vZGUsIGNoZWNrZWQpO1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuX3RyZWVTZXJ2aWNlLmdldENoaWxkcmVuKG5vZGUpO1xuICAgICAgICB0aGlzLl9jYWxjQ2hlY2tlZFN0YXRlTm9kZXMoY2hpbGRyZW4sIHN0YXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF90cnlUb1NldE5vZGVzUmVjdXJzaXZlKG5ld05vZGVzOiBJVHJlZU5vZGU8VD5bXSk6IHZvaWQge1xuICAgIGNvbnN0IHRvcExldmVsTm9kZXMgPSB0aGlzLl90cmVlU2VydmljZS5nZXRUb3BMZXZlbE5vZGVzKCk7XG4gICAgY29uc3Qgc2VhcmNoTm9kZXNDb21wbGV0ZVN0YXRlID0gbmV3IE1hcChuZXdOb2Rlcy5tYXAoKG5ld05vZGUpID0+IFtuZXdOb2RlLCBmYWxzZV0pKTtcbiAgICBjb25zdCBhbGxDb21wbGV0ZSA9IChzdGF0ZTogTWFwPElUcmVlTm9kZTxUPiwgYm9vbGVhbj4pID0+IFsuLi5zdGF0ZS52YWx1ZXMoKV0uZXZlcnkoQm9vbGVhbik7XG4gICAgY29uc3QgYW5hbG9nTm9kZXM6IElUcmVlTm9kZTxUPltdID0gW107XG5cbiAgICBmcm9tKHRvcExldmVsTm9kZXMpXG4gICAgICAucGlwZShcbiAgICAgICAgZXhwYW5kKChub2RlKSA9PlxuICAgICAgICAgIHRoaXMuX3RyZWVTZXJ2aWNlLmhhc0NoaWxkcmVuKG5vZGUpXG4gICAgICAgICAgICA/IHRoaXMuX3RyZWVTZXJ2aWNlLmxvYWRDaGlsZHJlbihub2RlKS5waXBlKHN3aXRjaE1hcCgoY2hpbGRyZW4pID0+IGZyb20oY2hpbGRyZW4pKSlcbiAgICAgICAgICAgIDogRU1QVFlcbiAgICAgICAgKSxcbiAgICAgICAgdGFwKChub2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZm91bmROb2RlID0gbmV3Tm9kZXMuZmluZCgobmV3Tm9kZSkgPT4gdGhpcy5fdHJlZVNlcnZpY2UuZXF1YWxzKG5vZGUsIG5ld05vZGUpKTtcblxuICAgICAgICAgIGlmIChmb3VuZE5vZGUpIHtcbiAgICAgICAgICAgIHNlYXJjaE5vZGVzQ29tcGxldGVTdGF0ZS5zZXQoZm91bmROb2RlLCB0cnVlKTtcbiAgICAgICAgICAgIGFuYWxvZ05vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKCgpID0+IGFsbENvbXBsZXRlKHNlYXJjaE5vZGVzQ29tcGxldGVTdGF0ZSkpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy9uby11bnNhZmUtdGFrZXVudGlsXG4gICAgICAgIHRha2VVbnRpbChvZihudWxsKS5waXBlKGZpbHRlcigoKSA9PiBhbGxDb21wbGV0ZShzZWFyY2hOb2Rlc0NvbXBsZXRlU3RhdGUpKSkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZHIpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgYW5hbG9nTm9kZXMpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGVja2VkKG5vZGUsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidHJlZS1jdXN0b20tY2xhc3NfX2NvbnRhaW5lclwiPlxuICBAZm9yIChub2RlIG9mIHRyZWVOb2RlcyQgfCBhc3luYzsgdHJhY2sgbm9kZSkge1xuICAgIEBpZiAobm9kZSA9PT0gVFJFRV9MT0FERVIpIHtcbiAgICAgIDx0dWktbG9hZGVyIFtzaG93TG9hZGVyXT1cInRydWVcIiBbb3ZlcmxheV09XCJ0cnVlXCIgc2l6ZT1cInNcIj48L3R1aS1sb2FkZXI+XG4gICAgfSBAZWxzZSB7XG4gICAgICBAaWYgKGRlZmF1bHROb2RlT3BlbmVkU3RhdGUoKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIDx0dWktdHJlZVxuICAgICAgICAgIGNsYXNzPVwidHVpX3RyZWUtLW5vdC1jb2xsYXBzZWRcIlxuICAgICAgICAgIFt2YWx1ZV09XCJub2RlXCJcbiAgICAgICAgICBbY29udGVudF09XCJjb250ZW50VGVtcGxhdGVcIlxuICAgICAgICAgIFtjaGlsZHJlbkhhbmRsZXJdPVwiY2hpbGRyZW5IYW5kbGVyXCJcbiAgICAgICAgPlxuICAgICAgICA8L3R1aS10cmVlPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDx0dWktdHJlZVxuICAgICAgICAgIFt2YWx1ZV09XCJub2RlXCJcbiAgICAgICAgICBbY29udGVudF09XCJjb250ZW50VGVtcGxhdGVcIlxuICAgICAgICAgIFtjaGlsZHJlbkhhbmRsZXJdPVwiY2hpbGRyZW5IYW5kbGVyXCJcbiAgICAgICAgICBbdHVpVHJlZUNvbnRyb2xsZXJdPVwiISFkZWZhdWx0Tm9kZU9wZW5lZFN0YXRlKClcIlxuICAgICAgICAgIFttYXBdPVwib3BlbmVkTm9kZXNTdGF0ZSgpXCJcbiAgICAgICAgICAodG9nZ2xlZCk9XCJvblRvZ2dsZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L3R1aS10cmVlPlxuICAgICAgfVxuICAgIH1cbiAgfVxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudFRlbXBsYXRlIGxldC1ub2RlPlxuICBAbGV0IGlzQ2hlY2tlZCA9IGNoZWNrZWROb2Rlc1N0YXRlKCkuZ2V0KG5vZGUpO1xuXG4gIEBpZiAobm9kZSA9PT0gVFJFRV9MT0FERVIpIHtcbiAgICA8dHVpLWxvYWRlciBbc2hvd0xvYWRlcl09XCJ0cnVlXCIgW292ZXJsYXldPVwidHJ1ZVwiIHNpemU9XCJzXCI+PC90dWktbG9hZGVyPlxuICB9IEBlbHNlIGlmIChub2RlVGVtcGxhdGUoKSkge1xuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vZGVUZW1wbGF0ZSgpXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG5vZGUsIGlzQ2hlY2tlZCwgb25DaGVja2VkIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgfSBAZWxzZSB7XG4gICAgPGxhYmVsIHR1aUxhYmVsIGNsYXNzPVwidHJlZS1jdXN0b20tY2xhc3NfX2xhYmVsLWNoZWNrYm94LWNvbnRhaW5lclwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgdHVpQ2hlY2tib3hcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgW25nTW9kZWxdPVwiaXNDaGVja2VkXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja2VkKG5vZGUsICRldmVudClcIlxuICAgICAgLz5cbiAgICAgIDxzbWFsbD57eyBub2RlLm5hbWUgfX08L3NtYWxsPlxuICAgIDwvbGFiZWw+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0tdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL3BhcmFtLXRyZWUvcGFyYW0tdHJlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL3BhcmFtLXRyZWUvcGFyYW0tdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFeEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFB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LEtBQUssTUFBTSxJQUFJLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM3QixDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBclBVLGtCQUFrQjttR0FBbEIsa0JBQWtCLG1pQkNuQy9CLDBoREFtREEsc2lCRHJCcUIsUUFBUSw0REFBRSxXQUFXLG1HQUFFLFdBQVcsMmdCQUFFLFNBQVMsOENBQUUsU0FBUyxpSUFBRSxnQkFBZ0I7OzRGQUtsRixrQkFBa0I7a0JBUjlCLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixDQUFDLG1CQUc3RSx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIERlc3Ryb3lSZWYsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFR1aUNoZWNrYm94LCBUdWlUcmVlIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBUdWlMYWJlbCwgVHVpTG9hZGVyIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEVNUFRZLCBleHBhbmQsIGZpbHRlciwgZnJvbSwgb2YsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENoaWxkcmVuSGFuZGxlclR5cGUsIElUcmVlTm9kZSB9IGZyb20gJy4vdHlwZXMvcGFyYW0tdHJlZS50eXBlcyc7XG5pbXBvcnQgeyBQYXJhbVRyZWVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wYXJhbS10cmVlLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgVFJFRV9MT0FESU5HX05PREUsXG4gIHRyZWVOb2Rlc0ZsYXR0ZW4sXG4gIHVwZGF0ZXNDaGVja2VkTm9kZXNFcXVhbCxcbn0gZnJvbSAnLi9jb25zdHMvcGFyYW0tdHJlZS5jb25zdHMnO1xuXG4vKiog0JrQvtC80L/QvtC90LXQvdGCINC40LXRgNCw0YDRhdC40YfQtdGB0LrQvtCz0L4g0YHQv9C40YHQutCwICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcHJvYy1wYXJhbS10cmVlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1R1aVRyZWUsIFR1aUxhYmVsLCBUdWlDaGVja2JveCwgRm9ybXNNb2R1bGUsIEFzeW5jUGlwZSwgVHVpTG9hZGVyLCBOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhcmFtLXRyZWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcGFyYW0tdHJlZS5jb21wb25lbnQubGVzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQYXJhbVRyZWVDb21wb25lbnQ8VD4ge1xuICAvKipcbiAgICog0KDQtdC20LjQvCDQstGL0LHQvtGA0LAg0L3QtdGB0LrQvtC70YzQutC40YUg0LfQvdCw0YfQtdC90LjQuVxuICAgKlxuICAgKiBAZGVmYXVsdCDQktGL0LHQvtGAINC10LTQuNC90YHRgtCy0LXQvdC90L7Qs9C+INGD0LfQu9CwICovXG4gIHB1YmxpYyBtdWx0aSA9IGlucHV0KGZhbHNlKTtcbiAgLyoqINCX0LDQtNCw0YLRjCDQstGL0LHRgNCw0L3QvdGL0LUg0YPQt9C70YsgKi9cbiAgcHVibGljIGNoZWNrZWROb2RlcyA9IGlucHV0PElUcmVlTm9kZTxUPltdPihbXSk7XG4gIC8qKiDQmtCw0YHRgtC+0LzQvdGL0Lkg0YjQsNCx0LvQvtC9INGD0LfQu9CwICovXG4gIHB1YmxpYyBub2RlVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqINCS0YvQsdGA0LDQvdC90YvQtSDRg9C30LvRiyDQstC10YDRhdC90LXQs9C+INGD0YDQvtCy0L3RjyAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWROb2Rlc0NoYW5nZSA9IG91dHB1dDxJVHJlZU5vZGU8VD5bXT4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF90cmVlU2VydmljZSA9IGluamVjdChQYXJhbVRyZWVTZXJ2aWNlPFQ+KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZHIgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlZmF1bHROb2RlT3BlbmVkU3RhdGUgPSB0b1NpZ25hbCh0aGlzLl90cmVlU2VydmljZS5kZWZhdWx0Tm9kZU9wZW5lZFN0YXRlJCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBvcGVuZWROb2Rlc1N0YXRlID0gdGhpcy5fdHJlZVNlcnZpY2Uub3BlbmVkTm9kZXNTdGF0ZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoZWNrZWROb2Rlc1N0YXRlID0gdGhpcy5fdHJlZVNlcnZpY2UuY2hlY2tlZE5vZGVzU3RhdGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbGFzdENoZWNrZWROb2RlID0gdG9TaWduYWwodGhpcy5fdHJlZVNlcnZpY2UubGFzdENoZWNrZWROb2RlJCwge1xuICAgIGluaXRpYWxWYWx1ZTogbnVsbCxcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdXBkYXRlc0NoZWNrZWROb2RlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2hlY2tlZE5vZGVzKCksIHtcbiAgICBlcXVhbDogKHByZXYsIGN1cnIpID0+IHVwZGF0ZXNDaGVja2VkTm9kZXNFcXVhbChwcmV2LCBjdXJyLCB0aGlzLl90cmVlU2VydmljZSksXG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0cmVlTm9kZXMkID0gdGhpcy5fdHJlZVNlcnZpY2Uubm9kZXMkO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBUUkVFX0xPQURFUiA9IFRSRUVfTE9BRElOR19OT0RFO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hpbGRyZW5IYW5kbGVyOiBDaGlsZHJlbkhhbmRsZXJUeXBlPFQ+ID0gKG5vZGUpID0+XG4gICAgdGhpcy5fdHJlZVNlcnZpY2UuZ2V0Q2hpbGRyZW4obm9kZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy51cGRhdGVzQ2hlY2tlZE5vZGVzKCk7XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLmNoZWNrZWROb2Rlc1N0YXRlLnNldChuZXcgTWFwPElUcmVlTm9kZTxUPiwgYm9vbGVhbiB8IG51bGw+KCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3RyeVRvU2V0Tm9kZXNSZWN1cnNpdmUobm9kZXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRWYWx1ZShcbiAgICBjdXJyZW50Tm9kZTogSVRyZWVOb2RlPFQ+LFxuICAgIHN0YXRlOiBNYXA8SVRyZWVOb2RlPFQ+LCBib29sZWFuIHwgbnVsbD5cbiAgKTogYm9vbGVhbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm11bHRpKClcbiAgICAgID8gdGhpcy5faXNTZWxlY3RlZE11bHRpKGN1cnJlbnROb2RlLCBzdGF0ZSlcbiAgICAgIDogdGhpcy5faXNTZWxlY3RlZFNpbmdsZShjdXJyZW50Tm9kZSwgc3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNTZWxlY3RlZE11bHRpKFxuICAgIGN1cnJlbnROb2RlOiBJVHJlZU5vZGU8VD4sXG4gICAgc3RhdGU6IE1hcDxJVHJlZU5vZGU8VD4sIGJvb2xlYW4gfCBudWxsPlxuICApOiBib29sZWFuIHwgbnVsbCB7XG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGZsYXR0ZW5Ob2RlcyA9IHRyZWVOb2Rlc0ZsYXR0ZW48VD4oY3VycmVudE5vZGUsIHRoaXMuX3RyZWVTZXJ2aWNlKTtcbiAgICBjb25zdCBmaXJzdE5vZGUgPSBmbGF0dGVuTm9kZXNbMF07XG5cbiAgICBpZiAoZmlyc3ROb2RlKSB7XG4gICAgICByZXN1bHQgPSAhIXN0YXRlLmdldChmaXJzdE5vZGUpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBmbGF0dGVuTm9kZXMpIHtcbiAgICAgIGlmIChyZXN1bHQgIT09ICEhc3RhdGUuZ2V0KG5vZGUpKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRMZXZlbE5vZGUgPSBmbGF0dGVuTm9kZXMuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUucGFyZW50ID09PSBub2RlLnBhcmVudCk7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnRMZXZlbE5vZGUuZXZlcnkoKHZhbHVlKSA9PiAhIXN0YXRlLmdldCh2YWx1ZSkpID8gdHJ1ZSA6IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgX2lzU2VsZWN0ZWRTaW5nbGUoXG4gICAgY3VycmVudE5vZGU6IElUcmVlTm9kZTxUPixcbiAgICBzdGF0ZTogTWFwPElUcmVlTm9kZTxUPiwgYm9vbGVhbiB8IG51bGw+XG4gICk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICBjb25zdCBsYXN0Tm9kZSA9IHRoaXMuX2xhc3RDaGVja2VkTm9kZSgpO1xuICAgIGNvbnN0IGZsYXR0ZW5Ob2RlcyA9IHRyZWVOb2Rlc0ZsYXR0ZW48VD4oY3VycmVudE5vZGUsIHRoaXMuX3RyZWVTZXJ2aWNlKTtcbiAgICBjb25zdCBpc0xpbmtlZE5vZGUgPSBmbGF0dGVuTm9kZXMuc29tZSgobm9kZSkgPT4gISFzdGF0ZS5nZXQobm9kZSkpO1xuXG4gICAgaWYgKCFpc0xpbmtlZE5vZGUgfHwgIWxhc3ROb2RlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3ROb2RlID09PSBjdXJyZW50Tm9kZSB8fFxuICAgICAgdGhpcy5faXNEZWVwUGFyZW50KGN1cnJlbnROb2RlLCBsYXN0Tm9kZSkgfHxcbiAgICAgIHRoaXMuX2lzRGVlcENoaWxkKGN1cnJlbnROb2RlLCBsYXN0Tm9kZSlcbiAgICAgID8gdHJ1ZVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNEZWVwUGFyZW50KHBhcmVudDogSVRyZWVOb2RlPFQ+LCBjaGlsZDogSVRyZWVOb2RlPFQ+KTogYm9vbGVhbiB7XG4gICAgaWYgKCFjaGlsZC5wYXJlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAocGFyZW50ID09PSBjaGlsZC5wYXJlbnQgJiYgcGFyZW50LmNoaWxkcmVuIS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjaGlsZC5wYXJlbnQuY2hpbGRyZW4gJiYgY2hpbGQucGFyZW50LmNoaWxkcmVuLmxlbmd0aCAhPT0gMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9pc0RlZXBQYXJlbnQocGFyZW50LCBjaGlsZC5wYXJlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNEZWVwQ2hpbGQoY2hpbGQ6IElUcmVlTm9kZTxUPiwgcGFyZW50OiBJVHJlZU5vZGU8VD4pOiBib29sZWFuIHtcbiAgICBpZiAoIXBhcmVudC5jaGlsZHJlbiB8fCBwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBub2RlIG9mIHBhcmVudC5jaGlsZHJlbikge1xuICAgICAgaWYgKG5vZGUgPT09IGNoaWxkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5faXNEZWVwQ2hpbGQoY2hpbGQsIG5vZGUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblRvZ2dsZShjdXJyZW50Tm9kZTogSVRyZWVOb2RlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5fdHJlZVNlcnZpY2VcbiAgICAgIC5sb2FkQ2hpbGRyZW4oY3VycmVudE5vZGUpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZHIpKVxuICAgICAgLnN1YnNjcmliZSgoY2hpbGRyZW4pID0+IHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gY2hpbGRyZW4/LlswXT8ucGFyZW50O1xuXG4gICAgICAgIGlmIChwYXJlbnQgJiYgdGhpcy5jaGVja2VkTm9kZXNTdGF0ZSgpLmdldChwYXJlbnQpKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy5jaGVja2VkTm9kZXNTdGF0ZSgpLnNldChjaGlsZCwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNoZWNrZWQgPSAoY3VycmVudE5vZGU6IElUcmVlTm9kZTxUPiwgY2hlY2s6IGJvb2xlYW4pID0+IHtcbiAgICB0aGlzLl90cmVlU2VydmljZS5zZXRMYXN0Q2hlY2tlZE5vZGUoY2hlY2sgPyBjdXJyZW50Tm9kZSA6IG51bGwpO1xuICAgIGNvbnN0IGZsYXR0ZW5Ob2RlcyA9IHRyZWVOb2Rlc0ZsYXR0ZW48VD4oY3VycmVudE5vZGUsIHRoaXMuX3RyZWVTZXJ2aWNlKTtcblxuICAgIGlmICh0aGlzLm11bHRpKCkpIHtcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBmbGF0dGVuTm9kZXMpIHtcbiAgICAgICAgdGhpcy5jaGVja2VkTm9kZXNTdGF0ZSgpLnNldChub2RlLCBjaGVjayk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2hlY2tlZE5vZGVzU3RhdGUoKS5jbGVhcigpO1xuXG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgZmxhdHRlbk5vZGVzKSB7XG4gICAgICAgIHRoaXMuY2hlY2tlZE5vZGVzU3RhdGUoKS5zZXQobm9kZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlQ2hlY2tlZE5vZGVzKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQ2hlY2tlZE5vZGVzKG9wdGlvbnM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogdm9pZCB7XG4gICAgY29uc3QgdG9wTGV2ZWxOb2RlcyA9IHRoaXMuX3RyZWVTZXJ2aWNlLmdldFRvcExldmVsTm9kZXMoKTtcbiAgICBjb25zdCBzdGF0ZSA9IG5ldyBNYXA8SVRyZWVOb2RlPFQ+LCBib29sZWFuIHwgbnVsbD4oKTtcbiAgICB0aGlzLl9jYWxjQ2hlY2tlZFN0YXRlTm9kZXModG9wTGV2ZWxOb2Rlcywgc3RhdGUpO1xuICAgIHRoaXMuY2hlY2tlZE5vZGVzU3RhdGUuc2V0KHN0YXRlKTtcblxuICAgIGlmIChvcHRpb25zPy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXNDaGFuZ2UuZW1pdCh0aGlzLl9maW5kRnVsbHlTZWxlY3RlZE5vZGVzKHRvcExldmVsTm9kZXMpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9maW5kRnVsbHlTZWxlY3RlZE5vZGVzKG5vZGVzOiBJVHJlZU5vZGU8VD5bXSk6IElUcmVlTm9kZTxUPltdIHtcbiAgICBjb25zdCBmdWxseVNlbGVjdGVkTm9kZXM6IElUcmVlTm9kZTxUPltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgIGNvbnN0IGNoZWNrZWQgPSB0aGlzLmdldFZhbHVlKG5vZGUsIHRoaXMuY2hlY2tlZE5vZGVzU3RhdGUoKSk7XG5cbiAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgIGZ1bGx5U2VsZWN0ZWROb2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgfSBlbHNlIGlmIChjaGVja2VkID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5fdHJlZVNlcnZpY2UuZ2V0Q2hpbGRyZW4obm9kZSk7XG4gICAgICAgIGNvbnN0IGZ1bGx5U2VsZWN0ZWRDaGlsZHJlbiA9IHRoaXMuX2ZpbmRGdWxseVNlbGVjdGVkTm9kZXMoY2hpbGRyZW4pO1xuICAgICAgICBmdWxseVNlbGVjdGVkTm9kZXMucHVzaCguLi5mdWxseVNlbGVjdGVkQ2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmdWxseVNlbGVjdGVkTm9kZXM7XG4gIH1cblxuICBwcml2YXRlIF9jYWxjQ2hlY2tlZFN0YXRlTm9kZXMoXG4gICAgbm9kZXM6IElUcmVlTm9kZTxUPltdLFxuICAgIHN0YXRlOiBNYXA8SVRyZWVOb2RlPFQ+LCBib29sZWFuIHwgbnVsbD5cbiAgKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICBjb25zdCBjaGVja2VkID0gdGhpcy5nZXRWYWx1ZShub2RlLCB0aGlzLmNoZWNrZWROb2Rlc1N0YXRlKCkpO1xuXG4gICAgICBpZiAoY2hlY2tlZCAhPT0gZmFsc2UpIHtcbiAgICAgICAgc3RhdGUuc2V0KG5vZGUsIGNoZWNrZWQpO1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuX3RyZWVTZXJ2aWNlLmdldENoaWxkcmVuKG5vZGUpO1xuICAgICAgICB0aGlzLl9jYWxjQ2hlY2tlZFN0YXRlTm9kZXMoY2hpbGRyZW4sIHN0YXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF90cnlUb1NldE5vZGVzUmVjdXJzaXZlKG5ld05vZGVzOiBJVHJlZU5vZGU8VD5bXSk6IHZvaWQge1xuICAgIGNvbnN0IHRvcExldmVsTm9kZXMgPSB0aGlzLl90cmVlU2VydmljZS5nZXRUb3BMZXZlbE5vZGVzKCk7XG4gICAgY29uc3Qgc2VhcmNoTm9kZXNDb21wbGV0ZVN0YXRlID0gbmV3IE1hcChuZXdOb2Rlcy5tYXAoKG5ld05vZGUpID0+IFtuZXdOb2RlLCBmYWxzZV0pKTtcbiAgICBjb25zdCBhbGxDb21wbGV0ZSA9IChzdGF0ZTogTWFwPElUcmVlTm9kZTxUPiwgYm9vbGVhbj4pID0+IFsuLi5zdGF0ZS52YWx1ZXMoKV0uZXZlcnkoQm9vbGVhbik7XG4gICAgY29uc3QgYW5hbG9nTm9kZXM6IElUcmVlTm9kZTxUPltdID0gW107XG5cbiAgICBmcm9tKHRvcExldmVsTm9kZXMpXG4gICAgICAucGlwZShcbiAgICAgICAgZXhwYW5kKChub2RlKSA9PlxuICAgICAgICAgIHRoaXMuX3RyZWVTZXJ2aWNlLmhhc0NoaWxkcmVuKG5vZGUpXG4gICAgICAgICAgICA/IHRoaXMuX3RyZWVTZXJ2aWNlLmxvYWRDaGlsZHJlbihub2RlKS5waXBlKHN3aXRjaE1hcCgoY2hpbGRyZW4pID0+IGZyb20oY2hpbGRyZW4pKSlcbiAgICAgICAgICAgIDogRU1QVFlcbiAgICAgICAgKSxcbiAgICAgICAgdGFwKChub2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZm91bmROb2RlID0gbmV3Tm9kZXMuZmluZCgobmV3Tm9kZSkgPT4gdGhpcy5fdHJlZVNlcnZpY2UuZXF1YWxzKG5vZGUsIG5ld05vZGUpKTtcblxuICAgICAgICAgIGlmIChmb3VuZE5vZGUpIHtcbiAgICAgICAgICAgIHNlYXJjaE5vZGVzQ29tcGxldGVTdGF0ZS5zZXQoZm91bmROb2RlLCB0cnVlKTtcbiAgICAgICAgICAgIGFuYWxvZ05vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKCgpID0+IGFsbENvbXBsZXRlKHNlYXJjaE5vZGVzQ29tcGxldGVTdGF0ZSkpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy9uby11bnNhZmUtdGFrZXVudGlsXG4gICAgICAgIHRha2VVbnRpbChvZihudWxsKS5waXBlKGZpbHRlcigoKSA9PiBhbGxDb21wbGV0ZShzZWFyY2hOb2Rlc0NvbXBsZXRlU3RhdGUpKSkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZHIpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgYW5hbG9nTm9kZXMpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGVja2VkKG5vZGUsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidHJlZS1jdXN0b20tY2xhc3NfX2NvbnRhaW5lclwiPlxuICBAZm9yIChub2RlIG9mIHRyZWVOb2RlcyQgfCBhc3luYzsgdHJhY2sgbm9kZSkge1xuICAgIEBpZiAobm9kZSA9PT0gVFJFRV9MT0FERVIpIHtcbiAgICAgIDx0dWktbG9hZGVyIFtzaG93TG9hZGVyXT1cInRydWVcIiBbb3ZlcmxheV09XCJ0cnVlXCIgc2l6ZT1cInNcIiAvPlxuICAgIH0gQGVsc2Uge1xuICAgICAgQGlmIChkZWZhdWx0Tm9kZU9wZW5lZFN0YXRlKCkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICA8dHVpLXRyZWVcbiAgICAgICAgICBjbGFzcz1cInR1aV90cmVlLS1ub3QtY29sbGFwc2VkXCJcbiAgICAgICAgICBbdmFsdWVdPVwibm9kZVwiXG4gICAgICAgICAgW2NvbnRlbnRdPVwiY29udGVudFRlbXBsYXRlXCJcbiAgICAgICAgICBbY2hpbGRyZW5IYW5kbGVyXT1cImNoaWxkcmVuSGFuZGxlclwiXG4gICAgICAgID5cbiAgICAgICAgPC90dWktdHJlZT5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8dHVpLXRyZWVcbiAgICAgICAgICBbdmFsdWVdPVwibm9kZVwiXG4gICAgICAgICAgW2NvbnRlbnRdPVwiY29udGVudFRlbXBsYXRlXCJcbiAgICAgICAgICBbY2hpbGRyZW5IYW5kbGVyXT1cImNoaWxkcmVuSGFuZGxlclwiXG4gICAgICAgICAgW3R1aVRyZWVDb250cm9sbGVyXT1cIiEhZGVmYXVsdE5vZGVPcGVuZWRTdGF0ZSgpXCJcbiAgICAgICAgICBbbWFwXT1cIm9wZW5lZE5vZGVzU3RhdGUoKVwiXG4gICAgICAgICAgKHRvZ2dsZWQpPVwib25Ub2dnbGUoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC90dWktdHJlZT5cbiAgICAgIH1cbiAgICB9XG4gIH1cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnRUZW1wbGF0ZSBsZXQtbm9kZT5cbiAgQGxldCBpc0NoZWNrZWQgPSBjaGVja2VkTm9kZXNTdGF0ZSgpLmdldChub2RlKTtcblxuICBAaWYgKG5vZGUgPT09IFRSRUVfTE9BREVSKSB7XG4gICAgPHR1aS1sb2FkZXIgW3Nob3dMb2FkZXJdPVwidHJ1ZVwiIFtvdmVybGF5XT1cInRydWVcIiBzaXplPVwic1wiIC8+XG4gIH0gQGVsc2UgaWYgKG5vZGVUZW1wbGF0ZSgpKSB7XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9kZVRlbXBsYXRlKClcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbm9kZSwgaXNDaGVja2VkLCBvbkNoZWNrZWQgfVwiXG4gICAgLz5cbiAgfSBAZWxzZSB7XG4gICAgPGxhYmVsIHR1aUxhYmVsIGNsYXNzPVwidHJlZS1jdXN0b20tY2xhc3NfX2xhYmVsLWNoZWNrYm94LWNvbnRhaW5lclwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgdHVpQ2hlY2tib3hcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgW25nTW9kZWxdPVwiaXNDaGVja2VkXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja2VkKG5vZGUsICRldmVudClcIlxuICAgICAgLz5cbiAgICAgIDxzbWFsbD57eyBub2RlLm5hbWUgfX08L3NtYWxsPlxuICAgIDwvbGFiZWw+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -97,9 +97,16 @@ export class ParamTreeService {
97
97
  getTopLevelNodes() {
98
98
  return this._firstLevelNodes;
99
99
  }
100
- setLoaderNode(loaderNode, defaultNodeOpenedState) {
100
+ setLoaderNode(loaderNode, defaultNodeOpenedState, openedNodesState) {
101
101
  this._loaderNode$.next(loaderNode);
102
102
  this._defaultNodeOpenedState$.next(defaultNodeOpenedState);
103
+ if (openedNodesState) {
104
+ this.openedNodesState.set(openedNodesState);
105
+ const expandedNodes = [...openedNodesState.keys()];
106
+ for (const node of expandedNodes) {
107
+ this.loadChildren(node);
108
+ }
109
+ }
103
110
  }
104
111
  setLastCheckedNode(node) {
105
112
  this._lastCheckedNode$.next(node);
@@ -113,4 +120,4 @@ export class ParamTreeService {
113
120
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ParamTreeService, decorators: [{
114
121
  type: Injectable
115
122
  }], ctorParameters: () => [] });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0tdHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlZ2lzdGVyLWJhc2Uvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9wYXJhbS10cmVlL3NlcnZpY2VzL3BhcmFtLXRyZWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsVUFBVSxFQUNWLGFBQWEsRUFDYixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLEdBQUcsRUFDSCxHQUFHLEVBQ0gsUUFBUSxFQUVSLEVBQUUsRUFDRixPQUFPLEVBQ1AsU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUdqRixNQUFNLE9BQU8sZ0JBQWdCO0lBNEIzQjtRQTNCaUIsYUFBUSxHQUFHLE1BQU0sQ0FBZSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xELFlBQU8sR0FBRyxNQUFNLENBQWUsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkUs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SUFDcEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFtQixFQUFFLEtBQW1CO1FBQ3BELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBakpVLGdCQUFnQjttSEFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY2F0Y2hFcnJvcixcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBFTVBUWSxcbiAgZXhwYW5kLFxuICBmaWx0ZXIsXG4gIGZyb20sXG4gIGlpZixcbiAgbWFwLFxuICBtZXJnZU1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRVSV9UUkVFX0xPQURJTkcsIFRVSV9UUkVFX1NUQVJUIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBJTG9hZENvbmZpZywgSVRyZWVOb2RlLCBTbWFUcmVlTG9hZGVyIH0gZnJvbSAnLi4vdHlwZXMvcGFyYW0tdHJlZS50eXBlcyc7XG5pbXBvcnQgeyBUUkVFX0xPQURFUiB9IGZyb20gJy4uL3Rva2Vucy9wYXJhbS10cmVlLnRva2Vucyc7XG5pbXBvcnQgeyBqdXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgREVCT1VOQ0VfVElNRV9GT1JfU1lOQ19ORVhUX1ZBTFVFUyB9IGZyb20gJy4uL2NvbnN0cy9wYXJhbS10cmVlLmNvbnN0cyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQYXJhbVRyZWVTZXJ2aWNlPFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGluZyA9IGluamVjdDxJVHJlZU5vZGU8VD4+KFRVSV9UUkVFX0xPQURJTkcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGFydCQgPSBpbmplY3Q8SVRyZWVOb2RlPFQ+PihUVUlfVFJFRV9TVEFSVCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGVyID0gaW5qZWN0PFNtYVRyZWVMb2FkZXI8SVRyZWVOb2RlPFQ+Pj4oVFJFRV9MT0FERVIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRlck5vZGUkID0gbmV3IFN1YmplY3Q8SVRyZWVOb2RlPFQ+PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZWZhdWx0Tm9kZU9wZW5lZFN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGFzdENoZWNrZWROb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVRyZWVOb2RlPFQ+IHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWQkID0gbmV3IFN1YmplY3Q8SUxvYWRDb25maWc8VD4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhcmVudENoaWxkcmVuTWFwID0gbmV3IE1hcDxJVHJlZU5vZGU8VD4sIElUcmVlTm9kZTxUPltdPihbXG4gICAgW3RoaXMuX2xvYWRpbmcsIFtdXSxcbiAgXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX25vZGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVRyZWVOb2RlPFQ+W10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGVkQ2hpbGRyZW4kID0gbmV3IFN1YmplY3Q8SVRyZWVOb2RlPFQ+W10+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHROb2RlT3BlbmVkU3RhdGUkID0gdGhpcy5fZGVmYXVsdE5vZGVPcGVuZWRTdGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIHB1YmxpYyByZWFkb25seSBsYXN0Q2hlY2tlZE5vZGUkID0gdGhpcy5fbGFzdENoZWNrZWROb2RlJC5hc09ic2VydmFibGUoKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvYWRlck5vZGUkID0gdGhpcy5fbG9hZGVyTm9kZSQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9wZW5lZE5vZGVzU3RhdGUgPSBzaWduYWwobmV3IE1hcDxJVHJlZU5vZGU8VD4sIGJvb2xlYW4+KCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgY2hlY2tlZE5vZGVzU3RhdGUgPSBzaWduYWwobmV3IE1hcDxJVHJlZU5vZGU8VD4sIGJvb2xlYW4gfCBudWxsPigpKTtcblxuICBwcml2YXRlIF9maXJzdExldmVsTm9kZXM6IElUcmVlTm9kZTxUPltdID0gdGhpcy5fc3RhcnQkID8gW3RoaXMuX3N0YXJ0JF0gOiBbXTtcbiAgcHJpdmF0ZSBfZmlyc3RMZXZlbE5vZGVzTG9hZGVkID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IG5vZGVzJCA9IHRoaXMuX25vZGVzJC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9sb2FkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChsb2FkKSA9PlxuICAgICAgICAgIHRoaXMuX2xvYWQobG9hZC5ub2RlLCAhbG9hZC5jb25maWc/LmluaXRpYWwpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGZpcnN0TGV2ZWxOb2RlcykgPT4gKHsgbG9hZCwgZmlyc3RMZXZlbE5vZGVzIH0pKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgdGFwKCh7IGxvYWQ6IHsgY29uZmlnIH0sIGZpcnN0TGV2ZWxOb2RlcyB9KSA9PiB7XG4gICAgICAgICAgaWYgKGNvbmZpZz8uaW5pdGlhbCkge1xuICAgICAgICAgICAgdGhpcy5fZmlyc3RMZXZlbE5vZGVzID0gZmlyc3RMZXZlbE5vZGVzID8/IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIG1lcmdlTWFwKCh7IGxvYWQgfSkgPT5cbiAgICAgICAgICBpaWYoKCkgPT4gISFsb2FkLmNvbmZpZz8ub3BlbmVkLCB0aGlzLl9yZWN1cnNpdmVMb2FkKGxvYWQubm9kZSksIGp1c3QoKSlcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuX2ZpcnN0TGV2ZWxOb2RlcyksXG4gICAgICAgIHN0YXJ0V2l0aChbdGhpcy5fbG9hZGluZ10pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKG5vZGVzKSA9PiB7XG4gICAgICAgIHRoaXMuX25vZGVzJC5uZXh0KG5vZGVzKTtcbiAgICAgIH0pO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5sb2FkZXJOb2RlJCwgdGhpcy5kZWZhdWx0Tm9kZU9wZW5lZFN0YXRlJF0pXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoREVCT1VOQ0VfVElNRV9GT1JfU1lOQ19ORVhUX1ZBTFVFUyksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtsb2FkZXIsIG9wZW5lZF0pID0+IHtcbiAgICAgICAgdGhpcy5sb2FkRmlyc3RMZXZlbE5vZGVzKGxvYWRlciwgb3BlbmVkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVjdXJzaXZlTG9hZChzdGFydGVkTm9kZTogSVRyZWVOb2RlPFQ+KSB7XG4gICAgcmV0dXJuIG9mKHN0YXJ0ZWROb2RlKS5waXBlKFxuICAgICAgZXhwYW5kKChub2RlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuKG5vZGUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWQobm9kZSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoY2hpbGRyZW4pID0+IGZyb20oY2hpbGRyZW4pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gRU1QVFkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgcmV0dXJuIGZyb20obm9kZS5jaGlsZHJlbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbG9hZEZpcnN0TGV2ZWxOb2Rlcyhub2RlOiBJVHJlZU5vZGU8VD4sIG9wZW5lZDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2ZpcnN0TGV2ZWxOb2Rlc0xvYWRlZCkge1xuICAgICAgdGhpcy5fbG9hZCQubmV4dCh7IG5vZGUsIGNvbmZpZzogeyBpbml0aWFsOiB0cnVlLCBvcGVuZWQgfSB9KTtcbiAgICAgIHRoaXMuX2ZpcnN0TGV2ZWxOb2Rlc0xvYWRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbG9hZChub2RlOiBJVHJlZU5vZGU8VD4sIHNldENoaWxkcmVuID0gdHJ1ZSk6IE9ic2VydmFibGU8SVRyZWVOb2RlPFQ+W10+IHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGVyLmxvYWRDaGlsZHJlbihub2RlKS5waXBlKFxuICAgICAgdGFwKChjaGlsZHJlbikgPT4ge1xuICAgICAgICBpZiAoc2V0Q2hpbGRyZW4pIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgICAgICBjaGlsZC5wYXJlbnQgPSBub2RlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBub2RlLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICAgICAgdGhpcy5fcGFyZW50Q2hpbGRyZW5NYXAuc2V0KG5vZGUsIGNoaWxkcmVuKTtcbiAgICAgICAgICB0aGlzLl9sb2FkZWRDaGlsZHJlbiQubmV4dChjaGlsZHJlbik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjaGlsZGZyZWUgPSBbbm9kZSwgLi4uY2hpbGRyZW5dLmZpbHRlcigoaXRlbSkgPT4gIXRoaXMuaGFzQ2hpbGRyZW4oaXRlbSkpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY2hpbGRmcmVlKSB7XG4gICAgICAgICAgdGhpcy5fcGFyZW50Q2hpbGRyZW5NYXAuc2V0KGl0ZW0sIFtdKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGxvYWRDaGlsZHJlbihub2RlOiBJVHJlZU5vZGU8VD4pOiBPYnNlcnZhYmxlPElUcmVlTm9kZTxUPltdPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fbG9hZGVkQ2hpbGRyZW4kLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBmaWx0ZXIoKFtmaXJzdENoaWxkXSkgPT4gZmlyc3RDaGlsZD8ucGFyZW50ID09PSBub2RlKSxcbiAgICAgIHRha2UoMSlcbiAgICApO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbihub2RlKTtcblxuICAgIGlmIChjaGlsZHJlbiAmJiBjaGlsZHJlblswXSAhPT0gdGhpcy5fbG9hZGluZykge1xuICAgICAgcmV0dXJuIG9mKGNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wYXJlbnRDaGlsZHJlbk1hcC5zZXQobm9kZSwgW3RoaXMuX2xvYWRpbmddKTtcbiAgICB0aGlzLl9sb2FkJC5uZXh0KHsgbm9kZSB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2hpbGRyZW4obm9kZTogSVRyZWVOb2RlPFQ+KTogSVRyZWVOb2RlPFQ+W10ge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnRDaGlsZHJlbk1hcC5nZXQobm9kZSkgfHwgW3RoaXMuX2xvYWRpbmddO1xuICB9XG5cbiAgcHVibGljIGhhc0NoaWxkcmVuKG5vZGU6IElUcmVlTm9kZTxUPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkZXIuaGFzQ2hpbGRyZW4obm9kZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VG9wTGV2ZWxOb2RlcygpOiBJVHJlZU5vZGU8VD5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpcnN0TGV2ZWxOb2RlcztcbiAgfVxuXG4gIHB1YmxpYyBzZXRMb2FkZXJOb2RlKGxvYWRlck5vZGU6IElUcmVlTm9kZTxUPiwgZGVmYXVsdE5vZGVPcGVuZWRTdGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9sb2FkZXJOb2RlJC5uZXh0KGxvYWRlck5vZGUpO1xuICAgIHRoaXMuX2RlZmF1bHROb2RlT3BlbmVkU3RhdGUkLm5leHQoZGVmYXVsdE5vZGVPcGVuZWRTdGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0TGFzdENoZWNrZWROb2RlKG5vZGU6IElUcmVlTm9kZTxUPiB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLl9sYXN0Q2hlY2tlZE5vZGUkLm5leHQobm9kZSk7XG4gIH1cblxuICBwdWJsaWMgZXF1YWxzKG5vZGUxOiBJVHJlZU5vZGU8VD4sIG5vZGUyOiBJVHJlZU5vZGU8VD4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGVyLmVxdWFscyhub2RlMSwgbm9kZTIpO1xuICB9XG59XG4iXX0=
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0tdHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlZ2lzdGVyLWJhc2Uvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9wYXJhbS10cmVlL3NlcnZpY2VzL3BhcmFtLXRyZWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsVUFBVSxFQUNWLGFBQWEsRUFDYixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLEdBQUcsRUFDSCxHQUFHLEVBQ0gsUUFBUSxFQUVSLEVBQUUsRUFDRixPQUFPLEVBQ1AsU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUdqRixNQUFNLE9BQU8sZ0JBQWdCO0lBNEIzQjtRQTNCaUIsYUFBUSxHQUFHLE1BQU0sQ0FBZSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xELFlBQU8sR0FBRyxNQUFNLENBQWUsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkUs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LENBQUMsQ0FBQztZQUM1QyxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNuRCxLQUFLLE1BQU0sSUFBSSxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVNLGtCQUFrQixDQUFDLElBQXlCO1FBQ2pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFtQixFQUFFLEtBQW1CO1FBQ3BELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBNUpVLGdCQUFnQjttSEFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY2F0Y2hFcnJvcixcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBFTVBUWSxcbiAgZXhwYW5kLFxuICBmaWx0ZXIsXG4gIGZyb20sXG4gIGlpZixcbiAgbWFwLFxuICBtZXJnZU1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRVSV9UUkVFX0xPQURJTkcsIFRVSV9UUkVFX1NUQVJUIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBJTG9hZENvbmZpZywgSVRyZWVOb2RlLCBTbWFUcmVlTG9hZGVyIH0gZnJvbSAnLi4vdHlwZXMvcGFyYW0tdHJlZS50eXBlcyc7XG5pbXBvcnQgeyBUUkVFX0xPQURFUiB9IGZyb20gJy4uL3Rva2Vucy9wYXJhbS10cmVlLnRva2Vucyc7XG5pbXBvcnQgeyBqdXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgREVCT1VOQ0VfVElNRV9GT1JfU1lOQ19ORVhUX1ZBTFVFUyB9IGZyb20gJy4uL2NvbnN0cy9wYXJhbS10cmVlLmNvbnN0cyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQYXJhbVRyZWVTZXJ2aWNlPFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGluZyA9IGluamVjdDxJVHJlZU5vZGU8VD4+KFRVSV9UUkVFX0xPQURJTkcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGFydCQgPSBpbmplY3Q8SVRyZWVOb2RlPFQ+PihUVUlfVFJFRV9TVEFSVCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGVyID0gaW5qZWN0PFNtYVRyZWVMb2FkZXI8SVRyZWVOb2RlPFQ+Pj4oVFJFRV9MT0FERVIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRlck5vZGUkID0gbmV3IFN1YmplY3Q8SVRyZWVOb2RlPFQ+PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZWZhdWx0Tm9kZU9wZW5lZFN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGFzdENoZWNrZWROb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVRyZWVOb2RlPFQ+IHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWQkID0gbmV3IFN1YmplY3Q8SUxvYWRDb25maWc8VD4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhcmVudENoaWxkcmVuTWFwID0gbmV3IE1hcDxJVHJlZU5vZGU8VD4sIElUcmVlTm9kZTxUPltdPihbXG4gICAgW3RoaXMuX2xvYWRpbmcsIFtdXSxcbiAgXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX25vZGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVRyZWVOb2RlPFQ+W10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGVkQ2hpbGRyZW4kID0gbmV3IFN1YmplY3Q8SVRyZWVOb2RlPFQ+W10+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHROb2RlT3BlbmVkU3RhdGUkID0gdGhpcy5fZGVmYXVsdE5vZGVPcGVuZWRTdGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIHB1YmxpYyByZWFkb25seSBsYXN0Q2hlY2tlZE5vZGUkID0gdGhpcy5fbGFzdENoZWNrZWROb2RlJC5hc09ic2VydmFibGUoKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvYWRlck5vZGUkID0gdGhpcy5fbG9hZGVyTm9kZSQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9wZW5lZE5vZGVzU3RhdGUgPSBzaWduYWwobmV3IE1hcDxJVHJlZU5vZGU8VD4sIGJvb2xlYW4+KCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgY2hlY2tlZE5vZGVzU3RhdGUgPSBzaWduYWwobmV3IE1hcDxJVHJlZU5vZGU8VD4sIGJvb2xlYW4gfCBudWxsPigpKTtcblxuICBwcml2YXRlIF9maXJzdExldmVsTm9kZXM6IElUcmVlTm9kZTxUPltdID0gdGhpcy5fc3RhcnQkID8gW3RoaXMuX3N0YXJ0JF0gOiBbXTtcbiAgcHJpdmF0ZSBfZmlyc3RMZXZlbE5vZGVzTG9hZGVkID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IG5vZGVzJCA9IHRoaXMuX25vZGVzJC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9sb2FkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChsb2FkKSA9PlxuICAgICAgICAgIHRoaXMuX2xvYWQobG9hZC5ub2RlLCAhbG9hZC5jb25maWc/LmluaXRpYWwpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGZpcnN0TGV2ZWxOb2RlcykgPT4gKHsgbG9hZCwgZmlyc3RMZXZlbE5vZGVzIH0pKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgdGFwKCh7IGxvYWQ6IHsgY29uZmlnIH0sIGZpcnN0TGV2ZWxOb2RlcyB9KSA9PiB7XG4gICAgICAgICAgaWYgKGNvbmZpZz8uaW5pdGlhbCkge1xuICAgICAgICAgICAgdGhpcy5fZmlyc3RMZXZlbE5vZGVzID0gZmlyc3RMZXZlbE5vZGVzID8/IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIG1lcmdlTWFwKCh7IGxvYWQgfSkgPT5cbiAgICAgICAgICBpaWYoKCkgPT4gISFsb2FkLmNvbmZpZz8ub3BlbmVkLCB0aGlzLl9yZWN1cnNpdmVMb2FkKGxvYWQubm9kZSksIGp1c3QoKSlcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuX2ZpcnN0TGV2ZWxOb2RlcyksXG4gICAgICAgIHN0YXJ0V2l0aChbdGhpcy5fbG9hZGluZ10pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKG5vZGVzKSA9PiB7XG4gICAgICAgIHRoaXMuX25vZGVzJC5uZXh0KG5vZGVzKTtcbiAgICAgIH0pO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5sb2FkZXJOb2RlJCwgdGhpcy5kZWZhdWx0Tm9kZU9wZW5lZFN0YXRlJF0pXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoREVCT1VOQ0VfVElNRV9GT1JfU1lOQ19ORVhUX1ZBTFVFUyksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtsb2FkZXIsIG9wZW5lZF0pID0+IHtcbiAgICAgICAgdGhpcy5sb2FkRmlyc3RMZXZlbE5vZGVzKGxvYWRlciwgb3BlbmVkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVjdXJzaXZlTG9hZChzdGFydGVkTm9kZTogSVRyZWVOb2RlPFQ+KSB7XG4gICAgcmV0dXJuIG9mKHN0YXJ0ZWROb2RlKS5waXBlKFxuICAgICAgZXhwYW5kKChub2RlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuKG5vZGUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWQobm9kZSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoY2hpbGRyZW4pID0+IGZyb20oY2hpbGRyZW4pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gRU1QVFkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgcmV0dXJuIGZyb20obm9kZS5jaGlsZHJlbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbG9hZEZpcnN0TGV2ZWxOb2Rlcyhub2RlOiBJVHJlZU5vZGU8VD4sIG9wZW5lZDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2ZpcnN0TGV2ZWxOb2Rlc0xvYWRlZCkge1xuICAgICAgdGhpcy5fbG9hZCQubmV4dCh7IG5vZGUsIGNvbmZpZzogeyBpbml0aWFsOiB0cnVlLCBvcGVuZWQgfSB9KTtcbiAgICAgIHRoaXMuX2ZpcnN0TGV2ZWxOb2Rlc0xvYWRlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbG9hZChub2RlOiBJVHJlZU5vZGU8VD4sIHNldENoaWxkcmVuID0gdHJ1ZSk6IE9ic2VydmFibGU8SVRyZWVOb2RlPFQ+W10+IHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGVyLmxvYWRDaGlsZHJlbihub2RlKS5waXBlKFxuICAgICAgdGFwKChjaGlsZHJlbikgPT4ge1xuICAgICAgICBpZiAoc2V0Q2hpbGRyZW4pIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgICAgICBjaGlsZC5wYXJlbnQgPSBub2RlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBub2RlLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICAgICAgdGhpcy5fcGFyZW50Q2hpbGRyZW5NYXAuc2V0KG5vZGUsIGNoaWxkcmVuKTtcbiAgICAgICAgICB0aGlzLl9sb2FkZWRDaGlsZHJlbiQubmV4dChjaGlsZHJlbik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjaGlsZGZyZWUgPSBbbm9kZSwgLi4uY2hpbGRyZW5dLmZpbHRlcigoaXRlbSkgPT4gIXRoaXMuaGFzQ2hpbGRyZW4oaXRlbSkpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY2hpbGRmcmVlKSB7XG4gICAgICAgICAgdGhpcy5fcGFyZW50Q2hpbGRyZW5NYXAuc2V0KGl0ZW0sIFtdKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGxvYWRDaGlsZHJlbihub2RlOiBJVHJlZU5vZGU8VD4pOiBPYnNlcnZhYmxlPElUcmVlTm9kZTxUPltdPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fbG9hZGVkQ2hpbGRyZW4kLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBmaWx0ZXIoKFtmaXJzdENoaWxkXSkgPT4gZmlyc3RDaGlsZD8ucGFyZW50ID09PSBub2RlKSxcbiAgICAgIHRha2UoMSlcbiAgICApO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5nZXRDaGlsZHJlbihub2RlKTtcblxuICAgIGlmIChjaGlsZHJlbiAmJiBjaGlsZHJlblswXSAhPT0gdGhpcy5fbG9hZGluZykge1xuICAgICAgcmV0dXJuIG9mKGNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wYXJlbnRDaGlsZHJlbk1hcC5zZXQobm9kZSwgW3RoaXMuX2xvYWRpbmddKTtcbiAgICB0aGlzLl9sb2FkJC5uZXh0KHsgbm9kZSB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2hpbGRyZW4obm9kZTogSVRyZWVOb2RlPFQ+KTogSVRyZWVOb2RlPFQ+W10ge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnRDaGlsZHJlbk1hcC5nZXQobm9kZSkgfHwgW3RoaXMuX2xvYWRpbmddO1xuICB9XG5cbiAgcHVibGljIGhhc0NoaWxkcmVuKG5vZGU6IElUcmVlTm9kZTxUPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkZXIuaGFzQ2hpbGRyZW4obm9kZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VG9wTGV2ZWxOb2RlcygpOiBJVHJlZU5vZGU8VD5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpcnN0TGV2ZWxOb2RlcztcbiAgfVxuXG4gIHB1YmxpYyBzZXRMb2FkZXJOb2RlKFxuICAgIGxvYWRlck5vZGU6IElUcmVlTm9kZTxUPixcbiAgICBkZWZhdWx0Tm9kZU9wZW5lZFN0YXRlPzogYm9vbGVhbixcbiAgICBvcGVuZWROb2Rlc1N0YXRlPzogTWFwPElUcmVlTm9kZTxUPiwgYm9vbGVhbj5cbiAgKTogdm9pZCB7XG4gICAgdGhpcy5fbG9hZGVyTm9kZSQubmV4dChsb2FkZXJOb2RlKTtcbiAgICB0aGlzLl9kZWZhdWx0Tm9kZU9wZW5lZFN0YXRlJC5uZXh0KGRlZmF1bHROb2RlT3BlbmVkU3RhdGUpO1xuICAgIGlmIChvcGVuZWROb2Rlc1N0YXRlKSB7XG4gICAgICB0aGlzLm9wZW5lZE5vZGVzU3RhdGUuc2V0KG9wZW5lZE5vZGVzU3RhdGUpO1xuICAgICAgY29uc3QgZXhwYW5kZWROb2RlcyA9IFsuLi5vcGVuZWROb2Rlc1N0YXRlLmtleXMoKV07XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgZXhwYW5kZWROb2Rlcykge1xuICAgICAgICB0aGlzLmxvYWRDaGlsZHJlbihub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0TGFzdENoZWNrZWROb2RlKG5vZGU6IElUcmVlTm9kZTxUPiB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLl9sYXN0Q2hlY2tlZE5vZGUkLm5leHQobm9kZSk7XG4gIH1cblxuICBwdWJsaWMgZXF1YWxzKG5vZGUxOiBJVHJlZU5vZGU8VD4sIG5vZGUyOiBJVHJlZU5vZGU8VD4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGVyLmVxdWFscyhub2RlMSwgbm9kZTIpO1xuICB9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { Component, effect, inject, input, signal } from '@angular/core';
2
- import { TuiAppearance, TuiHint, TuiIcon, TuiTextfield } from '@taiga-ui/core';
2
+ import { TuiAppearance, TuiDropdownOptionsDirective, TuiHint, TuiIcon, TuiTextfield, } from '@taiga-ui/core';
3
3
  import { TUI_TREE_LOADING, TuiChevron, TuiComboBox } from '@taiga-ui/kit';
4
4
  import { ReactiveFormsModule } from '@angular/forms';
5
5
  import { NgTemplateOutlet } from '@angular/common';
@@ -11,6 +11,8 @@ import { FastQueryStore } from '../../../store/fast-query-store.service';
11
11
  import { ParamSelectBase } from '../../../core/param/param-select-base';
12
12
  import { distinctUntilChangedJSONs } from '../../../utils';
13
13
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
14
+ import { ParamInvalidIconComponent } from '../sub-components/param-invalid-icon/param-invalid-icon.component';
15
+ import { ValidationMessageService } from '../../../services/validation-message.service';
14
16
  import * as i0 from "@angular/core";
15
17
  import * as i1 from "@taiga-ui/core";
16
18
  import * as i2 from "@angular/forms";
@@ -30,12 +32,13 @@ export class ParamTreeMultiSelectComponent extends ParamSelectBase {
30
32
  this.defaultNodeOpenedState = input();
31
33
  this.stringify = input((item) => String(item.name));
32
34
  this.shortPickedLength = input(true);
35
+ this.openedNodesState = input();
33
36
  this.buildShowedValue = input((values) => values?.map((v) => v.name).join(',\n') ?? '-');
34
37
  this.placeholder = input('Выберите значения');
35
38
  this._treeService = inject(ParamTreeService);
36
39
  this.checkedNodes = signal([]);
37
40
  effect(() => {
38
- this._treeService.setLoaderNode(this.loaderNode(), this.defaultNodeOpenedState());
41
+ this._treeService.setLoaderNode(this.loaderNode(), this.defaultNodeOpenedState(), this.openedNodesState());
39
42
  });
40
43
  }
41
44
  afterViewInit() {
@@ -52,11 +55,12 @@ export class ParamTreeMultiSelectComponent extends ParamSelectBase {
52
55
  this.control.setValue(node);
53
56
  }
54
57
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ParamTreeMultiSelectComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ParamTreeMultiSelectComponent, isStandalone: true, selector: "sproc-param-tree-multi-select", inputs: { loaderNode: { classPropertyName: "loaderNode", publicName: "loaderNode", isSignal: true, isRequired: true, transformFunction: null }, defaultNodeOpenedState: { classPropertyName: "defaultNodeOpenedState", publicName: "defaultNodeOpenedState", isSignal: true, isRequired: false, transformFunction: null }, stringify: { classPropertyName: "stringify", publicName: "stringify", isSignal: true, isRequired: false, transformFunction: null }, shortPickedLength: { classPropertyName: "shortPickedLength", publicName: "shortPickedLength", isSignal: true, isRequired: false, transformFunction: null }, buildShowedValue: { classPropertyName: "buildShowedValue", publicName: "buildShowedValue", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
58
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ParamTreeMultiSelectComponent, isStandalone: true, selector: "sproc-param-tree-multi-select", inputs: { loaderNode: { classPropertyName: "loaderNode", publicName: "loaderNode", isSignal: true, isRequired: true, transformFunction: null }, defaultNodeOpenedState: { classPropertyName: "defaultNodeOpenedState", publicName: "defaultNodeOpenedState", isSignal: true, isRequired: false, transformFunction: null }, stringify: { classPropertyName: "stringify", publicName: "stringify", isSignal: true, isRequired: false, transformFunction: null }, shortPickedLength: { classPropertyName: "shortPickedLength", publicName: "shortPickedLength", isSignal: true, isRequired: false, transformFunction: null }, openedNodesState: { classPropertyName: "openedNodesState", publicName: "openedNodesState", isSignal: true, isRequired: false, transformFunction: null }, buildShowedValue: { classPropertyName: "buildShowedValue", publicName: "buildShowedValue", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
56
59
  ParamTreeService,
57
60
  { provide: TUI_TREE_LOADING, useValue: TREE_LOADING_NODE },
58
61
  FastQueryStore,
59
- ], usesInheritance: true, ngImport: i0, template: "<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n @switch (paramStyle) {\n @case ('filter') {\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n }\n @default {\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n }\n }\n }\n <ng-container [ngTemplateOutlet]=\"value ? showedValueTemplate : emptyTemplate\">\n <ng-template #showedValueTemplate>\n @switch (paramStyle) {\n @case ('filter') {\n <pre class=\"value\">{{ showedValue }}</pre>\n }\n @default {\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n }\n }\n </ng-template>\n <ng-template #emptyTemplate>\n <span class=\"value\">-</span>\n </ng-template>\n </ng-container>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n @if (hint) {\n <tui-icon\n icon=\"assets/ngx-register-base/icons/circle-info-empty.svg\"\n [tuiHint]=\"hint\"\n class=\"hintIcon\"\n ></tui-icon>\n }\n </div>\n }\n <tui-textfield\n tuiChevron\n tuiTextfieldSize=\"m\"\n tuiAppearance=\"sproc-input-appearance\"\n [stringify]=\"stringify()\"\n [tuiTextfieldCleaner]=\"forceClear\"\n [tuiTextfieldLabelOutside]=\"true\"\n [content]=\"valueContent\"\n >\n <input tuiComboBox [placeholder]=\"placeholder()\" [formControl]=\"control\" />\n <ng-container *tuiTextfieldDropdown [ngTemplateOutlet]=\"paramTreeTemplate\"></ng-container>\n </tui-textfield>\n <ng-template #valueContent let-list>\n {{ shortPickedLength() ? '\u0412\u044B\u0431\u0440\u0430\u043D\u043E: ' : null }} {{ list.length }}\n </ng-template>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #paramTreeTemplate>\n <sproc-param-tree\n [multi]=\"true\"\n [checkedNodes]=\"checkedNodes()\"\n (selectedNodesChange)=\"setSelectedNodes($event)\"\n ></sproc-param-tree>\n</ng-template>\n", styles: [".input-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-text-12px,.body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.table-heading-12px{font-family:Inter,serif;font-size:12px;font-weight:500;line-height:16px}.table-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.table-text-12px-400{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:16px}.table-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.button-links-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.button-links-12px-600{font-family:Inter,serif;font-size:12px;font-weight:600;line-height:16px}.button-links-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.input-area{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:20px}.static-title-h3{font-family:Inter,serif;font-size:16px;font-weight:600;line-height:20px}.static-title-h4{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.dynamic-title-h4{font-family:Inter,serif;font-size:14px;font-weight:800;line-height:20px}.main-body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.main-body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.main-subscription{font-family:Inter,serif;font-size:10px;font-weight:400;line-height:12px}.input-helper-9px{font-family:Inter,serif;font-size:9px;font-weight:300;line-height:12px}.typography-content-text{font-family:Inter,serif;font-size:12px;font-weight:350;line-height:16px}.main-subtitle,.card-content-text{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.filter-header-text{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.btn-14px{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.search-11px{font-family:Inter,serif;font-size:11px;font-weight:300;line-height:12px}:root{--input-text-12px: normal 300 12px / 16px \"Inter\";--input-text-14px: normal 300 14px / 16px \"Inter\"}.textfield-icons-container{display:flex;margin-inline-end:.5rem;margin-inline-start:.5rem;flex-direction:row;align-items:center;gap:8px}.textfield-icons-container .invalid-icon{color:var(--deleted-color);height:16px;width:16px}.textfield-icons-container .cleaner-icon{color:var(--gray-icon);height:16px;width:16px;pointer-events:auto}.textfield-icons-container .cleaner-icon:hover{color:var(--main-black);cursor:pointer}.textfield-icons-container .chevron{color:var(--gray-icon);height:16px;width:16px;pointer-events:none}.clickable:hover{cursor:pointer}.read-style-card[sproc-param-style=card]{display:flex;align-items:flex-start;gap:4px;padding:8px 0}.read-style-card[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}.read-style-card[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.read-style-card[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.read-style-card[sproc-param-style=card] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}.read-style-card[sproc-param-style=card] .value{font-family:Inter,serif!important;font-size:14px!important;font-weight:400!important;line-height:16px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px;color:var(--main-black)!important}.read-style-filter[sproc-param-style=filter]{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;gap:4px}.read-style-filter[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}.read-style-filter[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.read-style-filter[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.read-style-filter[sproc-param-style=filter] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}.read-style-filter[sproc-param-style=filter] .value{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px;color:var(--text-main)}.edit-style-card[sproc-param-style=card]{height:auto;width:100%;display:flex;flex-direction:column;padding-bottom:8px}.edit-style-card[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}.edit-style-card[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.edit-style-card[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.edit-style-filter[sproc-param-style=filter]{width:100%;display:flex;flex-direction:column}.edit-style-filter[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}.edit-style-filter[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.edit-style-filter[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.default-label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px}.default-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.default-label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.default-dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}:host .container--read[sproc-param-style=card]{display:flex;align-items:flex-start;gap:4px;padding:8px 0}:host .container--read[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}:host .container--read[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--read[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--read[sproc-param-style=card] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}:host .container--read[sproc-param-style=card] .value{font-family:Inter,serif!important;font-size:14px!important;font-weight:400!important;line-height:16px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px;color:var(--main-black)!important}:host .container--read[sproc-param-style=filter]{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;gap:4px}:host .container--read[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}:host .container--read[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--read[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--read[sproc-param-style=filter] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}:host .container--read[sproc-param-style=filter] .value{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px;color:var(--text-main)}:host .container--edit[sproc-param-style=card]{height:auto;width:100%;display:flex;flex-direction:column;padding-bottom:8px}:host .container--edit[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}:host .container--edit[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--edit[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--edit[sproc-param-style=filter]{width:100%;display:flex;flex-direction:column}:host .container--edit[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}:host .container--edit[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--edit[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--edit[sproc-param-style=card]{padding:0 2px}:host .container--edit[sproc-param-style=card] .label-wrapper{padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%;display:flex;justify-content:space-between}:host .container--edit[sproc-param-style=card] ::ng-deep input{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px;color:var(--text-contrast)}:host .container--edit[sproc-param-style=filter] ::ng-deep input{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--text-contrast)}:host .container--edit .selected-item-wrapper{display:flex;flex-direction:row;padding:4px;margin:0 2px;min-width:4px;max-width:100%;align-items:center;justify-content:space-between;border-radius:2px;background:var(--chip-background);font-size:14px;line-height:16px;color:var(--main-black);cursor:pointer}:host .container .default-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container .default-label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .hintIcon{width:16px;height:16px}:host ::ng-deep .choosed{display:none}:host ::ng-deep .empty{position:relative}:host ::ng-deep .empty .choosed{display:flex;cursor:pointer;align-items:center;position:absolute;justify-content:space-between;top:7px;left:8px;z-index:2;font-size:12px;font-family:Inter,sans-serif;color:#000;padding:6px;border-radius:2px;width:95px;height:18px;background:var(--prizm-v3-status-none-secondary-default)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: TuiTextfieldControllerModule }, { kind: "directive", type: i3.TuiTextfieldCleanerDirective, selector: "[tuiTextfieldCleaner]", inputs: ["tuiTextfieldCleaner"] }, { kind: "directive", type: i3.TuiTextfieldLabelOutsideDirective, selector: "[tuiTextfieldLabelOutside]", inputs: ["tuiTextfieldLabelOutside"] }, { kind: "directive", type: i3.TuiTextfieldSizeDirective, selector: "[tuiTextfieldSize]", inputs: ["tuiTextfieldSize"] }, { kind: "component", type: ParamTreeComponent, selector: "sproc-param-tree", inputs: ["multi", "checkedNodes", "nodeTemplate"], outputs: ["selectedNodesChange"] }, { kind: "directive", type: TuiAppearance, selector: "[tuiAppearance]", inputs: ["tuiAppearance", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceMode"] }, { kind: "component", type: i1.TuiTextfieldComponent, selector: "tui-textfield:not([multi])" }, { kind: "directive", type: i1.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i1.TuiTextfieldDropdownDirective, selector: "ng-template[tuiTextfieldDropdown]" }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "directive", type: TuiComboBox, selector: "input[tuiComboBox]", inputs: ["strict", "matcher"] }] }); }
62
+ ValidationMessageService,
63
+ ], usesInheritance: true, ngImport: i0, template: "<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n @switch (paramStyle) {\n @case ('filter') {\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n }\n @default {\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n }\n }\n }\n <ng-container [ngTemplateOutlet]=\"value ? showedValueTemplate : emptyTemplate\">\n <ng-template #showedValueTemplate>\n @switch (paramStyle) {\n @case ('filter') {\n <pre class=\"value\">{{ showedValue }}</pre>\n }\n @default {\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n }\n }\n </ng-template>\n <ng-template #emptyTemplate>\n <span class=\"value\">-</span>\n </ng-template>\n </ng-container>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n @if (hint) {\n <tui-icon icon=\"@sproc.circle-info-empty\" [tuiHint]=\"hint\" class=\"hintIcon\" />\n }\n </div>\n }\n <tui-textfield\n tuiAppearance=\"sproc-input-appearance\"\n tuiChevron\n [tuiTextfieldSize]=\"size()\"\n [stringify]=\"stringify()\"\n [tuiTextfieldCleaner]=\"forceClear\"\n [tuiTextfieldLabelOutside]=\"true\"\n [content]=\"valueContent\"\n [tuiDropdownMinHeight]=\"minDropdownHeight()\"\n [tuiDropdownMaxHeight]=\"maxDropdownHeight()\"\n [tuiDropdownLimitWidth]=\"dropdownLimitWidth()\"\n >\n <input tuiComboBox [placeholder]=\"placeholder()\" [formControl]=\"control\" />\n\n <div class=\"textfield-icons-container\">\n @if (isInvalidAndNotPristine) {\n <sproc-param-invalid-icon [hint]=\"validationErrorHint()\" />\n }\n </div>\n <ng-container *tuiTextfieldDropdown [ngTemplateOutlet]=\"paramTreeTemplate\"></ng-container>\n </tui-textfield>\n <ng-template #valueContent let-list>\n {{ shortPickedLength() ? '\u0412\u044B\u0431\u0440\u0430\u043D\u043E: ' : null }} {{ list.length }}\n </ng-template>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #paramTreeTemplate>\n <sproc-param-tree\n [multi]=\"true\"\n [checkedNodes]=\"checkedNodes()\"\n (selectedNodesChange)=\"setSelectedNodes($event)\"\n ></sproc-param-tree>\n</ng-template>\n", styles: [".input-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-text-12px,.body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.table-heading-12px{font-family:Inter,serif;font-size:12px;font-weight:500;line-height:16px}.table-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.table-text-12px-400{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:16px}.table-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.button-links-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.button-links-12px-600{font-family:Inter,serif;font-size:12px;font-weight:600;line-height:16px}.button-links-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.input-area{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:20px}.static-title-h3{font-family:Inter,serif;font-size:16px;font-weight:600;line-height:20px}.static-title-h4{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.dynamic-title-h4{font-family:Inter,serif;font-size:14px;font-weight:800;line-height:20px}.main-body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.main-body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.main-subscription{font-family:Inter,serif;font-size:10px;font-weight:400;line-height:12px}.input-helper-9px{font-family:Inter,serif;font-size:9px;font-weight:300;line-height:12px}.typography-content-text{font-family:Inter,serif;font-size:12px;font-weight:350;line-height:16px}.main-subtitle,.card-content-text{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.filter-header-text{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.btn-14px{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.search-11px{font-family:Inter,serif;font-size:11px;font-weight:300;line-height:12px}:root{--input-text-12px: normal 300 12px / 16px \"Inter\";--input-text-14px: normal 300 14px / 16px \"Inter\"}.textfield-icons-container{display:flex;margin-inline-end:.5rem;margin-inline-start:.5rem;flex-direction:row;align-items:center;gap:8px}.textfield-icons-container .invalid-icon{color:var(--deleted-color);height:16px;width:16px}.textfield-icons-container .cleaner-icon{color:var(--gray-icon);height:16px;width:16px;pointer-events:auto}.textfield-icons-container .cleaner-icon:hover{color:var(--main-black);cursor:pointer}.textfield-icons-container .chevron{color:var(--gray-icon);height:16px;width:16px;pointer-events:none}.clickable:hover{cursor:pointer}.read-style-card[sproc-param-style=card]{display:flex;align-items:flex-start;gap:4px;padding:8px 0}.read-style-card[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}.read-style-card[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.read-style-card[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.read-style-card[sproc-param-style=card] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}.read-style-card[sproc-param-style=card] .value{font-family:Inter,serif!important;font-size:14px!important;font-weight:400!important;line-height:16px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px;color:var(--main-black)!important}.read-style-filter[sproc-param-style=filter]{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;gap:4px}.read-style-filter[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}.read-style-filter[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.read-style-filter[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.read-style-filter[sproc-param-style=filter] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}.read-style-filter[sproc-param-style=filter] .value{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px;color:var(--text-main)}.edit-style-card[sproc-param-style=card]{height:auto;width:100%;display:flex;flex-direction:column;padding-bottom:8px}.edit-style-card[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}.edit-style-card[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.edit-style-card[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.edit-style-card[sproc-param-style=card] input,.edit-style-card[sproc-param-style=card] textarea,.edit-style-card[sproc-param-style=card] sproc-custom-date-time-range,.edit-style-card[sproc-param-style=card] tui-multi-select{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px;border:1px solid var(--stroke1)}.edit-style-filter[sproc-param-style=filter]{width:100%;display:flex;flex-direction:column;border-bottom:1px solid var(--stroke1)}.edit-style-filter[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}.edit-style-filter[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.edit-style-filter[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.edit-style-filter[sproc-param-style=filter] input,.edit-style-filter[sproc-param-style=filter] textarea{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.default-label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px}.default-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.default-label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.default-dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}:host .container--read[sproc-param-style=card]{display:flex;align-items:flex-start;gap:4px;padding:8px 0}:host .container--read[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}:host .container--read[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--read[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--read[sproc-param-style=card] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}:host .container--read[sproc-param-style=card] .value{font-family:Inter,serif!important;font-size:14px!important;font-weight:400!important;line-height:16px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px;color:var(--main-black)!important}:host .container--read[sproc-param-style=filter]{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;gap:4px}:host .container--read[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}:host .container--read[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--read[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--read[sproc-param-style=filter] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}:host .container--read[sproc-param-style=filter] .value{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px;color:var(--text-main)}:host .container--edit[sproc-param-style=card]{height:auto;width:100%;display:flex;flex-direction:column;padding-bottom:8px}:host .container--edit[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}:host .container--edit[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--edit[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--edit[sproc-param-style=card] input,:host .container--edit[sproc-param-style=card] textarea,:host .container--edit[sproc-param-style=card] sproc-custom-date-time-range,:host .container--edit[sproc-param-style=card] tui-multi-select{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px;border:1px solid var(--stroke1)}:host .container--edit[sproc-param-style=filter]{width:100%;display:flex;flex-direction:column;border-bottom:1px solid var(--stroke1)}:host .container--edit[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}:host .container--edit[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--edit[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--edit[sproc-param-style=filter] input,:host .container--edit[sproc-param-style=filter] textarea{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}:host .container--edit[sproc-param-style=card]{padding:0 2px}:host .container--edit[sproc-param-style=card] .label-wrapper{padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%;display:flex;justify-content:space-between}:host .container--edit .selected-item-wrapper{display:flex;flex-direction:row;padding:4px;margin:0 2px;min-width:4px;max-width:100%;align-items:center;justify-content:space-between;border-radius:2px;background:var(--chip-background);font-size:14px;line-height:16px;color:var(--main-black);cursor:pointer}:host .container .default-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container .default-label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .hintIcon{width:16px;height:16px}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: TuiTextfieldControllerModule }, { kind: "directive", type: i3.TuiTextfieldCleanerDirective, selector: "[tuiTextfieldCleaner]", inputs: ["tuiTextfieldCleaner"] }, { kind: "directive", type: i3.TuiTextfieldLabelOutsideDirective, selector: "[tuiTextfieldLabelOutside]", inputs: ["tuiTextfieldLabelOutside"] }, { kind: "directive", type: i3.TuiTextfieldSizeDirective, selector: "[tuiTextfieldSize]", inputs: ["tuiTextfieldSize"] }, { kind: "component", type: ParamTreeComponent, selector: "sproc-param-tree", inputs: ["multi", "checkedNodes", "nodeTemplate"], outputs: ["selectedNodesChange"] }, { kind: "directive", type: TuiAppearance, selector: "[tuiAppearance]", inputs: ["tuiAppearance", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceMode"] }, { kind: "component", type: i1.TuiTextfieldComponent, selector: "tui-textfield:not([multi])" }, { kind: "directive", type: i1.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i1.TuiTextfieldDropdownDirective, selector: "ng-template[tuiTextfieldDropdown]" }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "directive", type: TuiComboBox, selector: "input[tuiComboBox]", inputs: ["strict", "matcher"] }, { kind: "component", type: ParamInvalidIconComponent, selector: "sproc-param-invalid-icon", inputs: ["hint"] }, { kind: "directive", type: TuiDropdownOptionsDirective, selector: "[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]", inputs: ["tuiDropdownAlign", "tuiDropdownAppearance", "tuiDropdownDirection", "tuiDropdownLimitWidth", "tuiDropdownMinHeight", "tuiDropdownMaxHeight", "tuiDropdownOffset"] }] }); }
60
64
  }
61
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ParamTreeMultiSelectComponent, decorators: [{
62
66
  type: Component,
@@ -71,10 +75,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
71
75
  TuiTextfield,
72
76
  TuiChevron,
73
77
  TuiComboBox,
78
+ ParamInvalidIconComponent,
79
+ TuiDropdownOptionsDirective,
74
80
  ], providers: [
75
81
  ParamTreeService,
76
82
  { provide: TUI_TREE_LOADING, useValue: TREE_LOADING_NODE },
77
83
  FastQueryStore,
78
- ], template: "<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n @switch (paramStyle) {\n @case ('filter') {\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n }\n @default {\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n }\n }\n }\n <ng-container [ngTemplateOutlet]=\"value ? showedValueTemplate : emptyTemplate\">\n <ng-template #showedValueTemplate>\n @switch (paramStyle) {\n @case ('filter') {\n <pre class=\"value\">{{ showedValue }}</pre>\n }\n @default {\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n }\n }\n </ng-template>\n <ng-template #emptyTemplate>\n <span class=\"value\">-</span>\n </ng-template>\n </ng-container>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n @if (hint) {\n <tui-icon\n icon=\"assets/ngx-register-base/icons/circle-info-empty.svg\"\n [tuiHint]=\"hint\"\n class=\"hintIcon\"\n ></tui-icon>\n }\n </div>\n }\n <tui-textfield\n tuiChevron\n tuiTextfieldSize=\"m\"\n tuiAppearance=\"sproc-input-appearance\"\n [stringify]=\"stringify()\"\n [tuiTextfieldCleaner]=\"forceClear\"\n [tuiTextfieldLabelOutside]=\"true\"\n [content]=\"valueContent\"\n >\n <input tuiComboBox [placeholder]=\"placeholder()\" [formControl]=\"control\" />\n <ng-container *tuiTextfieldDropdown [ngTemplateOutlet]=\"paramTreeTemplate\"></ng-container>\n </tui-textfield>\n <ng-template #valueContent let-list>\n {{ shortPickedLength() ? '\u0412\u044B\u0431\u0440\u0430\u043D\u043E: ' : null }} {{ list.length }}\n </ng-template>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #paramTreeTemplate>\n <sproc-param-tree\n [multi]=\"true\"\n [checkedNodes]=\"checkedNodes()\"\n (selectedNodesChange)=\"setSelectedNodes($event)\"\n ></sproc-param-tree>\n</ng-template>\n", styles: [".input-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-text-12px,.body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.table-heading-12px{font-family:Inter,serif;font-size:12px;font-weight:500;line-height:16px}.table-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.table-text-12px-400{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:16px}.table-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.button-links-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.button-links-12px-600{font-family:Inter,serif;font-size:12px;font-weight:600;line-height:16px}.button-links-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.input-area{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:20px}.static-title-h3{font-family:Inter,serif;font-size:16px;font-weight:600;line-height:20px}.static-title-h4{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.dynamic-title-h4{font-family:Inter,serif;font-size:14px;font-weight:800;line-height:20px}.main-body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.main-body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.main-subscription{font-family:Inter,serif;font-size:10px;font-weight:400;line-height:12px}.input-helper-9px{font-family:Inter,serif;font-size:9px;font-weight:300;line-height:12px}.typography-content-text{font-family:Inter,serif;font-size:12px;font-weight:350;line-height:16px}.main-subtitle,.card-content-text{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.filter-header-text{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.btn-14px{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.search-11px{font-family:Inter,serif;font-size:11px;font-weight:300;line-height:12px}:root{--input-text-12px: normal 300 12px / 16px \"Inter\";--input-text-14px: normal 300 14px / 16px \"Inter\"}.textfield-icons-container{display:flex;margin-inline-end:.5rem;margin-inline-start:.5rem;flex-direction:row;align-items:center;gap:8px}.textfield-icons-container .invalid-icon{color:var(--deleted-color);height:16px;width:16px}.textfield-icons-container .cleaner-icon{color:var(--gray-icon);height:16px;width:16px;pointer-events:auto}.textfield-icons-container .cleaner-icon:hover{color:var(--main-black);cursor:pointer}.textfield-icons-container .chevron{color:var(--gray-icon);height:16px;width:16px;pointer-events:none}.clickable:hover{cursor:pointer}.read-style-card[sproc-param-style=card]{display:flex;align-items:flex-start;gap:4px;padding:8px 0}.read-style-card[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}.read-style-card[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.read-style-card[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.read-style-card[sproc-param-style=card] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}.read-style-card[sproc-param-style=card] .value{font-family:Inter,serif!important;font-size:14px!important;font-weight:400!important;line-height:16px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px;color:var(--main-black)!important}.read-style-filter[sproc-param-style=filter]{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;gap:4px}.read-style-filter[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}.read-style-filter[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.read-style-filter[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.read-style-filter[sproc-param-style=filter] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}.read-style-filter[sproc-param-style=filter] .value{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px;color:var(--text-main)}.edit-style-card[sproc-param-style=card]{height:auto;width:100%;display:flex;flex-direction:column;padding-bottom:8px}.edit-style-card[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}.edit-style-card[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.edit-style-card[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.edit-style-filter[sproc-param-style=filter]{width:100%;display:flex;flex-direction:column}.edit-style-filter[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}.edit-style-filter[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.edit-style-filter[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.default-label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px}.default-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.default-label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.default-dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}:host .container--read[sproc-param-style=card]{display:flex;align-items:flex-start;gap:4px;padding:8px 0}:host .container--read[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}:host .container--read[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--read[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--read[sproc-param-style=card] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}:host .container--read[sproc-param-style=card] .value{font-family:Inter,serif!important;font-size:14px!important;font-weight:400!important;line-height:16px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px;color:var(--main-black)!important}:host .container--read[sproc-param-style=filter]{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;gap:4px}:host .container--read[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}:host .container--read[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--read[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--read[sproc-param-style=filter] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}:host .container--read[sproc-param-style=filter] .value{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px;color:var(--text-main)}:host .container--edit[sproc-param-style=card]{height:auto;width:100%;display:flex;flex-direction:column;padding-bottom:8px}:host .container--edit[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}:host .container--edit[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--edit[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--edit[sproc-param-style=filter]{width:100%;display:flex;flex-direction:column}:host .container--edit[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}:host .container--edit[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--edit[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--edit[sproc-param-style=card]{padding:0 2px}:host .container--edit[sproc-param-style=card] .label-wrapper{padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%;display:flex;justify-content:space-between}:host .container--edit[sproc-param-style=card] ::ng-deep input{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px;color:var(--text-contrast)}:host .container--edit[sproc-param-style=filter] ::ng-deep input{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--text-contrast)}:host .container--edit .selected-item-wrapper{display:flex;flex-direction:row;padding:4px;margin:0 2px;min-width:4px;max-width:100%;align-items:center;justify-content:space-between;border-radius:2px;background:var(--chip-background);font-size:14px;line-height:16px;color:var(--main-black);cursor:pointer}:host .container .default-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container .default-label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .hintIcon{width:16px;height:16px}:host ::ng-deep .choosed{display:none}:host ::ng-deep .empty{position:relative}:host ::ng-deep .empty .choosed{display:flex;cursor:pointer;align-items:center;position:absolute;justify-content:space-between;top:7px;left:8px;z-index:2;font-size:12px;font-family:Inter,sans-serif;color:#000;padding:6px;border-radius:2px;width:95px;height:18px;background:var(--prizm-v3-status-none-secondary-default)}\n"] }]
84
+ ValidationMessageService,
85
+ ], template: "<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n @switch (paramStyle) {\n @case ('filter') {\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n }\n @default {\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n }\n }\n }\n <ng-container [ngTemplateOutlet]=\"value ? showedValueTemplate : emptyTemplate\">\n <ng-template #showedValueTemplate>\n @switch (paramStyle) {\n @case ('filter') {\n <pre class=\"value\">{{ showedValue }}</pre>\n }\n @default {\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n }\n }\n </ng-template>\n <ng-template #emptyTemplate>\n <span class=\"value\">-</span>\n </ng-template>\n </ng-container>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n @if (hint) {\n <tui-icon icon=\"@sproc.circle-info-empty\" [tuiHint]=\"hint\" class=\"hintIcon\" />\n }\n </div>\n }\n <tui-textfield\n tuiAppearance=\"sproc-input-appearance\"\n tuiChevron\n [tuiTextfieldSize]=\"size()\"\n [stringify]=\"stringify()\"\n [tuiTextfieldCleaner]=\"forceClear\"\n [tuiTextfieldLabelOutside]=\"true\"\n [content]=\"valueContent\"\n [tuiDropdownMinHeight]=\"minDropdownHeight()\"\n [tuiDropdownMaxHeight]=\"maxDropdownHeight()\"\n [tuiDropdownLimitWidth]=\"dropdownLimitWidth()\"\n >\n <input tuiComboBox [placeholder]=\"placeholder()\" [formControl]=\"control\" />\n\n <div class=\"textfield-icons-container\">\n @if (isInvalidAndNotPristine) {\n <sproc-param-invalid-icon [hint]=\"validationErrorHint()\" />\n }\n </div>\n <ng-container *tuiTextfieldDropdown [ngTemplateOutlet]=\"paramTreeTemplate\"></ng-container>\n </tui-textfield>\n <ng-template #valueContent let-list>\n {{ shortPickedLength() ? '\u0412\u044B\u0431\u0440\u0430\u043D\u043E: ' : null }} {{ list.length }}\n </ng-template>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #paramTreeTemplate>\n <sproc-param-tree\n [multi]=\"true\"\n [checkedNodes]=\"checkedNodes()\"\n (selectedNodesChange)=\"setSelectedNodes($event)\"\n ></sproc-param-tree>\n</ng-template>\n", styles: [".input-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-text-12px,.body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.table-heading-12px{font-family:Inter,serif;font-size:12px;font-weight:500;line-height:16px}.table-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.table-text-12px-400{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:16px}.table-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.button-links-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.button-links-12px-600{font-family:Inter,serif;font-size:12px;font-weight:600;line-height:16px}.button-links-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.input-area{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:20px}.static-title-h3{font-family:Inter,serif;font-size:16px;font-weight:600;line-height:20px}.static-title-h4{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.dynamic-title-h4{font-family:Inter,serif;font-size:14px;font-weight:800;line-height:20px}.main-body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.main-body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.main-subscription{font-family:Inter,serif;font-size:10px;font-weight:400;line-height:12px}.input-helper-9px{font-family:Inter,serif;font-size:9px;font-weight:300;line-height:12px}.typography-content-text{font-family:Inter,serif;font-size:12px;font-weight:350;line-height:16px}.main-subtitle,.card-content-text{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.filter-header-text{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.btn-14px{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.search-11px{font-family:Inter,serif;font-size:11px;font-weight:300;line-height:12px}:root{--input-text-12px: normal 300 12px / 16px \"Inter\";--input-text-14px: normal 300 14px / 16px \"Inter\"}.textfield-icons-container{display:flex;margin-inline-end:.5rem;margin-inline-start:.5rem;flex-direction:row;align-items:center;gap:8px}.textfield-icons-container .invalid-icon{color:var(--deleted-color);height:16px;width:16px}.textfield-icons-container .cleaner-icon{color:var(--gray-icon);height:16px;width:16px;pointer-events:auto}.textfield-icons-container .cleaner-icon:hover{color:var(--main-black);cursor:pointer}.textfield-icons-container .chevron{color:var(--gray-icon);height:16px;width:16px;pointer-events:none}.clickable:hover{cursor:pointer}.read-style-card[sproc-param-style=card]{display:flex;align-items:flex-start;gap:4px;padding:8px 0}.read-style-card[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}.read-style-card[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.read-style-card[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.read-style-card[sproc-param-style=card] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}.read-style-card[sproc-param-style=card] .value{font-family:Inter,serif!important;font-size:14px!important;font-weight:400!important;line-height:16px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px;color:var(--main-black)!important}.read-style-filter[sproc-param-style=filter]{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;gap:4px}.read-style-filter[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}.read-style-filter[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.read-style-filter[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.read-style-filter[sproc-param-style=filter] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}.read-style-filter[sproc-param-style=filter] .value{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px;color:var(--text-main)}.edit-style-card[sproc-param-style=card]{height:auto;width:100%;display:flex;flex-direction:column;padding-bottom:8px}.edit-style-card[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}.edit-style-card[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.edit-style-card[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.edit-style-card[sproc-param-style=card] input,.edit-style-card[sproc-param-style=card] textarea,.edit-style-card[sproc-param-style=card] sproc-custom-date-time-range,.edit-style-card[sproc-param-style=card] tui-multi-select{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px;border:1px solid var(--stroke1)}.edit-style-filter[sproc-param-style=filter]{width:100%;display:flex;flex-direction:column;border-bottom:1px solid var(--stroke1)}.edit-style-filter[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}.edit-style-filter[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.edit-style-filter[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.edit-style-filter[sproc-param-style=filter] input,.edit-style-filter[sproc-param-style=filter] textarea{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.default-label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px}.default-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}.default-label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}.default-dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}:host .container--read[sproc-param-style=card]{display:flex;align-items:flex-start;gap:4px;padding:8px 0}:host .container--read[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}:host .container--read[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--read[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--read[sproc-param-style=card] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}:host .container--read[sproc-param-style=card] .value{font-family:Inter,serif!important;font-size:14px!important;font-weight:400!important;line-height:16px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px;color:var(--main-black)!important}:host .container--read[sproc-param-style=filter]{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;gap:4px}:host .container--read[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}:host .container--read[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--read[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--read[sproc-param-style=filter] .dashed-row{display:flex;height:16px;align-items:center;flex:1 0 0;border-bottom:1px dashed var(--table-stroke);min-width:20px}:host .container--read[sproc-param-style=filter] .value{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px;color:var(--text-main)}:host .container--edit[sproc-param-style=card]{height:auto;width:100%;display:flex;flex-direction:column;padding-bottom:8px}:host .container--edit[sproc-param-style=card] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%}:host .container--edit[sproc-param-style=card] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--edit[sproc-param-style=card] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--edit[sproc-param-style=card] input,:host .container--edit[sproc-param-style=card] textarea,:host .container--edit[sproc-param-style=card] sproc-custom-date-time-range,:host .container--edit[sproc-param-style=card] tui-multi-select{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px;border:1px solid var(--stroke1)}:host .container--edit[sproc-param-style=filter]{width:100%;display:flex;flex-direction:column;border-bottom:1px solid var(--stroke1)}:host .container--edit[sproc-param-style=filter] .label-wrapper{display:flex;padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:fit-content}:host .container--edit[sproc-param-style=filter] .label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container--edit[sproc-param-style=filter] .label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .container--edit[sproc-param-style=filter] input,:host .container--edit[sproc-param-style=filter] textarea{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}:host .container--edit[sproc-param-style=card]{padding:0 2px}:host .container--edit[sproc-param-style=card] .label-wrapper{padding-bottom:1.5px;align-items:center;height:16px;gap:4px;width:100%;display:flex;justify-content:space-between}:host .container--edit .selected-item-wrapper{display:flex;flex-direction:row;padding:4px;margin:0 2px;min-width:4px;max-width:100%;align-items:center;justify-content:space-between;border-radius:2px;background:var(--chip-background);font-size:14px;line-height:16px;color:var(--main-black);cursor:pointer}:host .container .default-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px;color:var(--main-black)}:host .container .default-label.required:after{content:\"*\";color:var(--brand-danger);margin-left:2px}:host .hintIcon{width:16px;height:16px}\n"] }]
79
86
  }], ctorParameters: () => [{ type: i0.Injector }] });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0tdHJlZS1tdWx0aS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlZ2lzdGVyLWJhc2Uvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9wYXJhbS10cmVlLW11bHRpLXNlbGVjdC9wYXJhbS10cmVlLW11bHRpLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL3BhcmFtLXRyZWUtbXVsdGktc2VsZWN0L3BhcmFtLXRyZWUtbXVsdGktc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBWSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1B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QixFQUFFO3dCQUMxRCxjQUFjO3FCQUNmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QsIGluamVjdCwgSW5qZWN0b3IsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFR1aUFwcGVhcmFuY2UsIFR1aUhpbnQsIFR1aUljb24sIFR1aVRleHRmaWVsZCB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFRVSV9UUkVFX0xPQURJTkcsIFR1aUNoZXZyb24sIFR1aUNvbWJvQm94IH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUdWlUZXh0ZmllbGRDb250cm9sbGVyTW9kdWxlIH0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeSc7XG5pbXBvcnQgeyBJVHJlZU5vZGUgfSBmcm9tICcuLi9wYXJhbS10cmVlL3R5cGVzL3BhcmFtLXRyZWUudHlwZXMnO1xuaW1wb3J0IHsgUGFyYW1UcmVlQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFyYW0tdHJlZS9wYXJhbS10cmVlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYXJhbVRyZWVTZXJ2aWNlIH0gZnJvbSAnLi4vcGFyYW0tdHJlZS9zZXJ2aWNlcy9wYXJhbS10cmVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVFJFRV9MT0FESU5HX05PREUgfSBmcm9tICcuLi9wYXJhbS10cmVlL2NvbnN0cy9wYXJhbS10cmVlLmNvbnN0cyc7XG5pbXBvcnQgeyBGYXN0UXVlcnlTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2Zhc3QtcXVlcnktc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBQYXJhbVNlbGVjdEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3BhcmFtL3BhcmFtLXNlbGVjdC1iYXNlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkSlNPTnMgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmV4cG9ydCB0eXBlIElucHV0VHJlZVNlbGVjdFNhdmVkVmFsdWU8VD4gPSBJVHJlZU5vZGU8VD4gJiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4vKiog0JrQvtC80L/QvtC90LXQvdGCINCy0YvQsdC+0YDQsCDQtdC00LjQvdGB0YLQstC10L3QvdC+0LPQviDQt9C90LDRh9C10L3QuNGPINC40Lcg0LjQtdGA0LDRgNGF0LjRh9C10YHQutC+0LPQviDRgdC/0LjRgdC60LAgKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Nwcm9jLXBhcmFtLXRyZWUtbXVsdGktc2VsZWN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgVHVpSWNvbixcbiAgICBUdWlIaW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSxcbiAgICBQYXJhbVRyZWVDb21wb25lbnQsXG4gICAgVHVpQXBwZWFyYW5jZSxcbiAgICBUdWlUZXh0ZmllbGQsXG4gICAgVHVpQ2hldnJvbixcbiAgICBUdWlDb21ib0JveCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhcmFtLXRyZWUtbXVsdGktc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3BhcmFtLXRyZWUtbXVsdGktc2VsZWN0LmNvbXBvbmVudC5sZXNzJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgUGFyYW1UcmVlU2VydmljZSxcbiAgICB7IHByb3ZpZGU6IFRVSV9UUkVFX0xPQURJTkcsIHVzZVZhbHVlOiBUUkVFX0xPQURJTkdfTk9ERSB9LFxuICAgIEZhc3RRdWVyeVN0b3JlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQYXJhbVRyZWVNdWx0aVNlbGVjdENvbXBvbmVudDxUPiBleHRlbmRzIFBhcmFtU2VsZWN0QmFzZTxcbiAgSVRyZWVOb2RlPFQ+W10sXG4gIElucHV0VHJlZVNlbGVjdFNhdmVkVmFsdWU8VD5bXVxuPiB7XG4gIC8qKiDQn9C10YDQtdC00LDRh9CwINC30LDQs9GA0YPQt9C+0YfQvdC+0LPQviDRg9C30LvQsCDQtNC70Y8g0LfQsNCz0YDRg9C30LrQuCDQvdCw0YfQsNC70YzQvdC+0LPQviDRg9GA0L7QstC90Y8g0LjQtdGA0LDRgNGF0LjRh9C10YHQutC+0LPQviDRgdC/0LjRgdC60LAgKi9cbiAgcHVibGljIGxvYWRlck5vZGUgPSBpbnB1dC5yZXF1aXJlZDxJVHJlZU5vZGU8VD4+KCk7XG4gIC8qKlxuICAgKiDQktC+0LfQvNC+0LbQvdC+0YHRgtGMINGA0LDRgdC60YDRi9Cy0LDRgtGML9GB0LrRgNGL0LLQsNGC0Ywg0YPQt9C70Ysg0LjQtdGA0LDRgNGF0LjRh9C10YHQutC+0LPQviDRgdC/0LjRgdC60LAuXG4gICAqINCb0L7Qs9C40YfQtdGB0LrQvtC1INC30L3QsNGH0LXQvdC40LUgLSDRjdGC0L4g0LfQvdCw0YfQtdC90LjQtSDRg9C30LvQsCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiAo0YDQsNGB0LrRgNGL0YLRiy/RgdC60YDRi9GC0YspLlxuICAgKlxuICAgKiBAZGVmYXVsdCDQkdC10Lcg0YPQutCw0LfQsNC90LjRjyDQv9Cw0YDQsNC80LXRgtGA0LAgKNC40LvQuCDQt9C90LDRh9C10L3QuNC4IG51bGwpIC0g0LLRgdC1INGD0LfQu9GLINGA0LDRgdC60YDRi9GC0Ysg0LHQtdC3INCy0L7Qt9C80L7QttC90L7RgdGC0Lgg0LjQt9C80LXQvdGP0YLRjCDRgdC+0YHRgtC+0Y/QvdC40LUuXG4gICAqICovXG4gIHB1YmxpYyBkZWZhdWx0Tm9kZU9wZW5lZFN0YXRlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcHVibGljIHN0cmluZ2lmeSA9IGlucHV0PChpdGVtOiBJVHJlZU5vZGU8VD4pID0+IHN0cmluZz4oKGl0ZW0pID0+IFN0cmluZyhpdGVtLm5hbWUpKTtcbiAgcHVibGljIHNob3J0UGlja2VkTGVuZ3RoID0gaW5wdXQodHJ1ZSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlYWRvbmx5IGJ1aWxkU2hvd2VkVmFsdWUgPSBpbnB1dChcbiAgICAodmFsdWVzOiBJVHJlZU5vZGVbXSk6IHN0cmluZyA9PiB2YWx1ZXM/Lm1hcCgodikgPT4gdi5uYW1lKS5qb2luKCcsXFxuJykgPz8gJy0nXG4gICk7XG4gIHB1YmxpYyBvdmVycmlkZSBwbGFjZWhvbGRlciA9IGlucHV0KCfQktGL0LHQtdGA0LjRgtC1INC30L3QsNGH0LXQvdC40Y8nKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF90cmVlU2VydmljZSA9IGluamVjdChQYXJhbVRyZWVTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hlY2tlZE5vZGVzID0gc2lnbmFsPElUcmVlTm9kZTxUPltdPihbXSk7XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLl90cmVlU2VydmljZS5zZXRMb2FkZXJOb2RlKHRoaXMubG9hZGVyTm9kZSgpLCB0aGlzLmRlZmF1bHROb2RlT3BlbmVkU3RhdGUoKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpYmVGb3JVcGRhdGVDaGVja2VkTm9kZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZUZvclVwZGF0ZUNoZWNrZWROb2RlcygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZEpTT05zKCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRyKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tlZE5vZGVzLnNldCh2YWx1ZSA/PyBbXSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRTZWxlY3RlZE5vZGVzKG5vZGU6IElUcmVlTm9kZTxUPltdKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sLnNldFZhbHVlKG5vZGUpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJlYWRtb2RlID8gcmVhZFRlbXBsYXRlIDogZWRpdFRlbXBsYXRlXCI+XG4gIDxuZy10ZW1wbGF0ZSAjcmVhZFRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXIgY29udGFpbmVyLS1yZWFkXCIgW2F0dHIuc3Byb2MtcGFyYW0tc3R5bGVdPVwicGFyYW1TdHlsZVwiPlxuICAgICAgQGlmIChsYWJlbCkge1xuICAgICAgICBAc3dpdGNoIChwYXJhbVN0eWxlKSB7XG4gICAgICAgICAgQGNhc2UgKCdmaWx0ZXInKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtd3JhcHBlclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXNoZWQtcm93XCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhc2hlZC1yb3dcIj48L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidmFsdWUgPyBzaG93ZWRWYWx1ZVRlbXBsYXRlIDogZW1wdHlUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3Nob3dlZFZhbHVlVGVtcGxhdGU+XG4gICAgICAgICAgQHN3aXRjaCAocGFyYW1TdHlsZSkge1xuICAgICAgICAgICAgQGNhc2UgKCdmaWx0ZXInKSB7XG4gICAgICAgICAgICAgIDxwcmUgY2xhc3M9XCJ2YWx1ZVwiPnt7IHNob3dlZFZhbHVlIH19PC9wcmU+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHNob3dlZFZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlUZW1wbGF0ZT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+LTwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2VkaXRUZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIGNvbnRhaW5lci0tZWRpdFwiIFthdHRyLnNwcm9jLXBhcmFtLXN0eWxlXT1cInBhcmFtU3R5bGVcIj5cbiAgICAgIEBpZiAobGFiZWwpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXdyYXBwZXJcIiBbY2xhc3MuYXBwbGllZF09XCJhcHBsaWVkKClcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW2NsYXNzLnJlcXVpcmVkXT1cInJlcXVpcmVkXCI+XG4gICAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICBAaWYgKGhpbnQpIHtcbiAgICAgICAgICAgIDx0dWktaWNvblxuICAgICAgICAgICAgICBpY29uPVwiYXNzZXRzL25neC1yZWdpc3Rlci1iYXNlL2ljb25zL2NpcmNsZS1pbmZvLWVtcHR5LnN2Z1wiXG4gICAgICAgICAgICAgIFt0dWlIaW50XT1cImhpbnRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImhpbnRJY29uXCJcbiAgICAgICAgICAgID48L3R1aS1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8dHVpLXRleHRmaWVsZFxuICAgICAgICB0dWlDaGV2cm9uXG4gICAgICAgIHR1aVRleHRmaWVsZFNpemU9XCJtXCJcbiAgICAgICAgdHVpQXBwZWFyYW5jZT1cInNwcm9jLWlucHV0LWFwcGVhcmFuY2VcIlxuICAgICAgICBbc3RyaW5naWZ5XT1cInN0cmluZ2lmeSgpXCJcbiAgICAgICAgW3R1aVRleHRmaWVsZENsZWFuZXJdPVwiZm9yY2VDbGVhclwiXG4gICAgICAgIFt0dWlUZXh0ZmllbGRMYWJlbE91dHNpZGVdPVwidHJ1ZVwiXG4gICAgICAgIFtjb250ZW50XT1cInZhbHVlQ29udGVudFwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dCB0dWlDb21ib0JveCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgLz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqdHVpVGV4dGZpZWxkRHJvcGRvd24gW25nVGVtcGxhdGVPdXRsZXRdPVwicGFyYW1UcmVlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdHVpLXRleHRmaWVsZD5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdmFsdWVDb250ZW50IGxldC1saXN0PlxuICAgICAgICB7eyBzaG9ydFBpY2tlZExlbmd0aCgpID8gJ9CS0YvQsdGA0LDQvdC+OiAnIDogbnVsbCB9fSB7eyBsaXN0Lmxlbmd0aCB9fVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3BhcmFtVHJlZVRlbXBsYXRlPlxuICA8c3Byb2MtcGFyYW0tdHJlZVxuICAgIFttdWx0aV09XCJ0cnVlXCJcbiAgICBbY2hlY2tlZE5vZGVzXT1cImNoZWNrZWROb2RlcygpXCJcbiAgICAoc2VsZWN0ZWROb2Rlc0NoYW5nZSk9XCJzZXRTZWxlY3RlZE5vZGVzKCRldmVudClcIlxuICA+PC9zcHJvYy1wYXJhbS10cmVlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0tdHJlZS1tdWx0aS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlZ2lzdGVyLWJhc2Uvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0cy9wYXJhbS10cmVlLW11bHRpLXNlbGVjdC9wYXJhbS10cmVlLW11bHRpLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvaW5wdXRzL3BhcmFtLXRyZWUtbXVsdGktc2VsZWN0L3BhcmFtLXRyZWUtbXVsdGktc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBWSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFDTCxhQUFhLEVBQ2IsMkJBQTJCLEVBQzNCLE9BQU8sRUFDUCxPQUFPLEVBQ1AsWUFBWSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFF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QzdCLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxtQkFBbUI7d0JBQ25CLDRCQUE0Qjt3QkFDNUIsa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixXQUFXO3dCQUNYLHlCQUF5Qjt3QkFDekIsMkJBQTJCO3FCQUM1QixhQUdVO3dCQUNULGdCQUFnQjt3QkFDaEIsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO3dCQUMxRCxjQUFjO3dCQUNkLHdCQUF3QjtxQkFDekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGVmZmVjdCwgaW5qZWN0LCBJbmplY3RvciwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgVHVpQXBwZWFyYW5jZSxcbiAgVHVpRHJvcGRvd25PcHRpb25zRGlyZWN0aXZlLFxuICBUdWlIaW50LFxuICBUdWlJY29uLFxuICBUdWlUZXh0ZmllbGQsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFRVSV9UUkVFX0xPQURJTkcsIFR1aUNoZXZyb24sIFR1aUNvbWJvQm94IH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUdWlUZXh0ZmllbGRDb250cm9sbGVyTW9kdWxlIH0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeSc7XG5pbXBvcnQgeyBJVHJlZU5vZGUgfSBmcm9tICcuLi9wYXJhbS10cmVlL3R5cGVzL3BhcmFtLXRyZWUudHlwZXMnO1xuaW1wb3J0IHsgUGFyYW1UcmVlQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFyYW0tdHJlZS9wYXJhbS10cmVlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYXJhbVRyZWVTZXJ2aWNlIH0gZnJvbSAnLi4vcGFyYW0tdHJlZS9zZXJ2aWNlcy9wYXJhbS10cmVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVFJFRV9MT0FESU5HX05PREUgfSBmcm9tICcuLi9wYXJhbS10cmVlL2NvbnN0cy9wYXJhbS10cmVlLmNvbnN0cyc7XG5pbXBvcnQgeyBGYXN0UXVlcnlTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2Zhc3QtcXVlcnktc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBQYXJhbVNlbGVjdEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3BhcmFtL3BhcmFtLXNlbGVjdC1iYXNlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkSlNPTnMgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBQYXJhbUludmFsaWRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vc3ViLWNvbXBvbmVudHMvcGFyYW0taW52YWxpZC1pY29uL3BhcmFtLWludmFsaWQtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdmFsaWRhdGlvbi1tZXNzYWdlLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBJbnB1dFRyZWVTZWxlY3RTYXZlZFZhbHVlPFQ+ID0gSVRyZWVOb2RlPFQ+ICYgeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcblxuLyoqINCa0L7QvNC/0L7QvdC10L3RgiDQstGL0LHQvtGA0LAg0LXQtNC40L3RgdGC0LLQtdC90L3QvtCz0L4g0LfQvdCw0YfQtdC90LjRjyDQuNC3INC40LXRgNCw0YDRhdC40YfQtdGB0LrQvtCz0L4g0YHQv9C40YHQutCwICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcHJvYy1wYXJhbS10cmVlLW11bHRpLXNlbGVjdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIFR1aUljb24sXG4gICAgVHVpSGludCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGUsXG4gICAgUGFyYW1UcmVlQ29tcG9uZW50LFxuICAgIFR1aUFwcGVhcmFuY2UsXG4gICAgVHVpVGV4dGZpZWxkLFxuICAgIFR1aUNoZXZyb24sXG4gICAgVHVpQ29tYm9Cb3gsXG4gICAgUGFyYW1JbnZhbGlkSWNvbkNvbXBvbmVudCxcbiAgICBUdWlEcm9wZG93bk9wdGlvbnNEaXJlY3RpdmUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXJhbS10cmVlLW11bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wYXJhbS10cmVlLW11bHRpLXNlbGVjdC5jb21wb25lbnQubGVzcycsXG4gIHByb3ZpZGVyczogW1xuICAgIFBhcmFtVHJlZVNlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBUVUlfVFJFRV9MT0FESU5HLCB1c2VWYWx1ZTogVFJFRV9MT0FESU5HX05PREUgfSxcbiAgICBGYXN0UXVlcnlTdG9yZSxcbiAgICBWYWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFBhcmFtVHJlZU11bHRpU2VsZWN0Q29tcG9uZW50PFQ+IGV4dGVuZHMgUGFyYW1TZWxlY3RCYXNlPFxuICBJVHJlZU5vZGU8VD5bXSxcbiAgSW5wdXRUcmVlU2VsZWN0U2F2ZWRWYWx1ZTxUPltdXG4+IHtcbiAgLyoqINCf0LXRgNC10LTQsNGH0LAg0LfQsNCz0YDRg9C30L7Rh9C90L7Qs9C+INGD0LfQu9CwINC00LvRjyDQt9Cw0LPRgNGD0LfQutC4INC90LDRh9Cw0LvRjNC90L7Qs9C+INGD0YDQvtCy0L3RjyDQuNC10YDQsNGA0YXQuNGH0LXRgdC60L7Qs9C+INGB0L/QuNGB0LrQsCAqL1xuICBwdWJsaWMgbG9hZGVyTm9kZSA9IGlucHV0LnJlcXVpcmVkPElUcmVlTm9kZTxUPj4oKTtcbiAgLyoqXG4gICAqINCS0L7Qt9C80L7QttC90L7RgdGC0Ywg0YDQsNGB0LrRgNGL0LLQsNGC0Ywv0YHQutGA0YvQstCw0YLRjCDRg9C30LvRiyDQuNC10YDQsNGA0YXQuNGH0LXRgdC60L7Qs9C+INGB0L/QuNGB0LrQsC5cbiAgICog0JvQvtCz0LjRh9C10YHQutC+0LUg0LfQvdCw0YfQtdC90LjQtSAtINGN0YLQviDQt9C90LDRh9C10L3QuNC1INGD0LfQu9CwINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOICjRgNCw0YHQutGA0YvRgtGLL9GB0LrRgNGL0YLRiykuXG4gICAqXG4gICAqIEBkZWZhdWx0INCR0LXQtyDRg9C60LDQt9Cw0L3QuNGPINC/0LDRgNCw0LzQtdGC0YDQsCAo0LjQu9C4INC30L3QsNGH0LXQvdC40LggbnVsbCkgLSDQstGB0LUg0YPQt9C70Ysg0YDQsNGB0LrRgNGL0YLRiyDQsdC10Lcg0LLQvtC30LzQvtC20L3QvtGB0YLQuCDQuNC30LzQtdC90Y/RgtGMINGB0L7RgdGC0L7Rj9C90LjQtS5cbiAgICogKi9cbiAgcHVibGljIGRlZmF1bHROb2RlT3BlbmVkU3RhdGUgPSBpbnB1dDxib29sZWFuPigpO1xuICBwdWJsaWMgc3RyaW5naWZ5ID0gaW5wdXQ8KGl0ZW06IElUcmVlTm9kZTxUPikgPT4gc3RyaW5nPigoaXRlbSkgPT4gU3RyaW5nKGl0ZW0ubmFtZSkpO1xuICBwdWJsaWMgc2hvcnRQaWNrZWRMZW5ndGggPSBpbnB1dCh0cnVlKTtcbiAgcHVibGljIG9wZW5lZE5vZGVzU3RhdGUgPSBpbnB1dDxNYXA8SVRyZWVOb2RlPFQ+LCBib29sZWFuPj4oKTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgYnVpbGRTaG93ZWRWYWx1ZSA9IGlucHV0KFxuICAgICh2YWx1ZXM6IElUcmVlTm9kZVtdKTogc3RyaW5nID0+IHZhbHVlcz8ubWFwKCh2KSA9PiB2Lm5hbWUpLmpvaW4oJyxcXG4nKSA/PyAnLSdcbiAgKTtcbiAgcHVibGljIG92ZXJyaWRlIHBsYWNlaG9sZGVyID0gaW5wdXQoJ9CS0YvQsdC10YDQuNGC0LUg0LfQvdCw0YfQtdC90LjRjycpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RyZWVTZXJ2aWNlID0gaW5qZWN0KFBhcmFtVHJlZVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjaGVja2VkTm9kZXMgPSBzaWduYWw8SVRyZWVOb2RlPFQ+W10+KFtdKTtcblxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuX3RyZWVTZXJ2aWNlLnNldExvYWRlck5vZGUoXG4gICAgICAgIHRoaXMubG9hZGVyTm9kZSgpLFxuICAgICAgICB0aGlzLmRlZmF1bHROb2RlT3BlbmVkU3RhdGUoKSxcbiAgICAgICAgdGhpcy5vcGVuZWROb2Rlc1N0YXRlKClcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpYmVGb3JVcGRhdGVDaGVja2VkTm9kZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZUZvclVwZGF0ZUNoZWNrZWROb2RlcygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZEpTT05zKCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRyKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tlZE5vZGVzLnNldCh2YWx1ZSA/PyBbXSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRTZWxlY3RlZE5vZGVzKG5vZGU6IElUcmVlTm9kZTxUPltdKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sLnNldFZhbHVlKG5vZGUpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJlYWRtb2RlID8gcmVhZFRlbXBsYXRlIDogZWRpdFRlbXBsYXRlXCI+XG4gIDxuZy10ZW1wbGF0ZSAjcmVhZFRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXIgY29udGFpbmVyLS1yZWFkXCIgW2F0dHIuc3Byb2MtcGFyYW0tc3R5bGVdPVwicGFyYW1TdHlsZVwiPlxuICAgICAgQGlmIChsYWJlbCkge1xuICAgICAgICBAc3dpdGNoIChwYXJhbVN0eWxlKSB7XG4gICAgICAgICAgQGNhc2UgKCdmaWx0ZXInKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtd3JhcHBlclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXNoZWQtcm93XCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhc2hlZC1yb3dcIj48L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidmFsdWUgPyBzaG93ZWRWYWx1ZVRlbXBsYXRlIDogZW1wdHlUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3Nob3dlZFZhbHVlVGVtcGxhdGU+XG4gICAgICAgICAgQHN3aXRjaCAocGFyYW1TdHlsZSkge1xuICAgICAgICAgICAgQGNhc2UgKCdmaWx0ZXInKSB7XG4gICAgICAgICAgICAgIDxwcmUgY2xhc3M9XCJ2YWx1ZVwiPnt7IHNob3dlZFZhbHVlIH19PC9wcmU+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHNob3dlZFZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlUZW1wbGF0ZT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+LTwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2VkaXRUZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIGNvbnRhaW5lci0tZWRpdFwiIFthdHRyLnNwcm9jLXBhcmFtLXN0eWxlXT1cInBhcmFtU3R5bGVcIj5cbiAgICAgIEBpZiAobGFiZWwpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXdyYXBwZXJcIiBbY2xhc3MuYXBwbGllZF09XCJhcHBsaWVkKClcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCIgW2NsYXNzLnJlcXVpcmVkXT1cInJlcXVpcmVkXCI+XG4gICAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICBAaWYgKGhpbnQpIHtcbiAgICAgICAgICAgIDx0dWktaWNvbiBpY29uPVwiQHNwcm9jLmNpcmNsZS1pbmZvLWVtcHR5XCIgW3R1aUhpbnRdPVwiaGludFwiIGNsYXNzPVwiaGludEljb25cIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8dHVpLXRleHRmaWVsZFxuICAgICAgICB0dWlBcHBlYXJhbmNlPVwic3Byb2MtaW5wdXQtYXBwZWFyYW5jZVwiXG4gICAgICAgIHR1aUNoZXZyb25cbiAgICAgICAgW3R1aVRleHRmaWVsZFNpemVdPVwic2l6ZSgpXCJcbiAgICAgICAgW3N0cmluZ2lmeV09XCJzdHJpbmdpZnkoKVwiXG4gICAgICAgIFt0dWlUZXh0ZmllbGRDbGVhbmVyXT1cImZvcmNlQ2xlYXJcIlxuICAgICAgICBbdHVpVGV4dGZpZWxkTGFiZWxPdXRzaWRlXT1cInRydWVcIlxuICAgICAgICBbY29udGVudF09XCJ2YWx1ZUNvbnRlbnRcIlxuICAgICAgICBbdHVpRHJvcGRvd25NaW5IZWlnaHRdPVwibWluRHJvcGRvd25IZWlnaHQoKVwiXG4gICAgICAgIFt0dWlEcm9wZG93bk1heEhlaWdodF09XCJtYXhEcm9wZG93bkhlaWdodCgpXCJcbiAgICAgICAgW3R1aURyb3Bkb3duTGltaXRXaWR0aF09XCJkcm9wZG93bkxpbWl0V2lkdGgoKVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dCB0dWlDb21ib0JveCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgLz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dGZpZWxkLWljb25zLWNvbnRhaW5lclwiPlxuICAgICAgICAgIEBpZiAoaXNJbnZhbGlkQW5kTm90UHJpc3RpbmUpIHtcbiAgICAgICAgICAgIDxzcHJvYy1wYXJhbS1pbnZhbGlkLWljb24gW2hpbnRdPVwidmFsaWRhdGlvbkVycm9ySGludCgpXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICp0dWlUZXh0ZmllbGREcm9wZG93biBbbmdUZW1wbGF0ZU91dGxldF09XCJwYXJhbVRyZWVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC90dWktdGV4dGZpZWxkPlxuICAgICAgPG5nLXRlbXBsYXRlICN2YWx1ZUNvbnRlbnQgbGV0LWxpc3Q+XG4gICAgICAgIHt7IHNob3J0UGlja2VkTGVuZ3RoKCkgPyAn0JLRi9Cx0YDQsNC90L46ICcgOiBudWxsIH19IHt7IGxpc3QubGVuZ3RoIH19XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjcGFyYW1UcmVlVGVtcGxhdGU+XG4gIDxzcHJvYy1wYXJhbS10cmVlXG4gICAgW211bHRpXT1cInRydWVcIlxuICAgIFtjaGVja2VkTm9kZXNdPVwiY2hlY2tlZE5vZGVzKClcIlxuICAgIChzZWxlY3RlZE5vZGVzQ2hhbmdlKT1cInNldFNlbGVjdGVkTm9kZXMoJGV2ZW50KVwiXG4gID48L3Nwcm9jLXBhcmFtLXRyZWU+XG48L25nLXRlbXBsYXRlPlxuIl19