@provoly/dashboard 1.4.13 → 1.4.15

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 (226) hide show
  1. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +7 -7
  2. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules.component.mjs +3 -3
  3. package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +7 -7
  4. package/esm2022/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.mjs +10 -10
  5. package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +6 -6
  6. package/esm2022/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.mjs +3 -3
  7. package/esm2022/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.mjs +3 -3
  8. package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +10 -10
  9. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +10 -15
  10. package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +8 -8
  11. package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +5 -5
  12. package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +5 -5
  13. package/esm2022/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.mjs +6 -6
  14. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +5 -5
  15. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +3 -3
  16. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +5 -5
  17. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +6 -6
  18. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +3 -3
  19. package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +5 -5
  20. package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +6 -6
  21. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +7 -7
  22. package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +3 -3
  23. package/esm2022/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.mjs +5 -5
  24. package/esm2022/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.mjs +5 -5
  25. package/esm2022/admin/components/admin-environment/admin-environment.component.mjs +5 -5
  26. package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +5 -5
  27. package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +3 -3
  28. package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +3 -3
  29. package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +5 -5
  30. package/esm2022/admin/components/admin-links/admin-links.component.mjs +5 -5
  31. package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +5 -5
  32. package/esm2022/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.mjs +5 -5
  33. package/esm2022/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.mjs +5 -5
  34. package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +4 -5
  35. package/esm2022/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.mjs +5 -6
  36. package/esm2022/admin/components/admin-metadata-rules/admin-metadata-rules.component.mjs +5 -5
  37. package/esm2022/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.mjs +5 -5
  38. package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +4 -5
  39. package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +5 -5
  40. package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +5 -5
  41. package/esm2022/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.mjs +5 -5
  42. package/esm2022/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.mjs +5 -5
  43. package/esm2022/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.mjs +5 -5
  44. package/esm2022/admin/components/admin-predicates/admin-predicates.component.mjs +5 -5
  45. package/esm2022/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.mjs +4 -5
  46. package/esm2022/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.mjs +5 -5
  47. package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +6 -6
  48. package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +6 -6
  49. package/esm2022/admin/components/admin-user/admin-user.component.mjs +5 -5
  50. package/esm2022/admin/components/association/association.component.mjs +4 -5
  51. package/esm2022/components/card/card.component.mjs +5 -6
  52. package/esm2022/components/metadata-editor/metadata-editor.component.mjs +6 -6
  53. package/esm2022/components/scheme-picker/scheme-picker.component.mjs +7 -7
  54. package/esm2022/components/stepper/stepper.component.mjs +3 -4
  55. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +5 -5
  56. package/esm2022/dataset/components/dataset-version-form/dataset-version-form.component.mjs +6 -7
  57. package/esm2022/filters/date/date-filter.component.mjs +5 -6
  58. package/esm2022/filters/list/list-filter.component.mjs +6 -7
  59. package/esm2022/filters/number/number-filter.component.mjs +5 -6
  60. package/esm2022/filters/text/text-filter.component.mjs +5 -6
  61. package/esm2022/lib/core/components/about/about.component.mjs +3 -3
  62. package/esm2022/lib/core/components/accordion/accordion-item/accordion-item.component.mjs +7 -7
  63. package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +6 -6
  64. package/esm2022/lib/core/components/base-toolbox/base-toolbox.component.mjs +6 -6
  65. package/esm2022/lib/core/components/base-toolbox-action/base-toolbox-action.component.mjs +6 -7
  66. package/esm2022/lib/core/components/date-picker/date-picker.component.mjs +4 -4
  67. package/esm2022/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.mjs +3 -4
  68. package/esm2022/lib/core/components/date-picker/time-picker/time-picker.component.mjs +6 -6
  69. package/esm2022/lib/core/components/edit-input/edit-input.component.mjs +7 -8
  70. package/esm2022/lib/core/components/icon/icon.component.mjs +3 -3
  71. package/esm2022/lib/core/components/modal/modal.component.mjs +5 -6
  72. package/esm2022/lib/core/components/nq-color-selector/nq-color-selector.component.mjs +5 -5
  73. package/esm2022/lib/core/components/overlay/dialog-confirm.component.mjs +3 -3
  74. package/esm2022/lib/core/components/range/range.component.mjs +5 -6
  75. package/esm2022/lib/core/components/select/select.component.mjs +3 -3
  76. package/esm2022/lib/core/components/select-image/select-image.component.mjs +5 -5
  77. package/esm2022/lib/core/components/share/group-share/group-share.component.mjs +6 -6
  78. package/esm2022/lib/core/components/snackbar/snackbar/snackbar.component.mjs +3 -3
  79. package/esm2022/lib/core/components/status-modal/status-modal.component.mjs +5 -5
  80. package/esm2022/lib/core/components/tabs/tab-group.component.mjs +3 -3
  81. package/esm2022/lib/core/components/toggle/toggle.component.mjs +4 -4
  82. package/esm2022/lib/core/model/result-set.interface.mjs +1 -1
  83. package/esm2022/lib/core/model/search-mono-class.model.mjs +1 -1
  84. package/esm2022/lib/core/store/data-source/data-source.effects.mjs +9 -9
  85. package/esm2022/lib/core/store/relation-types/relation-types.actions.mjs +2 -1
  86. package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +2 -1
  87. package/esm2022/lib/core/store/relation-types/relation-types.service.mjs +5 -1
  88. package/esm2022/lib/core/store/search/search.actions.mjs +1 -1
  89. package/esm2022/lib/core/store/search/search.effects.mjs +5 -3
  90. package/esm2022/lib/core/store/search/search.service.mjs +19 -13
  91. package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +3 -3
  92. package/esm2022/lib/dashboard/action-bus/service/bus.service.mjs +2 -2
  93. package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +8 -8
  94. package/esm2022/lib/dashboard/components/dashboard.component.mjs +12 -12
  95. package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +5 -5
  96. package/esm2022/lib/dashboard/components/metadata/metadata.component.mjs +5 -6
  97. package/esm2022/lib/dashboard/components/vizualize-raw/vizualize-raw.component.mjs +3 -3
  98. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +6 -6
  99. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +10 -10
  100. package/esm2022/lib/dashboard/components/widgets/widget-filler/widget-filler.component.mjs +2 -2
  101. package/esm2022/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.mjs +2 -2
  102. package/esm2022/lib/dashboard/filter/components/filter-group/filter-group.component.mjs +7 -7
  103. package/esm2022/lib/dashboard/resultset-utils.mjs +7 -8
  104. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +2 -1
  105. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +3 -3
  106. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +31 -23
  107. package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +3 -3
  108. package/esm2022/notification/components/notification/content/notification-content.component.mjs +3 -3
  109. package/esm2022/notification/components/notification/notification.component.mjs +5 -5
  110. package/esm2022/pipeline/components/pipeline-details/pipeline-details.component.mjs +7 -7
  111. package/esm2022/pipeline/components/pipeline-editor/graph-serializer.utils.mjs +2 -2
  112. package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +5 -5
  113. package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +9 -9
  114. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +6 -6
  115. package/esm2022/presentation/components/presentation.component.mjs +6 -6
  116. package/esm2022/presentation/components/title-presentation/title-presentation.component.mjs +5 -5
  117. package/esm2022/restitution/components/restitution/restitution.component.mjs +3 -3
  118. package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +9 -9
  119. package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +3 -3
  120. package/esm2022/search/components/choose-widget/choose-widget.component.mjs +5 -5
  121. package/esm2022/search/components/edit-named-query/edit-named-query.component.mjs +9 -9
  122. package/esm2022/search/search-fulltext/search-fulltext/search-fulltext.component.mjs +3 -3
  123. package/esm2022/search/search-home/search-home.component.mjs +3 -3
  124. package/esm2022/search/search-mono-class/components/search-composed/search-composed.component.mjs +3 -3
  125. package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +3 -3
  126. package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +8 -8
  127. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +6 -6
  128. package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +3 -3
  129. package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +4 -4
  130. package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +7 -7
  131. package/esm2022/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.mjs +6 -6
  132. package/esm2022/search/search-multi-class/components/search-multi-class/search-multi-class.component.mjs +7 -7
  133. package/esm2022/search/search-tools/search-tools.component.mjs +13 -13
  134. package/esm2022/toolbox/components/named-query/named-query.component.mjs +5 -5
  135. package/esm2022/toolbox/components/save-view/save-view.component.mjs +10 -10
  136. package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +8 -8
  137. package/esm2022/toolbox/shared/presentation-form/presentation-form.component.mjs +9 -6
  138. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +3 -3
  139. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +4 -4
  140. package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +2 -2
  141. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +12 -12
  142. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +13 -7
  143. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +7 -7
  144. package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +7 -7
  145. package/esm2022/widgets/widget-iframe/messaging/iframe-messaging.service.mjs +2 -2
  146. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +10 -10
  147. package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +2 -2
  148. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +2 -2
  149. package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +4 -5
  150. package/esm2022/widgets/widget-template/component/widget-template.component.mjs +7 -7
  151. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +10 -10
  152. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +9 -9
  153. package/fesm2022/provoly-dashboard-admin.mjs +171 -175
  154. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  155. package/fesm2022/provoly-dashboard-components-card.mjs +4 -5
  156. package/fesm2022/provoly-dashboard-components-card.mjs.map +1 -1
  157. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +4 -4
  158. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
  159. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +6 -6
  160. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
  161. package/fesm2022/provoly-dashboard-components-stepper.mjs +2 -3
  162. package/fesm2022/provoly-dashboard-components-stepper.mjs.map +1 -1
  163. package/fesm2022/provoly-dashboard-dataset.mjs +14 -14
  164. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  165. package/fesm2022/provoly-dashboard-filters-date.mjs +4 -5
  166. package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -1
  167. package/fesm2022/provoly-dashboard-filters-list.mjs +4 -5
  168. package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
  169. package/fesm2022/provoly-dashboard-filters-number.mjs +4 -5
  170. package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
  171. package/fesm2022/provoly-dashboard-filters-text.mjs +4 -5
  172. package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
  173. package/fesm2022/provoly-dashboard-notification.mjs +4 -4
  174. package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
  175. package/fesm2022/provoly-dashboard-pipeline.mjs +21 -21
  176. package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
  177. package/fesm2022/provoly-dashboard-presentation.mjs +14 -14
  178. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  179. package/fesm2022/provoly-dashboard-restitution.mjs +6 -6
  180. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  181. package/fesm2022/provoly-dashboard-search.mjs +38 -38
  182. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  183. package/fesm2022/provoly-dashboard-toolbox.mjs +29 -25
  184. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  185. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +2 -2
  186. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  187. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +3 -3
  188. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  189. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +1 -1
  190. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
  191. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +10 -10
  192. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  193. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +11 -5
  194. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
  195. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +5 -5
  196. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
  197. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +8 -8
  198. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs.map +1 -1
  199. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +9 -9
  200. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  201. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +6 -6
  202. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  203. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +7 -7
  204. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -1
  205. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +11 -11
  206. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  207. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +7 -7
  208. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  209. package/fesm2022/provoly-dashboard.mjs +245 -224
  210. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  211. package/lib/core/model/result-set.interface.d.ts +6 -0
  212. package/lib/core/model/search-mono-class.model.d.ts +9 -2
  213. package/lib/core/store/relation-types/relation-types.actions.d.ts +9 -0
  214. package/lib/core/store/relation-types/relation-types.effects.d.ts +5 -0
  215. package/lib/core/store/relation-types/relation-types.service.d.ts +1 -0
  216. package/lib/core/store/search/search.actions.d.ts +4 -0
  217. package/lib/core/store/search/search.effects.d.ts +1 -0
  218. package/lib/core/store/search/search.service.d.ts +2 -2
  219. package/lib/dashboard/store/dashboard.actions.d.ts +5 -0
  220. package/lib/dashboard/store/dashboard.effects.d.ts +2 -0
  221. package/package.json +37 -37
  222. package/search/search-fulltext/store/search-fulltext.effects.d.ts +1 -0
  223. package/search/search-mono-class/store/search-mono-class.effects.d.ts +1 -0
  224. package/search/search-mono-class/store/search-mono-class.service.d.ts +1 -1
  225. package/search/search-multi-class/store/search-multi-class.effects.d.ts +1 -0
  226. package/toolbox/shared/presentation-form/presentation-form.component.d.ts +1 -0
@@ -1,15 +1,14 @@
1
1
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@provoly/dashboard";
3
+ import * as i1 from "@provoly/dashboard";
5
4
  export class PryAssociationComponent {
6
5
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryAssociationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: PryAssociationComponent, selector: "pry-association", inputs: { associations: "associations" }, ngImport: i0, template: "<div *ngFor=\"let association of associations?.associations\" class=\"a-container-type\">\n <p class=\"a-label-type {{ association.type }}\">\n <strong>{{ '@pry.admin.association.' + association.type | i18n }}</strong>\n </p>\n <p>\n {{ association.name }}\n </p>\n</div>\n<p *ngIf=\"associations?.usedElsewhere === true\" class=\"a-p\">\n <strong>{{ '@pry.admin.classes.usedElsewhere' | i18n }}</strong>\n</p>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
6
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryAssociationComponent, selector: "pry-association", inputs: { associations: "associations" }, ngImport: i0, template: "@for (association of associations?.associations; track association) {\n <div class=\"a-container-type\">\n <p class=\"a-label-type {{ association.type }}\">\n <strong>{{ '@pry.admin.association.' + association.type | i18n }}</strong>\n </p>\n <p>\n {{ association.name }}\n </p>\n </div>\n}\n@if (associations?.usedElsewhere === true) {\n <p class=\"a-p\">\n <strong>{{ '@pry.admin.classes.usedElsewhere' | i18n }}</strong>\n </p>\n}\n", dependencies: [{ kind: "pipe", type: i1.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
8
7
  }
9
8
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryAssociationComponent, decorators: [{
10
9
  type: Component,
11
- args: [{ selector: 'pry-association', changeDetection: ChangeDetectionStrategy.Default, template: "<div *ngFor=\"let association of associations?.associations\" class=\"a-container-type\">\n <p class=\"a-label-type {{ association.type }}\">\n <strong>{{ '@pry.admin.association.' + association.type | i18n }}</strong>\n </p>\n <p>\n {{ association.name }}\n </p>\n</div>\n<p *ngIf=\"associations?.usedElsewhere === true\" class=\"a-p\">\n <strong>{{ '@pry.admin.classes.usedElsewhere' | i18n }}</strong>\n</p>\n" }]
10
+ args: [{ selector: 'pry-association', changeDetection: ChangeDetectionStrategy.Default, template: "@for (association of associations?.associations; track association) {\n <div class=\"a-container-type\">\n <p class=\"a-label-type {{ association.type }}\">\n <strong>{{ '@pry.admin.association.' + association.type | i18n }}</strong>\n </p>\n <p>\n {{ association.name }}\n </p>\n </div>\n}\n@if (associations?.usedElsewhere === true) {\n <p class=\"a-p\">\n <strong>{{ '@pry.admin.classes.usedElsewhere' | i18n }}</strong>\n </p>\n}\n" }]
12
11
  }], propDecorators: { associations: [{
13
12
  type: Input
14
13
  }] } });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzb2NpYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hc3NvY2lhdGlvbi9hc3NvY2lhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9hZG1pbi9jb21wb25lbnRzL2Fzc29jaWF0aW9uL2Fzc29jaWF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBUTFFLE1BQU0sT0FBTyx1QkFBdUI7OEdBQXZCLHVCQUF1QjtrR0FBdkIsdUJBQXVCLGlHQ1JwQyx5YUFXQTs7MkZESGEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGlCQUFpQixtQkFFVix1QkFBdUIsQ0FBQyxPQUFPOzhCQUd2QyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzc29jaWF0aW9ucyB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1hc3NvY2lhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NvY2lhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdFxufSlcbmV4cG9ydCBjbGFzcyBQcnlBc3NvY2lhdGlvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGFzc29jaWF0aW9ucz86IEFzc29jaWF0aW9ucyB8IG51bGw7XG59XG4iLCI8ZGl2ICpuZ0Zvcj1cImxldCBhc3NvY2lhdGlvbiBvZiBhc3NvY2lhdGlvbnM/LmFzc29jaWF0aW9uc1wiIGNsYXNzPVwiYS1jb250YWluZXItdHlwZVwiPlxuICA8cCBjbGFzcz1cImEtbGFiZWwtdHlwZSB7eyBhc3NvY2lhdGlvbi50eXBlIH19XCI+XG4gICAgPHN0cm9uZz57eyAnQHByeS5hZG1pbi5hc3NvY2lhdGlvbi4nICsgYXNzb2NpYXRpb24udHlwZSB8IGkxOG4gfX08L3N0cm9uZz5cbiAgPC9wPlxuICA8cD5cbiAgICB7eyBhc3NvY2lhdGlvbi5uYW1lIH19XG4gIDwvcD5cbjwvZGl2PlxuPHAgKm5nSWY9XCJhc3NvY2lhdGlvbnM/LnVzZWRFbHNld2hlcmUgPT09IHRydWVcIiBjbGFzcz1cImEtcFwiPlxuICA8c3Ryb25nPnt7ICdAcHJ5LmFkbWluLmNsYXNzZXMudXNlZEVsc2V3aGVyZScgfCBpMThuIH19PC9zdHJvbmc+XG48L3A+XG4iXX0=
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzb2NpYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvYWRtaW4vY29tcG9uZW50cy9hc3NvY2lhdGlvbi9hc3NvY2lhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9hZG1pbi9jb21wb25lbnRzL2Fzc29jaWF0aW9uL2Fzc29jaWF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRMUUsTUFBTSxPQUFPLHVCQUF1Qjs4R0FBdkIsdUJBQXVCO2tHQUF2Qix1QkFBdUIsaUdDUnBDLGtkQWVBOzsyRkRQYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUVWLHVCQUF1QixDQUFDLE9BQU87OEJBR3ZDLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXNzb2NpYXRpb25zIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWFzc29jaWF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc29jaWF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0XG59KVxuZXhwb3J0IGNsYXNzIFByeUFzc29jaWF0aW9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgYXNzb2NpYXRpb25zPzogQXNzb2NpYXRpb25zIHwgbnVsbDtcbn1cbiIsIkBmb3IgKGFzc29jaWF0aW9uIG9mIGFzc29jaWF0aW9ucz8uYXNzb2NpYXRpb25zOyB0cmFjayBhc3NvY2lhdGlvbikge1xuICA8ZGl2IGNsYXNzPVwiYS1jb250YWluZXItdHlwZVwiPlxuICAgIDxwIGNsYXNzPVwiYS1sYWJlbC10eXBlIHt7IGFzc29jaWF0aW9uLnR5cGUgfX1cIj5cbiAgICAgIDxzdHJvbmc+e3sgJ0BwcnkuYWRtaW4uYXNzb2NpYXRpb24uJyArIGFzc29jaWF0aW9uLnR5cGUgfCBpMThuIH19PC9zdHJvbmc+XG4gICAgPC9wPlxuICAgIDxwPlxuICAgICAge3sgYXNzb2NpYXRpb24ubmFtZSB9fVxuICAgIDwvcD5cbiAgPC9kaXY+XG59XG5AaWYgKGFzc29jaWF0aW9ucz8udXNlZEVsc2V3aGVyZSA9PT0gdHJ1ZSkge1xuICA8cCBjbGFzcz1cImEtcFwiPlxuICAgIDxzdHJvbmc+e3sgJ0BwcnkuYWRtaW4uY2xhc3Nlcy51c2VkRWxzZXdoZXJlJyB8IGkxOG4gfX08L3N0cm9uZz5cbiAgPC9wPlxufVxuIl19
@@ -1,9 +1,8 @@
1
1
  import { ChangeDetectionStrategy, Component, ContentChildren, Directive, EventEmitter, HostBinding, HostListener, InjectionToken, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
2
  import { Subscription } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@provoly/dashboard";
6
- import * as i3 from "@angular/cdk/overlay";
4
+ import * as i1 from "@provoly/dashboard";
5
+ import * as i2 from "@angular/cdk/overlay";
7
6
  const OVERLAY_POSITIONS = [
8
7
  {
9
8
  originX: 'start',
@@ -244,11 +243,11 @@ export class PryCardHeaderComponent {
244
243
  });
245
244
  }
246
245
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryCardHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
247
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: PryCardHeaderComponent, selector: "pry-card-header", inputs: { marker: "marker" }, host: { properties: { "class": "this.class" } }, queries: [{ propertyName: "_menuChildren", predicate: PRY_CARD_MENU, descendants: true }, { propertyName: "_iconChildren", predicate: PRY_CARD_ICON, descendants: true }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "menuList", first: true, predicate: ["menuList"], descendants: true }], ngImport: i0, template: "<div class=\"o-pry-card-header\">\n <div *ngIf=\"marker\" class=\"o-pry-card-header__marker\"></div>\n <ng-container *ngIf=\"_iconChildren?.length\">\n <div class=\"o-pry-card-header__icon-wrapper\">\n <ng-content select=\"pry-card-icon, [o-pry-card-icon], [pryCardIcon]\"></ng-content>\n </div>\n </ng-container>\n\n <div class=\"o-pry-card-header__title-wrapper\">\n <ng-content select=\"pry-card-title, pry-card-subtitle\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"_menuChildren?.length\">\n <button\n aria-controls=\"btn_actions\"\n [attr.aria-expanded]=\"menuOpen\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only -circle -size-sm o-pry-card-menu-trigger a-tooltip\"\n (click)=\"focusChild(); menuOpen = true; $event.stopPropagation()\"\n [attr.data-tooltip]=\"'@pry.search.home.otherActions' | i18n\"\n data-tooltip-position=\"left\"\n [class.active]=\"menuOpen\"\n cdkOverlayOrigin\n #trigger\n >\n <pry-icon iconSvg=\"more_vertical\" [width]=\"18\" [height]=\"18\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.home.otherActions' | i18n }}</span>\n </button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"menuOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"menuOpen = false\"\n >\n <div\n class=\"o-pry-card-menu-wrapper\"\n aria-labelledby=\"btn_actions\"\n #menuList\n (keydown.arrowUp)=\"onArrowUp()\"\n (keydown.arrowDown)=\"onArrowDown()\"\n (keydown.escape)=\"closeToEscape()\"\n >\n <ng-content\n select=\"pry-card-menu, [o-pry-card-menu], [pryCardMenu]\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
246
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryCardHeaderComponent, selector: "pry-card-header", inputs: { marker: "marker" }, host: { properties: { "class": "this.class" } }, queries: [{ propertyName: "_menuChildren", predicate: PRY_CARD_MENU, descendants: true }, { propertyName: "_iconChildren", predicate: PRY_CARD_ICON, descendants: true }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "menuList", first: true, predicate: ["menuList"], descendants: true }], ngImport: i0, template: "<div class=\"o-pry-card-header\">\n @if (marker) {\n <div class=\"o-pry-card-header__marker\"></div>\n }\n @if (_iconChildren?.length) {\n <div class=\"o-pry-card-header__icon-wrapper\">\n <ng-content select=\"pry-card-icon, [o-pry-card-icon], [pryCardIcon]\"></ng-content>\n </div>\n }\n\n <div class=\"o-pry-card-header__title-wrapper\">\n <ng-content select=\"pry-card-title, pry-card-subtitle\"></ng-content>\n </div>\n\n @if (_menuChildren?.length) {\n <button\n aria-controls=\"btn_actions\"\n [attr.aria-expanded]=\"menuOpen\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only -circle -size-sm o-pry-card-menu-trigger a-tooltip\"\n (click)=\"focusChild(); menuOpen = true; $event.stopPropagation()\"\n [attr.data-tooltip]=\"'@pry.search.home.otherActions' | i18n\"\n data-tooltip-position=\"left\"\n [class.active]=\"menuOpen\"\n cdkOverlayOrigin\n #trigger\n >\n <pry-icon iconSvg=\"more_vertical\" [width]=\"18\" [height]=\"18\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.home.otherActions' | i18n }}</span>\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"menuOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"menuOpen = false\"\n >\n <div\n class=\"o-pry-card-menu-wrapper\"\n aria-labelledby=\"btn_actions\"\n #menuList\n (keydown.arrowUp)=\"onArrowUp()\"\n (keydown.arrowDown)=\"onArrowDown()\"\n (keydown.escape)=\"closeToEscape()\"\n >\n <ng-content\n select=\"pry-card-menu, [o-pry-card-menu], [pryCardMenu]\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n ></ng-content>\n </div>\n </ng-template>\n }\n</div>\n", dependencies: [{ kind: "component", type: i1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "pipe", type: i1.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
248
247
  }
249
248
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryCardHeaderComponent, decorators: [{
250
249
  type: Component,
251
- args: [{ selector: 'pry-card-header', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"o-pry-card-header\">\n <div *ngIf=\"marker\" class=\"o-pry-card-header__marker\"></div>\n <ng-container *ngIf=\"_iconChildren?.length\">\n <div class=\"o-pry-card-header__icon-wrapper\">\n <ng-content select=\"pry-card-icon, [o-pry-card-icon], [pryCardIcon]\"></ng-content>\n </div>\n </ng-container>\n\n <div class=\"o-pry-card-header__title-wrapper\">\n <ng-content select=\"pry-card-title, pry-card-subtitle\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"_menuChildren?.length\">\n <button\n aria-controls=\"btn_actions\"\n [attr.aria-expanded]=\"menuOpen\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only -circle -size-sm o-pry-card-menu-trigger a-tooltip\"\n (click)=\"focusChild(); menuOpen = true; $event.stopPropagation()\"\n [attr.data-tooltip]=\"'@pry.search.home.otherActions' | i18n\"\n data-tooltip-position=\"left\"\n [class.active]=\"menuOpen\"\n cdkOverlayOrigin\n #trigger\n >\n <pry-icon iconSvg=\"more_vertical\" [width]=\"18\" [height]=\"18\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.home.otherActions' | i18n }}</span>\n </button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"menuOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"menuOpen = false\"\n >\n <div\n class=\"o-pry-card-menu-wrapper\"\n aria-labelledby=\"btn_actions\"\n #menuList\n (keydown.arrowUp)=\"onArrowUp()\"\n (keydown.arrowDown)=\"onArrowDown()\"\n (keydown.escape)=\"closeToEscape()\"\n >\n <ng-content\n select=\"pry-card-menu, [o-pry-card-menu], [pryCardMenu]\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n ></ng-content>\n </div>\n </ng-template>\n </ng-container>\n</div>\n" }]
250
+ args: [{ selector: 'pry-card-header', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"o-pry-card-header\">\n @if (marker) {\n <div class=\"o-pry-card-header__marker\"></div>\n }\n @if (_iconChildren?.length) {\n <div class=\"o-pry-card-header__icon-wrapper\">\n <ng-content select=\"pry-card-icon, [o-pry-card-icon], [pryCardIcon]\"></ng-content>\n </div>\n }\n\n <div class=\"o-pry-card-header__title-wrapper\">\n <ng-content select=\"pry-card-title, pry-card-subtitle\"></ng-content>\n </div>\n\n @if (_menuChildren?.length) {\n <button\n aria-controls=\"btn_actions\"\n [attr.aria-expanded]=\"menuOpen\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only -circle -size-sm o-pry-card-menu-trigger a-tooltip\"\n (click)=\"focusChild(); menuOpen = true; $event.stopPropagation()\"\n [attr.data-tooltip]=\"'@pry.search.home.otherActions' | i18n\"\n data-tooltip-position=\"left\"\n [class.active]=\"menuOpen\"\n cdkOverlayOrigin\n #trigger\n >\n <pry-icon iconSvg=\"more_vertical\" [width]=\"18\" [height]=\"18\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.search.home.otherActions' | i18n }}</span>\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"menuOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"menuOpen = false\"\n >\n <div\n class=\"o-pry-card-menu-wrapper\"\n aria-labelledby=\"btn_actions\"\n #menuList\n (keydown.arrowUp)=\"onArrowUp()\"\n (keydown.arrowDown)=\"onArrowDown()\"\n (keydown.escape)=\"closeToEscape()\"\n >\n <ng-content\n select=\"pry-card-menu, [o-pry-card-menu], [pryCardMenu]\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n ></ng-content>\n </div>\n </ng-template>\n }\n</div>\n" }]
252
251
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { trigger: [{
253
252
  type: ViewChild,
254
253
  args: ['trigger']
@@ -267,4 +266,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
267
266
  }], marker: [{
268
267
  type: Input
269
268
  }] } });
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL2NhcmQvY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL2NhcmQvY2FyZC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvY2FyZC9jYXJkLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLGNBQWMsRUFDZCxLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFJcEMsTUFBTSxpQkFBaUIsR0FBd0I7SUFDN0M7UUFDRSxPQUFPLEVBQUUsT0FBTztRQUNoQixPQUFPLEVBQUUsUUFBUTtRQUNqQixRQUFRLEVBQUUsT0FBTztRQUNqQixRQUFRLEVBQUUsS0FBSztLQUNoQjtJQUNEO1FBQ0UsT0FBTyxFQUFFLEtBQUs7UUFDZCxPQUFPLEVBQUUsUUFBUTtRQUNqQixRQUFRLEVBQUUsS0FBSztRQUNmLFFBQVEsRUFBRSxLQUFLO0tBQ2hCO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsT0FBTztRQUNoQixPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFFBQVEsRUFBRSxRQUFRO0tBQ25CO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsS0FBSztRQUNkLE9BQU8sRUFBRSxLQUFLO1FBQ2Qs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RS9JaEMscWhFQXVEQTs7MkZGa0ZhLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSxpQkFBaUIsaUJBRVosaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTtzRkFHekIsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUNHLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFFQyxLQUFLO3NCQUExQixXQUFXO3VCQUFDLE9BQU87Z0JBQ21DLGFBQWE7c0JBQW5FLGVBQWU7dUJBQUMsYUFBYSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFDRSxhQUFhO3NCQUFuRSxlQUFlO3VCQUFDLGFBQWEsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBRzVDLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdGlvblRva2VuLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBQcnlDYXJkU3RhdHVzID0gJ3NlbGVjdGVkJyB8ICd1bnNlbGVjdGVkJztcblxuY29uc3QgT1ZFUkxBWV9QT1NJVElPTlM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbXG4gIHtcbiAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgIG92ZXJsYXlZOiAndG9wJ1xuICB9LFxuICB7XG4gICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgIG92ZXJsYXlZOiAndG9wJ1xuICB9LFxuICB7XG4gICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICBvdmVybGF5WTogJ2JvdHRvbSdcbiAgfSxcbiAge1xuICAgIG9yaWdpblg6ICdlbmQnLFxuICAgIG9yaWdpblk6ICd0b3AnLFxuICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICBvdmVybGF5WTogJ2JvdHRvbSdcbiAgfVxuXTtcblxuY29uc3QgUFJZX0NBUkRfSUNPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQcnlDYXJkSWNvbkRpcmVjdGl2ZT4oJ3ByeS1jYXJkLWljb24nKTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBgcHJ5LWNhcmQtaWNvbiwgW3ByeS1jYXJkLWljb25dLCBbcHJ5Q2FyZEljb25dYCxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBQUllfQ0FSRF9JQ09OLCB1c2VFeGlzdGluZzogUHJ5Q2FyZEljb25EaXJlY3RpdmUgfV1cbn0pXG5leHBvcnQgY2xhc3MgUHJ5Q2FyZEljb25EaXJlY3RpdmUge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3MgPSAnby1wcnktY2FyZC1pY29uJztcbn1cblxuLyoqXG4gKiBUaXRsZSBvZiBhIGNhcmQsIG5lZWRlZCBhcyBpdCdzIHVzZWQgYXMgYSBzZWxlY3RvciBpbiB0aGUgQVBJLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IGBwcnktY2FyZC10aXRsZSwgW28tcHJ5LWNhcmQtdGl0bGVdLCBbcHJ5Q2FyZFRpdGxlXWBcbn0pXG5leHBvcnQgY2xhc3MgUHJ5Q2FyZFRpdGxlRGlyZWN0aXZlIHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ28tcHJ5LWNhcmQtdGl0bGUnO1xufVxuXG4vKipcbiAqIFN1YnRpdGxlIG9mIGEgY2FyZCwgbmVlZGVkIGFzIGl0J3MgdXNlZCBhcyBhIHNlbGVjdG9yIGluIHRoZSBBUEkuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogYHByeS1jYXJkLXN1YnRpdGxlLCBbcHJ5LWNhcmQtc3VidGl0bGVdLCBbcHJ5Q2FyZFN1YnRpdGxlXWBcbn0pXG5leHBvcnQgY2xhc3MgUHJ5Q2FyZFN1YnRpdGxlRGlyZWN0aXZlIHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ3ByeS1jYXJkLXN1YnRpdGxlJztcbn1cblxuY29uc3QgUFJZX0NBUkRfTUVOVSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQcnlDYXJkTWVudURpcmVjdGl2ZT4oJ3ByeS1jYXJkLW1lbnUnKTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAncHJ5LWNhcmQtbWVudScsXG4gIGV4cG9ydEFzOiAncHJ5Q2FyZE1lbnUnLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFBSWV9DQVJEX01FTlUsIHVzZUV4aXN0aW5nOiBQcnlDYXJkTWVudURpcmVjdGl2ZSB9XVxufSlcbmV4cG9ydCBjbGFzcyBQcnlDYXJkTWVudURpcmVjdGl2ZSB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzcyA9ICdvLXByeS1jYXJkLW1lbnUnO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xvc2VNZW51JCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjbG9zZU1lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZU1lbnUkLmVtaXQodHJ1ZSk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJ2NhcmQuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQcnlDYXJkQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ3ByeS1jYXJkJztcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpIF9zZWxlY3RDYXJkKCkge1xuICAgIHRoaXMuc2VsZWN0ZWQgPSAhdGhpcy5zZWxlY3RlZDtcbiAgICB0aGlzLl9zdGF0dXMgPSB0aGlzLnNlbGVjdGVkID8gJ3NlbGVjdGVkJyA6ICd1bnNlbGVjdGVkJztcbiAgICB0aGlzLnN0YXR1c0NoYW5nZS5lbWl0KHRoaXMuX3N0YXR1cyk7XG4gIH1cblxuICBAT3V0cHV0KCkgc3RhdHVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQcnlDYXJkU3RhdHVzPigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucHJ5LWNhcmQtc2VsZWN0ZWQnKVxuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICB9XG5cbiAgc2V0IHNlbGVjdGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl9zZWxlY3RlZCkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuX3N0YXR1cyA9IHZhbHVlID8gJ3NlbGVjdGVkJyA6ICd1bnNlbGVjdGVkJztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfc3RhdHVzOiBQcnlDYXJkU3RhdHVzID0gJ3Vuc2VsZWN0ZWQnO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktY2FyZC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJ2NhcmQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUHJ5Q2FyZEhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXInKSB0cmlnZ2VyITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ21lbnVMaXN0JykgbWVudUxpc3QhOiBFbGVtZW50UmVmO1xuICBzZWxlY3RlZEl0ZW0/OiBFbGVtZW50IHwgbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ28tcHJ5LWNhcmQtaGVhZGVyLXdyYXBwZXInO1xuICBAQ29udGVudENoaWxkcmVuKFBSWV9DQVJEX01FTlUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgX21lbnVDaGlsZHJlbiE6IFF1ZXJ5TGlzdDxQcnlDYXJkTWVudURpcmVjdGl2ZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oUFJZX0NBUkRfSUNPTiwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBfaWNvbkNoaWxkcmVuITogUXVlcnlMaXN0PFByeUNhcmRJY29uRGlyZWN0aXZlPjtcbiAgcmVhZG9ubHkgb3ZlcmxheVBvc2l0aW9ucyA9IE9WRVJMQVlfUE9TSVRJT05TO1xuXG4gIEBJbnB1dCgpIG1hcmtlciA9IHRydWU7XG5cbiAgZ2V0IG1lbnVPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tZW51T3BlbjtcbiAgfVxuXG4gIGZvY3VzQ2hpbGQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1lbnVMaXN0Py5uYXRpdmVFbGVtZW50Py5jaGlsZHJlblswXS5jaGlsZHJlblswXS5maXJzdEVsZW1lbnRDaGlsZC5mb2N1cygpO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLm1lbnVMaXN0Py5uYXRpdmVFbGVtZW50Py5jaGlsZHJlblswXS5jaGlsZHJlblswXS5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICB9LCAxMCk7XG4gIH1cblxuICBzZXQgbWVudU9wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tZW51T3BlbiA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9tZW51T3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgbWVudVN1Yj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBjaGlsZHJlbnNTdWI6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kZXRlY3Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG9uQXJyb3dVcCgpIHtcbiAgICBjb25zdCBsYXN0RWxlbWVudCA9IHRoaXMubWVudUxpc3Q/Lm5hdGl2ZUVsZW1lbnQ/LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmxhc3RFbGVtZW50Q2hpbGQ7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtPy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGxhc3RFbGVtZW50O1xuICAgIH1cbiAgICBjb25zdCBmb2N1c0VsZW1lbnQgPSB0aGlzLnNlbGVjdGVkSXRlbSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICBjb25zdCBmb2N1c0NoaWxkcmVuRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5jaGlsZHJlblswXSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICBjb25zdCBmb2N1c1NlY29uZENoaWxkRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5jaGlsZHJlblswXS5jaGlsZHJlblswXSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICBpZiAoZm9jdXNDaGlsZHJlbkVsZW1lbnQpIHtcbiAgICAgIGZvY3VzQ2hpbGRyZW5FbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIGlmIChmb2N1c1NlY29uZENoaWxkRWxlbWVudCkge1xuICAgICAgZm9jdXNTZWNvbmRDaGlsZEVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgZm9jdXNFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBvbkFycm93RG93bigpIHtcbiAgICBjb25zdCBmaXJzdEVsZW1lbnQgPSB0aGlzLm1lbnVMaXN0Py5uYXRpdmVFbGVtZW50Py5jaGlsZHJlblswXS5jaGlsZHJlblswXS5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0/Lm5leHRFbGVtZW50U2libGluZykge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkSXRlbT8ubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGZpcnN0RWxlbWVudDtcbiAgICB9XG4gICAgY29uc3QgZm9jdXNFbGVtZW50ID0gdGhpcy5zZWxlY3RlZEl0ZW0gYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgY29uc3QgZm9jdXNDaGlsZHJlbkVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkSXRlbT8uY2hpbGRyZW5bMF0gYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgY29uc3QgZm9jdXNTZWNvbmRDaGlsZEVsZW1lbnQgPSB0aGlzLnNlbGVjdGVkSXRlbT8uY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0gYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgaWYgKGZvY3VzQ2hpbGRyZW5FbGVtZW50KSB7XG4gICAgICBmb2N1c0NoaWxkcmVuRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICBpZiAoZm9jdXNTZWNvbmRDaGlsZEVsZW1lbnQpIHtcbiAgICAgIGZvY3VzU2Vjb25kQ2hpbGRFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIGZvY3VzRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgY2xvc2VUb0VzY2FwZSgpIHtcbiAgICB0aGlzLm1lbnVPcGVuID0gZmFsc2U7XG4gICAgdGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBhZnRlciBpbml0IGl0IHN1YnNjcmliZXMgY2xvc2VNZW51JCBpZiB0aGVyZSdzIGEgbWVudVxuICAgIGNvbnN0IGZpcnN0TWVudSA9IHRoaXMuX21lbnVDaGlsZHJlbi5nZXQoMCk7XG4gICAgdGhpcy5tYW5hZ2VNZW51Q2xvc2VTdWJzY3JpcHRpb24oZmlyc3RNZW51KTtcbiAgICAvLyBhZnRlciBlYWNoIGNoYW5nZSBvZiB0ZW1wbGF0ZSBpdCBzdWJzY3JpYmVzIGF0IHRoZSBuZXcgZmlyc3QgbWVudVxuICAgIHRoaXMuY2hpbGRyZW5zU3ViLmFkZChcbiAgICAgIHRoaXMuX21lbnVDaGlsZHJlbi5jaGFuZ2VzLnN1YnNjcmliZSgobWVudXM6IFF1ZXJ5TGlzdDxQcnlDYXJkTWVudURpcmVjdGl2ZT4pID0+IHtcbiAgICAgICAgY29uc3QgbWVudSA9IG1lbnVzLmdldCgwKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VNZW51Q2xvc2VTdWJzY3JpcHRpb24obWVudSk7XG4gICAgICAgIHRoaXMuX2RldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5jaGlsZHJlbnNTdWIuYWRkKFxuICAgICAgdGhpcy5faWNvbkNoaWxkcmVuLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubWVudVN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoaWxkcmVuc1N1Yi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYW5hZ2VNZW51Q2xvc2VTdWJzY3JpcHRpb24obWVudTogUHJ5Q2FyZE1lbnVEaXJlY3RpdmUgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAoIW1lbnUpIHtcbiAgICAgIHRoaXMubWVudVN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5tZW51U3ViID0gbWVudS5jbG9zZU1lbnUkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLm1lbnVPcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLl9kZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiby1wcnktY2FyZFwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiIsIjxkaXYgY2xhc3M9XCJvLXByeS1jYXJkLWhlYWRlclwiPlxuICA8ZGl2ICpuZ0lmPVwibWFya2VyXCIgY2xhc3M9XCJvLXByeS1jYXJkLWhlYWRlcl9fbWFya2VyXCI+PC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJfaWNvbkNoaWxkcmVuPy5sZW5ndGhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1wcnktY2FyZC1oZWFkZXJfX2ljb24td3JhcHBlclwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicHJ5LWNhcmQtaWNvbiwgW28tcHJ5LWNhcmQtaWNvbl0sIFtwcnlDYXJkSWNvbl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJvLXByeS1jYXJkLWhlYWRlcl9fdGl0bGUtd3JhcHBlclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInByeS1jYXJkLXRpdGxlLCBwcnktY2FyZC1zdWJ0aXRsZVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9tZW51Q2hpbGRyZW4/Lmxlbmd0aFwiPlxuICAgIDxidXR0b25cbiAgICAgIGFyaWEtY29udHJvbHM9XCJidG5fYWN0aW9uc1wiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm1lbnVPcGVuXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5IC1jaXJjbGUgLXNpemUtc20gby1wcnktY2FyZC1tZW51LXRyaWdnZXIgYS10b29sdGlwXCJcbiAgICAgIChjbGljayk9XCJmb2N1c0NoaWxkKCk7IG1lbnVPcGVuID0gdHJ1ZTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5zZWFyY2guaG9tZS5vdGhlckFjdGlvbnMnIHwgaTE4blwiXG4gICAgICBkYXRhLXRvb2x0aXAtcG9zaXRpb249XCJsZWZ0XCJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwibWVudU9wZW5cIlxuICAgICAgY2RrT3ZlcmxheU9yaWdpblxuICAgICAgI3RyaWdnZXJcbiAgICA+XG4gICAgICA8cHJ5LWljb24gaWNvblN2Zz1cIm1vcmVfdmVydGljYWxcIiBbd2lkdGhdPVwiMThcIiBbaGVpZ2h0XT1cIjE4XCI+PC9wcnktaWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5zZWFyY2guaG9tZS5vdGhlckFjdGlvbnMnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwibWVudU9wZW5cIlxuICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJ0cnVlXCJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zXT1cIm92ZXJsYXlQb3NpdGlvbnNcIlxuICAgICAgY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3M9XCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFwiXG4gICAgICAoYmFja2Ryb3BDbGljayk9XCJtZW51T3BlbiA9IGZhbHNlXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiby1wcnktY2FyZC1tZW51LXdyYXBwZXJcIlxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJidG5fYWN0aW9uc1wiXG4gICAgICAgICNtZW51TGlzdFxuICAgICAgICAoa2V5ZG93bi5hcnJvd1VwKT1cIm9uQXJyb3dVcCgpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dEb3duKT1cIm9uQXJyb3dEb3duKClcIlxuICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2xvc2VUb0VzY2FwZSgpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICBzZWxlY3Q9XCJwcnktY2FyZC1tZW51LCBbby1wcnktY2FyZC1tZW51XSwgW3ByeUNhcmRNZW51XVwiXG4gICAgICAgICAgY2RrVHJhcEZvY3VzXG4gICAgICAgICAgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIlxuICAgICAgICA+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL2NhcmQvY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL2NhcmQvY2FyZC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvY2FyZC9jYXJkLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLGNBQWMsRUFDZCxLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUlwQyxNQUFNLGlCQUFpQixHQUF3QjtJQUM3QztRQUNFLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFFBQVEsRUFBRSxLQUFLO0tBQ2hCO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsS0FBSztRQUNkLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLFFBQVEsRUFBRSxLQUFLO1FBQ2YsUUFBUSxFQUFFLEtBQUs7S0FDaEI7SUFDRDtRQUNFLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLE9BQU87UUFDakIsUUFBUSxFQUFFLFFBQVE7S0FDbkI7SUFDRDtRQUNFLE9BQU8sRUFBRSxLQUFLO1FBQ2QsT0FBTyxFQUFFLEtBQUs7UUFDZCxR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L0loQyxtK0RBd0RBOzsyRkZpRmEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLGlCQUFpQixpQkFFWixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNO3NGQUd6QixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0csUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUVDLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTztnQkFDbUMsYUFBYTtzQkFBbkUsZUFBZTt1QkFBQyxhQUFhLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUNFLGFBQWE7c0JBQW5FLGVBQWU7dUJBQUMsYUFBYSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFHNUMsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIFByeUNhcmRTdGF0dXMgPSAnc2VsZWN0ZWQnIHwgJ3Vuc2VsZWN0ZWQnO1xuXG5jb25zdCBPVkVSTEFZX1BPU0lUSU9OUzogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtcbiAge1xuICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgb3ZlcmxheVk6ICd0b3AnXG4gIH0sXG4gIHtcbiAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgb3ZlcmxheVk6ICd0b3AnXG4gIH0sXG4gIHtcbiAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgIG9yaWdpblk6ICd0b3AnLFxuICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICB9LFxuICB7XG4gICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICB9XG5dO1xuXG5jb25zdCBQUllfQ0FSRF9JQ09OID0gbmV3IEluamVjdGlvblRva2VuPFByeUNhcmRJY29uRGlyZWN0aXZlPigncHJ5LWNhcmQtaWNvbicpO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IGBwcnktY2FyZC1pY29uLCBbcHJ5LWNhcmQtaWNvbl0sIFtwcnlDYXJkSWNvbl1gLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFBSWV9DQVJEX0lDT04sIHVzZUV4aXN0aW5nOiBQcnlDYXJkSWNvbkRpcmVjdGl2ZSB9XVxufSlcbmV4cG9ydCBjbGFzcyBQcnlDYXJkSWNvbkRpcmVjdGl2ZSB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzcyA9ICdvLXByeS1jYXJkLWljb24nO1xufVxuXG4vKipcbiAqIFRpdGxlIG9mIGEgY2FyZCwgbmVlZGVkIGFzIGl0J3MgdXNlZCBhcyBhIHNlbGVjdG9yIGluIHRoZSBBUEkuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogYHByeS1jYXJkLXRpdGxlLCBbby1wcnktY2FyZC10aXRsZV0sIFtwcnlDYXJkVGl0bGVdYFxufSlcbmV4cG9ydCBjbGFzcyBQcnlDYXJkVGl0bGVEaXJlY3RpdmUge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3MgPSAnby1wcnktY2FyZC10aXRsZSc7XG59XG5cbi8qKlxuICogU3VidGl0bGUgb2YgYSBjYXJkLCBuZWVkZWQgYXMgaXQncyB1c2VkIGFzIGEgc2VsZWN0b3IgaW4gdGhlIEFQSS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBgcHJ5LWNhcmQtc3VidGl0bGUsIFtwcnktY2FyZC1zdWJ0aXRsZV0sIFtwcnlDYXJkU3VidGl0bGVdYFxufSlcbmV4cG9ydCBjbGFzcyBQcnlDYXJkU3VidGl0bGVEaXJlY3RpdmUge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3MgPSAncHJ5LWNhcmQtc3VidGl0bGUnO1xufVxuXG5jb25zdCBQUllfQ0FSRF9NRU5VID0gbmV3IEluamVjdGlvblRva2VuPFByeUNhcmRNZW51RGlyZWN0aXZlPigncHJ5LWNhcmQtbWVudScpO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdwcnktY2FyZC1tZW51JyxcbiAgZXhwb3J0QXM6ICdwcnlDYXJkTWVudScsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogUFJZX0NBUkRfTUVOVSwgdXNlRXhpc3Rpbmc6IFByeUNhcmRNZW51RGlyZWN0aXZlIH1dXG59KVxuZXhwb3J0IGNsYXNzIFByeUNhcmRNZW51RGlyZWN0aXZlIHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ28tcHJ5LWNhcmQtbWVudSc7XG4gIEBPdXRwdXQoKSByZWFkb25seSBjbG9zZU1lbnUkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGNsb3NlTWVudSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlTWVudSQuZW1pdCh0cnVlKTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFByeUNhcmRDb21wb25lbnQge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3MgPSAncHJ5LWNhcmQnO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJykgX3NlbGVjdENhcmQoKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9ICF0aGlzLnNlbGVjdGVkO1xuICAgIHRoaXMuX3N0YXR1cyA9IHRoaXMuc2VsZWN0ZWQgPyAnc2VsZWN0ZWQnIDogJ3Vuc2VsZWN0ZWQnO1xuICAgIHRoaXMuc3RhdHVzQ2hhbmdlLmVtaXQodGhpcy5fc3RhdHVzKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBzdGF0dXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFByeUNhcmRTdGF0dXM+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wcnktY2FyZC1zZWxlY3RlZCcpXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gIH1cblxuICBzZXQgc2VsZWN0ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IHZhbHVlO1xuICAgICAgdGhpcy5fc3RhdHVzID0gdmFsdWUgPyAnc2VsZWN0ZWQnIDogJ3Vuc2VsZWN0ZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9zdGF0dXM6IFByeUNhcmRTdGF0dXMgPSAndW5zZWxlY3RlZCc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1jYXJkLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnY2FyZC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQcnlDYXJkSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgndHJpZ2dlcicpIHRyaWdnZXIhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnbWVudUxpc3QnKSBtZW51TGlzdCE6IEVsZW1lbnRSZWY7XG4gIHNlbGVjdGVkSXRlbT86IEVsZW1lbnQgfCBudWxsO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3MgPSAnby1wcnktY2FyZC1oZWFkZXItd3JhcHBlcic7XG4gIEBDb250ZW50Q2hpbGRyZW4oUFJZX0NBUkRfTUVOVSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBfbWVudUNoaWxkcmVuITogUXVlcnlMaXN0PFByeUNhcmRNZW51RGlyZWN0aXZlPjtcbiAgQENvbnRlbnRDaGlsZHJlbihQUllfQ0FSRF9JQ09OLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIF9pY29uQ2hpbGRyZW4hOiBRdWVyeUxpc3Q8UHJ5Q2FyZEljb25EaXJlY3RpdmU+O1xuICByZWFkb25seSBvdmVybGF5UG9zaXRpb25zID0gT1ZFUkxBWV9QT1NJVElPTlM7XG5cbiAgQElucHV0KCkgbWFya2VyID0gdHJ1ZTtcblxuICBnZXQgbWVudU9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21lbnVPcGVuO1xuICB9XG5cbiAgZm9jdXNDaGlsZCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubWVudUxpc3Q/Lm5hdGl2ZUVsZW1lbnQ/LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmZpcnN0RWxlbWVudENoaWxkLmZvY3VzKCk7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMubWVudUxpc3Q/Lm5hdGl2ZUVsZW1lbnQ/LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmZpcnN0RWxlbWVudENoaWxkO1xuICAgIH0sIDEwKTtcbiAgfVxuXG4gIHNldCBtZW51T3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX21lbnVPcGVuID0gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgX21lbnVPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBtZW51U3ViPzogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGNoaWxkcmVuc1N1YjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RldGVjdDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgb25BcnJvd1VwKCkge1xuICAgIGNvbnN0IGxhc3RFbGVtZW50ID0gdGhpcy5tZW51TGlzdD8ubmF0aXZlRWxlbWVudD8uY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0ubGFzdEVsZW1lbnRDaGlsZDtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0/LnByZXZpb3VzRWxlbWVudFNpYmxpbmcpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZEl0ZW0/LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gbGFzdEVsZW1lbnQ7XG4gICAgfVxuICAgIGNvbnN0IGZvY3VzRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRJdGVtIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICAgIGNvbnN0IGZvY3VzQ2hpbGRyZW5FbGVtZW50ID0gdGhpcy5zZWxlY3RlZEl0ZW0/LmNoaWxkcmVuWzBdIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICAgIGNvbnN0IGZvY3VzU2Vjb25kQ2hpbGRFbGVtZW50ID0gdGhpcy5zZWxlY3RlZEl0ZW0/LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICAgIGlmIChmb2N1c0NoaWxkcmVuRWxlbWVudCkge1xuICAgICAgZm9jdXNDaGlsZHJlbkVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgaWYgKGZvY3VzU2Vjb25kQ2hpbGRFbGVtZW50KSB7XG4gICAgICBmb2N1c1NlY29uZENoaWxkRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICBmb2N1c0VsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIG9uQXJyb3dEb3duKCkge1xuICAgIGNvbnN0IGZpcnN0RWxlbWVudCA9IHRoaXMubWVudUxpc3Q/Lm5hdGl2ZUVsZW1lbnQ/LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmZpcnN0RWxlbWVudENoaWxkO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbT8ubmV4dEVsZW1lbnRTaWJsaW5nKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gZmlyc3RFbGVtZW50O1xuICAgIH1cbiAgICBjb25zdCBmb2N1c0VsZW1lbnQgPSB0aGlzLnNlbGVjdGVkSXRlbSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICBjb25zdCBmb2N1c0NoaWxkcmVuRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5jaGlsZHJlblswXSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICBjb25zdCBmb2N1c1NlY29uZENoaWxkRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5jaGlsZHJlblswXS5jaGlsZHJlblswXSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICBpZiAoZm9jdXNDaGlsZHJlbkVsZW1lbnQpIHtcbiAgICAgIGZvY3VzQ2hpbGRyZW5FbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIGlmIChmb2N1c1NlY29uZENoaWxkRWxlbWVudCkge1xuICAgICAgZm9jdXNTZWNvbmRDaGlsZEVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgZm9jdXNFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBjbG9zZVRvRXNjYXBlKCkge1xuICAgIHRoaXMubWVudU9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIC8vIGFmdGVyIGluaXQgaXQgc3Vic2NyaWJlcyBjbG9zZU1lbnUkIGlmIHRoZXJlJ3MgYSBtZW51XG4gICAgY29uc3QgZmlyc3RNZW51ID0gdGhpcy5fbWVudUNoaWxkcmVuLmdldCgwKTtcbiAgICB0aGlzLm1hbmFnZU1lbnVDbG9zZVN1YnNjcmlwdGlvbihmaXJzdE1lbnUpO1xuICAgIC8vIGFmdGVyIGVhY2ggY2hhbmdlIG9mIHRlbXBsYXRlIGl0IHN1YnNjcmliZXMgYXQgdGhlIG5ldyBmaXJzdCBtZW51XG4gICAgdGhpcy5jaGlsZHJlbnNTdWIuYWRkKFxuICAgICAgdGhpcy5fbWVudUNoaWxkcmVuLmNoYW5nZXMuc3Vic2NyaWJlKChtZW51czogUXVlcnlMaXN0PFByeUNhcmRNZW51RGlyZWN0aXZlPikgPT4ge1xuICAgICAgICBjb25zdCBtZW51ID0gbWVudXMuZ2V0KDApO1xuICAgICAgICB0aGlzLm1hbmFnZU1lbnVDbG9zZVN1YnNjcmlwdGlvbihtZW51KTtcbiAgICAgICAgdGhpcy5fZGV0ZWN0LmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmNoaWxkcmVuc1N1Yi5hZGQoXG4gICAgICB0aGlzLl9pY29uQ2hpbGRyZW4uY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9kZXRlY3QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5tZW51U3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2hpbGRyZW5zU3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIG1hbmFnZU1lbnVDbG9zZVN1YnNjcmlwdGlvbihtZW51OiBQcnlDYXJkTWVudURpcmVjdGl2ZSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGlmICghbWVudSkge1xuICAgICAgdGhpcy5tZW51U3ViPy51bnN1YnNjcmliZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm1lbnVTdWIgPSBtZW51LmNsb3NlTWVudSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubWVudU9wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMuX2RldGVjdC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJvLXByeS1jYXJkXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIiwiPGRpdiBjbGFzcz1cIm8tcHJ5LWNhcmQtaGVhZGVyXCI+XG4gIEBpZiAobWFya2VyKSB7XG4gICAgPGRpdiBjbGFzcz1cIm8tcHJ5LWNhcmQtaGVhZGVyX19tYXJrZXJcIj48L2Rpdj5cbiAgfVxuICBAaWYgKF9pY29uQ2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgIDxkaXYgY2xhc3M9XCJvLXByeS1jYXJkLWhlYWRlcl9faWNvbi13cmFwcGVyXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJwcnktY2FyZC1pY29uLCBbby1wcnktY2FyZC1pY29uXSwgW3ByeUNhcmRJY29uXVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJvLXByeS1jYXJkLWhlYWRlcl9fdGl0bGUtd3JhcHBlclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInByeS1jYXJkLXRpdGxlLCBwcnktY2FyZC1zdWJ0aXRsZVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG5cbiAgQGlmIChfbWVudUNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICA8YnV0dG9uXG4gICAgICBhcmlhLWNvbnRyb2xzPVwiYnRuX2FjdGlvbnNcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJtZW51T3BlblwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seSAtY2lyY2xlIC1zaXplLXNtIG8tcHJ5LWNhcmQtbWVudS10cmlnZ2VyIGEtdG9vbHRpcFwiXG4gICAgICAoY2xpY2spPVwiZm9jdXNDaGlsZCgpOyBtZW51T3BlbiA9IHRydWU7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0Bwcnkuc2VhcmNoLmhvbWUub3RoZXJBY3Rpb25zJyB8IGkxOG5cIlxuICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwibGVmdFwiXG4gICAgICBbY2xhc3MuYWN0aXZlXT1cIm1lbnVPcGVuXCJcbiAgICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAgICN0cmlnZ2VyXG4gICAgICA+XG4gICAgICA8cHJ5LWljb24gaWNvblN2Zz1cIm1vcmVfdmVydGljYWxcIiBbd2lkdGhdPVwiMThcIiBbaGVpZ2h0XT1cIjE4XCI+PC9wcnktaWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5zZWFyY2guaG9tZS5vdGhlckFjdGlvbnMnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICAgICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cIm1lbnVPcGVuXCJcbiAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwidHJ1ZVwiXG4gICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJvdmVybGF5UG9zaXRpb25zXCJcbiAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPVwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIlxuICAgICAgKGJhY2tkcm9wQ2xpY2spPVwibWVudU9wZW4gPSBmYWxzZVwiXG4gICAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiby1wcnktY2FyZC1tZW51LXdyYXBwZXJcIlxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJidG5fYWN0aW9uc1wiXG4gICAgICAgICNtZW51TGlzdFxuICAgICAgICAoa2V5ZG93bi5hcnJvd1VwKT1cIm9uQXJyb3dVcCgpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dEb3duKT1cIm9uQXJyb3dEb3duKClcIlxuICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2xvc2VUb0VzY2FwZSgpXCJcbiAgICAgICAgPlxuICAgICAgICA8bmctY29udGVudFxuICAgICAgICAgIHNlbGVjdD1cInByeS1jYXJkLW1lbnUsIFtvLXByeS1jYXJkLW1lbnVdLCBbcHJ5Q2FyZE1lbnVdXCJcbiAgICAgICAgICBjZGtUcmFwRm9jdXNcbiAgICAgICAgICBbY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiXG4gICAgICAgID48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -7,9 +7,9 @@ import { MetadataSelectors } from './store/metadata.selector';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@ngrx/store";
9
9
  import * as i2 from "@angular/forms";
10
- import * as i3 from "@angular/common";
11
- import * as i4 from "@provoly/dashboard";
12
- import * as i5 from "./style/css.component";
10
+ import * as i3 from "@provoly/dashboard";
11
+ import * as i4 from "./style/css.component";
12
+ import * as i5 from "@angular/common";
13
13
  export const INTEGER_REGEXP_PATTERN = '^[+-]?[0-9]*$';
14
14
  export const DOUBLE_REGEXP_PATTERN = '[+-]?([0-9]*[.])?[0-9]+';
15
15
  export class PryMetadataEditorComponent extends SubscriptionnerDirective {
@@ -132,11 +132,11 @@ export class PryMetadataEditorComponent extends SubscriptionnerDirective {
132
132
  }
133
133
  }
134
134
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryMetadataEditorComponent, deps: [{ token: i1.Store }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
135
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: { isModification: "isModification", targetId: "targetId", type: "type", metadata: "metadata" }, outputs: { addMeta: "addMeta", removeMeta: "removeMeta" }, usesInheritance: true, ngImport: i0, template: "<pry-metadata-editor-css></pry-metadata-editor-css>\n@for (groupedMetadatas of _metadataGroupedByDef$ | async; track groupedMetadatas.metadataDef.id) {\n <div class=\"o-tabs__panel__content__actions\">\n <div class=\"o-tabs__panel__content__actions__def\">\n <span class=\"o-tabs__panel__content__actions__text__label\">{{ groupedMetadatas.metadataDef.name }}</span>\n <div class=\"o-tabs__panel__content__actions__buttons\">\n <ng-container *ngIf=\"!groupedMetadatas.metadataDef.readOnly\">\n <ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">\n {{ '@pry.action.delete' | i18n }} {{ groupedMetadatas.metadataDef.name }}\n </span>\n <pry-icon\n class=\"delete-icon\"\n iconSvg=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"removeMetadata(groupedMetadatas.metadataDef)\"\n ></pry-icon>\n </button>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <ul>\n @for (metadata of groupedMetadatas.metadata; track metadata.value; let i = $index) {\n <li class=\"o-tabs__panel__content__actions__def\">\n <div class=\"o-tabs__panel__content__actions__text\">\n <span class=\"o-tabs__panel__content__actions__text__value\">{{ metadata.value }}</span>\n </div>\n <div class=\"o-tabs__panel__content__actions__buttons\">\n <ng-container *ngIf=\"!metaDefinition(metadata).readOnly\">\n <ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">\n {{ '@pry.action.edit' | i18n }} {{ metaDefinition(metadata).name }}\n </span>\n <pry-icon\n class=\"edit-icon\"\n iconSvg=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"editMetadata(metadata)\"\n ></pry-icon>\n </button>\n @if ((_type$ | async) === 'user') {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">\n {{ '@pry.action.delete' | i18n }} {{ groupedMetadatas.metadataDef.name }}\n </span>\n <pry-icon\n class=\"delete-icon\"\n iconSvg=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"removeMetadataValue(metadata)\"\n ></pry-icon>\n </button>\n }\n </ng-container>\n </ng-container>\n </div>\n </li>\n }\n </ul>\n </div>\n}\n\n<ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <form class=\"o-form -border-top\" [formGroup]=\"form\" (ngSubmit)=\"addDatasetMetadata()\">\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.action.editProfil' | i18n }}</legend>\n\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label for=\"metadata\" id=\"metadata-label\" class=\"a-label\">Data</label>\n <pry-select\n id=\"metadata\"\n class=\"o-metadata-editor\"\n formControlName=\"metadata\"\n [items]=\"availableMetadata$ | async\"\n (ngModelChange)=\"onMetaChange($event)\"\n [isForm]=\"true\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('metadata')?.invalid ? 'metadata-label metadata-error' : 'metadata-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('metadata')?.invalid\"\n >\n </pry-select>\n <label\n *ngIf=\"isSubmitted && form.get('metadata')?.invalid\"\n id=\"metadata-error\"\n for=\"metadata\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n </div>\n\n <ng-container *ngIf=\"form.value.metadata\">\n <ng-container *ngIf=\"form.value['metadata']['type'] === 'DATE'; else inputList\">\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label id=\"form_date-label\" for=\"form_date\" class=\"a-label\">\n {{ '@pry.action.selectDate' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"form_date\"\n type=\"date\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('value')?.invalid ? 'form-date-label form-date-error' : 'form-date-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('value')?.invalid\"\n required\n />\n <label\n *ngIf=\"isSubmitted && form.get('value')?.invalid\"\n id=\"form_date-error\"\n for=\"form_date\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n </div>\n </ng-container>\n\n <ng-template #inputList>\n <ng-container *ngIf=\"form.value['metadata']['type'] === 'LIST'; else inputText\">\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label id=\"list-label\" class=\"a-label\" for=\"list\">{{ '@pry.action.choiceInList' | i18n }}</label>\n <pry-select\n id=\"list\"\n class=\"o-metadata-editor\"\n formControlName=\"value\"\n [items]=\"form.value['metadata']['allowedValues']\"\n [isForm]=\"true\"\n aria-labelledby=\"list-label\"\n ></pry-select>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template #inputText>\n <div class=\"m-form-label-field\">\n <label id=\"text-label\" class=\"a-label\" for=\"text\">\n {{ '@pry.action.text' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"text\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('value')?.invalid ? 'text-label text-error' : 'text-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('value')?.invalid\"\n required\n />\n <label\n *ngIf=\"isSubmitted && form.get('value')?.invalid\"\n id=\"test-error\"\n for=\"text\"\n class=\"a-label a-label--help -error\"\n >\n <span *ngIf=\"form.get('value')?.hasError('required')\">{{ '@pry.admin.required' | i18n }}</span>\n <ng-container *ngIf=\"form.get('value')?.hasError('pattern')\">\n <span *ngIf=\"form.value['metadata']['type'] === 'DOUBLE'\">\n {{ '@pry.admin.environment.formatDouble' | i18n }}\n </span>\n <span *ngIf=\"form.value['metadata']['type'] === 'INTEGER'\">\n {{ '@pry.admin.environment.formatInt' | i18n }}\n </span>\n </ng-container>\n </label>\n </div>\n </ng-template>\n </ng-container>\n </fieldset>\n\n <div class=\"m-btn-group -end\">\n <button type=\"submit\" class=\"a-btn a-btn--primary\">\n {{ (isModification ? '@pry.action.editMetadata' : '@pry.action.addMetadata') | i18n }}\n </button>\n </div>\n </form>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked", "pressedEnter"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryMetadataEditorCssComponent, selector: "pry-metadata-editor-css" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
135
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryMetadataEditorComponent, selector: "pry-metadata-editor", inputs: { isModification: "isModification", targetId: "targetId", type: "type", metadata: "metadata" }, outputs: { addMeta: "addMeta", removeMeta: "removeMeta" }, usesInheritance: true, ngImport: i0, template: "<pry-metadata-editor-css></pry-metadata-editor-css>\n@for (groupedMetadatas of _metadataGroupedByDef$ | async; track groupedMetadatas.metadataDef.id) {\n <div class=\"o-tabs__panel__content__actions\">\n <div class=\"o-tabs__panel__content__actions__def\">\n <span class=\"o-tabs__panel__content__actions__text__label\">{{ groupedMetadatas.metadataDef.name }}</span>\n <div class=\"o-tabs__panel__content__actions__buttons\">\n @if (!groupedMetadatas.metadataDef.readOnly) {\n <ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">\n {{ '@pry.action.delete' | i18n }} {{ groupedMetadatas.metadataDef.name }}\n </span>\n <pry-icon\n class=\"delete-icon\"\n iconSvg=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"removeMetadata(groupedMetadatas.metadataDef)\"\n ></pry-icon>\n </button>\n </ng-container>\n }\n </div>\n </div>\n <ul>\n @for (metadata of groupedMetadatas.metadata; track metadata.value; let i = $index) {\n <li class=\"o-tabs__panel__content__actions__def\">\n <div class=\"o-tabs__panel__content__actions__text\">\n <span class=\"o-tabs__panel__content__actions__text__value\">{{ metadata.value }}</span>\n </div>\n <div class=\"o-tabs__panel__content__actions__buttons\">\n @if (!metaDefinition(metadata).readOnly) {\n <ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">\n {{ '@pry.action.edit' | i18n }} {{ metaDefinition(metadata).name }}\n </span>\n <pry-icon\n class=\"edit-icon\"\n iconSvg=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"editMetadata(metadata)\"\n ></pry-icon>\n </button>\n @if ((_type$ | async) === 'user') {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">\n {{ '@pry.action.delete' | i18n }} {{ groupedMetadatas.metadataDef.name }}\n </span>\n <pry-icon\n class=\"delete-icon\"\n iconSvg=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"removeMetadataValue(metadata)\"\n ></pry-icon>\n </button>\n }\n </ng-container>\n }\n </div>\n </li>\n }\n </ul>\n </div>\n}\n\n<ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <form class=\"o-form -border-top\" [formGroup]=\"form\" (ngSubmit)=\"addDatasetMetadata()\">\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.action.editProfil' | i18n }}</legend>\n\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label for=\"metadata\" id=\"metadata-label\" class=\"a-label\">Data</label>\n <pry-select\n id=\"metadata\"\n class=\"o-metadata-editor\"\n formControlName=\"metadata\"\n [items]=\"availableMetadata$ | async\"\n (ngModelChange)=\"onMetaChange($event)\"\n [isForm]=\"true\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('metadata')?.invalid ? 'metadata-label metadata-error' : 'metadata-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('metadata')?.invalid\"\n >\n </pry-select>\n @if (isSubmitted && form.get('metadata')?.invalid) {\n <label\n id=\"metadata-error\"\n for=\"metadata\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n\n @if (form.value.metadata) {\n @if (form.value['metadata']['type'] === 'DATE') {\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label id=\"form_date-label\" for=\"form_date\" class=\"a-label\">\n {{ '@pry.action.selectDate' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"form_date\"\n type=\"date\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('value')?.invalid ? 'form-date-label form-date-error' : 'form-date-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('value')?.invalid\"\n required\n />\n @if (isSubmitted && form.get('value')?.invalid) {\n <label\n id=\"form_date-error\"\n for=\"form_date\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n } @else {\n @if (form.value['metadata']['type'] === 'LIST') {\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label id=\"list-label\" class=\"a-label\" for=\"list\">{{ '@pry.action.choiceInList' | i18n }}</label>\n <pry-select\n id=\"list\"\n class=\"o-metadata-editor\"\n formControlName=\"value\"\n [items]=\"form.value['metadata']['allowedValues']\"\n [isForm]=\"true\"\n aria-labelledby=\"list-label\"\n ></pry-select>\n </div>\n } @else {\n <div class=\"m-form-label-field\">\n <label id=\"text-label\" class=\"a-label\" for=\"text\">\n {{ '@pry.action.text' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"text\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('value')?.invalid ? 'text-label text-error' : 'text-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('value')?.invalid\"\n required\n />\n @if (isSubmitted && form.get('value')?.invalid) {\n <label\n id=\"test-error\"\n for=\"text\"\n class=\"a-label a-label--help -error\"\n >\n @if (form.get('value')?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (form.get('value')?.hasError('pattern')) {\n @if (form.value['metadata']['type'] === 'DOUBLE') {\n <span>\n {{ '@pry.admin.environment.formatDouble' | i18n }}\n </span>\n }\n @if (form.value['metadata']['type'] === 'INTEGER') {\n <span>\n {{ '@pry.admin.environment.formatInt' | i18n }}\n </span>\n }\n }\n </label>\n }\n </div>\n }\n }\n }\n </fieldset>\n\n <div class=\"m-btn-group -end\">\n <button type=\"submit\" class=\"a-btn a-btn--primary\">\n {{ (isModification ? '@pry.action.editMetadata' : '@pry.action.addMetadata') | i18n }}\n </button>\n </div>\n </form>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i3.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked", "pressedEnter"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i4.PryMetadataEditorCssComponent, selector: "pry-metadata-editor-css" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
136
136
  }
137
137
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryMetadataEditorComponent, decorators: [{
138
138
  type: Component,
139
- args: [{ selector: 'pry-metadata-editor', template: "<pry-metadata-editor-css></pry-metadata-editor-css>\n@for (groupedMetadatas of _metadataGroupedByDef$ | async; track groupedMetadatas.metadataDef.id) {\n <div class=\"o-tabs__panel__content__actions\">\n <div class=\"o-tabs__panel__content__actions__def\">\n <span class=\"o-tabs__panel__content__actions__text__label\">{{ groupedMetadatas.metadataDef.name }}</span>\n <div class=\"o-tabs__panel__content__actions__buttons\">\n <ng-container *ngIf=\"!groupedMetadatas.metadataDef.readOnly\">\n <ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">\n {{ '@pry.action.delete' | i18n }} {{ groupedMetadatas.metadataDef.name }}\n </span>\n <pry-icon\n class=\"delete-icon\"\n iconSvg=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"removeMetadata(groupedMetadatas.metadataDef)\"\n ></pry-icon>\n </button>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <ul>\n @for (metadata of groupedMetadatas.metadata; track metadata.value; let i = $index) {\n <li class=\"o-tabs__panel__content__actions__def\">\n <div class=\"o-tabs__panel__content__actions__text\">\n <span class=\"o-tabs__panel__content__actions__text__value\">{{ metadata.value }}</span>\n </div>\n <div class=\"o-tabs__panel__content__actions__buttons\">\n <ng-container *ngIf=\"!metaDefinition(metadata).readOnly\">\n <ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">\n {{ '@pry.action.edit' | i18n }} {{ metaDefinition(metadata).name }}\n </span>\n <pry-icon\n class=\"edit-icon\"\n iconSvg=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"editMetadata(metadata)\"\n ></pry-icon>\n </button>\n @if ((_type$ | async) === 'user') {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">\n {{ '@pry.action.delete' | i18n }} {{ groupedMetadatas.metadataDef.name }}\n </span>\n <pry-icon\n class=\"delete-icon\"\n iconSvg=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"removeMetadataValue(metadata)\"\n ></pry-icon>\n </button>\n }\n </ng-container>\n </ng-container>\n </div>\n </li>\n }\n </ul>\n </div>\n}\n\n<ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <form class=\"o-form -border-top\" [formGroup]=\"form\" (ngSubmit)=\"addDatasetMetadata()\">\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.action.editProfil' | i18n }}</legend>\n\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label for=\"metadata\" id=\"metadata-label\" class=\"a-label\">Data</label>\n <pry-select\n id=\"metadata\"\n class=\"o-metadata-editor\"\n formControlName=\"metadata\"\n [items]=\"availableMetadata$ | async\"\n (ngModelChange)=\"onMetaChange($event)\"\n [isForm]=\"true\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('metadata')?.invalid ? 'metadata-label metadata-error' : 'metadata-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('metadata')?.invalid\"\n >\n </pry-select>\n <label\n *ngIf=\"isSubmitted && form.get('metadata')?.invalid\"\n id=\"metadata-error\"\n for=\"metadata\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n </div>\n\n <ng-container *ngIf=\"form.value.metadata\">\n <ng-container *ngIf=\"form.value['metadata']['type'] === 'DATE'; else inputList\">\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label id=\"form_date-label\" for=\"form_date\" class=\"a-label\">\n {{ '@pry.action.selectDate' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"form_date\"\n type=\"date\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('value')?.invalid ? 'form-date-label form-date-error' : 'form-date-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('value')?.invalid\"\n required\n />\n <label\n *ngIf=\"isSubmitted && form.get('value')?.invalid\"\n id=\"form_date-error\"\n for=\"form_date\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n </div>\n </ng-container>\n\n <ng-template #inputList>\n <ng-container *ngIf=\"form.value['metadata']['type'] === 'LIST'; else inputText\">\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label id=\"list-label\" class=\"a-label\" for=\"list\">{{ '@pry.action.choiceInList' | i18n }}</label>\n <pry-select\n id=\"list\"\n class=\"o-metadata-editor\"\n formControlName=\"value\"\n [items]=\"form.value['metadata']['allowedValues']\"\n [isForm]=\"true\"\n aria-labelledby=\"list-label\"\n ></pry-select>\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template #inputText>\n <div class=\"m-form-label-field\">\n <label id=\"text-label\" class=\"a-label\" for=\"text\">\n {{ '@pry.action.text' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"text\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('value')?.invalid ? 'text-label text-error' : 'text-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('value')?.invalid\"\n required\n />\n <label\n *ngIf=\"isSubmitted && form.get('value')?.invalid\"\n id=\"test-error\"\n for=\"text\"\n class=\"a-label a-label--help -error\"\n >\n <span *ngIf=\"form.get('value')?.hasError('required')\">{{ '@pry.admin.required' | i18n }}</span>\n <ng-container *ngIf=\"form.get('value')?.hasError('pattern')\">\n <span *ngIf=\"form.value['metadata']['type'] === 'DOUBLE'\">\n {{ '@pry.admin.environment.formatDouble' | i18n }}\n </span>\n <span *ngIf=\"form.value['metadata']['type'] === 'INTEGER'\">\n {{ '@pry.admin.environment.formatInt' | i18n }}\n </span>\n </ng-container>\n </label>\n </div>\n </ng-template>\n </ng-container>\n </fieldset>\n\n <div class=\"m-btn-group -end\">\n <button type=\"submit\" class=\"a-btn a-btn--primary\">\n {{ (isModification ? '@pry.action.editMetadata' : '@pry.action.addMetadata') | i18n }}\n </button>\n </div>\n </form>\n</ng-container>\n" }]
139
+ args: [{ selector: 'pry-metadata-editor', template: "<pry-metadata-editor-css></pry-metadata-editor-css>\n@for (groupedMetadatas of _metadataGroupedByDef$ | async; track groupedMetadatas.metadataDef.id) {\n <div class=\"o-tabs__panel__content__actions\">\n <div class=\"o-tabs__panel__content__actions__def\">\n <span class=\"o-tabs__panel__content__actions__text__label\">{{ groupedMetadatas.metadataDef.name }}</span>\n <div class=\"o-tabs__panel__content__actions__buttons\">\n @if (!groupedMetadatas.metadataDef.readOnly) {\n <ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">\n {{ '@pry.action.delete' | i18n }} {{ groupedMetadatas.metadataDef.name }}\n </span>\n <pry-icon\n class=\"delete-icon\"\n iconSvg=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"removeMetadata(groupedMetadatas.metadataDef)\"\n ></pry-icon>\n </button>\n </ng-container>\n }\n </div>\n </div>\n <ul>\n @for (metadata of groupedMetadatas.metadata; track metadata.value; let i = $index) {\n <li class=\"o-tabs__panel__content__actions__def\">\n <div class=\"o-tabs__panel__content__actions__text\">\n <span class=\"o-tabs__panel__content__actions__text__value\">{{ metadata.value }}</span>\n </div>\n <div class=\"o-tabs__panel__content__actions__buttons\">\n @if (!metaDefinition(metadata).readOnly) {\n <ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">\n {{ '@pry.action.edit' | i18n }} {{ metaDefinition(metadata).name }}\n </span>\n <pry-icon\n class=\"edit-icon\"\n iconSvg=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"editMetadata(metadata)\"\n ></pry-icon>\n </button>\n @if ((_type$ | async) === 'user') {\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">\n {{ '@pry.action.delete' | i18n }} {{ groupedMetadatas.metadataDef.name }}\n </span>\n <pry-icon\n class=\"delete-icon\"\n iconSvg=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"removeMetadataValue(metadata)\"\n ></pry-icon>\n </button>\n }\n </ng-container>\n }\n </div>\n </li>\n }\n </ul>\n </div>\n}\n\n<ng-container *pryAccess=\"{ module: 'admin', page: 'dataset', action: 'write' }\">\n <form class=\"o-form -border-top\" [formGroup]=\"form\" (ngSubmit)=\"addDatasetMetadata()\">\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.action.editProfil' | i18n }}</legend>\n\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label for=\"metadata\" id=\"metadata-label\" class=\"a-label\">Data</label>\n <pry-select\n id=\"metadata\"\n class=\"o-metadata-editor\"\n formControlName=\"metadata\"\n [items]=\"availableMetadata$ | async\"\n (ngModelChange)=\"onMetaChange($event)\"\n [isForm]=\"true\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('metadata')?.invalid ? 'metadata-label metadata-error' : 'metadata-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('metadata')?.invalid\"\n >\n </pry-select>\n @if (isSubmitted && form.get('metadata')?.invalid) {\n <label\n id=\"metadata-error\"\n for=\"metadata\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n\n @if (form.value.metadata) {\n @if (form.value['metadata']['type'] === 'DATE') {\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label id=\"form_date-label\" for=\"form_date\" class=\"a-label\">\n {{ '@pry.action.selectDate' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"form_date\"\n type=\"date\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('value')?.invalid ? 'form-date-label form-date-error' : 'form-date-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('value')?.invalid\"\n required\n />\n @if (isSubmitted && form.get('value')?.invalid) {\n <label\n id=\"form_date-error\"\n for=\"form_date\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n } @else {\n @if (form.value['metadata']['type'] === 'LIST') {\n <div class=\"m-form-label-field o-metadata-editor__container\">\n <label id=\"list-label\" class=\"a-label\" for=\"list\">{{ '@pry.action.choiceInList' | i18n }}</label>\n <pry-select\n id=\"list\"\n class=\"o-metadata-editor\"\n formControlName=\"value\"\n [items]=\"form.value['metadata']['allowedValues']\"\n [isForm]=\"true\"\n aria-labelledby=\"list-label\"\n ></pry-select>\n </div>\n } @else {\n <div class=\"m-form-label-field\">\n <label id=\"text-label\" class=\"a-label\" for=\"text\">\n {{ '@pry.action.text' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"text\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && form.get('value')?.invalid ? 'text-label text-error' : 'text-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && form.get('value')?.invalid\"\n required\n />\n @if (isSubmitted && form.get('value')?.invalid) {\n <label\n id=\"test-error\"\n for=\"text\"\n class=\"a-label a-label--help -error\"\n >\n @if (form.get('value')?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (form.get('value')?.hasError('pattern')) {\n @if (form.value['metadata']['type'] === 'DOUBLE') {\n <span>\n {{ '@pry.admin.environment.formatDouble' | i18n }}\n </span>\n }\n @if (form.value['metadata']['type'] === 'INTEGER') {\n <span>\n {{ '@pry.admin.environment.formatInt' | i18n }}\n </span>\n }\n }\n </label>\n }\n </div>\n }\n }\n }\n </fieldset>\n\n <div class=\"m-btn-group -end\">\n <button type=\"submit\" class=\"a-btn a-btn--primary\">\n {{ (isModification ? '@pry.action.editMetadata' : '@pry.action.addMetadata') | i18n }}\n </button>\n </div>\n </form>\n</ng-container>\n" }]
140
140
  }], ctorParameters: () => [{ type: i1.Store }, { type: i2.FormBuilder }], propDecorators: { isModification: [{
141
141
  type: Input
142
142
  }], addMeta: [{
@@ -150,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
150
150
  }], metadata: [{
151
151
  type: Input
152
152
  }] } });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvbWV0YWRhdGEtZWRpdG9yL21ldGFkYXRhLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL21ldGFkYXRhLWVkaXRvci9tZXRhZGF0YS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBMEMsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7O0FBTTlELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLGVBQWUsQ0FBQztBQUN0RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyx5QkFBeUIsQ0FBQztBQU0vRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsd0JBQXdCO0lBYXRFLElBQWEsSUFBSSxDQUFDLElBQXFCO1FBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFhLFFBQVEsQ0FBQyxRQUEwQztRQUM5RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxR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Q0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQzs4R0EzSVUsMEJBQTBCO2tHQUExQiwwQkFBMEIscVBDbkJ2QyxndFFBNkxBOzsyRkQxS2EsMEJBQTBCO2tCQUp0QyxTQUFTOytCQUNFLHFCQUFxQjtvR0FPdEIsY0FBYztzQkFBdEIsS0FBSztnQkFJSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUUsUUFBUTtzQkFBaEIsS0FBSztnQkFFTyxJQUFJO3NCQUFoQixLQUFLO2dCQUlPLFFBQVE7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgSU1ldGFkYXRhLCBNZXRhZGF0YVVzZXIsIE1ldGFkYXRhVmFsdWUsIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWV0YWRhdGFBY3Rpb25zIH0gZnJvbSAnLi9zdG9yZS9tZXRhZGF0YS5hY3Rpb24nO1xuaW1wb3J0IHsgTWV0YWRhdGFTZWxlY3RvcnMgfSBmcm9tICcuL3N0b3JlL21ldGFkYXRhLnNlbGVjdG9yJztcblxuZXhwb3J0IHR5cGUgTWV0YUV2ZW50VHlwZSA9IHsgaWQ6IHN0cmluZzsgbWV0YWRhdGFJZDogc3RyaW5nOyB2YWx1ZT86IHN0cmluZzsgcHJldmlvdXNWYWx1ZT86IHN0cmluZyB9O1xuXG50eXBlIEdyb3VwZWRNZXRhZGF0YXNCeURlZiA9IHsgbWV0YWRhdGFEZWY6IElNZXRhZGF0YTsgbWV0YWRhdGE6IChNZXRhZGF0YVZhbHVlIHwgTWV0YWRhdGFVc2VyKVtdIH07XG5cbmV4cG9ydCBjb25zdCBJTlRFR0VSX1JFR0VYUF9QQVRURVJOID0gJ15bKy1dP1swLTldKiQnO1xuZXhwb3J0IGNvbnN0IERPVUJMRV9SRUdFWFBfUEFUVEVSTiA9ICdbKy1dPyhbMC05XSpbLl0pP1swLTldKyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1tZXRhZGF0YS1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJ21ldGFkYXRhLWVkaXRvci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJ5TWV0YWRhdGFFZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUge1xuICBfbWV0YWRhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDwoTWV0YWRhdGFWYWx1ZSB8IE1ldGFkYXRhVXNlcilbXT4oW10pO1xuICBmb3JtOiBGb3JtR3JvdXA7XG4gIGlzU3VibWl0dGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzTW9kaWZpY2F0aW9uID0gZmFsc2U7XG4gIG1ldGFkYXRhRGVmcyQ6IE9ic2VydmFibGU8SU1ldGFkYXRhW10+O1xuICBhdmFpbGFibGVNZXRhZGF0YSQ6IE9ic2VydmFibGU8SU1ldGFkYXRhW10+O1xuICBfdHlwZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdtZXRhJyB8ICd1c2VyJz4oJ21ldGEnKTtcbiAgQE91dHB1dCgpIGFkZE1ldGEgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFFdmVudFR5cGU+KCk7XG4gIEBPdXRwdXQoKSByZW1vdmVNZXRhID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhRXZlbnRUeXBlPigpO1xuICB1c2VyUHJvZmlsZURlZnMkOiBPYnNlcnZhYmxlPEFycmF5PElNZXRhZGF0YT4gfCB1bmRlZmluZWQ+O1xuICBASW5wdXQoKSB0YXJnZXRJZCA9ICcnO1xuXG4gIEBJbnB1dCgpIHNldCB0eXBlKHR5cGU6ICdtZXRhJyB8ICd1c2VyJykge1xuICAgIHRoaXMuX3R5cGUkLm5leHQodHlwZSk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgbWV0YWRhdGEobWV0YWRhdGE6IE1ldGFkYXRhVmFsdWVbXSB8IE1ldGFkYXRhVXNlcltdKSB7XG4gICAgdGhpcy5fbWV0YWRhdGEkLm5leHQobWV0YWRhdGEpO1xuICB9XG5cbiAgX21ldGFkYXRhR3JvdXBlZEJ5RGVmJDogT2JzZXJ2YWJsZTxHcm91cGVkTWV0YWRhdGFzQnlEZWZbXT4gPSB0aGlzLl9tZXRhZGF0YSQucGlwZShcbiAgICBtYXAoKG1ldGFkYXRhcykgPT4ge1xuICAgICAgY29uc3QgbWV0YWRhdGFHcm91cGVkQnlEZWY6IEdyb3VwZWRNZXRhZGF0YXNCeURlZltdID0gW107XG4gICAgICBtZXRhZGF0YXMuZm9yRWFjaCgobWV0YSkgPT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YUdyb3VwID0gbWV0YWRhdGFHcm91cGVkQnlEZWYuZmluZCgodmFsKSA9PiB2YWwubWV0YWRhdGFEZWYuaWQgPT09IHRoaXMubWV0YURlZmluaXRpb24obWV0YSkuaWQpO1xuICAgICAgICBpZiAobWV0YWRhdGFHcm91cCkge1xuICAgICAgICAgIG1ldGFkYXRhR3JvdXAubWV0YWRhdGEucHVzaChtZXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtZXRhZGF0YUdyb3VwZWRCeURlZi5wdXNoKHsgbWV0YWRhdGFEZWY6IHRoaXMubWV0YURlZmluaXRpb24obWV0YSksIG1ldGFkYXRhOiBbbWV0YV0gfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbWV0YWRhdGFHcm91cGVkQnlEZWYuc29ydCgoZ3JvdXAxLCBncm91cDIpID0+IGdyb3VwMS5tZXRhZGF0YURlZi5uYW1lLmxvY2FsZUNvbXBhcmUoZ3JvdXAyLm1ldGFkYXRhRGVmLm5hbWUpKTtcbiAgICAgIHJldHVybiBtZXRhZGF0YUdyb3VwZWRCeURlZjtcbiAgICB9KVxuICApO1xuXG4gIF9wcmV2aW91c1ZhbHVlTWV0YWRhdGE6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlclxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBtZXRhZGF0YTogW3t9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgdmFsdWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihJTlRFR0VSX1JFR0VYUF9QQVRURVJOKV1dXG4gICAgfSk7XG5cbiAgICB0aGlzLm1ldGFkYXRhRGVmcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChNZXRhZGF0YVNlbGVjdG9ycy5tZXRhZGF0YSk7XG4gICAgdGhpcy51c2VyUHJvZmlsZURlZnMkID0gdGhpcy5zdG9yZS5zZWxlY3QoTWV0YWRhdGFTZWxlY3RvcnMudXNlclByb2ZpbGUpO1xuICAgIHRoaXMuYXZhaWxhYmxlTWV0YWRhdGEkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLl90eXBlJCxcbiAgICAgIHRoaXMuX21ldGFkYXRhJCxcbiAgICAgIHRoaXMubWV0YWRhdGFEZWZzJCxcbiAgICAgIHRoaXMudXNlclByb2ZpbGVEZWZzJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFt0eXBlLCBtZXRhZGF0YSwgbWV0YURlZnMsIHVzZXJQcm9maWxlRGVmc10pID0+IHtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdtZXRhJykge1xuICAgICAgICAgIGxldCBkYXRhc2V0TWV0YWRhdGFJZHMgPSBtZXRhZGF0YT8ubWFwKCh1KSA9PiAodSBhcyBNZXRhZGF0YVZhbHVlKS5tZXRhZGF0YURlZi5pZCk7XG4gICAgICAgICAgcmV0dXJuIG1ldGFEZWZzLmZpbHRlcigobWV0YSkgPT4gIWRhdGFzZXRNZXRhZGF0YUlkcz8uaW5jbHVkZXMobWV0YS5pZCkgJiYgIW1ldGEucmVhZE9ubHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB1c2VyUHJvZmlsZURlZnMgPz8gW107XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmF2YWlsYWJsZU1ldGFkYXRhJC5zdWJzY3JpYmUoKG1ldGEpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIG1ldGFkYXRhOiBtZXRhWzBdXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9uTWV0YUNoYW5nZShtZXRhWzBdKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG9uTWV0YUNoYW5nZShtZXRhZGF0YTogSU1ldGFkYXRhKSB7XG4gICAgaWYgKG1ldGFkYXRhKSB7XG4gICAgICBpZiAobWV0YWRhdGEudHlwZSA9PT0gJ0lOVEVHRVInKSB7XG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1sndmFsdWUnXS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oSU5URUdFUl9SRUdFWFBfUEFUVEVSTildKTtcbiAgICAgIH0gZWxzZSBpZiAobWV0YWRhdGEudHlwZSA9PT0gJ0RPVUJMRScpIHtcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzWyd2YWx1ZSddLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihET1VCTEVfUkVHRVhQX1BBVFRFUk4pXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbJ3ZhbHVlJ10uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgICAgfVxuICAgICAgdGhpcy5pc01vZGlmaWNhdGlvbiA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNNb2RpZmljYXRpb24gPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyB2YWx1ZTogJycgfSk7XG4gICAgdGhpcy5fcHJldmlvdXNWYWx1ZU1ldGFkYXRhID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZWRpdE1ldGFkYXRhKGN1cnJlbnRNZXRhZGF0YTogTWV0YWRhdGFWYWx1ZSB8IE1ldGFkYXRhVXNlcikge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTWV0YWRhdGFBY3Rpb25zLmlzRWRpdGFibGUoeyBlZGl0YWJsZTogdHJ1ZSB9KSk7XG4gICAgbGV0IGRhdGFzZXRNZXRhZGF0YURlZiA9IHRoaXMubWV0YURlZmluaXRpb24oY3VycmVudE1ldGFkYXRhKTtcbiAgICB0aGlzLm9uTWV0YUNoYW5nZShkYXRhc2V0TWV0YWRhdGFEZWYpO1xuXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgbWV0YWRhdGE6IGRhdGFzZXRNZXRhZGF0YURlZixcbiAgICAgIHZhbHVlOiBjdXJyZW50TWV0YWRhdGEudmFsdWVcbiAgICB9KTtcbiAgICB0aGlzLl9wcmV2aW91c1ZhbHVlTWV0YWRhdGEgPSBjdXJyZW50TWV0YWRhdGEudmFsdWU7XG4gIH1cblxuICBtZXRhRGVmaW5pdGlvbihtZXRhZGF0YTogTWV0YWRhdGFVc2VyIHwgTWV0YWRhdGFWYWx1ZSkge1xuICAgIHJldHVybiB0aGlzLl90eXBlJC5nZXRWYWx1ZSgpID09PSAndXNlcidcbiAgICAgID8gKG1ldGFkYXRhIGFzIE1ldGFkYXRhVXNlcikudXNlclByb2ZpbGVcbiAgICAgIDogKG1ldGFkYXRhIGFzIE1ldGFkYXRhVmFsdWUpLm1ldGFkYXRhRGVmO1xuICB9XG5cbiAgcmVtb3ZlTWV0YWRhdGEobWV0YWRhdGFEZWY6IElNZXRhZGF0YSkge1xuICAgIHRoaXMucmVtb3ZlTWV0YS5lbWl0KHsgaWQ6IHRoaXMudGFyZ2V0SWQsIG1ldGFkYXRhSWQ6IG1ldGFkYXRhRGVmLmlkIH0pO1xuICB9XG5cbiAgcmVtb3ZlTWV0YWRhdGFWYWx1ZShtZXRhZGF0YVRvUmVtb3ZlOiBNZXRhZGF0YVZhbHVlIHwgTWV0YWRhdGFVc2VyKSB7XG4gICAgLy8gcmVtb3Zpbmcgb25lIHZhbHVlIGlzIGxpa2UgZWRpdGluZyBjdXJyZW50IHdpdGhvdXQgbmV3IHZhbHVlXG4gICAgdGhpcy5hZGRNZXRhLmVtaXQoe1xuICAgICAgaWQ6IHRoaXMudGFyZ2V0SWQsXG4gICAgICBtZXRhZGF0YUlkOiB0aGlzLm1ldGFEZWZpbml0aW9uKG1ldGFkYXRhVG9SZW1vdmUpLmlkLFxuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG1ldGFkYXRhVG9SZW1vdmUudmFsdWVcbiAgICB9KTtcbiAgfVxuXG4gIGFkZERhdGFzZXRNZXRhZGF0YSgpIHtcbiAgICB0aGlzLmlzU3VibWl0dGVkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmlzU3VibWl0dGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmFkZE1ldGEuZW1pdCh7XG4gICAgICAgIGlkOiB0aGlzLnRhcmdldElkLFxuICAgICAgICBtZXRhZGF0YUlkOiB0aGlzLmZvcm0udmFsdWVbJ21ldGFkYXRhJ11bJ2lkJ10sXG4gICAgICAgIHZhbHVlOiB0aGlzLmZvcm0udmFsdWVbJ3ZhbHVlJ10sXG4gICAgICAgIHByZXZpb3VzVmFsdWU6IHRoaXMuX3ByZXZpb3VzVmFsdWVNZXRhZGF0YVxuICAgICAgfSk7XG4gICAgICB0aGlzLl9wcmV2aW91c1ZhbHVlTWV0YWRhdGEgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iLCI8cHJ5LW1ldGFkYXRhLWVkaXRvci1jc3M+PC9wcnktbWV0YWRhdGEtZWRpdG9yLWNzcz5cbkBmb3IgKGdyb3VwZWRNZXRhZGF0YXMgb2YgX21ldGFkYXRhR3JvdXBlZEJ5RGVmJCB8IGFzeW5jOyB0cmFjayBncm91cGVkTWV0YWRhdGFzLm1ldGFkYXRhRGVmLmlkKSB7XG4gIDxkaXYgY2xhc3M9XCJvLXRhYnNfX3BhbmVsX19jb250ZW50X19hY3Rpb25zXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tdGFic19fcGFuZWxfX2NvbnRlbnRfX2FjdGlvbnNfX2RlZlwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJvLXRhYnNfX3BhbmVsX19jb250ZW50X19hY3Rpb25zX190ZXh0X19sYWJlbFwiPnt7IGdyb3VwZWRNZXRhZGF0YXMubWV0YWRhdGFEZWYubmFtZSB9fTwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLXRhYnNfX3BhbmVsX19jb250ZW50X19hY3Rpb25zX19idXR0b25zXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JvdXBlZE1ldGFkYXRhcy5tZXRhZGF0YURlZi5yZWFkT25seVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnYWRtaW4nLCBwYWdlOiAnZGF0YXNldCcsIGFjdGlvbjogJ3dyaXRlJyB9XCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIiBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAge3sgJ0BwcnkuYWN0aW9uLmRlbGV0ZScgfCBpMThuIH19IHt7IGdyb3VwZWRNZXRhZGF0YXMubWV0YWRhdGFEZWYubmFtZSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxwcnktaWNvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGVsZXRlLWljb25cIlxuICAgICAgICAgICAgICAgIGljb25Tdmc9XCJkZWxldGVcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZU1ldGFkYXRhKGdyb3VwZWRNZXRhZGF0YXMubWV0YWRhdGFEZWYpXCJcbiAgICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8dWw+XG4gICAgICBAZm9yIChtZXRhZGF0YSBvZiBncm91cGVkTWV0YWRhdGFzLm1ldGFkYXRhOyB0cmFjayBtZXRhZGF0YS52YWx1ZTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgPGxpIGNsYXNzPVwiby10YWJzX19wYW5lbF9fY29udGVudF9fYWN0aW9uc19fZGVmXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8tdGFic19fcGFuZWxfX2NvbnRlbnRfX2FjdGlvbnNfX3RleHRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiby10YWJzX19wYW5lbF9fY29udGVudF9fYWN0aW9uc19fdGV4dF9fdmFsdWVcIj57eyBtZXRhZGF0YS52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby10YWJzX19wYW5lbF9fY29udGVudF9fYWN0aW9uc19fYnV0dG9uc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtZXRhRGVmaW5pdGlvbihtZXRhZGF0YSkucmVhZE9ubHlcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdhZG1pbicsIHBhZ2U6ICdkYXRhc2V0JywgYWN0aW9uOiAnd3JpdGUnIH1cIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIiBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQHByeS5hY3Rpb24uZWRpdCcgfCBpMThuIH19IHt7IG1ldGFEZWZpbml0aW9uKG1ldGFkYXRhKS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0LWljb25cIlxuICAgICAgICAgICAgICAgICAgICBpY29uU3ZnPVwiZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdE1ldGFkYXRhKG1ldGFkYXRhKVwiXG4gICAgICAgICAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICBAaWYgKChfdHlwZSQgfCBhc3luYykgPT09ICd1c2VyJykge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCIgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdAcHJ5LmFjdGlvbi5kZWxldGUnIHwgaTE4biB9fSB7eyBncm91cGVkTWV0YWRhdGFzLm1ldGFkYXRhRGVmLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGVsZXRlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU3ZnPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVNZXRhZGF0YVZhbHVlKG1ldGFkYXRhKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgIH1cbiAgICA8L3VsPlxuICA8L2Rpdj5cbn1cblxuPG5nLWNvbnRhaW5lciAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdhZG1pbicsIHBhZ2U6ICdkYXRhc2V0JywgYWN0aW9uOiAnd3JpdGUnIH1cIj5cbiAgPGZvcm0gY2xhc3M9XCJvLWZvcm0gLWJvcmRlci10b3BcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwiYWRkRGF0YXNldE1ldGFkYXRhKClcIj5cbiAgICA8ZmllbGRzZXQ+XG4gICAgICA8bGVnZW5kIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5hY3Rpb24uZWRpdFByb2ZpbCcgfCBpMThuIH19PC9sZWdlbmQ+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgby1tZXRhZGF0YS1lZGl0b3JfX2NvbnRhaW5lclwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwibWV0YWRhdGFcIiBpZD1cIm1ldGFkYXRhLWxhYmVsXCIgY2xhc3M9XCJhLWxhYmVsXCI+RGF0YTwvbGFiZWw+XG4gICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgaWQ9XCJtZXRhZGF0YVwiXG4gICAgICAgICAgY2xhc3M9XCJvLW1ldGFkYXRhLWVkaXRvclwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWV0YWRhdGFcIlxuICAgICAgICAgIFtpdGVtc109XCJhdmFpbGFibGVNZXRhZGF0YSQgfCBhc3luY1wiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25NZXRhQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFtpc0Zvcm1dPVwidHJ1ZVwiXG4gICAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIlxuICAgICAgICAgICAgaXNTdWJtaXR0ZWQgJiYgZm9ybS5nZXQoJ21ldGFkYXRhJyk/LmludmFsaWQgPyAnbWV0YWRhdGEtbGFiZWwgbWV0YWRhdGEtZXJyb3InIDogJ21ldGFkYXRhLWxhYmVsJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImlzU3VibWl0dGVkICYmIGZvcm0uZ2V0KCdtZXRhZGF0YScpPy5pbnZhbGlkXCJcbiAgICAgICAgPlxuICAgICAgICA8L3ByeS1zZWxlY3Q+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICpuZ0lmPVwiaXNTdWJtaXR0ZWQgJiYgZm9ybS5nZXQoJ21ldGFkYXRhJyk/LmludmFsaWRcIlxuICAgICAgICAgIGlkPVwibWV0YWRhdGEtZXJyb3JcIlxuICAgICAgICAgIGZvcj1cIm1ldGFkYXRhXCJcbiAgICAgICAgICBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtLnZhbHVlLm1ldGFkYXRhXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtLnZhbHVlWydtZXRhZGF0YSddWyd0eXBlJ10gPT09ICdEQVRFJzsgZWxzZSBpbnB1dExpc3RcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIG8tbWV0YWRhdGEtZWRpdG9yX19jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBpZD1cImZvcm1fZGF0ZS1sYWJlbFwiIGZvcj1cImZvcm1fZGF0ZVwiIGNsYXNzPVwiYS1sYWJlbFwiPlxuICAgICAgICAgICAgICB7eyAnQHByeS5hY3Rpb24uc2VsZWN0RGF0ZScgfCBpMThuIH19ICpcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPih7eyAnQHByeS5hZG1pbi5yZXF1aXJlZCcgfCBpMThuIH19KTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgaWQ9XCJmb3JtX2RhdGVcIlxuICAgICAgICAgICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiXG4gICAgICAgICAgICAgICAgaXNTdWJtaXR0ZWQgJiYgZm9ybS5nZXQoJ3ZhbHVlJyk/LmludmFsaWQgPyAnZm9ybS1kYXRlLWxhYmVsIGZvcm0tZGF0ZS1lcnJvcicgOiAnZm9ybS1kYXRlLWxhYmVsJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaXNTdWJtaXR0ZWQgJiYgZm9ybS5nZXQoJ3ZhbHVlJyk/LmludmFsaWRcIlxuICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAqbmdJZj1cImlzU3VibWl0dGVkICYmIGZvcm0uZ2V0KCd2YWx1ZScpPy5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgaWQ9XCJmb3JtX2RhdGUtZXJyb3JcIlxuICAgICAgICAgICAgICBmb3I9XCJmb3JtX2RhdGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnQHByeS5hZG1pbi5yZXF1aXJlZCcgfCBpMThuIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2lucHV0TGlzdD5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybS52YWx1ZVsnbWV0YWRhdGEnXVsndHlwZSddID09PSAnTElTVCc7IGVsc2UgaW5wdXRUZXh0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkIG8tbWV0YWRhdGEtZWRpdG9yX19jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGlkPVwibGlzdC1sYWJlbFwiIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImxpc3RcIj57eyAnQHByeS5hY3Rpb24uY2hvaWNlSW5MaXN0JyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgIGlkPVwibGlzdFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJvLW1ldGFkYXRhLWVkaXRvclwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgIFtpdGVtc109XCJmb3JtLnZhbHVlWydtZXRhZGF0YSddWydhbGxvd2VkVmFsdWVzJ11cIlxuICAgICAgICAgICAgICAgIFtpc0Zvcm1dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwibGlzdC1sYWJlbFwiXG4gICAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2lucHV0VGV4dD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgaWQ9XCJ0ZXh0LWxhYmVsXCIgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwidGV4dFwiPlxuICAgICAgICAgICAgICB7eyAnQHByeS5hY3Rpb24udGV4dCcgfCBpMThuIH19ICpcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPih7eyAnQHByeS5hZG1pbi5yZXF1aXJlZCcgfCBpMThuIH19KTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgaWQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIlxuICAgICAgICAgICAgICAgIGlzU3VibWl0dGVkICYmIGZvcm0uZ2V0KCd2YWx1ZScpPy5pbnZhbGlkID8gJ3RleHQtbGFiZWwgdGV4dC1lcnJvcicgOiAndGV4dC1sYWJlbCdcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImlzU3VibWl0dGVkICYmIGZvcm0uZ2V0KCd2YWx1ZScpPy5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgKm5nSWY9XCJpc1N1Ym1pdHRlZCAmJiBmb3JtLmdldCgndmFsdWUnKT8uaW52YWxpZFwiXG4gICAgICAgICAgICAgIGlkPVwidGVzdC1lcnJvclwiXG4gICAgICAgICAgICAgIGZvcj1cInRleHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZvcm0uZ2V0KCd2YWx1ZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7ICdAcHJ5LmFkbWluLnJlcXVpcmVkJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtLmdldCgndmFsdWUnKT8uaGFzRXJyb3IoJ3BhdHRlcm4nKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZm9ybS52YWx1ZVsnbWV0YWRhdGEnXVsndHlwZSddID09PSAnRE9VQkxFJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4uZW52aXJvbm1lbnQuZm9ybWF0RG91YmxlJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmb3JtLnZhbHVlWydtZXRhZGF0YSddWyd0eXBlJ10gPT09ICdJTlRFR0VSJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4uZW52aXJvbm1lbnQuZm9ybWF0SW50JyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZmllbGRzZXQ+XG5cbiAgICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXAgLWVuZFwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiPlxuICAgICAgICB7eyAoaXNNb2RpZmljYXRpb24gPyAnQHByeS5hY3Rpb24uZWRpdE1ldGFkYXRhJyA6ICdAcHJ5LmFjdGlvbi5hZGRNZXRhZGF0YScpIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvbmctY29udGFpbmVyPlxuIl19
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvbWV0YWRhdGEtZWRpdG9yL21ldGFkYXRhLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL21ldGFkYXRhLWVkaXRvci9tZXRhZGF0YS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBMEMsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7O0FBTTlELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLGVBQWUsQ0FBQztBQUN0RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyx5QkFBeUIsQ0FBQztBQU0vRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsd0JBQXdCO0lBYXRFLElBQWEsSUFBSSxDQUFDLElBQXFCO1FBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFhLFFBQVEsQ0FBQyxRQUEwQztRQUM5RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxR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Q0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQzs4R0EzSVUsMEJBQTBCO2tHQUExQiwwQkFBMEIscVBDbkJ2QyxtclFBa01BOzsyRkQvS2EsMEJBQTBCO2tCQUp0QyxTQUFTOytCQUNFLHFCQUFxQjtvR0FPdEIsY0FBYztzQkFBdEIsS0FBSztnQkFJSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUUsUUFBUTtzQkFBaEIsS0FBSztnQkFFTyxJQUFJO3NCQUFoQixLQUFLO2dCQUlPLFFBQVE7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgSU1ldGFkYXRhLCBNZXRhZGF0YVVzZXIsIE1ldGFkYXRhVmFsdWUsIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWV0YWRhdGFBY3Rpb25zIH0gZnJvbSAnLi9zdG9yZS9tZXRhZGF0YS5hY3Rpb24nO1xuaW1wb3J0IHsgTWV0YWRhdGFTZWxlY3RvcnMgfSBmcm9tICcuL3N0b3JlL21ldGFkYXRhLnNlbGVjdG9yJztcblxuZXhwb3J0IHR5cGUgTWV0YUV2ZW50VHlwZSA9IHsgaWQ6IHN0cmluZzsgbWV0YWRhdGFJZDogc3RyaW5nOyB2YWx1ZT86IHN0cmluZzsgcHJldmlvdXNWYWx1ZT86IHN0cmluZyB9O1xuXG50eXBlIEdyb3VwZWRNZXRhZGF0YXNCeURlZiA9IHsgbWV0YWRhdGFEZWY6IElNZXRhZGF0YTsgbWV0YWRhdGE6IChNZXRhZGF0YVZhbHVlIHwgTWV0YWRhdGFVc2VyKVtdIH07XG5cbmV4cG9ydCBjb25zdCBJTlRFR0VSX1JFR0VYUF9QQVRURVJOID0gJ15bKy1dP1swLTldKiQnO1xuZXhwb3J0IGNvbnN0IERPVUJMRV9SRUdFWFBfUEFUVEVSTiA9ICdbKy1dPyhbMC05XSpbLl0pP1swLTldKyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1tZXRhZGF0YS1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJ21ldGFkYXRhLWVkaXRvci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJ5TWV0YWRhdGFFZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUge1xuICBfbWV0YWRhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDwoTWV0YWRhdGFWYWx1ZSB8IE1ldGFkYXRhVXNlcilbXT4oW10pO1xuICBmb3JtOiBGb3JtR3JvdXA7XG4gIGlzU3VibWl0dGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzTW9kaWZpY2F0aW9uID0gZmFsc2U7XG4gIG1ldGFkYXRhRGVmcyQ6IE9ic2VydmFibGU8SU1ldGFkYXRhW10+O1xuICBhdmFpbGFibGVNZXRhZGF0YSQ6IE9ic2VydmFibGU8SU1ldGFkYXRhW10+O1xuICBfdHlwZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdtZXRhJyB8ICd1c2VyJz4oJ21ldGEnKTtcbiAgQE91dHB1dCgpIGFkZE1ldGEgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFFdmVudFR5cGU+KCk7XG4gIEBPdXRwdXQoKSByZW1vdmVNZXRhID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhRXZlbnRUeXBlPigpO1xuICB1c2VyUHJvZmlsZURlZnMkOiBPYnNlcnZhYmxlPEFycmF5PElNZXRhZGF0YT4gfCB1bmRlZmluZWQ+O1xuICBASW5wdXQoKSB0YXJnZXRJZCA9ICcnO1xuXG4gIEBJbnB1dCgpIHNldCB0eXBlKHR5cGU6ICdtZXRhJyB8ICd1c2VyJykge1xuICAgIHRoaXMuX3R5cGUkLm5leHQodHlwZSk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgbWV0YWRhdGEobWV0YWRhdGE6IE1ldGFkYXRhVmFsdWVbXSB8IE1ldGFkYXRhVXNlcltdKSB7XG4gICAgdGhpcy5fbWV0YWRhdGEkLm5leHQobWV0YWRhdGEpO1xuICB9XG5cbiAgX21ldGFkYXRhR3JvdXBlZEJ5RGVmJDogT2JzZXJ2YWJsZTxHcm91cGVkTWV0YWRhdGFzQnlEZWZbXT4gPSB0aGlzLl9tZXRhZGF0YSQucGlwZShcbiAgICBtYXAoKG1ldGFkYXRhcykgPT4ge1xuICAgICAgY29uc3QgbWV0YWRhdGFHcm91cGVkQnlEZWY6IEdyb3VwZWRNZXRhZGF0YXNCeURlZltdID0gW107XG4gICAgICBtZXRhZGF0YXMuZm9yRWFjaCgobWV0YSkgPT4ge1xuICAgICAgICBjb25zdCBtZXRhZGF0YUdyb3VwID0gbWV0YWRhdGFHcm91cGVkQnlEZWYuZmluZCgodmFsKSA9PiB2YWwubWV0YWRhdGFEZWYuaWQgPT09IHRoaXMubWV0YURlZmluaXRpb24obWV0YSkuaWQpO1xuICAgICAgICBpZiAobWV0YWRhdGFHcm91cCkge1xuICAgICAgICAgIG1ldGFkYXRhR3JvdXAubWV0YWRhdGEucHVzaChtZXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtZXRhZGF0YUdyb3VwZWRCeURlZi5wdXNoKHsgbWV0YWRhdGFEZWY6IHRoaXMubWV0YURlZmluaXRpb24obWV0YSksIG1ldGFkYXRhOiBbbWV0YV0gfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbWV0YWRhdGFHcm91cGVkQnlEZWYuc29ydCgoZ3JvdXAxLCBncm91cDIpID0+IGdyb3VwMS5tZXRhZGF0YURlZi5uYW1lLmxvY2FsZUNvbXBhcmUoZ3JvdXAyLm1ldGFkYXRhRGVmLm5hbWUpKTtcbiAgICAgIHJldHVybiBtZXRhZGF0YUdyb3VwZWRCeURlZjtcbiAgICB9KVxuICApO1xuXG4gIF9wcmV2aW91c1ZhbHVlTWV0YWRhdGE6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlclxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBtZXRhZGF0YTogW3t9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgdmFsdWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihJTlRFR0VSX1JFR0VYUF9QQVRURVJOKV1dXG4gICAgfSk7XG5cbiAgICB0aGlzLm1ldGFkYXRhRGVmcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChNZXRhZGF0YVNlbGVjdG9ycy5tZXRhZGF0YSk7XG4gICAgdGhpcy51c2VyUHJvZmlsZURlZnMkID0gdGhpcy5zdG9yZS5zZWxlY3QoTWV0YWRhdGFTZWxlY3RvcnMudXNlclByb2ZpbGUpO1xuICAgIHRoaXMuYXZhaWxhYmxlTWV0YWRhdGEkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLl90eXBlJCxcbiAgICAgIHRoaXMuX21ldGFkYXRhJCxcbiAgICAgIHRoaXMubWV0YWRhdGFEZWZzJCxcbiAgICAgIHRoaXMudXNlclByb2ZpbGVEZWZzJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFt0eXBlLCBtZXRhZGF0YSwgbWV0YURlZnMsIHVzZXJQcm9maWxlRGVmc10pID0+IHtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdtZXRhJykge1xuICAgICAgICAgIGxldCBkYXRhc2V0TWV0YWRhdGFJZHMgPSBtZXRhZGF0YT8ubWFwKCh1KSA9PiAodSBhcyBNZXRhZGF0YVZhbHVlKS5tZXRhZGF0YURlZi5pZCk7XG4gICAgICAgICAgcmV0dXJuIG1ldGFEZWZzLmZpbHRlcigobWV0YSkgPT4gIWRhdGFzZXRNZXRhZGF0YUlkcz8uaW5jbHVkZXMobWV0YS5pZCkgJiYgIW1ldGEucmVhZE9ubHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB1c2VyUHJvZmlsZURlZnMgPz8gW107XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmF2YWlsYWJsZU1ldGFkYXRhJC5zdWJzY3JpYmUoKG1ldGEpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIG1ldGFkYXRhOiBtZXRhWzBdXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9uTWV0YUNoYW5nZShtZXRhWzBdKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG9uTWV0YUNoYW5nZShtZXRhZGF0YTogSU1ldGFkYXRhKSB7XG4gICAgaWYgKG1ldGFkYXRhKSB7XG4gICAgICBpZiAobWV0YWRhdGEudHlwZSA9PT0gJ0lOVEVHRVInKSB7XG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1sndmFsdWUnXS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oSU5URUdFUl9SRUdFWFBfUEFUVEVSTildKTtcbiAgICAgIH0gZWxzZSBpZiAobWV0YWRhdGEudHlwZSA9PT0gJ0RPVUJMRScpIHtcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzWyd2YWx1ZSddLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihET1VCTEVfUkVHRVhQX1BBVFRFUk4pXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbJ3ZhbHVlJ10uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgICAgfVxuICAgICAgdGhpcy5pc01vZGlmaWNhdGlvbiA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNNb2RpZmljYXRpb24gPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyB2YWx1ZTogJycgfSk7XG4gICAgdGhpcy5fcHJldmlvdXNWYWx1ZU1ldGFkYXRhID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZWRpdE1ldGFkYXRhKGN1cnJlbnRNZXRhZGF0YTogTWV0YWRhdGFWYWx1ZSB8IE1ldGFkYXRhVXNlcikge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goTWV0YWRhdGFBY3Rpb25zLmlzRWRpdGFibGUoeyBlZGl0YWJsZTogdHJ1ZSB9KSk7XG4gICAgbGV0IGRhdGFzZXRNZXRhZGF0YURlZiA9IHRoaXMubWV0YURlZmluaXRpb24oY3VycmVudE1ldGFkYXRhKTtcbiAgICB0aGlzLm9uTWV0YUNoYW5nZShkYXRhc2V0TWV0YWRhdGFEZWYpO1xuXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgbWV0YWRhdGE6IGRhdGFzZXRNZXRhZGF0YURlZixcbiAgICAgIHZhbHVlOiBjdXJyZW50TWV0YWRhdGEudmFsdWVcbiAgICB9KTtcbiAgICB0aGlzLl9wcmV2aW91c1ZhbHVlTWV0YWRhdGEgPSBjdXJyZW50TWV0YWRhdGEudmFsdWU7XG4gIH1cblxuICBtZXRhRGVmaW5pdGlvbihtZXRhZGF0YTogTWV0YWRhdGFVc2VyIHwgTWV0YWRhdGFWYWx1ZSkge1xuICAgIHJldHVybiB0aGlzLl90eXBlJC5nZXRWYWx1ZSgpID09PSAndXNlcidcbiAgICAgID8gKG1ldGFkYXRhIGFzIE1ldGFkYXRhVXNlcikudXNlclByb2ZpbGVcbiAgICAgIDogKG1ldGFkYXRhIGFzIE1ldGFkYXRhVmFsdWUpLm1ldGFkYXRhRGVmO1xuICB9XG5cbiAgcmVtb3ZlTWV0YWRhdGEobWV0YWRhdGFEZWY6IElNZXRhZGF0YSkge1xuICAgIHRoaXMucmVtb3ZlTWV0YS5lbWl0KHsgaWQ6IHRoaXMudGFyZ2V0SWQsIG1ldGFkYXRhSWQ6IG1ldGFkYXRhRGVmLmlkIH0pO1xuICB9XG5cbiAgcmVtb3ZlTWV0YWRhdGFWYWx1ZShtZXRhZGF0YVRvUmVtb3ZlOiBNZXRhZGF0YVZhbHVlIHwgTWV0YWRhdGFVc2VyKSB7XG4gICAgLy8gcmVtb3Zpbmcgb25lIHZhbHVlIGlzIGxpa2UgZWRpdGluZyBjdXJyZW50IHdpdGhvdXQgbmV3IHZhbHVlXG4gICAgdGhpcy5hZGRNZXRhLmVtaXQoe1xuICAgICAgaWQ6IHRoaXMudGFyZ2V0SWQsXG4gICAgICBtZXRhZGF0YUlkOiB0aGlzLm1ldGFEZWZpbml0aW9uKG1ldGFkYXRhVG9SZW1vdmUpLmlkLFxuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG1ldGFkYXRhVG9SZW1vdmUudmFsdWVcbiAgICB9KTtcbiAgfVxuXG4gIGFkZERhdGFzZXRNZXRhZGF0YSgpIHtcbiAgICB0aGlzLmlzU3VibWl0dGVkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmlzU3VibWl0dGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmFkZE1ldGEuZW1pdCh7XG4gICAgICAgIGlkOiB0aGlzLnRhcmdldElkLFxuICAgICAgICBtZXRhZGF0YUlkOiB0aGlzLmZvcm0udmFsdWVbJ21ldGFkYXRhJ11bJ2lkJ10sXG4gICAgICAgIHZhbHVlOiB0aGlzLmZvcm0udmFsdWVbJ3ZhbHVlJ10sXG4gICAgICAgIHByZXZpb3VzVmFsdWU6IHRoaXMuX3ByZXZpb3VzVmFsdWVNZXRhZGF0YVxuICAgICAgfSk7XG4gICAgICB0aGlzLl9wcmV2aW91c1ZhbHVlTWV0YWRhdGEgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iLCI8cHJ5LW1ldGFkYXRhLWVkaXRvci1jc3M+PC9wcnktbWV0YWRhdGEtZWRpdG9yLWNzcz5cbkBmb3IgKGdyb3VwZWRNZXRhZGF0YXMgb2YgX21ldGFkYXRhR3JvdXBlZEJ5RGVmJCB8IGFzeW5jOyB0cmFjayBncm91cGVkTWV0YWRhdGFzLm1ldGFkYXRhRGVmLmlkKSB7XG4gIDxkaXYgY2xhc3M9XCJvLXRhYnNfX3BhbmVsX19jb250ZW50X19hY3Rpb25zXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tdGFic19fcGFuZWxfX2NvbnRlbnRfX2FjdGlvbnNfX2RlZlwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJvLXRhYnNfX3BhbmVsX19jb250ZW50X19hY3Rpb25zX190ZXh0X19sYWJlbFwiPnt7IGdyb3VwZWRNZXRhZGF0YXMubWV0YWRhdGFEZWYubmFtZSB9fTwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLXRhYnNfX3BhbmVsX19jb250ZW50X19hY3Rpb25zX19idXR0b25zXCI+XG4gICAgICAgIEBpZiAoIWdyb3VwZWRNZXRhZGF0YXMubWV0YWRhdGFEZWYucmVhZE9ubHkpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2FkbWluJywgcGFnZTogJ2RhdGFzZXQnLCBhY3Rpb246ICd3cml0ZScgfVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCIgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgIHt7ICdAcHJ5LmFjdGlvbi5kZWxldGUnIHwgaTE4biB9fSB7eyBncm91cGVkTWV0YWRhdGFzLm1ldGFkYXRhRGVmLm5hbWUgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImRlbGV0ZS1pY29uXCJcbiAgICAgICAgICAgICAgICBpY29uU3ZnPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVNZXRhZGF0YShncm91cGVkTWV0YWRhdGFzLm1ldGFkYXRhRGVmKVwiXG4gICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDx1bD5cbiAgICAgIEBmb3IgKG1ldGFkYXRhIG9mIGdyb3VwZWRNZXRhZGF0YXMubWV0YWRhdGE7IHRyYWNrIG1ldGFkYXRhLnZhbHVlOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICA8bGkgY2xhc3M9XCJvLXRhYnNfX3BhbmVsX19jb250ZW50X19hY3Rpb25zX19kZWZcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby10YWJzX19wYW5lbF9fY29udGVudF9fYWN0aW9uc19fdGV4dFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvLXRhYnNfX3BhbmVsX19jb250ZW50X19hY3Rpb25zX190ZXh0X192YWx1ZVwiPnt7IG1ldGFkYXRhLnZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXRhYnNfX3BhbmVsX19jb250ZW50X19hY3Rpb25zX19idXR0b25zXCI+XG4gICAgICAgICAgICBAaWYgKCFtZXRhRGVmaW5pdGlvbihtZXRhZGF0YSkucmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdhZG1pbicsIHBhZ2U6ICdkYXRhc2V0JywgYWN0aW9uOiAnd3JpdGUnIH1cIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIiBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQHByeS5hY3Rpb24uZWRpdCcgfCBpMThuIH19IHt7IG1ldGFEZWZpbml0aW9uKG1ldGFkYXRhKS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0LWljb25cIlxuICAgICAgICAgICAgICAgICAgICBpY29uU3ZnPVwiZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdE1ldGFkYXRhKG1ldGFkYXRhKVwiXG4gICAgICAgICAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICBAaWYgKChfdHlwZSQgfCBhc3luYykgPT09ICd1c2VyJykge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCIgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdAcHJ5LmFjdGlvbi5kZWxldGUnIHwgaTE4biB9fSB7eyBncm91cGVkTWV0YWRhdGFzLm1ldGFkYXRhRGVmLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRlbGV0ZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICBpY29uU3ZnPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVNZXRhZGF0YVZhbHVlKG1ldGFkYXRhKVwiXG4gICAgICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgIH1cbiAgICA8L3VsPlxuICA8L2Rpdj5cbn1cblxuPG5nLWNvbnRhaW5lciAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdhZG1pbicsIHBhZ2U6ICdkYXRhc2V0JywgYWN0aW9uOiAnd3JpdGUnIH1cIj5cbiAgPGZvcm0gY2xhc3M9XCJvLWZvcm0gLWJvcmRlci10b3BcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwiYWRkRGF0YXNldE1ldGFkYXRhKClcIj5cbiAgICA8ZmllbGRzZXQ+XG4gICAgICA8bGVnZW5kIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5hY3Rpb24uZWRpdFByb2ZpbCcgfCBpMThuIH19PC9sZWdlbmQ+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgby1tZXRhZGF0YS1lZGl0b3JfX2NvbnRhaW5lclwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwibWV0YWRhdGFcIiBpZD1cIm1ldGFkYXRhLWxhYmVsXCIgY2xhc3M9XCJhLWxhYmVsXCI+RGF0YTwvbGFiZWw+XG4gICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgaWQ9XCJtZXRhZGF0YVwiXG4gICAgICAgICAgY2xhc3M9XCJvLW1ldGFkYXRhLWVkaXRvclwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWV0YWRhdGFcIlxuICAgICAgICAgIFtpdGVtc109XCJhdmFpbGFibGVNZXRhZGF0YSQgfCBhc3luY1wiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25NZXRhQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFtpc0Zvcm1dPVwidHJ1ZVwiXG4gICAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIlxuICAgICAgICAgICAgaXNTdWJtaXR0ZWQgJiYgZm9ybS5nZXQoJ21ldGFkYXRhJyk/LmludmFsaWQgPyAnbWV0YWRhdGEtbGFiZWwgbWV0YWRhdGEtZXJyb3InIDogJ21ldGFkYXRhLWxhYmVsJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImlzU3VibWl0dGVkICYmIGZvcm0uZ2V0KCdtZXRhZGF0YScpPy5pbnZhbGlkXCJcbiAgICAgICAgICA+XG4gICAgICAgIDwvcHJ5LXNlbGVjdD5cbiAgICAgICAgQGlmIChpc1N1Ym1pdHRlZCAmJiBmb3JtLmdldCgnbWV0YWRhdGEnKT8uaW52YWxpZCkge1xuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgaWQ9XCJtZXRhZGF0YS1lcnJvclwiXG4gICAgICAgICAgICBmb3I9XCJtZXRhZGF0YVwiXG4gICAgICAgICAgICBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4ucmVxdWlyZWQnIHwgaTE4biB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKGZvcm0udmFsdWUubWV0YWRhdGEpIHtcbiAgICAgICAgQGlmIChmb3JtLnZhbHVlWydtZXRhZGF0YSddWyd0eXBlJ10gPT09ICdEQVRFJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGQgby1tZXRhZGF0YS1lZGl0b3JfX2NvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGxhYmVsIGlkPVwiZm9ybV9kYXRlLWxhYmVsXCIgZm9yPVwiZm9ybV9kYXRlXCIgY2xhc3M9XCJhLWxhYmVsXCI+XG4gICAgICAgICAgICAgIHt7ICdAcHJ5LmFjdGlvbi5zZWxlY3REYXRlJyB8IGkxOG4gfX0gKlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+KHt7ICdAcHJ5LmFkbWluLnJlcXVpcmVkJyB8IGkxOG4gfX0pPC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBpZD1cImZvcm1fZGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJkYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJcbiAgICAgICAgICAgICAgICBpc1N1Ym1pdHRlZCAmJiBmb3JtLmdldCgndmFsdWUnKT8uaW52YWxpZCA/ICdmb3JtLWRhdGUtbGFiZWwgZm9ybS1kYXRlLWVycm9yJyA6ICdmb3JtLWRhdGUtbGFiZWwnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpc1N1Ym1pdHRlZCAmJiBmb3JtLmdldCgndmFsdWUnKT8uaW52YWxpZFwiXG4gICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICBAaWYgKGlzU3VibWl0dGVkICYmIGZvcm0uZ2V0KCd2YWx1ZScpPy5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGlkPVwiZm9ybV9kYXRlLWVycm9yXCJcbiAgICAgICAgICAgICAgICBmb3I9XCJmb3JtX2RhdGVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ICdAcHJ5LmFkbWluLnJlcXVpcmVkJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgQGlmIChmb3JtLnZhbHVlWydtZXRhZGF0YSddWyd0eXBlJ10gPT09ICdMSVNUJykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZCBvLW1ldGFkYXRhLWVkaXRvcl9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBpZD1cImxpc3QtbGFiZWxcIiBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJsaXN0XCI+e3sgJ0BwcnkuYWN0aW9uLmNob2ljZUluTGlzdCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICBpZD1cImxpc3RcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiby1tZXRhZGF0YS1lZGl0b3JcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBbaXRlbXNdPVwiZm9ybS52YWx1ZVsnbWV0YWRhdGEnXVsnYWxsb3dlZFZhbHVlcyddXCJcbiAgICAgICAgICAgICAgICBbaXNGb3JtXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImxpc3QtbGFiZWxcIlxuICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBpZD1cInRleHQtbGFiZWxcIiBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJ0ZXh0XCI+XG4gICAgICAgICAgICAgICAge3sgJ0BwcnkuYWN0aW9uLnRleHQnIHwgaTE4biB9fSAqXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPih7eyAnQHByeS5hZG1pbi5yZXF1aXJlZCcgfCBpMThuIH19KTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgaWQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIlxuICAgICAgICAgICAgICAgIGlzU3VibWl0dGVkICYmIGZvcm0uZ2V0KCd2YWx1ZScpPy5pbnZhbGlkID8gJ3RleHQtbGFiZWwgdGV4dC1lcnJvcicgOiAndGV4dC1sYWJlbCdcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaXNTdWJtaXR0ZWQgJiYgZm9ybS5nZXQoJ3ZhbHVlJyk/LmludmFsaWRcIlxuICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgQGlmIChpc1N1Ym1pdHRlZCAmJiBmb3JtLmdldCgndmFsdWUnKT8uaW52YWxpZCkge1xuICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgaWQ9XCJ0ZXN0LWVycm9yXCJcbiAgICAgICAgICAgICAgICAgIGZvcj1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIEBpZiAoZm9ybS5nZXQoJ3ZhbHVlJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LmFkbWluLnJlcXVpcmVkJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGZvcm0uZ2V0KCd2YWx1ZScpPy5oYXNFcnJvcigncGF0dGVybicpKSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZm9ybS52YWx1ZVsnbWV0YWRhdGEnXVsndHlwZSddID09PSAnRE9VQkxFJykge1xuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4uZW52aXJvbm1lbnQuZm9ybWF0RG91YmxlJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChmb3JtLnZhbHVlWydtZXRhZGF0YSddWyd0eXBlJ10gPT09ICdJTlRFR0VSJykge1xuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0BwcnkuYWRtaW4uZW52aXJvbm1lbnQuZm9ybWF0SW50JyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2ZpZWxkc2V0PlxuXG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwIC1lbmRcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIj5cbiAgICAgICAge3sgKGlzTW9kaWZpY2F0aW9uID8gJ0BwcnkuYWN0aW9uLmVkaXRNZXRhZGF0YScgOiAnQHByeS5hY3Rpb24uYWRkTWV0YWRhdGEnKSB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -4,9 +4,9 @@ import { BehaviorSubject, map } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "./scheme.service";
6
6
  import * as i2 from "@provoly/dashboard";
7
- import * as i3 from "@angular/common";
8
- import * as i4 from "@angular/forms";
9
- import * as i5 from "@provoly/dashboard/components/color-picker";
7
+ import * as i3 from "@angular/forms";
8
+ import * as i4 from "@provoly/dashboard/components/color-picker";
9
+ import * as i5 from "@angular/common";
10
10
  export class PrySchemePickerComponent {
11
11
  constructor(_cd, schemeService, i18nService) {
12
12
  this._cd = _cd;
@@ -80,13 +80,13 @@ export class PrySchemePickerComponent {
80
80
  this.writeValue(newScheme.join(','));
81
81
  }
82
82
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PrySchemePickerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PrySchemeService }, { token: i2.PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
83
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: PrySchemePickerComponent, selector: "pry-scheme-picker", providers: [
83
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PrySchemePickerComponent, selector: "pry-scheme-picker", providers: [
84
84
  {
85
85
  provide: NG_VALUE_ACCESSOR,
86
86
  useExisting: forwardRef(() => PrySchemePickerComponent),
87
87
  multi: true
88
88
  }
89
- ], ngImport: i0, template: "<div class=\"m-color-scheme\">\n <label class=\"a-label\" for=\"scheme\">{{ '@pry.widget.colorScheme' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"scheme$ | async\"\n [items]=\"schemes$ | async\"\n id=\"scheme\"\n bindValue=\"id\"\n bindLabel=\"label\"\n ></pry-select>\n</div>\n\n<div class=\"m-color-scheme__display\">\n <div class=\"m-color-scheme__display__item\" *ngFor=\"let colorScheme of schemeColors$ | async; let i = index\">\n <pry-color-picker [ngModel]=\"colorScheme\" (ngModelChange)=\"modifyColorScheme($event, i)\"></pry-color-picker>\n <button\n (click)=\"removeColorFromScheme(i)\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.widget.removeColor' | i18n }}\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.widget.removeColor' | i18n }}</span>\n <pry-icon iconSvg=\"trash\"></pry-icon>\n </button>\n </div>\n <button\n (click)=\"addColorToScheme()\"\n class=\"a-btn a-btn--primary a-btn--icon-only\"\n title=\"{{ '@pry.widget.addColor' | i18n }}\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.widget.addColor' | i18n }}</span>\n <pry-icon iconSvg=\"add\"></pry-icon>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked", "pressedEnter"] }, { kind: "component", type: i5.PryColorPickerComponent, selector: "pry-color-picker" }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }] }); }
89
+ ], ngImport: i0, template: "<div class=\"m-color-scheme\">\n <label class=\"a-label\" for=\"scheme\">{{ '@pry.widget.colorScheme' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"scheme$ | async\"\n [items]=\"schemes$ | async\"\n id=\"scheme\"\n bindValue=\"id\"\n bindLabel=\"label\"\n ></pry-select>\n</div>\n\n<div class=\"m-color-scheme__display\">\n @for (colorScheme of schemeColors$ | async; track colorScheme; let i = $index) {\n <div class=\"m-color-scheme__display__item\">\n <pry-color-picker [ngModel]=\"colorScheme\" (ngModelChange)=\"modifyColorScheme($event, i)\"></pry-color-picker>\n <button\n (click)=\"removeColorFromScheme(i)\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.widget.removeColor' | i18n }}\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.widget.removeColor' | i18n }}</span>\n <pry-icon iconSvg=\"trash\"></pry-icon>\n </button>\n </div>\n }\n <button\n (click)=\"addColorToScheme()\"\n class=\"a-btn a-btn--primary a-btn--icon-only\"\n title=\"{{ '@pry.widget.addColor' | i18n }}\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.widget.addColor' | i18n }}</span>\n <pry-icon iconSvg=\"add\"></pry-icon>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked", "pressedEnter"] }, { kind: "component", type: i4.PryColorPickerComponent, selector: "pry-color-picker" }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }] }); }
90
90
  }
91
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PrySchemePickerComponent, decorators: [{
92
92
  type: Component,
@@ -96,6 +96,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
96
96
  useExisting: forwardRef(() => PrySchemePickerComponent),
97
97
  multi: true
98
98
  }
99
- ], template: "<div class=\"m-color-scheme\">\n <label class=\"a-label\" for=\"scheme\">{{ '@pry.widget.colorScheme' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"scheme$ | async\"\n [items]=\"schemes$ | async\"\n id=\"scheme\"\n bindValue=\"id\"\n bindLabel=\"label\"\n ></pry-select>\n</div>\n\n<div class=\"m-color-scheme__display\">\n <div class=\"m-color-scheme__display__item\" *ngFor=\"let colorScheme of schemeColors$ | async; let i = index\">\n <pry-color-picker [ngModel]=\"colorScheme\" (ngModelChange)=\"modifyColorScheme($event, i)\"></pry-color-picker>\n <button\n (click)=\"removeColorFromScheme(i)\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.widget.removeColor' | i18n }}\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.widget.removeColor' | i18n }}</span>\n <pry-icon iconSvg=\"trash\"></pry-icon>\n </button>\n </div>\n <button\n (click)=\"addColorToScheme()\"\n class=\"a-btn a-btn--primary a-btn--icon-only\"\n title=\"{{ '@pry.widget.addColor' | i18n }}\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.widget.addColor' | i18n }}</span>\n <pry-icon iconSvg=\"add\"></pry-icon>\n </button>\n</div>\n" }]
99
+ ], template: "<div class=\"m-color-scheme\">\n <label class=\"a-label\" for=\"scheme\">{{ '@pry.widget.colorScheme' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"scheme$ | async\"\n [items]=\"schemes$ | async\"\n id=\"scheme\"\n bindValue=\"id\"\n bindLabel=\"label\"\n ></pry-select>\n</div>\n\n<div class=\"m-color-scheme__display\">\n @for (colorScheme of schemeColors$ | async; track colorScheme; let i = $index) {\n <div class=\"m-color-scheme__display__item\">\n <pry-color-picker [ngModel]=\"colorScheme\" (ngModelChange)=\"modifyColorScheme($event, i)\"></pry-color-picker>\n <button\n (click)=\"removeColorFromScheme(i)\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.widget.removeColor' | i18n }}\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.widget.removeColor' | i18n }}</span>\n <pry-icon iconSvg=\"trash\"></pry-icon>\n </button>\n </div>\n }\n <button\n (click)=\"addColorToScheme()\"\n class=\"a-btn a-btn--primary a-btn--icon-only\"\n title=\"{{ '@pry.widget.addColor' | i18n }}\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.widget.addColor' | i18n }}</span>\n <pry-icon iconSvg=\"add\"></pry-icon>\n </button>\n</div>\n" }]
100
100
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.PrySchemeService }, { type: i2.PryI18nService }] });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL3NjaGVtZS1waWNrZXIvc2NoZW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL3NjaGVtZS1waWNrZXIvc2NoZW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBZXhELE1BQU0sT0FBTyx3QkFBd0I7SUFTbkMsWUFDVSxHQUFzQixFQUN0QixhQUErQixFQUMvQixXQUEyQjtRQUYzQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBWHJDLGFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDekIsWUFBTyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUN4QixZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVMsU0FBUyxDQUFDLENBQUM7UUFFakQsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBUWYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ2hELEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2QsSUFBSSxZQUFZLEdBQUcsQ0FB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Q0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQcnlTY2hlbWVTZXJ2aWNlIH0gZnJvbSAnLi9zY2hlbWUuc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJ5STE4blNlcnZpY2UgfSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktc2NoZW1lLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2hlbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcblxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFByeVNjaGVtZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBQcnlTY2hlbWVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG4gIHNjaGVtZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ1Byb3ZvbHknKTtcbiAgc2NoZW1lcyQ6IE9ic2VydmFibGU8eyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1bXT47XG4gIGluaGliYXRlID0gdHJ1ZTtcbiAgZGlzYWJsZWQgPSBmYWxzZTtcbiAgc2NoZW1lQ29sb3JzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgc2NoZW1lU2VydmljZTogUHJ5U2NoZW1lU2VydmljZSxcbiAgICBwcml2YXRlIGkxOG5TZXJ2aWNlOiBQcnlJMThuU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNjaGVtZXMkID0gdGhpcy5zY2hlbWVTZXJ2aWNlLnNjaGVtZUlkcyQucGlwZShcbiAgICAgIG1hcCgoc2NoZW1lcykgPT4ge1xuICAgICAgICBsZXQgY3VzdG9tTnVtYmVyID0gMTtcbiAgICAgICAgcmV0dXJuIHNjaGVtZXMubWFwKChzY2hlbWUsIGlkeCkgPT4gKHtcbiAgICAgICAgICBpZDogc2NoZW1lLFxuICAgICAgICAgIGxhYmVsOlxuICAgICAgICAgICAgc2NoZW1lLmluZGV4T2YoJyMnKSA9PT0gMCA/IHRoaXMuaTE4blNlcnZpY2UuaW5zdGFudCgnQHByeS53aWRnZXQuY3VzdG9tJywgeyBpZDogY3VzdG9tTnVtYmVyKysgfSkgOiBzY2hlbWVcbiAgICAgICAgfSkpO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc2NoZW1lQ29sb3JzJCA9IHRoaXMuc2NoZW1lJC5waXBlKG1hcCgoc2NoZW1lKSA9PiB0aGlzLnNjaGVtZVNlcnZpY2UuZ2V0U2NoZW1lQ29sb3JzKHNjaGVtZSkpKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIC8vIERlZmluZSB3aGF0IHNob3VsZCBoYXBwZW4gaW4gdGhpcyBjb21wb25lbnQsIGlmIHNvbWV0aGluZyBjaGFuZ2VzIG91dHNpZGVcbiAgd3JpdGVWYWx1ZShzY2hlbWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNjaGVtZSQuZ2V0VmFsdWUoKSAhPT0gc2NoZW1lICYmICF0aGlzLmluaGliYXRlKSB7XG4gICAgICB0aGlzLnNjaGVtZSQubmV4dChzY2hlbWUpO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnNjaGVtZSQuZ2V0VmFsdWUoKSk7XG4gICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5zY2hlbWVTZXJ2aWNlLmFzc2VydFNjaGVtZSh0aGlzLnNjaGVtZSQuZ2V0VmFsdWUoKSk7XG4gICAgICB0aGlzLnRlbXBvcmFyeURpc2FibGUoKTtcbiAgICB9XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHRlbXBvcmFyeURpc2FibGUoKSB7XG4gICAgdGhpcy5pbmhpYmF0ZSA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmluaGliYXRlID0gZmFsc2U7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBvcmFyeURpc2FibGUoKTtcbiAgfVxuXG4gIGNoYW5nZUNvbG9yU2NoZW1lKCRldmVudDogYW55KSB7XG4gICAgaWYgKCRldmVudCA9PT0gJyMnKSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5zY2hlbWVTZXJ2aWNlLmdldFNjaGVtZUNvbG9ycyh0aGlzLnNjaGVtZVNlcnZpY2UuZ2V0RGVmYXVsdFNjaGVtZSgpKS5qb2luKCcsJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUoJGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBtb2RpZnlDb2xvclNjaGVtZSgkZXZlbnQ6IHN0cmluZywgaW5kZXg6IG51bWJlcikge1xuICAgIGlmICghdGhpcy5pbmhpYmF0ZSkge1xuICAgICAgY29uc3QgbmV3U2NoZW1lID0gWy4uLnRoaXMuc2NoZW1lU2VydmljZS5nZXRTY2hlbWVDb2xvcnModGhpcy5zY2hlbWUkLmdldFZhbHVlKCkpXTtcbiAgICAgIG5ld1NjaGVtZVtpbmRleF0gPSAkZXZlbnQ7XG4gICAgICB0aGlzLndyaXRlVmFsdWUobmV3U2NoZW1lLmpvaW4oJywnKSk7XG4gICAgfVxuICB9XG5cbiAgYWRkQ29sb3JUb1NjaGVtZSgpIHtcbiAgICB0aGlzLndyaXRlVmFsdWUoXG4gICAgICBbdGhpcy5zY2hlbWVTZXJ2aWNlLmdldFNjaGVtZUNvbG9ycyh0aGlzLnNjaGVtZSQuZ2V0VmFsdWUoKSksIHRoaXMuc2NoZW1lU2VydmljZS5yYW5kb21Db2xvcigpXS5qb2luKCcsJylcbiAgICApO1xuICB9XG5cbiAgcmVtb3ZlQ29sb3JGcm9tU2NoZW1lKGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBuZXdTY2hlbWUgPSBbLi4udGhpcy5zY2hlbWVTZXJ2aWNlLmdldFNjaGVtZUNvbG9ycyh0aGlzLnNjaGVtZSQuZ2V0VmFsdWUoKSldO1xuICAgIG5ld1NjaGVtZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMud3JpdGVWYWx1ZShuZXdTY2hlbWUuam9pbignLCcpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm0tY29sb3Itc2NoZW1lXCI+XG4gIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJzY2hlbWVcIj57eyAnQHByeS53aWRnZXQuY29sb3JTY2hlbWUnIHwgaTE4biB9fTwvbGFiZWw+XG4gIDxwcnktc2VsZWN0XG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQ29sb3JTY2hlbWUoJGV2ZW50KVwiXG4gICAgW25nTW9kZWxdPVwic2NoZW1lJCB8IGFzeW5jXCJcbiAgICBbaXRlbXNdPVwic2NoZW1lcyQgfCBhc3luY1wiXG4gICAgaWQ9XCJzY2hlbWVcIlxuICAgIGJpbmRWYWx1ZT1cImlkXCJcbiAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gID48L3ByeS1zZWxlY3Q+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm0tY29sb3Itc2NoZW1lX19kaXNwbGF5XCI+XG4gIDxkaXYgY2xhc3M9XCJtLWNvbG9yLXNjaGVtZV9fZGlzcGxheV9faXRlbVwiICpuZ0Zvcj1cImxldCBjb2xvclNjaGVtZSBvZiBzY2hlbWVDb2xvcnMkIHwgYXN5bmM7IGxldCBpID0gaW5kZXhcIj5cbiAgICA8cHJ5LWNvbG9yLXBpY2tlciBbbmdNb2RlbF09XCJjb2xvclNjaGVtZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUNvbG9yU2NoZW1lKCRldmVudCwgaSlcIj48L3ByeS1jb2xvci1waWNrZXI+XG4gICAgPGJ1dHRvblxuICAgICAgKGNsaWNrKT1cInJlbW92ZUNvbG9yRnJvbVNjaGVtZShpKVwiXG4gICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIlxuICAgICAgdGl0bGU9XCJ7eyAnQHByeS53aWRnZXQucmVtb3ZlQ29sb3InIHwgaTE4biB9fVwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LndpZGdldC5yZW1vdmVDb2xvcicgfCBpMThuIH19PC9zcGFuPlxuICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJ0cmFzaFwiPjwvcHJ5LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8YnV0dG9uXG4gICAgKGNsaWNrKT1cImFkZENvbG9yVG9TY2hlbWUoKVwiXG4gICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeSBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICB0aXRsZT1cInt7ICdAcHJ5LndpZGdldC5hZGRDb2xvcicgfCBpMThuIH19XCJcbiAgPlxuICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS53aWRnZXQuYWRkQ29sb3InIHwgaTE4biB9fTwvc3Bhbj5cbiAgICA8cHJ5LWljb24gaWNvblN2Zz1cImFkZFwiPjwvcHJ5LWljb24+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1lLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL3NjaGVtZS1waWNrZXIvc2NoZW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL3NjaGVtZS1waWNrZXIvc2NoZW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBZXhELE1BQU0sT0FBTyx3QkFBd0I7SUFTbkMsWUFDVSxHQUFzQixFQUN0QixhQUErQixFQUMvQixXQUEyQjtRQUYzQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBWHJDLGFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDekIsWUFBTyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUN4QixZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVMsU0FBUyxDQUFDLENBQUM7UUFFakQsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBUWYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ2hELEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2QsSUFBSSxZQUFZLEdBQUcsQ0FB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QUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUHJ5U2NoZW1lU2VydmljZSB9IGZyb20gJy4vc2NoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByeUkxOG5TZXJ2aWNlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXNjaGVtZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2NoZW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG5cbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQcnlTY2hlbWVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUHJ5U2NoZW1lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQge1xuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIG9uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuICBzY2hlbWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdQcm92b2x5Jyk7XG4gIHNjaGVtZXMkOiBPYnNlcnZhYmxlPHsgaWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W10+O1xuICBpbmhpYmF0ZSA9IHRydWU7XG4gIGRpc2FibGVkID0gZmFsc2U7XG4gIHNjaGVtZUNvbG9ycyQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHNjaGVtZVNlcnZpY2U6IFByeVNjaGVtZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpMThuU2VydmljZTogUHJ5STE4blNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zY2hlbWVzJCA9IHRoaXMuc2NoZW1lU2VydmljZS5zY2hlbWVJZHMkLnBpcGUoXG4gICAgICBtYXAoKHNjaGVtZXMpID0+IHtcbiAgICAgICAgbGV0IGN1c3RvbU51bWJlciA9IDE7XG4gICAgICAgIHJldHVybiBzY2hlbWVzLm1hcCgoc2NoZW1lLCBpZHgpID0+ICh7XG4gICAgICAgICAgaWQ6IHNjaGVtZSxcbiAgICAgICAgICBsYWJlbDpcbiAgICAgICAgICAgIHNjaGVtZS5pbmRleE9mKCcjJykgPT09IDAgPyB0aGlzLmkxOG5TZXJ2aWNlLmluc3RhbnQoJ0Bwcnkud2lkZ2V0LmN1c3RvbScsIHsgaWQ6IGN1c3RvbU51bWJlcisrIH0pIDogc2NoZW1lXG4gICAgICAgIH0pKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnNjaGVtZUNvbG9ycyQgPSB0aGlzLnNjaGVtZSQucGlwZShtYXAoKHNjaGVtZSkgPT4gdGhpcy5zY2hlbWVTZXJ2aWNlLmdldFNjaGVtZUNvbG9ycyhzY2hlbWUpKSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICAvLyBEZWZpbmUgd2hhdCBzaG91bGQgaGFwcGVuIGluIHRoaXMgY29tcG9uZW50LCBpZiBzb21ldGhpbmcgY2hhbmdlcyBvdXRzaWRlXG4gIHdyaXRlVmFsdWUoc2NoZW1lOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zY2hlbWUkLmdldFZhbHVlKCkgIT09IHNjaGVtZSAmJiAhdGhpcy5pbmhpYmF0ZSkge1xuICAgICAgdGhpcy5zY2hlbWUkLm5leHQoc2NoZW1lKTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5zY2hlbWUkLmdldFZhbHVlKCkpO1xuICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuc2NoZW1lU2VydmljZS5hc3NlcnRTY2hlbWUodGhpcy5zY2hlbWUkLmdldFZhbHVlKCkpO1xuICAgICAgdGhpcy50ZW1wb3JhcnlEaXNhYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICB0ZW1wb3JhcnlEaXNhYmxlKCkge1xuICAgIHRoaXMuaW5oaWJhdGUgPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pbmhpYmF0ZSA9IGZhbHNlO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wb3JhcnlEaXNhYmxlKCk7XG4gIH1cblxuICBjaGFuZ2VDb2xvclNjaGVtZSgkZXZlbnQ6IGFueSkge1xuICAgIGlmICgkZXZlbnQgPT09ICcjJykge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuc2NoZW1lU2VydmljZS5nZXRTY2hlbWVDb2xvcnModGhpcy5zY2hlbWVTZXJ2aWNlLmdldERlZmF1bHRTY2hlbWUoKSkuam9pbignLCcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKCRldmVudCk7XG4gICAgfVxuICB9XG5cbiAgbW9kaWZ5Q29sb3JTY2hlbWUoJGV2ZW50OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuaW5oaWJhdGUpIHtcbiAgICAgIGNvbnN0IG5ld1NjaGVtZSA9IFsuLi50aGlzLnNjaGVtZVNlcnZpY2UuZ2V0U2NoZW1lQ29sb3JzKHRoaXMuc2NoZW1lJC5nZXRWYWx1ZSgpKV07XG4gICAgICBuZXdTY2hlbWVbaW5kZXhdID0gJGV2ZW50O1xuICAgICAgdGhpcy53cml0ZVZhbHVlKG5ld1NjaGVtZS5qb2luKCcsJykpO1xuICAgIH1cbiAgfVxuXG4gIGFkZENvbG9yVG9TY2hlbWUoKSB7XG4gICAgdGhpcy53cml0ZVZhbHVlKFxuICAgICAgW3RoaXMuc2NoZW1lU2VydmljZS5nZXRTY2hlbWVDb2xvcnModGhpcy5zY2hlbWUkLmdldFZhbHVlKCkpLCB0aGlzLnNjaGVtZVNlcnZpY2UucmFuZG9tQ29sb3IoKV0uam9pbignLCcpXG4gICAgKTtcbiAgfVxuXG4gIHJlbW92ZUNvbG9yRnJvbVNjaGVtZShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgbmV3U2NoZW1lID0gWy4uLnRoaXMuc2NoZW1lU2VydmljZS5nZXRTY2hlbWVDb2xvcnModGhpcy5zY2hlbWUkLmdldFZhbHVlKCkpXTtcbiAgICBuZXdTY2hlbWUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLndyaXRlVmFsdWUobmV3U2NoZW1lLmpvaW4oJywnKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtLWNvbG9yLXNjaGVtZVwiPlxuICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwic2NoZW1lXCI+e3sgJ0Bwcnkud2lkZ2V0LmNvbG9yU2NoZW1lJyB8IGkxOG4gfX08L2xhYmVsPlxuICA8cHJ5LXNlbGVjdFxuICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUNvbG9yU2NoZW1lKCRldmVudClcIlxuICAgIFtuZ01vZGVsXT1cInNjaGVtZSQgfCBhc3luY1wiXG4gICAgW2l0ZW1zXT1cInNjaGVtZXMkIHwgYXN5bmNcIlxuICAgIGlkPVwic2NoZW1lXCJcbiAgICBiaW5kVmFsdWU9XCJpZFwiXG4gICAgYmluZExhYmVsPVwibGFiZWxcIlxuICA+PC9wcnktc2VsZWN0PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJtLWNvbG9yLXNjaGVtZV9fZGlzcGxheVwiPlxuICBAZm9yIChjb2xvclNjaGVtZSBvZiBzY2hlbWVDb2xvcnMkIHwgYXN5bmM7IHRyYWNrIGNvbG9yU2NoZW1lOyBsZXQgaSA9ICRpbmRleCkge1xuICAgIDxkaXYgY2xhc3M9XCJtLWNvbG9yLXNjaGVtZV9fZGlzcGxheV9faXRlbVwiPlxuICAgICAgPHByeS1jb2xvci1waWNrZXIgW25nTW9kZWxdPVwiY29sb3JTY2hlbWVcIiAobmdNb2RlbENoYW5nZSk9XCJtb2RpZnlDb2xvclNjaGVtZSgkZXZlbnQsIGkpXCI+PC9wcnktY29sb3ItcGlja2VyPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ29sb3JGcm9tU2NoZW1lKGkpXCJcbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnQHByeS53aWRnZXQucmVtb3ZlQ29sb3InIHwgaTE4biB9fVwiXG4gICAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LndpZGdldC5yZW1vdmVDb2xvcicgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInRyYXNoXCI+PC9wcnktaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICB9XG4gIDxidXR0b25cbiAgICAoY2xpY2spPVwiYWRkQ29sb3JUb1NjaGVtZSgpXCJcbiAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IGEtYnRuLS1pY29uLW9ubHlcIlxuICAgIHRpdGxlPVwie3sgJ0Bwcnkud2lkZ2V0LmFkZENvbG9yJyB8IGkxOG4gfX1cIlxuICAgID5cbiAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0Bwcnkud2lkZ2V0LmFkZENvbG9yJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgPHByeS1pY29uIGljb25Tdmc9XCJhZGRcIj48L3ByeS1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19