@dereekb/dbx-form 0.0.1 → 1.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 (239) hide show
  1. package/{src/_index.scss → _index.scss} +8 -0
  2. package/esm2020/lib/form/action/form.action.directive.mjs +42 -40
  3. package/esm2020/lib/form/action/form.action.module.mjs +6 -6
  4. package/esm2020/lib/form/action/index.mjs +2 -1
  5. package/esm2020/lib/form/action/transition/form.action.transition.module.mjs +26 -0
  6. package/esm2020/lib/form/action/transition/form.action.transition.safety.directive.mjs +40 -0
  7. package/esm2020/lib/form/action/transition/index.mjs +3 -0
  8. package/esm2020/lib/form/form.mjs +11 -4
  9. package/esm2020/lib/form/form.module.mjs +13 -24
  10. package/esm2020/lib/form/index.mjs +2 -4
  11. package/esm2020/lib/form/io/form.changes.directive.mjs +34 -0
  12. package/esm2020/lib/form/io/form.input.directive.mjs +49 -0
  13. package/esm2020/lib/form/io/form.io.module.mjs +36 -0
  14. package/esm2020/lib/form/io/form.loading.directive.mjs +52 -0
  15. package/esm2020/lib/form/io/index.mjs +5 -0
  16. package/esm2020/lib/form.module.mjs +25 -0
  17. package/esm2020/lib/formly/config/index.mjs +2 -0
  18. package/esm2020/lib/formly/config/validation.mjs +22 -0
  19. package/esm2020/lib/formly/field/checklist/checklist.field.mjs +105 -0
  20. package/esm2020/lib/formly/field/checklist/checklist.item.field.component.mjs +28 -30
  21. package/esm2020/lib/formly/field/checklist/checklist.item.field.content.default.component.mjs +1 -1
  22. package/esm2020/lib/formly/field/checklist/checklist.item.field.mjs +8 -112
  23. package/esm2020/lib/formly/field/checklist/index.mjs +2 -1
  24. package/esm2020/lib/formly/field/component/component.field.component.mjs +7 -7
  25. package/esm2020/lib/formly/field/component/component.field.mjs +4 -2
  26. package/esm2020/lib/formly/field/field.mjs +35 -2
  27. package/esm2020/lib/formly/field/form.field.module.mjs +44 -0
  28. package/esm2020/lib/formly/field/index.mjs +3 -1
  29. package/esm2020/lib/formly/field/selection/index.mjs +2 -1
  30. package/esm2020/lib/formly/field/selection/pickable/index.mjs +2 -1
  31. package/esm2020/lib/formly/field/selection/pickable/pickable.chip.field.component.mjs +14 -12
  32. package/esm2020/lib/formly/field/selection/pickable/pickable.field.directive.mjs +40 -31
  33. package/esm2020/lib/formly/field/selection/pickable/pickable.field.mjs +39 -0
  34. package/esm2020/lib/formly/field/selection/pickable/pickable.field.module.mjs +22 -13
  35. package/esm2020/lib/formly/field/selection/pickable/pickable.list.field.component.mjs +75 -16
  36. package/esm2020/lib/formly/field/selection/searchable/searchable.chip.field.component.mjs +32 -15
  37. package/esm2020/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.mjs +64 -50
  38. package/esm2020/lib/formly/field/selection/searchable/searchable.field.directive.mjs +69 -53
  39. package/esm2020/lib/formly/field/selection/searchable/searchable.field.mjs +30 -7
  40. package/esm2020/lib/formly/field/selection/searchable/searchable.field.module.mjs +8 -10
  41. package/esm2020/lib/formly/field/selection/searchable/searchable.mjs +1 -1
  42. package/esm2020/lib/formly/field/selection/searchable/searchable.text.field.component.mjs +35 -11
  43. package/esm2020/lib/formly/field/selection/searchable/text.chip.field.mjs +1 -1
  44. package/esm2020/lib/formly/field/selection/selection.mjs +1 -1
  45. package/esm2020/lib/formly/field/selection/selection.module.mjs +28 -0
  46. package/esm2020/lib/formly/field/texteditor/index.mjs +4 -0
  47. package/esm2020/lib/formly/field/texteditor/texteditor.field.component.mjs +90 -0
  48. package/esm2020/lib/formly/field/texteditor/texteditor.field.mjs +20 -0
  49. package/esm2020/lib/formly/field/texteditor/texteditor.field.module.mjs +59 -0
  50. package/esm2020/lib/formly/field/value/array/array.field.component.mjs +87 -51
  51. package/esm2020/lib/formly/field/value/array/array.field.mjs +20 -0
  52. package/esm2020/lib/formly/field/value/array/array.field.module.mjs +25 -7
  53. package/esm2020/lib/formly/field/value/array/index.mjs +2 -1
  54. package/esm2020/lib/formly/field/value/boolean/boolean.field.mjs +11 -20
  55. package/esm2020/lib/formly/field/value/date/date.field.module.mjs +9 -6
  56. package/esm2020/lib/formly/field/value/date/datetime.field.component.mjs +74 -44
  57. package/esm2020/lib/formly/field/value/date/datetime.field.mjs +36 -0
  58. package/esm2020/lib/formly/field/value/date/index.mjs +2 -2
  59. package/esm2020/lib/formly/field/value/enum/enum.field.mjs +1 -1
  60. package/esm2020/lib/formly/field/value/enum/enum.field.module.mjs +16 -0
  61. package/esm2020/lib/formly/field/value/enum/index.mjs +2 -1
  62. package/esm2020/lib/formly/field/value/hidden.field.mjs +1 -1
  63. package/esm2020/lib/formly/field/value/index.mjs +2 -1
  64. package/esm2020/lib/formly/field/value/phone/phone.field.component.mjs +13 -33
  65. package/esm2020/lib/formly/field/value/phone/phone.field.mjs +50 -52
  66. package/esm2020/lib/formly/field/value/phone/phone.field.module.mjs +15 -7
  67. package/esm2020/lib/formly/field/value/text/index.mjs +2 -1
  68. package/esm2020/lib/formly/field/value/text/text.additional.field.mjs +81 -0
  69. package/esm2020/lib/formly/field/value/text/text.address.field.mjs +16 -23
  70. package/esm2020/lib/formly/field/value/text/text.field.mjs +11 -110
  71. package/esm2020/lib/formly/field/value/text/text.field.module.mjs +9 -4
  72. package/esm2020/lib/formly/field/value/value.module.mjs +44 -0
  73. package/esm2020/lib/formly/field/wrapper/autotouch.wrapper.component.mjs +1 -1
  74. package/esm2020/lib/formly/field/wrapper/expandable.wrapper.component.mjs +12 -56
  75. package/esm2020/lib/formly/field/wrapper/expandable.wrapper.delegate.mjs +58 -0
  76. package/esm2020/lib/formly/field/wrapper/flex.wrapper.component.mjs +18 -8
  77. package/esm2020/lib/formly/field/wrapper/form.wrapper.module.mjs +43 -30
  78. package/esm2020/lib/formly/field/wrapper/index.mjs +3 -3
  79. package/esm2020/lib/formly/field/wrapper/info.wrapper.component.mjs +16 -16
  80. package/esm2020/lib/formly/field/wrapper/section.wrapper.component.mjs +17 -23
  81. package/esm2020/lib/formly/field/wrapper/style.wrapper.component.mjs +43 -0
  82. package/esm2020/lib/formly/field/wrapper/subsection.wrapper.component.mjs +17 -23
  83. package/esm2020/lib/formly/field/wrapper/toggle.wrapper.component.mjs +16 -20
  84. package/esm2020/lib/formly/field/wrapper/wrapper.mjs +81 -0
  85. package/esm2020/lib/formly/formly.context.directive.mjs +38 -0
  86. package/esm2020/lib/formly/formly.context.mjs +45 -70
  87. package/esm2020/lib/formly/formly.directive.mjs +9 -6
  88. package/esm2020/lib/formly/formly.form.component.mjs +127 -0
  89. package/esm2020/lib/formly/formly.module.mjs +11 -12
  90. package/esm2020/lib/formly/index.mjs +4 -2
  91. package/esm2020/lib/index.mjs +2 -1
  92. package/fesm2015/dereekb-dbx-form.mjs +1603 -898
  93. package/fesm2015/dereekb-dbx-form.mjs.map +1 -1
  94. package/fesm2020/dereekb-dbx-form.mjs +1650 -880
  95. package/fesm2020/dereekb-dbx-form.mjs.map +1 -1
  96. package/{src/lib → lib}/form/_form.scss +0 -0
  97. package/lib/form/action/form.action.directive.d.ts +3 -3
  98. package/lib/form/action/form.action.module.d.ts +4 -4
  99. package/lib/form/action/index.d.ts +1 -0
  100. package/lib/form/action/transition/form.action.transition.module.d.ts +8 -0
  101. package/lib/form/action/transition/form.action.transition.safety.directive.d.ts +20 -0
  102. package/lib/form/action/transition/index.d.ts +2 -0
  103. package/lib/form/form.d.ts +30 -19
  104. package/lib/form/form.module.d.ts +4 -5
  105. package/lib/form/index.d.ts +1 -3
  106. package/lib/form/{form.changes.directive.d.ts → io/form.changes.directive.d.ts} +1 -1
  107. package/lib/form/{form.input.directive.d.ts → io/form.input.directive.d.ts} +3 -3
  108. package/lib/form/io/form.io.module.d.ts +10 -0
  109. package/lib/form/io/form.loading.directive.d.ts +19 -0
  110. package/lib/form/io/index.d.ts +4 -0
  111. package/lib/form.module.d.ts +9 -0
  112. package/{src/lib → lib}/formly/_formly.scss +0 -0
  113. package/lib/formly/config/index.d.ts +1 -0
  114. package/lib/formly/config/validation.d.ts +19 -0
  115. package/{src/lib → lib}/formly/field/_field.scss +0 -0
  116. package/lib/formly/field/checklist/_checklist.scss +76 -0
  117. package/lib/formly/field/checklist/checklist.field.d.ts +45 -0
  118. package/lib/formly/field/checklist/checklist.item.field.component.d.ts +13 -12
  119. package/lib/formly/field/checklist/checklist.item.field.content.default.component.d.ts +1 -1
  120. package/lib/formly/field/checklist/checklist.item.field.d.ts +3 -47
  121. package/lib/formly/field/checklist/index.d.ts +1 -0
  122. package/{src/lib → lib}/formly/field/component/_component.scss +0 -0
  123. package/lib/formly/field/component/component.field.component.d.ts +6 -2
  124. package/lib/formly/field/field.d.ts +17 -3
  125. package/{src/lib → lib}/formly/field/fields_TODO.scss +0 -0
  126. package/lib/formly/field/form.field.module.d.ts +13 -0
  127. package/lib/formly/field/index.d.ts +2 -0
  128. package/{src/lib → lib}/formly/field/selection/_selection.scss +0 -0
  129. package/lib/formly/field/selection/index.d.ts +1 -0
  130. package/{src/lib → lib}/formly/field/selection/pickable/_pickable.scss +10 -1
  131. package/lib/formly/field/selection/pickable/index.d.ts +1 -0
  132. package/lib/formly/field/selection/pickable/pickable.chip.field.component.d.ts +3 -3
  133. package/lib/formly/field/selection/pickable/pickable.field.d.ts +13 -0
  134. package/lib/formly/field/selection/pickable/pickable.field.directive.d.ts +17 -13
  135. package/lib/formly/field/selection/pickable/pickable.field.module.d.ts +1 -1
  136. package/lib/formly/field/selection/pickable/pickable.list.field.component.d.ts +27 -3
  137. package/lib/formly/field/selection/searchable/_searchable.scss +59 -0
  138. package/lib/formly/field/selection/searchable/searchable.chip.field.component.d.ts +7 -1
  139. package/lib/formly/field/selection/searchable/searchable.d.ts +6 -8
  140. package/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.d.ts +20 -14
  141. package/lib/formly/field/selection/searchable/searchable.field.d.ts +20 -11
  142. package/lib/formly/field/selection/searchable/searchable.field.directive.d.ts +33 -24
  143. package/lib/formly/field/selection/searchable/searchable.field.module.d.ts +1 -1
  144. package/lib/formly/field/selection/searchable/searchable.text.field.component.d.ts +11 -1
  145. package/lib/formly/field/selection/searchable/text.chip.field.d.ts +2 -2
  146. package/lib/formly/field/selection/selection.d.ts +1 -0
  147. package/lib/formly/field/selection/selection.module.d.ts +9 -0
  148. package/lib/formly/field/texteditor/_texteditor.scss +98 -0
  149. package/lib/formly/field/texteditor/index.d.ts +3 -0
  150. package/lib/formly/field/texteditor/texteditor.field.component.d.ts +26 -0
  151. package/lib/formly/field/texteditor/texteditor.field.d.ts +7 -0
  152. package/lib/formly/field/texteditor/texteditor.field.module.d.ts +14 -0
  153. package/{src/lib → lib}/formly/field/value/_value.scss +0 -0
  154. package/lib/formly/field/value/array/_array.scss +73 -0
  155. package/lib/formly/field/value/array/array.field.component.d.ts +22 -11
  156. package/lib/formly/field/value/array/array.field.d.ts +9 -0
  157. package/lib/formly/field/value/array/array.field.module.d.ts +6 -3
  158. package/lib/formly/field/value/array/index.d.ts +1 -0
  159. package/{src/lib → lib}/formly/field/value/boolean/_boolean.scss +0 -0
  160. package/lib/formly/field/value/boolean/boolean.field.d.ts +5 -5
  161. package/lib/formly/field/value/date/_date.scss +79 -0
  162. package/lib/formly/field/value/date/date.field.module.d.ts +2 -1
  163. package/lib/formly/field/value/date/datetime.field.component.d.ts +16 -13
  164. package/lib/formly/field/value/date/datetime.field.d.ts +14 -0
  165. package/lib/formly/field/value/date/index.d.ts +1 -1
  166. package/{src/lib → lib}/formly/field/value/enum/_enum.scss +0 -0
  167. package/lib/formly/field/value/enum/enum.field.d.ts +2 -2
  168. package/lib/formly/field/value/enum/enum.field.module.d.ts +6 -0
  169. package/lib/formly/field/value/enum/index.d.ts +1 -0
  170. package/lib/formly/field/value/hidden.field.d.ts +2 -2
  171. package/lib/formly/field/value/index.d.ts +1 -0
  172. package/lib/formly/field/value/phone/_phone.scss +55 -0
  173. package/lib/formly/field/value/phone/phone.field.component.d.ts +8 -14
  174. package/lib/formly/field/value/phone/phone.field.d.ts +20 -18
  175. package/lib/formly/field/value/phone/phone.field.module.d.ts +10 -8
  176. package/{src/lib → lib}/formly/field/value/text/_text.scss +0 -0
  177. package/lib/formly/field/value/text/index.d.ts +1 -0
  178. package/lib/formly/field/value/text/text.additional.field.d.ts +19 -0
  179. package/lib/formly/field/value/text/text.address.field.d.ts +8 -9
  180. package/lib/formly/field/value/text/text.field.d.ts +5 -33
  181. package/lib/formly/field/value/text/text.field.module.d.ts +3 -2
  182. package/lib/formly/field/value/value.module.d.ts +13 -0
  183. package/{src/lib → lib}/formly/field/wrapper/_wrapper.scss +15 -2
  184. package/lib/formly/field/wrapper/autotouch.wrapper.component.d.ts +2 -2
  185. package/lib/formly/field/wrapper/expandable.wrapper.component.d.ts +8 -37
  186. package/lib/formly/field/wrapper/expandable.wrapper.delegate.d.ts +36 -0
  187. package/lib/formly/field/wrapper/flex.wrapper.component.d.ts +19 -4
  188. package/lib/formly/field/wrapper/form.wrapper.module.d.ts +10 -8
  189. package/lib/formly/field/wrapper/index.d.ts +2 -2
  190. package/lib/formly/field/wrapper/info.wrapper.component.d.ts +9 -9
  191. package/lib/formly/field/wrapper/section.wrapper.component.d.ts +16 -5
  192. package/lib/formly/field/wrapper/style.wrapper.component.d.ts +22 -0
  193. package/lib/formly/field/wrapper/subsection.wrapper.component.d.ts +16 -5
  194. package/lib/formly/field/wrapper/toggle.wrapper.component.d.ts +6 -14
  195. package/lib/formly/field/wrapper/wrapper.d.ts +34 -0
  196. package/{src/lib → lib}/formly/form_TODO.scss +0 -0
  197. package/lib/formly/formly.context.d.ts +14 -22
  198. package/lib/formly/formly.context.directive.d.ts +17 -0
  199. package/lib/formly/formly.directive.d.ts +7 -3
  200. package/lib/formly/formly.form.component.d.ts +35 -0
  201. package/lib/formly/formly.module.d.ts +7 -6
  202. package/lib/formly/index.d.ts +3 -1
  203. package/lib/index.d.ts +1 -0
  204. package/{src/lib → lib}/layout/_layout.scss +0 -0
  205. package/{src/lib → lib}/style/_all-core.scss +0 -0
  206. package/{src/lib → lib}/style/_all-theme.scss +0 -0
  207. package/{src/lib → lib}/style/_all-typography.scss +0 -0
  208. package/{src/lib → lib}/style/_config.scss +0 -0
  209. package/{src/lib → lib}/style/_core.scss +0 -0
  210. package/{src/lib → lib}/style/_mixin.scss +0 -0
  211. package/{src/lib → lib}/style/_theming.scss +0 -0
  212. package/{src/lib → lib}/style/_variables.scss +0 -0
  213. package/package.json +14 -14
  214. package/esm2020/lib/form/form.changes.directive.mjs +0 -33
  215. package/esm2020/lib/form/form.input.directive.mjs +0 -49
  216. package/esm2020/lib/form/loading/form.loading.directive.mjs +0 -52
  217. package/esm2020/lib/form/loading/index.mjs +0 -2
  218. package/esm2020/lib/formly/field/value/date/date.field.mjs +0 -36
  219. package/esm2020/lib/formly/field/wrapper/flex.wrapper.layout.mjs +0 -20
  220. package/esm2020/lib/formly/field/wrapper/toggle.wrapper.mjs +0 -10
  221. package/esm2020/lib/formly/formly.component.mjs +0 -134
  222. package/lib/form/loading/form.loading.directive.d.ts +0 -19
  223. package/lib/form/loading/index.d.ts +0 -1
  224. package/lib/formly/field/value/date/date.field.d.ts +0 -13
  225. package/lib/formly/field/wrapper/flex.wrapper.layout.d.ts +0 -10
  226. package/lib/formly/field/wrapper/toggle.wrapper.d.ts +0 -7
  227. package/lib/formly/formly.component.d.ts +0 -36
  228. package/src/lib/formly/field/checklist/_checklist.scss +0 -26
  229. package/src/lib/formly/field/checklist/checklist.item_TODO.scss +0 -57
  230. package/src/lib/formly/field/selection/generic_TODO.scss +0 -36
  231. package/src/lib/formly/field/selection/searchable/_searchable.scss +0 -26
  232. package/src/lib/formly/field/texteditor/_texteditor.scss +0 -26
  233. package/src/lib/formly/field/texteditor/texteditor_TODO.scss +0 -32
  234. package/src/lib/formly/field/value/array/_array.scss +0 -26
  235. package/src/lib/formly/field/value/date/_date.scss +0 -26
  236. package/src/lib/formly/field/value/date/date_TODO.scss +0 -27
  237. package/src/lib/formly/field/value/phone/_phone.scss +0 -26
  238. package/src/lib/formly/field/value/phone/phone_TODO.scss +0 -10
  239. package/src/lib/formly/field/wrapper/wrapper_TODO.scss +0 -34
@@ -1,11 +1,11 @@
1
- import { beginLoading, LoadingStateContextInstance, successResult, mapLoadingStateResults, filterMaybe } from "@dereekb/rxjs";
1
+ import { beginLoading, successResult, mapLoadingStateResults, filterMaybe, ListLoadingStateContextInstance, isListLoadingStateEmpty } from "@dereekb/rxjs";
2
2
  import { convertMaybeToArray, findUnique, makeValuesGroupMap } from "@dereekb/util";
3
3
  import { Directive, ViewChild } from "@angular/core";
4
4
  import { FormControl } from "@angular/forms";
5
5
  import { MatInput } from "@angular/material/input";
6
- import { FieldType } from "@ngx-formly/core";
7
- import { BehaviorSubject, combineLatest, of } from "rxjs";
8
- import { filter, map, debounceTime, distinctUntilChanged, switchMap, startWith, shareReplay, mergeMap, first, delay } from "rxjs/operators";
6
+ import { FieldType } from "@ngx-formly/material";
7
+ import { BehaviorSubject, combineLatest, of, filter, map, debounceTime, distinctUntilChanged, switchMap, startWith, shareReplay, mergeMap, first, delay } from "rxjs";
8
+ import { camelCase } from "change-case";
9
9
  import * as i0 from "@angular/core";
10
10
  /**
11
11
  * Used for picking pre-set values using items as the presentation.
@@ -59,11 +59,11 @@ export class AbstractDbxPickableItemFieldDirective extends FieldType {
59
59
  const valueHashSet = new Set(values.map(x => this.hashForValue(x)));
60
60
  return displayValues.filter(x => !x.isUnknown && valueHashSet.has(x._hash));
61
61
  }
62
- })))))), shareReplay(1));
62
+ })), startWith(beginLoading()))))), shareReplay(1));
63
63
  this.filteredSearchResults$ = this.filteredSearchResultsState$.pipe(map(x => x?.value), filterMaybe(), shareReplay(1));
64
64
  this.items$ = combineLatest([this.filteredSearchResults$, this.values$]).pipe(map(([displayValues, values]) => {
65
65
  const selectedHashValuesSet = new Set(values.map(x => this.hashForValue(x)));
66
- let items = displayValues.map((x) => ({ display: x, selected: selectedHashValuesSet.has(x._hash) }));
66
+ let items = displayValues.map((x) => ({ value: x, selected: selectedHashValuesSet.has(x._hash) }));
67
67
  if (this.sortItems) {
68
68
  items = this.sortItems(items);
69
69
  }
@@ -73,51 +73,58 @@ export class AbstractDbxPickableItemFieldDirective extends FieldType {
73
73
  /**
74
74
  * Context used for managing the loading of items, or when the current results change.
75
75
  */
76
- this.context = new LoadingStateContextInstance({ obs: this.itemsLoadingState$, showLoadingOnNoValue: false });
76
+ this.context = new ListLoadingStateContextInstance({ obs: this.itemsLoadingState$, showLoadingOnNoValue: false });
77
77
  this.filterItemsLoadingState$ = this.items$.pipe(map(x => successResult(x)), startWith(beginLoading()), shareReplay(1));
78
78
  /**
79
79
  * Context used for searching/filtering.
80
80
  */
81
- this.filterResultsContext = new LoadingStateContextInstance({ obs: this.loadResultsDisplayValuesState$, showLoadingOnNoValue: true });
81
+ this.filterResultsContext = new ListLoadingStateContextInstance({ obs: this.filteredSearchResultsState$, showLoadingOnNoValue: true });
82
+ this.noItemsAvailable$ = this.filterItemsLoadingState$.pipe(isListLoadingStateEmpty(), distinctUntilChanged());
83
+ }
84
+ get readonly() {
85
+ return this.field.templateOptions?.readonly;
86
+ }
87
+ get isReadonlyOrDisabled() {
88
+ return this.readonly || this.disabled;
89
+ }
90
+ get pickableField() {
91
+ return this.field.pickableField;
82
92
  }
83
93
  get multiSelect() {
84
- return this.field.multiSelect ?? true;
94
+ return this.pickableField.multiSelect ?? true;
85
95
  }
86
96
  get asArrayValue() {
87
- return this.field.asArrayValue ?? true;
97
+ return this.pickableField.asArrayValue ?? true;
88
98
  }
89
99
  get filterLabel() {
90
- return this.field.filterLabel;
91
- }
92
- get readonly() {
93
- return this.field.templateOptions?.readonly;
100
+ return this.pickableField.filterLabel;
94
101
  }
95
- get required() {
96
- return this.field.templateOptions?.required;
102
+ get name() {
103
+ return this.field.name ?? (camelCase(this.label ?? this.key));
97
104
  }
98
- get placeholder() {
99
- return this.field.templateOptions?.placeholder ?? '';
105
+ get label() {
106
+ return this.field.templateOptions?.label;
100
107
  }
101
- get description() {
102
- return this.field.templateOptions?.description;
108
+ get autocomplete() {
109
+ return this.field.templateOptions?.attributes?.['autocomplete'] ?? this.key;
103
110
  }
104
111
  get sortItems() {
105
- return this.field.sortItems;
112
+ return this.pickableField.sortItems;
106
113
  }
107
114
  get hashForValue() {
108
- return this.field.hashForValue ?? ((x) => x);
115
+ return this.pickableField.hashForValue ?? ((x) => x);
109
116
  }
110
117
  get displayForValue() {
111
- return this.field.displayForValue;
118
+ return this.pickableField.displayForValue;
112
119
  }
113
120
  get showFilterInput() {
114
- return Boolean(this.field.filterValues);
121
+ return Boolean(this.pickableField.filterValues);
115
122
  }
116
123
  get filterValuesFn() {
117
- return this.field.filterValues ?? ((_, x) => of(x.map(y => y.value)));
124
+ return this.pickableField.filterValues ?? ((_, x) => of(x.map(y => y.value)));
118
125
  }
119
126
  get skipFilterFnOnEmpty() {
120
- return this.field.skipFilterFnOnEmpty ?? true;
127
+ return this.pickableField.skipFilterFnOnEmpty ?? true;
121
128
  }
122
129
  get _filterValues() {
123
130
  let fn;
@@ -139,22 +146,22 @@ export class AbstractDbxPickableItemFieldDirective extends FieldType {
139
146
  return fn;
140
147
  }
141
148
  get showTextFilter() {
142
- return this.field.showTextFilter ?? Boolean(this.field.filterValues);
149
+ return this.pickableField.showTextFilter ?? Boolean(this.pickableField.filterValues);
143
150
  }
144
151
  get loadValuesFn() {
145
- return this.field.loadValues;
152
+ return this.pickableField.loadValues;
146
153
  }
147
154
  get values() {
148
155
  return this._getValueOnFormControl(this.formControl.value) ?? [];
149
156
  }
150
157
  get footerConfig() {
151
- return this.field.footerConfig;
158
+ return this.pickableField.footerConfig;
152
159
  }
153
160
  loadDisplayValuesForValues(values) {
154
161
  return this.loadDisplayValuesForFieldValues(values.map((value) => ({ value })));
155
162
  }
156
163
  loadDisplayValuesForFieldValues(values) {
157
- return this.getDisplayValuesForFieldValues(values).pipe(map((displayValues) => ({ loading: false, model: displayValues })), startWith({ loading: true }), shareReplay(1));
164
+ return this.getDisplayValuesForFieldValues(values).pipe(map((displayValues) => successResult(displayValues)), startWith(beginLoading()), shareReplay(1));
158
165
  }
159
166
  getDisplayValuesForFieldValues(values) {
160
167
  return this._displayHashMap.pipe(mergeMap((displayMap) => {
@@ -189,6 +196,7 @@ export class AbstractDbxPickableItemFieldDirective extends FieldType {
189
196
  }));
190
197
  }
191
198
  ngOnInit() {
199
+ super.ngOnInit();
192
200
  this._formControlObs.next(this.formControl);
193
201
  // Focus after finished loading for the first time.
194
202
  this.context.loading$.pipe(delay(10), filter(x => x), first()).subscribe(() => {
@@ -196,6 +204,7 @@ export class AbstractDbxPickableItemFieldDirective extends FieldType {
196
204
  });
197
205
  }
198
206
  ngOnDestroy() {
207
+ super.ngOnDestroy();
199
208
  this._displayHashMap.complete();
200
209
  this._formControlObs.complete();
201
210
  this.filterResultsContext.destroy();
@@ -241,4 +250,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
241
250
  type: ViewChild,
242
251
  args: ['filterMatInput', { static: true }]
243
252
  }] } });
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2FibGUuZmllbGQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvc2VsZWN0aW9uL3BpY2thYmxlL3BpY2thYmxlLmZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLDJCQUEyQixFQUFnQixhQUFhLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQWUsa0JBQWtCLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFhLFNBQVMsRUFBdUMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxXQUFXLEVBQW1CLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sa0JBQWtCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFPLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQW1Gako7O0dBRUc7QUFFSCxNQUFNLE9BQU8scUNBQXlDLFNBQVEsU0FBa0Q7SUFEaEg7O1FBTVcsY0FBUyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWpDLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQXlCLFNBQVMsQ0FBQyxDQUFDO1FBQ3hFLGlC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LENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsRDtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDOztrSUE5VlUscUNBQXFDO3NIQUFyQyxxQ0FBcUM7MkZBQXJDLHFDQUFxQztrQkFEakQsU0FBUzs4QkFJUixjQUFjO3NCQURiLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGJ4SW5qZWN0ZWRDb21wb25lbnRDb25maWcgfSBmcm9tIFwiQGRlcmVla2IvZGJ4LWNvcmVcIjtcbmltcG9ydCB7IGJlZ2luTG9hZGluZywgTG9hZGluZ1N0YXRlQ29udGV4dEluc3RhbmNlLCBMb2FkaW5nU3RhdGUsIHN1Y2Nlc3NSZXN1bHQsIG1hcExvYWRpbmdTdGF0ZVJlc3VsdHMsIGZpbHRlck1heWJlIH0gZnJvbSBcIkBkZXJlZWtiL3J4anNcIjtcbmltcG9ydCB7IGNvbnZlcnRNYXliZVRvQXJyYXksIGZpbmRVbmlxdWUsIGdyb3VwVmFsdWVzLCBtYWtlVmFsdWVzR3JvdXBNYXAsIE1heWJlIH0gZnJvbSBcIkBkZXJlZWtiL3V0aWxcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVHlwZSwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSBcIkBuZ3gtZm9ybWx5L2NvcmVcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN3aXRjaE1hcCwgc3RhcnRXaXRoLCBzaGFyZVJlcGxheSwgbWVyZ2VNYXAsIGZpcnN0LCB0YXAsIGRlbGF5IH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5Rm4sIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZSwgUGlja2FibGVWYWx1ZUZpZWxkRmlsdGVyRm4sIFBpY2thYmxlVmFsdWVGaWVsZEhhc2hGbiwgUGlja2FibGVWYWx1ZUZpZWxkTG9hZFZhbHVlc0ZuLCBQaWNrYWJsZVZhbHVlRmllbGRWYWx1ZSB9IGZyb20gXCIuL3BpY2thYmxlXCI7XG5cbi8qKlxuICogV3JhcHMgdGhlIHNlbGVjdGVkIHN0YXRlIHdpdGggdGhlIGl0ZW1zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpY2thYmxlSXRlbUZpZWxkSXRlbTxUPiB7XG4gIGRpc3BsYXk6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPjtcbiAgc2VsZWN0ZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBQaWNrYWJsZUl0ZW1GaWVsZEl0ZW1Tb3J0Rm48VD4gPSAoaXRlbXM6IFBpY2thYmxlSXRlbUZpZWxkSXRlbTxUPltdKSA9PiBQaWNrYWJsZUl0ZW1GaWVsZEl0ZW08VD5bXTtcblxuZXhwb3J0IGludGVyZmFjZSBQaWNrYWJsZVZhbHVlRmllbGRzRmllbGRDb25maWc8VD4ge1xuICAvKipcbiAgICogTG9hZHMgYWxsIHBpY2thYmxlIHZhbHVlcy5cbiAgICovXG4gIGxvYWRWYWx1ZXM6IFBpY2thYmxlVmFsdWVGaWVsZExvYWRWYWx1ZXNGbjxUPjtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIGJ1aWxkaW5nIGEgZGlzcGxheSB2YWx1ZSBnaXZlbiB0aGUgaW5wdXQuXG4gICAqL1xuICBkaXNwbGF5Rm9yVmFsdWU6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlGbjxUPjtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIGhhc2hpbmcgZGlzcGxheSB2YWx1ZXMgYW5kIG9taXR0aW5nIHJlcGVhdCB2YWx1ZXMuXG4gICAqXG4gICAqIElmIGhhc2hGb3JWYWx1ZSBpcyBub3QgcHJvdmlkZWQsIHRoZSB2YWx1ZSdzIHZhbHVlIHdpbGwgYmUgdXNlZCBhcyBpcy5cbiAgICovXG4gIGhhc2hGb3JWYWx1ZT86IFBpY2thYmxlVmFsdWVGaWVsZEhhc2hGbjxUPjtcbiAgLyoqXG4gICAqIFVzZWQgZm9yIGZpbHRlcmluZyB2YWx1ZXMgdmlhIHRoZSBzZWFyY2ggdGV4dC5cbiAgICovXG4gIGZpbHRlclZhbHVlcz86IFBpY2thYmxlVmFsdWVGaWVsZEZpbHRlckZuPFQ+O1xuICAvKipcbiAgICogVXNlZCBmb3Igc29ydGluZyB0aGUgaXRlbXMgYmVmb3JlIHRoZXkgYXJlIGRpc3BsYXllZC5cbiAgICogXG4gICAqIFNob3VsZCBvbmx5IGJlIHVzZWQgdG8gc29ydCB2YWx1ZXMuXG4gICAqL1xuICBzb3J0SXRlbXM/OiBQaWNrYWJsZUl0ZW1GaWVsZEl0ZW1Tb3J0Rm48VD47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBhbGxvdyBtdWx0aXBsZSBpdGVtcyB0byBiZSBzZWxlY3RlZC5cbiAgICovXG4gIG11bHRpU2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHNldC9nZXQgdmFsdWVzIGFzIGFuIGFycmF5IG9yIGEgc2luZ2xlIHZhbHVlLiBJZiBzZXQgZmFsc2UsIG11bHRpU2VsZWN0IGlzIGlnbm9yZWQuXG4gICAqL1xuICBhc0FycmF5VmFsdWU/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gc2hvdyB0aGUgdGV4dCBmaWx0ZXIuIFRydWUgYnkgZGVmYXVsdCBpZiBmaWx0ZXJWYWx1ZXMgaXMgcHJvdmlkZWQuXG4gICAqL1xuICBzaG93VGV4dEZpbHRlcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBza2lwIHRoZSBmaWx0ZXIgZnVuY3Rpb24gd2hlbiB0aGUgaW5wdXQgaXMgZW1wdHkuXG4gICAqIFxuICAgKiBUcnVlIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBza2lwRmlsdGVyRm5PbkVtcHR5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEZpbHRlciBMYWJlbFxuICAgKi9cbiAgZmlsdGVyTGFiZWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgdmFsdWVzIHRoYXQgY2FuIGJlIHBpY2tlZFxuICAgKi9cbiAgbWF4UGlja3M/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbi9oaW50IHRvIGRpc3BsYXkuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEZvb3RlciBEaXNwbGF5XG4gICAqL1xuICBmb290ZXJDb25maWc/OiBEYnhJbmplY3RlZENvbXBvbmVudENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaWNrYWJsZVZhbHVlRmllbGRzRm9ybWx5RmllbGRDb25maWc8VD4gZXh0ZW5kcyBQaWNrYWJsZVZhbHVlRmllbGRzRmllbGRDb25maWc8VD4sIEZvcm1seUZpZWxkQ29uZmlnIHsgfVxuXG4vKipcbiAqIERpc3BsYXllZCB2YWx1ZSB3aXRoIHRoZSBjb21wdXRlZCBoYXNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQsIE0gPSBhbnk+IGV4dGVuZHMgUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+IHtcbiAgX2hhc2g6IGFueTtcbn1cblxuLyoqXG4gKiBVc2VkIGZvciBwaWNraW5nIHByZS1zZXQgdmFsdWVzIHVzaW5nIGl0ZW1zIGFzIHRoZSBwcmVzZW50YXRpb24uXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIEFic3RyYWN0RGJ4UGlja2FibGVJdGVtRmllbGREaXJlY3RpdmU8VD4gZXh0ZW5kcyBGaWVsZFR5cGU8UGlja2FibGVWYWx1ZUZpZWxkc0Zvcm1seUZpZWxkQ29uZmlnPFQ+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKCdmaWx0ZXJNYXRJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGZpbHRlck1hdElucHV0ITogTWF0SW5wdXQ7XG5cbiAgcmVhZG9ubHkgaW5wdXRDdHJsID0gbmV3IEZvcm1Db250cm9sKCcnKTtcblxuICBwcml2YXRlIF9mb3JtQ29udHJvbE9icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8QWJzdHJhY3RDb250cm9sPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZm9ybUNvbnRyb2wkID0gdGhpcy5fZm9ybUNvbnRyb2xPYnMucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICBwcml2YXRlIF9kaXNwbGF5SGFzaE1hcCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPGFueSwgUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+Pj4obmV3IE1hcCgpKTtcblxuICByZWFkb25seSBmaWx0ZXJJbnB1dFZhbHVlJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5pbnB1dEN0cmwudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHVuZGVmaW5lZCBhcyBhbnkpKTtcbiAgcmVhZG9ubHkgZmlsdGVySW5wdXRWYWx1ZVN0cmluZyQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuZmlsdGVySW5wdXRWYWx1ZSQucGlwZShcbiAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbG9hZFJlc3VsdHNEaXNwbGF5VmFsdWVzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPltdPj4gPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKFxuICAgIGZpcnN0KCksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMubG9hZFZhbHVlc0ZuKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoeCkgPT4gdGhpcy5sb2FkRGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHgpKSxcbiAgICAgIHN0YXJ0V2l0aChiZWdpbkxvYWRpbmc8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXT4oKSlcbiAgICApKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IF9mb3JtQ29udHJvbFZhbHVlOiBPYnNlcnZhYmxlPFQgfCBUW10+ID0gdGhpcy5mb3JtQ29udHJvbCQucGlwZShcbiAgICBzd2l0Y2hNYXAoY29udHJvbCA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKGNvbnRyb2wudmFsdWUpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApKVxuICApO1xuXG4gIHJlYWRvbmx5IGxvYWRSZXN1bHRzRGlzcGxheVZhbHVlcyQ6IE9ic2VydmFibGU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXT4gPSB0aGlzLmxvYWRSZXN1bHRzRGlzcGxheVZhbHVlc1N0YXRlJC5waXBlKFxuICAgIG1hcCh4ID0+IHg/LnZhbHVlID8/IFtdKVxuICApO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHZhbHVlcyBpbiB0aGUgZm9ybSBjb250cm9sLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVzJDogT2JzZXJ2YWJsZTxUW10+ID0gdGhpcy5fZm9ybUNvbnRyb2xWYWx1ZS5waXBlKFxuICAgIG1hcChjb252ZXJ0TWF5YmVUb0FycmF5KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHZhbHVlcyB3aXRoIHRoZWlyIGRpc3BsYXkgdmFsdWUuXG4gICAqL1xuICByZWFkb25seSBkaXNwbGF5VmFsdWVzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPltdPj4gPVxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMubG9hZFJlc3VsdHNEaXNwbGF5VmFsdWVzJCwgdGhpcy52YWx1ZXMkXSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoW2Rpc3BsYXlWYWx1ZXMsIGN1cnJlbnRWYWx1ZXNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZXNNYXAgPSBtYWtlVmFsdWVzR3JvdXBNYXAoZGlzcGxheVZhbHVlcywgKHgpID0+IHRoaXMuaGFzaEZvclZhbHVlKHgudmFsdWUpKTtcbiAgICAgICAgY29uc3QgdmFsdWVzTm90SW5EaXNwbGF5TWFwOiBUW10gPSBbXTtcblxuICAgICAgICBjdXJyZW50VmFsdWVzLmZvckVhY2goKHgpID0+IHtcbiAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmhhc2hGb3JWYWx1ZSh4KTtcbiAgICAgICAgICBsZXQgZGlzcGxheVZhbHVlOiBNYXliZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPj4gPSBkaXNwbGF5VmFsdWVzTWFwLmdldChrZXkpPy5bMF07XG5cbiAgICAgICAgICBpZiAoIWRpc3BsYXlWYWx1ZSkge1xuICAgICAgICAgICAgdmFsdWVzTm90SW5EaXNwbGF5TWFwLnB1c2goeCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodmFsdWVzTm90SW5EaXNwbGF5TWFwLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmxvYWREaXNwbGF5VmFsdWVzRm9yVmFsdWVzKHZhbHVlc05vdEluRGlzcGxheU1hcCkucGlwZShcbiAgICAgICAgICAgIG1hcCh4ID0+IG1hcExvYWRpbmdTdGF0ZVJlc3VsdHMoeCwge1xuICAgICAgICAgICAgICBtYXBWYWx1ZTogKGxvYWRlZFZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXSkgPT4ge1xuICAgICAgICAgICAgICAgIGxvYWRlZFZhbHVlcy5mb3JFYWNoKHggPT4geC5pc1Vua25vd24gPSB4LmlzVW5rbm93biA/PyB0cnVlKTsgLy8gQXNzaWduIHVua25vd24gZmxhZy5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFsuLi5kaXNwbGF5VmFsdWVzLCAuLi5sb2FkZWRWYWx1ZXNdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gb2Yoc3VjY2Vzc1Jlc3VsdChkaXNwbGF5VmFsdWVzKSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAvKipcbiAgICogUmVzdWx0cyB0byBiZSBkaXNwbGF5ZWQgaWYgZmlsdGVyZWQuXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJlZFNlYXJjaFJlc3VsdHNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+W10+PiA9IHRoaXMubG9hZFJlc3VsdHNEaXNwbGF5VmFsdWVzJC5waXBlKFxuICAgIHN3aXRjaE1hcCgodmFsdWVzKSA9PiB0aGlzLmZpbHRlcklucHV0VmFsdWVTdHJpbmckLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAodGV4dCA9PiBjb21iaW5lTGF0ZXN0KFt0aGlzLl9maWx0ZXJWYWx1ZXModGV4dCwgdmFsdWVzKSwgdGhpcy5kaXNwbGF5VmFsdWVzU3RhdGUkXSkucGlwZShcbiAgICAgICAgbWFwKChbdmFsdWVzLCBkaXNwbGF5U3RhdGVdKSA9PiBtYXBMb2FkaW5nU3RhdGVSZXN1bHRzKGRpc3BsYXlTdGF0ZSwge1xuICAgICAgICAgIG1hcFZhbHVlOiAoZGlzcGxheVZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVIYXNoU2V0ID0gbmV3IFNldCh2YWx1ZXMubWFwKHggPT4gdGhpcy5oYXNoRm9yVmFsdWUoeCkpKTtcbiAgICAgICAgICAgIHJldHVybiBkaXNwbGF5VmFsdWVzLmZpbHRlcih4ID0+ICF4LmlzVW5rbm93biAmJiB2YWx1ZUhhc2hTZXQuaGFzKHguX2hhc2gpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKSlcbiAgICAgIClcbiAgICApKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGZpbHRlcmVkU2VhcmNoUmVzdWx0cyQ6IE9ic2VydmFibGU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXT4gPSB0aGlzLmZpbHRlcmVkU2VhcmNoUmVzdWx0c1N0YXRlJC5waXBlKFxuICAgIG1hcCh4ID0+IHg/LnZhbHVlKSxcbiAgICBmaWx0ZXJNYXliZSgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaXRlbXMkOiBPYnNlcnZhYmxlPFBpY2thYmxlSXRlbUZpZWxkSXRlbTxUPltdPiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZmlsdGVyZWRTZWFyY2hSZXN1bHRzJCwgdGhpcy52YWx1ZXMkXSkucGlwZShcbiAgICBtYXAoKFtkaXNwbGF5VmFsdWVzLCB2YWx1ZXNdKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZEhhc2hWYWx1ZXNTZXQgPSBuZXcgU2V0KHZhbHVlcy5tYXAoeCA9PiB0aGlzLmhhc2hGb3JWYWx1ZSh4KSkpO1xuICAgICAgbGV0IGl0ZW1zOiBQaWNrYWJsZUl0ZW1GaWVsZEl0ZW08VD5bXSA9IGRpc3BsYXlWYWx1ZXMubWFwKCh4KSA9PiAoeyBkaXNwbGF5OiB4LCBzZWxlY3RlZDogc2VsZWN0ZWRIYXNoVmFsdWVzU2V0Lmhhcyh4Ll9oYXNoKSB9KSk7XG5cbiAgICAgIGlmICh0aGlzLnNvcnRJdGVtcykge1xuICAgICAgICBpdGVtcyA9IHRoaXMuc29ydEl0ZW1zKGl0ZW1zKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaXRlbXNMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZT4gPSB0aGlzLmxvYWRSZXN1bHRzRGlzcGxheVZhbHVlcyQucGlwZShcbiAgICBzd2l0Y2hNYXAoeCA9PiB0aGlzLml0ZW1zJC5waXBlKFxuICAgICAgZmlyc3QoKSxcbiAgICAgIG1hcCh4ID0+IHN1Y2Nlc3NSZXN1bHQoeCkpLFxuICAgICAgc3RhcnRXaXRoKGJlZ2luTG9hZGluZygpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKSlcbiAgKTtcblxuICAvKipcbiAgICogQ29udGV4dCB1c2VkIGZvciBtYW5hZ2luZyB0aGUgbG9hZGluZyBvZiBpdGVtcywgb3Igd2hlbiB0aGUgY3VycmVudCByZXN1bHRzIGNoYW5nZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQgPSBuZXcgTG9hZGluZ1N0YXRlQ29udGV4dEluc3RhbmNlKHsgb2JzOiB0aGlzLml0ZW1zTG9hZGluZ1N0YXRlJCwgc2hvd0xvYWRpbmdPbk5vVmFsdWU6IGZhbHNlIH0pO1xuXG4gIHJlYWRvbmx5IGZpbHRlckl0ZW1zTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU+ID0gdGhpcy5pdGVtcyQucGlwZShcbiAgICBtYXAoeCA9PiBzdWNjZXNzUmVzdWx0KHgpKSxcbiAgICBzdGFydFdpdGgoYmVnaW5Mb2FkaW5nKCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIENvbnRleHQgdXNlZCBmb3Igc2VhcmNoaW5nL2ZpbHRlcmluZy5cbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlclJlc3VsdHNDb250ZXh0ID0gbmV3IExvYWRpbmdTdGF0ZUNvbnRleHRJbnN0YW5jZSh7IG9iczogdGhpcy5sb2FkUmVzdWx0c0Rpc3BsYXlWYWx1ZXNTdGF0ZSQsIHNob3dMb2FkaW5nT25Ob1ZhbHVlOiB0cnVlIH0pO1xuXG4gIGdldCBtdWx0aVNlbGVjdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5tdWx0aVNlbGVjdCA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IGFzQXJyYXlWYWx1ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5hc0FycmF5VmFsdWUgPz8gdHJ1ZTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJMYWJlbCgpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5maWx0ZXJMYWJlbDtcbiAgfVxuXG4gIGdldCByZWFkb25seSgpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQudGVtcGxhdGVPcHRpb25zPy5yZWFkb25seTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpOiBNYXliZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQudGVtcGxhdGVPcHRpb25zPy5yZXF1aXJlZDtcbiAgfVxuXG4gIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnRlbXBsYXRlT3B0aW9ucz8ucGxhY2Vob2xkZXIgPz8gJyc7XG4gIH1cblxuICBnZXQgZGVzY3JpcHRpb24oKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQudGVtcGxhdGVPcHRpb25zPy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBzb3J0SXRlbXMoKTogTWF5YmU8UGlja2FibGVJdGVtRmllbGRJdGVtU29ydEZuPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQuc29ydEl0ZW1zO1xuICB9XG5cbiAgZ2V0IGhhc2hGb3JWYWx1ZSgpOiBQaWNrYWJsZVZhbHVlRmllbGRIYXNoRm48VD4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLmhhc2hGb3JWYWx1ZSA/PyAoKHgpID0+IHggYXMgYW55KTtcbiAgfVxuXG4gIGdldCBkaXNwbGF5Rm9yVmFsdWUoKTogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheUZuPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5kaXNwbGF5Rm9yVmFsdWU7XG4gIH1cblxuICBnZXQgc2hvd0ZpbHRlcklucHV0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuZmllbGQuZmlsdGVyVmFsdWVzKTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJWYWx1ZXNGbigpOiBQaWNrYWJsZVZhbHVlRmllbGRGaWx0ZXJGbjxUPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQuZmlsdGVyVmFsdWVzID8/ICgoXywgeCkgPT4gb2YoeC5tYXAoeSA9PiB5LnZhbHVlKSkpO1xuICB9XG5cbiAgZ2V0IHNraXBGaWx0ZXJGbk9uRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQuc2tpcEZpbHRlckZuT25FbXB0eSA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IF9maWx0ZXJWYWx1ZXMoKTogUGlja2FibGVWYWx1ZUZpZWxkRmlsdGVyRm48VD4ge1xuICAgIGxldCBmbjogUGlja2FibGVWYWx1ZUZpZWxkRmlsdGVyRm48VD47XG5cbiAgICBpZiAodGhpcy5za2lwRmlsdGVyRm5PbkVtcHR5KSB7XG4gICAgICBmbiA9IChmaWx0ZXJUZXh0OiBNYXliZTxzdHJpbmc+LCB2YWx1ZXM6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPltdKTogT2JzZXJ2YWJsZTxUW10+ID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdDogT2JzZXJ2YWJsZTxUW10+O1xuXG4gICAgICAgIGlmIChmaWx0ZXJUZXh0KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5maWx0ZXJWYWx1ZXNGbihmaWx0ZXJUZXh0LCB2YWx1ZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IG9mKHZhbHVlcy5tYXAoeCA9PiB4LnZhbHVlKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm4gPSB0aGlzLmZpbHRlclZhbHVlc0ZuO1xuICAgIH1cblxuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIGdldCBzaG93VGV4dEZpbHRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5zaG93VGV4dEZpbHRlciA/PyBCb29sZWFuKHRoaXMuZmllbGQuZmlsdGVyVmFsdWVzKTtcbiAgfVxuXG4gIGdldCBsb2FkVmFsdWVzRm4oKTogUGlja2FibGVWYWx1ZUZpZWxkTG9hZFZhbHVlc0ZuPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5sb2FkVmFsdWVzO1xuICB9XG5cbiAgZ2V0IHZhbHVlcygpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLl9nZXRWYWx1ZU9uRm9ybUNvbnRyb2wodGhpcy5mb3JtQ29udHJvbC52YWx1ZSkgPz8gW107XG4gIH1cblxuICBnZXQgZm9vdGVyQ29uZmlnKCk6IE1heWJlPERieEluamVjdGVkQ29tcG9uZW50Q29uZmlnPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQuZm9vdGVyQ29uZmlnO1xuICB9XG5cbiAgbG9hZERpc3BsYXlWYWx1ZXNGb3JWYWx1ZXModmFsdWVzOiBUW10pOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPltdPj4ge1xuICAgIHJldHVybiB0aGlzLmxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzLm1hcCgodmFsdWUpID0+ICh7IHZhbHVlIH0pKSk7XG4gIH1cblxuICBsb2FkRGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkVmFsdWU8VD5bXSk6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+W10+PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHZhbHVlcykucGlwZShcbiAgICAgIG1hcCgoZGlzcGxheVZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXSkgPT4gKHsgbG9hZGluZzogZmFsc2UsIG1vZGVsOiBkaXNwbGF5VmFsdWVzIH0pKSxcbiAgICAgIHN0YXJ0V2l0aCh7IGxvYWRpbmc6IHRydWUgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBnZXREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzOiBQaWNrYWJsZVZhbHVlRmllbGRWYWx1ZTxUPltdKTogT2JzZXJ2YWJsZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlIYXNoTWFwLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoZGlzcGxheU1hcCkgPT4ge1xuICAgICAgICBjb25zdCBtYXBwaW5nUmVzdWx0ID0gdmFsdWVzXG4gICAgICAgICAgLm1hcCh4ID0+IFt4LCB0aGlzLmhhc2hGb3JWYWx1ZSh4LnZhbHVlKV0pXG4gICAgICAgICAgLm1hcCgoW3gsIGhhc2hdLCBpKSA9PiBbaSwgaGFzaCwgeCwgZGlzcGxheU1hcC5nZXQoaGFzaCldIGFzIFtudW1iZXIsIGFueSwgUGlja2FibGVWYWx1ZUZpZWxkVmFsdWU8VD4sIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+XSk7XG5cbiAgICAgICAgY29uc3QgaGFzRGlzcGxheSA9IG1hcHBpbmdSZXN1bHQuZmlsdGVyKHggPT4gQm9vbGVhbih4WzNdKSk7XG4gICAgICAgIGNvbnN0IG5lZWRzRGlzcGxheSA9IG1hcHBpbmdSZXN1bHQuZmlsdGVyKHggPT4gIXhbM10pO1xuXG4gICAgICAgIGlmIChuZWVkc0Rpc3BsYXkubGVuZ3RoID4gMCkge1xuXG4gICAgICAgICAgLy8gR28gZ2V0IHRoZSBkaXNwbGF5IHZhbHVlLlxuICAgICAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZXNPYnMgPSB0aGlzLmRpc3BsYXlGb3JWYWx1ZShuZWVkc0Rpc3BsYXkubWFwKHggPT4geFsyXSkpO1xuXG4gICAgICAgICAgcmV0dXJuIGRpc3BsYXlWYWx1ZXNPYnMucGlwZShcbiAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICBtYXAoKGRpc3BsYXlSZXN1bHRzKSA9PiB7XG5cbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNXaXRoSGFzaDogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXSA9IGRpc3BsYXlSZXN1bHRzLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICh4IGFzIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+KS5faGFzaCA9IHRoaXMuaGFzaEZvclZhbHVlKHgudmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiAoeCBhcyBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPik7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG1hcCB0byByZS1qb2luIHZhbHVlcyBsYXRlci5cbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNNYXBwaW5nOiBbUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD4sIGFueV1bXSA9IGRpc3BsYXlSZXN1bHRzV2l0aEhhc2gubWFwKHggPT4gW3gsIHguX2hhc2hdKTtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWVJbmRleEhhc2hNYXAgPSBuZXcgTWFwKGRpc3BsYXlSZXN1bHRzTWFwcGluZy5tYXAoKFt4LCBoYXNoXSkgPT4gW2hhc2gsIHhdKSk7XG5cbiAgICAgICAgICAgICAgLy8gVXBkYXRlIGRpc3BsYXlNYXAuIE5vIG5lZWQgdG8gcHVzaCBhbiB1cGRhdGUgbm90aWZpY2F0aW9uLlxuICAgICAgICAgICAgICBkaXNwbGF5UmVzdWx0c01hcHBpbmcuZm9yRWFjaCgoW3gsIGhhc2hdKSA9PiBkaXNwbGF5TWFwLnNldChoYXNoLCB4KSk7XG5cbiAgICAgICAgICAgICAgLy8gWmlwIHZhbHVlcyBiYWNrIHRvZ2V0aGVyLlxuICAgICAgICAgICAgICBjb25zdCBuZXdEaXNwbGF5VmFsdWVzID0gbWFwcGluZ1Jlc3VsdC5tYXAoeCA9PiB4WzNdID8/IHZhbHVlSW5kZXhIYXNoTWFwLmdldCh4WzFdKSk7XG5cbiAgICAgICAgICAgICAgLy8gUmV0dXJuIGRpc3BsYXkgdmFsdWVzLlxuICAgICAgICAgICAgICByZXR1cm4gbmV3RGlzcGxheVZhbHVlcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgIC8vIElmIGFsbCBkaXNwbGF5IHZhbHVlcyBhcmUgaGFzaGVkIHJldHVybiB0aGF0LlxuICAgICAgICAgIHJldHVybiBvZihoYXNEaXNwbGF5Lm1hcCh4ID0+IHhbM10pKSBhcyBPYnNlcnZhYmxlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+W10+O1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgLy8gRm9jdXMgYWZ0ZXIgZmluaXNoZWQgbG9hZGluZyBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAgdGhpcy5jb250ZXh0LmxvYWRpbmckLnBpcGUoXG4gICAgICBkZWxheSgxMCksXG4gICAgICBmaWx0ZXIoeCA9PiB4KSxcbiAgICAgIGZpcnN0KCksXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5maWx0ZXJNYXRJbnB1dD8uZm9jdXMoKTtcbiAgICB9KVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcGxheUhhc2hNYXAuY29tcGxldGUoKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZmlsdGVyUmVzdWx0c0NvbnRleHQuZGVzdHJveSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9nZXRWYWx1ZU9uRm9ybUNvbnRyb2wodmFsdWVPbkZvcm1Db250cm9sOiBhbnkpOiBUW10ge1xuICAgIGNvbnN0IHZhbHVlID0gKHZhbHVlT25Gb3JtQ29udHJvbCAhPSBudWxsKSA/IFtdLmNvbmNhdCh2YWx1ZU9uRm9ybUNvbnRyb2wpIDogW107ICAvLyBBbHdheXMgcmV0dXJuIGFuIGFycmF5LlxuICAgIHJldHVybiB2YWx1ZSBhcyBUW107XG4gIH1cblxuICBhZGRWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VmFsdWVzKFsuLi50aGlzLnZhbHVlcywgdmFsdWVdKTtcbiAgfVxuXG4gIHJlbW92ZVZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgY29uc3QgaGFzaFRvRmlsdGVyID0gdGhpcy5oYXNoRm9yVmFsdWUodmFsdWUpO1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMudmFsdWVzLmZpbHRlcih4ID0+IHRoaXMuaGFzaEZvclZhbHVlKHgpICE9PSBoYXNoVG9GaWx0ZXIpO1xuICAgIHRoaXMuc2V0VmFsdWVzKHZhbHVlcyk7XG4gIH1cblxuICBzZXRWYWx1ZXModmFsdWVzOiBUW10pOiB2b2lkIHtcblxuICAgIC8vIFVzZSB0byBmaWx0ZXIgbm9uLXVuaXF1ZSB2YWx1ZXMuXG4gICAgaWYgKHRoaXMuaGFzaEZvclZhbHVlKSB7XG4gICAgICB2YWx1ZXMgPSBmaW5kVW5pcXVlKHZhbHVlcywgdGhpcy5oYXNoRm9yVmFsdWUpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5tdWx0aVNlbGVjdCkge1xuICAgICAgdmFsdWVzID0gW3ZhbHVlc1swXV0uZmlsdGVyKHggPT4geCAhPSBudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRWYWx1ZU9uRm9ybUNvbnRyb2wodmFsdWVzKTtcbiAgfVxuXG4gIC8vIE1BUks6IEludGVybmFsXG4gIHByb3RlY3RlZCBfc2V0VmFsdWVPbkZvcm1Db250cm9sKHZhbHVlczogVFtdKTogdm9pZCB7XG4gICAgbGV0IG5ld1ZhbHVlOiBUIHwgVFtdID0gdmFsdWVzO1xuXG4gICAgaWYgKCF0aGlzLmFzQXJyYXlWYWx1ZSkge1xuICAgICAgbmV3VmFsdWUgPSBbdmFsdWVzWzBdXS5maWx0ZXIoeCA9PiB4ICE9IG51bGwpWzBdO1xuICAgIH1cblxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgfVxuXG59XG4iXX0=
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2FibGUuZmllbGQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvc2VsZWN0aW9uL3BpY2thYmxlL3BpY2thYmxlLmZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFnQixhQUFhLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLCtCQUErQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pLLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQW1CLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEwsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFpRnhDOztHQUVHO0FBRUgsTUFBTSxPQUFPLHFDQUF5QyxTQUFRLFNBQW9FO0lBRGxJOztRQU1XLGNBQVMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVqQyxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUF5QixTQUFT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Q0FBQyxDQUFDO1NBQ2hEO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1NBQzdDO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxpQkFBaUI7SUFDUCxzQkFBc0IsQ0FBQyxNQUFXO1FBQzFDLElBQUksUUFBUSxHQUFZLE1BQU0sQ0FBQztRQUUvQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixRQUFRLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEQ7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDakMsQ0FBQzs7a0lBM1dVLHFDQUFxQztzSEFBckMscUNBQXFDOzJGQUFyQyxxQ0FBcUM7a0JBRGpELFNBQVM7OEJBSVIsY0FBYztzQkFEYixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERieEluamVjdGVkQ29tcG9uZW50Q29uZmlnIH0gZnJvbSBcIkBkZXJlZWtiL2RieC1jb3JlXCI7XG5pbXBvcnQgeyBiZWdpbkxvYWRpbmcsIExvYWRpbmdTdGF0ZSwgc3VjY2Vzc1Jlc3VsdCwgbWFwTG9hZGluZ1N0YXRlUmVzdWx0cywgZmlsdGVyTWF5YmUsIExpc3RMb2FkaW5nU3RhdGVDb250ZXh0SW5zdGFuY2UsIGlzTGlzdExvYWRpbmdTdGF0ZUVtcHR5IH0gZnJvbSBcIkBkZXJlZWtiL3J4anNcIjtcbmltcG9ydCB7IGNvbnZlcnRNYXliZVRvQXJyYXksIGZpbmRVbmlxdWUsIG1ha2VWYWx1ZXNHcm91cE1hcCwgTWF5YmUgfSBmcm9tIFwiQGRlcmVla2IvdXRpbFwiO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XG5pbXBvcnQgeyBGaWVsZFR5cGVDb25maWcsIEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSBcIkBuZ3gtZm9ybWx5L2NvcmVcIjtcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gXCJAbmd4LWZvcm1seS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiwgZmlsdGVyLCBtYXAsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN3aXRjaE1hcCwgc3RhcnRXaXRoLCBzaGFyZVJlcGxheSwgbWVyZ2VNYXAsIGZpcnN0LCBkZWxheSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5Rm4sIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZSwgUGlja2FibGVWYWx1ZUZpZWxkRmlsdGVyRm4sIFBpY2thYmxlVmFsdWVGaWVsZEhhc2hGbiwgUGlja2FibGVWYWx1ZUZpZWxkTG9hZFZhbHVlc0ZuLCBQaWNrYWJsZVZhbHVlRmllbGRWYWx1ZSB9IGZyb20gXCIuL3BpY2thYmxlXCI7XG5pbXBvcnQgeyBEYnhWYWx1ZUxpc3RJdGVtIH0gZnJvbSBcIkBkZXJlZWtiL2RieC13ZWJcIjtcbmltcG9ydCB7IGNhbWVsQ2FzZSB9IGZyb20gXCJjaGFuZ2UtY2FzZVwiO1xuXG4vKipcbiAqIFdyYXBzIHRoZSBzZWxlY3RlZCBzdGF0ZSB3aXRoIHRoZSBpdGVtcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaWNrYWJsZUl0ZW1GaWVsZEl0ZW08VD4gZXh0ZW5kcyBEYnhWYWx1ZUxpc3RJdGVtPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPj4geyB9XG5cbmV4cG9ydCB0eXBlIFBpY2thYmxlSXRlbUZpZWxkSXRlbVNvcnRGbjxUPiA9IChpdGVtczogUGlja2FibGVJdGVtRmllbGRJdGVtPFQ+W10pID0+IFBpY2thYmxlSXRlbUZpZWxkSXRlbTxUPltdO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBpY2thYmxlVmFsdWVGaWVsZHNGaWVsZENvbmZpZzxUPiB7XG4gIC8qKlxuICAgKiBMb2FkcyBhbGwgcGlja2FibGUgdmFsdWVzLlxuICAgKi9cbiAgbG9hZFZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkTG9hZFZhbHVlc0ZuPFQ+O1xuICAvKipcbiAgICogVXNlZCBmb3IgYnVpbGRpbmcgYSBkaXNwbGF5IHZhbHVlIGdpdmVuIHRoZSBpbnB1dC5cbiAgICovXG4gIGRpc3BsYXlGb3JWYWx1ZTogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheUZuPFQ+O1xuICAvKipcbiAgICogVXNlZCBmb3IgaGFzaGluZyBkaXNwbGF5IHZhbHVlcyBhbmQgb21pdHRpbmcgcmVwZWF0IHZhbHVlcy5cbiAgICpcbiAgICogSWYgaGFzaEZvclZhbHVlIGlzIG5vdCBwcm92aWRlZCwgdGhlIHZhbHVlJ3MgdmFsdWUgd2lsbCBiZSB1c2VkIGFzIGlzLlxuICAgKi9cbiAgaGFzaEZvclZhbHVlPzogUGlja2FibGVWYWx1ZUZpZWxkSGFzaEZuPFQ+O1xuICAvKipcbiAgICogVXNlZCBmb3IgZmlsdGVyaW5nIHZhbHVlcyB2aWEgdGhlIHNlYXJjaCB0ZXh0LlxuICAgKi9cbiAgZmlsdGVyVmFsdWVzPzogUGlja2FibGVWYWx1ZUZpZWxkRmlsdGVyRm48VD47XG4gIC8qKlxuICAgKiBVc2VkIGZvciBzb3J0aW5nIHRoZSBpdGVtcyBiZWZvcmUgdGhleSBhcmUgZGlzcGxheWVkLlxuICAgKiBcbiAgICogU2hvdWxkIG9ubHkgYmUgdXNlZCB0byBzb3J0IHZhbHVlcy5cbiAgICovXG4gIHNvcnRJdGVtcz86IFBpY2thYmxlSXRlbUZpZWxkSXRlbVNvcnRGbjxUPjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IG11bHRpcGxlIGl0ZW1zIHRvIGJlIHNlbGVjdGVkLlxuICAgKi9cbiAgbXVsdGlTZWxlY3Q/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gc2V0L2dldCB2YWx1ZXMgYXMgYW4gYXJyYXkgb3IgYSBzaW5nbGUgdmFsdWUuIElmIHNldCBmYWxzZSwgbXVsdGlTZWxlY3QgaXMgaWdub3JlZC5cbiAgICovXG4gIGFzQXJyYXlWYWx1ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSB0ZXh0IGZpbHRlci4gVHJ1ZSBieSBkZWZhdWx0IGlmIGZpbHRlclZhbHVlcyBpcyBwcm92aWRlZC5cbiAgICovXG4gIHNob3dUZXh0RmlsdGVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHNraXAgdGhlIGZpbHRlciBmdW5jdGlvbiB3aGVuIHRoZSBpbnB1dCBpcyBlbXB0eS5cbiAgICogXG4gICAqIFRydWUgYnkgZGVmYXVsdC5cbiAgICovXG4gIHNraXBGaWx0ZXJGbk9uRW1wdHk/OiBib29sZWFuO1xuICAvKipcbiAgICogRmlsdGVyIExhYmVsXG4gICAqL1xuICBmaWx0ZXJMYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiB2YWx1ZXMgdGhhdCBjYW4gYmUgcGlja2VkXG4gICAqL1xuICBtYXhQaWNrcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uL2hpbnQgdG8gZGlzcGxheS5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogRm9vdGVyIERpc3BsYXlcbiAgICovXG4gIGZvb3RlckNvbmZpZz86IERieEluamVjdGVkQ29tcG9uZW50Q29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBpY2thYmxlVmFsdWVGaWVsZHNGb3JtbHlGaWVsZENvbmZpZzxUPiBleHRlbmRzIEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgcGlja2FibGVGaWVsZDogUGlja2FibGVWYWx1ZUZpZWxkc0ZpZWxkQ29uZmlnPFQ+O1xufVxuXG4vKipcbiAqIERpc3BsYXllZCB2YWx1ZSB3aXRoIHRoZSBjb21wdXRlZCBoYXNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQsIE0gPSBhbnk+IGV4dGVuZHMgUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQsIE0+IHtcbiAgX2hhc2g6IGFueTtcbn1cblxuLyoqXG4gKiBVc2VkIGZvciBwaWNraW5nIHByZS1zZXQgdmFsdWVzIHVzaW5nIGl0ZW1zIGFzIHRoZSBwcmVzZW50YXRpb24uXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIEFic3RyYWN0RGJ4UGlja2FibGVJdGVtRmllbGREaXJlY3RpdmU8VD4gZXh0ZW5kcyBGaWVsZFR5cGU8UGlja2FibGVWYWx1ZUZpZWxkc0Zvcm1seUZpZWxkQ29uZmlnPFQ+ICYgRmllbGRUeXBlQ29uZmlnPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKCdmaWx0ZXJNYXRJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGZpbHRlck1hdElucHV0ITogTWF0SW5wdXQ7XG5cbiAgcmVhZG9ubHkgaW5wdXRDdHJsID0gbmV3IEZvcm1Db250cm9sKCcnKTtcblxuICBwcml2YXRlIF9mb3JtQ29udHJvbE9icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8QWJzdHJhY3RDb250cm9sPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZm9ybUNvbnRyb2wkID0gdGhpcy5fZm9ybUNvbnRyb2xPYnMucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICBwcml2YXRlIF9kaXNwbGF5SGFzaE1hcCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPGFueSwgUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+Pj4obmV3IE1hcCgpKTtcblxuICByZWFkb25seSBmaWx0ZXJJbnB1dFZhbHVlJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5pbnB1dEN0cmwudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHVuZGVmaW5lZCBhcyBhbnkpKTtcbiAgcmVhZG9ubHkgZmlsdGVySW5wdXRWYWx1ZVN0cmluZyQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuZmlsdGVySW5wdXRWYWx1ZSQucGlwZShcbiAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbG9hZFJlc3VsdHNEaXNwbGF5VmFsdWVzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPltdPj4gPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKFxuICAgIGZpcnN0KCksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMubG9hZFZhbHVlc0ZuKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoeCkgPT4gdGhpcy5sb2FkRGlzcGxheVZhbHVlc0ZvckZpZWxkVmFsdWVzKHgpKSxcbiAgICAgIHN0YXJ0V2l0aChiZWdpbkxvYWRpbmc8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXT4oKSksXG4gICAgKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBfZm9ybUNvbnRyb2xWYWx1ZTogT2JzZXJ2YWJsZTxUIHwgVFtdPiA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGNvbnRyb2wgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKSlcbiAgKTtcblxuICByZWFkb25seSBsb2FkUmVzdWx0c0Rpc3BsYXlWYWx1ZXMkOiBPYnNlcnZhYmxlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+W10+ID0gdGhpcy5sb2FkUmVzdWx0c0Rpc3BsYXlWYWx1ZXNTdGF0ZSQucGlwZShcbiAgICBtYXAoeCA9PiB4Py52YWx1ZSA/PyBbXSlcbiAgKTtcblxuICAvKipcbiAgICogQ3VycmVudCB2YWx1ZXMgaW4gdGhlIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlcyQ6IE9ic2VydmFibGU8VFtdPiA9IHRoaXMuX2Zvcm1Db250cm9sVmFsdWUucGlwZShcbiAgICBtYXAoY29udmVydE1heWJlVG9BcnJheSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvKipcbiAgICogQ3VycmVudCB2YWx1ZXMgd2l0aCB0aGVpciBkaXNwbGF5IHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheVZhbHVlc1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXT4+ID1cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmxvYWRSZXN1bHRzRGlzcGxheVZhbHVlcyQsIHRoaXMudmFsdWVzJF0pLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKFtkaXNwbGF5VmFsdWVzLCBjdXJyZW50VmFsdWVzXSkgPT4ge1xuICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWVzTWFwID0gbWFrZVZhbHVlc0dyb3VwTWFwKGRpc3BsYXlWYWx1ZXMsICh4KSA9PiB0aGlzLmhhc2hGb3JWYWx1ZSh4LnZhbHVlKSk7XG4gICAgICAgIGNvbnN0IHZhbHVlc05vdEluRGlzcGxheU1hcDogVFtdID0gW107XG5cbiAgICAgICAgY3VycmVudFZhbHVlcy5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5oYXNoRm9yVmFsdWUoeCk7XG4gICAgICAgICAgbGV0IGRpc3BsYXlWYWx1ZTogTWF5YmU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD4+ID0gZGlzcGxheVZhbHVlc01hcC5nZXQoa2V5KT8uWzBdO1xuXG4gICAgICAgICAgaWYgKCFkaXNwbGF5VmFsdWUpIHtcbiAgICAgICAgICAgIHZhbHVlc05vdEluRGlzcGxheU1hcC5wdXNoKHgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHZhbHVlc05vdEluRGlzcGxheU1hcC5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkRGlzcGxheVZhbHVlc0ZvclZhbHVlcyh2YWx1ZXNOb3RJbkRpc3BsYXlNYXApLnBpcGUoXG4gICAgICAgICAgICBtYXAoeCA9PiBtYXBMb2FkaW5nU3RhdGVSZXN1bHRzKHgsIHtcbiAgICAgICAgICAgICAgbWFwVmFsdWU6IChsb2FkZWRWYWx1ZXM6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+W10pID0+IHtcbiAgICAgICAgICAgICAgICBsb2FkZWRWYWx1ZXMuZm9yRWFjaCh4ID0+IHguaXNVbmtub3duID0geC5pc1Vua25vd24gPz8gdHJ1ZSk7IC8vIEFzc2lnbiB1bmtub3duIGZsYWcuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChbLi4uZGlzcGxheVZhbHVlcywgLi4ubG9hZGVkVmFsdWVzXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHN1Y2Nlc3NSZXN1bHQoZGlzcGxheVZhbHVlcykpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgLyoqXG4gICAqIFJlc3VsdHMgdG8gYmUgZGlzcGxheWVkIGlmIGZpbHRlcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyZWRTZWFyY2hSZXN1bHRzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPltdPj4gPSB0aGlzLmxvYWRSZXN1bHRzRGlzcGxheVZhbHVlcyQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHZhbHVlcykgPT4gdGhpcy5maWx0ZXJJbnB1dFZhbHVlU3RyaW5nJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKHRleHQgPT4gY29tYmluZUxhdGVzdChbdGhpcy5fZmlsdGVyVmFsdWVzKHRleHQsIHZhbHVlcyksIHRoaXMuZGlzcGxheVZhbHVlc1N0YXRlJF0pLnBpcGUoXG4gICAgICAgIG1hcCgoW3ZhbHVlcywgZGlzcGxheVN0YXRlXSkgPT4gbWFwTG9hZGluZ1N0YXRlUmVzdWx0cyhkaXNwbGF5U3RhdGUsIHtcbiAgICAgICAgICBtYXBWYWx1ZTogKGRpc3BsYXlWYWx1ZXM6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+W10pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlSGFzaFNldCA9IG5ldyBTZXQodmFsdWVzLm1hcCh4ID0+IHRoaXMuaGFzaEZvclZhbHVlKHgpKSk7XG4gICAgICAgICAgICByZXR1cm4gZGlzcGxheVZhbHVlcy5maWx0ZXIoeCA9PiAheC5pc1Vua25vd24gJiYgdmFsdWVIYXNoU2V0Lmhhcyh4Ll9oYXNoKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSksXG4gICAgICAgIHN0YXJ0V2l0aChiZWdpbkxvYWRpbmcoKSlcbiAgICAgICkpXG4gICAgKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBmaWx0ZXJlZFNlYXJjaFJlc3VsdHMkOiBPYnNlcnZhYmxlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+W10+ID0gdGhpcy5maWx0ZXJlZFNlYXJjaFJlc3VsdHNTdGF0ZSQucGlwZShcbiAgICBtYXAoeCA9PiB4Py52YWx1ZSksXG4gICAgZmlsdGVyTWF5YmUoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGl0ZW1zJDogT2JzZXJ2YWJsZTxQaWNrYWJsZUl0ZW1GaWVsZEl0ZW08VD5bXT4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmZpbHRlcmVkU2VhcmNoUmVzdWx0cyQsIHRoaXMudmFsdWVzJF0pLnBpcGUoXG4gICAgbWFwKChbZGlzcGxheVZhbHVlcywgdmFsdWVzXSkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRIYXNoVmFsdWVzU2V0ID0gbmV3IFNldCh2YWx1ZXMubWFwKHggPT4gdGhpcy5oYXNoRm9yVmFsdWUoeCkpKTtcbiAgICAgIGxldCBpdGVtczogUGlja2FibGVJdGVtRmllbGRJdGVtPFQ+W10gPSBkaXNwbGF5VmFsdWVzLm1hcCgoeCkgPT4gKHsgdmFsdWU6IHgsIHNlbGVjdGVkOiBzZWxlY3RlZEhhc2hWYWx1ZXNTZXQuaGFzKHguX2hhc2gpIH0pKTtcblxuICAgICAgaWYgKHRoaXMuc29ydEl0ZW1zKSB7XG4gICAgICAgIGl0ZW1zID0gdGhpcy5zb3J0SXRlbXMoaXRlbXMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpdGVtc0xvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPiA9IHRoaXMubG9hZFJlc3VsdHNEaXNwbGF5VmFsdWVzJC5waXBlKFxuICAgIHN3aXRjaE1hcCh4ID0+IHRoaXMuaXRlbXMkLnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgbWFwKHggPT4gc3VjY2Vzc1Jlc3VsdCh4KSksXG4gICAgICBzdGFydFdpdGgoYmVnaW5Mb2FkaW5nKCkpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApKVxuICApO1xuXG4gIC8qKlxuICAgKiBDb250ZXh0IHVzZWQgZm9yIG1hbmFnaW5nIHRoZSBsb2FkaW5nIG9mIGl0ZW1zLCBvciB3aGVuIHRoZSBjdXJyZW50IHJlc3VsdHMgY2hhbmdlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dCA9IG5ldyBMaXN0TG9hZGluZ1N0YXRlQ29udGV4dEluc3RhbmNlKHsgb2JzOiB0aGlzLml0ZW1zTG9hZGluZ1N0YXRlJCwgc2hvd0xvYWRpbmdPbk5vVmFsdWU6IGZhbHNlIH0pO1xuXG4gIHJlYWRvbmx5IGZpbHRlckl0ZW1zTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU+ID0gdGhpcy5pdGVtcyQucGlwZShcbiAgICBtYXAoeCA9PiBzdWNjZXNzUmVzdWx0KHgpKSxcbiAgICBzdGFydFdpdGgoYmVnaW5Mb2FkaW5nKCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIENvbnRleHQgdXNlZCBmb3Igc2VhcmNoaW5nL2ZpbHRlcmluZy5cbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlclJlc3VsdHNDb250ZXh0ID0gbmV3IExpc3RMb2FkaW5nU3RhdGVDb250ZXh0SW5zdGFuY2UoeyBvYnM6IHRoaXMuZmlsdGVyZWRTZWFyY2hSZXN1bHRzU3RhdGUkLCBzaG93TG9hZGluZ09uTm9WYWx1ZTogdHJ1ZSB9KTtcblxuICByZWFkb25seSBub0l0ZW1zQXZhaWxhYmxlJCA9IHRoaXMuZmlsdGVySXRlbXNMb2FkaW5nU3RhdGUkLnBpcGUoaXNMaXN0TG9hZGluZ1N0YXRlRW1wdHkoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG5cbiAgZ2V0IHJlYWRvbmx5KCk6IE1heWJlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC50ZW1wbGF0ZU9wdGlvbnM/LnJlYWRvbmx5O1xuICB9XG5cbiAgZ2V0IGlzUmVhZG9ubHlPckRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQ7XG4gIH1cblxuICBnZXQgcGlja2FibGVGaWVsZCgpOiBQaWNrYWJsZVZhbHVlRmllbGRzRmllbGRDb25maWc8VD4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnBpY2thYmxlRmllbGQ7XG4gIH1cblxuICBnZXQgbXVsdGlTZWxlY3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5tdWx0aVNlbGVjdCA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IGFzQXJyYXlWYWx1ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5waWNrYWJsZUZpZWxkLmFzQXJyYXlWYWx1ZSA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IGZpbHRlckxhYmVsKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnBpY2thYmxlRmllbGQuZmlsdGVyTGFiZWw7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLm5hbWUgPz8gKGNhbWVsQ2FzZSh0aGlzLmxhYmVsID8/IHRoaXMua2V5IGFzIHN0cmluZykpO1xuICB9XG5cbiAgZ2V0IGxhYmVsKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnRlbXBsYXRlT3B0aW9ucz8ubGFiZWw7XG4gIH1cblxuICBnZXQgYXV0b2NvbXBsZXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmZpZWxkLnRlbXBsYXRlT3B0aW9ucz8uYXR0cmlidXRlcz8uWydhdXRvY29tcGxldGUnXSBhcyBhbnkpID8/IHRoaXMua2V5IGFzIHN0cmluZztcbiAgfVxuXG4gIGdldCBzb3J0SXRlbXMoKTogTWF5YmU8UGlja2FibGVJdGVtRmllbGRJdGVtU29ydEZuPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5zb3J0SXRlbXM7XG4gIH1cblxuICBnZXQgaGFzaEZvclZhbHVlKCk6IFBpY2thYmxlVmFsdWVGaWVsZEhhc2hGbjxUPiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5oYXNoRm9yVmFsdWUgPz8gKCh4KSA9PiB4IGFzIGFueSk7XG4gIH1cblxuICBnZXQgZGlzcGxheUZvclZhbHVlKCk6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlGbjxUPiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5kaXNwbGF5Rm9yVmFsdWU7XG4gIH1cblxuICBnZXQgc2hvd0ZpbHRlcklucHV0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMucGlja2FibGVGaWVsZC5maWx0ZXJWYWx1ZXMpO1xuICB9XG5cbiAgZ2V0IGZpbHRlclZhbHVlc0ZuKCk6IFBpY2thYmxlVmFsdWVGaWVsZEZpbHRlckZuPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5waWNrYWJsZUZpZWxkLmZpbHRlclZhbHVlcyA/PyAoKF8sIHgpID0+IG9mKHgubWFwKHkgPT4geS52YWx1ZSkpKTtcbiAgfVxuXG4gIGdldCBza2lwRmlsdGVyRm5PbkVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBpY2thYmxlRmllbGQuc2tpcEZpbHRlckZuT25FbXB0eSA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IF9maWx0ZXJWYWx1ZXMoKTogUGlja2FibGVWYWx1ZUZpZWxkRmlsdGVyRm48VD4ge1xuICAgIGxldCBmbjogUGlja2FibGVWYWx1ZUZpZWxkRmlsdGVyRm48VD47XG5cbiAgICBpZiAodGhpcy5za2lwRmlsdGVyRm5PbkVtcHR5KSB7XG4gICAgICBmbiA9IChmaWx0ZXJUZXh0OiBNYXliZTxzdHJpbmc+LCB2YWx1ZXM6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPltdKTogT2JzZXJ2YWJsZTxUW10+ID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdDogT2JzZXJ2YWJsZTxUW10+O1xuXG4gICAgICAgIGlmIChmaWx0ZXJUZXh0KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5maWx0ZXJWYWx1ZXNGbihmaWx0ZXJUZXh0LCB2YWx1ZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IG9mKHZhbHVlcy5tYXAoeCA9PiB4LnZhbHVlKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm4gPSB0aGlzLmZpbHRlclZhbHVlc0ZuO1xuICAgIH1cblxuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIGdldCBzaG93VGV4dEZpbHRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5waWNrYWJsZUZpZWxkLnNob3dUZXh0RmlsdGVyID8/IEJvb2xlYW4odGhpcy5waWNrYWJsZUZpZWxkLmZpbHRlclZhbHVlcyk7XG4gIH1cblxuICBnZXQgbG9hZFZhbHVlc0ZuKCk6IFBpY2thYmxlVmFsdWVGaWVsZExvYWRWYWx1ZXNGbjxUPiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5sb2FkVmFsdWVzO1xuICB9XG5cbiAgZ2V0IHZhbHVlcygpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLl9nZXRWYWx1ZU9uRm9ybUNvbnRyb2wodGhpcy5mb3JtQ29udHJvbC52YWx1ZSkgPz8gW107XG4gIH1cblxuICBnZXQgZm9vdGVyQ29uZmlnKCk6IE1heWJlPERieEluamVjdGVkQ29tcG9uZW50Q29uZmlnPiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2FibGVGaWVsZC5mb290ZXJDb25maWc7XG4gIH1cblxuICBsb2FkRGlzcGxheVZhbHVlc0ZvclZhbHVlcyh2YWx1ZXM6IFRbXSk6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+W10+PiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZERpc3BsYXlWYWx1ZXNGb3JGaWVsZFZhbHVlcyh2YWx1ZXMubWFwKCh2YWx1ZSkgPT4gKHsgdmFsdWUgfSkpKTtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzOiBQaWNrYWJsZVZhbHVlRmllbGRWYWx1ZTxUPltdKTogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8UGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXT4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzKS5waXBlKFxuICAgICAgbWFwKChkaXNwbGF5VmFsdWVzOiBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPltdKSA9PiBzdWNjZXNzUmVzdWx0KGRpc3BsYXlWYWx1ZXMpKSxcbiAgICAgIHN0YXJ0V2l0aChiZWdpbkxvYWRpbmcoKSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBnZXREaXNwbGF5VmFsdWVzRm9yRmllbGRWYWx1ZXModmFsdWVzOiBQaWNrYWJsZVZhbHVlRmllbGRWYWx1ZTxUPltdKTogT2JzZXJ2YWJsZTxQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlIYXNoTWFwLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoZGlzcGxheU1hcCkgPT4ge1xuICAgICAgICBjb25zdCBtYXBwaW5nUmVzdWx0ID0gdmFsdWVzXG4gICAgICAgICAgLm1hcCh4ID0+IFt4LCB0aGlzLmhhc2hGb3JWYWx1ZSh4LnZhbHVlKV0pXG4gICAgICAgICAgLm1hcCgoW3gsIGhhc2hdLCBpKSA9PiBbaSwgaGFzaCwgeCwgZGlzcGxheU1hcC5nZXQoaGFzaCldIGFzIFtudW1iZXIsIGFueSwgUGlja2FibGVWYWx1ZUZpZWxkVmFsdWU8VD4sIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+XSk7XG5cbiAgICAgICAgY29uc3QgaGFzRGlzcGxheSA9IG1hcHBpbmdSZXN1bHQuZmlsdGVyKHggPT4gQm9vbGVhbih4WzNdKSk7XG4gICAgICAgIGNvbnN0IG5lZWRzRGlzcGxheSA9IG1hcHBpbmdSZXN1bHQuZmlsdGVyKHggPT4gIXhbM10pO1xuXG4gICAgICAgIGlmIChuZWVkc0Rpc3BsYXkubGVuZ3RoID4gMCkge1xuXG4gICAgICAgICAgLy8gR28gZ2V0IHRoZSBkaXNwbGF5IHZhbHVlLlxuICAgICAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZXNPYnMgPSB0aGlzLmRpc3BsYXlGb3JWYWx1ZShuZWVkc0Rpc3BsYXkubWFwKHggPT4geFsyXSkpO1xuXG4gICAgICAgICAgcmV0dXJuIGRpc3BsYXlWYWx1ZXNPYnMucGlwZShcbiAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICBtYXAoKGRpc3BsYXlSZXN1bHRzKSA9PiB7XG5cbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNXaXRoSGFzaDogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD5bXSA9IGRpc3BsYXlSZXN1bHRzLm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICh4IGFzIFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+KS5faGFzaCA9IHRoaXMuaGFzaEZvclZhbHVlKHgudmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiAoeCBhcyBQaWNrYWJsZVZhbHVlRmllbGREaXNwbGF5VmFsdWVXaXRoSGFzaDxUPik7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG1hcCB0byByZS1qb2luIHZhbHVlcyBsYXRlci5cbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNNYXBwaW5nOiBbUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlV2l0aEhhc2g8VD4sIGFueV1bXSA9IGRpc3BsYXlSZXN1bHRzV2l0aEhhc2gubWFwKHggPT4gW3gsIHguX2hhc2hdKTtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWVJbmRleEhhc2hNYXAgPSBuZXcgTWFwKGRpc3BsYXlSZXN1bHRzTWFwcGluZy5tYXAoKFt4LCBoYXNoXSkgPT4gW2hhc2gsIHhdKSk7XG5cbiAgICAgICAgICAgICAgLy8gVXBkYXRlIGRpc3BsYXlNYXAuIE5vIG5lZWQgdG8gcHVzaCBhbiB1cGRhdGUgbm90aWZpY2F0aW9uLlxuICAgICAgICAgICAgICBkaXNwbGF5UmVzdWx0c01hcHBpbmcuZm9yRWFjaCgoW3gsIGhhc2hdKSA9PiBkaXNwbGF5TWFwLnNldChoYXNoLCB4KSk7XG5cbiAgICAgICAgICAgICAgLy8gWmlwIHZhbHVlcyBiYWNrIHRvZ2V0aGVyLlxuICAgICAgICAgICAgICBjb25zdCBuZXdEaXNwbGF5VmFsdWVzID0gbWFwcGluZ1Jlc3VsdC5tYXAoeCA9PiB4WzNdID8/IHZhbHVlSW5kZXhIYXNoTWFwLmdldCh4WzFdKSk7XG5cbiAgICAgICAgICAgICAgLy8gUmV0dXJuIGRpc3BsYXkgdmFsdWVzLlxuICAgICAgICAgICAgICByZXR1cm4gbmV3RGlzcGxheVZhbHVlcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgIC8vIElmIGFsbCBkaXNwbGF5IHZhbHVlcyBhcmUgaGFzaGVkIHJldHVybiB0aGF0LlxuICAgICAgICAgIHJldHVybiBvZihoYXNEaXNwbGF5Lm1hcCh4ID0+IHhbM10pKSBhcyBPYnNlcnZhYmxlPFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZVdpdGhIYXNoPFQ+W10+O1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLm5leHQodGhpcy5mb3JtQ29udHJvbCk7XG5cbiAgICAvLyBGb2N1cyBhZnRlciBmaW5pc2hlZCBsb2FkaW5nIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICB0aGlzLmNvbnRleHQubG9hZGluZyQucGlwZShcbiAgICAgIGRlbGF5KDEwKSxcbiAgICAgIGZpbHRlcih4ID0+IHgpLFxuICAgICAgZmlyc3QoKSxcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZpbHRlck1hdElucHV0Py5mb2N1cygpO1xuICAgIH0pXG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX2Rpc3BsYXlIYXNoTWFwLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLmZpbHRlclJlc3VsdHNDb250ZXh0LmRlc3Ryb3koKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfZ2V0VmFsdWVPbkZvcm1Db250cm9sKHZhbHVlT25Gb3JtQ29udHJvbDogYW55KTogVFtdIHtcbiAgICBjb25zdCB2YWx1ZSA9ICh2YWx1ZU9uRm9ybUNvbnRyb2wgIT0gbnVsbCkgPyBbXS5jb25jYXQodmFsdWVPbkZvcm1Db250cm9sKSA6IFtdOyAgLy8gQWx3YXlzIHJldHVybiBhbiBhcnJheS5cbiAgICByZXR1cm4gdmFsdWUgYXMgVFtdO1xuICB9XG5cbiAgYWRkVmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcbiAgICB0aGlzLnNldFZhbHVlcyhbLi4udGhpcy52YWx1ZXMsIHZhbHVlXSk7XG4gIH1cblxuICByZW1vdmVWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIGNvbnN0IGhhc2hUb0ZpbHRlciA9IHRoaXMuaGFzaEZvclZhbHVlKHZhbHVlKTtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnZhbHVlcy5maWx0ZXIoeCA9PiB0aGlzLmhhc2hGb3JWYWx1ZSh4KSAhPT0gaGFzaFRvRmlsdGVyKTtcbiAgICB0aGlzLnNldFZhbHVlcyh2YWx1ZXMpO1xuICB9XG5cbiAgc2V0VmFsdWVzKHZhbHVlczogVFtdKTogdm9pZCB7XG5cbiAgICAvLyBVc2UgdG8gZmlsdGVyIG5vbi11bmlxdWUgdmFsdWVzLlxuICAgIGlmICh0aGlzLmhhc2hGb3JWYWx1ZSkge1xuICAgICAgdmFsdWVzID0gZmluZFVuaXF1ZSh2YWx1ZXMsIHRoaXMuaGFzaEZvclZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubXVsdGlTZWxlY3QpIHtcbiAgICAgIHZhbHVlcyA9IFt2YWx1ZXNbMF1dLmZpbHRlcih4ID0+IHggIT0gbnVsbCk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0VmFsdWVPbkZvcm1Db250cm9sKHZhbHVlcyk7XG4gIH1cblxuICAvLyBNQVJLOiBJbnRlcm5hbFxuICBwcm90ZWN0ZWQgX3NldFZhbHVlT25Gb3JtQ29udHJvbCh2YWx1ZXM6IFRbXSk6IHZvaWQge1xuICAgIGxldCBuZXdWYWx1ZTogVCB8IFRbXSA9IHZhbHVlcztcblxuICAgIGlmICghdGhpcy5hc0FycmF5VmFsdWUpIHtcbiAgICAgIG5ld1ZhbHVlID0gW3ZhbHVlc1swXV0uZmlsdGVyKHggPT4geCAhPSBudWxsKVswXTtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxufVxuIl19
@@ -0,0 +1,39 @@
1
+ import { of } from 'rxjs';
2
+ import { formlyField, templateOptionsForFieldConfig } from '../../field';
3
+ export function filterPickableItemFieldValuesByLabel(filterText, values) {
4
+ let filteredValues;
5
+ if (filterText) {
6
+ const searchString = filterText.toLocaleLowerCase();
7
+ filteredValues = values.filter(x => x.label.toLocaleLowerCase().indexOf(searchString) !== -1);
8
+ }
9
+ else {
10
+ filteredValues = values;
11
+ }
12
+ return of(filteredValues.map(x => x.value));
13
+ }
14
+ export function sortPickableItemsByLabel(chips) {
15
+ return chips.sort((a, b) => a.value.label.localeCompare(b.value.label));
16
+ }
17
+ export function pickableItemChipField(config) {
18
+ const { key } = config;
19
+ return formlyField({
20
+ key,
21
+ type: 'pickablechipfield',
22
+ ...templateOptionsForFieldConfig(config, {
23
+ autocomplete: false
24
+ }),
25
+ pickableField: config
26
+ });
27
+ }
28
+ export function pickableItemListField(config) {
29
+ const { key } = config;
30
+ return formlyField({
31
+ key,
32
+ type: 'pickablelistfield',
33
+ ...templateOptionsForFieldConfig(config, {
34
+ autocomplete: false
35
+ }),
36
+ pickableField: config
37
+ });
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2FibGUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vcGlja2FibGUvcGlja2FibGUuZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQXNCLFdBQVcsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUs3RixNQUFNLFVBQVUsb0NBQW9DLENBQUksVUFBeUIsRUFBRSxNQUEyQztJQUM1SCxJQUFJLGNBQW1ELENBQUM7SUFFeEQsSUFBSSxVQUFVLEVBQUU7UUFDZCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNwRCxjQUFjLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMvRjtTQUFNO1FBQ0wsY0FBYyxHQUFHLE1BQU0sQ0FBQztLQUN6QjtJQUVELE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFJLEtBQWlDO0lBQzNFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUlELE1BQU0sVUFBVSxxQkFBcUIsQ0FBVSxNQUFrQztJQUMvRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLE9BQU8sV0FBVyxDQUFDO1FBQ2pCLEdBQUc7UUFDSCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLEdBQUcsNkJBQTZCLENBQUMsTUFBTSxFQUFFO1lBQ3ZDLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUM7UUFDRixhQUFhLEVBQUUsTUFBTTtLQUN0QixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUFVLE1BQWtDO0lBQy9FLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDdkIsT0FBTyxXQUFXLENBQUM7UUFDakIsR0FBRztRQUNILElBQUksRUFBRSxtQkFBbUI7UUFDekIsR0FBRyw2QkFBNkIsQ0FBQyxNQUFNLEVBQUU7WUFDdkMsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQztRQUNGLGFBQWEsRUFBRSxNQUFNO0tBQ3RCLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMYWJlbGVkRmllbGRDb25maWcsIGZvcm1seUZpZWxkLCB0ZW1wbGF0ZU9wdGlvbnNGb3JGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL2ZpZWxkJztcbmltcG9ydCB7IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZSB9IGZyb20gJy4vcGlja2FibGUnO1xuaW1wb3J0IHsgUGlja2FibGVJdGVtRmllbGRJdGVtLCBQaWNrYWJsZVZhbHVlRmllbGRzRmllbGRDb25maWcsIFBpY2thYmxlVmFsdWVGaWVsZHNGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJy4vcGlja2FibGUuZmllbGQuZGlyZWN0aXZlJztcbmV4cG9ydCB7IFBpY2thYmxlSXRlbUZpZWxkSXRlbSB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyUGlja2FibGVJdGVtRmllbGRWYWx1ZXNCeUxhYmVsPFQ+KGZpbHRlclRleHQ6IE1heWJlPHN0cmluZz4sIHZhbHVlczogUGlja2FibGVWYWx1ZUZpZWxkRGlzcGxheVZhbHVlPFQ+W10pOiBPYnNlcnZhYmxlPFRbXT4ge1xuICBsZXQgZmlsdGVyZWRWYWx1ZXM6IFBpY2thYmxlVmFsdWVGaWVsZERpc3BsYXlWYWx1ZTxUPltdO1xuXG4gIGlmIChmaWx0ZXJUZXh0KSB7XG4gICAgY29uc3Qgc2VhcmNoU3RyaW5nID0gZmlsdGVyVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgIGZpbHRlcmVkVmFsdWVzID0gdmFsdWVzLmZpbHRlcih4ID0+IHgubGFiZWwudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFN0cmluZykgIT09IC0xKTtcbiAgfSBlbHNlIHtcbiAgICBmaWx0ZXJlZFZhbHVlcyA9IHZhbHVlcztcbiAgfVxuXG4gIHJldHVybiBvZihmaWx0ZXJlZFZhbHVlcy5tYXAoeCA9PiB4LnZhbHVlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0UGlja2FibGVJdGVtc0J5TGFiZWw8VD4oY2hpcHM6IFBpY2thYmxlSXRlbUZpZWxkSXRlbTxUPltdKTogUGlja2FibGVJdGVtRmllbGRJdGVtPFQ+W10ge1xuICByZXR1cm4gY2hpcHMuc29ydCgoYSwgYikgPT4gYS52YWx1ZS5sYWJlbC5sb2NhbGVDb21wYXJlKGIudmFsdWUubGFiZWwpKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaWNrYWJsZUl0ZW1GaWVsZENvbmZpZzxUID0gYW55PiBleHRlbmRzIExhYmVsZWRGaWVsZENvbmZpZywgUGlja2FibGVWYWx1ZUZpZWxkc0ZpZWxkQ29uZmlnPFQ+IHsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcGlja2FibGVJdGVtQ2hpcEZpZWxkPFQgPSBhbnk+KGNvbmZpZzogUGlja2FibGVJdGVtRmllbGRDb25maWc8VD4pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsga2V5IH0gPSBjb25maWc7XG4gIHJldHVybiBmb3JtbHlGaWVsZCh7XG4gICAga2V5LFxuICAgIHR5cGU6ICdwaWNrYWJsZWNoaXBmaWVsZCcsXG4gICAgLi4udGVtcGxhdGVPcHRpb25zRm9yRmllbGRDb25maWcoY29uZmlnLCB7XG4gICAgICBhdXRvY29tcGxldGU6IGZhbHNlXG4gICAgfSksXG4gICAgcGlja2FibGVGaWVsZDogY29uZmlnXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGlja2FibGVJdGVtTGlzdEZpZWxkPFQgPSBhbnk+KGNvbmZpZzogUGlja2FibGVJdGVtRmllbGRDb25maWc8VD4pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsga2V5IH0gPSBjb25maWc7XG4gIHJldHVybiBmb3JtbHlGaWVsZCh7XG4gICAga2V5LFxuICAgIHR5cGU6ICdwaWNrYWJsZWxpc3RmaWVsZCcsXG4gICAgLi4udGVtcGxhdGVPcHRpb25zRm9yRmllbGRDb25maWcoY29uZmlnLCB7XG4gICAgICBhdXRvY29tcGxldGU6IGZhbHNlXG4gICAgfSksXG4gICAgcGlja2FibGVGaWVsZDogY29uZmlnXG4gIH0pO1xufVxuIl19
@@ -9,17 +9,20 @@ import { MatIconModule } from '@angular/material/icon';
9
9
  import { MatInputModule } from '@angular/material/input';
10
10
  import { FormlyModule } from '@ngx-formly/core';
11
11
  import { MatButtonModule } from '@angular/material/button';
12
- import { DbxPickableChipFieldComponent } from './pickable.chip.field.component';
13
- import { DbxPickableListFieldComponent } from './pickable.list.field.component';
12
+ import { DbxPickableChipListFieldComponent } from './pickable.chip.field.component';
13
+ import { DbxPickableListFieldComponent, DbxPickableListFieldItemListComponent, DbxPickableListFieldItemListViewComponent, DbxPickableListFieldItemListViewItemComponent } from './pickable.list.field.component';
14
14
  import { DbxDatePipeModule, DbxInjectedComponentModule } from '@dereekb/dbx-core';
15
- import { DbxAnchorModule, DbxTextModule, DbxLoadingModule, DbxButtonModule } from '@dereekb/dbx-web';
15
+ import { DbxAnchorModule, DbxTextModule, DbxLoadingModule, DbxButtonModule, DbxListLayoutModule } from '@dereekb/dbx-web';
16
16
  import * as i0 from "@angular/core";
17
17
  import * as i1 from "@ngx-formly/core";
18
18
  export class DbxFormFormlyPickableFieldModule {
19
19
  }
20
20
  DbxFormFormlyPickableFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxFormFormlyPickableFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
21
- DbxFormFormlyPickableFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxFormFormlyPickableFieldModule, declarations: [DbxPickableChipFieldComponent,
22
- DbxPickableListFieldComponent], imports: [CommonModule,
21
+ DbxFormFormlyPickableFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxFormFormlyPickableFieldModule, declarations: [DbxPickableChipListFieldComponent,
22
+ DbxPickableListFieldComponent,
23
+ DbxPickableListFieldItemListComponent,
24
+ DbxPickableListFieldItemListViewComponent,
25
+ DbxPickableListFieldItemListViewItemComponent], imports: [CommonModule,
23
26
  DbxTextModule,
24
27
  DbxLoadingModule,
25
28
  DbxButtonModule,
@@ -34,7 +37,8 @@ DbxFormFormlyPickableFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion:
34
37
  DbxAnchorModule,
35
38
  MatChipsModule,
36
39
  MatIconModule,
37
- DbxInjectedComponentModule, i1.FormlyModule] });
40
+ DbxInjectedComponentModule,
41
+ DbxListLayoutModule, i1.FormlyModule] });
38
42
  DbxFormFormlyPickableFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: DbxFormFormlyPickableFieldModule, imports: [[
39
43
  CommonModule,
40
44
  DbxTextModule,
@@ -52,10 +56,11 @@ DbxFormFormlyPickableFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion:
52
56
  MatChipsModule,
53
57
  MatIconModule,
54
58
  DbxInjectedComponentModule,
59
+ DbxListLayoutModule,
55
60
  FormlyModule.forChild({
56
61
  types: [
57
- { name: 'pickablechipfield', component: DbxPickableChipFieldComponent },
58
- { name: 'pickablelistfield', component: DbxPickableListFieldComponent },
62
+ { name: 'pickablechipfield', component: DbxPickableChipListFieldComponent, wrappers: ['form-field'] },
63
+ { name: 'pickablelistfield', component: DbxPickableListFieldComponent, wrappers: ['form-field'] },
59
64
  ]
60
65
  })
61
66
  ]] });
@@ -79,18 +84,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
79
84
  MatChipsModule,
80
85
  MatIconModule,
81
86
  DbxInjectedComponentModule,
87
+ DbxListLayoutModule,
82
88
  FormlyModule.forChild({
83
89
  types: [
84
- { name: 'pickablechipfield', component: DbxPickableChipFieldComponent },
85
- { name: 'pickablelistfield', component: DbxPickableListFieldComponent },
90
+ { name: 'pickablechipfield', component: DbxPickableChipListFieldComponent, wrappers: ['form-field'] },
91
+ { name: 'pickablelistfield', component: DbxPickableListFieldComponent, wrappers: ['form-field'] },
86
92
  ]
87
93
  })
88
94
  ],
89
95
  declarations: [
90
- DbxPickableChipFieldComponent,
91
- DbxPickableListFieldComponent
96
+ DbxPickableChipListFieldComponent,
97
+ DbxPickableListFieldComponent,
98
+ DbxPickableListFieldItemListComponent,
99
+ DbxPickableListFieldItemListViewComponent,
100
+ DbxPickableListFieldItemListViewItemComponent
92
101
  ],
93
102
  exports: []
94
103
  }]
95
104
  }] });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2FibGUuZmllbGQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvc2VsZWN0aW9uL3BpY2thYmxlL3BpY2thYmxlLmZpZWxkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQWtDckcsTUFBTSxPQUFPLGdDQUFnQzs7NkhBQWhDLGdDQUFnQzs4SEFBaEMsZ0NBQWdDLGlCQUx6Qyw2QkFBNkI7UUFDN0IsNkJBQTZCLGFBMUI3QixZQUFZO1FBQ1osYUFBYTtRQUNiLGdCQUFnQjtRQUNoQixlQUFlO1FBQ2YsV0FBVztRQUNYLGVBQWU7UUFDZixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLG1CQUFtQjtRQUNuQixxQkFBcUI7UUFDckIsYUFBYTtRQUNiLGlCQUFpQjtRQUNqQixlQUFlO1FBQ2YsY0FBYztRQUNkLGFBQWE7UUFDYiwwQkFBMEI7OEhBZWpCLGdDQUFnQyxZQS9CbEM7WUFDUCxZQUFZO1lBQ1osYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsV0FBVztZQUNYLGVBQWU7WUFDZixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixxQkFBcUI7WUFDckIsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixlQUFlO1lBQ2YsY0FBYztZQUNkLGFBQWE7WUFDYiwwQkFBMEI7WUFDMUIsWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDcEIsS0FBSyxFQUFFO29CQUVMLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSw2QkFBNkIsRUFBRTtvQkFDdkUsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLDZCQUE2QixFQUFFO2lCQUN4RTthQUNGLENBQUM7U0FDSDsyRkFPVSxnQ0FBZ0M7a0JBaEM1QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYiwwQkFBMEI7d0JBQzFCLFlBQVksQ0FBQyxRQUFRLENBQUM7NEJBQ3BCLEtBQUssRUFBRTtnQ0FFTCxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsNkJBQTZCLEVBQUU7Z0NBQ3ZFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSw2QkFBNkIsRUFBRTs2QkFDeEU7eUJBQ0YsQ0FBQztxQkFDSDtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osNkJBQTZCO3dCQUM3Qiw2QkFBNkI7cUJBQzlCO29CQUNELE9BQU8sRUFBRSxFQUFFO2lCQUNaIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBEYnhQaWNrYWJsZUNoaXBGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vcGlja2FibGUuY2hpcC5maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4UGlja2FibGVMaXN0RmllbGRDb21wb25lbnQgfSBmcm9tICcuL3BpY2thYmxlLmxpc3QuZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IERieERhdGVQaXBlTW9kdWxlLCBEYnhJbmplY3RlZENvbXBvbmVudE1vZHVsZSB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IERieEFuY2hvck1vZHVsZSwgRGJ4VGV4dE1vZHVsZSwgRGJ4TG9hZGluZ01vZHVsZSwgRGJ4QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRGJ4VGV4dE1vZHVsZSxcbiAgICBEYnhMb2FkaW5nTW9kdWxlLFxuICAgIERieEJ1dHRvbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIE1hdExpc3RNb2R1bGUsXG4gICAgRGJ4RGF0ZVBpcGVNb2R1bGUsXG4gICAgRGJ4QW5jaG9yTW9kdWxlLFxuICAgIE1hdENoaXBzTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgRGJ4SW5qZWN0ZWRDb21wb25lbnRNb2R1bGUsXG4gICAgRm9ybWx5TW9kdWxlLmZvckNoaWxkKHtcbiAgICAgIHR5cGVzOiBbXG5cbiAgICAgICAgeyBuYW1lOiAncGlja2FibGVjaGlwZmllbGQnLCBjb21wb25lbnQ6IERieFBpY2thYmxlQ2hpcEZpZWxkQ29tcG9uZW50IH0sXG4gICAgICAgIHsgbmFtZTogJ3BpY2thYmxlbGlzdGZpZWxkJywgY29tcG9uZW50OiBEYnhQaWNrYWJsZUxpc3RGaWVsZENvbXBvbmVudCB9LFxuICAgICAgXVxuICAgIH0pXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIERieFBpY2thYmxlQ2hpcEZpZWxkQ29tcG9uZW50LFxuICAgIERieFBpY2thYmxlTGlzdEZpZWxkQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIERieEZvcm1Gb3JtbHlQaWNrYWJsZUZpZWxkTW9kdWxlIHsgfVxuIl19
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2FibGUuZmllbGQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvc2VsZWN0aW9uL3BpY2thYmxlL3BpY2thYmxlLmZpZWxkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLHFDQUFxQyxFQUFFLHlDQUF5QyxFQUFFLDZDQUE2QyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDak4sT0FBTyxFQUFFLGlCQUFpQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQXNDMUgsTUFBTSxPQUFPLGdDQUFnQzs7NkhBQWhDLGdDQUFnQzs4SEFBaEMsZ0NBQWdDLGlCQVJ6QyxpQ0FBaUM7UUFDakMsNkJBQTZCO1FBQzdCLHFDQUFxQztRQUNyQyx5Q0FBeUM7UUFDekMsNkNBQTZDLGFBOUI3QyxZQUFZO1FBQ1osYUFBYTtRQUNiLGdCQUFnQjtRQUNoQixlQUFlO1FBQ2YsV0FBVztRQUNYLGVBQWU7UUFDZixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLG1CQUFtQjtRQUNuQixxQkFBcUI7UUFDckIsYUFBYTtRQUNiLGlCQUFpQjtRQUNqQixlQUFlO1FBQ2YsY0FBYztRQUNkLGFBQWE7UUFDYiwwQkFBMEI7UUFDMUIsbUJBQW1COzhIQWtCVixnQ0FBZ0MsWUFuQ2xDO1lBQ1AsWUFBWTtZQUNaLGFBQWE7WUFDYixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLFdBQVc7WUFDWCxlQUFlO1lBQ2YsY0FBYztZQUNkLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLGFBQWE7WUFDYixpQkFBaUI7WUFDakIsZUFBZTtZQUNmLGNBQWM7WUFDZCxhQUFhO1lBQ2IsMEJBQTBCO1lBQzFCLG1CQUFtQjtZQUNuQixZQUFZLENBQUMsUUFBUSxDQUFDO2dCQUNwQixLQUFLLEVBQUU7b0JBRUwsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGlDQUFpQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFO29CQUNyRyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsNkJBQTZCLEVBQUUsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUU7aUJBQ2xHO2FBQ0YsQ0FBQztTQUNIOzJGQVVVLGdDQUFnQztrQkFwQzVDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxlQUFlO3dCQUNmLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLDBCQUEwQjt3QkFDMUIsbUJBQW1CO3dCQUNuQixZQUFZLENBQUMsUUFBUSxDQUFDOzRCQUNwQixLQUFLLEVBQUU7Z0NBRUwsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGlDQUFpQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dDQUNyRyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsNkJBQTZCLEVBQUUsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUU7NkJBQ2xHO3lCQUNGLENBQUM7cUJBQ0g7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLGlDQUFpQzt3QkFDakMsNkJBQTZCO3dCQUM3QixxQ0FBcUM7d0JBQ3JDLHlDQUF5Qzt3QkFDekMsNkNBQTZDO3FCQUM5QztvQkFDRCxPQUFPLEVBQUUsRUFBRTtpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgRGJ4UGlja2FibGVDaGlwTGlzdEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9waWNrYWJsZS5jaGlwLmZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhQaWNrYWJsZUxpc3RGaWVsZENvbXBvbmVudCwgRGJ4UGlja2FibGVMaXN0RmllbGRJdGVtTGlzdENvbXBvbmVudCwgRGJ4UGlja2FibGVMaXN0RmllbGRJdGVtTGlzdFZpZXdDb21wb25lbnQsIERieFBpY2thYmxlTGlzdEZpZWxkSXRlbUxpc3RWaWV3SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vcGlja2FibGUubGlzdC5maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4RGF0ZVBpcGVNb2R1bGUsIERieEluamVjdGVkQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgRGJ4QW5jaG9yTW9kdWxlLCBEYnhUZXh0TW9kdWxlLCBEYnhMb2FkaW5nTW9kdWxlLCBEYnhCdXR0b25Nb2R1bGUsIERieExpc3RMYXlvdXRNb2R1bGUgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEYnhUZXh0TW9kdWxlLFxuICAgIERieExvYWRpbmdNb2R1bGUsXG4gICAgRGJ4QnV0dG9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgTWF0TGlzdE1vZHVsZSxcbiAgICBEYnhEYXRlUGlwZU1vZHVsZSxcbiAgICBEYnhBbmNob3JNb2R1bGUsXG4gICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBEYnhJbmplY3RlZENvbXBvbmVudE1vZHVsZSxcbiAgICBEYnhMaXN0TGF5b3V0TW9kdWxlLFxuICAgIEZvcm1seU1vZHVsZS5mb3JDaGlsZCh7XG4gICAgICB0eXBlczogW1xuXG4gICAgICAgIHsgbmFtZTogJ3BpY2thYmxlY2hpcGZpZWxkJywgY29tcG9uZW50OiBEYnhQaWNrYWJsZUNoaXBMaXN0RmllbGRDb21wb25lbnQsIHdyYXBwZXJzOiBbJ2Zvcm0tZmllbGQnXSB9LFxuICAgICAgICB7IG5hbWU6ICdwaWNrYWJsZWxpc3RmaWVsZCcsIGNvbXBvbmVudDogRGJ4UGlja2FibGVMaXN0RmllbGRDb21wb25lbnQsIHdyYXBwZXJzOiBbJ2Zvcm0tZmllbGQnXSB9LFxuICAgICAgXVxuICAgIH0pXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIERieFBpY2thYmxlQ2hpcExpc3RGaWVsZENvbXBvbmVudCxcbiAgICBEYnhQaWNrYWJsZUxpc3RGaWVsZENvbXBvbmVudCxcbiAgICBEYnhQaWNrYWJsZUxpc3RGaWVsZEl0ZW1MaXN0Q29tcG9uZW50LFxuICAgIERieFBpY2thYmxlTGlzdEZpZWxkSXRlbUxpc3RWaWV3Q29tcG9uZW50LFxuICAgIERieFBpY2thYmxlTGlzdEZpZWxkSXRlbUxpc3RWaWV3SXRlbUNvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGb3JtRm9ybWx5UGlja2FibGVGaWVsZE1vZHVsZSB7IH1cbiJdfQ==