@fundamental-ngx/platform 0.48.0-rc.2 → 0.48.0-rc.21

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 (684) hide show
  1. package/approval-flow/helpers/index.d.ts +1 -1
  2. package/approval-flow/index.d.ts +2 -2
  3. package/approval-flow/interfaces/approval-process.d.ts +1 -1
  4. package/approval-flow/interfaces/index.d.ts +1 -1
  5. package/approval-flow/interfaces/send-reminders-data.d.ts +1 -1
  6. package/button/button.component.d.ts +4 -1
  7. package/button/index.d.ts +1 -1
  8. package/dynamic-page/index.d.ts +5 -5
  9. package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +2 -2
  10. package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +1 -1
  11. package/esm2022/approval-flow/approval-flow-graph.mjs +1 -1
  12. package/esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +1 -1
  13. package/esm2022/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.mjs +1 -1
  14. package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +2 -2
  15. package/esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +1 -1
  16. package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +1 -1
  17. package/esm2022/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.mjs +1 -1
  18. package/esm2022/approval-flow/approval-flow-user-details/approval-flow-user-details.component.mjs +1 -1
  19. package/esm2022/approval-flow/approval-flow-user-list/approval-flow-user-list.component.mjs +1 -1
  20. package/esm2022/approval-flow/approval-flow.component.mjs +2 -2
  21. package/esm2022/approval-flow/approval-flow.module.mjs +1 -1
  22. package/esm2022/approval-flow/fundamental-ngx-platform-approval-flow.mjs +1 -1
  23. package/esm2022/approval-flow/helpers/index.mjs +1 -1
  24. package/esm2022/approval-flow/index.mjs +3 -3
  25. package/esm2022/approval-flow/interfaces/approval-node.mjs +1 -1
  26. package/esm2022/approval-flow/interfaces/approval-process.mjs +1 -1
  27. package/esm2022/approval-flow/interfaces/approval-status.mjs +1 -1
  28. package/esm2022/approval-flow/interfaces/approval-team.mjs +1 -1
  29. package/esm2022/approval-flow/interfaces/approval-user.mjs +1 -1
  30. package/esm2022/approval-flow/interfaces/index.mjs +2 -2
  31. package/esm2022/approval-flow/interfaces/send-reminders-data.mjs +1 -1
  32. package/esm2022/approval-flow/services/approval-flow-add-node-view.service.mjs +1 -1
  33. package/esm2022/button/button.component.mjs +8 -3
  34. package/esm2022/button/button.module.mjs +1 -1
  35. package/esm2022/button/fundamental-ngx-platform-button.mjs +1 -1
  36. package/esm2022/button/index.mjs +2 -2
  37. package/esm2022/dynamic-page/constants.mjs +1 -1
  38. package/esm2022/dynamic-page/directives/dynamic-page-header-subtitle.directive.mjs +1 -1
  39. package/esm2022/dynamic-page/directives/dynamic-page-header-title.directive.mjs +1 -1
  40. package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content-host.component.mjs +1 -1
  41. package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +1 -1
  42. package/esm2022/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +1 -1
  43. package/esm2022/dynamic-page/dynamic-page-header/actions/global-actions/dynamic-page-global-actions.component.mjs +1 -1
  44. package/esm2022/dynamic-page/dynamic-page-header/actions/layout-actions/dynamic-page-layout-actions.component.mjs +1 -1
  45. package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +1 -1
  46. package/esm2022/dynamic-page/dynamic-page-header/key-info/dynamic-page-key-info.component.mjs +1 -1
  47. package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title-image.component.mjs +1 -1
  48. package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title.component.mjs +1 -1
  49. package/esm2022/dynamic-page/dynamic-page.component.mjs +1 -1
  50. package/esm2022/dynamic-page/dynamic-page.config.mjs +1 -1
  51. package/esm2022/dynamic-page/dynamic-page.module.mjs +1 -1
  52. package/esm2022/dynamic-page/dynamic-page.service.mjs +1 -1
  53. package/esm2022/dynamic-page/fundamental-ngx-platform-dynamic-page.mjs +1 -1
  54. package/esm2022/dynamic-page/index.mjs +6 -6
  55. package/esm2022/dynamic-page/utils.mjs +1 -1
  56. package/esm2022/feed-input/feed-input.component.mjs +2 -2
  57. package/esm2022/feed-input/feed-input.module.mjs +1 -1
  58. package/esm2022/feed-input/fundamental-ngx-platform-feed-input.mjs +1 -1
  59. package/esm2022/feed-input/index.mjs +2 -2
  60. package/esm2022/form/auto-complete/auto-complete.directive.mjs +2 -2
  61. package/esm2022/form/auto-complete/auto-complete.module.mjs +1 -1
  62. package/esm2022/form/checkbox/checkbox.component.mjs +1 -1
  63. package/esm2022/form/checkbox/checkbox.module.mjs +1 -1
  64. package/esm2022/form/checkbox-group/checkbox-group.component.mjs +1 -1
  65. package/esm2022/form/checkbox-group/checkbox-group.module.mjs +1 -1
  66. package/esm2022/form/combobox/combobox/combobox.component.mjs +13 -4
  67. package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +1 -1
  68. package/esm2022/form/combobox/combobox-mobile/combobox-mobile.module.mjs +1 -1
  69. package/esm2022/form/combobox/combobox.config.mjs +2 -2
  70. package/esm2022/form/combobox/combobox.interface.mjs +1 -1
  71. package/esm2022/form/combobox/combobox.module.mjs +1 -1
  72. package/esm2022/form/combobox/commons/base-combobox.mjs +1 -1
  73. package/esm2022/form/combobox/directives/combobox-item.directive.mjs +1 -1
  74. package/esm2022/form/combobox/index.mjs +1 -1
  75. package/esm2022/form/date-picker/date-picker.component.mjs +4 -5
  76. package/esm2022/form/date-picker/date-picker.module.mjs +1 -1
  77. package/esm2022/form/datetime-picker/datetime-picker.component.mjs +3 -3
  78. package/esm2022/form/datetime-picker/datetime-picker.module.mjs +1 -1
  79. package/esm2022/form/datetime-picker/errors.mjs +1 -1
  80. package/esm2022/form/form-generator/base-dynamic-form-generator-control.mjs +1 -1
  81. package/esm2022/form/form-generator/config/default-components-list.mjs +6 -6
  82. package/esm2022/form/form-generator/config/default-form-generator-hint-options.mjs +1 -1
  83. package/esm2022/form/form-generator/config/default-validation-errors.mjs +1 -1
  84. package/esm2022/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.mjs +3 -3
  85. package/esm2022/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +1 -1
  86. package/esm2022/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.mjs +1 -1
  87. package/esm2022/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.mjs +1 -1
  88. package/esm2022/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +1 -1
  89. package/esm2022/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.mjs +2 -2
  90. package/esm2022/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.mjs +3 -3
  91. package/esm2022/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +1 -1
  92. package/esm2022/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +1 -1
  93. package/esm2022/form/form-generator/dynamic-form-control-field.directive.mjs +1 -1
  94. package/esm2022/form/form-generator/dynamic-form-control.directive.mjs +3 -3
  95. package/esm2022/form/form-generator/dynamic-form-control.mjs +1 -1
  96. package/esm2022/form/form-generator/fdp-form-generator.module.mjs +14 -14
  97. package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +1 -1
  98. package/esm2022/form/form-generator/form-generator-components-accessor.service.mjs +1 -1
  99. package/esm2022/form/form-generator/form-generator-field/form-generator-field.component.mjs +1 -1
  100. package/esm2022/form/form-generator/form-generator.service.mjs +3 -3
  101. package/esm2022/form/form-generator/form-generator.tokens.mjs +1 -1
  102. package/esm2022/form/form-generator/helpers.mjs +1 -1
  103. package/esm2022/form/form-generator/interfaces/dynamic-abstract-control.mjs +1 -1
  104. package/esm2022/form/form-generator/interfaces/dynamic-form-group.mjs +1 -1
  105. package/esm2022/form/form-generator/interfaces/dynamic-form-item.mjs +1 -1
  106. package/esm2022/form/form-generator/interfaces/form-component-definition.mjs +1 -1
  107. package/esm2022/form/form-generator/interfaces/form-generator-module-config.mjs +1 -1
  108. package/esm2022/form/form-generator/pipes/get-hint-options.pipe.mjs +2 -2
  109. package/esm2022/form/form-generator/pipes/get-ordered-form-controls.pipe.mjs +1 -1
  110. package/esm2022/form/form-generator/providers/providers.mjs +1 -1
  111. package/esm2022/form/form-group/config/default-form-field-hint-options.mjs +1 -1
  112. package/esm2022/form/form-group/constants.mjs +1 -1
  113. package/esm2022/form/form-group/fdp-form.module.mjs +7 -7
  114. package/esm2022/form/form-group/fdp-form.tokens.mjs +1 -1
  115. package/esm2022/form/form-group/form-field/form-field.component.mjs +1 -1
  116. package/esm2022/form/form-group/form-field-error/form-field-error-description.directive.mjs +1 -1
  117. package/esm2022/form/form-group/form-field-error/form-field-error-heading.directive.mjs +1 -1
  118. package/esm2022/form/form-group/form-field-error/form-field-error.directive.mjs +1 -1
  119. package/esm2022/form/form-group/form-field-error/tokens.mjs +1 -1
  120. package/esm2022/form/form-group/form-field-extras/form-field-extras.component.mjs +1 -1
  121. package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +1 -1
  122. package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +1 -1
  123. package/esm2022/form/form-group/form-group.component.mjs +1 -1
  124. package/esm2022/form/form-group/helpers.mjs +1 -1
  125. package/esm2022/form/form-group/pipes/field-group-row-value.pipe.mjs +1 -1
  126. package/esm2022/form/form-group/services/form-field-layout.service.mjs +3 -3
  127. package/esm2022/form/form-helpers.mjs +3 -3
  128. package/esm2022/form/fundamental-ngx-platform-form.mjs +1 -1
  129. package/esm2022/form/helpers.mjs +1 -1
  130. package/esm2022/form/index.mjs +1 -1
  131. package/esm2022/form/input/fdp-input.module.mjs +1 -1
  132. package/esm2022/form/input/input.component.mjs +1 -1
  133. package/esm2022/form/input-group/addon-body.component.mjs +2 -2
  134. package/esm2022/form/input-group/addon.component.mjs +2 -2
  135. package/esm2022/form/input-group/constants.mjs +1 -1
  136. package/esm2022/form/input-group/input-group.component.mjs +1 -1
  137. package/esm2022/form/input-group/input-group.config.mjs +1 -1
  138. package/esm2022/form/input-group/input-group.module.mjs +3 -3
  139. package/esm2022/form/input-group/input.component.mjs +2 -2
  140. package/esm2022/form/input-message-group-with-template/input-message-group-with-template.component.mjs +1 -1
  141. package/esm2022/form/models/field.model.mjs +1 -1
  142. package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +1 -1
  143. package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +2 -2
  144. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +1 -1
  145. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.mjs +1 -1
  146. package/esm2022/form/multi-combobox/multi-combobox.config.mjs +2 -2
  147. package/esm2022/form/multi-combobox/multi-combobox.interface.mjs +1 -1
  148. package/esm2022/form/multi-combobox/multi-combobox.module.mjs +1 -1
  149. package/esm2022/form/multi-input/base-multi-input.mjs +1 -1
  150. package/esm2022/form/multi-input/index.mjs +2 -2
  151. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +1 -1
  152. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +1 -1
  153. package/esm2022/form/multi-input/multi-input.component.mjs +2 -2
  154. package/esm2022/form/multi-input/multi-input.config.mjs +2 -2
  155. package/esm2022/form/multi-input/multi-input.interface.mjs +1 -1
  156. package/esm2022/form/multi-input/multi-input.module.mjs +1 -1
  157. package/esm2022/form/radio-group/radio/radio.component.mjs +1 -1
  158. package/esm2022/form/radio-group/radio-group.component.mjs +1 -1
  159. package/esm2022/form/radio-group/radio-group.module.mjs +1 -1
  160. package/esm2022/form/select/commons/base-select.mjs +7 -2
  161. package/esm2022/form/select/models/select.models.mjs +1 -1
  162. package/esm2022/form/select/select/select.component.mjs +3 -3
  163. package/esm2022/form/select/select.config.mjs +1 -1
  164. package/esm2022/form/select/select.module.mjs +1 -1
  165. package/esm2022/form/step-input/base.step-input.mjs +5 -5
  166. package/esm2022/form/step-input/number/number-step-input.component.mjs +1 -1
  167. package/esm2022/form/step-input/step-input-action-button.mjs +2 -2
  168. package/esm2022/form/step-input/step-input-control.directive.mjs +2 -2
  169. package/esm2022/form/step-input/step-input-decrement.directive.mjs +1 -1
  170. package/esm2022/form/step-input/step-input-increment.directive.mjs +1 -1
  171. package/esm2022/form/step-input/step-input.config.mjs +1 -1
  172. package/esm2022/form/step-input/step-input.module.mjs +3 -3
  173. package/esm2022/form/step-input/step-input.util.mjs +1 -1
  174. package/esm2022/form/switch/switch/index.mjs +1 -1
  175. package/esm2022/form/switch/switch/switch.component.mjs +1 -1
  176. package/esm2022/form/switch/switch/switch.config.mjs +1 -1
  177. package/esm2022/form/switch/switch.module.mjs +1 -1
  178. package/esm2022/form/text-area/text-area.component.mjs +1 -1
  179. package/esm2022/form/text-area/text-area.config.mjs +1 -1
  180. package/esm2022/form/text-area/text-area.module.mjs +1 -1
  181. package/esm2022/form/time-picker/time-picker.component.mjs +1 -1
  182. package/esm2022/form/time-picker/time-picker.module.mjs +1 -1
  183. package/esm2022/icon-tab-bar/components/closable-icon-tab-bar.class.mjs +1 -1
  184. package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +1 -1
  185. package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +1 -1
  186. package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +1 -1
  187. package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +1 -1
  188. package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +1 -1
  189. package/esm2022/icon-tab-bar/components/index.mjs +1 -1
  190. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +3 -3
  191. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.mjs +1 -1
  192. package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +3 -3
  193. package/esm2022/icon-tab-bar/constants.mjs +1 -1
  194. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +1 -1
  195. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +1 -1
  196. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +1 -1
  197. package/esm2022/icon-tab-bar/fundamental-ngx-platform-icon-tab-bar.mjs +1 -1
  198. package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +1 -1
  199. package/esm2022/icon-tab-bar/icon-tab-bar.module.mjs +1 -1
  200. package/esm2022/icon-tab-bar/index.mjs +8 -8
  201. package/esm2022/icon-tab-bar/interfaces/icon-tab-bar-item.interface.mjs +1 -1
  202. package/esm2022/icon-tab-bar/interfaces/tab-color-associations.interface.mjs +1 -1
  203. package/esm2022/icon-tab-bar/interfaces/tab-config.interface.mjs +1 -1
  204. package/esm2022/icon-tab-bar/types.mjs +1 -1
  205. package/esm2022/info-label/fundamental-ngx-platform-info-label.mjs +1 -1
  206. package/esm2022/info-label/index.mjs +1 -1
  207. package/esm2022/info-label/info-label.component.mjs +1 -1
  208. package/esm2022/info-label/info-label.module.mjs +1 -1
  209. package/esm2022/link/fundamental-ngx-platform-link.mjs +1 -1
  210. package/esm2022/link/index.mjs +1 -1
  211. package/esm2022/link/link.component.mjs +3 -3
  212. package/esm2022/link/link.module.mjs +1 -1
  213. package/esm2022/list/action-list-item/action-list-item.component.mjs +3 -3
  214. package/esm2022/list/action-list-item/action-list-item.module.mjs +1 -1
  215. package/esm2022/list/base-list-item.mjs +2 -2
  216. package/esm2022/list/display-list-item/display-list-item.component.mjs +3 -3
  217. package/esm2022/list/display-list-item/display-list-item.module.mjs +1 -1
  218. package/esm2022/list/fdpListComponent.token.mjs +1 -1
  219. package/esm2022/list/free-content-list-item/free-content-list-item.component.mjs +3 -3
  220. package/esm2022/list/fundamental-ngx-platform-list.mjs +1 -1
  221. package/esm2022/list/index.mjs +13 -13
  222. package/esm2022/list/list-group-footer.component.mjs +3 -3
  223. package/esm2022/list/list-group-header.component.mjs +5 -5
  224. package/esm2022/list/list.component.mjs +5 -5
  225. package/esm2022/list/list.config.mjs +1 -1
  226. package/esm2022/list/list.module.mjs +1 -1
  227. package/esm2022/list/load-more-content.directive.mjs +1 -1
  228. package/esm2022/list/models/list.mjs +1 -1
  229. package/esm2022/list/object-list-item/object-list-item-row.component.mjs +1 -1
  230. package/esm2022/list/object-list-item/object-list-item.component.mjs +3 -3
  231. package/esm2022/list/object-list-item/object-list-item.module.mjs +1 -1
  232. package/esm2022/list/standard-list-item/standard-list-item.component.mjs +3 -3
  233. package/esm2022/list/standard-list-item/standard-list-item.module.mjs +1 -1
  234. package/esm2022/menu/fundamental-ngx-platform-menu.mjs +1 -1
  235. package/esm2022/menu/index.mjs +3 -3
  236. package/esm2022/menu/menu-item.component.mjs +1 -1
  237. package/esm2022/menu/menu-trigger.directive.mjs +1 -1
  238. package/esm2022/menu/menu.component.mjs +1 -1
  239. package/esm2022/menu/menu.module.mjs +1 -1
  240. package/esm2022/menu-button/fundamental-ngx-platform-menu-button.mjs +1 -1
  241. package/esm2022/menu-button/index.mjs +2 -2
  242. package/esm2022/menu-button/menu-button.component.mjs +8 -3
  243. package/esm2022/menu-button/menu-button.module.mjs +1 -1
  244. package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +1 -1
  245. package/esm2022/message-popover/components/message-view/message-view.component.mjs +2 -2
  246. package/esm2022/message-popover/default-config.mjs +1 -1
  247. package/esm2022/message-popover/directives/message-popover-form-item.directive.mjs +1 -1
  248. package/esm2022/message-popover/fundamental-ngx-platform-message-popover.mjs +1 -1
  249. package/esm2022/message-popover/index.mjs +5 -5
  250. package/esm2022/message-popover/message-popover.component.mjs +2 -2
  251. package/esm2022/message-popover/models/message-popover-entry.interface.mjs +1 -1
  252. package/esm2022/message-popover/models/message-popover-wrapper.interface.mjs +1 -1
  253. package/esm2022/message-popover/models/message-popover.interface.mjs +1 -1
  254. package/esm2022/message-popover/platform-message-popover.module.mjs +3 -3
  255. package/esm2022/message-popover/utils.mjs +1 -1
  256. package/esm2022/object-attribute/fundamental-ngx-platform-object-attribute.mjs +1 -1
  257. package/esm2022/object-attribute/index.mjs +1 -1
  258. package/esm2022/object-marker/fundamental-ngx-platform-object-marker.mjs +1 -1
  259. package/esm2022/object-marker/index.mjs +1 -1
  260. package/esm2022/object-marker/object-marker.component.mjs +8 -3
  261. package/esm2022/object-marker/object-marker.module.mjs +1 -1
  262. package/esm2022/object-status/fundamental-ngx-platform-object-status.mjs +1 -1
  263. package/esm2022/object-status/index.mjs +1 -1
  264. package/esm2022/object-status/object-status.component.mjs +8 -3
  265. package/esm2022/object-status/object-status.module.mjs +1 -1
  266. package/esm2022/page-footer/fundamental-ngx-platform-page-footer.mjs +1 -1
  267. package/esm2022/page-footer/index.mjs +1 -1
  268. package/esm2022/page-footer/page-footer.component.mjs +1 -1
  269. package/esm2022/page-footer/page-footer.module.mjs +1 -1
  270. package/esm2022/panel/fundamental-ngx-platform-panel.mjs +1 -1
  271. package/esm2022/panel/index.mjs +3 -3
  272. package/esm2022/panel/panel-actions.component.mjs +1 -1
  273. package/esm2022/panel/panel-content/panel-content.component.mjs +1 -1
  274. package/esm2022/panel/panel.component.mjs +1 -1
  275. package/esm2022/panel/panel.config.mjs +1 -1
  276. package/esm2022/panel/panel.module.mjs +1 -1
  277. package/esm2022/search-field/fundamental-ngx-platform-search-field.mjs +1 -1
  278. package/esm2022/search-field/index.mjs +2 -2
  279. package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +1 -1
  280. package/esm2022/search-field/search-field-mobile/search-field-mobile.interface.mjs +1 -1
  281. package/esm2022/search-field/search-field-mobile/search-field-mobile.module.mjs +1 -1
  282. package/esm2022/search-field/search-field.component.mjs +2 -2
  283. package/esm2022/search-field/search-field.module.mjs +1 -1
  284. package/esm2022/settings-generator/controls/theme-selector-list/theme-selector-list.component.mjs +1 -1
  285. package/esm2022/settings-generator/default-config.mjs +1 -1
  286. package/esm2022/settings-generator/fundamental-ngx-platform-settings-generator.mjs +1 -1
  287. package/esm2022/settings-generator/index.mjs +5 -5
  288. package/esm2022/settings-generator/layouts/base-settings-generator-layout.mjs +2 -2
  289. package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +1 -1
  290. package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +1 -1
  291. package/esm2022/settings-generator/models/settings-config.model.mjs +1 -1
  292. package/esm2022/settings-generator/models/settings-generator.model.mjs +1 -1
  293. package/esm2022/settings-generator/models/settings.model.mjs +1 -1
  294. package/esm2022/settings-generator/settings-generator-content/settings-generator-content.component.mjs +1 -1
  295. package/esm2022/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.mjs +1 -1
  296. package/esm2022/settings-generator/settings-generator-layout-accessor.service.mjs +1 -1
  297. package/esm2022/settings-generator/settings-generator.component.mjs +1 -1
  298. package/esm2022/settings-generator/settings-generator.module.mjs +1 -1
  299. package/esm2022/settings-generator/settings-generator.service.mjs +2 -2
  300. package/esm2022/settings-generator/tokens.mjs +1 -1
  301. package/esm2022/shared/base.mjs +1 -1
  302. package/esm2022/shared/domain/array-data-source.mjs +2 -2
  303. package/esm2022/shared/domain/base-data-provider.mjs +3 -3
  304. package/esm2022/shared/domain/data-model.mjs +1 -1
  305. package/esm2022/shared/domain/data-source.mjs +1 -1
  306. package/esm2022/shared/domain/observable-data-source.mjs +2 -2
  307. package/esm2022/shared/form/base.input.mjs +1 -1
  308. package/esm2022/shared/form/collection-base.input.mjs +4 -4
  309. package/esm2022/shared/form/form-error.mjs +1 -1
  310. package/esm2022/shared/form/form-field.mjs +1 -1
  311. package/esm2022/shared/form/form-options.mjs +1 -1
  312. package/esm2022/shared/form/hint-options.mjs +1 -1
  313. package/esm2022/shared/form/inline-layout-collection-base.input.mjs +3 -3
  314. package/esm2022/shared/fundamental-ngx-platform-shared.mjs +1 -1
  315. package/esm2022/shared/index.mjs +4 -4
  316. package/esm2022/shared/pipes/convert-bytes/convert-bytes.pipe.mjs +1 -1
  317. package/esm2022/shared/pipes/pipe.module.mjs +1 -1
  318. package/esm2022/shared/platform.config.mjs +1 -1
  319. package/esm2022/shared/preset-management/preset-managed-component.interface.mjs +1 -1
  320. package/esm2022/shared/preset-management/preset-management.token.mjs +1 -1
  321. package/esm2022/shared/testing/event-objects.mjs +1 -1
  322. package/esm2022/shared/utils/lang.mjs +1 -1
  323. package/esm2022/slider/fundamental-ngx-platform-slider.mjs +1 -1
  324. package/esm2022/slider/index.mjs +1 -1
  325. package/esm2022/slider/slider.component.mjs +2 -2
  326. package/esm2022/slider/slider.module.mjs +1 -1
  327. package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.mjs +1 -1
  328. package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +1 -1
  329. package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +2 -2
  330. package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/data-provider.mjs +1 -1
  331. package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +1 -1
  332. package/esm2022/smart-filter-bar/constants.mjs +1 -1
  333. package/esm2022/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.mjs +1 -1
  334. package/esm2022/smart-filter-bar/directives/smart-filter-bar-subject.directive.mjs +1 -1
  335. package/esm2022/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.mjs +1 -1
  336. package/esm2022/smart-filter-bar/fundamental-ngx-platform-smart-filter-bar.mjs +1 -1
  337. package/esm2022/smart-filter-bar/helpers.mjs +1 -1
  338. package/esm2022/smart-filter-bar/index.mjs +8 -8
  339. package/esm2022/smart-filter-bar/interfaces/smart-filter-bar-change.mjs +1 -1
  340. package/esm2022/smart-filter-bar/interfaces/smart-filter-bar-condition.mjs +1 -1
  341. package/esm2022/smart-filter-bar/interfaces/smart-filter-bar-custom-filter-config.mjs +1 -1
  342. package/esm2022/smart-filter-bar/interfaces/smart-filter-bar-field-definition.mjs +1 -1
  343. package/esm2022/smart-filter-bar/interfaces/smart-filter-bar-field-filter-item.mjs +1 -1
  344. package/esm2022/smart-filter-bar/interfaces/smart-filter-bar-settings-dialog-config.mjs +1 -1
  345. package/esm2022/smart-filter-bar/interfaces/smart-filter-bar-visibility-category.mjs +1 -1
  346. package/esm2022/smart-filter-bar/interfaces/smart-filter-dynamic-form-item.mjs +1 -1
  347. package/esm2022/smart-filter-bar/interfaces/strategy-labels.type.mjs +1 -1
  348. package/esm2022/smart-filter-bar/providers/smart-filter-bar.provider.mjs +1 -1
  349. package/esm2022/smart-filter-bar/smart-filter-bar.class.mjs +1 -1
  350. package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +2 -2
  351. package/esm2022/smart-filter-bar/smart-filter-bar.module.mjs +1 -1
  352. package/esm2022/smart-filter-bar/smart-filter-bar.service.mjs +2 -2
  353. package/esm2022/split-menu-button/fundamental-ngx-platform-split-menu-button.mjs +1 -1
  354. package/esm2022/split-menu-button/index.mjs +1 -1
  355. package/esm2022/split-menu-button/split-menu-button.component.mjs +8 -3
  356. package/esm2022/split-menu-button/split-menu-button.module.mjs +1 -1
  357. package/esm2022/table/components/index.mjs +9 -9
  358. package/esm2022/table/components/no-data-wrapper/no-data-wrapper.component.mjs +1 -1
  359. package/esm2022/table/components/reset-button/reset-button.component.mjs +1 -1
  360. package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +2 -2
  361. package/esm2022/table/components/table-column/table-column.component.mjs +1 -1
  362. package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +1 -1
  363. package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +1 -1
  364. package/esm2022/table/components/table-group-row/table-group-row.component.mjs +1 -1
  365. package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +2 -2
  366. package/esm2022/table/components/table-header-row/table-header-row.component.mjs +1 -1
  367. package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +1 -1
  368. package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +2 -2
  369. package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +1 -1
  370. package/esm2022/table/components/table-p13-dialog/filtering/filtering.model.mjs +1 -1
  371. package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +2 -2
  372. package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +2 -2
  373. package/esm2022/table/components/table-p13-dialog/table-p13-columns.component.mjs +1 -1
  374. package/esm2022/table/components/table-p13-dialog/table-p13-dialog.component.mjs +1 -1
  375. package/esm2022/table/components/table-p13-dialog/table-p13-filter.component.mjs +1 -1
  376. package/esm2022/table/components/table-p13-dialog/table-p13-group.component.mjs +1 -1
  377. package/esm2022/table/components/table-p13-dialog/table-p13-sort.component.mjs +1 -1
  378. package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +1 -1
  379. package/esm2022/table/components/table-row/table-row.component.mjs +6 -4
  380. package/esm2022/table/components/table-toolbar/table-toolbar-actions.component.mjs +1 -1
  381. package/esm2022/table/components/table-toolbar/table-toolbar-left-actions.component.mjs +1 -1
  382. package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +2 -2
  383. package/esm2022/table/components/table-toolbar/table-toolbar.mjs +1 -1
  384. package/esm2022/table/components/table-view-settings-dialog/filtering/constants.mjs +1 -1
  385. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-custom.component.mjs +1 -1
  386. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +1 -1
  387. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-single-select.component.mjs +1 -1
  388. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-step.component.mjs +1 -1
  389. package/esm2022/table/components/table-view-settings-dialog/filtering/filters-active-step.mjs +1 -1
  390. package/esm2022/table/components/table-view-settings-dialog/filtering/filters-list-step.component.mjs +1 -1
  391. package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +1 -1
  392. package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +1 -1
  393. package/esm2022/table/components/table-view-settings-dialog/index.mjs +3 -3
  394. package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +1 -1
  395. package/esm2022/table/components/table-view-settings-dialog/table-view-settings-dialog.component.mjs +1 -1
  396. package/esm2022/table/components/table-view-settings-dialog/table-view-settings-filter.component.mjs +1 -1
  397. package/esm2022/table/fundamental-ngx-platform-table.mjs +1 -1
  398. package/esm2022/table/index.mjs +15 -15
  399. package/esm2022/table/table.component.mjs +14 -10
  400. package/esm2022/table/table.module.mjs +1 -1
  401. package/esm2022/table-helpers/constants/index.mjs +1 -1
  402. package/esm2022/table-helpers/constants/tokens.mjs +1 -1
  403. package/esm2022/table-helpers/directives/index.mjs +7 -7
  404. package/esm2022/table-helpers/directives/platform-table-column-responsive.directive.mjs +3 -3
  405. package/esm2022/table-helpers/directives/table-cell-header-popover.directive.mjs +1 -1
  406. package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +3 -3
  407. package/esm2022/table-helpers/directives/table-cell-selectable.directive.mjs +2 -2
  408. package/esm2022/table-helpers/directives/table-cell.directive.mjs +1 -1
  409. package/esm2022/table-helpers/directives/table-data-source.directive.mjs +3 -2
  410. package/esm2022/table-helpers/directives/table-draggable.directive.mjs +1 -1
  411. package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +2 -2
  412. package/esm2022/table-helpers/directives/table-header.directive.mjs +1 -1
  413. package/esm2022/table-helpers/directives/table-initial-state.directive.mjs +1 -1
  414. package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +4 -4
  415. package/esm2022/table-helpers/directives/table-view-settings-filter-custom.directive.mjs +1 -1
  416. package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +2 -2
  417. package/esm2022/table-helpers/domain/array-data-source.mjs +3 -3
  418. package/esm2022/table-helpers/domain/data-source-parser.class.mjs +1 -1
  419. package/esm2022/table-helpers/domain/index.mjs +4 -4
  420. package/esm2022/table-helpers/domain/observable-data-source.mjs +3 -3
  421. package/esm2022/table-helpers/domain/table-data-provider.mjs +1 -1
  422. package/esm2022/table-helpers/domain/table-data-source.mjs +1 -1
  423. package/esm2022/table-helpers/enums/collection-filter.enum.mjs +1 -1
  424. package/esm2022/table-helpers/enums/column-align.enum.mjs +1 -1
  425. package/esm2022/table-helpers/enums/filter-type.enum.mjs +1 -1
  426. package/esm2022/table-helpers/enums/index.mjs +4 -4
  427. package/esm2022/table-helpers/enums/row-type.enum.mjs +1 -1
  428. package/esm2022/table-helpers/enums/selection-mode.enum.mjs +1 -1
  429. package/esm2022/table-helpers/enums/sort-direction.enum.mjs +1 -1
  430. package/esm2022/table-helpers/fundamental-ngx-platform-table-helpers.mjs +1 -1
  431. package/esm2022/table-helpers/helpers.mjs +6 -3
  432. package/esm2022/table-helpers/index.mjs +9 -9
  433. package/esm2022/table-helpers/interfaces/collection-filter.interface.mjs +1 -1
  434. package/esm2022/table-helpers/interfaces/collection-group.interface.mjs +1 -1
  435. package/esm2022/table-helpers/interfaces/collection-page.interface.mjs +1 -1
  436. package/esm2022/table-helpers/interfaces/collection-sort.interface.mjs +1 -1
  437. package/esm2022/table-helpers/interfaces/collection-state.interface.mjs +1 -1
  438. package/esm2022/table-helpers/interfaces/column-responsive-state.interface.mjs +1 -1
  439. package/esm2022/table-helpers/interfaces/index.mjs +3 -4
  440. package/esm2022/table-helpers/interfaces/selection-value.interface.mjs +1 -1
  441. package/esm2022/table-helpers/interfaces/table-state.interface.mjs +1 -1
  442. package/esm2022/table-helpers/models/column-freeze-event.model.mjs +1 -1
  443. package/esm2022/table-helpers/models/columns-change-event.model.mjs +1 -1
  444. package/esm2022/table-helpers/models/data-source.type.mjs +1 -1
  445. package/esm2022/table-helpers/models/directives.mjs +1 -1
  446. package/esm2022/table-helpers/models/dnd.mjs +1 -1
  447. package/esm2022/table-helpers/models/filter-change-event.model.mjs +1 -1
  448. package/esm2022/table-helpers/models/group-change-event.model.mjs +1 -1
  449. package/esm2022/table-helpers/models/index.mjs +15 -15
  450. package/esm2022/table-helpers/models/page-change-event.model.mjs +1 -1
  451. package/esm2022/table-helpers/models/row-comparator.model.mjs +1 -1
  452. package/esm2022/table-helpers/models/save-rows-event.interface.mjs +1 -1
  453. package/esm2022/table-helpers/models/search-change-event.model.mjs +1 -1
  454. package/esm2022/table-helpers/models/selection-change-event.model.mjs +1 -1
  455. package/esm2022/table-helpers/models/sort-change-event.model.mjs +1 -1
  456. package/esm2022/table-helpers/models/table-dialog-common-data.model.mjs +1 -1
  457. package/esm2022/table-helpers/models/table-item.model.mjs +1 -1
  458. package/esm2022/table-helpers/models/table-managed-preset.mjs +1 -1
  459. package/esm2022/table-helpers/models/table-row-activate-event.model.mjs +1 -1
  460. package/esm2022/table-helpers/models/table-row-toggle-open-state-event.model.mjs +1 -1
  461. package/esm2022/table-helpers/models/table-row.model.mjs +1 -1
  462. package/esm2022/table-helpers/models/table-rows-rearrange-event.model.mjs +1 -1
  463. package/esm2022/table-helpers/models/tree-table.model.mjs +1 -1
  464. package/esm2022/table-helpers/pipes/cell-styles.pipe.mjs +1 -1
  465. package/esm2022/table-helpers/pipes/column-resizable-side.pipe.mjs +1 -1
  466. package/esm2022/table-helpers/pipes/column-sorting-direction.pipe.mjs +1 -1
  467. package/esm2022/table-helpers/pipes/index.mjs +1 -1
  468. package/esm2022/table-helpers/pipes/row-classes.pipe.mjs +1 -1
  469. package/esm2022/table-helpers/pipes/selection-cell-styles.pipe.mjs +1 -1
  470. package/esm2022/table-helpers/services/table-column-resize.service.mjs +3 -4
  471. package/esm2022/table-helpers/services/table-responsive.service.mjs +1 -1
  472. package/esm2022/table-helpers/services/table-row.service.mjs +1 -1
  473. package/esm2022/table-helpers/services/table-scroll-dispatcher.service.mjs +1 -1
  474. package/esm2022/table-helpers/services/table.service.mjs +1 -1
  475. package/esm2022/table-helpers/table-cell.class.mjs +1 -1
  476. package/esm2022/table-helpers/table-column.mjs +1 -1
  477. package/esm2022/table-helpers/table-helpers.module.mjs +2 -2
  478. package/esm2022/table-helpers/table.mjs +1 -1
  479. package/esm2022/table-helpers/utils.mjs +1 -1
  480. package/esm2022/value-help-dialog/components/base-tab/vhd-base-tab.component.mjs +1 -1
  481. package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +2 -2
  482. package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +26 -6
  483. package/esm2022/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.mjs +7 -3
  484. package/esm2022/value-help-dialog/constans/condition-display.function.mjs +2 -2
  485. package/esm2022/value-help-dialog/constans/index.mjs +1 -1
  486. package/esm2022/value-help-dialog/constans/variables.mjs +1 -1
  487. package/esm2022/value-help-dialog/directives/condition-count-message.directive.mjs +1 -1
  488. package/esm2022/value-help-dialog/directives/value-help-column-def.directive.mjs +24 -0
  489. package/esm2022/value-help-dialog/directives/value-help-filter-def.directive.mjs +22 -0
  490. package/esm2022/value-help-dialog/fundamental-ngx-platform-value-help-dialog.mjs +1 -1
  491. package/esm2022/value-help-dialog/index.mjs +4 -3
  492. package/esm2022/value-help-dialog/models/index.mjs +2 -2
  493. package/esm2022/value-help-dialog/models/vhd-component.model.mjs +3 -0
  494. package/esm2022/value-help-dialog/models/vhd-data.source.mjs +1 -1
  495. package/esm2022/value-help-dialog/models/vhd-filter-rule.model.mjs +1 -1
  496. package/esm2022/value-help-dialog/models/vhd-filter.model.mjs +1 -1
  497. package/esm2022/value-help-dialog/models/vhd-strategy.enum.mjs +1 -1
  498. package/esm2022/value-help-dialog/models/vhd-tab-type.enum.mjs +1 -1
  499. package/esm2022/value-help-dialog/models/vhd-table-selection.type.mjs +1 -1
  500. package/esm2022/value-help-dialog/models/vhd-type-condition.enum.mjs +1 -1
  501. package/esm2022/value-help-dialog/models/vhd-value.model.mjs +1 -1
  502. package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +26 -6
  503. package/esm2022/value-help-dialog/value-help-dialog.module.mjs +1 -1
  504. package/esm2022/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +1 -1
  505. package/esm2022/variant-management/components/manage-variants-dialog/data-provider.mjs +1 -1
  506. package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +2 -2
  507. package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +1 -1
  508. package/esm2022/variant-management/directives/variant-management-dirty-label.directive.mjs +1 -1
  509. package/esm2022/variant-management/fundamental-ngx-platform-variant-management.mjs +1 -1
  510. package/esm2022/variant-management/index.mjs +4 -4
  511. package/esm2022/variant-management/models/save-dialog.model.mjs +1 -1
  512. package/esm2022/variant-management/models/variant-management.mjs +1 -1
  513. package/esm2022/variant-management/models/variant.interface.mjs +1 -1
  514. package/esm2022/variant-management/tokens.mjs +1 -1
  515. package/esm2022/variant-management/variant-item.class.mjs +1 -1
  516. package/esm2022/variant-management/variant-management.component.mjs +2 -2
  517. package/esm2022/variant-management/variant-management.module.mjs +1 -1
  518. package/esm2022/wizard-generator/base-wizard-generator.mjs +2 -2
  519. package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +2 -2
  520. package/esm2022/wizard-generator/components/wizard-body/wizard-body.component.mjs +2 -2
  521. package/esm2022/wizard-generator/components/wizard-generator/wizard-generator.component.mjs +1 -1
  522. package/esm2022/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +1 -1
  523. package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.mjs +1 -1
  524. package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.mjs +1 -1
  525. package/esm2022/wizard-generator/directives/wizard-generator-finish-button.directive.mjs +1 -1
  526. package/esm2022/wizard-generator/directives/wizard-generator-go-next-button.directive.mjs +1 -1
  527. package/esm2022/wizard-generator/directives/wizard-generator-review-button.directive.mjs +1 -1
  528. package/esm2022/wizard-generator/directives/wizard-generator-summary-step.directive.mjs +1 -1
  529. package/esm2022/wizard-generator/fundamental-ngx-platform-wizard-generator.mjs +1 -1
  530. package/esm2022/wizard-generator/index.mjs +10 -10
  531. package/esm2022/wizard-generator/interfaces/wizard-dialog-data.interface.mjs +1 -1
  532. package/esm2022/wizard-generator/interfaces/wizard-generator-form-group.interface.mjs +1 -1
  533. package/esm2022/wizard-generator/interfaces/wizard-generator-forms.interface.mjs +1 -1
  534. package/esm2022/wizard-generator/interfaces/wizard-generator-item.interface.mjs +1 -1
  535. package/esm2022/wizard-generator/interfaces/wizard-generator-summary-item.interface.mjs +1 -1
  536. package/esm2022/wizard-generator/interfaces/wizard-navigation-buttons.interface.mjs +1 -1
  537. package/esm2022/wizard-generator/interfaces/wizard-step.interface.mjs +1 -1
  538. package/esm2022/wizard-generator/interfaces/wizard-title.interface.mjs +1 -1
  539. package/esm2022/wizard-generator/wizard-dialog-generator.service.mjs +1 -1
  540. package/esm2022/wizard-generator/wizard-generator.module.mjs +8 -8
  541. package/esm2022/wizard-generator/wizard-generator.service.mjs +4 -4
  542. package/feed-input/index.d.ts +1 -1
  543. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +889 -889
  544. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  545. package/fesm2022/fundamental-ngx-platform-button.mjs +8 -3
  546. package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
  547. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  548. package/fesm2022/fundamental-ngx-platform-feed-input.mjs +1 -1
  549. package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
  550. package/fesm2022/fundamental-ngx-platform-form.mjs +2729 -2716
  551. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  552. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +9 -9
  553. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  554. package/fesm2022/fundamental-ngx-platform-info-label.mjs.map +1 -1
  555. package/fesm2022/fundamental-ngx-platform-link.mjs +2 -2
  556. package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
  557. package/fesm2022/fundamental-ngx-platform-list.mjs +23 -23
  558. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  559. package/fesm2022/fundamental-ngx-platform-menu-button.mjs +8 -3
  560. package/fesm2022/fundamental-ngx-platform-menu-button.mjs.map +1 -1
  561. package/fesm2022/fundamental-ngx-platform-menu.mjs +3 -3
  562. package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
  563. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +353 -353
  564. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  565. package/fesm2022/fundamental-ngx-platform-object-attribute.mjs.map +1 -1
  566. package/fesm2022/fundamental-ngx-platform-object-marker.mjs +7 -2
  567. package/fesm2022/fundamental-ngx-platform-object-marker.mjs.map +1 -1
  568. package/fesm2022/fundamental-ngx-platform-object-status.mjs +7 -2
  569. package/fesm2022/fundamental-ngx-platform-object-status.mjs.map +1 -1
  570. package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
  571. package/fesm2022/fundamental-ngx-platform-panel.mjs +10 -10
  572. package/fesm2022/fundamental-ngx-platform-panel.mjs.map +1 -1
  573. package/fesm2022/fundamental-ngx-platform-search-field.mjs +13 -13
  574. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  575. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  576. package/fesm2022/fundamental-ngx-platform-shared.mjs +62 -62
  577. package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
  578. package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
  579. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +20 -20
  580. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  581. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +7 -2
  582. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
  583. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +2925 -2922
  584. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  585. package/fesm2022/fundamental-ngx-platform-table.mjs +365 -360
  586. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  587. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +182 -98
  588. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  589. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +177 -177
  590. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  591. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +41 -41
  592. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  593. package/form/combobox/combobox.config.d.ts +1 -1
  594. package/form/date-picker/date-picker.component.d.ts +5 -5
  595. package/form/datetime-picker/datetime-picker.component.d.ts +3 -3
  596. package/form/form-generator/dynamic-form-control.directive.d.ts +3 -3
  597. package/form/form-generator/form-generator.service.d.ts +2 -2
  598. package/form/form-group/pipes/field-group-row-value.pipe.d.ts +1 -1
  599. package/form/form-group/services/form-field-layout.service.d.ts +1 -1
  600. package/form/form-helpers.d.ts +1 -1
  601. package/form/input-group/addon.component.d.ts +1 -1
  602. package/form/multi-combobox/multi-combobox.config.d.ts +1 -1
  603. package/form/multi-input/index.d.ts +1 -1
  604. package/form/multi-input/multi-input.config.d.ts +1 -1
  605. package/form/select/commons/base-select.d.ts +4 -1
  606. package/form/step-input/base.step-input.d.ts +4 -5
  607. package/fundamental-ngx-platform-v0.48.0-rc.21.tgz +0 -0
  608. package/icon-tab-bar/index.d.ts +7 -7
  609. package/icon-tab-bar/interfaces/icon-tab-bar-item.interface.d.ts +1 -1
  610. package/list/index.d.ts +12 -12
  611. package/menu/index.d.ts +2 -2
  612. package/menu-button/index.d.ts +1 -1
  613. package/menu-button/menu-button.component.d.ts +5 -2
  614. package/message-popover/index.d.ts +4 -4
  615. package/message-popover/models/message-popover-entry.interface.d.ts +1 -1
  616. package/message-popover/models/message-popover.interface.d.ts +1 -1
  617. package/message-popover/utils.d.ts +1 -1
  618. package/object-marker/object-marker.component.d.ts +4 -1
  619. package/object-status/object-status.component.d.ts +4 -1
  620. package/package.json +4 -4
  621. package/panel/index.d.ts +2 -2
  622. package/schematics/ng-add/index.js +1 -1
  623. package/search-field/index.d.ts +1 -1
  624. package/settings-generator/index.d.ts +4 -4
  625. package/settings-generator/layouts/base-settings-generator-layout.d.ts +1 -1
  626. package/settings-generator/settings-generator.service.d.ts +2 -2
  627. package/shared/domain/array-data-source.d.ts +0 -3
  628. package/shared/form/collection-base.input.d.ts +1 -1
  629. package/shared/form/form-field.d.ts +2 -2
  630. package/shared/form/hint-options.d.ts +2 -2
  631. package/shared/form/inline-layout-collection-base.input.d.ts +1 -1
  632. package/shared/index.d.ts +3 -3
  633. package/smart-filter-bar/index.d.ts +7 -7
  634. package/smart-filter-bar/interfaces/smart-filter-bar-condition.d.ts +2 -2
  635. package/smart-filter-bar/interfaces/smart-filter-bar-custom-filter-config.d.ts +1 -1
  636. package/smart-filter-bar/interfaces/smart-filter-bar-field-definition.d.ts +1 -1
  637. package/smart-filter-bar/interfaces/smart-filter-dynamic-form-item.d.ts +1 -1
  638. package/smart-filter-bar/smart-filter-bar.service.d.ts +2 -2
  639. package/split-menu-button/split-menu-button.component.d.ts +5 -2
  640. package/table/components/index.d.ts +8 -8
  641. package/table/components/table-view-settings-dialog/index.d.ts +2 -2
  642. package/table/index.d.ts +14 -14
  643. package/table/table.component.d.ts +4 -0
  644. package/table-helpers/constants/index.d.ts +1 -1
  645. package/table-helpers/directives/index.d.ts +6 -6
  646. package/table-helpers/directives/platform-table-column-responsive.directive.d.ts +1 -1
  647. package/table-helpers/directives/table-scrollable.directive.d.ts +1 -1
  648. package/table-helpers/domain/array-data-source.d.ts +3 -3
  649. package/table-helpers/domain/index.d.ts +3 -3
  650. package/table-helpers/domain/observable-data-source.d.ts +3 -3
  651. package/table-helpers/enums/index.d.ts +3 -3
  652. package/table-helpers/helpers.d.ts +1 -1
  653. package/table-helpers/index.d.ts +8 -8
  654. package/table-helpers/interfaces/collection-filter.interface.d.ts +1 -1
  655. package/table-helpers/interfaces/collection-state.interface.d.ts +1 -1
  656. package/table-helpers/interfaces/index.d.ts +2 -3
  657. package/table-helpers/models/filter-change-event.model.d.ts +1 -1
  658. package/table-helpers/models/group-change-event.model.d.ts +1 -1
  659. package/table-helpers/models/index.d.ts +14 -14
  660. package/table-helpers/models/sort-change-event.model.d.ts +1 -1
  661. package/table-helpers/pipes/selection-cell-styles.pipe.d.ts +1 -1
  662. package/table-helpers/table.d.ts +1 -0
  663. package/value-help-dialog/components/select-tab/select-tab.component.d.ts +9 -2
  664. package/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.d.ts +5 -1
  665. package/value-help-dialog/constans/condition-display.function.d.ts +1 -1
  666. package/value-help-dialog/directives/value-help-column-def.directive.d.ts +17 -0
  667. package/value-help-dialog/directives/value-help-filter-def.directive.d.ts +15 -0
  668. package/value-help-dialog/index.d.ts +3 -2
  669. package/value-help-dialog/models/index.d.ts +1 -1
  670. package/value-help-dialog/models/vhd-component.model.d.ts +5 -0
  671. package/value-help-dialog/models/vhd-filter.model.d.ts +3 -0
  672. package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +8 -6
  673. package/variant-management/index.d.ts +3 -3
  674. package/variant-management/models/variant-management.d.ts +1 -1
  675. package/wizard-generator/base-wizard-generator.d.ts +1 -1
  676. package/wizard-generator/index.d.ts +9 -9
  677. package/wizard-generator/interfaces/wizard-generator-form-group.interface.d.ts +1 -1
  678. package/wizard-generator/interfaces/wizard-generator-item.interface.d.ts +1 -1
  679. package/wizard-generator/interfaces/wizard-step.interface.d.ts +2 -2
  680. package/wizard-generator/wizard-generator.service.d.ts +1 -1
  681. package/fundamental-ngx-platform-v0.48.0-rc.2.tgz +0 -0
  682. package/schematics/ng-add/index.ts +0 -64
  683. package/schematics/ng-add/schema.ts +0 -3
  684. package/schematics/utils/package-utils.ts +0 -104
@@ -1,4 +1,4 @@
1
- import { Component, ViewChild, TemplateRef, ContentChild, ElementRef, Renderer2, forwardRef, ChangeDetectionStrategy } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, Renderer2, TemplateRef, ViewChild, forwardRef } from '@angular/core';
2
2
  import { ButtonComponent } from '@fundamental-ngx/platform/button';
3
3
  import { CSS_CLASS_NAME, INPUT_GROUP_CHILD_TOKEN } from './constants';
4
4
  import * as i0 from "@angular/core";
@@ -88,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
88
88
  type: ContentChild,
89
89
  args: [ButtonComponent, { read: ElementRef }]
90
90
  }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vaW5wdXQtZ3JvdXAvYWRkb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osVUFBVSxFQUNWLFNBQVMsRUFHVCxVQUFVLEVBQ1YsdUJBQXVCLEVBQzFCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUV0RSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBYTtJQUNsRCxPQUFPLEVBQUUsdUJBQXVCO0lBQ2hDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7Q0FDMUQsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBUUgsTUFBTSxPQUFPLHdCQUF3QjtJQUNqQyxjQUFjO0lBQ2QsSUFBSSxRQUFRLENBQUMsUUFBaUI7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUNELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBVUQsY0FBYztJQUNkLElBQ0ksZ0JBQWdCLENBQUMseUJBQWtEO1FBQ25FLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx5QkFBeUIsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBS0QsY0FBYztJQUNkLFlBQW9CLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFKeEMsY0FBYztRQUNOLGNBQVMsR0FBRyxLQUFLLENBQUM7SUFHaUIsQ0FBQztJQUU1QyxjQUFjO0lBQ2Qsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELGNBQWM7SUFDTix3QkFBd0I7UUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUUzQixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBRUQsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRWpDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztJQUNOLHNCQUFzQixDQUFDLHNCQUFtQztRQUM5RCxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDekIsT0FBTztTQUNWO1FBQ0QsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0QsQ0FBQzs4R0F2RFEsd0JBQXdCO2tHQUF4Qix3QkFBd0Isb0VBSnRCLENBQUMsNEJBQTRCLENBQUMsOERBbUIzQixlQUFlLG1GQUlmLGVBQWUsMkJBQVUsVUFBVSxpRkFSdEMsV0FBVyxnREFoQlosc0RBQXNEOzsyRkFLdkQsd0JBQXdCO2tCQVBwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxzREFBc0Q7b0JBQ2hFLFNBQVMsRUFBRSxDQUFDLDRCQUE0QixDQUFDO29CQUN6QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7aUJBQ25COzhFQWFHLGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxXQUFXO2dCQUt0QixNQUFNO3NCQURMLFlBQVk7dUJBQUMsZUFBZTtnQkFLekIsZ0JBQWdCO3NCQURuQixZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgUmVuZGVyZXIyLFxuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgUHJvdmlkZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9idXR0b24nO1xuXG5pbXBvcnQgeyBDU1NfQ0xBU1NfTkFNRSwgSU5QVVRfR1JPVVBfQ0hJTERfVE9LRU4gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjb25zdCBpbnB1dEdyb3VwQWRkb25DaGlsZFByb3ZpZGVyOiBQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBJTlBVVF9HUk9VUF9DSElMRF9UT0tFTixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dEdyb3VwQWRkb25Db21wb25lbnQpXG59O1xuXG4vKipcbiAqIEZ1bmRhbWVudGFsIGlucHV0IGdyb3VwIGFkZG9uIGNvbXBvbmVudFxuICpcbiAqIFRoaXMgY29tcG9uZW50IGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW5zaWRlIGA8ZmRwLWlucHV0LWdyb3VwPmBcbiAqXG4gKlxuICogSW5wdXQgZ3JvdXAgYWRkb24gY2FuIGNvbnRhaW4gYSBwbGFpbiB0ZXh0OlxuICogYGBgXG4gKiA8ZmRwLWlucHV0LWdyb3VwLWFkZG9uPiQ8L2ZkcC1pbnB1dC1ncm91cC1hZGRvbj5cbiAqIGBgYFxuICogSWNvbjpcbiAqIGBgYFxuICogPGZkcC1pbnB1dC1ncm91cC1hZGRvbj48aSBjbGFzcz1cInNhcC1pY29uLS1lbXBsb3llZVwiPjwvaT48L2ZkcC1pbnB1dC1ncm91cC1hZGRvbj5cbiAqIGBgYFxuICogQnV0dG9uIGNvbXBvbmVudDpcbiAqIGBgYFxuICogPGZkcC1pbnB1dC1ncm91cC1hZGRvbj48ZmRwLWJ1dHRvbiBsYWJlbD1cIkFjdGlvblwiPjwvZmRwLWJ1dHRvbj48L2ZkcC1pbnB1dC1ncm91cC1hZGRvbj5cbiAqIGBgYFxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtaW5wdXQtZ3JvdXAtYWRkb24nLFxuICAgIHRlbXBsYXRlOiAnPG5nLXRlbXBsYXRlPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPicsXG4gICAgcHJvdmlkZXJzOiBbaW5wdXRHcm91cEFkZG9uQ2hpbGRQcm92aWRlcl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dEdyb3VwQWRkb25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgICB0aGlzLl9zZXRCdXR0b25Db250cm9sT3B0aW9ucygpO1xuICAgIH1cbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYpXG4gICAgY29udGVudFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKEJ1dHRvbkNvbXBvbmVudClcbiAgICBidXR0b246IEJ1dHRvbkNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChCdXR0b25Db21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHNldCBidXR0b25FbGVtZW50UmVmKGJ1dHRvbkNvbXBvbmVudEVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgICAgIHRoaXMuX3NldEJ1dHRvbkVsZW1lbnRDbGFzcyhidXR0b25Db21wb25lbnRFbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIpIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0QnV0dG9uQ29udHJvbE9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEJ1dHRvbkNvbnRyb2xPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvbjtcblxuICAgICAgICBpZiAoIWJ1dHRvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uLmRpc2FibGVkID0gdGhpcy5fZGlzYWJsZWQ7XG5cbiAgICAgICAgYnV0dG9uLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0QnV0dG9uRWxlbWVudENsYXNzKGJ1dHRvbkNvbXBvbmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghYnV0dG9uQ29tcG9uZW50RWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IGJ1dHRvbkNvbXBvbmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uJyk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKGJ1dHRvbiwgQ1NTX0NMQVNTX05BTUUuYnV0dG9uKTtcbiAgICB9XG59XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9mb3JtL2lucHV0LWdyb3VwL2FkZG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUVWLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFdEUsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQWE7SUFDbEQsT0FBTyxFQUFFLHVCQUF1QjtJQUNoQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO0NBQzFELENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQVFILE1BQU0sT0FBTyx3QkFBd0I7SUFDakMsY0FBYztJQUNkLElBQUksUUFBUSxDQUFDLFFBQWlCO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQVVELGNBQWM7SUFDZCxJQUNJLGdCQUFnQixDQUFDLHlCQUFrRDtRQUNuRSxJQUFJLENBQUMsc0JBQXNCLENBQUMseUJBQXlCLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUtELGNBQWM7SUFDZCxZQUFvQixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBSnhDLGNBQWM7UUFDTixjQUFTLEdBQUcsS0FBSyxDQUFDO0lBR2lCLENBQUM7SUFFNUMsY0FBYztJQUNkLGtCQUFrQjtRQUNkLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxjQUFjO0lBQ04sd0JBQXdCO1FBQzVCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFM0IsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUVELE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUVqQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWM7SUFDTixzQkFBc0IsQ0FBQyxzQkFBbUM7UUFDOUQsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQ3pCLE9BQU87U0FDVjtRQUNELE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNELENBQUM7OEdBdkRRLHdCQUF3QjtrR0FBeEIsd0JBQXdCLG9FQUp0QixDQUFDLDRCQUE0QixDQUFDLDhEQW1CM0IsZUFBZSxtRkFJZixlQUFlLDJCQUFVLFVBQVUsaUZBUnRDLFdBQVcsZ0RBaEJaLHNEQUFzRDs7MkZBS3ZELHdCQUF3QjtrQkFQcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUsc0RBQXNEO29CQUNoRSxTQUFTLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztvQkFDekMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4RUFhRyxrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsV0FBVztnQkFLdEIsTUFBTTtzQkFETCxZQUFZO3VCQUFDLGVBQWU7Z0JBS3pCLGdCQUFnQjtzQkFEbkIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBQcm92aWRlcixcbiAgICBSZW5kZXJlcjIsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIGZvcndhcmRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vYnV0dG9uJztcblxuaW1wb3J0IHsgQ1NTX0NMQVNTX05BTUUsIElOUFVUX0dST1VQX0NISUxEX1RPS0VOIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgaW5wdXRHcm91cEFkZG9uQ2hpbGRQcm92aWRlcjogUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogSU5QVVRfR1JPVVBfQ0hJTERfVE9LRU4sXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRHcm91cEFkZG9uQ29tcG9uZW50KVxufTtcblxuLyoqXG4gKiBGdW5kYW1lbnRhbCBpbnB1dCBncm91cCBhZGRvbiBjb21wb25lbnRcbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGluc2lkZSBgPGZkcC1pbnB1dC1ncm91cD5gXG4gKlxuICpcbiAqIElucHV0IGdyb3VwIGFkZG9uIGNhbiBjb250YWluIGEgcGxhaW4gdGV4dDpcbiAqIGBgYFxuICogPGZkcC1pbnB1dC1ncm91cC1hZGRvbj4kPC9mZHAtaW5wdXQtZ3JvdXAtYWRkb24+XG4gKiBgYGBcbiAqIEljb246XG4gKiBgYGBcbiAqIDxmZHAtaW5wdXQtZ3JvdXAtYWRkb24+PGkgY2xhc3M9XCJzYXAtaWNvbi0tZW1wbG95ZWVcIj48L2k+PC9mZHAtaW5wdXQtZ3JvdXAtYWRkb24+XG4gKiBgYGBcbiAqIEJ1dHRvbiBjb21wb25lbnQ6XG4gKiBgYGBcbiAqIDxmZHAtaW5wdXQtZ3JvdXAtYWRkb24+PGZkcC1idXR0b24gbGFiZWw9XCJBY3Rpb25cIj48L2ZkcC1idXR0b24+PC9mZHAtaW5wdXQtZ3JvdXAtYWRkb24+XG4gKiBgYGBcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWlucHV0LWdyb3VwLWFkZG9uJyxcbiAgICB0ZW1wbGF0ZTogJzxuZy10ZW1wbGF0ZT48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9uZy10ZW1wbGF0ZT4nLFxuICAgIHByb3ZpZGVyczogW2lucHV0R3JvdXBBZGRvbkNoaWxkUHJvdmlkZXJdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRHcm91cEFkZG9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICAgICAgdGhpcy5fc2V0QnV0dG9uQ29udHJvbE9wdGlvbnMoKTtcbiAgICB9XG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKFRlbXBsYXRlUmVmKVxuICAgIGNvbnRlbnRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChCdXR0b25Db21wb25lbnQpXG4gICAgYnV0dG9uOiBCdXR0b25Db21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoQnV0dG9uQ29tcG9uZW50LCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBzZXQgYnV0dG9uRWxlbWVudFJlZihidXR0b25Db21wb25lbnRFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgICAgICB0aGlzLl9zZXRCdXR0b25FbGVtZW50Q2xhc3MoYnV0dG9uQ29tcG9uZW50RWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldEJ1dHRvbkNvbnRyb2xPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRCdXR0b25Db250cm9sT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnV0dG9uID0gdGhpcy5idXR0b247XG5cbiAgICAgICAgaWYgKCFidXR0b24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1dHRvbi5kaXNhYmxlZCA9IHRoaXMuX2Rpc2FibGVkO1xuXG4gICAgICAgIGJ1dHRvbi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEJ1dHRvbkVsZW1lbnRDbGFzcyhidXR0b25Db21wb25lbnRFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIWJ1dHRvbkNvbXBvbmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBidXR0b24gPSBidXR0b25Db21wb25lbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyhidXR0b24sIENTU19DTEFTU19OQU1FLmJ1dHRvbik7XG4gICAgfVxufVxuIl19
@@ -7,4 +7,4 @@ export const CSS_CLASS_NAME = {
7
7
  button: 'fd-input-group__button'
8
8
  };
9
9
  export const INPUT_GROUP_CHILD_TOKEN = new InjectionToken('INPUT_GROUP_CHILD_TOKEN');
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vaW5wdXQtZ3JvdXAvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzFCLElBQUksRUFBRSxpQkFBaUI7SUFDdkIsS0FBSyxFQUFFLHVCQUF1QjtJQUM5QixLQUFLLEVBQUUsdUJBQXVCO0lBQzlCLFdBQVcsRUFBRSwrQkFBK0I7SUFDNUMsTUFBTSxFQUFFLHdCQUF3QjtDQUMxQixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQVMseUJBQXlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBDU1NfQ0xBU1NfTkFNRSA9IHtcbiAgICBob3N0OiAnZmRwLWlucHV0LWdyb3VwJyxcbiAgICBpbnB1dDogJ2ZkLWlucHV0LWdyb3VwX19pbnB1dCcsXG4gICAgYWRkb246ICdmZC1pbnB1dC1ncm91cF9fYWRkb24nLFxuICAgIGFkZG9uQnV0dG9uOiAnZmQtaW5wdXQtZ3JvdXBfX2FkZG9uLS1idXR0b24nLFxuICAgIGJ1dHRvbjogJ2ZkLWlucHV0LWdyb3VwX19idXR0b24nXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSU5QVVRfR1JPVVBfQ0hJTERfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignSU5QVVRfR1JPVVBfQ0hJTERfVE9LRU4nKTtcbiJdfQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9mb3JtL2lucHV0LWdyb3VwL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUMxQixJQUFJLEVBQUUsaUJBQWlCO0lBQ3ZCLEtBQUssRUFBRSx1QkFBdUI7SUFDOUIsS0FBSyxFQUFFLHVCQUF1QjtJQUM5QixXQUFXLEVBQUUsK0JBQStCO0lBQzVDLE1BQU0sRUFBRSx3QkFBd0I7Q0FDMUIsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFTLHlCQUF5QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgQ1NTX0NMQVNTX05BTUUgPSB7XG4gICAgaG9zdDogJ2ZkcC1pbnB1dC1ncm91cCcsXG4gICAgaW5wdXQ6ICdmZC1pbnB1dC1ncm91cF9faW5wdXQnLFxuICAgIGFkZG9uOiAnZmQtaW5wdXQtZ3JvdXBfX2FkZG9uJyxcbiAgICBhZGRvbkJ1dHRvbjogJ2ZkLWlucHV0LWdyb3VwX19hZGRvbi0tYnV0dG9uJyxcbiAgICBidXR0b246ICdmZC1pbnB1dC1ncm91cF9fYnV0dG9uJ1xufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IElOUFVUX0dST1VQX0NISUxEX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0lOUFVUX0dST1VQX0NISUxEX1RPS0VOJyk7XG4iXX0=
@@ -197,4 +197,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
197
197
  type: ViewChild,
198
198
  args: [InputComponent, { read: ElementRef }]
199
199
  }] } });
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFVBQVUsRUFDVixJQUFJLEVBQ0osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLEVBQ0osUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFF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QyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDbkcsK0JBQStCLEVBQUU7cUJBQ3BDLGNBQ1csSUFBSSxXQUNQLENBQUMsNEJBQTRCLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDOzswQkEwQ3BFLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixRQUFROzswQkFBSSxRQUFROzswQkFDcEIsUUFBUTs7MEJBQUksUUFBUTs7MEJBQ3BCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBQ3BELFFBQVE7OzBCQUFJLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCO3lIQXpDN0QsS0FBSztzQkFEUixLQUFLO2dCQVVOLFNBQVM7c0JBRFIsZUFBZTt1QkFBQyx1QkFBdUI7Z0JBS3hDLE1BQU07c0JBREwsWUFBWTt1QkFBQyx3QkFBd0I7Z0JBS2xDLHNCQUFzQjtzQkFEekIsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3QsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNlbGYsXG4gICAgU2tpcFNlbGYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGRF9GT1JNX0ZJRUxELCBGRF9GT1JNX0ZJRUxEX0NPTlRST0wgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBCYXNlSW5wdXQsIFBsYXRmb3JtRm9ybUZpZWxkLCBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0L2lucHV0LmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5wdXRHcm91cEFkZG9uQm9keUNvbXBvbmVudCB9IGZyb20gJy4vYWRkb24tYm9keS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRHcm91cEFkZG9uQ29tcG9uZW50IH0gZnJvbSAnLi9hZGRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ1NTX0NMQVNTX05BTUUsIElOUFVUX0dST1VQX0NISUxEX1RPS0VOIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgSW5wdXRHcm91cENvbmZpZyB9IGZyb20gJy4vaW5wdXQtZ3JvdXAuY29uZmlnJztcbmltcG9ydCB7IElucHV0R3JvdXBJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQuY29tcG9uZW50JztcblxuLyoqXG4gKiBGdW5kYW1lbnRhbCBpbnB1dCBncm91cCBjb21wb25lbnRcbiAqXG4gKiBgYGBodG1sXG4gKiA8ZmRwLWlucHV0LWdyb3VwPlxuICogICA8ZmRwLWlucHV0LWdyb3VwLWFkZG9uPiQ8L2ZkcC1pbnB1dC1ncm91cC1hZGRvbj5cbiAqICAgPGZkcC1pbnB1dC1ncm91cC1pbnB1dCB0eXBlPVwibnVtYmVyXCI+PC9mZHAtaW5wdXQtZ3JvdXAtaW5wdXQ+XG4gKiAgIDxmZHAtaW5wdXQtZ3JvdXAtYWRkb24+MC4wMDwvZmRwLWlucHV0LWdyb3VwLWFkZG9uPlxuICogPC9mZHAtaW5wdXQtZ3JvdXA+XG4gKiBgYGBcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWlucHV0LWdyb3VwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9pbnB1dC1ncm91cC5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBGRF9GT1JNX0ZJRUxEX0NPTlRST0wsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0R3JvdXBDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9LFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKClcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0lucHV0R3JvdXBBZGRvbkJvZHlDb21wb25lbnQsIE5nVGVtcGxhdGVPdXRsZXQsIElucHV0Q29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dEdyb3VwQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogSW5wdXQgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHN1cGVyLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiBzdXBlci5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihJTlBVVF9HUk9VUF9DSElMRF9UT0tFTilcbiAgICBfY2hpbGRyZW46IFF1ZXJ5TGlzdDxJbnB1dEdyb3VwSW5wdXRDb21wb25lbnQgfCBJbnB1dEdyb3VwQWRkb25Db21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKElucHV0R3JvdXBJbnB1dENvbXBvbmVudClcbiAgICBfaW5wdXQ6IElucHV0R3JvdXBJbnB1dENvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChJbnB1dENvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgc2V0IF9pbnB1dENvbXBvbmVudEVsZW1lbnQoaW5wdXRDb21wb25lbnRFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgICAgICB0aGlzLl9zZXRJbnB1dEVsZW1lbnRDbGFzcyhpbnB1dENvbXBvbmVudEVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2JlZm9yZUlucHV0QWRkb25zOiBJbnB1dEdyb3VwQWRkb25Db21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYWZ0ZXJJbnB1dEFkZG9uczogSW5wdXRHcm91cEFkZG9uQ29tcG9uZW50W10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9jb250cm9sU3RhdGVDbGFzcygpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgICAgICByZXR1cm4gc3RhdGUgPyBgaXMtJHtzdGF0ZX1gIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIG5nRm9ybTogTmdGb3JtLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRCkgZm9ybUZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBASW5qZWN0KEZEX0ZPUk1fRklFTERfQ09OVFJPTCkgZm9ybUNvbnRyb2w6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCxcbiAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJvdGVjdGVkIF9ob3N0RWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByb3RlY3RlZCBfaW5wdXRHcm91cENvbmZpZzogSW5wdXRHcm91cENvbmZpZ1xuICAgICkge1xuICAgICAgICBzdXBlcihjZCwgZWxlbWVudFJlZiwgbmdDb250cm9sLCBjb250cm9sQ29udGFpbmVyLCBuZ0Zvcm0sIGZvcm1GaWVsZCwgZm9ybUNvbnRyb2wpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBc3NpZ24gcHJlZGVmaW5lZCBjbGFzc05hbWUgdG8gaG9zdCBlbGVtZW50XG4gICAgICAgICAqIHRvIG1ha2UgY3NzIHNlbGVjdG9yIHN0cm9uZ2VyXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9hZGRDbGFzc05hbWVUb0hvc3RFbGVtZW50KENTU19DTEFTU19OQU1FLmhvc3QpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub0NoaWxkcmVuUXVlcnlMaXN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBvdmVycmlkZSBiYXNlIGZ1bmN0aW9uYWxpdHkgdG8gY2F0Y2ggbmV3IGRpc2FibGVkIHN0YXRlXG4gICAgICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBzdXBlci5zZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkKTtcbiAgICAgICAgdGhpcy5fc2V0QWRkb25zT3B0aW9ucygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uQ2hhbmdlSW5wdXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbktleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIHByZXZlbnQgdHlwaW5nIG5vbi1kaWdpdCBjaGFyc1xuICAgICAgICBpZiAodGhpcy5faW5wdXQudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGlmICghZXZlbnQua2V5Lm1hdGNoKC8oWzAtOV18Wy1dfFssXXxbLl0pLykpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0NoaWxkcmVuUXVlcnlMaXN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hpbGRyZW4uY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLl9jaGlsZHJlbikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVBZGRvbnNHcm91cHMoKTtcbiAgICAgICAgICAgIHRoaXMuX3NldEFkZG9uc09wdGlvbnMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRJbnB1dEVsZW1lbnRDbGFzcyhpbnB1dENvbXBvbmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghaW5wdXRDb21wb25lbnRFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBpbnB1dENvbXBvbmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3MoaW5wdXRFbGVtZW50LCBDU1NfQ0xBU1NfTkFNRS5pbnB1dCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jcmVhdGVBZGRvbnNHcm91cHMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuTGlzdCA9IHRoaXMuX2NoaWxkcmVuLnRvQXJyYXkoKTtcbiAgICAgICAgY29uc3QgaW5wdXRDaGlsZEluZGV4ID0gY2hpbGRyZW5MaXN0LmZpbmRJbmRleCgoY2hpbGQpID0+IHRoaXMuX2lzSW5wdXRDaGlsZChjaGlsZCkpO1xuXG4gICAgICAgIC8vIHJlc2V0IGdyb3VwJ3MgY29udGFpbmVyc1xuICAgICAgICB0aGlzLl9iZWZvcmVJbnB1dEFkZG9ucyA9IFtdO1xuICAgICAgICB0aGlzLl9hZnRlcklucHV0QWRkb25zID0gW107XG5cbiAgICAgICAgY2hpbGRyZW5MaXN0LmZvckVhY2goKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0FkZG9uQ2hpbGQoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGluZGV4IDwgaW5wdXRDaGlsZEluZGV4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYmVmb3JlSW5wdXRBZGRvbnMucHVzaChjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5kZXggPiBpbnB1dENoaWxkSW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hZnRlcklucHV0QWRkb25zLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzSW5wdXRDaGlsZChjaGlsZDogdW5rbm93bik6IGNoaWxkIGlzIElucHV0R3JvdXBJbnB1dENvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiBjaGlsZCBpbnN0YW5jZW9mIElucHV0R3JvdXBJbnB1dENvbXBvbmVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzQWRkb25DaGlsZChjaGlsZDogdW5rbm93bik6IGNoaWxkIGlzIElucHV0R3JvdXBBZGRvbkNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiBjaGlsZCBpbnN0YW5jZW9mIElucHV0R3JvdXBBZGRvbkNvbXBvbmVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEFkZG9uc09wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJlZm9yZSA9IHRoaXMuX2JlZm9yZUlucHV0QWRkb25zIHx8IFtdO1xuICAgICAgICBjb25zdCBhZnRlciA9IHRoaXMuX2FmdGVySW5wdXRBZGRvbnMgfHwgW107XG4gICAgICAgIFsuLi5iZWZvcmUsIC4uLmFmdGVyXS5mb3JFYWNoKChhZGRvbikgPT4ge1xuICAgICAgICAgICAgYWRkb24uZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FkZENsYXNzTmFtZVRvSG9zdEVsZW1lbnQoY2xhc3NOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5faG9zdEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmQtaW5wdXQtZ3JvdXBcIiBbY2xhc3MuaXMtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbY2xhc3NdPVwiX2NvbnRyb2xTdGF0ZUNsYXNzXCIgW2NsYXNzLmlzLWZvY3VzXT1cImZvY3VzZWRcIj5cbiAgICA8IS0tIEJlZm9yZSBpbnB1dCBhZGRvbnMgYXJlYSAtLT5cbiAgICBAZm9yIChhZGRvbiBvZiBfYmVmb3JlSW5wdXRBZGRvbnM7IHRyYWNrIGFkZG9uKSB7XG4gICAgICAgIDxmZHAtaW5wdXQtZ3JvdXAtYWRkb24tYm9keT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJhZGRvbi5jb250ZW50VGVtcGxhdGVSZWZcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2ZkcC1pbnB1dC1ncm91cC1hZGRvbi1ib2R5PlxuICAgIH1cbiAgICA8IS0tIElucHV0IC0tPlxuICAgIEBpZiAoX2lucHV0KSB7XG4gICAgICAgIDxmZHAtaW5wdXRcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbdHlwZV09XCJfaW5wdXQudHlwZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxsZWRCeV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgKGlucHV0KT1cIl9vbkNoYW5nZUlucHV0VmFsdWUoJGFueSgkZXZlbnQudGFyZ2V0KT8udmFsdWUpXCJcbiAgICAgICAgICAgIChmb2N1c0NoYW5nZSk9XCJfb25Gb2N1c0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5cHJlc3MpPVwiX29uS2V5UHJlc3MoJGV2ZW50KVwiXG4gICAgICAgID48L2ZkcC1pbnB1dD5cbiAgICB9XG4gICAgPCEtLSBBZnRlciBpbnB1dCBhZGRvbnMgYXJlYSAtLT5cbiAgICBAZm9yIChhZGRvbiBvZiBfYWZ0ZXJJbnB1dEFkZG9uczsgdHJhY2sgYWRkb24pIHtcbiAgICAgICAgPGZkcC1pbnB1dC1ncm91cC1hZGRvbi1ib2R5IFtoYXNCdXR0b25dPVwiISFhZGRvbi5idXR0b25cIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJhZGRvbi5jb250ZW50VGVtcGxhdGVSZWZcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2ZkcC1pbnB1dC1ncm91cC1hZGRvbi1ib2R5PlxuICAgIH1cbjwvZGl2PlxuIl19
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9mb3JtL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vZm9ybS9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLElBQUksRUFDSixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixRQUFRLEVBQ1IsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztBQUU3RDs7Ozs7Ozs7Ozs7R0FXRztBQWNILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxTQUFTO0lBQzlDLGtCQUFrQjtJQUNsQixJQUNJLEtBQUssQ0FBQyxLQUFVO1FBQ2hCLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksS0FBSztRQUNMLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFVRCxjQUFjO0lBQ2QsSUFDSSxzQkFBc0IsQ0FBQyx3QkFBaUQ7UUFDeEUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHdCQUF3QixFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFRRCxjQUFjO0lBQ2QsSUFBSSxrQkFBa0I7UUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFDSSxFQUFxQixFQUNyQixVQUFzQixFQUNGLFNBQW9CLEVBQ2hCLGdCQUFrQyxFQUNsQyxNQUFjLEVBQ2lCLFNBQTRCLEVBQ3BCLFdBQXFDLEVBQzVGLFNBQW9CLEVBQ2xCLGVBQXdDLEVBQ3hDLGlCQUFtQztRQUU3QyxLQUFLLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUozRSxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ2xCLG9CQUFlLEdBQWYsZUFBZSxDQUF5QjtRQUN4QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBdkJqRCxjQUFjO1FBQ2QsdUJBQWtCLEdBQStCLEVBQUUsQ0FBQztRQUVwRCxjQUFjO1FBQ2Qsc0JBQWlCLEdBQStCLEVBQUUsQ0FBQztJQXNCbkQsQ0FBQztJQUVELGNBQWM7SUFDZCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCOzs7V0FHRztRQUNILElBQUksQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGNBQWM7SUFDZCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsaUNBQWlDLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsUUFBaUI7UUFDOUIsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxjQUFjO0lBQ2QsbUJBQW1CLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVcsQ0FBQyxLQUFvQjtRQUM1QixpQ0FBaUM7UUFDakMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLEVBQUU7Z0JBQ3pDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUMxQjtTQUNKO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTixpQ0FBaUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7SUFDTixxQkFBcUIsQ0FBQyxxQkFBa0M7UUFDNUQsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ3hCLE9BQU87U0FDVjtRQUVELE1BQU0sWUFBWSxHQUFHLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxjQUFjO0lBQ04sbUJBQW1CO1FBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUMsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXJGLDJCQUEyQjtRQUMzQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFFNUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDNUIsT0FBTzthQUNWO1lBQ0QsSUFBSSxLQUFLLEdBQUcsZUFBZSxFQUFFO2dCQUN6QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3ZDO1lBQ0QsSUFBSSxLQUFLLEdBQUcsZUFBZSxFQUFFO2dCQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3RDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztJQUNOLGFBQWEsQ0FBQyxLQUFjO1FBQ2hDLE9BQU8sS0FBSyxZQUFZLHdCQUF3QixDQUFDO0lBQ3JELENBQUM7SUFFRCxjQUFjO0lBQ04sYUFBYSxDQUFDLEtBQWM7UUFDaEMsT0FBTyxLQUFLLFlBQVksd0JBQXdCLENBQUM7SUFDckQsQ0FBQztJQUVELGNBQWM7SUFDTixpQkFBaUI7UUFDckIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQztRQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDO1FBQzNDLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNwQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztJQUNOLDBCQUEwQixDQUFDLFNBQWlCO1FBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7OEdBekpRLG1CQUFtQix3UEEyQ2dCLGFBQWEseURBQ2IscUJBQXFCO2tHQTVDeEQsbUJBQW1CLDBGQVBqQjtZQUNQLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ25HLCtCQUErQixFQUFFO1NBQ3BDLDhEQW1CYSx3QkFBd0IsK0RBSnJCLHVCQUF1QixxRkFRN0IsY0FBYywyQkFBVSxVQUFVLG9EQ2hGakQsMHdDQStCQSw2NWhDRDRCYyw0QkFBNEIsOEZBQUUsZ0JBQWdCLG9KQUFFLGNBQWM7OzJGQUUvRCxtQkFBbUI7a0JBYi9CLFNBQVM7K0JBQ0ksaUJBQWlCLGlCQUdaLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1AsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUNuRywrQkFBK0IsRUFBRTtxQkFDcEMsY0FDVyxJQUFJLFdBQ1AsQ0FBQyw0QkFBNEIsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLENBQUM7OzBCQTBDcEUsUUFBUTs7MEJBQUksSUFBSTs7MEJBQ2hCLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUNwQixRQUFROzswQkFBSSxRQUFROzswQkFDcEIsUUFBUTs7MEJBQUksUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFDcEQsUUFBUTs7MEJBQUksUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUI7eUhBekM3RCxLQUFLO3NCQURSLEtBQUs7Z0JBVU4sU0FBUztzQkFEUixlQUFlO3VCQUFDLHVCQUF1QjtnQkFLeEMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLHdCQUF3QjtnQkFLbEMsc0JBQXNCO3NCQUR6QixTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdCxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBSZW5kZXJlcjIsXG4gICAgU2VsZixcbiAgICBTa2lwU2VsZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZEX0ZPUk1fRklFTEQsIEZEX0ZPUk1fRklFTERfQ09OVFJPTCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcbmltcG9ydCB7IGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEJhc2VJbnB1dCwgUGxhdGZvcm1Gb3JtRmllbGQsIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQuY29tcG9uZW50JztcblxuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbnB1dEdyb3VwQWRkb25Cb2R5Q29tcG9uZW50IH0gZnJvbSAnLi9hZGRvbi1ib2R5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEdyb3VwQWRkb25Db21wb25lbnQgfSBmcm9tICcuL2FkZG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDU1NfQ0xBU1NfTkFNRSwgSU5QVVRfR1JPVVBfQ0hJTERfVE9LRU4gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBJbnB1dEdyb3VwQ29uZmlnIH0gZnJvbSAnLi9pbnB1dC1ncm91cC5jb25maWcnO1xuaW1wb3J0IHsgSW5wdXRHcm91cElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEZ1bmRhbWVudGFsIGlucHV0IGdyb3VwIGNvbXBvbmVudFxuICpcbiAqIGBgYGh0bWxcbiAqIDxmZHAtaW5wdXQtZ3JvdXA+XG4gKiAgIDxmZHAtaW5wdXQtZ3JvdXAtYWRkb24+JDwvZmRwLWlucHV0LWdyb3VwLWFkZG9uPlxuICogICA8ZmRwLWlucHV0LWdyb3VwLWlucHV0IHR5cGU9XCJudW1iZXJcIj48L2ZkcC1pbnB1dC1ncm91cC1pbnB1dD5cbiAqICAgPGZkcC1pbnB1dC1ncm91cC1hZGRvbj4wLjAwPC9mZHAtaW5wdXQtZ3JvdXAtYWRkb24+XG4gKiA8L2ZkcC1pbnB1dC1ncm91cD5cbiAqIGBgYFxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtaW5wdXQtZ3JvdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2lucHV0LWdyb3VwLmNvbXBvbmVudC5zY3NzJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IEZEX0ZPUk1fRklFTERfQ09OVFJPTCwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5wdXRHcm91cENvbXBvbmVudCksIG11bHRpOiB0cnVlIH0sXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoKVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbSW5wdXRHcm91cEFkZG9uQm9keUNvbXBvbmVudCwgTmdUZW1wbGF0ZU91dGxldCwgSW5wdXRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIElucHV0R3JvdXBDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBJbnB1dCB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgc3VwZXIuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKElOUFVUX0dST1VQX0NISUxEX1RPS0VOKVxuICAgIF9jaGlsZHJlbjogUXVlcnlMaXN0PElucHV0R3JvdXBJbnB1dENvbXBvbmVudCB8IElucHV0R3JvdXBBZGRvbkNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoSW5wdXRHcm91cElucHV0Q29tcG9uZW50KVxuICAgIF9pbnB1dDogSW5wdXRHcm91cElucHV0Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKElucHV0Q29tcG9uZW50LCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBzZXQgX2lucHV0Q29tcG9uZW50RWxlbWVudChpbnB1dENvbXBvbmVudEVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgICAgIHRoaXMuX3NldElucHV0RWxlbWVudENsYXNzKGlucHV0Q29tcG9uZW50RWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYmVmb3JlSW5wdXRBZGRvbnM6IElucHV0R3JvdXBBZGRvbkNvbXBvbmVudFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hZnRlcklucHV0QWRkb25zOiBJbnB1dEdyb3VwQWRkb25Db21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2NvbnRyb2xTdGF0ZUNsYXNzKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIHJldHVybiBzdGF0ZSA/IGBpcy0ke3N0YXRlfWAgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgbmdGb3JtOiBOZ0Zvcm0sXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEKSBmb3JtRmllbGQ6IFBsYXRmb3JtRm9ybUZpZWxkLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRF9DT05UUk9MKSBmb3JtQ29udHJvbDogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLFxuICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcm90ZWN0ZWQgX2hvc3RFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJvdGVjdGVkIF9pbnB1dEdyb3VwQ29uZmlnOiBJbnB1dEdyb3VwQ29uZmlnXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGNkLCBlbGVtZW50UmVmLCBuZ0NvbnRyb2wsIGNvbnRyb2xDb250YWluZXIsIG5nRm9ybSwgZm9ybUZpZWxkLCBmb3JtQ29udHJvbCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFzc2lnbiBwcmVkZWZpbmVkIGNsYXNzTmFtZSB0byBob3N0IGVsZW1lbnRcbiAgICAgICAgICogdG8gbWFrZSBjc3Mgc2VsZWN0b3Igc3Ryb25nZXJcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2FkZENsYXNzTmFtZVRvSG9zdEVsZW1lbnQoQ1NTX0NMQVNTX05BTUUuaG9zdCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvQ2hpbGRyZW5RdWVyeUxpc3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIG92ZXJyaWRlIGJhc2UgZnVuY3Rpb25hbGl0eSB0byBjYXRjaCBuZXcgZGlzYWJsZWQgc3RhdGVcbiAgICAgKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQpO1xuICAgICAgICB0aGlzLl9zZXRBZGRvbnNPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25DaGFuZ2VJbnB1dFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uS2V5UHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gcHJldmVudCB0eXBpbmcgbm9uLWRpZ2l0IGNoYXJzXG4gICAgICAgIGlmICh0aGlzLl9pbnB1dC50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgaWYgKCFldmVudC5rZXkubWF0Y2goLyhbMC05XXxbLV18WyxdfFsuXSkvKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvQ2hpbGRyZW5RdWVyeUxpc3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGlsZHJlbi5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuX2NoaWxkcmVuKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUFkZG9uc0dyb3VwcygpO1xuICAgICAgICAgICAgdGhpcy5fc2V0QWRkb25zT3B0aW9ucygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldElucHV0RWxlbWVudENsYXNzKGlucHV0Q29tcG9uZW50RWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpbnB1dENvbXBvbmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IGlucHV0Q29tcG9uZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyhpbnB1dEVsZW1lbnQsIENTU19DTEFTU19OQU1FLmlucHV0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZUFkZG9uc0dyb3VwcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW5MaXN0ID0gdGhpcy5fY2hpbGRyZW4udG9BcnJheSgpO1xuICAgICAgICBjb25zdCBpbnB1dENoaWxkSW5kZXggPSBjaGlsZHJlbkxpc3QuZmluZEluZGV4KChjaGlsZCkgPT4gdGhpcy5faXNJbnB1dENoaWxkKGNoaWxkKSk7XG5cbiAgICAgICAgLy8gcmVzZXQgZ3JvdXAncyBjb250YWluZXJzXG4gICAgICAgIHRoaXMuX2JlZm9yZUlucHV0QWRkb25zID0gW107XG4gICAgICAgIHRoaXMuX2FmdGVySW5wdXRBZGRvbnMgPSBbXTtcblxuICAgICAgICBjaGlsZHJlbkxpc3QuZm9yRWFjaCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzQWRkb25DaGlsZChjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5kZXggPCBpbnB1dENoaWxkSW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9iZWZvcmVJbnB1dEFkZG9ucy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbmRleCA+IGlucHV0Q2hpbGRJbmRleCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2FmdGVySW5wdXRBZGRvbnMucHVzaChjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNJbnB1dENoaWxkKGNoaWxkOiB1bmtub3duKTogY2hpbGQgaXMgSW5wdXRHcm91cElucHV0Q29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIGNoaWxkIGluc3RhbmNlb2YgSW5wdXRHcm91cElucHV0Q29tcG9uZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNBZGRvbkNoaWxkKGNoaWxkOiB1bmtub3duKTogY2hpbGQgaXMgSW5wdXRHcm91cEFkZG9uQ29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIGNoaWxkIGluc3RhbmNlb2YgSW5wdXRHcm91cEFkZG9uQ29tcG9uZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0QWRkb25zT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYmVmb3JlID0gdGhpcy5fYmVmb3JlSW5wdXRBZGRvbnMgfHwgW107XG4gICAgICAgIGNvbnN0IGFmdGVyID0gdGhpcy5fYWZ0ZXJJbnB1dEFkZG9ucyB8fCBbXTtcbiAgICAgICAgWy4uLmJlZm9yZSwgLi4uYWZ0ZXJdLmZvckVhY2goKGFkZG9uKSA9PiB7XG4gICAgICAgICAgICBhZGRvbi5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWRkQ2xhc3NOYW1lVG9Ib3N0RWxlbWVudChjbGFzc05hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9ob3N0RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWUpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmZC1pbnB1dC1ncm91cFwiIFtjbGFzcy5pcy1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtjbGFzc109XCJfY29udHJvbFN0YXRlQ2xhc3NcIiBbY2xhc3MuaXMtZm9jdXNdPVwiZm9jdXNlZFwiPlxuICAgIDwhLS0gQmVmb3JlIGlucHV0IGFkZG9ucyBhcmVhIC0tPlxuICAgIEBmb3IgKGFkZG9uIG9mIF9iZWZvcmVJbnB1dEFkZG9uczsgdHJhY2sgYWRkb24pIHtcbiAgICAgICAgPGZkcC1pbnB1dC1ncm91cC1hZGRvbi1ib2R5PlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFkZG9uLmNvbnRlbnRUZW1wbGF0ZVJlZlwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZmRwLWlucHV0LWdyb3VwLWFkZG9uLWJvZHk+XG4gICAgfVxuICAgIDwhLS0gSW5wdXQgLS0+XG4gICAgQGlmIChfaW5wdXQpIHtcbiAgICAgICAgPGZkcC1pbnB1dFxuICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFt0eXBlXT1cIl9pbnB1dC50eXBlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAoaW5wdXQpPVwiX29uQ2hhbmdlSW5wdXRWYWx1ZSgkYW55KCRldmVudC50YXJnZXQpPy52YWx1ZSlcIlxuICAgICAgICAgICAgKGZvY3VzQ2hhbmdlKT1cIl9vbkZvY3VzQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlwcmVzcyk9XCJfb25LZXlQcmVzcygkZXZlbnQpXCJcbiAgICAgICAgPjwvZmRwLWlucHV0PlxuICAgIH1cbiAgICA8IS0tIEFmdGVyIGlucHV0IGFkZG9ucyBhcmVhIC0tPlxuICAgIEBmb3IgKGFkZG9uIG9mIF9hZnRlcklucHV0QWRkb25zOyB0cmFjayBhZGRvbikge1xuICAgICAgICA8ZmRwLWlucHV0LWdyb3VwLWFkZG9uLWJvZHkgW2hhc0J1dHRvbl09XCIhIWFkZG9uLmJ1dHRvblwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFkZG9uLmNvbnRlbnRUZW1wbGF0ZVJlZlwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZmRwLWlucHV0LWdyb3VwLWFkZG9uLWJvZHk+XG4gICAgfVxuPC9kaXY+XG4iXX0=
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
24
24
  type: Injectable,
25
25
  args: [{ providedIn: 'root' }]
26
26
  }], ctorParameters: () => [{ type: i1.PlatformConfig }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFFbEU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCO0lBTXpCOztPQUVHO0lBQ0gsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEdBQThCO1FBQ3ZELE1BQU0sVUFBVSxHQUFHLENBQUMsY0FBOEIsRUFBb0IsRUFBRSxDQUNwRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksZ0JBQWdCLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0QsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVELGNBQWM7SUFDZCxZQUFZLGNBQThCO1FBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDLGNBQWMsQ0FBQztJQUN4RCxDQUFDOzhHQWxCUSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQURILE1BQU07OzJGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFBsYXRmb3JtQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuXG4vKipcbiAqIERlZmF1bHQgb3B0aW9ucyBmb3IgcGxhdGZvcm0gaW5wdXQgZ3JvdXBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJbnB1dEdyb3VwQ29uZmlnIHtcbiAgICAvKipcbiAgICAgKiBDb250ZW50IERlbnNpdHkgb2YgZWxlbWVudC4gJ2NvenknIHwgJ2NvbXBhY3QnXG4gICAgICovXG4gICAgY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIFByb3ZpZGVyIGZhY3RvcnkgZnVuY3Rpb25cbiAgICAgKi9cbiAgICBzdGF0aWMgY3JlYXRlUHJvdmlkZXJGYWN0b3J5KG9iajogUGFydGlhbDxJbnB1dEdyb3VwQ29uZmlnPik6IChwbGF0Zm9ybUNvbmZpZzogUGxhdGZvcm1Db25maWcpID0+IElucHV0R3JvdXBDb25maWcge1xuICAgICAgICBjb25zdCB1c2VGYWN0b3J5ID0gKHBsYXRmb3JtQ29uZmlnOiBQbGF0Zm9ybUNvbmZpZyk6IElucHV0R3JvdXBDb25maWcgPT5cbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obmV3IElucHV0R3JvdXBDb25maWcocGxhdGZvcm1Db25maWcpLCBvYmopO1xuICAgICAgICByZXR1cm4gdXNlRmFjdG9yeTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHBsYXRmb3JtQ29uZmlnOiBQbGF0Zm9ybUNvbmZpZykge1xuICAgICAgICB0aGlzLmNvbnRlbnREZW5zaXR5ID0gcGxhdGZvcm1Db25maWcuY29udGVudERlbnNpdHk7XG4gICAgfVxufVxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9mb3JtL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBRWxFOztHQUVHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQU16Qjs7T0FFRztJQUNILE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxHQUE4QjtRQUN2RCxNQUFNLFVBQVUsR0FBRyxDQUFDLGNBQThCLEVBQW9CLEVBQUUsQ0FDcEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdELE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFBWSxjQUE4QjtRQUN0QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxjQUFjLENBQUM7SUFDeEQsQ0FBQzs4R0FsQlEsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FESCxNQUFNOzsyRkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29udGVudERlbnNpdHkgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBQbGF0Zm9ybUNvbmZpZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcblxuLyoqXG4gKiBEZWZhdWx0IG9wdGlvbnMgZm9yIHBsYXRmb3JtIGlucHV0IGdyb3VwXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgSW5wdXRHcm91cENvbmZpZyB7XG4gICAgLyoqXG4gICAgICogQ29udGVudCBEZW5zaXR5IG9mIGVsZW1lbnQuICdjb3p5JyB8ICdjb21wYWN0J1xuICAgICAqL1xuICAgIGNvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBQcm92aWRlciBmYWN0b3J5IGZ1bmN0aW9uXG4gICAgICovXG4gICAgc3RhdGljIGNyZWF0ZVByb3ZpZGVyRmFjdG9yeShvYmo6IFBhcnRpYWw8SW5wdXRHcm91cENvbmZpZz4pOiAocGxhdGZvcm1Db25maWc6IFBsYXRmb3JtQ29uZmlnKSA9PiBJbnB1dEdyb3VwQ29uZmlnIHtcbiAgICAgICAgY29uc3QgdXNlRmFjdG9yeSA9IChwbGF0Zm9ybUNvbmZpZzogUGxhdGZvcm1Db25maWcpOiBJbnB1dEdyb3VwQ29uZmlnID0+XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKG5ldyBJbnB1dEdyb3VwQ29uZmlnKHBsYXRmb3JtQ29uZmlnKSwgb2JqKTtcbiAgICAgICAgcmV0dXJuIHVzZUZhY3Rvcnk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwbGF0Zm9ybUNvbmZpZzogUGxhdGZvcm1Db25maWcpIHtcbiAgICAgICAgdGhpcy5jb250ZW50RGVuc2l0eSA9IHBsYXRmb3JtQ29uZmlnLmNvbnRlbnREZW5zaXR5O1xuICAgIH1cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { InputGroupComponent } from './input-group.component';
3
- import { InputGroupAddonComponent } from './addon.component';
4
2
  import { InputGroupAddonBodyComponent } from './addon-body.component';
3
+ import { InputGroupAddonComponent } from './addon.component';
4
+ import { InputGroupComponent } from './input-group.component';
5
5
  import { InputGroupInputComponent } from './input.component';
6
6
  import * as i0 from "@angular/core";
7
7
  export class PlatformInputGroupModule {
@@ -16,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
16
16
  exports: [InputGroupComponent, InputGroupAddonComponent, InputGroupInputComponent]
17
17
  }]
18
18
  }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0QsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBTTdELE1BQU0sT0FBTyx3QkFBd0I7OEdBQXhCLHdCQUF3QjsrR0FBeEIsd0JBQXdCLFlBSHZCLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLDRCQUE0QixFQUFFLHdCQUF3QixhQUNyRyxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSx3QkFBd0I7K0dBRXhFLHdCQUF3QixZQUh2QixtQkFBbUIsRUFBNEIsNEJBQTRCOzsyRkFHNUUsd0JBQXdCO2tCQUpwQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLDRCQUE0QixFQUFFLHdCQUF3QixDQUFDO29CQUNoSCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSx3QkFBd0IsQ0FBQztpQkFDckYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBJbnB1dEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRHcm91cEFkZG9uQ29tcG9uZW50IH0gZnJvbSAnLi9hZGRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRHcm91cEFkZG9uQm9keUNvbXBvbmVudCB9IGZyb20gJy4vYWRkb24tYm9keS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRHcm91cElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtJbnB1dEdyb3VwQ29tcG9uZW50LCBJbnB1dEdyb3VwQWRkb25Db21wb25lbnQsIElucHV0R3JvdXBBZGRvbkJvZHlDb21wb25lbnQsIElucHV0R3JvdXBJbnB1dENvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0lucHV0R3JvdXBDb21wb25lbnQsIElucHV0R3JvdXBBZGRvbkNvbXBvbmVudCwgSW5wdXRHcm91cElucHV0Q29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybUlucHV0R3JvdXBNb2R1bGUge31cbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9mb3JtL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQU03RCxNQUFNLE9BQU8sd0JBQXdCOzhHQUF4Qix3QkFBd0I7K0dBQXhCLHdCQUF3QixZQUh2QixtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSw0QkFBNEIsRUFBRSx3QkFBd0IsYUFDckcsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCOytHQUV4RSx3QkFBd0IsWUFIdkIsbUJBQW1CLEVBQTRCLDRCQUE0Qjs7MkZBRzVFLHdCQUF3QjtrQkFKcEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSw0QkFBNEIsRUFBRSx3QkFBd0IsQ0FBQztvQkFDaEgsT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLENBQUM7aUJBQ3JGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSW5wdXRHcm91cEFkZG9uQm9keUNvbXBvbmVudCB9IGZyb20gJy4vYWRkb24tYm9keS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRHcm91cEFkZG9uQ29tcG9uZW50IH0gZnJvbSAnLi9hZGRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRHcm91cENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQtZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0R3JvdXBJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbSW5wdXRHcm91cENvbXBvbmVudCwgSW5wdXRHcm91cEFkZG9uQ29tcG9uZW50LCBJbnB1dEdyb3VwQWRkb25Cb2R5Q29tcG9uZW50LCBJbnB1dEdyb3VwSW5wdXRDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtJbnB1dEdyb3VwQ29tcG9uZW50LCBJbnB1dEdyb3VwQWRkb25Db21wb25lbnQsIElucHV0R3JvdXBJbnB1dENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1JbnB1dEdyb3VwTW9kdWxlIHt9XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { forwardRef, Component, Input, ChangeDetectionStrategy } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, Input, forwardRef } from '@angular/core';
2
2
  import { INPUT_GROUP_CHILD_TOKEN } from './constants';
3
3
  import * as i0 from "@angular/core";
4
4
  /**
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
44
44
  }], propDecorators: { type: [{
45
45
  type: Input
46
46
  }] } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vaW5wdXQtZ3JvdXAvaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBWSxVQUFVLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdoRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBRXREOzs7OztHQUtHO0FBRUgsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQWE7SUFDbEQsT0FBTyxFQUFFLHVCQUF1QjtJQUNoQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO0NBQzFELENBQUM7QUFFRjs7Ozs7Ozs7Ozs7O0dBWUc7QUFRSCxNQUFNLE9BQU8sd0JBQXdCO0lBUHJDO1FBUUkseURBQXlEO1FBRXpELFNBQUksR0FBYyxNQUFNLENBQUM7S0FDNUI7OEdBSlksd0JBQXdCO2tHQUF4Qix3QkFBd0IsOEZBSnRCLENBQUMsNEJBQTRCLENBQUMsMEJBRC9CLEVBQUU7OzJGQUtILHdCQUF3QjtrQkFQcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixTQUFTLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztvQkFDekMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4QkFJRyxJQUFJO3NCQURILEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciwgZm9yd2FyZFJlZiwgQ29tcG9uZW50LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IElOUFVUX0dST1VQX0NISUxEX1RPS0VOIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vKipcbiAqIGZkcC1pbnB1dC1ncm91cCBuZWVkcyBpdCdzIG93biBpbnB1dCBjb21wb25lbnQgdG9cbiAqIHJlZ2lzdGVyIElOUFVUX0dST1VQX0NISUxEIGluIG9yZGVyIHRvIHJlbmRlclxuICogaW5wdXQgZ3JvdXAgY29udGVudCBjaGlsZHJlbiBpbiB0aGUgb3JkZXIgdGhhdCB0aGV5IGFyZSBwbGFjZWRcbiAqXG4gKi9cblxuZXhwb3J0IGNvbnN0IGlucHV0R3JvdXBJbnB1dENoaWxkUHJvdmlkZXI6IFByb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IElOUFVUX0dST1VQX0NISUxEX1RPS0VOLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0R3JvdXBJbnB1dENvbXBvbmVudClcbn07XG5cbi8qKlxuICogRnVuZGFtZW50YWwgaW5wdXQgZ3JvdXAgaW5wdXQgY29tcG9uZW50XG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbnNpZGUgYDxmZHAtaW5wdXQtZ3JvdXA+YFxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGBcbiAqIDxmZHAtaW5wdXQtZ3JvdXAgbmFtZT1cImdyb3VwXCI+XG4gKiAgIDxmZHAtaW5wdXQtZ3JvdXAtaW5wdXQgdHlwZT1cImVtYWlsXCI+PC9mZHAtaW5wdXQtZ3JvdXAtaW5wdXQ+XG4gKiA8L2ZkcC1pbnB1dC1ncm91cD5cbiAqIGBgYFxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtaW5wdXQtZ3JvdXAtaW5wdXQnLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBwcm92aWRlcnM6IFtpbnB1dEdyb3VwSW5wdXRDaGlsZFByb3ZpZGVyXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElucHV0R3JvdXBJbnB1dENvbXBvbmVudCB7XG4gICAgLyoqIElucHV0VHlwZSAndGV4dCcgfCAnbnVtYmVyJyB8ICdlbWFpbCcgfCAncGFzc3dvcmQnICovXG4gICAgQElucHV0KClcbiAgICB0eXBlOiBJbnB1dFR5cGUgPSAndGV4dCc7XG59XG4iXX0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9mb3JtL2lucHV0LWdyb3VwL2lucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBWSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHaEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUV0RDs7Ozs7R0FLRztBQUVILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFhO0lBQ2xELE9BQU8sRUFBRSx1QkFBdUI7SUFDaEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztDQUMxRCxDQUFDO0FBRUY7Ozs7Ozs7Ozs7OztHQVlHO0FBUUgsTUFBTSxPQUFPLHdCQUF3QjtJQVByQztRQVFJLHlEQUF5RDtRQUV6RCxTQUFJLEdBQWMsTUFBTSxDQUFDO0tBQzVCOzhHQUpZLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDhGQUp0QixDQUFDLDRCQUE0QixDQUFDLDBCQUQvQixFQUFFOzsyRkFLSCx3QkFBd0I7a0JBUHBDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osU0FBUyxFQUFFLENBQUMsNEJBQTRCLENBQUM7b0JBQ3pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBSUcsSUFBSTtzQkFESCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIFByb3ZpZGVyLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uL2lucHV0L2lucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJTlBVVF9HUk9VUF9DSElMRF9UT0tFTiB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuLyoqXG4gKiBmZHAtaW5wdXQtZ3JvdXAgbmVlZHMgaXQncyBvd24gaW5wdXQgY29tcG9uZW50IHRvXG4gKiByZWdpc3RlciBJTlBVVF9HUk9VUF9DSElMRCBpbiBvcmRlciB0byByZW5kZXJcbiAqIGlucHV0IGdyb3VwIGNvbnRlbnQgY2hpbGRyZW4gaW4gdGhlIG9yZGVyIHRoYXQgdGhleSBhcmUgcGxhY2VkXG4gKlxuICovXG5cbmV4cG9ydCBjb25zdCBpbnB1dEdyb3VwSW5wdXRDaGlsZFByb3ZpZGVyOiBQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBJTlBVVF9HUk9VUF9DSElMRF9UT0tFTixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dEdyb3VwSW5wdXRDb21wb25lbnQpXG59O1xuXG4vKipcbiAqIEZ1bmRhbWVudGFsIGlucHV0IGdyb3VwIGlucHV0IGNvbXBvbmVudFxuICpcbiAqIFRoaXMgY29tcG9uZW50IGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW5zaWRlIGA8ZmRwLWlucHV0LWdyb3VwPmBcbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgXG4gKiA8ZmRwLWlucHV0LWdyb3VwIG5hbWU9XCJncm91cFwiPlxuICogICA8ZmRwLWlucHV0LWdyb3VwLWlucHV0IHR5cGU9XCJlbWFpbFwiPjwvZmRwLWlucHV0LWdyb3VwLWlucHV0PlxuICogPC9mZHAtaW5wdXQtZ3JvdXA+XG4gKiBgYGBcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWlucHV0LWdyb3VwLWlucHV0JyxcbiAgICB0ZW1wbGF0ZTogJycsXG4gICAgcHJvdmlkZXJzOiBbaW5wdXRHcm91cElucHV0Q2hpbGRQcm92aWRlcl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dEdyb3VwSW5wdXRDb21wb25lbnQge1xuICAgIC8qKiBJbnB1dFR5cGUgJ3RleHQnIHwgJ251bWJlcicgfCAnZW1haWwnIHwgJ3Bhc3N3b3JkJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHlwZTogSW5wdXRUeXBlID0gJ3RleHQnO1xufVxuIl19
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
42
42
  type: ContentChild,
43
43
  args: ['triggerItem', { static: false }]
44
44
  }] } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbWVzc2FnZS1ncm91cC13aXRoLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL2lucHV0LW1lc3NhZ2UtZ3JvdXAtd2l0aC10ZW1wbGF0ZS9pbnB1dC1tZXNzYWdlLWdyb3VwLXdpdGgtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2Zvcm0vaW5wdXQtbWVzc2FnZS1ncm91cC13aXRoLXRlbXBsYXRlL2lucHV0LW1lc3NhZ2UtZ3JvdXAtd2l0aC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUUxQixNQUFNLCtCQUErQixDQUFDOztBQUV2Qzs7Ozs7R0FLRztBQVVILGtFQUFrRTtBQUNsRSxNQUFNLE9BQU8sNkJBQThCLFNBQVEsOEJBQThCO0lBVmpGOztRQVdJOzs7V0FHRztRQUVILGFBQVEsR0FBK0I7WUFDbkM7Z0JBQ0ksT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixXQUFXLEVBQUUsS0FBSzthQUNyQjtZQUNEO2dCQUNJLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixVQUFVLEVBQUUsS0FBSztnQkFDakIsV0FBVyxFQUFFLElBQUk7YUFDcEI7U0FDSixDQUFDO0tBTUw7OEdBdkJZLDZCQUE2QjtrR0FBN0IsNkJBQTZCLDRQQzNCMUMsaXNCQW9CQSxvYURJYyxnQkFBZ0Isc0lBQUUsdUJBQXVCLG1GQUFFLGdCQUFnQixvSkFBRSxvQkFBb0I7OzJGQUdsRiw2QkFBNkI7a0JBVnpDLFNBQVM7K0JBQ0kseUJBQXlCLGlCQUdwQixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDOzhCQVM1RixRQUFRO3NCQURQLEtBQUs7Z0JBaUJOLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUlucHV0TWVzc2FnZUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHtcbiAgICBQb3BvdmVyQm9keUNvbXBvbmVudCxcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgIFBvcG92ZXJDb250cm9sQ29tcG9uZW50LFxuICAgIFRyaWdnZXJDb25maWdcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuXG4vKipcbiAqIFRoaXMgZXh0ZW5kcyBjb3JlIGltcGxlbWVudGF0aW9uICB0byBzdXBwb3J0IHJpY2hlciBleHRlbnNpYmlsaXR5IGFuZCBpbnN0ZWFkIG9mIHJlbHlpbmdcbiAqIG9ubHkgb24gbmctY29udGVudCBzZWxlY3RvciB0aGlzIHdpbGwgYWxsb3cgeW91IHRvIHB1dCBhbnkgY29udGVudCBhcyB0cmlnZ2VyLlxuICpcbiAqIExldCdzIHRoaW5rIG9mIHVcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtaW5wdXQtbWVzc2FnZS1ncm91cCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LW1lc3NhZ2UtZ3JvdXAtd2l0aC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2lucHV0LW1lc3NhZ2UtZ3JvdXAtd2l0aC10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtQb3BvdmVyQ29tcG9uZW50LCBQb3BvdmVyQ29udHJvbENvbXBvbmVudCwgTmdUZW1wbGF0ZU91dGxldCwgUG9wb3ZlckJvZHlDb21wb25lbnRdXG59KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgSW5wdXRNZXNzYWdlR3JvdXBXaXRoVGVtcGxhdGUgZXh0ZW5kcyBGb3JtSW5wdXRNZXNzYWdlR3JvdXBDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIFRvIGFsbG93IHVzZXIgdG8gZGV0ZXJtaW5lIHdoYXQgZXZlbnQgaGUgd2FudHMgdG8gdHJpZ2dlciB0aGUgbWVzc2FnZXMgdG8gc2hvd1xuICAgICAqIEFjY2VwdHMgYW55IFtIVE1MIERPTSBFdmVudHNdKGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vanNyZWYvZG9tX29ial9ldmVudC5hc3ApLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdHJpZ2dlcnM6IChzdHJpbmcgfCBUcmlnZ2VyQ29uZmlnKVtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICB0cmlnZ2VyOiAnZm9jdXNpbicsXG4gICAgICAgICAgICBvcGVuQWN0aW9uOiB0cnVlLFxuICAgICAgICAgICAgY2xvc2VBY3Rpb246IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRyaWdnZXI6ICdmb2N1c291dCcsXG4gICAgICAgICAgICBvcGVuQWN0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGNsb3NlQWN0aW9uOiB0cnVlXG4gICAgICAgIH1cbiAgICBdO1xuICAgIC8qKlxuICAgICAqIEN1c3RvbSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgndHJpZ2dlckl0ZW0nLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICB0cmlnZ2VySXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuIiwiPGZkLXBvcG92ZXJcbiAgICAjcG9wb3ZlclxuICAgIChpc09wZW5DaGFuZ2UpPVwib3BlbkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgYWRkaXRpb25hbEJvZHlDbGFzcz1cImZkLXBvcG92ZXJfX2JvZHktLWlucHV0LW1lc3NhZ2UtZ3JvdXBcIlxuICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImNsb3NlT25PdXRzaWRlQ2xpY2tcIlxuICAgIFtjbG9zZU9uRXNjYXBlS2V5XT1cImNsb3NlT25Fc2NhcGVLZXlcIlxuICAgIFtmaWxsQ29udHJvbE1vZGVdPVwiZmlsbENvbnRyb2xNb2RlXCJcbiAgICBbaXNPcGVuXT1cImlzT3BlblwiXG4gICAgW3BsYWNlbWVudF09XCJwbGFjZW1lbnRcIlxuICAgIFt0cmlnZ2Vyc109XCJ0cmlnZ2Vyc1wiXG4gICAgW2Rpc2FibGVTY3JvbGxiYXJdPVwidHJ1ZVwiXG4gICAgY2xhc3M9XCJmZC1mb3JtLWlucHV0LW1lc3NhZ2UtZ3JvdXAgZmQtcG9wb3Zlci0taW5wdXQtbWVzc2FnZS1ncm91cFwiXG4+XG4gICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyaWdnZXJJdGVtVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2ZkLXBvcG92ZXItYm9keT5cbjwvZmQtcG9wb3Zlcj5cbiJdfQ==
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbWVzc2FnZS1ncm91cC13aXRoLXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vZm9ybS9pbnB1dC1tZXNzYWdlLWdyb3VwLXdpdGgtdGVtcGxhdGUvaW5wdXQtbWVzc2FnZS1ncm91cC13aXRoLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vZm9ybS9pbnB1dC1tZXNzYWdlLWdyb3VwLXdpdGgtdGVtcGxhdGUvaW5wdXQtbWVzc2FnZS1ncm91cC13aXRoLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUUsT0FBTyxFQUNILG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBRTFCLE1BQU0sK0JBQStCLENBQUM7O0FBRXZDOzs7OztHQUtHO0FBVUgsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSw4QkFBOEI7SUFWakY7O1FBV0k7OztXQUdHO1FBRUgsYUFBUSxHQUErQjtZQUNuQztnQkFDSSxPQUFPLEVBQUUsU0FBUztnQkFDbEIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLFdBQVcsRUFBRSxLQUFLO2FBQ3JCO1lBQ0Q7Z0JBQ0ksT0FBTyxFQUFFLFVBQVU7Z0JBQ25CLFVBQVUsRUFBRSxLQUFLO2dCQUNqQixXQUFXLEVBQUUsSUFBSTthQUNwQjtTQUNKLENBQUM7S0FNTDs4R0F2QlksNkJBQTZCO2tHQUE3Qiw2QkFBNkIsNFBDM0IxQyxpc0JBb0JBLG9hREljLGdCQUFnQixzSUFBRSx1QkFBdUIsbUZBQUUsZ0JBQWdCLG9KQUFFLG9CQUFvQjs7MkZBR2xGLDZCQUE2QjtrQkFWekMsU0FBUzsrQkFDSSx5QkFBeUIsaUJBR3BCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUM7OEJBUzVGLFFBQVE7c0JBRFAsS0FBSztnQkFpQk4sbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtSW5wdXRNZXNzYWdlR3JvdXBDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQge1xuICAgIFBvcG92ZXJCb2R5Q29tcG9uZW50LFxuICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgUG9wb3ZlckNvbnRyb2xDb21wb25lbnQsXG4gICAgVHJpZ2dlckNvbmZpZ1xufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5cbi8qKlxuICogVGhpcyBleHRlbmRzIGNvcmUgaW1wbGVtZW50YXRpb24gIHRvIHN1cHBvcnQgcmljaGVyIGV4dGVuc2liaWxpdHkgYW5kIGluc3RlYWQgb2YgcmVseWluZ1xuICogb25seSBvbiBuZy1jb250ZW50IHNlbGVjdG9yIHRoaXMgd2lsbCBhbGxvdyB5b3UgdG8gcHV0IGFueSBjb250ZW50IGFzIHRyaWdnZXIuXG4gKlxuICogTGV0J3MgdGhpbmsgb2YgdVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1pbnB1dC1tZXNzYWdlLWdyb3VwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtbWVzc2FnZS1ncm91cC13aXRoLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vaW5wdXQtbWVzc2FnZS1ncm91cC13aXRoLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1BvcG92ZXJDb21wb25lbnQsIFBvcG92ZXJDb250cm9sQ29tcG9uZW50LCBOZ1RlbXBsYXRlT3V0bGV0LCBQb3BvdmVyQm9keUNvbXBvbmVudF1cbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBJbnB1dE1lc3NhZ2VHcm91cFdpdGhUZW1wbGF0ZSBleHRlbmRzIEZvcm1JbnB1dE1lc3NhZ2VHcm91cENvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICogVG8gYWxsb3cgdXNlciB0byBkZXRlcm1pbmUgd2hhdCBldmVudCBoZSB3YW50cyB0byB0cmlnZ2VyIHRoZSBtZXNzYWdlcyB0byBzaG93XG4gICAgICogQWNjZXB0cyBhbnkgW0hUTUwgRE9NIEV2ZW50c10oaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9qc3JlZi9kb21fb2JqX2V2ZW50LmFzcCkuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0cmlnZ2VyczogKHN0cmluZyB8IFRyaWdnZXJDb25maWcpW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRyaWdnZXI6ICdmb2N1c2luJyxcbiAgICAgICAgICAgIG9wZW5BY3Rpb246IHRydWUsXG4gICAgICAgICAgICBjbG9zZUFjdGlvbjogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdHJpZ2dlcjogJ2ZvY3Vzb3V0JyxcbiAgICAgICAgICAgIG9wZW5BY3Rpb246IGZhbHNlLFxuICAgICAgICAgICAgY2xvc2VBY3Rpb246IHRydWVcbiAgICAgICAgfVxuICAgIF07XG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHRyaWdnZXIgZWxlbWVudC5cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCd0cmlnZ2VySXRlbScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHRyaWdnZXJJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG59XG4iLCI8ZmQtcG9wb3ZlclxuICAgICNwb3BvdmVyXG4gICAgKGlzT3BlbkNoYW5nZSk9XCJvcGVuQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtcG9wb3Zlcl9fYm9keS0taW5wdXQtbWVzc2FnZS1ncm91cFwiXG4gICAgW2Nsb3NlT25PdXRzaWRlQ2xpY2tdPVwiY2xvc2VPbk91dHNpZGVDbGlja1wiXG4gICAgW2Nsb3NlT25Fc2NhcGVLZXldPVwiY2xvc2VPbkVzY2FwZUtleVwiXG4gICAgW2ZpbGxDb250cm9sTW9kZV09XCJmaWxsQ29udHJvbE1vZGVcIlxuICAgIFtpc09wZW5dPVwiaXNPcGVuXCJcbiAgICBbcGxhY2VtZW50XT1cInBsYWNlbWVudFwiXG4gICAgW3RyaWdnZXJzXT1cInRyaWdnZXJzXCJcbiAgICBbZGlzYWJsZVNjcm9sbGJhcl09XCJ0cnVlXCJcbiAgICBjbGFzcz1cImZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cCBmZC1wb3BvdmVyLS1pbnB1dC1tZXNzYWdlLWdyb3VwXCJcbj5cbiAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJpZ2dlckl0ZW1UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgPGZkLXBvcG92ZXItYm9keT5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuPC9mZC1wb3BvdmVyPlxuIl19
@@ -15,4 +15,4 @@ export class FieldGroup {
15
15
  this.hintOptions = hintOptions;
16
16
  }
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvZm9ybS9tb2RlbHMvZmllbGQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxPQUFPLEtBQUs7SUFDZCxjQUFjO0lBQ2QsWUFDVyxJQUFhLEVBQ2IsSUFBYSxFQUNiLFFBQTJCLEVBQzNCLE1BQWU7UUFIZixTQUFJLEdBQUosSUFBSSxDQUFTO1FBQ2IsU0FBSSxHQUFKLElBQUksQ0FBUztRQUNiLGFBQVEsR0FBUixRQUFRLENBQW1CO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQVM7SUFDdkIsQ0FBQztDQUNQO0FBRUQsTUFBTSxPQUFPLFVBQVU7SUFDbkIsY0FBYztJQUNkLFlBQW1CLEtBQWEsRUFBUyxNQUFtQixFQUFTLFdBQXlCO1FBQTNFLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWM7SUFBRyxDQUFDO0NBQ3JHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEhpbnRPcHRpb25zIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkQ29sdW1uIHtcbiAgICBba2V5OiBudW1iZXJdOiBBcnJheTxGaWVsZD47XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIG5hbWU/OiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyByYW5rPzogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcmVuZGVyZXI/OiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgICAgICBwdWJsaWMgY29sdW1uPzogbnVtYmVyXG4gICAgKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgRmllbGRHcm91cCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgbGFiZWw6IHN0cmluZywgcHVibGljIGZpZWxkczogRmllbGRDb2x1bW4sIHB1YmxpYyBoaW50T3B0aW9ucz86IEhpbnRPcHRpb25zKSB7fVxufVxuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2Zvcm0vbW9kZWxzL2ZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sT0FBTyxLQUFLO0lBQ2QsY0FBYztJQUNkLFlBQ1csSUFBYSxFQUNiLElBQWEsRUFDYixRQUEyQixFQUMzQixNQUFlO1FBSGYsU0FBSSxHQUFKLElBQUksQ0FBUztRQUNiLFNBQUksR0FBSixJQUFJLENBQVM7UUFDYixhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFTO0lBQ3ZCLENBQUM7Q0FDUDtBQUVELE1BQU0sT0FBTyxVQUFVO0lBQ25CLGNBQWM7SUFDZCxZQUNXLEtBQWEsRUFDYixNQUFtQixFQUNuQixXQUF5QjtRQUZ6QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBYztJQUNqQyxDQUFDO0NBQ1AiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSGludE9wdGlvbnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRDb2x1bW4ge1xuICAgIFtrZXk6IG51bWJlcl06IEFycmF5PEZpZWxkPjtcbn1cblxuZXhwb3J0IGNsYXNzIEZpZWxkIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgbmFtZT86IHN0cmluZyxcbiAgICAgICAgcHVibGljIHJhbms/OiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyByZW5kZXJlcj86IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgICAgIHB1YmxpYyBjb2x1bW4/OiBudW1iZXJcbiAgICApIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZEdyb3VwIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgbGFiZWw6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGZpZWxkczogRmllbGRDb2x1bW4sXG4gICAgICAgIHB1YmxpYyBoaW50T3B0aW9ucz86IEhpbnRPcHRpb25zXG4gICAgKSB7fVxufVxuIl19
@@ -796,4 +796,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
796
796
  type: ContentChildren,
797
797
  args: [TemplateDirective]
798
798
  }] } });
799
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tdWx0aS1jb21ib2JveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9mb3JtL211bHRpLWNvbWJvYm94L2NvbW1vbnMvYmFzZS1tdWx0aS1jb21ib2JveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsR0FBRyxFQUNILFNBQVMsRUFDVCxPQUFPLEVBQ1AsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBQ0wsR0FBRyxFQUNILFFBQVEsRUFDWCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLElBQUksRUFDSixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxJQUFJLEVBRUosUUFBUSxFQUVSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJFLE9BQU8sS0FBSyxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pELE9BQU8sRUFHSCxPQUFPLEVBRVAsYUFBYSxFQUNiLGlCQUFpQixFQUNwQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0s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c0JBRFgsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBS04sc0JBQXNCO3NCQURyQixLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLRixLQUFLO3NCQURSLEtBQUs7Z0JBZU4sZUFBZTtzQkFEZCxLQUFLO2dCQUtOLGNBQWM7c0JBRGIsS0FBSztnQkFLTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLDBCQUEwQjtzQkFEekIsS0FBSztnQkFLTixlQUFlO3NCQURkLE1BQU07Z0JBS1AsWUFBWTtzQkFEWCxNQUFNO2dCQUtHLGVBQWU7c0JBQXhCLE1BQU07Z0JBSUcsY0FBYztzQkFBdkIsTUFBTTtnQkFJUCxrQkFBa0I7c0JBRGpCLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixTQUFTO3VCQUFDLGFBQWE7Z0JBS3hCLGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS3JELGVBQWU7c0JBRGQsZUFBZTt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFMVCxcbiAgICBCQUNLU1BBQ0UsXG4gICAgQ09OVFJPTCxcbiAgICBET1dOX0FSUk9XLFxuICAgIEVOVEVSLFxuICAgIEVTQ0FQRSxcbiAgICBMRUZUX0FSUk9XLFxuICAgIFJJR0hUX0FSUk9XLFxuICAgIFNISUZULFxuICAgIFRBQixcbiAgICBVUF9BUlJPV1xufSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdCxcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNlbGYsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBTa2lwU2VsZixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBOZ0NvbnRyb2wsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvcm1TdGF0ZXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIENvbnRlbnREZW5zaXR5LFxuICAgIEZvY3VzRXNjYXBlRGlyZWN0aW9uLFxuICAgIEtleVV0aWwsXG4gICAgTnVsbGFibGUsXG4gICAgUmFuZ2VTZWxlY3RvcixcbiAgICBUZW1wbGF0ZURpcmVjdGl2ZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBEaWFsb2dDb25maWcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IExpc3RDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbGlzdCc7XG5pbXBvcnQgeyBNb2JpbGVNb2RlQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21vYmlsZS1tb2RlJztcbmltcG9ydCB7IFBvcG92ZXJGaWxsTW9kZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuaW1wb3J0IHtcbiAgICBBcnJheU11bHRpQ29tYm9Cb3hEYXRhU291cmNlLFxuICAgIGNvZXJjZUFycmF5U2FmZSxcbiAgICBDb2xsZWN0aW9uQmFzZUlucHV0LFxuICAgIGlzRGF0YVNvdXJjZSxcbiAgICBpc0Z1bmN0aW9uLFxuICAgIGlzSnNPYmplY3QsXG4gICAgaXNPcHRpb25JdGVtLFxuICAgIGlzU2VsZWN0YWJsZU9wdGlvbkl0ZW0sXG4gICAgaXNTdHJpbmcsXG4gICAgTWF0Y2hpbmdCeSxcbiAgICBNYXRjaGluZ1N0cmF0ZWd5LFxuICAgIE11bHRpQ29tYm9Cb3hEYXRhU291cmNlLFxuICAgIE9ic2VydmFibGVNdWx0aUNvbWJvQm94RGF0YVNvdXJjZSxcbiAgICBQbGF0Zm9ybUZvcm1GaWVsZCxcbiAgICBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2wsXG4gICAgU2VsZWN0YWJsZU9wdGlvbkl0ZW1cbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuXG5pbXBvcnQgeyBGRF9GT1JNX0ZJRUxELCBGRF9GT1JNX0ZJRUxEX0NPTlRST0wgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBUZXh0QWxpZ25tZW50IH0gZnJvbSAnLi4vLi4vY29tYm9ib3gnO1xuaW1wb3J0IHsgTXVsdGlDb21ib2JveENvbmZpZyB9IGZyb20gJy4uL211bHRpLWNvbWJvYm94LmNvbmZpZyc7XG5cbmV4cG9ydCBjb25zdCBNQVBfTElNSVQgPSBuZXcgSW5qZWN0aW9uVG9rZW48bnVtYmVyPignTWFwIGxpbWl04omlJywgeyBmYWN0b3J5OiAoKSA9PiAxMiB9KTtcblxuZXhwb3J0IHR5cGUgRmRwTXVsdGlDb21ib2JveERhdGFTb3VyY2U8VD4gPSBNdWx0aUNvbWJvQm94RGF0YVNvdXJjZTxUPiB8IE9ic2VydmFibGU8VFtdPiB8IFRbXTtcblxuZXhwb3J0IGNsYXNzIE11bHRpQ29tYm9ib3hTZWxlY3Rpb25DaGFuZ2VFdmVudCB7XG4gICAgLyoqXG4gICAgICogTXVsdGkgQ29tYm9ib3ggc2VsZWN0aW9uIGNoYW5nZSBldmVudFxuICAgICAqIEBwYXJhbSBzb3VyY2UgTXVsdGkgQ29tYm9ib3ggY29tcG9uZW50XG4gICAgICogQHBhcmFtIHNlbGVjdGVkSXRlbXMgU2VsZWN0ZWQgaXRlbXNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHNvdXJjZTogQmFzZU11bHRpQ29tYm9ib3gsXG4gICAgICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW1zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVsndmFsdWUnXSAvLyBDb250YWlucyBzZWxlY3RlZCBpdGVtc1xuICAgICkge31cbn1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZU11bHRpQ29tYm9ib3ggZXh0ZW5kcyBDb2xsZWN0aW9uQmFzZUlucHV0IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBQcm92aWRlcyBzZWxlY3RlZCBpdGVtcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XG5cbiAgICAvKiogUHJvdmlkZXMgbWF4aW11bSBoZWlnaHQgZm9yIHRoZSBvcHRpb25QYW5lbC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1heEhlaWdodCA9ICcyNTBweCc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIEFkZE9uIEJ1dHRvbiBzaG91bGQgYmUgZm9jdXNhYmxlXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYnV0dG9uRm9jdXNhYmxlID0gZmFsc2U7XG5cbiAgICAvKiogRGF0YXNvdXJjZSBmb3Igc3VnZ2VzdGlvbiBsaXN0LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRhdGFTb3VyY2UodmFsdWU6IEZkcE11bHRpQ29tYm9ib3hEYXRhU291cmNlPGFueT4pIHt9XG4gICAgZ2V0IGRhdGFTb3VyY2UoKTogRmRwTXVsdGlDb21ib2JveERhdGFTb3VyY2U8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSBhdXRvY29tcGxldGUgc2hvdWxkIGJlIGVuYWJsZWQ7IEVuYWJsZWQgYnkgZGVmYXVsdC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGF1dG9Db21wbGV0ZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUT0RPOiBOYW1lIG9mIHRoZSBlbnRpdHkgZm9yIHdoaWNoIERhdGFQcm92aWRlciB3aWxsIGJlIGxvYWRlZC4gWW91IGNhbiBlaXRoZXIgcGFzcyBsaXN0IG9mXG4gICAgICogaXRlbXMgb3IgdXNlIHRoaXMgZW50aXR5Q2xhc3MgYW5kIGludGVybmFsbHkgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gbG9va3VwIHRvIHNvbWUgcmVnaXN0cnlcbiAgICAgKiBhbmQgcmV0cmlldmUgdGhlIGJlc3QgbWF0Y2hpbmcgRGF0YVByb3ZpZGVyIHRoYXQgaXMgc2V0IG9uIGFwcGxpY2F0aW9uIGxldmVsXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBlbnRpdHlDbGFzczogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIG11bHRpLWNvbWJvYm94IHNob3VsZCBiZSBidWlsdCBvbiBtb2JpbGUgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIE11bHRpIENvbWJvYm94IE1vYmlsZSBDb25maWd1cmF0aW9uLCBpdCdzIGFwcGxpZWQgb25seSwgd2hlbiBtb2JpbGUgaXMgZW5hYmxlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZUNvbmZpZzogTW9iaWxlTW9kZUNvbmZpZztcblxuICAgIC8qKiBUZWxscyB0aGUgbXVsdGktY29tYm9ib3ggaWYgd2UgbmVlZCB0byBncm91cCBpdGVtcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdyb3VwID0gZmFsc2U7XG5cbiAgICAvKiogQSBmaWVsZCBuYW1lIHRvIHVzZSB0byBncm91cCBkYXRhIGJ5IChzdXBwb3J0IGRvdHRlZCBub3RhdGlvbikuICovXG4gICAgQElucHV0KClcbiAgICBncm91cEtleTogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBmaWVsZCB0byBzaG93IGRhdGEgaW4gc2Vjb25kYXJ5IGNvbHVtbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlY29uZGFyeUtleTogc3RyaW5nO1xuXG4gICAgLyoqIFNob3cgdGhlIHNlY29uZCBjb2x1bW4gKGFwcGxpY2FibGUgZm9yIHR3byBjb2x1bW5zIGxheW91dCkuICovXG4gICAgQElucHV0KClcbiAgICBzaG93U2Vjb25kYXJ5VGV4dCA9IGZhbHNlO1xuXG4gICAgLyoqIEhvcml6b250YWxseSBhbGlnbiB0ZXh0IGluc2lkZSB0aGUgc2Vjb25kIGNvbHVtbiAoYXBwbGljYWJsZSBmb3IgdHdvIGNvbHVtbnMgbGF5b3V0KS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlY29uZGFyeVRleHRBbGlnbm1lbnQ6IFRleHRBbGlnbm1lbnQgPSAncmlnaHQnO1xuXG4gICAgLyoqIFR1cm5zIG9uL29mZiBBZGp1c3RhYmxlIFdpZHRoIGZlYXR1cmUuICovXG4gICAgQElucHV0KClcbiAgICBhdXRvUmVzaXplID0gZmFsc2U7XG5cbiAgICAvKiogVmFsdWUgb2YgdGhlIG11bHRpIGNvbWJvYm94ICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBzdXBlci5zZXRWYWx1ZSh2YWx1ZSwgdHJ1ZSk7XG4gICAgfVxuICAgIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcmVzZXQgb3B0aW9ucyBmb3IgdGhlIFNlbGVjdCBib2R5IHdpZHRoLCB3aGF0ZXZlciBpcyBjaG9zZW4sIHRoZSBib2R5IGhhcyBhIDYwMHB4IGxpbWl0LlxuICAgICAqICogYGF0LWxlYXN0YCB3aWxsIGFwcGx5IGEgbWluaW11bSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC4gLSBEZWZhdWx0XG4gICAgICogKiBgZXF1YWxgIHdpbGwgYXBwbHkgYSB3aWR0aCB0byB0aGUgYm9keSBlcXVpdmFsZW50IHRvIHRoZSB3aWR0aCBvZiB0aGUgY29udHJvbC5cbiAgICAgKiAqICdmaXQtY29udGVudCcgd2lsbCBhcHBseSB3aWR0aCBuZWVkZWQgdG8gcHJvcGVybHkgZGlzcGxheSBpdGVtcyBpbnNpZGUsIGluZGVwZW5kZW50IG9mIGNvbnRyb2wuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmaWxsQ29udHJvbE1vZGU6IFBvcG92ZXJGaWxsTW9kZSA9ICdhdC1sZWFzdCc7XG5cbiAgICAvKiogU2V0cyB0aXRsZSBhdHRyaWJ1dGUgdG8gYWRkb24gYnV0dG9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWRkb25JY29uVGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBTZXRzIGludmFsaWQgZW50cnkgbWVzc2FnZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGludmFsaWRFbnRyeU1lc3NhZ2UgPSAnSW52YWxpZCBlbnRyeSc7XG5cbiAgICAvKiogVHVybnMgbGltaXRsZXNzIG1vZGUsIE9OIG9yIE9GRiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGltaXRsZXNzOiBib29sZWFuO1xuXG4gICAgLyoqIFdoZXRoZXIgdG8gb3BlbiB0aGUgZHJvcGRvd24gd2hlbiB0aGUgYWRkb24gYnV0dG9uIGlzIGNsaWNrZWQuICovXG4gICAgQElucHV0KClcbiAgICBvcGVuRHJvcGRvd25PbkFkZE9uQ2xpY2tlZCA9IHRydWU7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGl0ZW0gaXMgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdWx0aUNvbWJvYm94U2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBFbWl0cyBldmVudCB3aGVuIHRoZSBtZW51IGlzIG9wZW5lZC9jbG9zZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgaXNPcGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGRhdGEgbG9hZGluZyBpcyBzdGFydGVkLiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvbkRhdGFSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGRhdGEgbG9hZGluZyBpcyBmaW5pc2hlZC4gKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBAT3V0cHV0KCkgb25EYXRhUmVjZWl2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRW1pdHMgZXZlbnQgd2hlbiB0aGUgYWRkb24gYnV0dG9uIGlzIGNsaWNrZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgYWRkT25CdXR0b25DbGlja2VkOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChMaXN0Q29tcG9uZW50KVxuICAgIGxpc3RDb21wb25lbnQ6IExpc3RDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHNlYXJjaElucHV0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgICBjdXN0b21UZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3VzdG9tIE9wdGlvbiBpdGVtIFRlbXBsYXRlLlxuICAgICAqL1xuICAgIG9wdGlvbkl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDdXN0b20gR3JvdXAgSGVhZGVyIGl0ZW0gVGVtcGxhdGUuXG4gICAgICovXG4gICAgZ3JvdXBJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3VzdG9tIFNlY29uZGFyeSBpdGVtIFRlbXBsYXRlLlxuICAgICAqL1xuICAgIHNlY29uZGFyeUl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDdXN0b20gU2VsZWN0ZWQgb3B0aW9uIGl0ZW0gVGVtcGxhdGUuXG4gICAgICovXG4gICAgc2VsZWN0ZWRJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHkgPSB0aGlzLm11bHRpQ29tYm9ib3hDb25maWcuY29udGVudERlbnNpdHk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGxpc3RUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBTZXQgdGhlIGlucHV0IHRleHQgb2YgdGhlIGlucHV0LiAqL1xuICAgIHNldCBpbnB1dFRleHQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9pbnB1dFRleHRWYWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuXG4gICAgLyoqIEdldCB0aGUgaW5wdXQgdGV4dCBvZiB0aGUgaW5wdXQuICovXG4gICAgZ2V0IGlucHV0VGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRUZXh0VmFsdWUgfHwgJyc7XG4gICAgfVxuXG4gICAgLyoqIElzIGVtcHR5IHNlYXJjaCBmaWVsZC4gKi9cbiAgICBnZXQgaXNFbXB0eVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dFRleHQudHJpbSgpLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc0dyb3VwKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwS2V5KTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgTXVsdGkgSW5wdXQgaXMgb3BlbmVkLiAqL1xuICAgIGlzT3BlbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3Qgb2YgbWF0Y2hlZCBzdWdnZXN0aW9uc1xuICAgICAqL1xuICAgIF9zdWdnZXN0aW9uczogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBHcm91cGVkIHN1Z2dlc3Rpb25zIG1hcHBlZCB0byBhcnJheS5cbiAgICAgKi9cbiAgICBfZmxhdFN1Z2dlc3Rpb25zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9mdWxsRmxhdFN1Z2dlc3Rpb25zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTGlzdCBvZiBzZWxlY3RlZCBzdWdnZXN0aW9uc1xuICAgICAqL1xuICAgIF9zZWxlY3RlZFN1Z2dlc3Rpb25zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1heCB3aWR0aCBvZiBsaXN0IGNvbnRhaW5lclxuICAgICAqL1xuICAgIG1heFdpZHRoOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWluIHdpZHRoIG9mIGxpc3QgY29udGFpbmVyXG4gICAgICovXG4gICAgbWluV2lkdGg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBOZWVkIGZvciBvcGVuaW5nIG1vYmlsZSB2ZXJzaW9uXG4gICAgICovXG4gICAgb3BlbkNoYW5nZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNlbGVjdGVkU2hvd24kID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGF0YVNvdXJjZTogRmRwTXVsdGlDb21ib2JveERhdGFTb3VyY2U8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5wdXRUZXh0VmFsdWU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNJbnB1dFRleHQ6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWF0Y2hpbmdTdHJhdGVneTogTWF0Y2hpbmdTdHJhdGVneSA9IHRoaXMubXVsdGlDb21ib2JveENvbmZpZy5tYXRjaGluZ1N0cmF0ZWd5O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogS2V5cywgdGhhdCB3b24ndCB0cmlnZ2VyIHRoZSBwb3BvdmVyJ3Mgb3BlbiBzdGF0ZSwgd2hlbiBkaXNwYXRjaGVkIG9uIHNlYXJjaCBpbnB1dC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ub25PcGVuaW5nS2V5czogbnVtYmVyW10gPSBbXG4gICAgICAgIEJBQ0tTUEFDRSxcbiAgICAgICAgRVNDQVBFLFxuICAgICAgICBFTlRFUixcbiAgICAgICAgQ09OVFJPTCxcbiAgICAgICAgVEFCLFxuICAgICAgICBTSElGVCxcbiAgICAgICAgVVBfQVJST1csXG4gICAgICAgIFJJR0hUX0FSUk9XLFxuICAgICAgICBET1dOX0FSUk9XLFxuICAgICAgICBMRUZUX0FSUk9XLFxuICAgICAgICBBTFRcbiAgICBdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90aW1lclN1YiQ6IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNTdGF0ZT86IEZvcm1TdGF0ZXM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZXZpb3VzU3RhdGVNZXNzYWdlOiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3JhbmdlU2VsZWN0b3IgPSBuZXcgUmFuZ2VTZWxlY3RvcigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kaXNwbGF5Rm4gPSAodmFsdWU6IGFueSk6IHN0cmluZyA9PiB0aGlzLmRpc3BsYXlWYWx1ZSh2YWx1ZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlY29uZGFyeUZuID0gKHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4ge1xuICAgICAgICBpZiAoaXNPcHRpb25JdGVtKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnNlY29uZGFyeVRleHQgPz8gJyc7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNKc09iamVjdCh2YWx1ZSkgJiYgdGhpcy5zZWNvbmRhcnlLZXkpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5vYmplY3RHZXQodmFsdWUsIHRoaXMuc2Vjb25kYXJ5S2V5KTtcblxuICAgICAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24oY3VycmVudEl0ZW0pID8gY3VycmVudEl0ZW0oKSA6IGN1cnJlbnRJdGVtO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSByZWFkb25seSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcmVhZG9ubHkgbmdGb3JtOiBOZ0Zvcm0sXG4gICAgICAgIEBPcHRpb25hbCgpIHJlYWRvbmx5IGRpYWxvZ0NvbmZpZzogRGlhbG9nQ29uZmlnLFxuICAgICAgICBwcm90ZWN0ZWQgbXVsdGlDb21ib2JveENvbmZpZzogTXVsdGlDb21ib2JveENvbmZpZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBASW5qZWN0KEZEX0ZPUk1fRklFTEQpIGZvcm1GaWVsZDogUGxhdGZvcm1Gb3JtRmllbGQsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEX0NPTlRST0wpIGZvcm1Db250cm9sOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2wsXG4gICAgICAgIEBJbmplY3QoTUFQX0xJTUlUKSBwcml2YXRlIF9tYXBMaW1pdDogbnVtYmVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF9jZCwgZWxlbWVudFJlZiwgbmdDb250cm9sLCBjb250cm9sQ29udGFpbmVyLCBuZ0Zvcm0sIGZvcm1GaWVsZCwgZm9ybUNvbnRyb2wpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXRhU291cmNlQ2hhbmdlID0gY2hhbmdlc1snZGF0YVNvdXJjZSddO1xuXG4gICAgICAgIGlmIChkYXRhU291cmNlQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplRGF0YVNvdXJjZShkYXRhU291cmNlQ2hhbmdlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdFdpbmRvd1Jlc2l6ZSgpO1xuICAgICAgICB0aGlzLl9hc3NpZ25DdXN0b21UZW1wbGF0ZXMoKTtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNJbnB1dFRleHQgPSB0aGlzLmlucHV0VGV4dDtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcblxuICAgICAgICBpZiAoaXNEYXRhU291cmNlKHRoaXMuZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAgICh0aGlzLmRhdGFTb3VyY2UgYXMgTXVsdGlDb21ib0JveERhdGFTb3VyY2U8YW55PikuY2xvc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kc1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdG8gc2V0IGlucHV0IHRleHQgYXMgaXRlbSBsYWJlbC5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBzZXRJbnB1dFRleHRGcm9tT3B0aW9uSXRlbShpdGVtOiBTZWxlY3RhYmxlT3B0aW9uSXRlbSk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVG9nZ2xlIGl0ZW0gc2VsZWN0aW9uLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHRvZ2dsZVNlbGVjdGlvbihpdGVtOiBTZWxlY3RhYmxlT3B0aW9uSXRlbSk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVG9nZ2xlIGl0ZW0gc2VsZWN0aW9uIGJ5IGlucHV0IHRleHQgdmFsdWUuXG4gICAgICovXG4gICAgYWJzdHJhY3QgdG9nZ2xlU2VsZWN0aW9uQnlJbnB1dFRleHQoKTogdm9pZDtcblxuICAgIC8qKiB3cml0ZSB2YWx1ZSBmb3IgQ29udHJvbFZhbHVlQWNjZXNzb3IgKi9cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gY29lcmNlQXJyYXlTYWZlKHZhbHVlKTtcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZFN1Z2dlc3Rpb25zKCk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcG9wb3Zlck9wZW5DaGFuZ2VIYW5kbGUoaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gaXNPcGVuO1xuICAgICAgICB0aGlzLl9yYW5nZVNlbGVjdG9yLnJlc2V0KCk7XG4gICAgICAgIHRoaXMuX29uT3BlbkNoYW5nZSh0aGlzLmlzT3Blbik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25PcGVuQ2hhbmdlKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1NZXNzYWdlLl9wb3BvdmVyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JtTWVzc2FnZS5fcG9wb3Zlci5zZXRJZ25vcmVUcmlnZ2Vycyhpc09wZW4pO1xuICAgIH1cblxuICAgIC8qKiBPcGVucyB0aGUgc2VsZWN0IHBvcG92ZXIgYm9keS4gKi9cbiAgICBvcGVuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQodGhpcy5pc09wZW4pO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQ2xvc2VzIHRoZSBzZWxlY3QgcG9wb3ZlciBib2R5LiAqL1xuICAgIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yYW5nZVNlbGVjdG9yLnJlc2V0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTaG93biQubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gJyc7XG4gICAgICAgIHRoaXMuX2ZvY3VzVG9TZWFyY2hGaWVsZCgpO1xuXG4gICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQodGhpcy5pc09wZW4pO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNob3dMaXN0KGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4gIT09IGlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5pc09wZW4gPSBpc09wZW47XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy5vcGVuQ2hhbmdlLm5leHQoaXNPcGVuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGVybUNoYW5nZWQoJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZWFyY2hUZXJtQ2hhbmdlZCh0ZXh0OiBzdHJpbmcgPSB0aGlzLmlucHV0VGV4dCk6IHZvaWQge1xuICAgICAgICBpZiAodGV4dCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIG1hcC5zZXQoJ3F1ZXJ5JywgdGV4dCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmxpbWl0bGVzcykge1xuICAgICAgICAgICAgbWFwLnNldCgnbGltaXQnLCB0aGlzLl9tYXBMaW1pdCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRzLm1hdGNoKG1hcCk7XG5cbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIENsaWNrIG9uIEJ1dHRvblxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBvblByaW1hcnlCdXR0b25DbGljayhpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoVGVybUNoYW5nZWQoJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3BlbkRyb3Bkb3duT25BZGRPbkNsaWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xpc3QoIWlzT3Blbik7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xpc3QoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgS2V5ZG93biBvbiBJbnB1dFxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBvbklucHV0S2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIGlmIChldmVudC5hbHRLZXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dMaXN0KHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5pc09wZW4gJiYgdGhpcy5saXN0Q29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0Q29tcG9uZW50LnNldEl0ZW1BY3RpdmUoMCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Nob29zZU90aGVySXRlbSgxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVVBfQVJST1cpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICB0aGlzLl9jaG9vc2VPdGhlckl0ZW0oLTEpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBFTlRFUikpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlU2VsZWN0aW9uQnlJbnB1dFRleHQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRVNDQVBFKSkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgIHRoaXMuc2hvd0xpc3QoZmFsc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKCFLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgWy4uLnRoaXMuX25vbk9wZW5pbmdLZXlzLCBDT05UUk9MXSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xpc3QodHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCBhY2NlcHRlZEtleXMgPSAhS2V5VXRpbC5pc0tleVR5cGUoZXZlbnQsICdhbHBoYWJldGljYWwnKSAmJiAhS2V5VXRpbC5pc0tleVR5cGUoZXZlbnQsICdudW1lcmljJyk7XG4gICAgICAgICAgICBpZiAoYWNjZXB0ZWRLZXlzKSB7XG4gICAgICAgICAgICAgICAgLy8gU2V0VGltZW91dCBpcyBuZWVkZWQgZm9yIGlucHV0IHRvIHJlY2VpdmUgbmV3IHZhbHVlLlxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0VtcHR5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdENvbXBvbmVudD8uc2V0SXRlbUFjdGl2ZSgwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBwYXNzZWQgdG8gbGlzdCBjb21wb25lbnQgKi9cbiAgICBoYW5kbGVMaXN0Rm9jdXNFc2NhcGUoZGlyZWN0aW9uOiBGb2N1c0VzY2FwZURpcmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0byBlbWl0IGNoYW5nZSBldmVudFxuICAgICAqL1xuICAgIF9lbWl0Q2hhbmdlRXZlbnQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IE11bHRpQ29tYm9ib3hTZWxlY3Rpb25DaGFuZ2VFdmVudCh0aGlzLCB0aGlzLnZhbHVlKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIGNoYW5nZSB0aGUgdmFsdWUgb2YgYSBjb250cm9sLlxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gYmUgYXBwbGllZFxuICAgICAqIEBwYXJhbSBlbWl0T25DaGFuZ2Ugd2hldGhlciB0byBlbWl0IFwib25DaGFuZ2VcIiBldmVudC5cbiAgICAgKiBTaG91bGQgYmUgXCJmYWxzZVwiLCBpZiB0aGUgY2hhbmdlIGlzIG1hZGUgcHJvZ3JhbW1hdGljYWxseSAoaW50ZXJuYWxseSkgYnkgdGhlIGNvbnRyb2wsIFwidHJ1ZVwiIG90aGVyd2lzZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZXRWYWx1ZSh2YWx1ZTogYW55LCBlbWl0T25DaGFuZ2UgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGNvZXJjZUFycmF5U2FmZSh2YWx1ZSk7XG4gICAgICAgIHN1cGVyLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcywgZW1pdE9uQ2hhbmdlKTtcbiAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRTdWdnZXN0aW9ucygpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfc2V0U2VsZWN0ZWRTdWdnZXN0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucyA9IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZEl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkSXRlbXNbaV07XG4gICAgICAgICAgICBjb25zdCBmaW5kZXIgPSAoaXRlbTogU2VsZWN0YWJsZU9wdGlvbkl0ZW0pOiBib29sZWFuID0+XG4gICAgICAgICAgICAgICAgaXRlbS5sYWJlbCA9PT0gc2VsZWN0ZWRJdGVtIHx8IGl0ZW0udmFsdWUgPT09IHNlbGVjdGVkSXRlbTtcbiAgICAgICAgICAgIGNvbnN0IGlkRnJvbUZ1bGxGbGF0U3VnZ2VzdGlvbnMgPSB0aGlzLl9mdWxsRmxhdFN1Z2dlc3Rpb25zLmZpbmRJbmRleChmaW5kZXIpO1xuICAgICAgICAgICAgY29uc3QgaWRGcm9tU3VnZ2VzdGlvbnMgPSAodGhpcy5fc3VnZ2VzdGlvbnMgfHwgW10pLmZpbmRJbmRleChmaW5kZXIpO1xuICAgICAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gTWF0aC5tYXgoaWRGcm9tRnVsbEZsYXRTdWdnZXN0aW9ucywgaWRGcm9tU3VnZ2VzdGlvbnMpO1xuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGlkRnJvbUZ1bGxGbGF0U3VnZ2VzdGlvbnMgIT09IC0xID8gdGhpcy5fZnVsbEZsYXRTdWdnZXN0aW9ucyA6IHRoaXMuX3N1Z2dlc3Rpb25zO1xuICAgICAgICAgICAgaWYgKGlkRnJvbUZ1bGxGbGF0U3VnZ2VzdGlvbnMgPT09IC0xICYmIGlkRnJvbVN1Z2dlc3Rpb25zID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NvbnZlcnRUb09wdGlvbkl0ZW1zKFtzZWxlY3RlZEl0ZW1dKS5mb3JFYWNoKChvcHRpb25JdGVtOiBTZWxlY3RhYmxlT3B0aW9uSXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25JdGVtLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5wdXNoKG9wdGlvbkl0ZW0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9ucyAmJlxuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24gPT09IHRoaXMuX3N1Z2dlc3Rpb25zICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuX2Z1bGxGbGF0U3VnZ2VzdGlvbnMuaW5jbHVkZXMoY29sbGVjdGlvbltpdGVtSW5kZXhdKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZnVsbEZsYXRTdWdnZXN0aW9ucy5wdXNoKGNvbGxlY3Rpb25baXRlbUluZGV4XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zLnB1c2goY29sbGVjdGlvbltpdGVtSW5kZXhdKTtcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uW2l0ZW1JbmRleF0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGdldCBkcygpOiBNdWx0aUNvbWJvQm94RGF0YVNvdXJjZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZSBhcyBNdWx0aUNvbWJvQm94RGF0YVNvdXJjZTxhbnk+O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9mb2N1c1RvU2VhcmNoRmllbGQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdGhhdCBwaWNrcyBvdGhlciB2YWx1ZSBtb3ZlZCBmcm9tIGN1cnJlbnQgb25lIGJ5IG9mZnNldCwgY2FsbGVkIG9ubHkgd2hlbiBNdWx0aSBDb21ib2JveCBpcyBjbG9zZWQgKi9cbiAgICBwcml2YXRlIF9jaG9vc2VPdGhlckl0ZW0ob2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnM/Lmxlbmd0aCA9PT0gdGhpcy5fZmxhdFN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFRleHQgPSAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGl2ZVZhbHVlID0gdGhpcy5fZ2V0U2VsZWN0SXRlbUJ5SW5wdXRWYWx1ZSh0aGlzLmlucHV0VGV4dCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fZmxhdFN1Z2dlc3Rpb25zLmZpbmRJbmRleCgodmFsdWUpID0+IHZhbHVlID09PSBhY3RpdmVWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gIXRoaXMuaW5wdXRUZXh0ICYmIG9mZnNldCA9PT0gLTEgPyB0aGlzLl9mbGF0U3VnZ2VzdGlvbnMubGVuZ3RoIC0gMSA6IGluZGV4ICsgb2Zmc2V0O1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5fZmxhdFN1Z2dlc3Rpb25zW3Bvc2l0aW9uXTtcblxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgdGhpcy5zZXRJbnB1dFRleHRGcm9tT3B0aW9uSXRlbShpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zLmZpbmRJbmRleCgodmFsdWUpID0+IHZhbHVlLmxhYmVsID09PSBpdGVtPy5sYWJlbCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5fY2hvb3NlT3RoZXJJdGVtKG9mZnNldCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZ2V0U2VsZWN0SXRlbUJ5SW5wdXRWYWx1ZShkaXNwbGF5VmFsdWU6IHN0cmluZyk6IFNlbGVjdGFibGVPcHRpb25JdGVtIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZsYXRTdWdnZXN0aW9ucy5maW5kKCh2YWx1ZSkgPT4gdmFsdWUubGFiZWwgPT09IGRpc3BsYXlWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiAgTWFwIGdyb3VwZWQgdmFsdWVzIHRvIGFycmF5LiAqL1xuICAgIHByb3RlY3RlZCBfZmxhdHRlbkdyb3VwcyhpdGVtczogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXSk6IFNlbGVjdGFibGVPcHRpb25JdGVtW10ge1xuICAgICAgICByZXR1cm4gaXRlbXMucmVkdWNlKChyZXN1bHQsIGl0ZW0pID0+IHJlc3VsdC5jb25jYXQoaXRlbS5jaGlsZHJlbiA/PyBbXSksIDxTZWxlY3RhYmxlT3B0aW9uSXRlbVtdPltdKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemVEYXRhU291cmNlKGRzOiBGZHBNdWx0aUNvbWJvYm94RGF0YVNvdXJjZTxhbnk+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zID0gW107XG4gICAgICAgIHRoaXMuX2ZsYXRTdWdnZXN0aW9ucyA9IFtdO1xuXG4gICAgICAgIGlmIChpc0RhdGFTb3VyY2UodGhpcy5kYXRhU291cmNlKSkge1xuICAgICAgICAgICAgKHRoaXMuZGF0YVNvdXJjZSBhcyBNdWx0aUNvbWJvQm94RGF0YVNvdXJjZTxhbnk+KS5jbG9zZSgpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fZHNTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBDb252ZXJ0IHdoYXRldmVyIGNvbWVzIGluIGFzIERhdGFTb3VyY2Ugc28gd2UgY2FuIHdvcmsgd2l0aCBpdCBpZGVudGljYWxseVxuICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gdGhpcy5fb3BlbkRhdGFTdHJlYW0oZHMpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb3BlbkRhdGFTdHJlYW0oZHM6IEZkcE11bHRpQ29tYm9ib3hEYXRhU291cmNlPGFueT4pOiBNdWx0aUNvbWJvQm94RGF0YVNvdXJjZTxhbnk+IHtcbiAgICAgICAgY29uc3QgaW5pdERhdGFTb3VyY2UgPSB0aGlzLl90b0RhdGFTdHJlYW0oZHMpO1xuICAgICAgICBsZXQgaXNJbml0RGF0YVNvdXJjZSA9IHRydWU7XG5cbiAgICAgICAgaWYgKGluaXREYXRhU291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgW2RhdGFTb3VyY2VdIHNvdXJjZSBkaWQgbm90IG1hdGNoIGFuIGFycmF5LCBPYnNlcnZhYmxlLCBvciBEYXRhU291cmNlYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpbml0RGF0YVNvdXJjZS5saW1pdGxlc3MgPSB0aGlzLmxpbWl0bGVzcztcblxuICAgICAgICAvKipcbiAgICAgICAgICogVGhpcyBpcyBzaW5nbGUgcG9pbnQgb2YgZGF0YSBlbnRyeSB0byB0aGUgY29tcG9uZW50LiBXZSBkb250IHdhbnQgdG8gc2V0IGRhdGEgb24gZGlmZmVyZW50XG4gICAgICAgICAqIHBsYWNlcy4gSWYgYW55IG5ldyBkYXRhIGNvbWVzIGluIGVpdGhlciB5b3UgZG8gYSBzZWFyY2ggYW5kIHlvdSB3YW50IHRvIHBhc3MgaW5pdGlhbCBkYXRhXG4gICAgICAgICAqIGl0cyBoZXJlLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIGNvbnN0IGRzU3ViID0gaW5pdERhdGFTb3VyY2VcbiAgICAgICAgICAgIC5vcGVuKClcbiAgICAgICAgICAgIC5waXBlKHNraXAoMSksIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzaW5nRW1wdHlEYXRhKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzSW5wdXRUZXh0ID0gdGhpcy5pbnB1dFRleHQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbnMgPSB0aGlzLl9jb252ZXJ0VG9PcHRpb25JdGVtcyhkYXRhKS5tYXAoKG9wdGlvbkl0ZW06IFNlbGVjdGFibGVPcHRpb25JdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZEl0ZW06IFNlbGVjdGFibGVPcHRpb25JdGVtKSA9PiBzZWxlY3RlZEl0ZW0uaWQgPT09IG9wdGlvbkl0ZW0uaWRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uSXRlbS5zZWxlY3RlZCA9IHNlbGVjdGVkRWxlbWVudC5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uSXRlbTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2ZsYXRTdWdnZXN0aW9ucyA9IHRoaXMuaXNHcm91cCA/IHRoaXMuX2ZsYXR0ZW5Hcm91cHModGhpcy5fc3VnZ2VzdGlvbnMpIDogdGhpcy5fc3VnZ2VzdGlvbnM7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNJbml0RGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9mdWxsRmxhdFN1Z2dlc3Rpb25zID0gdGhpcy5fZmxhdFN1Z2dlc3Rpb25zO1xuICAgICAgICAgICAgICAgICAgICBpc0luaXREYXRhU291cmNlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRTdWdnZXN0aW9uc0xlbmd0aCA9IHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFN1Z2dlc3Rpb25zTGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdGVkU3VnZ2VzdGlvbnNMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRTdWdnZXN0aW9uID0gdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9uc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuX3N1Z2dlc3Rpb25zLmZpbmRJbmRleCgoaXRlbSkgPT4gZXF1YWwoaXRlbS52YWx1ZSwgc2VsZWN0ZWRTdWdnZXN0aW9uLnZhbHVlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbnNbaWR4XS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCdpbml0RGF0YVNvdXJjZS5vcGVuKCkuJyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoZHNTdWIpO1xuXG4gICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLmFkZChpbml0RGF0YVNvdXJjZS5vbkRhdGFSZXF1ZXN0ZWQoKS5zdWJzY3JpYmUodGhpcy5vbkRhdGFSZXF1ZXN0ZWQpKTtcbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKGluaXREYXRhU291cmNlLm9uRGF0YVJlY2VpdmVkKCkuc3Vic2NyaWJlKHRoaXMub25EYXRhUmVjZWl2ZWQpKTtcblxuICAgICAgICBpbml0RGF0YVNvdXJjZS5kYXRhUHJvdmlkZXIuc2V0TG9va3VwS2V5KHRoaXMubG9va3VwS2V5KTtcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdCeTogTWF0Y2hpbmdCeSA9IHtcbiAgICAgICAgICAgIGZpcnN0Qnk6IHRoaXMuX2Rpc3BsYXlGblxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLnNlY29uZGFyeUtleSkge1xuICAgICAgICAgICAgbWF0Y2hpbmdCeS5zZWNvbmRhcnlCeSA9IHRoaXMuX3NlY29uZGFyeUZuO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5pdERhdGFTb3VyY2UuZGF0YVByb3ZpZGVyLnNldE1hdGNoaW5nQnkobWF0Y2hpbmdCeSk7XG4gICAgICAgIGluaXREYXRhU291cmNlLmRhdGFQcm92aWRlci5zZXRNYXRjaGluZ1N0cmF0ZWd5KHRoaXMuX21hdGNoaW5nU3RyYXRlZ3kpO1xuXG4gICAgICAgIC8vIGluaXRpYWwgZGF0YSBmZXRjaFxuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIG1hcC5zZXQoJ3F1ZXJ5JywgJyonKTtcblxuICAgICAgICBpZiAoIXRoaXMubGltaXRsZXNzKSB7XG4gICAgICAgICAgICBtYXAuc2V0KCdsaW1pdCcsIE1BUF9MSU1JVCk7XG4gICAgICAgIH1cblxuICAgICAgICBpbml0RGF0YVNvdXJjZS5tYXRjaChtYXApO1xuXG4gICAgICAgIHJldHVybiBpbml0RGF0YVNvdXJjZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Byb2Nlc3NpbmdFbXB0eURhdGEoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICB0aGlzLmlucHV0VGV4dCA9IHRoaXMuX3ByZXZpb3VzSW5wdXRUZXh0O1xuXG4gICAgICAgIHRoaXMuX3NldEludmFsaWRFbnRyeSgpO1xuXG4gICAgICAgIGlmICh0aGlzLl90aW1lclN1YiQpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpbWVyU3ViJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdGltZXJTdWIkID0gdGltZXIoMzAwMCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3Vuc2V0SW52YWxpZEVudHJ5KCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0SW52YWxpZEVudHJ5KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNTdGF0ZSB8fCB0aGlzLl9wcmV2aW91c1N0YXRlTWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcHJldmlvdXNTdGF0ZSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnZXJyb3InO1xuXG4gICAgICAgIHRoaXMuX3ByZXZpb3VzU3RhdGVNZXNzYWdlID0gdGhpcy5zdGF0ZU1lc3NhZ2U7XG4gICAgICAgIHRoaXMuc3RhdGVNZXNzYWdlID0gdGhpcy5pbnZhbGlkRW50cnlNZXNzYWdlO1xuXG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdW5zZXRJbnZhbGlkRW50cnkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLl9wcmV2aW91c1N0YXRlO1xuICAgICAgICB0aGlzLl9wcmV2aW91c1N0YXRlID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMuc3RhdGVNZXNzYWdlID0gdGhpcy5fcHJldmlvdXNTdGF0ZU1lc3NhZ2U7XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzU3RhdGVNZXNzYWdlID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdG9EYXRhU3RyZWFtKHNvdXJjZTogRmRwTXVsdGlDb21ib2JveERhdGFTb3VyY2U8YW55Pik6IE11bHRpQ29tYm9Cb3hEYXRhU291cmNlPGFueT4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNEYXRhU291cmNlKHNvdXJjZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2UgYXMgTXVsdGlDb21ib0JveERhdGFTb3VyY2U8YW55PjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQXJyYXlNdWx0aUNvbWJvQm94RGF0YVNvdXJjZTxhbnk+KHNvdXJjZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKHNvdXJjZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZU11bHRpQ29tYm9Cb3hEYXRhU291cmNlPGFueT4oc291cmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0V2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9nZXRPcHRpb25zTGlzdFdpZHRoKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmF1dG9SZXNpemUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2dldE9wdGlvbnNMaXN0V2lkdGgoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRPcHRpb25zTGlzdFdpZHRoKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcbiAgICAgICAgY29uc3QgcmVjdCA9ICh0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2ZkLWlucHV0LWdyb3VwJykgYXMgSFRNTEVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBzY3JvbGxCYXJXaWR0aCA9IGJvZHkub2Zmc2V0V2lkdGggLSBib2R5LmNsaWVudFdpZHRoO1xuICAgICAgICB0aGlzLm1heFdpZHRoID0gdGhpcy5hdXRvUmVzaXplID8gd2luZG93LmlubmVyV2lkdGggLSBzY3JvbGxCYXJXaWR0aCAtIHJlY3QubGVmdCA6IHRoaXMubWluV2lkdGg7XG4gICAgICAgIHRoaXMubWluV2lkdGggPSByZWN0LndpZHRoIC0gMjtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBvcmlnaW5hbCBkYXRhIHRvIFNlbGVjdGFibGVPcHRpb25JdGVtcyBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29udmVydFRvT3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1swXTtcblxuICAgICAgICBjb25zdCBlbGVtZW50VHlwZUlzT3B0aW9uSXRlbSA9IGlzU2VsZWN0YWJsZU9wdGlvbkl0ZW0oaXRlbSk7XG4gICAgICAgIGlmIChlbGVtZW50VHlwZUlzT3B0aW9uSXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zIGFzIFNlbGVjdGFibGVPcHRpb25JdGVtW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbGVtZW50VHlwZUlzT2JqZWN0ID0gaXNKc09iamVjdChpdGVtKTtcbiAgICAgICAgaWYgKGVsZW1lbnRUeXBlSXNPYmplY3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvT3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc1N0cmluZyA9IGlzU3RyaW5nKGl0ZW0pO1xuICAgICAgICBpZiAoZWxlbWVudFR5cGVJc1N0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRQcmltaXRpdmVUb09wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGRhdGEgdG8gU2VsZWN0YWJsZU9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0T2JqZWN0c1RvT3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXSB7XG4gICAgICAgIGlmICh0aGlzLmlzR3JvdXApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvR3JvdXBPcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG93U2Vjb25kYXJ5VGV4dCAmJiB0aGlzLnNlY29uZGFyeUtleSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRPYmplY3RzVG9TZWNvbmRhcnlPcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb0RlZmF1bHRPcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IG9iamVjdFtdIGRhdGEgdG8gR3JvdXAgT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfY29udmVydE9iamVjdHNUb0dyb3VwT3B0aW9uSXRlbXM8Sz4oaXRlbXM6IEtbXSk6IFNlbGVjdGFibGVPcHRpb25JdGVtW10ge1xuICAgICAgICBjb25zdCBncm91cDogeyBba2V5OiBzdHJpbmddOiBLW10gfSA9IHt9O1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IGtleVZhbHVlID0gaXRlbVt0aGlzLmdyb3VwS2V5XTtcbiAgICAgICAgICAgIGlmICgha2V5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFncm91cFtrZXlWYWx1ZV0pIHtcbiAgICAgICAgICAgICAgICBncm91cFtrZXlWYWx1ZV0gPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ3JvdXBba2V5VmFsdWVdLnB1c2goaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZ3JvdXApLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RJdGVtOiBTZWxlY3RhYmxlT3B0aW9uSXRlbSA9IHtcbiAgICAgICAgICAgICAgICBsYWJlbDoga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgIGlzR3JvdXA6IHRydWVcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IGdyb3VwW2tleV07XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNob3dTZWNvbmRhcnlUZXh0ICYmIHRoaXMuc2Vjb25kYXJ5S2V5KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0SXRlbS5jaGlsZHJlbiA9IHRoaXMuX2NvbnZlcnRPYmplY3RzVG9TZWNvbmRhcnlPcHRpb25JdGVtcyhjdXJyZW50R3JvdXApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RJdGVtLmNoaWxkcmVuID0gdGhpcy5fY29udmVydE9iamVjdHNUb0RlZmF1bHRPcHRpb25JdGVtcyhjdXJyZW50R3JvdXApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0SXRlbTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBvYmplY3RbXSBkYXRhIHRvIFNlY29uZGFyeSBTZWxlY3RhYmxlT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRPYmplY3RzVG9TZWNvbmRhcnlPcHRpb25JdGVtczxLPihpdGVtczogS1tdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmRpc3BsYXlWYWx1ZSh2YWx1ZSksXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMubG9va3VwVmFsdWUodmFsdWUpLFxuICAgICAgICAgICAgICAgIHNlY29uZGFyeVRleHQ6IHRoaXMub2JqZWN0R2V0KHZhbHVlLCB0aGlzLnNlY29uZGFyeUtleSksXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcz8uaW5jbHVkZXModmFsdWUpIHx8IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFByaW1pdGl2ZSBkYXRhKEJvb2xlYW4sIFN0cmluZywgTnVtYmVyKSB0byBTZWxlY3RhYmxlT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRQcmltaXRpdmVUb09wdGlvbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IFNlbGVjdGFibGVPcHRpb25JdGVtW10ge1xuICAgICAgICBjb25zdCBzZWxlY3RJdGVtczogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgc2VsZWN0SXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHZhbHVlLFxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmxvb2t1cFZhbHVlKHZhbHVlKSxcbiAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZEl0ZW1zPy5pbmNsdWRlcyh2YWx1ZSkgfHwgZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdEl0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgb2JqZWN0W10gdG8gU2VsZWN0YWJsZU9wdGlvbkl0ZW1zIEludGVyZmFjZSAoRGVmYXVsdClcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29udmVydE9iamVjdHNUb0RlZmF1bHRPcHRpb25JdGVtcyhpdGVtczogYW55W10pOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0SXRlbXM6IFNlbGVjdGFibGVPcHRpb25JdGVtW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1zW2ldO1xuICAgICAgICAgICAgc2VsZWN0SXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZGlzcGxheVZhbHVlKHZhbHVlKSxcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5sb29rdXBWYWx1ZSh2YWx1ZSksXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcz8uaW5jbHVkZXModmFsdWUpIHx8IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQXNzaWduIGN1c3RvbSB0ZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIF9hc3NpZ25DdXN0b21UZW1wbGF0ZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzLmZvckVhY2goKHRlbXBsYXRlKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRlbXBsYXRlLm5hbWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdvcHRpb25JdGVtVGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbkl0ZW1UZW1wbGF0ZSA9IHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdncm91cEl0ZW1UZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBJdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2Vjb25kYXJ5SXRlbVRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWNvbmRhcnlJdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2VsZWN0ZWRJdGVtVGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
799
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tdWx0aS1jb21ib2JveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vZm9ybS9tdWx0aS1jb21ib2JveC9jb21tb25zL2Jhc2UtbXVsdGktY29tYm9ib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILEdBQUcsRUFDSCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLEdBQUcsRUFDSCxRQUFRLEVBQ1gsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBRUgsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixJQUFJLEVBQ0osTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsSUFBSSxFQUVKLFFBQVEsRUFFUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRSxPQUFPLEtBQUssTUFBTSxpQkFBaUIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQWMsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUcsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRCxPQUFPLEVBR0gsT0FBTyxFQUVQLGFBQWEsRUFDYixpQkFBaUIsRUFDcEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixD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QUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBS0YsS0FBSztzQkFEUixLQUFLO2dCQWVOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTiwwQkFBMEI7c0JBRHpCLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxNQUFNO2dCQUtQLFlBQVk7c0JBRFgsTUFBTTtnQkFLRyxlQUFlO3NCQUF4QixNQUFNO2dCQUlHLGNBQWM7c0JBQXZCLE1BQU07Z0JBSVAsa0JBQWtCO3NCQURqQixNQUFNO2dCQUtQLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxhQUFhO2dCQUt4QixrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUtyRCxlQUFlO3NCQURkLGVBQWU7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBTFQsXG4gICAgQkFDS1NQQUNFLFxuICAgIENPTlRST0wsXG4gICAgRE9XTl9BUlJPVyxcbiAgICBFTlRFUixcbiAgICBFU0NBUEUsXG4gICAgTEVGVF9BUlJPVyxcbiAgICBSSUdIVF9BUlJPVyxcbiAgICBTSElGVCxcbiAgICBUQUIsXG4gICAgVVBfQVJST1dcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3QsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgU2tpcFNlbGYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnQsIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2tpcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGb3JtU3RhdGVzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RGVuc2l0eSxcbiAgICBGb2N1c0VzY2FwZURpcmVjdGlvbixcbiAgICBLZXlVdGlsLFxuICAgIE51bGxhYmxlLFxuICAgIFJhbmdlU2VsZWN0b3IsXG4gICAgVGVtcGxhdGVEaXJlY3RpdmVcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRGlhbG9nQ29uZmlnIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5pbXBvcnQgeyBMaXN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xpc3QnO1xuaW1wb3J0IHsgTW9iaWxlTW9kZUNvbmZpZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tb2JpbGUtbW9kZSc7XG5pbXBvcnQgeyBQb3BvdmVyRmlsbE1vZGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcbmltcG9ydCB7XG4gICAgQXJyYXlNdWx0aUNvbWJvQm94RGF0YVNvdXJjZSxcbiAgICBjb2VyY2VBcnJheVNhZmUsXG4gICAgQ29sbGVjdGlvbkJhc2VJbnB1dCxcbiAgICBpc0RhdGFTb3VyY2UsXG4gICAgaXNGdW5jdGlvbixcbiAgICBpc0pzT2JqZWN0LFxuICAgIGlzT3B0aW9uSXRlbSxcbiAgICBpc1NlbGVjdGFibGVPcHRpb25JdGVtLFxuICAgIGlzU3RyaW5nLFxuICAgIE1hdGNoaW5nQnksXG4gICAgTWF0Y2hpbmdTdHJhdGVneSxcbiAgICBNdWx0aUNvbWJvQm94RGF0YVNvdXJjZSxcbiAgICBPYnNlcnZhYmxlTXVsdGlDb21ib0JveERhdGFTb3VyY2UsXG4gICAgUGxhdGZvcm1Gb3JtRmllbGQsXG4gICAgUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLFxuICAgIFNlbGVjdGFibGVPcHRpb25JdGVtXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcblxuaW1wb3J0IHsgRkRfRk9STV9GSUVMRCwgRkRfRk9STV9GSUVMRF9DT05UUk9MIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuaW1wb3J0IHsgVGV4dEFsaWdubWVudCB9IGZyb20gJy4uLy4uL2NvbWJvYm94JztcbmltcG9ydCB7IE11bHRpQ29tYm9ib3hDb25maWcgfSBmcm9tICcuLi9tdWx0aS1jb21ib2JveC5jb25maWcnO1xuXG5leHBvcnQgY29uc3QgTUFQX0xJTUlUID0gbmV3IEluamVjdGlvblRva2VuPG51bWJlcj4oJ01hcCBsaW1pdOKJpScsIHsgZmFjdG9yeTogKCkgPT4gMTIgfSk7XG5cbmV4cG9ydCB0eXBlIEZkcE11bHRpQ29tYm9ib3hEYXRhU291cmNlPFQ+ID0gTXVsdGlDb21ib0JveERhdGFTb3VyY2U8VD4gfCBPYnNlcnZhYmxlPFRbXT4gfCBUW107XG5cbmV4cG9ydCBjbGFzcyBNdWx0aUNvbWJvYm94U2VsZWN0aW9uQ2hhbmdlRXZlbnQge1xuICAgIC8qKlxuICAgICAqIE11bHRpIENvbWJvYm94IHNlbGVjdGlvbiBjaGFuZ2UgZXZlbnRcbiAgICAgKiBAcGFyYW0gc291cmNlIE11bHRpIENvbWJvYm94IGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1zIFNlbGVjdGVkIGl0ZW1zXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IEJhc2VNdWx0aUNvbWJvYm94LFxuICAgICAgICBwdWJsaWMgc2VsZWN0ZWRJdGVtczogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bJ3ZhbHVlJ10gLy8gQ29udGFpbnMgc2VsZWN0ZWQgaXRlbXNcbiAgICApIHt9XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VNdWx0aUNvbWJvYm94IGV4dGVuZHMgQ29sbGVjdGlvbkJhc2VJbnB1dCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogUHJvdmlkZXMgc2VsZWN0ZWQgaXRlbXMuICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuXG4gICAgLyoqIFByb3ZpZGVzIG1heGltdW0gaGVpZ2h0IGZvciB0aGUgb3B0aW9uUGFuZWwuICovXG4gICAgQElucHV0KClcbiAgICBtYXhIZWlnaHQgPSAnMjUwcHgnO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBBZGRPbiBCdXR0b24gc2hvdWxkIGJlIGZvY3VzYWJsZVxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGJ1dHRvbkZvY3VzYWJsZSA9IGZhbHNlO1xuXG4gICAgLyoqIERhdGFzb3VyY2UgZm9yIHN1Z2dlc3Rpb24gbGlzdC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkYXRhU291cmNlKHZhbHVlOiBGZHBNdWx0aUNvbWJvYm94RGF0YVNvdXJjZTxhbnk+KSB7fVxuICAgIGdldCBkYXRhU291cmNlKCk6IEZkcE11bHRpQ29tYm9ib3hEYXRhU291cmNlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgYXV0b2NvbXBsZXRlIHNob3VsZCBiZSBlbmFibGVkOyBFbmFibGVkIGJ5IGRlZmF1bHQuICovXG4gICAgQElucHV0KClcbiAgICBhdXRvQ29tcGxldGUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogVE9ETzogTmFtZSBvZiB0aGUgZW50aXR5IGZvciB3aGljaCBEYXRhUHJvdmlkZXIgd2lsbCBiZSBsb2FkZWQuIFlvdSBjYW4gZWl0aGVyIHBhc3MgbGlzdCBvZlxuICAgICAqIGl0ZW1zIG9yIHVzZSB0aGlzIGVudGl0eUNsYXNzIGFuZCBpbnRlcm5hbGx5IHdlIHNob3VsZCBiZSBhYmxlIHRvIGRvIGxvb2t1cCB0byBzb21lIHJlZ2lzdHJ5XG4gICAgICogYW5kIHJldHJpZXZlIHRoZSBiZXN0IG1hdGNoaW5nIERhdGFQcm92aWRlciB0aGF0IGlzIHNldCBvbiBhcHBsaWNhdGlvbiBsZXZlbFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZW50aXR5Q2xhc3M6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBtdWx0aS1jb21ib2JveCBzaG91bGQgYmUgYnVpbHQgb24gbW9iaWxlIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGUgPSBmYWxzZTtcblxuICAgIC8qKiBNdWx0aSBDb21ib2JveCBNb2JpbGUgQ29uZmlndXJhdGlvbiwgaXQncyBhcHBsaWVkIG9ubHksIHdoZW4gbW9iaWxlIGlzIGVuYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGVDb25maWc6IE1vYmlsZU1vZGVDb25maWc7XG5cbiAgICAvKiogVGVsbHMgdGhlIG11bHRpLWNvbWJvYm94IGlmIHdlIG5lZWQgdG8gZ3JvdXAgaXRlbXMuICovXG4gICAgQElucHV0KClcbiAgICBncm91cCA9IGZhbHNlO1xuXG4gICAgLyoqIEEgZmllbGQgbmFtZSB0byB1c2UgdG8gZ3JvdXAgZGF0YSBieSAoc3VwcG9ydCBkb3R0ZWQgbm90YXRpb24pLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3JvdXBLZXk6IHN0cmluZztcblxuICAgIC8qKiBUaGUgZmllbGQgdG8gc2hvdyBkYXRhIGluIHNlY29uZGFyeSBjb2x1bW4uICovXG4gICAgQElucHV0KClcbiAgICBzZWNvbmRhcnlLZXk6IHN0cmluZztcblxuICAgIC8qKiBTaG93IHRoZSBzZWNvbmQgY29sdW1uIChhcHBsaWNhYmxlIGZvciB0d28gY29sdW1ucyBsYXlvdXQpLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1NlY29uZGFyeVRleHQgPSBmYWxzZTtcblxuICAgIC8qKiBIb3Jpem9udGFsbHkgYWxpZ24gdGV4dCBpbnNpZGUgdGhlIHNlY29uZCBjb2x1bW4gKGFwcGxpY2FibGUgZm9yIHR3byBjb2x1bW5zIGxheW91dCkuICovXG4gICAgQElucHV0KClcbiAgICBzZWNvbmRhcnlUZXh0QWxpZ25tZW50OiBUZXh0QWxpZ25tZW50ID0gJ3JpZ2h0JztcblxuICAgIC8qKiBUdXJucyBvbi9vZmYgQWRqdXN0YWJsZSBXaWR0aCBmZWF0dXJlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXV0b1Jlc2l6ZSA9IGZhbHNlO1xuXG4gICAgLyoqIFZhbHVlIG9mIHRoZSBtdWx0aSBjb21ib2JveCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgc3VwZXIuc2V0VmFsdWUodmFsdWUsIHRydWUpO1xuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJlc2V0IG9wdGlvbnMgZm9yIHRoZSBTZWxlY3QgYm9keSB3aWR0aCwgd2hhdGV2ZXIgaXMgY2hvc2VuLCB0aGUgYm9keSBoYXMgYSA2MDBweCBsaW1pdC5cbiAgICAgKiAqIGBhdC1sZWFzdGAgd2lsbCBhcHBseSBhIG1pbmltdW0gd2lkdGggdG8gdGhlIGJvZHkgZXF1aXZhbGVudCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbnRyb2wuIC0gRGVmYXVsdFxuICAgICAqICogYGVxdWFsYCB3aWxsIGFwcGx5IGEgd2lkdGggdG8gdGhlIGJvZHkgZXF1aXZhbGVudCB0byB0aGUgd2lkdGggb2YgdGhlIGNvbnRyb2wuXG4gICAgICogKiAnZml0LWNvbnRlbnQnIHdpbGwgYXBwbHkgd2lkdGggbmVlZGVkIHRvIHByb3Blcmx5IGRpc3BsYXkgaXRlbXMgaW5zaWRlLCBpbmRlcGVuZGVudCBvZiBjb250cm9sLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsbENvbnRyb2xNb2RlOiBQb3BvdmVyRmlsbE1vZGUgPSAnYXQtbGVhc3QnO1xuXG4gICAgLyoqIFNldHMgdGl0bGUgYXR0cmlidXRlIHRvIGFkZG9uIGJ1dHRvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFkZG9uSWNvblRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogU2V0cyBpbnZhbGlkIGVudHJ5IG1lc3NhZ2UuICovXG4gICAgQElucHV0KClcbiAgICBpbnZhbGlkRW50cnlNZXNzYWdlID0gJ0ludmFsaWQgZW50cnknO1xuXG4gICAgLyoqIFR1cm5zIGxpbWl0bGVzcyBtb2RlLCBPTiBvciBPRkYgKi9cbiAgICBASW5wdXQoKVxuICAgIGxpbWl0bGVzczogYm9vbGVhbjtcblxuICAgIC8qKiBXaGV0aGVyIHRvIG9wZW4gdGhlIGRyb3Bkb3duIHdoZW4gdGhlIGFkZG9uIGJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgb3BlbkRyb3Bkb3duT25BZGRPbkNsaWNrZWQgPSB0cnVlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBpdGVtIGlzIHNlbGVjdGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TXVsdGlDb21ib2JveFNlbGVjdGlvbkNoYW5nZUV2ZW50PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gRW1pdHMgZXZlbnQgd2hlbiB0aGUgbWVudSBpcyBvcGVuZWQvY2xvc2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGlzT3BlbkNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBkYXRhIGxvYWRpbmcgaXMgc3RhcnRlZC4gKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBAT3V0cHV0KCkgb25EYXRhUmVxdWVzdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBkYXRhIGxvYWRpbmcgaXMgZmluaXNoZWQuICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uRGF0YVJlY2VpdmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIGFkZG9uIGJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGFkZE9uQnV0dG9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoTGlzdENvbXBvbmVudClcbiAgICBsaXN0Q29tcG9uZW50OiBMaXN0Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dEVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBzZWFyY2hJbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVEaXJlY3RpdmUpXG4gICAgY3VzdG9tVGVtcGxhdGVzOiBRdWVyeUxpc3Q8VGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEN1c3RvbSBPcHRpb24gaXRlbSBUZW1wbGF0ZS5cbiAgICAgKi9cbiAgICBvcHRpb25JdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3VzdG9tIEdyb3VwIEhlYWRlciBpdGVtIFRlbXBsYXRlLlxuICAgICAqL1xuICAgIGdyb3VwSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEN1c3RvbSBTZWNvbmRhcnkgaXRlbSBUZW1wbGF0ZS5cbiAgICAgKi9cbiAgICBzZWNvbmRhcnlJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3VzdG9tIFNlbGVjdGVkIG9wdGlvbiBpdGVtIFRlbXBsYXRlLlxuICAgICAqL1xuICAgIHNlbGVjdGVkSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5ID0gdGhpcy5tdWx0aUNvbWJvYm94Q29uZmlnLmNvbnRlbnREZW5zaXR5O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBsaXN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogU2V0IHRoZSBpbnB1dCB0ZXh0IG9mIHRoZSBpbnB1dC4gKi9cbiAgICBzZXQgaW5wdXRUZXh0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5faW5wdXRUZXh0VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIC8qKiBHZXQgdGhlIGlucHV0IHRleHQgb2YgdGhlIGlucHV0LiAqL1xuICAgIGdldCBpbnB1dFRleHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lucHV0VGV4dFZhbHVlIHx8ICcnO1xuICAgIH1cblxuICAgIC8qKiBJcyBlbXB0eSBzZWFyY2ggZmllbGQuICovXG4gICAgZ2V0IGlzRW1wdHlWYWx1ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRUZXh0LnRyaW0oKS5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNHcm91cCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuZ3JvdXAgJiYgdGhpcy5ncm91cEtleSk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIE11bHRpIElucHV0IGlzIG9wZW5lZC4gKi9cbiAgICBpc09wZW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBMaXN0IG9mIG1hdGNoZWQgc3VnZ2VzdGlvbnNcbiAgICAgKi9cbiAgICBfc3VnZ2VzdGlvbnM6IFNlbGVjdGFibGVPcHRpb25JdGVtW107XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogR3JvdXBlZCBzdWdnZXN0aW9ucyBtYXBwZWQgdG8gYXJyYXkuXG4gICAgICovXG4gICAgX2ZsYXRTdWdnZXN0aW9uczogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZnVsbEZsYXRTdWdnZXN0aW9uczogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3Qgb2Ygc2VsZWN0ZWQgc3VnZ2VzdGlvbnNcbiAgICAgKi9cbiAgICBfc2VsZWN0ZWRTdWdnZXN0aW9uczogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNYXggd2lkdGggb2YgbGlzdCBjb250YWluZXJcbiAgICAgKi9cbiAgICBtYXhXaWR0aDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1pbiB3aWR0aCBvZiBsaXN0IGNvbnRhaW5lclxuICAgICAqL1xuICAgIG1pbldpZHRoOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTmVlZCBmb3Igb3BlbmluZyBtb2JpbGUgdmVyc2lvblxuICAgICAqL1xuICAgIG9wZW5DaGFuZ2UgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZWxlY3RlZFNob3duJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2RhdGFTb3VyY2U6IEZkcE11bHRpQ29tYm9ib3hEYXRhU291cmNlPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lucHV0VGV4dFZhbHVlOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZXZpb3VzSW5wdXRUZXh0OiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21hdGNoaW5nU3RyYXRlZ3k6IE1hdGNoaW5nU3RyYXRlZ3kgPSB0aGlzLm11bHRpQ29tYm9ib3hDb25maWcubWF0Y2hpbmdTdHJhdGVneTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9lbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEtleXMsIHRoYXQgd29uJ3QgdHJpZ2dlciB0aGUgcG9wb3ZlcidzIG9wZW4gc3RhdGUsIHdoZW4gZGlzcGF0Y2hlZCBvbiBzZWFyY2ggaW5wdXQuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbm9uT3BlbmluZ0tleXM6IG51bWJlcltdID0gW1xuICAgICAgICBCQUNLU1BBQ0UsXG4gICAgICAgIEVTQ0FQRSxcbiAgICAgICAgRU5URVIsXG4gICAgICAgIENPTlRST0wsXG4gICAgICAgIFRBQixcbiAgICAgICAgU0hJRlQsXG4gICAgICAgIFVQX0FSUk9XLFxuICAgICAgICBSSUdIVF9BUlJPVyxcbiAgICAgICAgRE9XTl9BUlJPVyxcbiAgICAgICAgTEVGVF9BUlJPVyxcbiAgICAgICAgQUxUXG4gICAgXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGltZXJTdWIkOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZXZpb3VzU3RhdGU/OiBGb3JtU3RhdGVzO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcmV2aW91c1N0YXRlTWVzc2FnZTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9yYW5nZVNlbGVjdG9yID0gbmV3IFJhbmdlU2VsZWN0b3IoKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGlzcGxheUZuID0gKHZhbHVlOiBhbnkpOiBzdHJpbmcgPT4gdGhpcy5kaXNwbGF5VmFsdWUodmFsdWUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWNvbmRhcnlGbiA9ICh2YWx1ZTogYW55KTogc3RyaW5nID0+IHtcbiAgICAgICAgaWYgKGlzT3B0aW9uSXRlbSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zZWNvbmRhcnlUZXh0ID8/ICcnO1xuICAgICAgICB9IGVsc2UgaWYgKGlzSnNPYmplY3QodmFsdWUpICYmIHRoaXMuc2Vjb25kYXJ5S2V5KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMub2JqZWN0R2V0KHZhbHVlLCB0aGlzLnNlY29uZGFyeUtleSk7XG5cbiAgICAgICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKGN1cnJlbnRJdGVtKSA/IGN1cnJlbnRJdGVtKCkgOiBjdXJyZW50SXRlbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcmVhZG9ubHkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHJlYWRvbmx5IG5nRm9ybTogTmdGb3JtLFxuICAgICAgICBAT3B0aW9uYWwoKSByZWFkb25seSBkaWFsb2dDb25maWc6IERpYWxvZ0NvbmZpZyxcbiAgICAgICAgcHJvdGVjdGVkIG11bHRpQ29tYm9ib3hDb25maWc6IE11bHRpQ29tYm9ib3hDb25maWcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBIb3N0KCkgQEluamVjdChGRF9GT1JNX0ZJRUxEKSBmb3JtRmllbGQ6IFBsYXRmb3JtRm9ybUZpZWxkLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASG9zdCgpIEBJbmplY3QoRkRfRk9STV9GSUVMRF9DT05UUk9MKSBmb3JtQ29udHJvbDogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLFxuICAgICAgICBASW5qZWN0KE1BUF9MSU1JVCkgcHJpdmF0ZSBfbWFwTGltaXQ6IG51bWJlclxuICAgICkge1xuICAgICAgICBzdXBlcihfY2QsIGVsZW1lbnRSZWYsIG5nQ29udHJvbCwgY29udHJvbENvbnRhaW5lciwgbmdGb3JtLCBmb3JtRmllbGQsIGZvcm1Db250cm9sKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGF0YVNvdXJjZUNoYW5nZSA9IGNoYW5nZXNbJ2RhdGFTb3VyY2UnXTtcblxuICAgICAgICBpZiAoZGF0YVNvdXJjZUNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZURhdGFTb3VyY2UoZGF0YVNvdXJjZUNoYW5nZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRXaW5kb3dSZXNpemUoKTtcbiAgICAgICAgdGhpcy5fYXNzaWduQ3VzdG9tVGVtcGxhdGVzKCk7XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzSW5wdXRUZXh0ID0gdGhpcy5pbnB1dFRleHQ7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG5cbiAgICAgICAgaWYgKGlzRGF0YVNvdXJjZSh0aGlzLmRhdGFTb3VyY2UpKSB7XG4gICAgICAgICAgICAodGhpcy5kYXRhU291cmNlIGFzIE11bHRpQ29tYm9Cb3hEYXRhU291cmNlPGFueT4pLmNsb3NlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZHNTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWV0aG9kIHRvIHNldCBpbnB1dCB0ZXh0IGFzIGl0ZW0gbGFiZWwuXG4gICAgICovXG4gICAgYWJzdHJhY3Qgc2V0SW5wdXRUZXh0RnJvbU9wdGlvbkl0ZW0oaXRlbTogU2VsZWN0YWJsZU9wdGlvbkl0ZW0pOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRvZ2dsZSBpdGVtIHNlbGVjdGlvbi5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCB0b2dnbGVTZWxlY3Rpb24oaXRlbTogU2VsZWN0YWJsZU9wdGlvbkl0ZW0pOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRvZ2dsZSBpdGVtIHNlbGVjdGlvbiBieSBpbnB1dCB0ZXh0IHZhbHVlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHRvZ2dsZVNlbGVjdGlvbkJ5SW5wdXRUZXh0KCk6IHZvaWQ7XG5cbiAgICAvKiogd3JpdGUgdmFsdWUgZm9yIENvbnRyb2xWYWx1ZUFjY2Vzc29yICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IGNvZXJjZUFycmF5U2FmZSh2YWx1ZSk7XG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRTdWdnZXN0aW9ucygpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHBvcG92ZXJPcGVuQ2hhbmdlSGFuZGxlKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3BlbiA9IGlzT3BlbjtcbiAgICAgICAgdGhpcy5fcmFuZ2VTZWxlY3Rvci5yZXNldCgpO1xuICAgICAgICB0aGlzLl9vbk9wZW5DaGFuZ2UodGhpcy5pc09wZW4pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uT3BlbkNoYW5nZShpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5mb3JtTWVzc2FnZS5fcG9wb3Zlci5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybU1lc3NhZ2UuX3BvcG92ZXIuc2V0SWdub3JlVHJpZ2dlcnMoaXNPcGVuKTtcbiAgICB9XG5cbiAgICAvKiogT3BlbnMgdGhlIHNlbGVjdCBwb3BvdmVyIGJvZHkuICovXG4gICAgb3BlbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRoaXMuaXNPcGVuKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIENsb3NlcyB0aGUgc2VsZWN0IHBvcG92ZXIgYm9keS4gKi9cbiAgICBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmFuZ2VTZWxlY3Rvci5yZXNldCgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkU2hvd24kLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLmlucHV0VGV4dCA9ICcnO1xuICAgICAgICB0aGlzLl9mb2N1c1RvU2VhcmNoRmllbGQoKTtcblxuICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRoaXMuaXNPcGVuKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzaG93TGlzdChpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuICE9PSBpc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gaXNPcGVuO1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMub3BlbkNoYW5nZS5uZXh0KGlzT3Blbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRlcm1DaGFuZ2VkKCcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2VhcmNoVGVybUNoYW5nZWQodGV4dDogc3RyaW5nID0gdGhpcy5pbnB1dFRleHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBtYXAuc2V0KCdxdWVyeScsIHRleHQpO1xuXG4gICAgICAgIGlmICghdGhpcy5saW1pdGxlc3MpIHtcbiAgICAgICAgICAgIG1hcC5zZXQoJ2xpbWl0JywgdGhpcy5fbWFwTGltaXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kcy5tYXRjaChtYXApO1xuXG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBDbGljayBvbiBCdXR0b25cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgb25QcmltYXJ5QnV0dG9uQ2xpY2soaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFRlcm1DaGFuZ2VkKCcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wZW5Ecm9wZG93bk9uQWRkT25DbGlja2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dMaXN0KCFpc09wZW4pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dMaXN0KGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRFbGVtZW50Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIEtleWRvd24gb24gSW5wdXRcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgb25JbnB1dEtleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93TGlzdCh0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNPcGVuICYmIHRoaXMubGlzdENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdENvbXBvbmVudC5zZXRJdGVtQWN0aXZlKDApO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaG9vc2VPdGhlckl0ZW0oMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgdGhpcy5fY2hvb3NlT3RoZXJJdGVtKC0xKTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRU5URVIpKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVNlbGVjdGlvbkJ5SW5wdXRUZXh0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIEVTQ0FQRSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICB0aGlzLnNob3dMaXN0KGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIGlmICghS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFsuLi50aGlzLl9ub25PcGVuaW5nS2V5cywgQ09OVFJPTF0pKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dMaXN0KHRydWUpO1xuICAgICAgICAgICAgY29uc3QgYWNjZXB0ZWRLZXlzID0gIUtleVV0aWwuaXNLZXlUeXBlKGV2ZW50LCAnYWxwaGFiZXRpY2FsJykgJiYgIUtleVV0aWwuaXNLZXlUeXBlKGV2ZW50LCAnbnVtZXJpYycpO1xuICAgICAgICAgICAgaWYgKGFjY2VwdGVkS2V5cykge1xuICAgICAgICAgICAgICAgIC8vIFNldFRpbWVvdXQgaXMgbmVlZGVkIGZvciBpbnB1dCB0byByZWNlaXZlIG5ldyB2YWx1ZS5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNFbXB0eVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RDb21wb25lbnQ/LnNldEl0ZW1BY3RpdmUoMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgcGFzc2VkIHRvIGxpc3QgY29tcG9uZW50ICovXG4gICAgaGFuZGxlTGlzdEZvY3VzRXNjYXBlKGRpcmVjdGlvbjogRm9jdXNFc2NhcGVEaXJlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3VwJykge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdG8gZW1pdCBjaGFuZ2UgZXZlbnRcbiAgICAgKi9cbiAgICBfZW1pdENoYW5nZUV2ZW50KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBNdWx0aUNvbWJvYm94U2VsZWN0aW9uQ2hhbmdlRXZlbnQodGhpcywgdGhpcy52YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIGEgY29udHJvbC5cbiAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIGJlIGFwcGxpZWRcbiAgICAgKiBAcGFyYW0gZW1pdE9uQ2hhbmdlIHdoZXRoZXIgdG8gZW1pdCBcIm9uQ2hhbmdlXCIgZXZlbnQuXG4gICAgICogU2hvdWxkIGJlIFwiZmFsc2VcIiwgaWYgdGhlIGNoYW5nZSBpcyBtYWRlIHByb2dyYW1tYXRpY2FsbHkgKGludGVybmFsbHkpIGJ5IHRoZSBjb250cm9sLCBcInRydWVcIiBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2V0VmFsdWUodmFsdWU6IGFueSwgZW1pdE9uQ2hhbmdlID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBjb2VyY2VBcnJheVNhZmUodmFsdWUpO1xuICAgICAgICBzdXBlci5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMsIGVtaXRPbkNoYW5nZSk7XG4gICAgICAgIHRoaXMuX3NldFNlbGVjdGVkU3VnZ2VzdGlvbnMoKTtcbiAgICAgICAgdGhpcy5fZW1pdENoYW5nZUV2ZW50KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX3NldFNlbGVjdGVkU3VnZ2VzdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMgPSBbXTtcblxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZEl0ZW1zW2ldO1xuICAgICAgICAgICAgY29uc3QgZmluZGVyID0gKGl0ZW06IFNlbGVjdGFibGVPcHRpb25JdGVtKTogYm9vbGVhbiA9PlxuICAgICAgICAgICAgICAgIGl0ZW0ubGFiZWwgPT09IHNlbGVjdGVkSXRlbSB8fCBpdGVtLnZhbHVlID09PSBzZWxlY3RlZEl0ZW07XG4gICAgICAgICAgICBjb25zdCBpZEZyb21GdWxsRmxhdFN1Z2dlc3Rpb25zID0gdGhpcy5fZnVsbEZsYXRTdWdnZXN0aW9ucy5maW5kSW5kZXgoZmluZGVyKTtcbiAgICAgICAgICAgIGNvbnN0IGlkRnJvbVN1Z2dlc3Rpb25zID0gKHRoaXMuX3N1Z2dlc3Rpb25zIHx8IFtdKS5maW5kSW5kZXgoZmluZGVyKTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IE1hdGgubWF4KGlkRnJvbUZ1bGxGbGF0U3VnZ2VzdGlvbnMsIGlkRnJvbVN1Z2dlc3Rpb25zKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBpZEZyb21GdWxsRmxhdFN1Z2dlc3Rpb25zICE9PSAtMSA/IHRoaXMuX2Z1bGxGbGF0U3VnZ2VzdGlvbnMgOiB0aGlzLl9zdWdnZXN0aW9ucztcbiAgICAgICAgICAgIGlmIChpZEZyb21GdWxsRmxhdFN1Z2dlc3Rpb25zID09PSAtMSAmJiBpZEZyb21TdWdnZXN0aW9ucyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jb252ZXJ0VG9PcHRpb25JdGVtcyhbc2VsZWN0ZWRJdGVtXSkuZm9yRWFjaCgob3B0aW9uSXRlbTogU2VsZWN0YWJsZU9wdGlvbkl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uSXRlbS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMucHVzaChvcHRpb25JdGVtKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbnMgJiZcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uID09PSB0aGlzLl9zdWdnZXN0aW9ucyAmJlxuICAgICAgICAgICAgICAgICF0aGlzLl9mdWxsRmxhdFN1Z2dlc3Rpb25zLmluY2x1ZGVzKGNvbGxlY3Rpb25baXRlbUluZGV4XSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Z1bGxGbGF0U3VnZ2VzdGlvbnMucHVzaChjb2xsZWN0aW9uW2l0ZW1JbmRleF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW1JbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5wdXNoKGNvbGxlY3Rpb25baXRlbUluZGV4XSk7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbltpdGVtSW5kZXhdLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBnZXQgZHMoKTogTXVsdGlDb21ib0JveERhdGFTb3VyY2U8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UgYXMgTXVsdGlDb21ib0JveERhdGFTb3VyY2U8YW55PjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZm9jdXNUb1NlYXJjaEZpZWxkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogTWV0aG9kIHRoYXQgcGlja3Mgb3RoZXIgdmFsdWUgbW92ZWQgZnJvbSBjdXJyZW50IG9uZSBieSBvZmZzZXQsIGNhbGxlZCBvbmx5IHdoZW4gTXVsdGkgQ29tYm9ib3ggaXMgY2xvc2VkICovXG4gICAgcHJpdmF0ZSBfY2hvb3NlT3RoZXJJdGVtKG9mZnNldDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zPy5sZW5ndGggPT09IHRoaXMuX2ZsYXRTdWdnZXN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gJyc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhY3RpdmVWYWx1ZSA9IHRoaXMuX2dldFNlbGVjdEl0ZW1CeUlucHV0VmFsdWUodGhpcy5pbnB1dFRleHQpO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX2ZsYXRTdWdnZXN0aW9ucy5maW5kSW5kZXgoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gYWN0aXZlVmFsdWUpO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9ICF0aGlzLmlucHV0VGV4dCAmJiBvZmZzZXQgPT09IC0xID8gdGhpcy5fZmxhdFN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEgOiBpbmRleCArIG9mZnNldDtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuX2ZsYXRTdWdnZXN0aW9uc1twb3NpdGlvbl07XG5cbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0SW5wdXRUZXh0RnJvbU9wdGlvbkl0ZW0oaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5maW5kSW5kZXgoKHZhbHVlKSA9PiB2YWx1ZS5sYWJlbCA9PT0gaXRlbT8ubGFiZWwpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuX2Nob29zZU90aGVySXRlbShvZmZzZXQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2dldFNlbGVjdEl0ZW1CeUlucHV0VmFsdWUoZGlzcGxheVZhbHVlOiBzdHJpbmcpOiBTZWxlY3RhYmxlT3B0aW9uSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mbGF0U3VnZ2VzdGlvbnMuZmluZCgodmFsdWUpID0+IHZhbHVlLmxhYmVsID09PSBkaXNwbGF5VmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogIE1hcCBncm91cGVkIHZhbHVlcyB0byBhcnJheS4gKi9cbiAgICBwcm90ZWN0ZWQgX2ZsYXR0ZW5Hcm91cHMoaXRlbXM6IFNlbGVjdGFibGVPcHRpb25JdGVtW10pOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLnJlZHVjZSgocmVzdWx0LCBpdGVtKSA9PiByZXN1bHQuY29uY2F0KGl0ZW0uY2hpbGRyZW4gPz8gW10pLCA8U2VsZWN0YWJsZU9wdGlvbkl0ZW1bXT5bXSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplRGF0YVNvdXJjZShkczogRmRwTXVsdGlDb21ib2JveERhdGFTb3VyY2U8YW55Pik6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWdnZXN0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLl9mbGF0U3VnZ2VzdGlvbnMgPSBbXTtcblxuICAgICAgICBpZiAoaXNEYXRhU291cmNlKHRoaXMuZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAgICh0aGlzLmRhdGFTb3VyY2UgYXMgTXVsdGlDb21ib0JveERhdGFTb3VyY2U8YW55PikuY2xvc2UoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2RzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ29udmVydCB3aGF0ZXZlciBjb21lcyBpbiBhcyBEYXRhU291cmNlIHNvIHdlIGNhbiB3b3JrIHdpdGggaXQgaWRlbnRpY2FsbHlcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZSA9IHRoaXMuX29wZW5EYXRhU3RyZWFtKGRzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29wZW5EYXRhU3RyZWFtKGRzOiBGZHBNdWx0aUNvbWJvYm94RGF0YVNvdXJjZTxhbnk+KTogTXVsdGlDb21ib0JveERhdGFTb3VyY2U8YW55PiB7XG4gICAgICAgIGNvbnN0IGluaXREYXRhU291cmNlID0gdGhpcy5fdG9EYXRhU3RyZWFtKGRzKTtcbiAgICAgICAgbGV0IGlzSW5pdERhdGFTb3VyY2UgPSB0cnVlO1xuXG4gICAgICAgIGlmIChpbml0RGF0YVNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtkYXRhU291cmNlXSBzb3VyY2UgZGlkIG5vdCBtYXRjaCBhbiBhcnJheSwgT2JzZXJ2YWJsZSwgb3IgRGF0YVNvdXJjZWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5pdERhdGFTb3VyY2UubGltaXRsZXNzID0gdGhpcy5saW1pdGxlc3M7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoaXMgaXMgc2luZ2xlIHBvaW50IG9mIGRhdGEgZW50cnkgdG8gdGhlIGNvbXBvbmVudC4gV2UgZG9udCB3YW50IHRvIHNldCBkYXRhIG9uIGRpZmZlcmVudFxuICAgICAgICAgKiBwbGFjZXMuIElmIGFueSBuZXcgZGF0YSBjb21lcyBpbiBlaXRoZXIgeW91IGRvIGEgc2VhcmNoIGFuZCB5b3Ugd2FudCB0byBwYXNzIGluaXRpYWwgZGF0YVxuICAgICAgICAgKiBpdHMgaGVyZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgICAgICBjb25zdCBkc1N1YiA9IGluaXREYXRhU291cmNlXG4gICAgICAgICAgICAub3BlbigpXG4gICAgICAgICAgICAucGlwZShza2lwKDEpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc2luZ0VtcHR5RGF0YSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wcmV2aW91c0lucHV0VGV4dCA9IHRoaXMuaW5wdXRUZXh0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zID0gdGhpcy5fY29udmVydFRvT3B0aW9uSXRlbXMoZGF0YSkubWFwKChvcHRpb25JdGVtOiBTZWxlY3RhYmxlT3B0aW9uSXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRJdGVtOiBTZWxlY3RhYmxlT3B0aW9uSXRlbSkgPT4gc2VsZWN0ZWRJdGVtLmlkID09PSBvcHRpb25JdGVtLmlkXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkl0ZW0uc2VsZWN0ZWQgPSBzZWxlY3RlZEVsZW1lbnQuc2VsZWN0ZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbkl0ZW07XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9mbGF0U3VnZ2VzdGlvbnMgPSB0aGlzLmlzR3JvdXAgPyB0aGlzLl9mbGF0dGVuR3JvdXBzKHRoaXMuX3N1Z2dlc3Rpb25zKSA6IHRoaXMuX3N1Z2dlc3Rpb25zO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzSW5pdERhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZnVsbEZsYXRTdWdnZXN0aW9ucyA9IHRoaXMuX2ZsYXRTdWdnZXN0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgaXNJbml0RGF0YVNvdXJjZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkU3VnZ2VzdGlvbnNMZW5ndGggPSB0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRTdWdnZXN0aW9uc0xlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3RlZFN1Z2dlc3Rpb25zTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkU3VnZ2VzdGlvbiA9IHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9zdWdnZXN0aW9ucy5maW5kSW5kZXgoKGl0ZW0pID0+IGVxdWFsKGl0ZW0udmFsdWUsIHNlbGVjdGVkU3VnZ2VzdGlvbi52YWx1ZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zW2lkeF0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgnaW5pdERhdGFTb3VyY2Uub3BlbigpLicpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fZHNTdWJzY3JpcHRpb24uYWRkKGRzU3ViKTtcblxuICAgICAgICB0aGlzLl9kc1N1YnNjcmlwdGlvbi5hZGQoaW5pdERhdGFTb3VyY2Uub25EYXRhUmVxdWVzdGVkKCkuc3Vic2NyaWJlKHRoaXMub25EYXRhUmVxdWVzdGVkKSk7XG4gICAgICAgIHRoaXMuX2RzU3Vic2NyaXB0aW9uLmFkZChpbml0RGF0YVNvdXJjZS5vbkRhdGFSZWNlaXZlZCgpLnN1YnNjcmliZSh0aGlzLm9uRGF0YVJlY2VpdmVkKSk7XG5cbiAgICAgICAgaW5pdERhdGFTb3VyY2UuZGF0YVByb3ZpZGVyLnNldExvb2t1cEtleSh0aGlzLmxvb2t1cEtleSk7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nQnk6IE1hdGNoaW5nQnkgPSB7XG4gICAgICAgICAgICBmaXJzdEJ5OiB0aGlzLl9kaXNwbGF5Rm5cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5zZWNvbmRhcnlLZXkpIHtcbiAgICAgICAgICAgIG1hdGNoaW5nQnkuc2Vjb25kYXJ5QnkgPSB0aGlzLl9zZWNvbmRhcnlGbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGluaXREYXRhU291cmNlLmRhdGFQcm92aWRlci5zZXRNYXRjaGluZ0J5KG1hdGNoaW5nQnkpO1xuICAgICAgICBpbml0RGF0YVNvdXJjZS5kYXRhUHJvdmlkZXIuc2V0TWF0Y2hpbmdTdHJhdGVneSh0aGlzLl9tYXRjaGluZ1N0cmF0ZWd5KTtcblxuICAgICAgICAvLyBpbml0aWFsIGRhdGEgZmV0Y2hcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBtYXAuc2V0KCdxdWVyeScsICcqJyk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmxpbWl0bGVzcykge1xuICAgICAgICAgICAgbWFwLnNldCgnbGltaXQnLCBNQVBfTElNSVQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5pdERhdGFTb3VyY2UubWF0Y2gobWFwKTtcblxuICAgICAgICByZXR1cm4gaW5pdERhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcm9jZXNzaW5nRW1wdHlEYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLl9wcmV2aW91c0lucHV0VGV4dDtcblxuICAgICAgICB0aGlzLl9zZXRJbnZhbGlkRW50cnkoKTtcblxuICAgICAgICBpZiAodGhpcy5fdGltZXJTdWIkKSB7XG4gICAgICAgICAgICB0aGlzLl90aW1lclN1YiQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3RpbWVyU3ViJCA9IHRpbWVyKDMwMDApLnN1YnNjcmliZSgoKSA9PiB0aGlzLl91bnNldEludmFsaWRFbnRyeSgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEludmFsaWRFbnRyeSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3ByZXZpb3VzU3RhdGUgfHwgdGhpcy5fcHJldmlvdXNTdGF0ZU1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3ByZXZpb3VzU3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2Vycm9yJztcblxuICAgICAgICB0aGlzLl9wcmV2aW91c1N0YXRlTWVzc2FnZSA9IHRoaXMuc3RhdGVNZXNzYWdlO1xuICAgICAgICB0aGlzLnN0YXRlTWVzc2FnZSA9IHRoaXMuaW52YWxpZEVudHJ5TWVzc2FnZTtcblxuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Vuc2V0SW52YWxpZEVudHJ5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5fcHJldmlvdXNTdGF0ZTtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNTdGF0ZSA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0aGlzLnN0YXRlTWVzc2FnZSA9IHRoaXMuX3ByZXZpb3VzU3RhdGVNZXNzYWdlO1xuICAgICAgICB0aGlzLl9wcmV2aW91c1N0YXRlTWVzc2FnZSA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RvRGF0YVN0cmVhbShzb3VyY2U6IEZkcE11bHRpQ29tYm9ib3hEYXRhU291cmNlPGFueT4pOiBNdWx0aUNvbWJvQm94RGF0YVNvdXJjZTxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKGlzRGF0YVNvdXJjZShzb3VyY2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gc291cmNlIGFzIE11bHRpQ29tYm9Cb3hEYXRhU291cmNlPGFueT47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5TXVsdGlDb21ib0JveERhdGFTb3VyY2U8YW55Pihzb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShzb3VyY2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGVNdWx0aUNvbWJvQm94RGF0YVNvdXJjZTxhbnk+KHNvdXJjZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdFdpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZ2V0T3B0aW9uc0xpc3RXaWR0aCgpO1xuXG4gICAgICAgIGlmICghdGhpcy5hdXRvUmVzaXplKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9nZXRPcHRpb25zTGlzdFdpZHRoKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0T3B0aW9uc0xpc3RXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG4gICAgICAgIGNvbnN0IHJlY3QgPSAodGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKCdmZC1pbnB1dC1ncm91cCcpIGFzIEhUTUxFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgc2Nyb2xsQmFyV2lkdGggPSBib2R5Lm9mZnNldFdpZHRoIC0gYm9keS5jbGllbnRXaWR0aDtcbiAgICAgICAgdGhpcy5tYXhXaWR0aCA9IHRoaXMuYXV0b1Jlc2l6ZSA/IHdpbmRvdy5pbm5lcldpZHRoIC0gc2Nyb2xsQmFyV2lkdGggLSByZWN0LmxlZnQgOiB0aGlzLm1pbldpZHRoO1xuICAgICAgICB0aGlzLm1pbldpZHRoID0gcmVjdC53aWR0aCAtIDI7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgb3JpZ2luYWwgZGF0YSB0byBTZWxlY3RhYmxlT3B0aW9uSXRlbXMgSW50ZXJmYWNlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRUb09wdGlvbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IFNlbGVjdGFibGVPcHRpb25JdGVtW10ge1xuICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbMF07XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc09wdGlvbkl0ZW0gPSBpc1NlbGVjdGFibGVPcHRpb25JdGVtKGl0ZW0pO1xuICAgICAgICBpZiAoZWxlbWVudFR5cGVJc09wdGlvbkl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcyBhcyBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudFR5cGVJc09iamVjdCA9IGlzSnNPYmplY3QoaXRlbSk7XG4gICAgICAgIGlmIChlbGVtZW50VHlwZUlzT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb09wdGlvbkl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRUeXBlSXNTdHJpbmcgPSBpc1N0cmluZyhpdGVtKTtcbiAgICAgICAgaWYgKGVsZW1lbnRUeXBlSXNTdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0UHJpbWl0aXZlVG9PcHRpb25JdGVtcyhpdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBkYXRhIHRvIFNlbGVjdGFibGVPcHRpb25JdGVtcyBJbnRlcmZhY2VcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29udmVydE9iamVjdHNUb09wdGlvbkl0ZW1zKGl0ZW1zOiBhbnlbXSk6IFNlbGVjdGFibGVPcHRpb25JdGVtW10ge1xuICAgICAgICBpZiAodGhpcy5pc0dyb3VwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udmVydE9iamVjdHNUb0dyb3VwT3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2hvd1NlY29uZGFyeVRleHQgJiYgdGhpcy5zZWNvbmRhcnlLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvU2Vjb25kYXJ5T3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoaXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBvYmplY3RbXSBkYXRhIHRvIEdyb3VwIE9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2NvbnZlcnRPYmplY3RzVG9Hcm91cE9wdGlvbkl0ZW1zPEs+KGl0ZW1zOiBLW10pOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdIHtcbiAgICAgICAgY29uc3QgZ3JvdXA6IHsgW2tleTogc3RyaW5nXTogS1tdIH0gPSB7fTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaV07XG4gICAgICAgICAgICBjb25zdCBrZXlWYWx1ZSA9IGl0ZW1bdGhpcy5ncm91cEtleV07XG4gICAgICAgICAgICBpZiAoIWtleVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZ3JvdXBba2V5VmFsdWVdKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBba2V5VmFsdWVdID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdyb3VwW2tleVZhbHVlXS5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGdyb3VwKS5tYXAoKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0SXRlbTogU2VsZWN0YWJsZU9wdGlvbkl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICBpc0dyb3VwOiB0cnVlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50R3JvdXAgPSBncm91cFtrZXldO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zaG93U2Vjb25kYXJ5VGV4dCAmJiB0aGlzLnNlY29uZGFyeUtleSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdEl0ZW0uY2hpbGRyZW4gPSB0aGlzLl9jb252ZXJ0T2JqZWN0c1RvU2Vjb25kYXJ5T3B0aW9uSXRlbXMoY3VycmVudEdyb3VwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0SXRlbS5jaGlsZHJlbiA9IHRoaXMuX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoY3VycmVudEdyb3VwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdEl0ZW07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgb2JqZWN0W10gZGF0YSB0byBTZWNvbmRhcnkgU2VsZWN0YWJsZU9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0T2JqZWN0c1RvU2Vjb25kYXJ5T3B0aW9uSXRlbXM8Sz4oaXRlbXM6IEtbXSk6IFNlbGVjdGFibGVPcHRpb25JdGVtW10ge1xuICAgICAgICBjb25zdCBzZWxlY3RJdGVtczogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbXNbaV07XG4gICAgICAgICAgICBzZWxlY3RJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5kaXNwbGF5VmFsdWUodmFsdWUpLFxuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmxvb2t1cFZhbHVlKHZhbHVlKSxcbiAgICAgICAgICAgICAgICBzZWNvbmRhcnlUZXh0OiB0aGlzLm9iamVjdEdldCh2YWx1ZSwgdGhpcy5zZWNvbmRhcnlLZXkpLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkSXRlbXM/LmluY2x1ZGVzKHZhbHVlKSB8fCBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0SXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBQcmltaXRpdmUgZGF0YShCb29sZWFuLCBTdHJpbmcsIE51bWJlcikgdG8gU2VsZWN0YWJsZU9wdGlvbkl0ZW1zIEludGVyZmFjZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb252ZXJ0UHJpbWl0aXZlVG9PcHRpb25JdGVtcyhpdGVtczogYW55W10pOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0SXRlbXM6IFNlbGVjdGFibGVPcHRpb25JdGVtW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5sb29rdXBWYWx1ZSh2YWx1ZSksXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRJdGVtcz8uaW5jbHVkZXModmFsdWUpIHx8IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RJdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IG9iamVjdFtdIHRvIFNlbGVjdGFibGVPcHRpb25JdGVtcyBJbnRlcmZhY2UgKERlZmF1bHQpXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnZlcnRPYmplY3RzVG9EZWZhdWx0T3B0aW9uSXRlbXMoaXRlbXM6IGFueVtdKTogU2VsZWN0YWJsZU9wdGlvbkl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEl0ZW1zOiBTZWxlY3RhYmxlT3B0aW9uSXRlbVtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcbiAgICAgICAgICAgIHNlbGVjdEl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmRpc3BsYXlWYWx1ZSh2YWx1ZSksXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMubG9va3VwVmFsdWUodmFsdWUpLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkSXRlbXM/LmluY2x1ZGVzKHZhbHVlKSB8fCBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0SXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEFzc2lnbiBjdXN0b20gdGVtcGxhdGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYXNzaWduQ3VzdG9tVGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlcy5mb3JFYWNoKCh0ZW1wbGF0ZSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoICh0ZW1wbGF0ZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnb3B0aW9uSXRlbVRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25JdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZ3JvdXBJdGVtVGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3VwSXRlbVRlbXBsYXRlID0gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NlY29uZGFyeUl0ZW1UZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vjb25kYXJ5SXRlbVRlbXBsYXRlID0gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3NlbGVjdGVkSXRlbVRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1UZW1wbGF0ZSA9IHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19