@ecodev/natural 50.4.1 → 52.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/esm2022/lib/classes/abstract-controller.mjs +30 -0
  2. package/esm2022/lib/classes/abstract-detail.mjs +166 -0
  3. package/{esm2020 → esm2022}/lib/classes/abstract-editable-list.mjs +4 -4
  4. package/esm2022/lib/classes/abstract-list.mjs +434 -0
  5. package/esm2022/lib/classes/abstract-navigable-list.mjs +131 -0
  6. package/{esm2020 → esm2022}/lib/directives/http-prefix.directive.mjs +4 -4
  7. package/{esm2020 → esm2022}/lib/modules/alert/alert.module.mjs +5 -5
  8. package/{esm2020 → esm2022}/lib/modules/alert/alert.service.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/modules/alert/confirm.component.mjs +4 -4
  10. package/{esm2020 → esm2022}/lib/modules/avatar/avatar.module.mjs +5 -5
  11. package/{esm2020 → esm2022}/lib/modules/avatar/component/avatar.component.mjs +6 -6
  12. package/{esm2020 → esm2022}/lib/modules/avatar/service/avatar.service.mjs +4 -4
  13. package/{esm2020 → esm2022}/lib/modules/columns-picker/columns-picker.component.mjs +4 -4
  14. package/{esm2020 → esm2022}/lib/modules/columns-picker/columns-picker.module.mjs +19 -19
  15. package/{esm2020 → esm2022}/lib/modules/common/common-module.mjs +19 -19
  16. package/{esm2020 → esm2022}/lib/modules/common/directives/linkable-tab.directive.mjs +4 -4
  17. package/{esm2020 → esm2022}/lib/modules/common/directives/src-density.directive.mjs +6 -5
  18. package/{esm2020 → esm2022}/lib/modules/common/pipes/capitalize.pipe.mjs +4 -4
  19. package/{esm2020 → esm2022}/lib/modules/common/pipes/ellipsis.pipe.mjs +4 -4
  20. package/{esm2020 → esm2022}/lib/modules/common/pipes/enum.pipe.mjs +4 -4
  21. package/{esm2020 → esm2022}/lib/modules/common/pipes/swiss-date.pipe.mjs +4 -4
  22. package/{esm2020 → esm2022}/lib/modules/common/pipes/time-ago.pipe.mjs +4 -4
  23. package/{esm2020 → esm2022}/lib/modules/common/services/memory-storage.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/modules/common/services/seo.service.mjs +4 -4
  25. package/{esm2020 → esm2022}/lib/modules/detail-header/detail-header.component.mjs +6 -5
  26. package/{esm2020 → esm2022}/lib/modules/detail-header/detail-header.module.mjs +5 -5
  27. package/{esm2020 → esm2022}/lib/modules/dialog-trigger/dialog-trigger.component.mjs +4 -4
  28. package/{esm2020 → esm2022}/lib/modules/dialog-trigger/dialog-trigger.module.mjs +5 -5
  29. package/{esm2020 → esm2022}/lib/modules/dropdown-components/abstract-association-select-component.directive.mjs +4 -4
  30. package/{esm2020 → esm2022}/lib/modules/dropdown-components/natural-dropdown-components.module.mjs +39 -39
  31. package/esm2022/lib/modules/dropdown-components/type-date/type-date.component.mjs +164 -0
  32. package/{esm2020 → esm2022}/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +4 -4
  33. package/{esm2020 → esm2022}/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +4 -4
  34. package/{esm2020 → esm2022}/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +4 -4
  35. package/{esm2020 → esm2022}/lib/modules/dropdown-components/type-number/type-number.component.mjs +4 -4
  36. package/{esm2020 → esm2022}/lib/modules/dropdown-components/type-select/type-select.component.mjs +4 -4
  37. package/{esm2020 → esm2022}/lib/modules/dropdown-components/type-text/type-text.component.mjs +4 -4
  38. package/{esm2020 → esm2022}/lib/modules/file/abstract-file.mjs +4 -4
  39. package/{esm2020 → esm2022}/lib/modules/file/component/file.component.mjs +4 -4
  40. package/{esm2020 → esm2022}/lib/modules/file/file-drop.directive.mjs +4 -4
  41. package/{esm2020 → esm2022}/lib/modules/file/file-select.directive.mjs +4 -4
  42. package/{esm2020 → esm2022}/lib/modules/file/file.module.mjs +5 -5
  43. package/{esm2020 → esm2022}/lib/modules/file/file.service.mjs +4 -4
  44. package/esm2022/lib/modules/fixed-button/fixed-button.component.mjs +29 -0
  45. package/{esm2020 → esm2022}/lib/modules/fixed-button/fixed-button.module.mjs +5 -5
  46. package/esm2022/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +53 -0
  47. package/{esm2020 → esm2022}/lib/modules/fixed-button-detail/fixed-button-detail.module.mjs +5 -5
  48. package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +6 -5
  49. package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +4 -4
  50. package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +4 -4
  51. package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +4 -4
  52. package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/hierarchic-selector.module.mjs +33 -33
  53. package/{esm2020 → esm2022}/lib/modules/icon/icon.directive.mjs +6 -5
  54. package/{esm2020 → esm2022}/lib/modules/icon/icon.module.mjs +5 -5
  55. package/{esm2020 → esm2022}/lib/modules/logger/error-handler.mjs +4 -4
  56. package/{esm2020 → esm2022}/lib/modules/logger/error.module.mjs +5 -5
  57. package/{esm2020 → esm2022}/lib/modules/matomo/matomo-module.module.mjs +5 -5
  58. package/{esm2020 → esm2022}/lib/modules/matomo/matomo.service.mjs +4 -4
  59. package/{esm2020 → esm2022}/lib/modules/panels/abstract-panel.mjs +4 -4
  60. package/{esm2020 → esm2022}/lib/modules/panels/panels.component.mjs +4 -4
  61. package/{esm2020 → esm2022}/lib/modules/panels/panels.module.mjs +5 -5
  62. package/esm2022/lib/modules/panels/panels.service.mjs +328 -0
  63. package/esm2022/lib/modules/panels/panels.urlmatcher.mjs +75 -0
  64. package/esm2022/lib/modules/panels/types.mjs +3 -0
  65. package/esm2022/lib/modules/relations/relations.component.mjs +211 -0
  66. package/{esm2020 → esm2022}/lib/modules/relations/relations.module.mjs +25 -25
  67. package/{esm2020 → esm2022}/lib/modules/search/dropdown-container/dropdown-container.component.mjs +4 -4
  68. package/{esm2020 → esm2022}/lib/modules/search/dropdown-container/dropdown.service.mjs +4 -4
  69. package/{esm2020 → esm2022}/lib/modules/search/facet-selector/facet-selector.component.mjs +4 -4
  70. package/esm2022/lib/modules/search/group/group.component.mjs +53 -0
  71. package/{esm2020 → esm2022}/lib/modules/search/input/input.component.mjs +6 -5
  72. package/{esm2020 → esm2022}/lib/modules/search/search/search.component.mjs +4 -4
  73. package/esm2022/lib/modules/search/search.module.mjs +90 -0
  74. package/{esm2020 → esm2022}/lib/modules/select/abstract-select.component.mjs +4 -4
  75. package/esm2022/lib/modules/select/select/select.component.mjs +279 -0
  76. package/esm2022/lib/modules/select/select-enum/select-enum.component.mjs +47 -0
  77. package/{esm2020 → esm2022}/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +4 -4
  78. package/{esm2020 → esm2022}/lib/modules/select/select.module.mjs +29 -29
  79. package/{esm2020 → esm2022}/lib/modules/sidenav/sidenav/sidenav.component.mjs +4 -4
  80. package/esm2022/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +87 -0
  81. package/{esm2020 → esm2022}/lib/modules/sidenav/sidenav-content/sidenav-content.component.mjs +4 -4
  82. package/{esm2020 → esm2022}/lib/modules/sidenav/sidenav-stack.service.mjs +4 -4
  83. package/{esm2020 → esm2022}/lib/modules/sidenav/sidenav.module.mjs +5 -5
  84. package/{esm2020 → esm2022}/lib/modules/sidenav/sidenav.service.mjs +5 -5
  85. package/{esm2020 → esm2022}/lib/modules/stamp/stamp-module.module.mjs +5 -5
  86. package/esm2022/lib/modules/stamp/stamp.component.mjs +23 -0
  87. package/{esm2020 → esm2022}/lib/modules/table-button/table-button.component.mjs +4 -4
  88. package/{esm2020 → esm2022}/lib/modules/table-button/table-button.module.mjs +5 -5
  89. package/{esm2020 → esm2022}/lib/services/debounce.service.mjs +4 -4
  90. package/{esm2020 → esm2022}/lib/services/enum.service.mjs +4 -4
  91. package/{esm2020 → esm2022}/lib/services/link-mutation.service.mjs +4 -4
  92. package/{esm2020 → esm2022}/lib/services/persistence.service.mjs +4 -4
  93. package/{esm2020 → esm2022}/lib/services/swiss-parsing-date-adapter.service.mjs +4 -4
  94. package/{fesm2020 → fesm2022}/ecodev-natural.mjs +555 -537
  95. package/fesm2022/ecodev-natural.mjs.map +1 -0
  96. package/lib/classes/abstract-controller.d.ts +12 -6
  97. package/lib/classes/abstract-detail.d.ts +5 -6
  98. package/lib/classes/abstract-list.d.ts +7 -8
  99. package/lib/classes/abstract-navigable-list.d.ts +3 -3
  100. package/lib/directives/http-prefix.directive.d.ts +1 -1
  101. package/lib/modules/avatar/component/avatar.component.d.ts +1 -1
  102. package/lib/modules/columns-picker/columns-picker.component.d.ts +1 -1
  103. package/lib/modules/common/directives/linkable-tab.directive.d.ts +1 -1
  104. package/lib/modules/common/directives/src-density.directive.d.ts +1 -1
  105. package/lib/modules/detail-header/detail-header.component.d.ts +1 -1
  106. package/lib/modules/dropdown-components/type-date/type-date.component.d.ts +1 -2
  107. package/lib/modules/file/abstract-file.d.ts +1 -1
  108. package/lib/modules/file/component/file.component.d.ts +1 -1
  109. package/lib/modules/file/file-select.directive.d.ts +1 -1
  110. package/lib/modules/fixed-button/fixed-button.component.d.ts +1 -1
  111. package/lib/modules/fixed-button-detail/fixed-button-detail.component.d.ts +2 -3
  112. package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.d.ts +1 -1
  113. package/lib/modules/icon/icon.directive.d.ts +1 -1
  114. package/lib/modules/panels/panels.service.d.ts +1 -1
  115. package/lib/modules/panels/types.d.ts +10 -12
  116. package/lib/modules/relations/relations.component.d.ts +1 -1
  117. package/lib/modules/search/group/group.component.d.ts +1 -1
  118. package/lib/modules/search/input/input.component.d.ts +1 -1
  119. package/lib/modules/search/search/search.component.d.ts +1 -1
  120. package/lib/modules/select/abstract-select.component.d.ts +1 -1
  121. package/lib/modules/select/select/select.component.d.ts +1 -1
  122. package/lib/modules/select/select-enum/select-enum.component.d.ts +1 -1
  123. package/lib/modules/select/select-hierarchic/select-hierarchic.component.d.ts +1 -1
  124. package/lib/modules/sidenav/sidenav-container/sidenav-container.component.d.ts +1 -1
  125. package/lib/modules/sidenav/sidenav.service.d.ts +1 -1
  126. package/lib/modules/stamp/stamp.component.d.ts +1 -1
  127. package/lib/modules/table-button/table-button.component.d.ts +1 -1
  128. package/package.json +17 -25
  129. package/esm2020/lib/classes/abstract-controller.mjs +0 -30
  130. package/esm2020/lib/classes/abstract-detail.mjs +0 -158
  131. package/esm2020/lib/classes/abstract-list.mjs +0 -435
  132. package/esm2020/lib/classes/abstract-navigable-list.mjs +0 -131
  133. package/esm2020/lib/modules/dropdown-components/type-date/type-date.component.mjs +0 -166
  134. package/esm2020/lib/modules/fixed-button/fixed-button.component.mjs +0 -28
  135. package/esm2020/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +0 -53
  136. package/esm2020/lib/modules/panels/panels.service.mjs +0 -325
  137. package/esm2020/lib/modules/panels/panels.urlmatcher.mjs +0 -81
  138. package/esm2020/lib/modules/panels/types.mjs +0 -3
  139. package/esm2020/lib/modules/relations/relations.component.mjs +0 -210
  140. package/esm2020/lib/modules/search/group/group.component.mjs +0 -51
  141. package/esm2020/lib/modules/search/search.module.mjs +0 -90
  142. package/esm2020/lib/modules/select/select/select.component.mjs +0 -278
  143. package/esm2020/lib/modules/select/select-enum/select-enum.component.mjs +0 -46
  144. package/esm2020/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +0 -86
  145. package/esm2020/lib/modules/stamp/stamp.component.mjs +0 -22
  146. package/fesm2015/ecodev-natural.mjs +0 -11532
  147. package/fesm2015/ecodev-natural.mjs.map +0 -1
  148. package/fesm2020/ecodev-natural.mjs.map +0 -1
  149. /package/{esm2020 → esm2022}/ecodev-natural.mjs +0 -0
  150. /package/{esm2020 → esm2022}/lib/classes/apollo-utils.mjs +0 -0
  151. /package/{esm2020 → esm2022}/lib/classes/data-source.mjs +0 -0
  152. /package/{esm2020 → esm2022}/lib/classes/query-variable-manager-utils.mjs +0 -0
  153. /package/{esm2020 → esm2022}/lib/classes/query-variable-manager.mjs +0 -0
  154. /package/{esm2020 → esm2022}/lib/classes/rxjs.mjs +0 -0
  155. /package/{esm2020 → esm2022}/lib/classes/tld.mjs +0 -0
  156. /package/{esm2020 → esm2022}/lib/classes/utility.mjs +0 -0
  157. /package/{esm2020 → esm2022}/lib/classes/validators.mjs +0 -0
  158. /package/{esm2020 → esm2022}/lib/modules/alert/public-api.mjs +0 -0
  159. /package/{esm2020 → esm2022}/lib/modules/avatar/public-api.mjs +0 -0
  160. /package/{esm2020 → esm2022}/lib/modules/avatar/service/md5.mjs +0 -0
  161. /package/{esm2020 → esm2022}/lib/modules/avatar/sources/gravatar.mjs +0 -0
  162. /package/{esm2020 → esm2022}/lib/modules/avatar/sources/image.mjs +0 -0
  163. /package/{esm2020 → esm2022}/lib/modules/avatar/sources/initials.mjs +0 -0
  164. /package/{esm2020 → esm2022}/lib/modules/avatar/sources/source.mjs +0 -0
  165. /package/{esm2020 → esm2022}/lib/modules/columns-picker/public-api.mjs +0 -0
  166. /package/{esm2020 → esm2022}/lib/modules/columns-picker/types.mjs +0 -0
  167. /package/{esm2020 → esm2022}/lib/modules/common/public-api.mjs +0 -0
  168. /package/{esm2020 → esm2022}/lib/modules/detail-header/public-api.mjs +0 -0
  169. /package/{esm2020 → esm2022}/lib/modules/dialog-trigger/public-api.mjs +0 -0
  170. /package/{esm2020 → esm2022}/lib/modules/dropdown-components/public-api.mjs +0 -0
  171. /package/{esm2020 → esm2022}/lib/modules/dropdown-components/types.mjs +0 -0
  172. /package/{esm2020 → esm2022}/lib/modules/dropdown-components/utils.mjs +0 -0
  173. /package/{esm2020 → esm2022}/lib/modules/file/public-api.mjs +0 -0
  174. /package/{esm2020 → esm2022}/lib/modules/file/types.mjs +0 -0
  175. /package/{esm2020 → esm2022}/lib/modules/file/utils.mjs +0 -0
  176. /package/{esm2020 → esm2022}/lib/modules/fixed-button/public-api.mjs +0 -0
  177. /package/{esm2020 → esm2022}/lib/modules/fixed-button-detail/public-api.mjs +0 -0
  178. /package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/classes/flat-node.mjs +0 -0
  179. /package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/classes/hierarchic-configuration.mjs +0 -0
  180. /package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/classes/hierarchic-filters-configuration.mjs +0 -0
  181. /package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/classes/model-node.mjs +0 -0
  182. /package/{esm2020 → esm2022}/lib/modules/hierarchic-selector/public-api.mjs +0 -0
  183. /package/{esm2020 → esm2022}/lib/modules/icon/public-api.mjs +0 -0
  184. /package/{esm2020 → esm2022}/lib/modules/logger/public-api.mjs +0 -0
  185. /package/{esm2020 → esm2022}/lib/modules/matomo/public-api.mjs +0 -0
  186. /package/{esm2020 → esm2022}/lib/modules/panels/fallback-if-no-opened-panels.urlmatcher.mjs +0 -0
  187. /package/{esm2020 → esm2022}/lib/modules/panels/public-api.mjs +0 -0
  188. /package/{esm2020 → esm2022}/lib/modules/relations/public-api.mjs +0 -0
  189. /package/{esm2020 → esm2022}/lib/modules/search/classes/graphql-doctrine.mjs +0 -0
  190. /package/{esm2020 → esm2022}/lib/modules/search/classes/graphql-doctrine.types.mjs +0 -0
  191. /package/{esm2020 → esm2022}/lib/modules/search/classes/transformers.mjs +0 -0
  192. /package/{esm2020 → esm2022}/lib/modules/search/classes/url.mjs +0 -0
  193. /package/{esm2020 → esm2022}/lib/modules/search/classes/utils.mjs +0 -0
  194. /package/{esm2020 → esm2022}/lib/modules/search/dropdown-container/dropdown-container-animations.mjs +0 -0
  195. /package/{esm2020 → esm2022}/lib/modules/search/dropdown-container/dropdown-ref.mjs +0 -0
  196. /package/{esm2020 → esm2022}/lib/modules/search/public-api.mjs +0 -0
  197. /package/{esm2020 → esm2022}/lib/modules/search/types/dropdown-component.mjs +0 -0
  198. /package/{esm2020 → esm2022}/lib/modules/search/types/facet.mjs +0 -0
  199. /package/{esm2020 → esm2022}/lib/modules/search/types/values.mjs +0 -0
  200. /package/{esm2020 → esm2022}/lib/modules/select/public-api.mjs +0 -0
  201. /package/{esm2020 → esm2022}/lib/modules/sidenav/public-api.mjs +0 -0
  202. /package/{esm2020 → esm2022}/lib/modules/stamp/public-api.mjs +0 -0
  203. /package/{esm2020 → esm2022}/lib/modules/table-button/public-api.mjs +0 -0
  204. /package/{esm2020 → esm2022}/lib/services/abstract-model.service.mjs +0 -0
  205. /package/{esm2020 → esm2022}/lib/types/types.mjs +0 -0
  206. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
@@ -0,0 +1,30 @@
1
+ import { Directive } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class NaturalAbstractController {
5
+ constructor() {
6
+ /**
7
+ * Usage:
8
+ *
9
+ * ```ts
10
+ * import { takeUntil } from 'rxjs/operators';
11
+ * .pipe(takeUntil(this.ngUnsubscribe)) // as first pipe on observables that should be destroyed on component destroy
12
+ * ```
13
+ *
14
+ * @deprecated Instead of this, you should create the observable in the constructor or field initializers and use
15
+ * Angular native `.pipe(takeUntilDestroyed())`. And most likely subscribe at a later point. We keep this method until
16
+ * all existing usages (typically in `ngOnInit()`) are migrated away.
17
+ */
18
+ this.ngUnsubscribe = new Subject();
19
+ }
20
+ ngOnDestroy() {
21
+ this.ngUnsubscribe.next(); // unsubscribe everybody
22
+ this.ngUnsubscribe.complete(); // complete the stream, because we will never emit again
23
+ }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NaturalAbstractController, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
25
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.2", type: NaturalAbstractController, ngImport: i0 }); }
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NaturalAbstractController, decorators: [{
28
+ type: Directive
29
+ }] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9jbGFzc2VzL2Fic3RyYWN0LWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUc3QixNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRUk7Ozs7Ozs7Ozs7O1dBV0c7UUFDZ0Isa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBTTFEO0lBSlUsV0FBVztRQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyx3QkFBd0I7UUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLHdEQUF3RDtJQUMzRixDQUFDOzhHQWxCUSx5QkFBeUI7a0dBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgTmF0dXJhbEFic3RyYWN0Q29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogVXNhZ2U6XG4gICAgICpcbiAgICAgKiBgYGB0c1xuICAgICAqIGltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbiAgICAgKiAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkgLy8gYXMgZmlyc3QgcGlwZSBvbiBvYnNlcnZhYmxlcyB0aGF0IHNob3VsZCBiZSBkZXN0cm95ZWQgb24gY29tcG9uZW50IGRlc3Ryb3lcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkIEluc3RlYWQgb2YgdGhpcywgeW91IHNob3VsZCBjcmVhdGUgdGhlIG9ic2VydmFibGUgaW4gdGhlIGNvbnN0cnVjdG9yIG9yIGZpZWxkIGluaXRpYWxpemVycyBhbmQgdXNlXG4gICAgICogQW5ndWxhciBuYXRpdmUgYC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKWAuIEFuZCBtb3N0IGxpa2VseSBzdWJzY3JpYmUgYXQgYSBsYXRlciBwb2ludC4gV2Uga2VlcCB0aGlzIG1ldGhvZCB1bnRpbFxuICAgICAqIGFsbCBleGlzdGluZyB1c2FnZXMgKHR5cGljYWxseSBpbiBgbmdPbkluaXQoKWApIGFyZSBtaWdyYXRlZCBhd2F5LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTsgLy8gdW5zdWJzY3JpYmUgZXZlcnlib2R5XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpOyAvLyBjb21wbGV0ZSB0aGUgc3RyZWFtLCBiZWNhdXNlIHdlIHdpbGwgbmV2ZXIgZW1pdCBhZ2FpblxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,166 @@
1
+ import { Directive, inject } from '@angular/core';
2
+ import { UntypedFormGroup } from '@angular/forms';
3
+ import { ActivatedRoute, Router } from '@angular/router';
4
+ import { kebabCase, merge, mergeWith, omit } from 'lodash-es';
5
+ import { NaturalAlertService } from '../modules/alert/alert.service';
6
+ import { NaturalAbstractPanel } from '../modules/panels/abstract-panel';
7
+ import { finalize } from 'rxjs/operators';
8
+ import { ifValid, validateAllFormControls } from './validators';
9
+ import { mergeOverrideArray } from './utility';
10
+ import { EMPTY, endWith, last, switchMap } from 'rxjs';
11
+ import * as i0 from "@angular/core";
12
+ // @dynamic
13
+ export class NaturalAbstractDetail extends NaturalAbstractPanel {
14
+ constructor(key, service) {
15
+ super();
16
+ this.key = key;
17
+ this.service = service;
18
+ /**
19
+ * Empty placeholder for data retrieved by the server
20
+ */
21
+ this.data = {
22
+ model: {},
23
+ };
24
+ /**
25
+ * Form that manages the data from the controller
26
+ */
27
+ this.form = new UntypedFormGroup({});
28
+ /**
29
+ * Show / hides the bottom fab button (mostly to hide it when we are on other tabs where semantic of button can conflict with ...
30
+ * semantic of data on other tab, like relations that list other objects)
31
+ */
32
+ this.showFabButton = true;
33
+ /**
34
+ * Injected service
35
+ */
36
+ this.alertService = inject(NaturalAlertService);
37
+ /**
38
+ * Injected service
39
+ */
40
+ this.router = inject(Router);
41
+ /**
42
+ * Injected service
43
+ */
44
+ this.route = inject(ActivatedRoute);
45
+ }
46
+ ngOnInit() {
47
+ if (!this.isPanel) {
48
+ this.route.data.subscribe(data => {
49
+ this.data = merge({ model: this.service.getConsolidatedForClient() }, data[this.key]);
50
+ this.data = merge(this.data, omit(data, [this.key]));
51
+ this.initForm();
52
+ });
53
+ }
54
+ else {
55
+ this.initForm();
56
+ }
57
+ }
58
+ changeTab(index) {
59
+ this.showFabButton = index === 0;
60
+ }
61
+ update(now = false) {
62
+ if (!this.data.model.id) {
63
+ return;
64
+ }
65
+ validateAllFormControls(this.form);
66
+ ifValid(this.form).subscribe(() => {
67
+ this.formToData();
68
+ const postUpdate = (model) => {
69
+ this.alertService.info($localize `Mis à jour`);
70
+ this.form.patchValue(model);
71
+ this.postUpdate(model);
72
+ };
73
+ if (now) {
74
+ this.service.updateNow(this.data.model).subscribe(postUpdate);
75
+ }
76
+ else {
77
+ this.service.update(this.data.model).subscribe(postUpdate);
78
+ }
79
+ });
80
+ }
81
+ create(redirect = true) {
82
+ validateAllFormControls(this.form);
83
+ if (!this.form.valid) {
84
+ return;
85
+ }
86
+ this.formToData();
87
+ this.form.disable();
88
+ this.service
89
+ .create(this.data.model)
90
+ .pipe(switchMap(model => {
91
+ this.alertService.info($localize `Créé`);
92
+ this.form.patchValue(model);
93
+ return this.postCreate(model).pipe(endWith(model), last());
94
+ }), switchMap(model => {
95
+ if (redirect) {
96
+ if (this.isPanel) {
97
+ const oldUrl = this.router.url;
98
+ const nextUrl = this.panelData?.config.params.nextRoute;
99
+ const newUrl = oldUrl.replace('/new', '/' + model.id) + (nextUrl ? '/' + nextUrl : '');
100
+ return this.router.navigateByUrl(newUrl); // replace /new by /123
101
+ }
102
+ else {
103
+ return this.router.navigate(['..', model.id], { relativeTo: this.route });
104
+ }
105
+ }
106
+ return EMPTY;
107
+ }), finalize(() => this.form.enable()))
108
+ .subscribe();
109
+ }
110
+ delete(redirectionRoute) {
111
+ this.form.disable();
112
+ this.alertService
113
+ .confirm($localize `Suppression`, $localize `Voulez-vous supprimer définitivement cet élément ?`, $localize `Supprimer définitivement`)
114
+ .pipe(switchMap(confirmed => {
115
+ if (!confirmed) {
116
+ return EMPTY;
117
+ }
118
+ this.preDelete(this.data.model);
119
+ return this.service.delete([this.data.model]).pipe(switchMap(() => {
120
+ this.alertService.info($localize `Supprimé`);
121
+ if (this.isPanel) {
122
+ this.panelService?.goToPenultimatePanel();
123
+ return EMPTY;
124
+ }
125
+ else {
126
+ const defaultRoute = ['../../' + kebabCase(this.key)];
127
+ return this.router.navigate(redirectionRoute ? redirectionRoute : defaultRoute, {
128
+ relativeTo: this.route,
129
+ });
130
+ }
131
+ }));
132
+ }), finalize(() => this.form.enable()))
133
+ .subscribe();
134
+ }
135
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
136
+ postUpdate(model) {
137
+ // noop
138
+ }
139
+ /**
140
+ * Returns an observable that will be subscribed to immediately and the
141
+ * redirect navigation will only happen after the observable completes.
142
+ */
143
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
144
+ postCreate(model) {
145
+ return EMPTY;
146
+ }
147
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
148
+ preDelete(model) {
149
+ // noop
150
+ }
151
+ initForm() {
152
+ this.form = this.service.getFormGroup(this.data.model);
153
+ }
154
+ /**
155
+ * Merge values of form into `this.data.model`.
156
+ */
157
+ formToData() {
158
+ mergeWith(this.data.model, this.form.value, mergeOverrideArray);
159
+ }
160
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NaturalAbstractDetail, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
161
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.2", type: NaturalAbstractDetail, usesInheritance: true, ngImport: i0 }); }
162
+ }
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NaturalAbstractDetail, decorators: [{
164
+ type: Directive
165
+ }], ctorParameters: function () { return [{ type: undefined }, { type: undefined }]; } });
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGV0YWlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL2NsYXNzZXMvYWJzdHJhY3QtZGV0YWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUM1RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUd0RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFHN0MsT0FBTyxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFjLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFFakUsV0FBVztBQUVYLE1BQU0sT0FBTyxxQkFjVCxTQUFRLG9CQUFvQjtJQW9DNUIsWUFBc0MsR0FBVyxFQUFrQixPQUFpQjtRQUNoRixLQUFLLEVBQUUsQ0FBQztRQUQwQixRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQWtCLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFqQ3BGOztXQUVHO1FBQ2EsU0FBSSxHQUFRO1lBQ3hCLEtBQUssRUFBRSxFQUFFO1NBQ1osQ0FBQztRQUVGOztXQUVHO1FB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QUNOO1lBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNOLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQ3JDO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELDZEQUE2RDtJQUNuRCxVQUFVLENBQUMsS0FBK0I7UUFDaEQsT0FBTztJQUNYLENBQUM7SUFFRDs7O09BR0c7SUFDSCw2REFBNkQ7SUFDbkQsVUFBVSxDQUFDLEtBQStCO1FBQ2hELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCw2REFBNkQ7SUFDbkQsU0FBUyxDQUFDLEtBQTRCO1FBQzVDLE9BQU87SUFDWCxDQUFDO0lBRVMsUUFBUTtRQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxVQUFVO1FBQ2hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7OEdBck1RLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VW50eXBlZEZvcm1Hcm91cH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtrZWJhYkNhc2UsIG1lcmdlLCBtZXJnZVdpdGgsIG9taXR9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge05hdHVyYWxBbGVydFNlcnZpY2V9IGZyb20gJy4uL21vZHVsZXMvYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdFBhbmVsfSBmcm9tICcuLi9tb2R1bGVzL3BhbmVscy9hYnN0cmFjdC1wYW5lbCc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvYWJzdHJhY3QtbW9kZWwuc2VydmljZSc7XG5pbXBvcnQge0V4dHJhY3RUY3JlYXRlLCBFeHRyYWN0VG9uZSwgRXh0cmFjdFR1cGRhdGUsIExpdGVyYWx9IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcbmltcG9ydCB7ZmluYWxpemV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7aWZWYWxpZCwgdmFsaWRhdGVBbGxGb3JtQ29udHJvbHN9IGZyb20gJy4vdmFsaWRhdG9ycyc7XG5pbXBvcnQge21lcmdlT3ZlcnJpZGVBcnJheX0gZnJvbSAnLi91dGlsaXR5JztcbmltcG9ydCB7UGFnaW5hdGVkRGF0YX0gZnJvbSAnLi9kYXRhLXNvdXJjZSc7XG5pbXBvcnQge1F1ZXJ5VmFyaWFibGVzfSBmcm9tICcuL3F1ZXJ5LXZhcmlhYmxlLW1hbmFnZXInO1xuaW1wb3J0IHtFTVBUWSwgZW5kV2l0aCwgbGFzdCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwfSBmcm9tICdyeGpzJztcblxuLy8gQGR5bmFtaWNcbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxBYnN0cmFjdERldGFpbDxcbiAgICAgICAgVFNlcnZpY2UgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2U8XG4gICAgICAgICAgICB1bmtub3duLFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgUGFnaW5hdGVkRGF0YTxMaXRlcmFsPixcbiAgICAgICAgICAgIFF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgdW5rbm93bixcbiAgICAgICAgICAgIGFueVxuICAgICAgICA+LFxuICAgID5cbiAgICBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdFBhbmVsXG4gICAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgICAvKipcbiAgICAgKiBFbXB0eSBwbGFjZWhvbGRlciBmb3IgZGF0YSByZXRyaWV2ZWQgYnkgdGhlIHNlcnZlclxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBkYXRhOiBhbnkgPSB7XG4gICAgICAgIG1vZGVsOiB7fSxcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRm9ybSB0aGF0IG1hbmFnZXMgdGhlIGRhdGEgZnJvbSB0aGUgY29udHJvbGxlclxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyAvIGhpZGVzIHRoZSBib3R0b20gZmFiIGJ1dHRvbiAobW9zdGx5IHRvIGhpZGUgaXQgd2hlbiB3ZSBhcmUgb24gb3RoZXIgdGFicyB3aGVyZSBzZW1hbnRpYyBvZiBidXR0b24gY2FuIGNvbmZsaWN0IHdpdGggLi4uXG4gICAgICogc2VtYW50aWMgb2YgZGF0YSBvbiBvdGhlciB0YWIsIGxpa2UgcmVsYXRpb25zIHRoYXQgbGlzdCBvdGhlciBvYmplY3RzKVxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93RmFiQnV0dG9uID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEluamVjdGVkIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlID0gaW5qZWN0KE5hdHVyYWxBbGVydFNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICogSW5qZWN0ZWQgc2VydmljZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICAgIC8qKlxuICAgICAqIEluamVjdGVkIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBrZXk6IHN0cmluZywgcHVibGljIHJlYWRvbmx5IHNlcnZpY2U6IFRTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNQYW5lbCkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSBtZXJnZSh7bW9kZWw6IHRoaXMuc2VydmljZS5nZXRDb25zb2xpZGF0ZWRGb3JDbGllbnQoKX0sIGRhdGFbdGhpcy5rZXldKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSBtZXJnZSh0aGlzLmRhdGEsIG9taXQoZGF0YSwgW3RoaXMua2V5XSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZVRhYihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd0ZhYkJ1dHRvbiA9IGluZGV4ID09PSAwO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGUobm93ID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGEubW9kZWwuaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbGlkYXRlQWxsRm9ybUNvbnRyb2xzKHRoaXMuZm9ybSk7XG5cbiAgICAgICAgaWZWYWxpZCh0aGlzLmZvcm0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Ub0RhdGEoKTtcbiAgICAgICAgICAgIGNvbnN0IHBvc3RVcGRhdGUgPSAobW9kZWw6IEV4dHJhY3RUdXBkYXRlPFRTZXJ2aWNlPik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oJGxvY2FsaXplYE1pcyDDoCBqb3VyYCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUobW9kZWwpO1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdFVwZGF0ZShtb2RlbCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAobm93KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnVwZGF0ZU5vdyh0aGlzLmRhdGEubW9kZWwpLnN1YnNjcmliZShwb3N0VXBkYXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnVwZGF0ZSh0aGlzLmRhdGEubW9kZWwpLnN1YnNjcmliZShwb3N0VXBkYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZShyZWRpcmVjdCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgdmFsaWRhdGVBbGxGb3JtQ29udHJvbHModGhpcy5mb3JtKTtcblxuICAgICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb3JtVG9EYXRhKCk7XG4gICAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5zZXJ2aWNlXG4gICAgICAgICAgICAuY3JlYXRlKHRoaXMuZGF0YS5tb2RlbClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChtb2RlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oJGxvY2FsaXplYENyw6nDqWApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShtb2RlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zdENyZWF0ZShtb2RlbCkucGlwZShlbmRXaXRoKG1vZGVsKSwgbGFzdCgpKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAobW9kZWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVkaXJlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzUGFuZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvbGRVcmwgPSB0aGlzLnJvdXRlci51cmw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dFVybCA9IHRoaXMucGFuZWxEYXRhPy5jb25maWcucGFyYW1zLm5leHRSb3V0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdVcmwgPSBvbGRVcmwucmVwbGFjZSgnL25ldycsICcvJyArIG1vZGVsLmlkKSArIChuZXh0VXJsID8gJy8nICsgbmV4dFVybCA6ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChuZXdVcmwpOyAvLyByZXBsYWNlIC9uZXcgYnkgLzEyM1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLicsIG1vZGVsLmlkXSwge3JlbGF0aXZlVG86IHRoaXMucm91dGV9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmZvcm0uZW5hYmxlKCkpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGUocmVkaXJlY3Rpb25Sb3V0ZT86IHVua25vd25bXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZVxuICAgICAgICAgICAgLmNvbmZpcm0oXG4gICAgICAgICAgICAgICAgJGxvY2FsaXplYFN1cHByZXNzaW9uYCxcbiAgICAgICAgICAgICAgICAkbG9jYWxpemVgVm91bGV6LXZvdXMgc3VwcHJpbWVyIGTDqWZpbml0aXZlbWVudCBjZXQgw6lsw6ltZW50ID9gLFxuICAgICAgICAgICAgICAgICRsb2NhbGl6ZWBTdXBwcmltZXIgZMOpZmluaXRpdmVtZW50YCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcChjb25maXJtZWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmZpcm1lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVEZWxldGUodGhpcy5kYXRhLm1vZGVsKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmRlbGV0ZShbdGhpcy5kYXRhLm1vZGVsXSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbygkbG9jYWxpemVgU3VwcHJpbcOpYCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1BhbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZWxTZXJ2aWNlPy5nb1RvUGVudWx0aW1hdGVQYW5lbCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0Um91dGUgPSBbJy4uLy4uLycgKyBrZWJhYkNhc2UodGhpcy5rZXkpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKHJlZGlyZWN0aW9uUm91dGUgPyByZWRpcmVjdGlvblJvdXRlIDogZGVmYXVsdFJvdXRlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmZvcm0uZW5hYmxlKCkpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcm90ZWN0ZWQgcG9zdFVwZGF0ZShtb2RlbDogRXh0cmFjdFR1cGRhdGU8VFNlcnZpY2U+KTogdm9pZCB7XG4gICAgICAgIC8vIG5vb3BcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCB3aWxsIGJlIHN1YnNjcmliZWQgdG8gaW1tZWRpYXRlbHkgYW5kIHRoZVxuICAgICAqIHJlZGlyZWN0IG5hdmlnYXRpb24gd2lsbCBvbmx5IGhhcHBlbiBhZnRlciB0aGUgb2JzZXJ2YWJsZSBjb21wbGV0ZXMuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByb3RlY3RlZCBwb3N0Q3JlYXRlKG1vZGVsOiBFeHRyYWN0VGNyZWF0ZTxUU2VydmljZT4pOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwcm90ZWN0ZWQgcHJlRGVsZXRlKG1vZGVsOiBFeHRyYWN0VG9uZTxUU2VydmljZT4pOiB2b2lkIHtcbiAgICAgICAgLy8gbm9vcFxuICAgIH1cblxuICAgIHByb3RlY3RlZCBpbml0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5zZXJ2aWNlLmdldEZvcm1Hcm91cCh0aGlzLmRhdGEubW9kZWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlIHZhbHVlcyBvZiBmb3JtIGludG8gYHRoaXMuZGF0YS5tb2RlbGAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZvcm1Ub0RhdGEoKTogdm9pZCB7XG4gICAgICAgIG1lcmdlV2l0aCh0aGlzLmRhdGEubW9kZWwsIHRoaXMuZm9ybS52YWx1ZSwgbWVyZ2VPdmVycmlkZUFycmF5KTtcbiAgICB9XG59XG4iXX0=
@@ -89,10 +89,10 @@ export class NaturalAbstractEditableList extends NaturalAbstractController {
89
89
  validateForm() {
90
90
  validateAllFormControls(this.form);
91
91
  }
92
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NaturalAbstractEditableList, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
93
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.2", type: NaturalAbstractEditableList, usesInheritance: true, ngImport: i0 }); }
92
94
  }
93
- NaturalAbstractEditableList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalAbstractEditableList, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
94
- NaturalAbstractEditableList.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: NaturalAbstractEditableList, usesInheritance: true, ngImport: i0 });
95
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NaturalAbstractEditableList, decorators: [{
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NaturalAbstractEditableList, decorators: [{
96
96
  type: Directive
97
97
  }], ctorParameters: function () { return [{ type: undefined }]; } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZWRpdGFibGUtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9jbGFzc2VzL2Fic3RyYWN0LWVkaXRhYmxlLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFaEMsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFDLDRCQUE0QixFQUFpQixNQUFNLDBCQUEwQixDQUFDO0FBRXRGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNyRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUd4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUVILE1BQU0sT0FBTywyQkFnQlgsU0FBUSx5QkFBeUI7SUFNL0IsWUFBc0MsT0FBaUI7UUFDbkQsS0FBSyxFQUFFLENBQUM7UUFEMEIsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUp2QyxjQUFTLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxxQkFBZ0IsR0FBRyxJQUFJLDRCQUE0QixFQUF5QixDQUFDO1FBQzdFLGVBQVUsR0FBRyxJQUFJLGtCQUFrQixFQUFtQixDQUFDO1FBS25FLDhHQUE4RztRQUM5RyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksZ0JBQWdCLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBQyxVQUFVLEVBQUUsRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUMsRUFBMEIsQ0FBQyxDQUFDO0lBQ2xILENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVEsQ0FBQyxLQUFtQjtRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsYUFBYTtRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxRQUFRLENBQUMsS0FBbUI7UUFDL0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDbkQsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBTyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxZQUFZO1FBQ2YsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O3dIQXZGUSwyQkFBMkI7NEdBQTNCLDJCQUEyQjsyRkFBM0IsMkJBQTJCO2tCQUR2QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0VGFibGVEYXRhU291cmNlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQge21lcmdlfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2Fic3RyYWN0LW1vZGVsLnNlcnZpY2UnO1xuaW1wb3J0IHtOYXR1cmFsQWJzdHJhY3RDb250cm9sbGVyfSBmcm9tICcuL2Fic3RyYWN0LWNvbnRyb2xsZXInO1xuaW1wb3J0IHtOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyLCBRdWVyeVZhcmlhYmxlc30gZnJvbSAnLi9xdWVyeS12YXJpYWJsZS1tYW5hZ2VyJztcbmltcG9ydCB7RXh0cmFjdFRhbGxPbmUsIEV4dHJhY3RWYWxsLCBMaXRlcmFsfSBmcm9tICcuLi90eXBlcy90eXBlcyc7XG5pbXBvcnQge3ZhbGlkYXRlQWxsRm9ybUNvbnRyb2xzfSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtEaXJlY3RpdmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQYWdpbmF0ZWREYXRhfSBmcm9tICcuL2RhdGEtc291cmNlJztcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGhlbHBzIG1hbmFnaW5nIG5vbi1wYWdpbmF0ZWQgcm93cyBvZiBpdGVtcyB0aGF0IGNhbiBiZSBlZGl0ZWQgaW4tcGxhY2UsIHR5cGljYWxseSBpbiBhIDxtYXQtdGFibGU+LlxuICogQnV0IGl0IGRvZXMgKipub3QqKiBtdXRhdGUgYW55dGhpbmcgdG8gcGVyc2lzdCB0aGUgZWRpdHMgb24gdGhlIHNlcnZlci4gSXQgaXMgdXAgdG8gdGhlIGNvbnN1bWluZyBjb21wb25lbnQgdG8gaW1wbGVtZW50XG4gKiBjdXN0b20gbXV0YXRpb24gbWVjaGFuaXNtLlxuICpcbiAqIFRvIGFjY2VzcyBkYXRhIG9mIHRoaXMgY29tcG9uZW50IGZyb20gYSBwYXJlbnQgY29tcG9uZW50LCB1c2U6XG4gKlxuICogYGBgXG4gKiBAVmlld0NoaWxkcmVuKENvbXBvbmVudFR5cGUpIGNtcDogQ29tcG9uZW50VHlwZTtcbiAqIHRoaXMuY21wLmdldEl0ZW1zKCk7XG4gKiBgYGBcbiAqXG4gKiBUbyBhZGQgZW1wdHkgbGluZSwgY2FsbDpcbiAqXG4gKiBgYGBcbiAqIHRoaXMuY21wLmFkZEVtcHR5KCk7XG4gKiBgYGBcbiAqXG4gKiBAZHluYW1pY1xuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBOYXR1cmFsQWJzdHJhY3RFZGl0YWJsZUxpc3Q8XG4gICAgVFNlcnZpY2UgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2U8XG4gICAgICAgIGFueSxcbiAgICAgICAgYW55LFxuICAgICAgICBQYWdpbmF0ZWREYXRhPExpdGVyYWw+LFxuICAgICAgICBRdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgYW55LFxuICAgICAgICBhbnksXG4gICAgICAgIGFueSxcbiAgICAgICAgYW55LFxuICAgICAgICBhbnksXG4gICAgICAgIGFueVxuICAgID4sXG4gICAgLy8gVGhlIExpdGVyYWwgaGVyZSBpcyBhIGJpdCB0b28gbG9vc2UuIElkZWFsbHkgd2Ugd291bGQgbGlrZSB0byBleHByZXNzXG4gICAgLy8gXCJpdCBtdXN0IGJlIGEgdW5pb24gYW5kIG9uZSBvZiB0aGUgdHlwZSBpbiB0aGUgdW5pb24gbXVzdCBiZSBFeHRyYWN0VGFsbE9uZTxUU2VydmljZT5cIlxuICAgIFQgZXh0ZW5kcyBMaXRlcmFsID0gRXh0cmFjdFRhbGxPbmU8VFNlcnZpY2U+LFxuPiBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdENvbnRyb2xsZXIge1xuICAgIHB1YmxpYyByZWFkb25seSBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICAgIHB1YmxpYyByZWFkb25seSBmb3JtQXJyYXkgPSBuZXcgVW50eXBlZEZvcm1BcnJheShbXSk7XG4gICAgcHVibGljIHJlYWRvbmx5IHZhcmlhYmxlc01hbmFnZXIgPSBuZXcgTmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlcjxFeHRyYWN0VmFsbDxUU2VydmljZT4+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IGRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPEFic3RyYWN0Q29udHJvbD4oKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgc2VydmljZTogVFNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICAvLyBDcmVhdGUgYSBmb3JtIGdyb3VwIHdpdGggYSBsaW5lIGF0dHJpYnV0ZXMgdGhhdCBjb250YWluIGFuIGFycmF5IG9mIGZvcm1Hcm91cHMgKG9uZSBieSBsaW5lID0gb25lIGJ5IG1vZGVsKVxuICAgICAgICB0aGlzLmZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7cm93czogdGhpcy5mb3JtQXJyYXl9KTtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLmZvcm1BcnJheS5jb250cm9scztcbiAgICAgICAgdGhpcy52YXJpYWJsZXNNYW5hZ2VyLnNldCgncGFnaW5hdGlvbicsIHtwYWdpbmF0aW9uOiB7cGFnZVNpemU6IDk5OSwgcGFnZUluZGV4OiAwfX0gYXMgRXh0cmFjdFZhbGw8VFNlcnZpY2U+KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGxpc3Qgb2YgaXRlbXMgKG92ZXJ3cml0aW5nIHdoYXQgbWF5IGhhdmUgZXhpc3RlZClcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0SXRlbXMoaXRlbXM6IHJlYWRvbmx5IFRbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1BcnJheS5jbGVhcigpOyAvLyByZXNldCBsaXN0XG4gICAgICAgIHRoaXMuYWRkSXRlbXMoaXRlbXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBnaXZlbiBpdGVtcyB0byB0aGUgbGlzdFxuICAgICAqIFJlcHJvZHVjZXMgdGhlIG1vZGVsIGRhdGEgbG9hZGluZyB0aGUgc2FtZSB3YXkgYXMgaXQgd291bGQgYmUgb24gYSBkZXRhaWwgcGFnZSAodmlhIEFic3RyYWN0RGV0YWlsIGNvbnRyb2xsZXIpIGJ1dCB3aXRob3V0IHJlc29sdmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBhZGRJdGVtcyhpdGVtczogcmVhZG9ubHkgVFtdKTogdm9pZCB7XG4gICAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb21wbGV0ZWRJdGVtID0gbWVyZ2UodGhpcy5zZXJ2aWNlLmdldENvbnNvbGlkYXRlZEZvckNsaWVudCgpLCBpdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVGb3JtR3JvdXAgPSB0aGlzLnNlcnZpY2UuZ2V0Rm9ybUdyb3VwKGNvbXBsZXRlZEl0ZW0pO1xuICAgICAgICAgICAgdGhpcy5mb3JtQXJyYXkucHVzaChsaW5lRm9ybUdyb3VwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLmZvcm1BcnJheS5jb250cm9scztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlQXQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5mb3JtQXJyYXkuY29udHJvbHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIGVtcHR5IGl0ZW0gYXQgdGhlIGVuZCBvZiB0aGUgbGlzdFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRFbXB0eSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hZGRJdGVtcyhbe30gYXMgVF0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIGxpc3Qgb2YgbW9kZWxzIHdpdGhvdXQgYW55IHRyZWF0bWVudC5cbiAgICAgKlxuICAgICAqIFRvIG11dGF0ZSBtb2RlbHMsIGl0IHdvdWxkIGJlIHJlcXVpcmVkIHRvIG1hcCB0aGVtIHVzaW5nIDpcbiAgICAgKiAgLSBBYnN0cmFjdE1vZGVsU2VydmljZS5nZXRJbnB1dCgpXG4gICAgICogIC0gQWJzdHJhY3RNb2RlbFNlcnZpY2UuZ2V0UGFydGlhbFZhcmlhYmxlc0ZvckNyZWF0aW9uKClcbiAgICAgKiAgLSBBYnN0cmFjdE1vZGVsU2VydmljZS5nZXRQYXJ0aWFsVmFyaWFibGVzRm9yVXBkYXRlKClcbiAgICAgKiAgLSBzb21lIG90aGVyIHJlcXVpcmVkIHRyZWF0bWVudC5cbiAgICAgKlxuICAgICAqIFRPRE8gcmV0dXJuIHR5cGUgaXMgaW5jb3JyZWN0IGFuZCBzaG91bGQgYmUgY2xvc2VyIHRvIGBQYXJ0aWFsPFQ+W11gIG9yIGFuIGV2ZW4gbG9vc2VyIHR5cGUsIGJlY2F1c2Ugd2UgZG9uJ3QgcmVhbGx5IGtub3cgd2hhdCBmaWVsZHMgZXhpc3RzIGluIHRoZSBmb3JtLiBXaGVuIHdlIGZpeCB0aGlzLCB3ZSBzaG91bGQgYWxzbyByZW1vdmUgdHlwZSBjb2VyY2luZyBpbiB1bml0IHRlc3RzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRJdGVtcygpOiBUW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtQXJyYXkuZ2V0UmF3VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb3JjZSB0aGUgZm9ybSB2YWxpZGF0aW9uLlxuICAgICAqXG4gICAgICogVGhlIHZhbGlkIHN0YXRlIGNhbiB0aGVuIGJlIHJlYWQgdmlhIGB0aGlzLmZvcm0udmFsaWRgXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRlRm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdmFsaWRhdGVBbGxGb3JtQ29udHJvbHModGhpcy5mb3JtKTtcbiAgICB9XG59XG4iXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZWRpdGFibGUtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9jbGFzc2VzL2Fic3RyYWN0LWVkaXRhYmxlLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFaEMsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFDLDRCQUE0QixFQUFpQixNQUFNLDBCQUEwQixDQUFDO0FBRXRGLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNyRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUd4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUVILE1BQU0sT0FBTywyQkFnQlgsU0FBUSx5QkFBeUI7SUFNL0IsWUFBc0MsT0FBaUI7UUFDbkQsS0FBSyxFQUFFLENBQUM7UUFEMEIsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUp2QyxjQUFTLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxxQkFBZ0IsR0FBRyxJQUFJLDRCQUE0QixFQUF5QixDQUFDO1FBQzdFLGVBQVUsR0FBRyxJQUFJLGtCQUFrQixFQUFtQixDQUFDO1FBS25FLDhHQUE4RztRQUM5RyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksZ0JBQWdCLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBQyxVQUFVLEVBQUUsRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUMsRUFBMEIsQ0FBQyxDQUFDO0lBQ2xILENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVEsQ0FBQyxLQUFtQjtRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsYUFBYTtRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxRQUFRLENBQUMsS0FBbUI7UUFDL0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDbkQsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBTyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxZQUFZO1FBQ2YsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7OEdBdkZRLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUR2QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0VGFibGVEYXRhU291cmNlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQge21lcmdlfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2Fic3RyYWN0LW1vZGVsLnNlcnZpY2UnO1xuaW1wb3J0IHtOYXR1cmFsQWJzdHJhY3RDb250cm9sbGVyfSBmcm9tICcuL2Fic3RyYWN0LWNvbnRyb2xsZXInO1xuaW1wb3J0IHtOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyLCBRdWVyeVZhcmlhYmxlc30gZnJvbSAnLi9xdWVyeS12YXJpYWJsZS1tYW5hZ2VyJztcbmltcG9ydCB7RXh0cmFjdFRhbGxPbmUsIEV4dHJhY3RWYWxsLCBMaXRlcmFsfSBmcm9tICcuLi90eXBlcy90eXBlcyc7XG5pbXBvcnQge3ZhbGlkYXRlQWxsRm9ybUNvbnRyb2xzfSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtEaXJlY3RpdmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQYWdpbmF0ZWREYXRhfSBmcm9tICcuL2RhdGEtc291cmNlJztcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGhlbHBzIG1hbmFnaW5nIG5vbi1wYWdpbmF0ZWQgcm93cyBvZiBpdGVtcyB0aGF0IGNhbiBiZSBlZGl0ZWQgaW4tcGxhY2UsIHR5cGljYWxseSBpbiBhIDxtYXQtdGFibGU+LlxuICogQnV0IGl0IGRvZXMgKipub3QqKiBtdXRhdGUgYW55dGhpbmcgdG8gcGVyc2lzdCB0aGUgZWRpdHMgb24gdGhlIHNlcnZlci4gSXQgaXMgdXAgdG8gdGhlIGNvbnN1bWluZyBjb21wb25lbnQgdG8gaW1wbGVtZW50XG4gKiBjdXN0b20gbXV0YXRpb24gbWVjaGFuaXNtLlxuICpcbiAqIFRvIGFjY2VzcyBkYXRhIG9mIHRoaXMgY29tcG9uZW50IGZyb20gYSBwYXJlbnQgY29tcG9uZW50LCB1c2U6XG4gKlxuICogYGBgXG4gKiBAVmlld0NoaWxkcmVuKENvbXBvbmVudFR5cGUpIGNtcDogQ29tcG9uZW50VHlwZTtcbiAqIHRoaXMuY21wLmdldEl0ZW1zKCk7XG4gKiBgYGBcbiAqXG4gKiBUbyBhZGQgZW1wdHkgbGluZSwgY2FsbDpcbiAqXG4gKiBgYGBcbiAqIHRoaXMuY21wLmFkZEVtcHR5KCk7XG4gKiBgYGBcbiAqXG4gKiBAZHluYW1pY1xuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBOYXR1cmFsQWJzdHJhY3RFZGl0YWJsZUxpc3Q8XG4gICAgVFNlcnZpY2UgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2U8XG4gICAgICAgIGFueSxcbiAgICAgICAgYW55LFxuICAgICAgICBQYWdpbmF0ZWREYXRhPExpdGVyYWw+LFxuICAgICAgICBRdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgYW55LFxuICAgICAgICBhbnksXG4gICAgICAgIGFueSxcbiAgICAgICAgYW55LFxuICAgICAgICBhbnksXG4gICAgICAgIGFueVxuICAgID4sXG4gICAgLy8gVGhlIExpdGVyYWwgaGVyZSBpcyBhIGJpdCB0b28gbG9vc2UuIElkZWFsbHkgd2Ugd291bGQgbGlrZSB0byBleHByZXNzXG4gICAgLy8gXCJpdCBtdXN0IGJlIGEgdW5pb24gYW5kIG9uZSBvZiB0aGUgdHlwZSBpbiB0aGUgdW5pb24gbXVzdCBiZSBFeHRyYWN0VGFsbE9uZTxUU2VydmljZT5cIlxuICAgIFQgZXh0ZW5kcyBMaXRlcmFsID0gRXh0cmFjdFRhbGxPbmU8VFNlcnZpY2U+LFxuPiBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdENvbnRyb2xsZXIge1xuICAgIHB1YmxpYyByZWFkb25seSBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICAgIHB1YmxpYyByZWFkb25seSBmb3JtQXJyYXkgPSBuZXcgVW50eXBlZEZvcm1BcnJheShbXSk7XG4gICAgcHVibGljIHJlYWRvbmx5IHZhcmlhYmxlc01hbmFnZXIgPSBuZXcgTmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlcjxFeHRyYWN0VmFsbDxUU2VydmljZT4+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IGRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPEFic3RyYWN0Q29udHJvbD4oKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgc2VydmljZTogVFNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICAvLyBDcmVhdGUgYSBmb3JtIGdyb3VwIHdpdGggYSBsaW5lIGF0dHJpYnV0ZXMgdGhhdCBjb250YWluIGFuIGFycmF5IG9mIGZvcm1Hcm91cHMgKG9uZSBieSBsaW5lID0gb25lIGJ5IG1vZGVsKVxuICAgICAgICB0aGlzLmZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7cm93czogdGhpcy5mb3JtQXJyYXl9KTtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLmZvcm1BcnJheS5jb250cm9scztcbiAgICAgICAgdGhpcy52YXJpYWJsZXNNYW5hZ2VyLnNldCgncGFnaW5hdGlvbicsIHtwYWdpbmF0aW9uOiB7cGFnZVNpemU6IDk5OSwgcGFnZUluZGV4OiAwfX0gYXMgRXh0cmFjdFZhbGw8VFNlcnZpY2U+KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGxpc3Qgb2YgaXRlbXMgKG92ZXJ3cml0aW5nIHdoYXQgbWF5IGhhdmUgZXhpc3RlZClcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0SXRlbXMoaXRlbXM6IHJlYWRvbmx5IFRbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1BcnJheS5jbGVhcigpOyAvLyByZXNldCBsaXN0XG4gICAgICAgIHRoaXMuYWRkSXRlbXMoaXRlbXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBnaXZlbiBpdGVtcyB0byB0aGUgbGlzdFxuICAgICAqIFJlcHJvZHVjZXMgdGhlIG1vZGVsIGRhdGEgbG9hZGluZyB0aGUgc2FtZSB3YXkgYXMgaXQgd291bGQgYmUgb24gYSBkZXRhaWwgcGFnZSAodmlhIEFic3RyYWN0RGV0YWlsIGNvbnRyb2xsZXIpIGJ1dCB3aXRob3V0IHJlc29sdmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBhZGRJdGVtcyhpdGVtczogcmVhZG9ubHkgVFtdKTogdm9pZCB7XG4gICAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb21wbGV0ZWRJdGVtID0gbWVyZ2UodGhpcy5zZXJ2aWNlLmdldENvbnNvbGlkYXRlZEZvckNsaWVudCgpLCBpdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVGb3JtR3JvdXAgPSB0aGlzLnNlcnZpY2UuZ2V0Rm9ybUdyb3VwKGNvbXBsZXRlZEl0ZW0pO1xuICAgICAgICAgICAgdGhpcy5mb3JtQXJyYXkucHVzaChsaW5lRm9ybUdyb3VwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLmZvcm1BcnJheS5jb250cm9scztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlQXQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5mb3JtQXJyYXkuY29udHJvbHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIGVtcHR5IGl0ZW0gYXQgdGhlIGVuZCBvZiB0aGUgbGlzdFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRFbXB0eSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hZGRJdGVtcyhbe30gYXMgVF0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIGxpc3Qgb2YgbW9kZWxzIHdpdGhvdXQgYW55IHRyZWF0bWVudC5cbiAgICAgKlxuICAgICAqIFRvIG11dGF0ZSBtb2RlbHMsIGl0IHdvdWxkIGJlIHJlcXVpcmVkIHRvIG1hcCB0aGVtIHVzaW5nIDpcbiAgICAgKiAgLSBBYnN0cmFjdE1vZGVsU2VydmljZS5nZXRJbnB1dCgpXG4gICAgICogIC0gQWJzdHJhY3RNb2RlbFNlcnZpY2UuZ2V0UGFydGlhbFZhcmlhYmxlc0ZvckNyZWF0aW9uKClcbiAgICAgKiAgLSBBYnN0cmFjdE1vZGVsU2VydmljZS5nZXRQYXJ0aWFsVmFyaWFibGVzRm9yVXBkYXRlKClcbiAgICAgKiAgLSBzb21lIG90aGVyIHJlcXVpcmVkIHRyZWF0bWVudC5cbiAgICAgKlxuICAgICAqIFRPRE8gcmV0dXJuIHR5cGUgaXMgaW5jb3JyZWN0IGFuZCBzaG91bGQgYmUgY2xvc2VyIHRvIGBQYXJ0aWFsPFQ+W11gIG9yIGFuIGV2ZW4gbG9vc2VyIHR5cGUsIGJlY2F1c2Ugd2UgZG9uJ3QgcmVhbGx5IGtub3cgd2hhdCBmaWVsZHMgZXhpc3RzIGluIHRoZSBmb3JtLiBXaGVuIHdlIGZpeCB0aGlzLCB3ZSBzaG91bGQgYWxzbyByZW1vdmUgdHlwZSBjb2VyY2luZyBpbiB1bml0IHRlc3RzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRJdGVtcygpOiBUW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtQXJyYXkuZ2V0UmF3VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb3JjZSB0aGUgZm9ybSB2YWxpZGF0aW9uLlxuICAgICAqXG4gICAgICogVGhlIHZhbGlkIHN0YXRlIGNhbiB0aGVuIGJlIHJlYWQgdmlhIGB0aGlzLmZvcm0udmFsaWRgXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRlRm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdmFsaWRhdGVBbGxGb3JtQ29udHJvbHModGhpcy5mb3JtKTtcbiAgICB9XG59XG4iXX0=