@seniorsistemas/data-seniorx-core 2.3.0 → 3.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 (262) hide show
  1. package/core/constants/autocomplete.const.d.ts +4 -0
  2. package/core/constants/context-selector.const.d.ts +1 -0
  3. package/core/constants/gantt.const.d.ts +7 -0
  4. package/core/constants/hyperlink.const.d.ts +1 -0
  5. package/core/constants/inline-edit.const.d.ts +4 -0
  6. package/core/constants/kanban.const.d.ts +2 -0
  7. package/core/constants/pin-code-field.const.d.ts +5 -0
  8. package/core/constants/rating-scale.const.d.ts +1 -0
  9. package/core/constants/spotlight.const.d.ts +8 -0
  10. package/core/constants/star-rating.const.d.ts +4 -0
  11. package/core/constants/stepper.const.d.ts +1 -0
  12. package/core/constants/tiered-menu.const.d.ts +3 -0
  13. package/core/types/autocomplete.type.d.ts +9 -0
  14. package/core/types/chat.type.d.ts +12 -0
  15. package/core/types/checkbox-list.type.d.ts +12 -0
  16. package/core/types/gantt.type.d.ts +22 -0
  17. package/core/types/grid-menu.type.d.ts +13 -0
  18. package/core/types/hyperlink.type.d.ts +1 -0
  19. package/core/types/image-cropper.type.d.ts +20 -0
  20. package/core/types/inline-edit.type.d.ts +26 -0
  21. package/core/types/kanban.type.d.ts +36 -0
  22. package/core/types/panel.type.d.ts +16 -0
  23. package/core/types/profile-picture-picker.type.d.ts +9 -0
  24. package/core/types/rating-scale.type.d.ts +5 -0
  25. package/core/types/select-button.type.d.ts +1 -0
  26. package/core/types/spotlight.type.d.ts +34 -0
  27. package/core/types/star-rating.type.d.ts +1 -0
  28. package/core/types/stepper.type.d.ts +20 -0
  29. package/core/types/table-column.type.d.ts +3 -1
  30. package/core/types/table-options.type.d.ts +8 -2
  31. package/core/types/table.type.d.ts +1 -1
  32. package/core/types/tiered-menu.type.d.ts +16 -0
  33. package/core/types/tree.type.d.ts +25 -0
  34. package/core/types/workspace-switch.type.d.ts +6 -0
  35. package/core/utils/body-scroll.util.d.ts +2 -0
  36. package/core/utils/roving-focus.util.d.ts +2 -0
  37. package/core/utils/selection.util.d.ts +3 -0
  38. package/core/utils/tree.util.d.ts +4 -0
  39. package/esm2022/core/constants/autocomplete.const.mjs +5 -0
  40. package/esm2022/core/constants/context-selector.const.mjs +2 -0
  41. package/esm2022/core/constants/gantt.const.mjs +7 -0
  42. package/esm2022/core/constants/hyperlink.const.mjs +2 -1
  43. package/esm2022/core/constants/inline-edit.const.mjs +5 -0
  44. package/esm2022/core/constants/kanban.const.mjs +3 -0
  45. package/esm2022/core/constants/pin-code-field.const.mjs +6 -0
  46. package/esm2022/core/constants/rating-scale.const.mjs +2 -0
  47. package/esm2022/core/constants/spotlight.const.mjs +9 -0
  48. package/esm2022/core/constants/star-rating.const.mjs +5 -0
  49. package/esm2022/core/constants/stepper.const.mjs +2 -0
  50. package/esm2022/core/constants/table.const.mjs +2 -2
  51. package/esm2022/core/constants/tiered-menu.const.mjs +4 -0
  52. package/esm2022/core/types/autocomplete.type.mjs +2 -0
  53. package/esm2022/core/types/chat.type.mjs +2 -0
  54. package/esm2022/core/types/checkbox-list.type.mjs +2 -0
  55. package/esm2022/core/types/gantt.type.mjs +2 -0
  56. package/esm2022/core/types/grid-menu.type.mjs +2 -0
  57. package/esm2022/core/types/hyperlink.type.mjs +1 -1
  58. package/esm2022/core/types/image-cropper.type.mjs +2 -0
  59. package/esm2022/core/types/inline-edit.type.mjs +2 -0
  60. package/esm2022/core/types/kanban.type.mjs +2 -0
  61. package/esm2022/core/types/panel.type.mjs +9 -0
  62. package/esm2022/core/types/profile-picture-picker.type.mjs +2 -0
  63. package/esm2022/core/types/rating-scale.type.mjs +2 -0
  64. package/esm2022/core/types/select-button.type.mjs +1 -1
  65. package/esm2022/core/types/spotlight.type.mjs +2 -0
  66. package/esm2022/core/types/star-rating.type.mjs +2 -0
  67. package/esm2022/core/types/stepper.type.mjs +7 -0
  68. package/esm2022/core/types/table-column.type.mjs +1 -1
  69. package/esm2022/core/types/table-options.type.mjs +1 -1
  70. package/esm2022/core/types/table.type.mjs +1 -1
  71. package/esm2022/core/types/tiered-menu.type.mjs +2 -0
  72. package/esm2022/core/types/tree.type.mjs +2 -0
  73. package/esm2022/core/types/workspace-switch.type.mjs +2 -0
  74. package/esm2022/core/utils/body-scroll.util.mjs +19 -0
  75. package/esm2022/core/utils/combobox.util.mjs +3 -2
  76. package/esm2022/core/utils/roving-focus.util.mjs +20 -0
  77. package/esm2022/core/utils/selection.util.mjs +13 -0
  78. package/esm2022/core/utils/string.util.mjs +8 -3
  79. package/esm2022/core/utils/tree.util.mjs +23 -0
  80. package/esm2022/features/accordion/accordion.component.mjs +2 -2
  81. package/esm2022/features/accordion/{accordion-item.component.mjs → components/accordion-item/accordion-item.component.mjs} +7 -7
  82. package/esm2022/features/autocomplete/autocomplete.component.mjs +501 -0
  83. package/esm2022/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +30 -0
  84. package/esm2022/features/breadcrumb/breadcrumb.component.mjs +2 -2
  85. package/esm2022/features/card-list/card/card.component.mjs +63 -99
  86. package/esm2022/features/chat/chat.component.mjs +126 -0
  87. package/esm2022/features/checkbox-list/checkbox-list.component.mjs +125 -0
  88. package/esm2022/features/combobox/combobox.component.mjs +20 -8
  89. package/esm2022/features/context-selector/context-selector.component.mjs +198 -0
  90. package/esm2022/features/filters/filters.component.mjs +1 -1
  91. package/esm2022/features/gantt/components/gantt-side-table/gantt-side-table.component.mjs +17 -0
  92. package/esm2022/features/gantt/gantt-date.utils.mjs +97 -0
  93. package/esm2022/features/gantt/gantt.component.mjs +89 -0
  94. package/esm2022/features/gantt/gantt.engine.mjs +662 -0
  95. package/esm2022/features/grid-menu/grid-menu.component.mjs +104 -0
  96. package/esm2022/features/hyperlink/hyperlink.component.mjs +7 -4
  97. package/esm2022/features/icon-picker/icon-picker.component.mjs +3 -3
  98. package/esm2022/features/image-cropper/image-cropper.component.mjs +218 -0
  99. package/esm2022/features/image-cropper/services/image-cropper.service.mjs +50 -0
  100. package/esm2022/features/infinite-scroll/infinite-scroll.directive.mjs +89 -0
  101. package/esm2022/features/info-sign/info-sign.component.mjs +3 -3
  102. package/esm2022/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +38 -0
  103. package/esm2022/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +29 -0
  104. package/esm2022/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.mjs +29 -0
  105. package/esm2022/features/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +131 -0
  106. package/esm2022/features/inline-edit/fields/inline-edit-field.mjs +17 -0
  107. package/esm2022/features/inline-edit/fields/inline-edit-number-field.mjs +15 -0
  108. package/esm2022/features/inline-edit/fields/inline-edit-text-field.mjs +11 -0
  109. package/esm2022/features/inline-edit/fields/inline-edit-textarea-field.mjs +15 -0
  110. package/esm2022/features/inline-edit/inline-edit.component.mjs +27 -0
  111. package/esm2022/features/interactive-content/interactive-content.directive.mjs +140 -0
  112. package/esm2022/features/kanban/components/kanban-column/kanban-column.component.mjs +88 -0
  113. package/esm2022/features/kanban/components/kanban-item/kanban-item.component.mjs +72 -0
  114. package/esm2022/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.mjs +19 -0
  115. package/esm2022/features/kanban/directives/kanban-template.directive.mjs +22 -0
  116. package/esm2022/features/kanban/kanban.component.mjs +198 -0
  117. package/esm2022/features/kanban/services/kanban-event.service.mjs +27 -0
  118. package/esm2022/features/loading-state/loading-state.component.mjs +3 -62
  119. package/esm2022/features/mouse-events/directives/double-click.directive.mjs +34 -0
  120. package/esm2022/features/mouse-events/directives/long-press.directive.mjs +61 -0
  121. package/esm2022/features/paginator/paginator.component.mjs +8 -3
  122. package/esm2022/features/panel/panel.component.mjs +43 -11
  123. package/esm2022/features/pin-code-field/pin-code-field.component.mjs +234 -0
  124. package/esm2022/features/profile-picture-picker/profile-picture-picker.component.mjs +330 -0
  125. package/esm2022/features/rating-scale/rating-scale.component.mjs +86 -0
  126. package/esm2022/features/row-card-list/row-card/row-card.component.mjs +3 -3
  127. package/esm2022/features/scaffold/scaffold.component.mjs +4 -6
  128. package/esm2022/features/select-button/select-button.component.mjs +7 -4
  129. package/esm2022/features/speech-recognition/services/speech-recognition.service.mjs +148 -0
  130. package/esm2022/features/speech-recognition/services/text-to-speech.service.mjs +88 -0
  131. package/esm2022/features/speech-recognition/speech-recognition.component.mjs +243 -0
  132. package/esm2022/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.mjs +521 -0
  133. package/esm2022/features/spotlight/directives/spotlight-step.directive.mjs +38 -0
  134. package/esm2022/features/spotlight/services/spotlight-tour.service.mjs +179 -0
  135. package/esm2022/features/spotlight/spotlight.component.mjs +160 -0
  136. package/esm2022/features/star-rating/star-rating.component.mjs +95 -0
  137. package/esm2022/features/stepper/stepper.component.mjs +86 -0
  138. package/esm2022/features/switch/switch.component.mjs +12 -8
  139. package/esm2022/features/tab/{tab-item.component.mjs → components/tab-item/tab-item.component.mjs} +1 -1
  140. package/esm2022/features/tab/tab.component.mjs +4 -4
  141. package/esm2022/features/table/components/table-cell-content.component.mjs +14 -5
  142. package/esm2022/features/table/table.component.mjs +220 -29
  143. package/esm2022/features/table/utils/table-data.util.mjs +71 -8
  144. package/esm2022/features/table/utils/table-layout.util.mjs +21 -1
  145. package/esm2022/features/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +367 -0
  146. package/esm2022/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.mjs +11 -0
  147. package/esm2022/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +97 -0
  148. package/esm2022/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +181 -0
  149. package/esm2022/features/tiered-menu/directives/tiered-menu.directive.mjs +246 -0
  150. package/esm2022/features/tiered-menu/services/tiered-menu.event.service.mjs +16 -0
  151. package/esm2022/features/tiered-menu/services/tiered-menu.global.service.mjs +12 -0
  152. package/esm2022/features/tiered-menu/services/tiered-menu.service.mjs +49 -0
  153. package/esm2022/features/tree/components/tree-node-item/tree-node-item.component.mjs +169 -0
  154. package/esm2022/features/tree/tree.component.mjs +211 -0
  155. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.mjs +41 -0
  156. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.mjs +38 -0
  157. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.mjs +29 -0
  158. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.mjs +29 -0
  159. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.mjs +35 -0
  160. package/esm2022/features/visual-sql-editor/services/visual-sql-editor-flow.service.mjs +106 -0
  161. package/esm2022/features/visual-sql-editor/services/visual-sql-editor-state.service.mjs +230 -0
  162. package/esm2022/features/visual-sql-editor/types/visual-sql-editor.types.mjs +2 -0
  163. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.mjs +72 -0
  164. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sql.util.mjs +281 -0
  165. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-text.util.mjs +37 -0
  166. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor.constants.mjs +89 -0
  167. package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +172 -630
  168. package/esm2022/locales/en.json +351 -3
  169. package/esm2022/locales/es-CO.json +351 -3
  170. package/esm2022/locales/pt.json +351 -3
  171. package/esm2022/providers/features.provider.mjs +40 -4
  172. package/esm2022/public-api.mjs +56 -3
  173. package/features/accordion/accordion.component.d.ts +1 -1
  174. package/features/accordion/{accordion-item.component.d.ts → components/accordion-item/accordion-item.component.d.ts} +1 -1
  175. package/features/autocomplete/autocomplete.component.d.ts +102 -0
  176. package/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +11 -0
  177. package/features/card-list/card/card.component.d.ts +14 -34
  178. package/features/chat/chat.component.d.ts +31 -0
  179. package/features/checkbox-list/checkbox-list.component.d.ts +26 -0
  180. package/features/combobox/combobox.component.d.ts +2 -1
  181. package/features/context-selector/context-selector.component.d.ts +37 -0
  182. package/features/gantt/components/gantt-side-table/gantt-side-table.component.d.ts +8 -0
  183. package/features/gantt/gantt-date.utils.d.ts +36 -0
  184. package/features/gantt/gantt.component.d.ts +24 -0
  185. package/features/gantt/gantt.engine.d.ts +52 -0
  186. package/features/grid-menu/grid-menu.component.d.ts +29 -0
  187. package/features/hyperlink/hyperlink.component.d.ts +2 -1
  188. package/features/image-cropper/image-cropper.component.d.ts +43 -0
  189. package/features/image-cropper/services/image-cropper.service.d.ts +13 -0
  190. package/features/infinite-scroll/infinite-scroll.directive.d.ts +25 -0
  191. package/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +13 -0
  192. package/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.d.ts +13 -0
  193. package/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.d.ts +13 -0
  194. package/features/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +37 -0
  195. package/features/inline-edit/fields/inline-edit-field.d.ts +12 -0
  196. package/features/inline-edit/fields/inline-edit-number-field.d.ts +9 -0
  197. package/features/inline-edit/fields/inline-edit-text-field.d.ts +7 -0
  198. package/features/inline-edit/fields/inline-edit-textarea-field.d.ts +9 -0
  199. package/features/inline-edit/inline-edit.component.d.ts +13 -0
  200. package/features/interactive-content/interactive-content.directive.d.ts +31 -0
  201. package/features/kanban/components/kanban-column/kanban-column.component.d.ts +22 -0
  202. package/features/kanban/components/kanban-item/kanban-item.component.d.ts +23 -0
  203. package/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.d.ts +8 -0
  204. package/features/kanban/directives/kanban-template.directive.d.ts +10 -0
  205. package/features/kanban/kanban.component.d.ts +32 -0
  206. package/features/kanban/services/kanban-event.service.d.ts +15 -0
  207. package/features/loading-state/loading-state.component.d.ts +0 -2
  208. package/features/mouse-events/directives/double-click.directive.d.ts +11 -0
  209. package/features/mouse-events/directives/long-press.directive.d.ts +14 -0
  210. package/features/panel/panel.component.d.ts +12 -3
  211. package/features/pin-code-field/pin-code-field.component.d.ts +44 -0
  212. package/features/profile-picture-picker/profile-picture-picker.component.d.ts +77 -0
  213. package/features/rating-scale/rating-scale.component.d.ts +24 -0
  214. package/features/select-button/select-button.component.d.ts +2 -1
  215. package/features/speech-recognition/services/speech-recognition.service.d.ts +29 -0
  216. package/features/speech-recognition/services/text-to-speech.service.d.ts +24 -0
  217. package/features/speech-recognition/speech-recognition.component.d.ts +50 -0
  218. package/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.d.ts +59 -0
  219. package/features/spotlight/directives/spotlight-step.directive.d.ts +13 -0
  220. package/features/spotlight/services/spotlight-tour.service.d.ts +46 -0
  221. package/features/spotlight/spotlight.component.d.ts +59 -0
  222. package/features/star-rating/star-rating.component.d.ts +26 -0
  223. package/features/stepper/stepper.component.d.ts +23 -0
  224. package/features/switch/switch.component.d.ts +2 -1
  225. package/features/tab/tab.component.d.ts +1 -1
  226. package/features/table/components/table-cell-content.component.d.ts +4 -3
  227. package/features/table/table.component.d.ts +40 -5
  228. package/features/table/utils/table-data.util.d.ts +1 -0
  229. package/features/table/utils/table-layout.util.d.ts +1 -0
  230. package/features/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +49 -0
  231. package/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.d.ts +5 -0
  232. package/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +19 -0
  233. package/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +26 -0
  234. package/features/tiered-menu/directives/tiered-menu.directive.d.ts +44 -0
  235. package/features/tiered-menu/services/tiered-menu.event.service.d.ts +13 -0
  236. package/features/tiered-menu/services/tiered-menu.global.service.d.ts +7 -0
  237. package/features/tiered-menu/services/tiered-menu.service.d.ts +14 -0
  238. package/features/tree/components/tree-node-item/tree-node-item.component.d.ts +37 -0
  239. package/features/tree/tree.component.d.ts +37 -0
  240. package/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.d.ts +18 -0
  241. package/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.d.ts +17 -0
  242. package/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.d.ts +13 -0
  243. package/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.d.ts +13 -0
  244. package/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.d.ts +15 -0
  245. package/features/visual-sql-editor/services/visual-sql-editor-flow.service.d.ts +26 -0
  246. package/features/visual-sql-editor/services/visual-sql-editor-state.service.d.ts +72 -0
  247. package/features/visual-sql-editor/types/visual-sql-editor.types.d.ts +182 -0
  248. package/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.d.ts +14 -0
  249. package/features/visual-sql-editor/utils/visual-sql-editor-sql.util.d.ts +81 -0
  250. package/features/visual-sql-editor/utils/visual-sql-editor-text.util.d.ts +15 -0
  251. package/features/visual-sql-editor/utils/visual-sql-editor.constants.d.ts +36 -0
  252. package/features/visual-sql-editor/visual-sql-editor.component.d.ts +37 -199
  253. package/fesm2022/seniorsistemas-data-seniorx-core.mjs +14883 -6353
  254. package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
  255. package/package.json +8 -8
  256. package/public-api.d.ts +72 -2
  257. package/src/locales/en.json +353 -15
  258. package/src/locales/es-CO.json +352 -14
  259. package/src/locales/pt.json +352 -14
  260. package/styles/sdc-global-variables.scss +1 -1
  261. package/styles.css +1 -1
  262. /package/features/tab/{tab-item.component.d.ts → components/tab-item/tab-item.component.d.ts} +0 -0
@@ -2,12 +2,12 @@ import { CommonModule } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewEncapsulation, inject } from '@angular/core';
3
3
  import { FormsModule } from '@angular/forms';
4
4
  import { TranslateModule, TranslateService } from '@ngx-translate/core';
5
- import { ACCORDION_DEFAULT_ACTION_ARIA_LABEL, ACCORDION_DEFAULT_CACHE, ACCORDION_DEFAULT_INFO_ARIA_LABEL, ACCORDION_DEFAULT_SWITCH_ARIA_LABEL, ACCORDION_DEFAULT_TOGGLE_ARIA_LABEL, ACCORDION_DEFAULT_VALIDATION_ICON, ACCORDION_DEFAULT_VALIDATION_ICON_COLOR } from '../../core/constants/accordion.const';
6
- import { nextSequentialId } from '../../core/utils/id.util';
7
- import { resolveNullableTranslatableText, resolveTranslatableText } from '../../core/utils/i18n.util';
8
- import { humanizeText } from '../../core/utils/string.util';
9
- import { SwitchComponent } from '../switch/switch.component';
10
- import { TooltipComponent } from '../tooltip/tooltip.component';
5
+ import { ACCORDION_DEFAULT_ACTION_ARIA_LABEL, ACCORDION_DEFAULT_CACHE, ACCORDION_DEFAULT_INFO_ARIA_LABEL, ACCORDION_DEFAULT_SWITCH_ARIA_LABEL, ACCORDION_DEFAULT_TOGGLE_ARIA_LABEL, ACCORDION_DEFAULT_VALIDATION_ICON, ACCORDION_DEFAULT_VALIDATION_ICON_COLOR } from '../../../../core/constants/accordion.const';
6
+ import { nextSequentialId } from '../../../../core/utils/id.util';
7
+ import { resolveNullableTranslatableText, resolveTranslatableText } from '../../../../core/utils/i18n.util';
8
+ import { humanizeText } from '../../../../core/utils/string.util';
9
+ import { SwitchComponent } from '../../../switch/switch.component';
10
+ import { TooltipComponent } from '../../../tooltip/tooltip.component';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "@angular/forms";
13
13
  import * as i2 from "@ngx-translate/core";
@@ -158,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
158
158
  }], switchChange: [{
159
159
  type: Output
160
160
  }] } });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9hY2NvcmRpb24vYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9hY2NvcmRpb24vYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEUsT0FBTyxFQUNMLG1DQUFtQyxFQUNuQyx1QkFBdUIsRUFDdkIsaUNBQWlDLEVBQ2pDLG1DQUFtQyxFQUNuQyxtQ0FBbUMsRUFDbkMsaUNBQWlDLEVBQ2pDLHVDQUF1QyxFQUN4QyxNQUFNLHNDQUFzQyxDQUFDO0FBTzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7QUFXaEUsTUFBTSxPQUFPLHNCQUFzQjtJQUNoQixTQUFT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LHNCQUFzQjtrQkFUbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLG1CQUd2RSx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxRQUFROzhCQU9kLE1BQU07c0JBQWhDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNoQixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHtcbiAgQUNDT1JESU9OX0RFRkFVTFRfQUNUSU9OX0FSSUFfTEFCRUwsXG4gIEFDQ09SRElPTl9ERUZBVUxUX0NBQ0hFLFxuICBBQ0NPUkRJT05fREVGQVVMVF9JTkZPX0FSSUFfTEFCRUwsXG4gIEFDQ09SRElPTl9ERUZBVUxUX1NXSVRDSF9BUklBX0xBQkVMLFxuICBBQ0NPUkRJT05fREVGQVVMVF9UT0dHTEVfQVJJQV9MQUJFTCxcbiAgQUNDT1JESU9OX0RFRkFVTFRfVkFMSURBVElPTl9JQ09OLFxuICBBQ0NPUkRJT05fREVGQVVMVF9WQUxJREFUSU9OX0lDT05fQ09MT1Jcbn0gZnJvbSAnLi4vLi4vY29yZS9jb25zdGFudHMvYWNjb3JkaW9uLmNvbnN0JztcbmltcG9ydCB0eXBlIHtcbiAgQWNjb3JkaW9uQWN0aW9uLFxuICBBY2NvcmRpb25Td2l0Y2hDb25maWcsXG4gIEFjY29yZGlvblRyYW5zbGF0ZVBhcmFtcyxcbiAgQWNjb3JkaW9uVmFsaWRhdGlvbkNvbG9yXG59IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvYWNjb3JkaW9uLnR5cGUnO1xuaW1wb3J0IHsgbmV4dFNlcXVlbnRpYWxJZCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvaWQudXRpbCc7XG5pbXBvcnQgeyByZXNvbHZlTnVsbGFibGVUcmFuc2xhdGFibGVUZXh0LCByZXNvbHZlVHJhbnNsYXRhYmxlVGV4dCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvaTE4bi51dGlsJztcbmltcG9ydCB7IGh1bWFuaXplVGV4dCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvc3RyaW5nLnV0aWwnO1xuaW1wb3J0IHsgU3dpdGNoQ29tcG9uZW50IH0gZnJvbSAnLi4vc3dpdGNoL3N3aXRjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtYWNjb3JkaW9uLWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBTd2l0Y2hDb21wb25lbnQsIFRvb2x0aXBDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWRcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3JkaW9uSXRlbUNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXRlbUlkID0gbmV4dFNlcXVlbnRpYWxJZCgnc2RjLWFjY29yZGlvbi1pdGVtJyk7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgaGVhZGVyITogc3RyaW5nO1xuICBASW5wdXQoKSBoZWFkZXJQYXJhbXM/OiBBY2NvcmRpb25UcmFuc2xhdGVQYXJhbXM7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhY2hlID0gQUNDT1JESU9OX0RFRkFVTFRfQ0FDSEU7XG4gIEBJbnB1dCgpIGFjdGlvbnM6IEFjY29yZGlvbkFjdGlvbltdID0gW107XG4gIEBJbnB1dCgpIHN3aXRjaENvbmZpZz86IEFjY29yZGlvblN3aXRjaENvbmZpZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSB2YWxpZGF0aW9uTWVzc2FnZT86IHN0cmluZztcbiAgQElucHV0KCkgdmFsaWRhdGlvbk1lc3NhZ2VQYXJhbXM/OiBBY2NvcmRpb25UcmFuc2xhdGVQYXJhbXM7XG4gIEBJbnB1dCgpIHZhbGlkYXRpb25NZXNzYWdlSWNvbiA9IEFDQ09SRElPTl9ERUZBVUxUX1ZBTElEQVRJT05fSUNPTjtcbiAgQElucHV0KCkgdmFsaWRhdGlvbk1lc3NhZ2VJY29uQ29sb3I6IEFjY29yZGlvblZhbGlkYXRpb25Db2xvciA9IEFDQ09SRElPTl9ERUZBVUxUX1ZBTElEQVRJT05fSUNPTl9DT0xPUiBhcyBBY2NvcmRpb25WYWxpZGF0aW9uQ29sb3I7XG4gIEBJbnB1dCgpIHRvZ2dsZUFyaWFMYWJlbCA9IEFDQ09SRElPTl9ERUZBVUxUX1RPR0dMRV9BUklBX0xBQkVMO1xuICBASW5wdXQoKSBpbmZvQXJpYUxhYmVsID0gQUNDT1JESU9OX0RFRkFVTFRfSU5GT19BUklBX0xBQkVMO1xuXG4gIEBPdXRwdXQoKSBwYW5lbE9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHBhbmVsQ2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgdG9nZ2xlUmVxdWVzdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc3dpdGNoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHJlYWRvbmx5IHN3aXRjaFZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGlzT3BlbiA9IGZhbHNlO1xuICBwb3NpdGlvbiA9IC0xO1xuXG4gIGdldCBjb250ZW50SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5pdGVtSWR9LWNvbnRlbnRgO1xuICB9XG5cbiAgZ2V0IGhlYWRlcklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuaXRlbUlkfS1oZWFkZXJgO1xuICB9XG5cbiAgZ2V0IHZhbGlkYXRpb25NZXNzYWdlVGV4dCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gcmVzb2x2ZU51bGxhYmxlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSwgJycsIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VQYXJhbXMpO1xuICB9XG5cbiAgZ2V0IHRvZ2dsZUJ1dHRvbkFyaWFMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGFjdGlvbiA9IHJlc29sdmVUcmFuc2xhdGFibGVUZXh0KHRoaXMudHJhbnNsYXRlLCB0aGlzLnRvZ2dsZUFyaWFMYWJlbCk7XG4gICAgY29uc3QgdmVyYktleSA9IHRoaXMuaXNPcGVuXG4gICAgICA/ICdwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5LnBhbmVsX2NvbGxhcHNlJ1xuICAgICAgOiAncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5wYW5lbF9leHBhbmQnO1xuICAgIGNvbnN0IHZlcmIgPSByZXNvbHZlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdmVyYktleSk7XG4gICAgcmV0dXJuIFthY3Rpb24sIHZlcmIsIHRoaXMuaGVhZGVyVGV4dF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAtICcpO1xuICB9XG5cbiAgZ2V0IHNob3VsZFJlbmRlckNvbnRlbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGUgfHwgdGhpcy5pc09wZW47XG4gIH1cblxuICBnZXQgc3dpdGNoVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5zd2l0Y2hDb25maWc/LnZhbHVlO1xuICB9XG5cbiAgZ2V0IGhlYWRlclRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQodGhpcy50cmFuc2xhdGUsIHRoaXMuaGVhZGVyLCAnJywgdGhpcy5oZWFkZXJQYXJhbXMpO1xuICB9XG5cbiAgcmVnaXN0ZXJQb3NpdGlvbihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5wb3NpdGlvbiA9IGluZGV4O1xuICB9XG5cbiAgc2V0T3BlbihuZXh0T3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkICYmIG5leHRPcGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNPcGVuID09PSBuZXh0T3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNPcGVuID0gbmV4dE9wZW47XG5cbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMucGFuZWxPcGVuZWQuZW1pdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhbmVsQ2xvc2VkLmVtaXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlcXVlc3RUb2dnbGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZVJlcXVlc3RlZC5lbWl0KCk7XG4gIH1cblxuICBvbkFjdGlvbkNsaWNrKGFjdGlvbjogQWNjb3JkaW9uQWN0aW9uLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgYWN0aW9uLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYWN0aW9uLm9uQ2xpY2s/LihldmVudCk7XG4gIH1cblxuICBvblN3aXRjaENoYW5nZShjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zd2l0Y2hDb25maWcgPSB7XG4gICAgICAuLi4odGhpcy5zd2l0Y2hDb25maWcgPz8geyBhcmlhTGFiZWw6IEFDQ09SRElPTl9ERUZBVUxUX1NXSVRDSF9BUklBX0xBQkVMIH0pLFxuICAgICAgdmFsdWU6IGNoZWNrZWRcbiAgICB9O1xuICAgIHRoaXMuc3dpdGNoVmFsdWVDaGFuZ2UuZW1pdChjaGVja2VkKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGVtaXRTd2l0Y2hDaGFuZ2UoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc3dpdGNoQ2hhbmdlLmVtaXQoY2hlY2tlZCk7XG4gIH1cblxuICByZXNvbHZlQWN0aW9uQXJpYUxhYmVsKGFjdGlvbjogQWNjb3JkaW9uQWN0aW9uKTogc3RyaW5nIHtcbiAgICBjb25zdCBmYWxsYmFjayA9IGFjdGlvbi5pY29uID8gaHVtYW5pemVUZXh0KGFjdGlvbi5pY29uLnJlcGxhY2UoL1xcYmZhW3NyYmxkXT9cXGIvZywgJycpLnJlcGxhY2UoL2ZhLS9nLCAnICcpKSA6ICcnO1xuICAgIHJldHVybiByZXNvbHZlVHJhbnNsYXRhYmxlVGV4dChcbiAgICAgIHRoaXMudHJhbnNsYXRlLFxuICAgICAgYWN0aW9uLmFyaWFMYWJlbCxcbiAgICAgIGZhbGxiYWNrIHx8IEFDQ09SRElPTl9ERUZBVUxUX0FDVElPTl9BUklBX0xBQkVMLFxuICAgICAgYWN0aW9uLmFyaWFMYWJlbFBhcmFtc1xuICAgICk7XG4gIH1cblxuICByZXNvbHZlQWN0aW9uVG9vbHRpcChhY3Rpb246IEFjY29yZGlvbkFjdGlvbik6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiByZXNvbHZlTnVsbGFibGVUcmFuc2xhdGFibGVUZXh0KHRoaXMudHJhbnNsYXRlLCBhY3Rpb24udG9vbHRpcCwgJycsIGFjdGlvbi50b29sdGlwUGFyYW1zKTtcbiAgfVxuXG4gIHJlc29sdmVTd2l0Y2hBcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQoXG4gICAgICB0aGlzLnRyYW5zbGF0ZSxcbiAgICAgIHRoaXMuc3dpdGNoQ29uZmlnPy5hcmlhTGFiZWwsXG4gICAgICBBQ0NPUkRJT05fREVGQVVMVF9TV0lUQ0hfQVJJQV9MQUJFTCxcbiAgICAgIHRoaXMuc3dpdGNoQ29uZmlnPy5hcmlhTGFiZWxQYXJhbXNcbiAgICApO1xuICB9XG5cbiAgZ2V0IHZhbGlkYXRpb25JY29uQXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdGVtcGxhdGUgPSByZXNvbHZlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdGhpcy5pbmZvQXJpYUxhYmVsKTtcbiAgICByZXR1cm4gdGVtcGxhdGUucmVwbGFjZSgne3RleHR9JywgdGhpcy52YWxpZGF0aW9uTWVzc2FnZVRleHQgPz8gJycpO1xuICB9XG59XG4iLCI8c2VjdGlvblxuICBjbGFzcz1cInNkYy1hY2NvcmRpb24taXRlbVwiXG4gIFtjbGFzcy5zZGMtYWNjb3JkaW9uLWl0ZW0tLW9wZW5dPVwiaXNPcGVuXCJcbiAgW2NsYXNzLnNkYy1hY2NvcmRpb24taXRlbS0tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuPlxuICA8ZGl2IGNsYXNzPVwic2RjLWFjY29yZGlvbi1pdGVtX19oZWFkZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic2RjLWFjY29yZGlvbi1pdGVtX190cmlnZ2VyXCJcbiAgICAgIFtpZF09XCJoZWFkZXJJZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5cIlxuICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJjb250ZW50SWRcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0b2dnbGVCdXR0b25BcmlhTGFiZWxcIlxuICAgICAgKGNsaWNrKT1cInJlcXVlc3RUb2dnbGUoKVwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtYWNjb3JkaW9uLWl0ZW1fX2hlYWRlck1haW5cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtYWNjb3JkaW9uLWl0ZW1fX3RvZ2dsZUljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhc1wiIFtjbGFzcy5mYS1wbHVzXT1cIiFpc09wZW5cIiBbY2xhc3MuZmEtbWludXNdPVwiaXNPcGVuXCI+PC9pPlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgQGlmICh2YWxpZGF0aW9uTWVzc2FnZVRleHQpIHtcbiAgICAgICAgICA8c2RjLXRvb2x0aXAgW3BUb29sdGlwXT1cInZhbGlkYXRpb25NZXNzYWdlVGV4dFwiIFt0b29sdGlwRXZlbnRdPVwiJ2JvdGgnXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInNkYy1hY2NvcmRpb24taXRlbV9fdmFsaWRhdGlvblwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCInc2RjLWFjY29yZGlvbi1pdGVtX192YWxpZGF0aW9uLS0nICsgdmFsaWRhdGlvbk1lc3NhZ2VJY29uQ29sb3JcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwidmFsaWRhdGlvbk1lc3NhZ2VJY29uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ2YWxpZGF0aW9uSWNvbkFyaWFMYWJlbFwiPjwvaT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3NkYy10b29sdGlwPlxuICAgICAgICB9XG5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtYWNjb3JkaW9uLWl0ZW1fX3RpdGxlXCI+e3sgaGVhZGVyIHwgdHJhbnNsYXRlOiBoZWFkZXJQYXJhbXMgfX08L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG5cbiAgICA8c3BhbiBjbGFzcz1cInNkYy1hY2NvcmRpb24taXRlbV9faGVhZGVyQWN0aW9uc1wiPlxuICAgICAgQGZvciAoYWN0aW9uIG9mIGFjdGlvbnM7IHRyYWNrIGFjdGlvbi5pY29uICsgJy0nICsgJGluZGV4KSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cInNkYy1hY2NvcmRpb24taXRlbV9fYWN0aW9uXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgYWN0aW9uLmRpc2FibGVkXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInJlc29sdmVBY3Rpb25BcmlhTGFiZWwoYWN0aW9uKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soYWN0aW9uLCAkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBpZiAocmVzb2x2ZUFjdGlvblRvb2x0aXAoYWN0aW9uKTsgYXMgYWN0aW9uVG9vbHRpcCkge1xuICAgICAgICAgICAgPHNkYy10b29sdGlwIFtwVG9vbHRpcF09XCJhY3Rpb25Ub29sdGlwXCIgW3Rvb2x0aXBFdmVudF09XCInYm90aCdcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtYWNjb3JkaW9uLWl0ZW1fX2FjdGlvbkljb25XcmFwXCI+XG4gICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImFjdGlvbi5pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NkYy10b29sdGlwPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGkgW2NsYXNzXT1cImFjdGlvbi5pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAoc3dpdGNoQ29uZmlnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtYWNjb3JkaW9uLWl0ZW1fX3N3aXRjaFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICA8c2RjLXN3aXRjaFxuICAgICAgICAgICAgW25nTW9kZWxdPVwic3dpdGNoVmFsdWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8ICEhc3dpdGNoQ29uZmlnLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwicmVzb2x2ZVN3aXRjaEFyaWFMYWJlbCgpXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU3dpdGNoQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgID48L3NkYy1zd2l0Y2g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgQGlmIChzaG91bGRSZW5kZXJDb250ZW50KSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJzZGMtYWNjb3JkaW9uLWl0ZW1fX2NvbnRlbnRcIlxuICAgICAgW2lkXT1cImNvbnRlbnRJZFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaGVhZGVySWRcIlxuICAgICAgW2hpZGRlbl09XCIhaXNPcGVuXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic2RjLWFjY29yZGlvbi1pdGVtX19jb250ZW50SW5uZXJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbjwvc2VjdGlvbj5cbiJdfQ==
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9hY2NvcmRpb24vY29tcG9uZW50cy9hY2NvcmRpb24taXRlbS9hY2NvcmRpb24taXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2FjY29yZGlvbi9jb21wb25lbnRzL2FjY29yZGlvbi1pdGVtL2FjY29yZGlvbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhFLE9BQU8sRUFDTCxtQ0FBbUMsRUFDbkMsdUJBQXVCLEVBQ3ZCLGlDQUFpQyxFQUNqQyxtQ0FBbUMsRUFDbkMsbUNBQW1DLEVBQ25DLGlDQUFpQyxFQUNqQyx1Q0FBdUMsRUFDeEMsTUFBTSw0Q0FBNEMsQ0FBQztBQU9wRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxn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RkQ3Q1ksWUFBWSw4QkFBRSxXQUFXLDhWQUFFLGVBQWUsNEZBQUUsZUFBZSx3UEFBRSxnQkFBZ0I7OzRGQU01RSxzQkFBc0I7a0JBVGxDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxtQkFHdkUsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUTs4QkFPZCxNQUFNO3NCQUFoQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDaEIsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRywwQkFBMEI7c0JBQWxDLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7XG4gIEFDQ09SRElPTl9ERUZBVUxUX0FDVElPTl9BUklBX0xBQkVMLFxuICBBQ0NPUkRJT05fREVGQVVMVF9DQUNIRSxcbiAgQUNDT1JESU9OX0RFRkFVTFRfSU5GT19BUklBX0xBQkVMLFxuICBBQ0NPUkRJT05fREVGQVVMVF9TV0lUQ0hfQVJJQV9MQUJFTCxcbiAgQUNDT1JESU9OX0RFRkFVTFRfVE9HR0xFX0FSSUFfTEFCRUwsXG4gIEFDQ09SRElPTl9ERUZBVUxUX1ZBTElEQVRJT05fSUNPTixcbiAgQUNDT1JESU9OX0RFRkFVTFRfVkFMSURBVElPTl9JQ09OX0NPTE9SXG59IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvY29uc3RhbnRzL2FjY29yZGlvbi5jb25zdCc7XG5pbXBvcnQgdHlwZSB7XG4gIEFjY29yZGlvbkFjdGlvbixcbiAgQWNjb3JkaW9uU3dpdGNoQ29uZmlnLFxuICBBY2NvcmRpb25UcmFuc2xhdGVQYXJhbXMsXG4gIEFjY29yZGlvblZhbGlkYXRpb25Db2xvclxufSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3R5cGVzL2FjY29yZGlvbi50eXBlJztcbmltcG9ydCB7IG5leHRTZXF1ZW50aWFsSWQgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3V0aWxzL2lkLnV0aWwnO1xuaW1wb3J0IHsgcmVzb2x2ZU51bGxhYmxlVHJhbnNsYXRhYmxlVGV4dCwgcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3V0aWxzL2kxOG4udXRpbCc7XG5pbXBvcnQgeyBodW1hbml6ZVRleHQgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3V0aWxzL3N0cmluZy51dGlsJztcbmltcG9ydCB7IFN3aXRjaENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3N3aXRjaC9zd2l0Y2guY29tcG9uZW50JztcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2RjLWFjY29yZGlvbi1pdGVtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgU3dpdGNoQ29tcG9uZW50LCBUb29sdGlwQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjY29yZGlvbi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2FjY29yZGlvbi1pdGVtLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIEFjY29yZGlvbkl0ZW1Db21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGl0ZW1JZCA9IG5leHRTZXF1ZW50aWFsSWQoJ3NkYy1hY2NvcmRpb24taXRlbScpO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGhlYWRlciE6IHN0cmluZztcbiAgQElucHV0KCkgaGVhZGVyUGFyYW1zPzogQWNjb3JkaW9uVHJhbnNsYXRlUGFyYW1zO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBjYWNoZSA9IEFDQ09SRElPTl9ERUZBVUxUX0NBQ0hFO1xuICBASW5wdXQoKSBhY3Rpb25zOiBBY2NvcmRpb25BY3Rpb25bXSA9IFtdO1xuICBASW5wdXQoKSBzd2l0Y2hDb25maWc/OiBBY2NvcmRpb25Td2l0Y2hDb25maWcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgdmFsaWRhdGlvbk1lc3NhZ2U/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHZhbGlkYXRpb25NZXNzYWdlUGFyYW1zPzogQWNjb3JkaW9uVHJhbnNsYXRlUGFyYW1zO1xuICBASW5wdXQoKSB2YWxpZGF0aW9uTWVzc2FnZUljb24gPSBBQ0NPUkRJT05fREVGQVVMVF9WQUxJREFUSU9OX0lDT047XG4gIEBJbnB1dCgpIHZhbGlkYXRpb25NZXNzYWdlSWNvbkNvbG9yOiBBY2NvcmRpb25WYWxpZGF0aW9uQ29sb3IgPSBBQ0NPUkRJT05fREVGQVVMVF9WQUxJREFUSU9OX0lDT05fQ09MT1IgYXMgQWNjb3JkaW9uVmFsaWRhdGlvbkNvbG9yO1xuICBASW5wdXQoKSB0b2dnbGVBcmlhTGFiZWwgPSBBQ0NPUkRJT05fREVGQVVMVF9UT0dHTEVfQVJJQV9MQUJFTDtcbiAgQElucHV0KCkgaW5mb0FyaWFMYWJlbCA9IEFDQ09SRElPTl9ERUZBVUxUX0lORk9fQVJJQV9MQUJFTDtcblxuICBAT3V0cHV0KCkgcGFuZWxPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBwYW5lbENsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHRvZ2dsZVJlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHN3aXRjaENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICByZWFkb25seSBzd2l0Y2hWYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBpc09wZW4gPSBmYWxzZTtcbiAgcG9zaXRpb24gPSAtMTtcblxuICBnZXQgY29udGVudElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuaXRlbUlkfS1jb250ZW50YDtcbiAgfVxuXG4gIGdldCBoZWFkZXJJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLml0ZW1JZH0taGVhZGVyYDtcbiAgfVxuXG4gIGdldCB2YWxpZGF0aW9uTWVzc2FnZVRleHQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlc29sdmVOdWxsYWJsZVRyYW5zbGF0YWJsZVRleHQodGhpcy50cmFuc2xhdGUsIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UsICcnLCB0aGlzLnZhbGlkYXRpb25NZXNzYWdlUGFyYW1zKTtcbiAgfVxuXG4gIGdldCB0b2dnbGVCdXR0b25BcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBhY3Rpb24gPSByZXNvbHZlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdGhpcy50b2dnbGVBcmlhTGFiZWwpO1xuICAgIGNvbnN0IHZlcmJLZXkgPSB0aGlzLmlzT3BlblxuICAgICAgPyAncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5wYW5lbF9jb2xsYXBzZSdcbiAgICAgIDogJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucGFuZWxfZXhwYW5kJztcbiAgICBjb25zdCB2ZXJiID0gcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQodGhpcy50cmFuc2xhdGUsIHZlcmJLZXkpO1xuICAgIHJldHVybiBbYWN0aW9uLCB2ZXJiLCB0aGlzLmhlYWRlclRleHRdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgLSAnKTtcbiAgfVxuXG4gIGdldCBzaG91bGRSZW5kZXJDb250ZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlIHx8IHRoaXMuaXNPcGVuO1xuICB9XG5cbiAgZ2V0IHN3aXRjaFZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuc3dpdGNoQ29uZmlnPy52YWx1ZTtcbiAgfVxuXG4gIGdldCBoZWFkZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlc29sdmVUcmFuc2xhdGFibGVUZXh0KHRoaXMudHJhbnNsYXRlLCB0aGlzLmhlYWRlciwgJycsIHRoaXMuaGVhZGVyUGFyYW1zKTtcbiAgfVxuXG4gIHJlZ2lzdGVyUG9zaXRpb24oaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucG9zaXRpb24gPSBpbmRleDtcbiAgfVxuXG4gIHNldE9wZW4obmV4dE9wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCAmJiBuZXh0T3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzT3BlbiA9PT0gbmV4dE9wZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzT3BlbiA9IG5leHRPcGVuO1xuXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLnBhbmVsT3BlbmVkLmVtaXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYW5lbENsb3NlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZXF1ZXN0VG9nZ2xlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50b2dnbGVSZXF1ZXN0ZWQuZW1pdCgpO1xuICB9XG5cbiAgb25BY3Rpb25DbGljayhhY3Rpb246IEFjY29yZGlvbkFjdGlvbiwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IGFjdGlvbi5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGFjdGlvbi5vbkNsaWNrPy4oZXZlbnQpO1xuICB9XG5cbiAgb25Td2l0Y2hDaGFuZ2UoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc3dpdGNoQ29uZmlnID0ge1xuICAgICAgLi4uKHRoaXMuc3dpdGNoQ29uZmlnID8/IHsgYXJpYUxhYmVsOiBBQ0NPUkRJT05fREVGQVVMVF9TV0lUQ0hfQVJJQV9MQUJFTCB9KSxcbiAgICAgIHZhbHVlOiBjaGVja2VkXG4gICAgfTtcbiAgICB0aGlzLnN3aXRjaFZhbHVlQ2hhbmdlLmVtaXQoY2hlY2tlZCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBlbWl0U3dpdGNoQ2hhbmdlKGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnN3aXRjaENoYW5nZS5lbWl0KGNoZWNrZWQpO1xuICB9XG5cbiAgcmVzb2x2ZUFjdGlvbkFyaWFMYWJlbChhY3Rpb246IEFjY29yZGlvbkFjdGlvbik6IHN0cmluZyB7XG4gICAgY29uc3QgZmFsbGJhY2sgPSBhY3Rpb24uaWNvbiA/IGh1bWFuaXplVGV4dChhY3Rpb24uaWNvbi5yZXBsYWNlKC9cXGJmYVtzcmJsZF0/XFxiL2csICcnKS5yZXBsYWNlKC9mYS0vZywgJyAnKSkgOiAnJztcbiAgICByZXR1cm4gcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQoXG4gICAgICB0aGlzLnRyYW5zbGF0ZSxcbiAgICAgIGFjdGlvbi5hcmlhTGFiZWwsXG4gICAgICBmYWxsYmFjayB8fCBBQ0NPUkRJT05fREVGQVVMVF9BQ1RJT05fQVJJQV9MQUJFTCxcbiAgICAgIGFjdGlvbi5hcmlhTGFiZWxQYXJhbXNcbiAgICApO1xuICB9XG5cbiAgcmVzb2x2ZUFjdGlvblRvb2x0aXAoYWN0aW9uOiBBY2NvcmRpb25BY3Rpb24pOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gcmVzb2x2ZU51bGxhYmxlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgYWN0aW9uLnRvb2x0aXAsICcnLCBhY3Rpb24udG9vbHRpcFBhcmFtcyk7XG4gIH1cblxuICByZXNvbHZlU3dpdGNoQXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlc29sdmVUcmFuc2xhdGFibGVUZXh0KFxuICAgICAgdGhpcy50cmFuc2xhdGUsXG4gICAgICB0aGlzLnN3aXRjaENvbmZpZz8uYXJpYUxhYmVsLFxuICAgICAgQUNDT1JESU9OX0RFRkFVTFRfU1dJVENIX0FSSUFfTEFCRUwsXG4gICAgICB0aGlzLnN3aXRjaENvbmZpZz8uYXJpYUxhYmVsUGFyYW1zXG4gICAgKTtcbiAgfVxuXG4gIGdldCB2YWxpZGF0aW9uSWNvbkFyaWFMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRlbXBsYXRlID0gcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQodGhpcy50cmFuc2xhdGUsIHRoaXMuaW5mb0FyaWFMYWJlbCk7XG4gICAgcmV0dXJuIHRlbXBsYXRlLnJlcGxhY2UoJ3t0ZXh0fScsIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VUZXh0ID8/ICcnKTtcbiAgfVxufVxuIiwiPHNlY3Rpb25cbiAgY2xhc3M9XCJzZGMtYWNjb3JkaW9uLWl0ZW1cIlxuICBbY2xhc3Muc2RjLWFjY29yZGlvbi1pdGVtLS1vcGVuXT1cImlzT3BlblwiXG4gIFtjbGFzcy5zZGMtYWNjb3JkaW9uLWl0ZW0tLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbj5cbiAgPGRpdiBjbGFzcz1cInNkYy1hY2NvcmRpb24taXRlbV9faGVhZGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cInNkYy1hY2NvcmRpb24taXRlbV9fdHJpZ2dlclwiXG4gICAgICBbaWRdPVwiaGVhZGVySWRcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuXCJcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiY29udGVudElkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidG9nZ2xlQnV0dG9uQXJpYUxhYmVsXCJcbiAgICAgIChjbGljayk9XCJyZXF1ZXN0VG9nZ2xlKClcIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwic2RjLWFjY29yZGlvbi1pdGVtX19oZWFkZXJNYWluXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLWFjY29yZGlvbi1pdGVtX190b2dnbGVJY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXNcIiBbY2xhc3MuZmEtcGx1c109XCIhaXNPcGVuXCIgW2NsYXNzLmZhLW1pbnVzXT1cImlzT3BlblwiPjwvaT5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIEBpZiAodmFsaWRhdGlvbk1lc3NhZ2VUZXh0KSB7XG4gICAgICAgICAgPHNkYy10b29sdGlwIFtwVG9vbHRpcF09XCJ2YWxpZGF0aW9uTWVzc2FnZVRleHRcIiBbdG9vbHRpcEV2ZW50XT1cIidib3RoJ1wiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtYWNjb3JkaW9uLWl0ZW1fX3ZhbGlkYXRpb25cIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3NkYy1hY2NvcmRpb24taXRlbV9fdmFsaWRhdGlvbi0tJyArIHZhbGlkYXRpb25NZXNzYWdlSWNvbkNvbG9yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cInZhbGlkYXRpb25NZXNzYWdlSWNvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwidmFsaWRhdGlvbkljb25BcmlhTGFiZWxcIj48L2k+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9zZGMtdG9vbHRpcD5cbiAgICAgICAgfVxuXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLWFjY29yZGlvbi1pdGVtX190aXRsZVwiPnt7IGhlYWRlciB8IHRyYW5zbGF0ZTogaGVhZGVyUGFyYW1zIH19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJzZGMtYWNjb3JkaW9uLWl0ZW1fX2hlYWRlckFjdGlvbnNcIj5cbiAgICAgIEBmb3IgKGFjdGlvbiBvZiBhY3Rpb25zOyB0cmFjayBhY3Rpb24uaWNvbiArICctJyArICRpbmRleCkge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJzZGMtYWNjb3JkaW9uLWl0ZW1fX2FjdGlvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGFjdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyZXNvbHZlQWN0aW9uQXJpYUxhYmVsKGFjdGlvbilcIlxuICAgICAgICAgIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKGFjdGlvbiwgJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKHJlc29sdmVBY3Rpb25Ub29sdGlwKGFjdGlvbik7IGFzIGFjdGlvblRvb2x0aXApIHtcbiAgICAgICAgICAgIDxzZGMtdG9vbHRpcCBbcFRvb2x0aXBdPVwiYWN0aW9uVG9vbHRpcFwiIFt0b29sdGlwRXZlbnRdPVwiJ2JvdGgnXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLWFjY29yZGlvbi1pdGVtX19hY3Rpb25JY29uV3JhcFwiPlxuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJhY3Rpb24uaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zZGMtdG9vbHRpcD5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxpIFtjbGFzc109XCJhY3Rpb24uaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuXG4gICAgICBAaWYgKHN3aXRjaENvbmZpZykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWFjY29yZGlvbi1pdGVtX19zd2l0Y2hcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgPHNkYy1zd2l0Y2hcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInN3aXRjaFZhbHVlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCAhIXN3aXRjaENvbmZpZy5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cInJlc29sdmVTd2l0Y2hBcmlhTGFiZWwoKVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblN3aXRjaENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICA+PC9zZGMtc3dpdGNoPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuXG4gIEBpZiAoc2hvdWxkUmVuZGVyQ29udGVudCkge1xuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2RjLWFjY29yZGlvbi1pdGVtX19jb250ZW50XCJcbiAgICAgIFtpZF09XCJjb250ZW50SWRcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImhlYWRlcklkXCJcbiAgICAgIFtoaWRkZW5dPVwiIWlzT3BlblwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInNkYy1hY2NvcmRpb24taXRlbV9fY29udGVudElubmVyXCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG48L3NlY3Rpb24+XG4iXX0=