@fundamental-ngx/platform 0.47.4 → 0.48.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/esm2022/action-bar/action-bar.component.mjs +8 -9
  2. package/esm2022/action-bar/action-bar.module.mjs +4 -4
  3. package/esm2022/action-button-group/action-button-group.component.mjs +4 -4
  4. package/esm2022/action-button-group/action-button-group.module.mjs +4 -4
  5. package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +6 -11
  6. package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +6 -8
  7. package/esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +5 -6
  8. package/esm2022/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.mjs +5 -5
  9. package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +8 -11
  10. package/esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +6 -8
  11. package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +5 -7
  12. package/esm2022/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.mjs +5 -6
  13. package/esm2022/approval-flow/approval-flow-user-details/approval-flow-user-details.component.mjs +6 -6
  14. package/esm2022/approval-flow/approval-flow-user-list/approval-flow-user-list.component.mjs +6 -7
  15. package/esm2022/approval-flow/approval-flow.component.mjs +8 -10
  16. package/esm2022/approval-flow/approval-flow.module.mjs +4 -4
  17. package/esm2022/approval-flow/services/approval-flow-add-node-view.service.mjs +3 -3
  18. package/esm2022/button/button.component.mjs +5 -5
  19. package/esm2022/button/button.module.mjs +4 -4
  20. package/esm2022/dynamic-page/directives/dynamic-page-header-subtitle.directive.mjs +3 -3
  21. package/esm2022/dynamic-page/directives/dynamic-page-header-title.directive.mjs +3 -3
  22. package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content-host.component.mjs +5 -5
  23. package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +5 -5
  24. package/esm2022/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +3 -3
  25. package/esm2022/dynamic-page/dynamic-page-header/actions/global-actions/dynamic-page-global-actions.component.mjs +3 -3
  26. package/esm2022/dynamic-page/dynamic-page-header/actions/layout-actions/dynamic-page-layout-actions.component.mjs +3 -3
  27. package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +4 -4
  28. package/esm2022/dynamic-page/dynamic-page-header/key-info/dynamic-page-key-info.component.mjs +3 -3
  29. package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title-image.component.mjs +3 -3
  30. package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title.component.mjs +3 -3
  31. package/esm2022/dynamic-page/dynamic-page.component.mjs +8 -10
  32. package/esm2022/dynamic-page/dynamic-page.config.mjs +4 -4
  33. package/esm2022/dynamic-page/dynamic-page.module.mjs +4 -4
  34. package/esm2022/dynamic-page/dynamic-page.service.mjs +3 -3
  35. package/esm2022/feed-input/feed-input.component.mjs +6 -7
  36. package/esm2022/feed-input/feed-input.module.mjs +4 -4
  37. package/esm2022/form/auto-complete/auto-complete.directive.mjs +5 -5
  38. package/esm2022/form/auto-complete/auto-complete.module.mjs +4 -4
  39. package/esm2022/form/checkbox/checkbox.component.mjs +6 -6
  40. package/esm2022/form/checkbox/checkbox.module.mjs +4 -4
  41. package/esm2022/form/checkbox-group/checkbox-group.component.mjs +8 -8
  42. package/esm2022/form/checkbox-group/checkbox-group.module.mjs +4 -4
  43. package/esm2022/form/combobox/combobox/combobox.component.mjs +9 -11
  44. package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +13 -15
  45. package/esm2022/form/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
  46. package/esm2022/form/combobox/combobox.config.mjs +4 -4
  47. package/esm2022/form/combobox/combobox.module.mjs +4 -4
  48. package/esm2022/form/combobox/commons/base-combobox.mjs +8 -6
  49. package/esm2022/form/combobox/directives/combobox-item.directive.mjs +15 -15
  50. package/esm2022/form/date-picker/date-picker.component.mjs +6 -6
  51. package/esm2022/form/date-picker/date-picker.module.mjs +4 -4
  52. package/esm2022/form/datetime-picker/datetime-picker.component.mjs +6 -6
  53. package/esm2022/form/datetime-picker/datetime-picker.module.mjs +4 -4
  54. package/esm2022/form/form-generator/base-dynamic-form-generator-control.mjs +3 -3
  55. package/esm2022/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.mjs +4 -4
  56. package/esm2022/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +4 -4
  57. package/esm2022/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.mjs +4 -4
  58. package/esm2022/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.mjs +6 -7
  59. package/esm2022/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +4 -4
  60. package/esm2022/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.mjs +3 -3
  61. package/esm2022/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.mjs +4 -4
  62. package/esm2022/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +4 -4
  63. package/esm2022/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +4 -4
  64. package/esm2022/form/form-generator/dynamic-form-control-field.directive.mjs +5 -5
  65. package/esm2022/form/form-generator/dynamic-form-control.directive.mjs +6 -6
  66. package/esm2022/form/form-generator/fdp-form-generator.module.mjs +4 -4
  67. package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +9 -11
  68. package/esm2022/form/form-generator/form-generator-components-accessor.service.mjs +3 -3
  69. package/esm2022/form/form-generator/form-generator-field/form-generator-field.component.mjs +7 -8
  70. package/esm2022/form/form-generator/form-generator.service.mjs +5 -5
  71. package/esm2022/form/form-generator/pipes/get-hint-options.pipe.mjs +5 -5
  72. package/esm2022/form/form-generator/pipes/get-ordered-form-controls.pipe.mjs +3 -3
  73. package/esm2022/form/form-group/fdp-form.module.mjs +4 -4
  74. package/esm2022/form/form-group/form-field/form-field.component.mjs +10 -10
  75. package/esm2022/form/form-group/form-field-error/form-field-error-description.directive.mjs +6 -6
  76. package/esm2022/form/form-group/form-field-error/form-field-error-heading.directive.mjs +6 -6
  77. package/esm2022/form/form-group/form-field-error/form-field-error.directive.mjs +5 -5
  78. package/esm2022/form/form-group/form-field-extras/form-field-extras.component.mjs +3 -3
  79. package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +6 -6
  80. package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +6 -6
  81. package/esm2022/form/form-group/form-group.component.mjs +8 -10
  82. package/esm2022/form/form-group/pipes/field-group-row-value.pipe.mjs +3 -3
  83. package/esm2022/form/form-group/services/form-field-layout.service.mjs +5 -5
  84. package/esm2022/form/input/fdp-input.module.mjs +4 -4
  85. package/esm2022/form/input/input.component.mjs +6 -6
  86. package/esm2022/form/input-group/addon-body.component.mjs +5 -5
  87. package/esm2022/form/input-group/addon.component.mjs +5 -5
  88. package/esm2022/form/input-group/input-group.component.mjs +12 -12
  89. package/esm2022/form/input-group/input-group.config.mjs +4 -4
  90. package/esm2022/form/input-group/input-group.module.mjs +4 -4
  91. package/esm2022/form/input-group/input.component.mjs +3 -3
  92. package/esm2022/form/input-message-group-with-template/input-message-group-with-template.component.mjs +7 -7
  93. package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +6 -6
  94. package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +10 -12
  95. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +8 -9
  96. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.mjs +4 -4
  97. package/esm2022/form/multi-combobox/multi-combobox.config.mjs +4 -4
  98. package/esm2022/form/multi-combobox/multi-combobox.module.mjs +4 -4
  99. package/esm2022/form/multi-input/base-multi-input.mjs +6 -6
  100. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +12 -12
  101. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
  102. package/esm2022/form/multi-input/multi-input.component.mjs +9 -11
  103. package/esm2022/form/multi-input/multi-input.config.mjs +4 -4
  104. package/esm2022/form/multi-input/multi-input.module.mjs +4 -4
  105. package/esm2022/form/platform-file-uploader/platform-file-uploader.component.mjs +6 -6
  106. package/esm2022/form/platform-file-uploader/platform-file-uploader.module.mjs +4 -4
  107. package/esm2022/form/radio-group/radio/radio.component.mjs +8 -8
  108. package/esm2022/form/radio-group/radio-group.component.mjs +8 -8
  109. package/esm2022/form/radio-group/radio-group.module.mjs +4 -4
  110. package/esm2022/form/select/commons/base-select.mjs +6 -6
  111. package/esm2022/form/select/select/select.component.mjs +8 -8
  112. package/esm2022/form/select/select.config.mjs +4 -4
  113. package/esm2022/form/select/select.module.mjs +4 -4
  114. package/esm2022/form/step-input/base.step-input.mjs +5 -5
  115. package/esm2022/form/step-input/number/number-step-input.component.mjs +9 -10
  116. package/esm2022/form/step-input/step-input-action-button.mjs +3 -3
  117. package/esm2022/form/step-input/step-input-control.directive.mjs +6 -6
  118. package/esm2022/form/step-input/step-input-decrement.directive.mjs +5 -5
  119. package/esm2022/form/step-input/step-input-increment.directive.mjs +5 -5
  120. package/esm2022/form/step-input/step-input.config.mjs +3 -3
  121. package/esm2022/form/step-input/step-input.module.mjs +4 -4
  122. package/esm2022/form/switch/switch/switch.component.mjs +6 -6
  123. package/esm2022/form/switch/switch/switch.config.mjs +3 -3
  124. package/esm2022/form/switch/switch.module.mjs +4 -4
  125. package/esm2022/form/text-area/text-area.component.mjs +8 -9
  126. package/esm2022/form/text-area/text-area.config.mjs +3 -3
  127. package/esm2022/form/text-area/text-area.module.mjs +4 -4
  128. package/esm2022/form/time-picker/time-picker.component.mjs +6 -6
  129. package/esm2022/form/time-picker/time-picker.module.mjs +4 -4
  130. package/esm2022/fundamental-ngx.module.mjs +5 -5
  131. package/esm2022/icon-tab-bar/components/closable-icon-tab-bar.class.mjs +3 -3
  132. package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +5 -9
  133. package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +6 -8
  134. package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +6 -8
  135. package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +5 -8
  136. package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +7 -9
  137. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +6 -15
  138. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.mjs +5 -9
  139. package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +6 -8
  140. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +5 -5
  141. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +5 -5
  142. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +5 -5
  143. package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +8 -9
  144. package/esm2022/icon-tab-bar/icon-tab-bar.module.mjs +4 -4
  145. package/esm2022/info-label/info-label.component.mjs +5 -5
  146. package/esm2022/info-label/info-label.module.mjs +4 -4
  147. package/esm2022/link/link.component.mjs +5 -5
  148. package/esm2022/link/link.module.mjs +4 -4
  149. package/esm2022/list/action-list-item/action-list-item.component.mjs +3 -3
  150. package/esm2022/list/action-list-item/action-list-item.module.mjs +4 -4
  151. package/esm2022/list/base-list-item.mjs +11 -11
  152. package/esm2022/list/display-list-item/display-list-item.component.mjs +6 -7
  153. package/esm2022/list/display-list-item/display-list-item.module.mjs +4 -4
  154. package/esm2022/list/free-content-list-item/free-content-list-item.component.mjs +4 -4
  155. package/esm2022/list/list-group-footer.component.mjs +3 -3
  156. package/esm2022/list/list-group-header.component.mjs +3 -3
  157. package/esm2022/list/list.component.mjs +9 -11
  158. package/esm2022/list/list.config.mjs +3 -3
  159. package/esm2022/list/list.module.mjs +4 -4
  160. package/esm2022/list/load-more-content.directive.mjs +4 -4
  161. package/esm2022/list/object-list-item/object-list-item-row.component.mjs +4 -4
  162. package/esm2022/list/object-list-item/object-list-item.component.mjs +6 -7
  163. package/esm2022/list/object-list-item/object-list-item.module.mjs +4 -4
  164. package/esm2022/list/standard-list-item/standard-list-item.component.mjs +6 -7
  165. package/esm2022/list/standard-list-item/standard-list-item.module.mjs +4 -4
  166. package/esm2022/menu/menu-item.component.mjs +7 -7
  167. package/esm2022/menu/menu-trigger.directive.mjs +6 -6
  168. package/esm2022/menu/menu.component.mjs +6 -6
  169. package/esm2022/menu/menu.module.mjs +4 -4
  170. package/esm2022/menu-button/menu-button.component.mjs +5 -5
  171. package/esm2022/menu-button/menu-button.module.mjs +4 -4
  172. package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +6 -6
  173. package/esm2022/message-popover/components/message-view/message-view.component.mjs +8 -10
  174. package/esm2022/message-popover/directives/message-popover-form-item.directive.mjs +6 -6
  175. package/esm2022/message-popover/message-popover.component.mjs +7 -9
  176. package/esm2022/message-popover/platform-message-popover.module.mjs +4 -4
  177. package/esm2022/object-marker/object-marker.component.mjs +6 -7
  178. package/esm2022/object-marker/object-marker.module.mjs +4 -4
  179. package/esm2022/object-status/object-status.component.mjs +8 -8
  180. package/esm2022/object-status/object-status.module.mjs +4 -4
  181. package/esm2022/page-footer/page-footer.component.mjs +6 -6
  182. package/esm2022/page-footer/page-footer.module.mjs +4 -4
  183. package/esm2022/panel/panel-actions.component.mjs +3 -3
  184. package/esm2022/panel/panel-content/panel-content.component.mjs +4 -4
  185. package/esm2022/panel/panel.component.mjs +5 -5
  186. package/esm2022/panel/panel.config.mjs +4 -4
  187. package/esm2022/panel/panel.module.mjs +4 -4
  188. package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +8 -9
  189. package/esm2022/search-field/search-field-mobile/search-field-mobile.module.mjs +4 -4
  190. package/esm2022/search-field/search-field.component.mjs +16 -18
  191. package/esm2022/search-field/search-field.module.mjs +4 -4
  192. package/esm2022/settings-generator/controls/theme-selector-list/theme-selector-list.component.mjs +9 -16
  193. package/esm2022/settings-generator/layouts/base-settings-generator-layout.mjs +3 -3
  194. package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +5 -6
  195. package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +6 -9
  196. package/esm2022/settings-generator/settings-generator-content/settings-generator-content.component.mjs +6 -8
  197. package/esm2022/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.mjs +7 -7
  198. package/esm2022/settings-generator/settings-generator-layout-accessor.service.mjs +3 -3
  199. package/esm2022/settings-generator/settings-generator.component.mjs +9 -9
  200. package/esm2022/settings-generator/settings-generator.module.mjs +4 -4
  201. package/esm2022/settings-generator/settings-generator.service.mjs +4 -4
  202. package/esm2022/shared/base.mjs +5 -5
  203. package/esm2022/shared/form/base.input.mjs +6 -6
  204. package/esm2022/shared/form/collection-base.input.mjs +6 -6
  205. package/esm2022/shared/form/inline-layout-collection-base.input.mjs +13 -13
  206. package/esm2022/shared/pipes/convert-bytes/convert-bytes.pipe.mjs +3 -3
  207. package/esm2022/shared/pipes/pipe.module.mjs +4 -4
  208. package/esm2022/shared/platform.config.mjs +3 -3
  209. package/esm2022/slider/slider.component.mjs +6 -6
  210. package/esm2022/slider/slider.module.mjs +4 -4
  211. package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.mjs +4 -4
  212. package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +4 -4
  213. package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +6 -9
  214. package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +7 -9
  215. package/esm2022/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.mjs +3 -3
  216. package/esm2022/smart-filter-bar/directives/smart-filter-bar-subject.directive.mjs +5 -5
  217. package/esm2022/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.mjs +4 -4
  218. package/esm2022/smart-filter-bar/smart-filter-bar.class.mjs +3 -3
  219. package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +8 -10
  220. package/esm2022/smart-filter-bar/smart-filter-bar.module.mjs +4 -4
  221. package/esm2022/smart-filter-bar/smart-filter-bar.service.mjs +4 -4
  222. package/esm2022/split-menu-button/split-menu-button.component.mjs +6 -6
  223. package/esm2022/split-menu-button/split-menu-button.module.mjs +4 -4
  224. package/esm2022/table/components/no-data-wrapper/no-data-wrapper.component.mjs +3 -3
  225. package/esm2022/table/components/reset-button/reset-button.component.mjs +5 -5
  226. package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +6 -8
  227. package/esm2022/table/components/table-column/table-column.component.mjs +6 -6
  228. package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +6 -6
  229. package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +5 -15
  230. package/esm2022/table/components/table-group-row/table-group-row.component.mjs +7 -7
  231. package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +6 -6
  232. package/esm2022/table/components/table-header-row/table-header-row.component.mjs +11 -13
  233. package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +7 -9
  234. package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +9 -11
  235. package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +6 -9
  236. package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +6 -8
  237. package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +9 -11
  238. package/esm2022/table/components/table-p13-dialog/table-p13-columns.component.mjs +3 -3
  239. package/esm2022/table/components/table-p13-dialog/table-p13-dialog.component.mjs +5 -5
  240. package/esm2022/table/components/table-p13-dialog/table-p13-filter.component.mjs +3 -3
  241. package/esm2022/table/components/table-p13-dialog/table-p13-group.component.mjs +3 -3
  242. package/esm2022/table/components/table-p13-dialog/table-p13-sort.component.mjs +3 -3
  243. package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +7 -9
  244. package/esm2022/table/components/table-row/table-row.component.mjs +8 -12
  245. package/esm2022/table/components/table-toolbar/table-toolbar-actions.component.mjs +3 -3
  246. package/esm2022/table/components/table-toolbar/table-toolbar-left-actions.component.mjs +3 -3
  247. package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +7 -8
  248. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-custom.component.mjs +6 -6
  249. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +5 -6
  250. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-single-select.component.mjs +5 -14
  251. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-step.component.mjs +5 -8
  252. package/esm2022/table/components/table-view-settings-dialog/filtering/filters-list-step.component.mjs +5 -7
  253. package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +7 -10
  254. package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +6 -8
  255. package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +6 -9
  256. package/esm2022/table/components/table-view-settings-dialog/table-view-settings-dialog.component.mjs +5 -5
  257. package/esm2022/table/components/table-view-settings-dialog/table-view-settings-filter.component.mjs +3 -3
  258. package/esm2022/table/table.component.mjs +9 -14
  259. package/esm2022/table/table.module.mjs +4 -4
  260. package/esm2022/table-helpers/directives/platform-table-column-responsive.directive.mjs +6 -6
  261. package/esm2022/table-helpers/directives/table-cell-header-popover.directive.mjs +4 -4
  262. package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +5 -5
  263. package/esm2022/table-helpers/directives/table-cell-selectable.directive.mjs +3 -3
  264. package/esm2022/table-helpers/directives/table-cell.directive.mjs +16 -16
  265. package/esm2022/table-helpers/directives/table-data-source.directive.mjs +3 -3
  266. package/esm2022/table-helpers/directives/table-draggable.directive.mjs +3 -3
  267. package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +3 -3
  268. package/esm2022/table-helpers/directives/table-header.directive.mjs +7 -7
  269. package/esm2022/table-helpers/directives/table-initial-state.directive.mjs +3 -3
  270. package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +4 -4
  271. package/esm2022/table-helpers/directives/table-view-settings-filter-custom.directive.mjs +4 -4
  272. package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +3 -3
  273. package/esm2022/table-helpers/enums/collection-filter.enum.mjs +16 -1
  274. package/esm2022/table-helpers/pipes/cell-styles.pipe.mjs +3 -3
  275. package/esm2022/table-helpers/pipes/column-resizable-side.pipe.mjs +3 -3
  276. package/esm2022/table-helpers/pipes/column-sorting-direction.pipe.mjs +3 -3
  277. package/esm2022/table-helpers/pipes/row-classes.pipe.mjs +3 -3
  278. package/esm2022/table-helpers/pipes/selection-cell-styles.pipe.mjs +3 -3
  279. package/esm2022/table-helpers/services/table-column-resize.service.mjs +5 -5
  280. package/esm2022/table-helpers/services/table-responsive.service.mjs +5 -5
  281. package/esm2022/table-helpers/services/table-row.service.mjs +3 -3
  282. package/esm2022/table-helpers/services/table-scroll-dispatcher.service.mjs +3 -3
  283. package/esm2022/table-helpers/services/table.service.mjs +3 -3
  284. package/esm2022/table-helpers/table-helpers.module.mjs +4 -4
  285. package/esm2022/thumbnail/thumbnail-details/thumbnail-details.component.mjs +6 -8
  286. package/esm2022/thumbnail/thumbnail-image/thumbnail-image.component.mjs +8 -8
  287. package/esm2022/thumbnail/thumbnail.component.mjs +7 -8
  288. package/esm2022/thumbnail/thumbnail.module.mjs +4 -4
  289. package/esm2022/upload-collection/dialogs/move-to/move-to.component.mjs +6 -9
  290. package/esm2022/upload-collection/dialogs/new-folder/new-folder.component.mjs +6 -8
  291. package/esm2022/upload-collection/directives/upload-collection-dragndrop.directive.mjs +5 -5
  292. package/esm2022/upload-collection/services/files-validator.service.mjs +3 -3
  293. package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +7 -11
  294. package/esm2022/upload-collection/upload-collection.module.mjs +4 -4
  295. package/esm2022/value-help-dialog/components/base-tab/vhd-base-tab.component.mjs +5 -5
  296. package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +6 -10
  297. package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +13 -15
  298. package/esm2022/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.mjs +3 -3
  299. package/esm2022/value-help-dialog/directives/condition-count-message.directive.mjs +5 -5
  300. package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +12 -17
  301. package/esm2022/value-help-dialog/value-help-dialog.module.mjs +4 -4
  302. package/esm2022/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +5 -5
  303. package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +6 -8
  304. package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +3 -3
  305. package/esm2022/variant-management/directives/variant-management-dirty-label.directive.mjs +4 -4
  306. package/esm2022/variant-management/variant-management.component.mjs +8 -10
  307. package/esm2022/variant-management/variant-management.module.mjs +4 -4
  308. package/esm2022/wizard-generator/base-wizard-generator.mjs +5 -5
  309. package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +7 -8
  310. package/esm2022/wizard-generator/components/wizard-body/wizard-body.component.mjs +7 -9
  311. package/esm2022/wizard-generator/components/wizard-generator/wizard-generator.component.mjs +6 -7
  312. package/esm2022/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +6 -7
  313. package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.mjs +5 -6
  314. package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.mjs +7 -7
  315. package/esm2022/wizard-generator/directives/wizard-generator-finish-button.directive.mjs +3 -3
  316. package/esm2022/wizard-generator/directives/wizard-generator-go-next-button.directive.mjs +3 -3
  317. package/esm2022/wizard-generator/directives/wizard-generator-review-button.directive.mjs +3 -3
  318. package/esm2022/wizard-generator/directives/wizard-generator-summary-step.directive.mjs +3 -3
  319. package/esm2022/wizard-generator/wizard-dialog-generator.service.mjs +4 -4
  320. package/esm2022/wizard-generator/wizard-generator.module.mjs +4 -4
  321. package/esm2022/wizard-generator/wizard-generator.service.mjs +4 -4
  322. package/fesm2022/fundamental-ngx-platform-action-bar.mjs +11 -12
  323. package/fesm2022/fundamental-ngx-platform-action-bar.mjs.map +1 -1
  324. package/fesm2022/fundamental-ngx-platform-action-button-group.mjs +8 -8
  325. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +62 -74
  326. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  327. package/fesm2022/fundamental-ngx-platform-button.mjs +8 -8
  328. package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
  329. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +54 -56
  330. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  331. package/fesm2022/fundamental-ngx-platform-feed-input.mjs +9 -10
  332. package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
  333. package/fesm2022/fundamental-ngx-platform-form.mjs +453 -464
  334. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  335. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +59 -87
  336. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  337. package/fesm2022/fundamental-ngx-platform-info-label.mjs +8 -8
  338. package/fesm2022/fundamental-ngx-platform-info-label.mjs.map +1 -1
  339. package/fesm2022/fundamental-ngx-platform-link.mjs +8 -8
  340. package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
  341. package/fesm2022/fundamental-ngx-platform-list.mjs +73 -78
  342. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  343. package/fesm2022/fundamental-ngx-platform-menu-button.mjs +8 -8
  344. package/fesm2022/fundamental-ngx-platform-menu-button.mjs.map +1 -1
  345. package/fesm2022/fundamental-ngx-platform-menu.mjs +20 -20
  346. package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
  347. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +29 -33
  348. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  349. package/fesm2022/fundamental-ngx-platform-object-marker.mjs +9 -10
  350. package/fesm2022/fundamental-ngx-platform-object-marker.mjs.map +1 -1
  351. package/fesm2022/fundamental-ngx-platform-object-status.mjs +12 -12
  352. package/fesm2022/fundamental-ngx-platform-object-status.mjs.map +1 -1
  353. package/fesm2022/fundamental-ngx-platform-page-footer.mjs +9 -9
  354. package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
  355. package/fesm2022/fundamental-ngx-platform-panel.mjs +19 -19
  356. package/fesm2022/fundamental-ngx-platform-panel.mjs.map +1 -1
  357. package/fesm2022/fundamental-ngx-platform-search-field.mjs +29 -32
  358. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  359. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +45 -56
  360. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  361. package/fesm2022/fundamental-ngx-platform-shared.mjs +36 -36
  362. package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
  363. package/fesm2022/fundamental-ngx-platform-slider.mjs +9 -9
  364. package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
  365. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +48 -53
  366. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  367. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +9 -9
  368. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
  369. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +115 -100
  370. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  371. package/fesm2022/fundamental-ngx-platform-table.mjs +168 -218
  372. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  373. package/fesm2022/fundamental-ngx-platform-thumbnail.mjs +22 -23
  374. package/fesm2022/fundamental-ngx-platform-thumbnail.mjs.map +1 -1
  375. package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +27 -34
  376. package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
  377. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +41 -52
  378. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  379. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +28 -31
  380. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  381. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +58 -61
  382. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  383. package/fesm2022/fundamental-ngx-platform.mjs +5 -5
  384. package/form/combobox/combobox-mobile/combobox/combobox-mobile.component.d.ts +2 -2
  385. package/form/form-group/form-group.component.d.ts +1 -1
  386. package/form/input-group/input-group.component.d.ts +2 -2
  387. package/form/multi-combobox/multi-combobox/multi-combobox.component.d.ts +1 -1
  388. package/form/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +2 -2
  389. package/fundamental-ngx-platform-v0.48.0-rc.0.tgz +0 -0
  390. package/icon-tab-bar/components/icon-tab-bar-base.class.d.ts +0 -2
  391. package/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.d.ts +0 -2
  392. package/list/list.component.d.ts +1 -1
  393. package/package.json +4 -4
  394. package/page-footer/page-footer.component.d.ts +1 -1
  395. package/schematics/ng-add/index.js +1 -1
  396. package/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.d.ts +1 -1
  397. package/settings-generator/settings-generator.component.d.ts +2 -2
  398. package/table/components/table-p13-dialog/filtering/filter-rule.component.d.ts +2 -0
  399. package/table/table.component.d.ts +1 -1
  400. package/table-helpers/enums/collection-filter.enum.d.ts +2 -0
  401. package/value-help-dialog/components/select-tab/select-tab.component.d.ts +1 -1
  402. package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +1 -1
  403. package/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.d.ts +2 -2
  404. package/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.d.ts +2 -2
  405. package/fundamental-ngx-platform-v0.47.4.tgz +0 -0
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, TemplateRef, Vie
2
2
  import { FormGeneratorService } from '@fundamental-ngx/platform/form';
3
3
  import { filter, takeUntil } from 'rxjs/operators';
4
4
  import { CdkScrollable } from '@angular/cdk/overlay';
5
- import { NgIf, NgTemplateOutlet } from '@angular/common';
5
+ import { NgTemplateOutlet } from '@angular/common';
6
6
  import { InitialFocusDirective } from '@fundamental-ngx/cdk/utils';
7
7
  import { BarModule } from '@fundamental-ngx/core/bar';
8
8
  import { ContentDensityDirective } from '@fundamental-ngx/core/content-density';
@@ -122,10 +122,10 @@ export class DialogWizardGeneratorComponent extends BaseWizardGenerator {
122
122
  this._dialogRef.close(wizardResult);
123
123
  });
124
124
  }
125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: DialogWizardGeneratorComponent, deps: [{ token: i1.WizardGeneratorService }, { token: i0.ChangeDetectorRef }, { token: i2.DialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
126
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: DialogWizardGeneratorComponent, isStandalone: true, selector: "fdp-dialog-wizard-generator", providers: [WizardGeneratorService, FormGeneratorService], viewQueries: [{ propertyName: "defaultConfirmationDialogTemplate", first: true, predicate: ["defaultConfirmationDialogTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-dialog>\n <fd-dialog-header>\n <h2 fd-title [headerSize]=\"title.size\">{{ title.text }}</h2>\n </fd-dialog-header>\n <fd-dialog-body>\n <fdp-wizard-body\n [navigationButtons]=\"false\"\n [displaySummaryStep]=\"displaySummaryStep\"\n [responsivePaddings]=\"responsivePaddings\"\n [navigationButtonLabels]=\"_navigationButtonLabels\"\n [customSummaryStepTemplate]=\"summaryStepTemplate\"\n [reviewButtonTemplate]=\"reviewButtonTemplate\"\n [hidden]=\"!wizardCreated\"\n [appendToWizard]=\"appendToWizard\"\n [unifiedLayout]=\"unifiedLayout\"\n [contentHeight]=\"contentHeight\"\n (statusChange)=\"stepStatusChanged($event.id, $event.status)\"\n ></fdp-wizard-body>\n <div\n fd-bar\n barDesign=\"floating-footer\"\n [class.fd-bar--responsive-paddings]=\"responsivePaddings\"\n *ngIf=\"wizardCreated\"\n >\n <div fd-bar-right>\n <ng-container *ngIf=\"!isFirstStep\">\n <ng-template #defaultGoBackButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.goBack.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.goBack.type\"\n [label]=\"_navigationButtonLabels.goBack.label\"\n (click)=\"goBack()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"goBackButtonTemplate || defaultGoBackButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goBack: _goBackFn }\"\n ></ng-template>\n </ng-container>\n <ng-container *ngIf=\"!isLastStep\">\n <ng-template #defaultGoNextButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.goNext.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.goNext.type\"\n [label]=\"_navigationButtonLabels.goNext.label\"\n (click)=\"goNext()\"\n ></fdp-button>\n </ng-template>\n <ng-template #defaultReviewButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.review.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.review.type\"\n [label]=\"_navigationButtonLabels.review.label\"\n (click)=\"goNext()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngIf]=\"\n (isBranchingStep && (!isCurrentStepCompleted || _stepsOrderChanged)) || !isNextStepSummary\n \"\n [ngIfElse]=\"reviewButton\"\n >\n <ng-template\n [ngTemplateOutlet]=\"goNextButtonTemplate || defaultGoNextButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n </ng-template>\n <ng-template #reviewButton>\n <ng-template\n [ngTemplateOutlet]=\"reviewButtonTemplate || defaultReviewButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"isLastStep\">\n <ng-template #defaultFinishButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.finish.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.finish.type\"\n [label]=\"_navigationButtonLabels.finish.label\"\n (click)=\"finish()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"finishButtonTemplate || defaultFinishButtonTemplate\"\n [ngTemplateOutletContext]=\"{ finish: _finishFn }\"\n ></ng-template>\n </ng-container>\n <ng-container>\n <ng-template #defaultCancelButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.cancel.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.cancel.type\"\n [label]=\"_navigationButtonLabels.cancel.label\"\n (click)=\"cancel()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"cancelButtonTemplate || defaultCancelButtonTemplate\"\n [ngTemplateOutletContext]=\"{ cancel: _cancelFn }\"\n ></ng-template>\n </ng-container>\n </div>\n </div>\n </fd-dialog-body>\n</fd-dialog>\n\n<ng-template\n [fdMessageBoxTemplate]\n let-messageBox\n let-messageBoxConfig=\"messageBoxConfig\"\n #defaultConfirmationDialogTemplate\n>\n <fd-message-box [messageBoxConfig]=\"messageBoxConfig\" [messageBoxRef]=\"messageBox\">\n <fd-message-box-body>\n {{ confirmationDialogText }}\n </fd-message-box-body>\n <fd-message-box-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"confirmationDialogCloseText\"\n type=\"submit\"\n (click)=\"messageBox.close(true)\"\n >\n </fd-button-bar>\n <fd-button-bar fdkInitialFocus [label]=\"confirmationDialogCancelText\" (click)=\"messageBox.dismiss()\">\n </fd-button-bar>\n </fd-message-box-footer>\n </fd-message-box>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i2.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i3.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i4.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: WizardBodyComponent, selector: "fdp-wizard-body", inputs: ["responsivePaddings", "navigationButtonLabels", "appendToWizard", "contentHeight", "isFirstStep", "isLastStep", "isNextStepSummary", "displaySummaryStep", "goNextButtonTemplate", "finishButtonTemplate", "customSummaryStepTemplate", "reviewButtonTemplate", "isSummaryStep", "navigationButtons", "unifiedLayout", "isBranchingStep", "isCurrentStepCompleted", "stepsOrderChanged"], outputs: ["statusChange", "goNext", "finish"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: BarModule }, { kind: "component", type: ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "toggled", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "directive", type: ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MessageBoxModule }, { kind: "component", type: i5.MessageBoxFooterComponent, selector: "fd-message-box-footer" }, { kind: "component", type: i5.MessageBoxBodyComponent, selector: "fd-message-box-body" }, { kind: "component", type: i5.MessageBoxComponent, selector: "fd-message-box", inputs: ["class", "messageBoxRef", "messageBoxConfig"] }, { kind: "directive", type: i5.MessageBoxTemplateDirective, selector: "[fdMessageBoxTemplate]", inputs: ["fdMessageBoxTemplateConfig"] }, { kind: "directive", type: i6.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
125
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DialogWizardGeneratorComponent, deps: [{ token: i1.WizardGeneratorService }, { token: i0.ChangeDetectorRef }, { token: i2.DialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
126
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.4", type: DialogWizardGeneratorComponent, isStandalone: true, selector: "fdp-dialog-wizard-generator", providers: [WizardGeneratorService, FormGeneratorService], viewQueries: [{ propertyName: "defaultConfirmationDialogTemplate", first: true, predicate: ["defaultConfirmationDialogTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-dialog>\n <fd-dialog-header>\n <h2 fd-title [headerSize]=\"title.size\">{{ title.text }}</h2>\n </fd-dialog-header>\n <fd-dialog-body>\n <fdp-wizard-body\n [navigationButtons]=\"false\"\n [displaySummaryStep]=\"displaySummaryStep\"\n [responsivePaddings]=\"responsivePaddings\"\n [navigationButtonLabels]=\"_navigationButtonLabels\"\n [customSummaryStepTemplate]=\"summaryStepTemplate\"\n [reviewButtonTemplate]=\"reviewButtonTemplate\"\n [hidden]=\"!wizardCreated\"\n [appendToWizard]=\"appendToWizard\"\n [unifiedLayout]=\"unifiedLayout\"\n [contentHeight]=\"contentHeight\"\n (statusChange)=\"stepStatusChanged($event.id, $event.status)\"\n ></fdp-wizard-body>\n @if (wizardCreated) {\n <div fd-bar barDesign=\"floating-footer\" [class.fd-bar--responsive-paddings]=\"responsivePaddings\">\n <div fd-bar-right>\n @if (!isFirstStep) {\n <ng-template #defaultGoBackButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.goBack.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.goBack.type\"\n [label]=\"_navigationButtonLabels.goBack.label\"\n (click)=\"goBack()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"goBackButtonTemplate || defaultGoBackButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goBack: _goBackFn }\"\n ></ng-template>\n }\n @if (!isLastStep) {\n <ng-template #defaultGoNextButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.goNext.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.goNext.type\"\n [label]=\"_navigationButtonLabels.goNext.label\"\n (click)=\"goNext()\"\n ></fdp-button>\n </ng-template>\n <ng-template #defaultReviewButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.review.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.review.type\"\n [label]=\"_navigationButtonLabels.review.label\"\n (click)=\"goNext()\"\n ></fdp-button>\n </ng-template>\n @if (\n (isBranchingStep && (!isCurrentStepCompleted || _stepsOrderChanged)) || !isNextStepSummary\n ) {\n <ng-template\n [ngTemplateOutlet]=\"goNextButtonTemplate || defaultGoNextButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"reviewButtonTemplate || defaultReviewButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n }\n }\n @if (isLastStep) {\n <ng-template #defaultFinishButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.finish.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.finish.type\"\n [label]=\"_navigationButtonLabels.finish.label\"\n (click)=\"finish()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"finishButtonTemplate || defaultFinishButtonTemplate\"\n [ngTemplateOutletContext]=\"{ finish: _finishFn }\"\n ></ng-template>\n }\n <ng-template #defaultCancelButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.cancel.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.cancel.type\"\n [label]=\"_navigationButtonLabels.cancel.label\"\n (click)=\"cancel()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"cancelButtonTemplate || defaultCancelButtonTemplate\"\n [ngTemplateOutletContext]=\"{ cancel: _cancelFn }\"\n ></ng-template>\n </div>\n </div>\n }\n </fd-dialog-body>\n</fd-dialog>\n<ng-template\n [fdMessageBoxTemplate]\n let-messageBox\n let-messageBoxConfig=\"messageBoxConfig\"\n #defaultConfirmationDialogTemplate\n>\n <fd-message-box [messageBoxConfig]=\"messageBoxConfig\" [messageBoxRef]=\"messageBox\">\n <fd-message-box-body>\n {{ confirmationDialogText }}\n </fd-message-box-body>\n <fd-message-box-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"confirmationDialogCloseText\"\n type=\"submit\"\n (click)=\"messageBox.close(true)\"\n >\n </fd-button-bar>\n <fd-button-bar fdkInitialFocus [label]=\"confirmationDialogCancelText\" (click)=\"messageBox.dismiss()\">\n </fd-button-bar>\n </fd-message-box-footer>\n </fd-message-box>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i2.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i3.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i4.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: WizardBodyComponent, selector: "fdp-wizard-body", inputs: ["responsivePaddings", "navigationButtonLabels", "appendToWizard", "contentHeight", "isFirstStep", "isLastStep", "isNextStepSummary", "displaySummaryStep", "goNextButtonTemplate", "finishButtonTemplate", "customSummaryStepTemplate", "reviewButtonTemplate", "isSummaryStep", "navigationButtons", "unifiedLayout", "isBranchingStep", "isCurrentStepCompleted", "stepsOrderChanged"], outputs: ["statusChange", "goNext", "finish"] }, { kind: "ngmodule", type: BarModule }, { kind: "component", type: ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "toggled", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "directive", type: ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MessageBoxModule }, { kind: "component", type: i5.MessageBoxFooterComponent, selector: "fd-message-box-footer" }, { kind: "component", type: i5.MessageBoxBodyComponent, selector: "fd-message-box-body" }, { kind: "component", type: i5.MessageBoxComponent, selector: "fd-message-box", inputs: ["class", "messageBoxRef", "messageBoxConfig"] }, { kind: "directive", type: i5.MessageBoxTemplateDirective, selector: "[fdMessageBoxTemplate]", inputs: ["fdMessageBoxTemplateConfig"] }, { kind: "directive", type: i6.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
127
127
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: DialogWizardGeneratorComponent, decorators: [{
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DialogWizardGeneratorComponent, decorators: [{
129
129
  type: Component,
130
130
  args: [{ selector: 'fdp-dialog-wizard-generator', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [WizardGeneratorService, FormGeneratorService], standalone: true, imports: [
131
131
  DialogModule,
@@ -133,16 +133,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
133
133
  CdkScrollable,
134
134
  ScrollbarDirective,
135
135
  WizardBodyComponent,
136
- NgIf,
137
136
  BarModule,
138
137
  ButtonComponent,
139
138
  ContentDensityDirective,
140
139
  NgTemplateOutlet,
141
140
  MessageBoxModule,
142
141
  InitialFocusDirective
143
- ], template: "<fd-dialog>\n <fd-dialog-header>\n <h2 fd-title [headerSize]=\"title.size\">{{ title.text }}</h2>\n </fd-dialog-header>\n <fd-dialog-body>\n <fdp-wizard-body\n [navigationButtons]=\"false\"\n [displaySummaryStep]=\"displaySummaryStep\"\n [responsivePaddings]=\"responsivePaddings\"\n [navigationButtonLabels]=\"_navigationButtonLabels\"\n [customSummaryStepTemplate]=\"summaryStepTemplate\"\n [reviewButtonTemplate]=\"reviewButtonTemplate\"\n [hidden]=\"!wizardCreated\"\n [appendToWizard]=\"appendToWizard\"\n [unifiedLayout]=\"unifiedLayout\"\n [contentHeight]=\"contentHeight\"\n (statusChange)=\"stepStatusChanged($event.id, $event.status)\"\n ></fdp-wizard-body>\n <div\n fd-bar\n barDesign=\"floating-footer\"\n [class.fd-bar--responsive-paddings]=\"responsivePaddings\"\n *ngIf=\"wizardCreated\"\n >\n <div fd-bar-right>\n <ng-container *ngIf=\"!isFirstStep\">\n <ng-template #defaultGoBackButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.goBack.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.goBack.type\"\n [label]=\"_navigationButtonLabels.goBack.label\"\n (click)=\"goBack()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"goBackButtonTemplate || defaultGoBackButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goBack: _goBackFn }\"\n ></ng-template>\n </ng-container>\n <ng-container *ngIf=\"!isLastStep\">\n <ng-template #defaultGoNextButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.goNext.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.goNext.type\"\n [label]=\"_navigationButtonLabels.goNext.label\"\n (click)=\"goNext()\"\n ></fdp-button>\n </ng-template>\n <ng-template #defaultReviewButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.review.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.review.type\"\n [label]=\"_navigationButtonLabels.review.label\"\n (click)=\"goNext()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngIf]=\"\n (isBranchingStep && (!isCurrentStepCompleted || _stepsOrderChanged)) || !isNextStepSummary\n \"\n [ngIfElse]=\"reviewButton\"\n >\n <ng-template\n [ngTemplateOutlet]=\"goNextButtonTemplate || defaultGoNextButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n </ng-template>\n <ng-template #reviewButton>\n <ng-template\n [ngTemplateOutlet]=\"reviewButtonTemplate || defaultReviewButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"isLastStep\">\n <ng-template #defaultFinishButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.finish.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.finish.type\"\n [label]=\"_navigationButtonLabels.finish.label\"\n (click)=\"finish()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"finishButtonTemplate || defaultFinishButtonTemplate\"\n [ngTemplateOutletContext]=\"{ finish: _finishFn }\"\n ></ng-template>\n </ng-container>\n <ng-container>\n <ng-template #defaultCancelButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.cancel.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.cancel.type\"\n [label]=\"_navigationButtonLabels.cancel.label\"\n (click)=\"cancel()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"cancelButtonTemplate || defaultCancelButtonTemplate\"\n [ngTemplateOutletContext]=\"{ cancel: _cancelFn }\"\n ></ng-template>\n </ng-container>\n </div>\n </div>\n </fd-dialog-body>\n</fd-dialog>\n\n<ng-template\n [fdMessageBoxTemplate]\n let-messageBox\n let-messageBoxConfig=\"messageBoxConfig\"\n #defaultConfirmationDialogTemplate\n>\n <fd-message-box [messageBoxConfig]=\"messageBoxConfig\" [messageBoxRef]=\"messageBox\">\n <fd-message-box-body>\n {{ confirmationDialogText }}\n </fd-message-box-body>\n <fd-message-box-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"confirmationDialogCloseText\"\n type=\"submit\"\n (click)=\"messageBox.close(true)\"\n >\n </fd-button-bar>\n <fd-button-bar fdkInitialFocus [label]=\"confirmationDialogCancelText\" (click)=\"messageBox.dismiss()\">\n </fd-button-bar>\n </fd-message-box-footer>\n </fd-message-box>\n</ng-template>\n" }]
144
- }], ctorParameters: function () { return [{ type: i1.WizardGeneratorService }, { type: i0.ChangeDetectorRef }, { type: i2.DialogRef }]; }, propDecorators: { defaultConfirmationDialogTemplate: [{
142
+ ], template: "<fd-dialog>\n <fd-dialog-header>\n <h2 fd-title [headerSize]=\"title.size\">{{ title.text }}</h2>\n </fd-dialog-header>\n <fd-dialog-body>\n <fdp-wizard-body\n [navigationButtons]=\"false\"\n [displaySummaryStep]=\"displaySummaryStep\"\n [responsivePaddings]=\"responsivePaddings\"\n [navigationButtonLabels]=\"_navigationButtonLabels\"\n [customSummaryStepTemplate]=\"summaryStepTemplate\"\n [reviewButtonTemplate]=\"reviewButtonTemplate\"\n [hidden]=\"!wizardCreated\"\n [appendToWizard]=\"appendToWizard\"\n [unifiedLayout]=\"unifiedLayout\"\n [contentHeight]=\"contentHeight\"\n (statusChange)=\"stepStatusChanged($event.id, $event.status)\"\n ></fdp-wizard-body>\n @if (wizardCreated) {\n <div fd-bar barDesign=\"floating-footer\" [class.fd-bar--responsive-paddings]=\"responsivePaddings\">\n <div fd-bar-right>\n @if (!isFirstStep) {\n <ng-template #defaultGoBackButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.goBack.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.goBack.type\"\n [label]=\"_navigationButtonLabels.goBack.label\"\n (click)=\"goBack()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"goBackButtonTemplate || defaultGoBackButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goBack: _goBackFn }\"\n ></ng-template>\n }\n @if (!isLastStep) {\n <ng-template #defaultGoNextButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.goNext.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.goNext.type\"\n [label]=\"_navigationButtonLabels.goNext.label\"\n (click)=\"goNext()\"\n ></fdp-button>\n </ng-template>\n <ng-template #defaultReviewButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.review.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.review.type\"\n [label]=\"_navigationButtonLabels.review.label\"\n (click)=\"goNext()\"\n ></fdp-button>\n </ng-template>\n @if (\n (isBranchingStep && (!isCurrentStepCompleted || _stepsOrderChanged)) || !isNextStepSummary\n ) {\n <ng-template\n [ngTemplateOutlet]=\"goNextButtonTemplate || defaultGoNextButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"reviewButtonTemplate || defaultReviewButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n }\n }\n @if (isLastStep) {\n <ng-template #defaultFinishButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.finish.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.finish.type\"\n [label]=\"_navigationButtonLabels.finish.label\"\n (click)=\"finish()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"finishButtonTemplate || defaultFinishButtonTemplate\"\n [ngTemplateOutletContext]=\"{ finish: _finishFn }\"\n ></ng-template>\n }\n <ng-template #defaultCancelButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.cancel.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.cancel.type\"\n [label]=\"_navigationButtonLabels.cancel.label\"\n (click)=\"cancel()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"cancelButtonTemplate || defaultCancelButtonTemplate\"\n [ngTemplateOutletContext]=\"{ cancel: _cancelFn }\"\n ></ng-template>\n </div>\n </div>\n }\n </fd-dialog-body>\n</fd-dialog>\n<ng-template\n [fdMessageBoxTemplate]\n let-messageBox\n let-messageBoxConfig=\"messageBoxConfig\"\n #defaultConfirmationDialogTemplate\n>\n <fd-message-box [messageBoxConfig]=\"messageBoxConfig\" [messageBoxRef]=\"messageBox\">\n <fd-message-box-body>\n {{ confirmationDialogText }}\n </fd-message-box-body>\n <fd-message-box-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"confirmationDialogCloseText\"\n type=\"submit\"\n (click)=\"messageBox.close(true)\"\n >\n </fd-button-bar>\n <fd-button-bar fdkInitialFocus [label]=\"confirmationDialogCancelText\" (click)=\"messageBox.dismiss()\">\n </fd-button-bar>\n </fd-message-box-footer>\n </fd-message-box>\n</ng-template>\n" }]
143
+ }], ctorParameters: () => [{ type: i1.WizardGeneratorService }, { type: i0.ChangeDetectorRef }, { type: i2.DialogRef }], propDecorators: { defaultConfirmationDialogTemplate: [{
145
144
  type: ViewChild,
146
145
  args: ['defaultConfirmationDialogTemplate']
147
146
  }] } });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3dpemFyZC1nZW5lcmF0b3IvY29tcG9uZW50cy9kaWFsb2ctd2l6YXJkLWdlbmVyYXRvci9kaWFsb2ctd2l6YXJkLWdlbmVyYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvd2l6YXJkLWdlbmVyYXRvci9jb21wb25lbnRzL2RpYWxvZy13aXphcmQtZ2VuZXJhdG9yL2RpYWxvZy13aXphcmQtZ2VuZXJhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxp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TUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDOzhHQW5KUSw4QkFBOEI7a0dBQTlCLDhCQUE4QiwwRUFqQjVCLENBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLENBQUMseU1DakM3RCx5aU5BdUlBLDJDRG5HUSxZQUFZLHMzQkFJWixtQkFBbUIsOGVBQ25CLElBQUksNEZBQ0osU0FBUywrQkFDVCxlQUFlLDRRQUNmLHVCQUF1QixvZEFDdkIsZ0JBQWdCLG1KQUNoQixnQkFBZ0I7OzJGQUlYLDhCQUE4QjtrQkF0QjFDLFNBQVM7K0JBQ0ksNkJBQTZCLGlCQUV4QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLENBQUMsY0FDN0MsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixJQUFJO3dCQUNKLFNBQVM7d0JBQ1QsZUFBZTt3QkFDZix1QkFBdUI7d0JBQ3ZCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixxQkFBcUI7cUJBQ3hCO3FLQUkrQyxpQ0FBaUM7c0JBQWhGLFNBQVM7dUJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1HZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9mb3JtJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbml0aWFsRm9jdXNEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBCYXJNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUsIERpYWxvZ1JlZiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgTWVzc2FnZUJveE1vZHVsZSwgTWVzc2FnZUJveFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVzc2FnZS1ib3gnO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL2J1dHRvbic7XG5pbXBvcnQgeyBCYXNlV2l6YXJkR2VuZXJhdG9yIH0gZnJvbSAnLi4vLi4vYmFzZS13aXphcmQtZ2VuZXJhdG9yJztcbmltcG9ydCB7IFdpemFyZERpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3dpemFyZC1kaWFsb2ctZGF0YS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2l6YXJkVGl0bGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3dpemFyZC10aXRsZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2l6YXJkR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3dpemFyZC1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBXaXphcmRCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi4vd2l6YXJkLWJvZHkvd2l6YXJkLWJvZHkuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtZGlhbG9nLXdpemFyZC1nZW5lcmF0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctd2l6YXJkLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtXaXphcmRHZW5lcmF0b3JTZXJ2aWNlLCBGb3JtR2VuZXJhdG9yU2VydmljZV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIERpYWxvZ01vZHVsZSxcbiAgICAgICAgVGl0bGVDb21wb25lbnQsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIFNjcm9sbGJhckRpcmVjdGl2ZSxcbiAgICAgICAgV2l6YXJkQm9keUNvbXBvbmVudCxcbiAgICAgICAgTmdJZixcbiAgICAgICAgQmFyTW9kdWxlLFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIENvbnRlbnREZW5zaXR5RGlyZWN0aXZlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBNZXNzYWdlQm94TW9kdWxlLFxuICAgICAgICBJbml0aWFsRm9jdXNEaXJlY3RpdmVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ1dpemFyZEdlbmVyYXRvckNvbXBvbmVudCBleHRlbmRzIEJhc2VXaXphcmRHZW5lcmF0b3Ige1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnZGVmYXVsdENvbmZpcm1hdGlvbkRpYWxvZ1RlbXBsYXRlJykgZGVmYXVsdENvbmZpcm1hdGlvbkRpYWxvZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2l6YXJkcyBkaWFsb2cgdGl0bGUgY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICB0aXRsZTogV2l6YXJkVGl0bGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29uZmlybWF0aW9uIG1lc3NhZ2Ugd2hlbiB3aXphcmQgZGlhbG9nIGNsb3NlIGJ1dHRvbiBoYXMgYmVlbiBjbGlja2VkLlxuICAgICAqL1xuICAgIGNvbmZpcm1hdGlvbkRpYWxvZ1RleHQgPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRpc2NhcmQgeW91ciBwcm9ncmVzcz8nO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb25maXJtIGJ1dHRvbiB0ZXh0IGZvciBjbG9zZSBjb25maXJtYXRpb24gZGlhbG9nLlxuICAgICAqL1xuICAgIGNvbmZpcm1hdGlvbkRpYWxvZ0Nsb3NlVGV4dCA9ICdDb25maXJtJztcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2FuY2VsIGJ1dHRvbiB0ZXh0IGZvciBjbG9zZSBjb25maXJtYXRpb24gZGlhbG9nLlxuICAgICAqL1xuICAgIGNvbmZpcm1hdGlvbkRpYWxvZ0NhbmNlbFRleHQgPSAnQ2FuY2VsJztcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJHbyBOZXh0XCIgYnV0dG9uLlxuICAgICAqL1xuICAgIGdvTmV4dEJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBcIkdvIEJhY2tcIiBidXR0b24uXG4gICAgICovXG4gICAgZ29CYWNrQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIFwiRmluaXNoXCIgYnV0dG9uLlxuICAgICAqL1xuICAgIGZpbmlzaEJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBcIkNhbmNlbFwiIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBjYW5jZWxCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgY2FuY2VsbGF0aW9uIGNvbmZpcm1hdGlvbiBkaWFsb2cuXG4gICAgICovXG4gICAgY29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIHN1bW1hcnkgc3RlcC5cbiAgICAgKi9cbiAgICBzdW1tYXJ5U3RlcFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJSZXZpZXdcIiBidXR0b24gKi9cbiAgICByZXZpZXdCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZUJveFNlcnZpY2UgPSBpbmplY3QoTWVzc2FnZUJveFNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgX3dpemFyZEdlbmVyYXRvclNlcnZpY2U6IFdpemFyZEdlbmVyYXRvclNlcnZpY2UsXG4gICAgICAgIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2RpYWxvZ1JlZjogRGlhbG9nUmVmPFdpemFyZERpYWxvZ0RhdGE+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLCBfY2QpO1xuXG4gICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5pdGVtcztcbiAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLnRpdGxlO1xuICAgICAgICB0aGlzLmFwcGVuZFRvV2l6YXJkID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuYXBwZW5kVG9XaXphcmQ7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbkJ1dHRvbkxhYmVscyA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLm5hdmlnYXRpb25CdXR0b25MYWJlbHMgPz8ge307XG4gICAgICAgIHRoaXMuY29udGVudEhlaWdodCA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNvbnRlbnRIZWlnaHQ7XG4gICAgICAgIHRoaXMucmVzcG9uc2l2ZVBhZGRpbmdzID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEucmVzcG9uc2l2ZVBhZGRpbmdzO1xuICAgICAgICB0aGlzLmdvTmV4dEJ1dHRvblRlbXBsYXRlID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuZ29OZXh0QnV0dG9uVGVtcGxhdGU7XG4gICAgICAgIHRoaXMuZ29CYWNrQnV0dG9uVGVtcGxhdGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5nb0JhY2tCdXR0b25UZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5maW5pc2hCdXR0b25UZW1wbGF0ZSA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmZpbmlzaEJ1dHRvblRlbXBsYXRlO1xuICAgICAgICB0aGlzLmNhbmNlbEJ1dHRvblRlbXBsYXRlID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuY2FuY2VsQnV0dG9uVGVtcGxhdGU7XG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dUZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXAgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5kaXNwbGF5U3VtbWFyeVN0ZXAgfHwgZmFsc2U7XG4gICAgICAgIHRoaXMuc3VtbWFyeVN0ZXBUZW1wbGF0ZSA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLnN1bW1hcnlTdGVwVGVtcGxhdGU7XG4gICAgICAgIHRoaXMucmV2aWV3QnV0dG9uVGVtcGxhdGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5yZXZpZXdCdXR0b25UZW1wbGF0ZTtcblxuICAgICAgICBpZiAodGhpcy5fZGlhbG9nUmVmLmRhdGEudW5pZmllZExheW91dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnVuaWZpZWRMYXlvdXQgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS51bmlmaWVkTGF5b3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ1JlZi5kYXRhLm5hdmlnYXRpb25CdXR0b25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkJ1dHRvbnMgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5uYXZpZ2F0aW9uQnV0dG9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbkRpYWxvZ1RleHQgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dUZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNvbmZpcm1hdGlvbkRpYWxvZ0NhbmNlbFRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uRGlhbG9nQ2FuY2VsVGV4dCA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNvbmZpcm1hdGlvbkRpYWxvZ0NhbmNlbFRleHQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGlhbG9nUmVmLmRhdGEuY29uZmlybWF0aW9uRGlhbG9nQ2xvc2VUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbkRpYWxvZ0Nsb3NlVGV4dCA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNvbmZpcm1hdGlvbkRpYWxvZ0Nsb3NlVGV4dDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDYW5jZWxzIFdpemFyZCBwcm9ncmVzcyBhbmQgY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICovXG4gICAgY2FuY2VsKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5pc1N0ZXBzVW50b3VjaGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5kaXNtaXNzKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy5jb25maXJtYXRpb25EaWFsb2dUZW1wbGF0ZSB8fCB0aGlzLmRlZmF1bHRDb25maXJtYXRpb25EaWFsb2dUZW1wbGF0ZTtcblxuICAgICAgICBjb25zdCBtZXNzYWdlQm94UmVmID0gdGhpcy5fbWVzc2FnZUJveFNlcnZpY2Uub3Blbih0ZW1wbGF0ZSwgeyByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSB9KTtcblxuICAgICAgICBtZXNzYWdlQm94UmVmLmFmdGVyQ2xvc2VkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHJlc3VsdCkgPT4gcmVzdWx0KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5kaXNtaXNzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGVzIFdpemFyZCBwcm9jZXNzLCBlbWl0cyBXaXphcmQgcmVzdWx0IGFuZCBjbG9zZXMgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBhc3luYyBmaW5pc2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmlzU3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIGNvbnN0IHdpemFyZFJlc3VsdCA9IGF3YWl0IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0V2l6YXJkRm9ybVZhbHVlKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHdpemFyZFJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50U3RlcElkID0gdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5nZXRDdXJyZW50U3RlcElkKCk7XG4gICAgICAgIHRoaXMuc3VibWl0U3RlcEZvcm1zKGN1cnJlbnRTdGVwSWQpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGFzeW5jIChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICYmIE9iamVjdC52YWx1ZXMocmVzdWx0KS5zb21lKChyKSA9PiAhci5zdWNjZXNzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgd2l6YXJkUmVzdWx0ID0gYXdhaXQgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5nZXRXaXphcmRGb3JtVmFsdWUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHdpemFyZFJlc3VsdCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2dvQmFja0ZuOiAoKSA9PiB2b2lkID0gKCkgPT4gdGhpcy5nb0JhY2soKTtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2dvTmV4dEZuOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gKCkgPT4gdGhpcy5nb05leHQoKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfZmluaXNoRm46ICgpID0+IFByb21pc2U8dm9pZD4gPSAoKSA9PiB0aGlzLmZpbmlzaCgpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9jYW5jZWxGbjogKCkgPT4gdm9pZCA9ICgpID0+IHRoaXMuY2FuY2VsKCk7XG59XG4iLCI8ZmQtZGlhbG9nPlxuICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICA8aDIgZmQtdGl0bGUgW2hlYWRlclNpemVdPVwidGl0bGUuc2l6ZVwiPnt7IHRpdGxlLnRleHQgfX08L2gyPlxuICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cbiAgICA8ZmQtZGlhbG9nLWJvZHk+XG4gICAgICAgIDxmZHAtd2l6YXJkLWJvZHlcbiAgICAgICAgICAgIFtuYXZpZ2F0aW9uQnV0dG9uc109XCJmYWxzZVwiXG4gICAgICAgICAgICBbZGlzcGxheVN1bW1hcnlTdGVwXT1cImRpc3BsYXlTdW1tYXJ5U3RlcFwiXG4gICAgICAgICAgICBbcmVzcG9uc2l2ZVBhZGRpbmdzXT1cInJlc3BvbnNpdmVQYWRkaW5nc1wiXG4gICAgICAgICAgICBbbmF2aWdhdGlvbkJ1dHRvbkxhYmVsc109XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVsc1wiXG4gICAgICAgICAgICBbY3VzdG9tU3VtbWFyeVN0ZXBUZW1wbGF0ZV09XCJzdW1tYXJ5U3RlcFRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtyZXZpZXdCdXR0b25UZW1wbGF0ZV09XCJyZXZpZXdCdXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cIiF3aXphcmRDcmVhdGVkXCJcbiAgICAgICAgICAgIFthcHBlbmRUb1dpemFyZF09XCJhcHBlbmRUb1dpemFyZFwiXG4gICAgICAgICAgICBbdW5pZmllZExheW91dF09XCJ1bmlmaWVkTGF5b3V0XCJcbiAgICAgICAgICAgIFtjb250ZW50SGVpZ2h0XT1cImNvbnRlbnRIZWlnaHRcIlxuICAgICAgICAgICAgKHN0YXR1c0NoYW5nZSk9XCJzdGVwU3RhdHVzQ2hhbmdlZCgkZXZlbnQuaWQsICRldmVudC5zdGF0dXMpXCJcbiAgICAgICAgPjwvZmRwLXdpemFyZC1ib2R5PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBmZC1iYXJcbiAgICAgICAgICAgIGJhckRlc2lnbj1cImZsb2F0aW5nLWZvb3RlclwiXG4gICAgICAgICAgICBbY2xhc3MuZmQtYmFyLS1yZXNwb25zaXZlLXBhZGRpbmdzXT1cInJlc3BvbnNpdmVQYWRkaW5nc1wiXG4gICAgICAgICAgICAqbmdJZj1cIndpemFyZENyZWF0ZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRmlyc3RTdGVwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEdvQmFja0J1dHRvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWJhcl9fZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29CYWNrLmNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uVHlwZV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb0JhY2sudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmdvQmFjay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvQmFjaygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ29CYWNrQnV0dG9uVGVtcGxhdGUgfHwgZGVmYXVsdEdvQmFja0J1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGdvQmFjazogX2dvQmFja0ZuIH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTGFzdFN0ZXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0R29OZXh0QnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYmFyX19lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb05leHQuY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmdvTmV4dC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29OZXh0LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29OZXh0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0UmV2aWV3QnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYmFyX19lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5yZXZpZXcuY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLnJldmlldy50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMucmV2aWV3LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29OZXh0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdJZl09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNCcmFuY2hpbmdTdGVwICYmICghaXNDdXJyZW50U3RlcENvbXBsZXRlZCB8fCBfc3RlcHNPcmRlckNoYW5nZWQpKSB8fCAhaXNOZXh0U3RlcFN1bW1hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdJZkVsc2VdPVwicmV2aWV3QnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ29OZXh0QnV0dG9uVGVtcGxhdGUgfHwgZGVmYXVsdEdvTmV4dEJ1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBnb05leHQ6IF9nb05leHRGbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Jldmlld0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJldmlld0J1dHRvblRlbXBsYXRlIHx8IGRlZmF1bHRSZXZpZXdCdXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZ29OZXh0OiBfZ29OZXh0Rm4gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMYXN0U3RlcFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRGaW5pc2hCdXR0b25UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1iYXJfX2VsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZENvbnRlbnREZW5zaXR5XT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC5jb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZmluaXNoLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5maW5pc2gubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmaW5pc2goKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbmlzaEJ1dHRvblRlbXBsYXRlIHx8IGRlZmF1bHRGaW5pc2hCdXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaW5pc2g6IF9maW5pc2hGbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2FuY2VsQnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYmFyX19lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5jYW5jZWwuY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmNhbmNlbC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuY2FuY2VsLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjYW5jZWxCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0Q2FuY2VsQnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY2FuY2VsOiBfY2FuY2VsRm4gfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZmQtZGlhbG9nLWJvZHk+XG48L2ZkLWRpYWxvZz5cblxuPG5nLXRlbXBsYXRlXG4gICAgW2ZkTWVzc2FnZUJveFRlbXBsYXRlXVxuICAgIGxldC1tZXNzYWdlQm94XG4gICAgbGV0LW1lc3NhZ2VCb3hDb25maWc9XCJtZXNzYWdlQm94Q29uZmlnXCJcbiAgICAjZGVmYXVsdENvbmZpcm1hdGlvbkRpYWxvZ1RlbXBsYXRlXG4+XG4gICAgPGZkLW1lc3NhZ2UtYm94IFttZXNzYWdlQm94Q29uZmlnXT1cIm1lc3NhZ2VCb3hDb25maWdcIiBbbWVzc2FnZUJveFJlZl09XCJtZXNzYWdlQm94XCI+XG4gICAgICAgIDxmZC1tZXNzYWdlLWJveC1ib2R5PlxuICAgICAgICAgICAge3sgY29uZmlybWF0aW9uRGlhbG9nVGV4dCB9fVxuICAgICAgICA8L2ZkLW1lc3NhZ2UtYm94LWJvZHk+XG4gICAgICAgIDxmZC1tZXNzYWdlLWJveC1mb290ZXI+XG4gICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb25maXJtYXRpb25EaWFsb2dDbG9zZVRleHRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtZXNzYWdlQm94LmNsb3NlKHRydWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIDxmZC1idXR0b24tYmFyIGZka0luaXRpYWxGb2N1cyBbbGFiZWxdPVwiY29uZmlybWF0aW9uRGlhbG9nQ2FuY2VsVGV4dFwiIChjbGljayk9XCJtZXNzYWdlQm94LmRpc21pc3MoKVwiPlxuICAgICAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICA8L2ZkLW1lc3NhZ2UtYm94LWZvb3Rlcj5cbiAgICA8L2ZkLW1lc3NhZ2UtYm94PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3dpemFyZC1nZW5lcmF0b3IvY29tcG9uZW50cy9kaWFsb2ctd2l6YXJkLWdlbmVyYXRvci9kaWFsb2ctd2l6YXJkLWdlbmVyYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvd2l6YXJkLWdlbmVyYXRvci9jb21wb25lbnRzL2RpYWxvZy13aXphcmQtZ2VuZXJhdG9yL2RpYWxvZy13aXphcmQtZ2VuZXJhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7QUF1QjNFLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSxtQkFBbUI7SUEwRG5FLGNBQWM7SUFDZCxZQUNJLHVCQUErQyxFQUMvQyxHQUFzQixFQUNkLFVBQXVDO1FBRS9DLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUY1QixlQUFVLEdBQVYsVUFBVSxDQUE2QjtRQXJEbkQ7O1dBRUc7UUFDSCwyQkFBc0IsR0FBRyxpREFBaUQsQ0FBQztRQUMzRTs7V0FFRztRQUNILGdDQUEyQixHQUFHLFNBQVMsQ0FBQztRQUN4Qzs7V0FFRztRQUNILGlDQUE0QixHQUFHLFFBQVEsQ0FBQztRQW1DeEMsY0FBYztRQUNHLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBNkZoRTs7V0FFRztRQUNILGNBQVMsR0FBZSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDNUM7O1dBRUc7UUFDSCxjQUFTLEdBQXdCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVyRDs7V0FFRztRQUNILGNBQVMsR0FBd0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRXJEOztXQUVHO1FBQ0gsY0FBUyxHQUFlLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQXBHeEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDMUQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLEVBQUUsQ0FBQztRQUNoRixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN4RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDbEUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ3RFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUN0RSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDdEUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ3RFLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQztRQUNsRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksS0FBSyxDQUFDO1FBQzNFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUNwRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFFdEUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFO1lBQ2xELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQzNEO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLEVBQUU7WUFDdEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1NBQ25FO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUM3QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUM7U0FDN0U7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFO1lBQ25ELElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztTQUN6RjtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUU7WUFDbEQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDO1NBQ3ZGO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNGLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDakQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUUxQixPQUFPO1NBQ1Y7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsMEJBQTBCLElBQUksSUFBSSxDQUFDLGlDQUFpQyxDQUFDO1FBRTNGLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUxRixhQUFhLENBQUMsV0FBVzthQUNwQixJQUFJLENBQ0QsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFDMUIsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDOUI7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUFNO1FBQ1IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3BDLE9BQU87U0FDVjtRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3RFLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDO2FBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ2pDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDeEIsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN6RCxPQUFPO2FBQ1Y7WUFFRCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7OEdBbkpRLDhCQUE4QjtrR0FBOUIsOEJBQThCLDBFQWhCNUIsQ0FBQyxzQkFBc0IsRUFBRSxvQkFBb0IsQ0FBQyx5TUNqQzdELHk2TUE2SEEsMkNEekZRLFlBQVksczNCQUlaLG1CQUFtQiw2ZUFDbkIsU0FBUywrQkFDVCxlQUFlLDRRQUNmLHVCQUF1QixvZEFDdkIsZ0JBQWdCLG1KQUNoQixnQkFBZ0I7OzJGQUlYLDhCQUE4QjtrQkFyQjFDLFNBQVM7K0JBQ0ksNkJBQTZCLGlCQUV4QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLENBQUMsY0FDN0MsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixTQUFTO3dCQUNULGVBQWU7d0JBQ2YsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIscUJBQXFCO3FCQUN4QjttSkFJK0MsaUNBQWlDO3NCQUFoRixTQUFTO3VCQUFDLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vZm9ybSc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5pdGlhbEZvY3VzRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQmFyTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlLCBEaWFsb2dSZWYgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IE1lc3NhZ2VCb3hNb2R1bGUsIE1lc3NhZ2VCb3hTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21lc3NhZ2UtYm94JztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGl0bGUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9idXR0b24nO1xuaW1wb3J0IHsgQmFzZVdpemFyZEdlbmVyYXRvciB9IGZyb20gJy4uLy4uL2Jhc2Utd2l6YXJkLWdlbmVyYXRvcic7XG5pbXBvcnQgeyBXaXphcmREaWFsb2dEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy93aXphcmQtZGlhbG9nLWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IFdpemFyZFRpdGxlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy93aXphcmQtdGl0bGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFdpemFyZEdlbmVyYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi93aXphcmQtZ2VuZXJhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2l6YXJkQm9keUNvbXBvbmVudCB9IGZyb20gJy4uL3dpemFyZC1ib2R5L3dpemFyZC1ib2R5LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWRpYWxvZy13aXphcmQtZ2VuZXJhdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbV2l6YXJkR2VuZXJhdG9yU2VydmljZSwgRm9ybUdlbmVyYXRvclNlcnZpY2VdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEaWFsb2dNb2R1bGUsXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIFdpemFyZEJvZHlDb21wb25lbnQsXG4gICAgICAgIEJhck1vZHVsZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgTWVzc2FnZUJveE1vZHVsZSxcbiAgICAgICAgSW5pdGlhbEZvY3VzRGlyZWN0aXZlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dXaXphcmRHZW5lcmF0b3JDb21wb25lbnQgZXh0ZW5kcyBCYXNlV2l6YXJkR2VuZXJhdG9yIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RlZmF1bHRDb25maXJtYXRpb25EaWFsb2dUZW1wbGF0ZScpIGRlZmF1bHRDb25maXJtYXRpb25EaWFsb2dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdpemFyZHMgZGlhbG9nIHRpdGxlIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgdGl0bGU6IFdpemFyZFRpdGxlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbmZpcm1hdGlvbiBtZXNzYWdlIHdoZW4gd2l6YXJkIGRpYWxvZyBjbG9zZSBidXR0b24gaGFzIGJlZW4gY2xpY2tlZC5cbiAgICAgKi9cbiAgICBjb25maXJtYXRpb25EaWFsb2dUZXh0ID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkaXNjYXJkIHlvdXIgcHJvZ3Jlc3M/JztcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29uZmlybSBidXR0b24gdGV4dCBmb3IgY2xvc2UgY29uZmlybWF0aW9uIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25maXJtYXRpb25EaWFsb2dDbG9zZVRleHQgPSAnQ29uZmlybSc7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENhbmNlbCBidXR0b24gdGV4dCBmb3IgY2xvc2UgY29uZmlybWF0aW9uIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25maXJtYXRpb25EaWFsb2dDYW5jZWxUZXh0ID0gJ0NhbmNlbCc7XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIFwiR28gTmV4dFwiIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBnb05leHRCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJHbyBCYWNrXCIgYnV0dG9uLlxuICAgICAqL1xuICAgIGdvQmFja0J1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBcIkZpbmlzaFwiIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBmaW5pc2hCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJDYW5jZWxcIiBidXR0b24uXG4gICAgICovXG4gICAgY2FuY2VsQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIGNhbmNlbGxhdGlvbiBjb25maXJtYXRpb24gZGlhbG9nLlxuICAgICAqL1xuICAgIGNvbmZpcm1hdGlvbkRpYWxvZ1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBzdW1tYXJ5IHN0ZXAuXG4gICAgICovXG4gICAgc3VtbWFyeVN0ZXBUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIFwiUmV2aWV3XCIgYnV0dG9uICovXG4gICAgcmV2aWV3QnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2VCb3hTZXJ2aWNlID0gaW5qZWN0KE1lc3NhZ2VCb3hTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIF93aXphcmRHZW5lcmF0b3JTZXJ2aWNlOiBXaXphcmRHZW5lcmF0b3JTZXJ2aWNlLFxuICAgICAgICBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9kaWFsb2dSZWY6IERpYWxvZ1JlZjxXaXphcmREaWFsb2dEYXRhPlxuICAgICkge1xuICAgICAgICBzdXBlcihfd2l6YXJkR2VuZXJhdG9yU2VydmljZSwgX2NkKTtcblxuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuaXRlbXM7XG4gICAgICAgIHRoaXMudGl0bGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS50aXRsZTtcbiAgICAgICAgdGhpcy5hcHBlbmRUb1dpemFyZCA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmFwcGVuZFRvV2l6YXJkO1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25CdXR0b25MYWJlbHMgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzID8/IHt9O1xuICAgICAgICB0aGlzLmNvbnRlbnRIZWlnaHQgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb250ZW50SGVpZ2h0O1xuICAgICAgICB0aGlzLnJlc3BvbnNpdmVQYWRkaW5ncyA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLnJlc3BvbnNpdmVQYWRkaW5ncztcbiAgICAgICAgdGhpcy5nb05leHRCdXR0b25UZW1wbGF0ZSA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmdvTmV4dEJ1dHRvblRlbXBsYXRlO1xuICAgICAgICB0aGlzLmdvQmFja0J1dHRvblRlbXBsYXRlID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuZ29CYWNrQnV0dG9uVGVtcGxhdGU7XG4gICAgICAgIHRoaXMuZmluaXNoQnV0dG9uVGVtcGxhdGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5maW5pc2hCdXR0b25UZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5jYW5jZWxCdXR0b25UZW1wbGF0ZSA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNhbmNlbEJ1dHRvblRlbXBsYXRlO1xuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbkRpYWxvZ1RlbXBsYXRlID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuY29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGU7XG4gICAgICAgIHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuZGlzcGxheVN1bW1hcnlTdGVwIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLnN1bW1hcnlTdGVwVGVtcGxhdGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5zdW1tYXJ5U3RlcFRlbXBsYXRlO1xuICAgICAgICB0aGlzLnJldmlld0J1dHRvblRlbXBsYXRlID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEucmV2aWV3QnV0dG9uVGVtcGxhdGU7XG5cbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ1JlZi5kYXRhLnVuaWZpZWRMYXlvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy51bmlmaWVkTGF5b3V0ID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEudW5pZmllZExheW91dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kaWFsb2dSZWYuZGF0YS5uYXZpZ2F0aW9uQnV0dG9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25CdXR0b25zID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEubmF2aWdhdGlvbkJ1dHRvbnM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGlhbG9nUmVmLmRhdGEuY29uZmlybWF0aW9uRGlhbG9nVGV4dCkge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb25EaWFsb2dUZXh0ID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuY29uZmlybWF0aW9uRGlhbG9nVGV4dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dDYW5jZWxUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbkRpYWxvZ0NhbmNlbFRleHQgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dDYW5jZWxUZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNvbmZpcm1hdGlvbkRpYWxvZ0Nsb3NlVGV4dCkge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb25EaWFsb2dDbG9zZVRleHQgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dDbG9zZVRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2FuY2VscyBXaXphcmQgcHJvZ3Jlc3MgYW5kIGNsb3NlcyB0aGUgZGlhbG9nLlxuICAgICAqL1xuICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuaXNTdGVwc1VudG91Y2hlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYuZGlzbWlzcygpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuY29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGUgfHwgdGhpcy5kZWZhdWx0Q29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGU7XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZUJveFJlZiA9IHRoaXMuX21lc3NhZ2VCb3hTZXJ2aWNlLm9wZW4odGVtcGxhdGUsIHsgcmVzcG9uc2l2ZVBhZGRpbmc6IHRydWUgfSk7XG5cbiAgICAgICAgbWVzc2FnZUJveFJlZi5hZnRlckNsb3NlZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChyZXN1bHQpID0+IHJlc3VsdCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYuZGlzbWlzcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlcyBXaXphcmQgcHJvY2VzcywgZW1pdHMgV2l6YXJkIHJlc3VsdCBhbmQgY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICovXG4gICAgYXN5bmMgZmluaXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pc1N1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBjb25zdCB3aXphcmRSZXN1bHQgPSBhd2FpdCB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldFdpemFyZEZvcm1WYWx1ZSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh3aXphcmRSZXN1bHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXBJZCA9IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0Q3VycmVudFN0ZXBJZCgpO1xuICAgICAgICB0aGlzLnN1Ym1pdFN0ZXBGb3JtcyhjdXJyZW50U3RlcElkKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiBPYmplY3QudmFsdWVzKHJlc3VsdCkuc29tZSgocikgPT4gIXIuc3VjY2VzcykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHdpemFyZFJlc3VsdCA9IGF3YWl0IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0V2l6YXJkRm9ybVZhbHVlKHRydWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh3aXphcmRSZXN1bHQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9nb0JhY2tGbjogKCkgPT4gdm9pZCA9ICgpID0+IHRoaXMuZ29CYWNrKCk7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9nb05leHRGbjogKCkgPT4gUHJvbWlzZTx2b2lkPiA9ICgpID0+IHRoaXMuZ29OZXh0KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2ZpbmlzaEZuOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gKCkgPT4gdGhpcy5maW5pc2goKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfY2FuY2VsRm46ICgpID0+IHZvaWQgPSAoKSA9PiB0aGlzLmNhbmNlbCgpO1xufVxuIiwiPGZkLWRpYWxvZz5cbiAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgPGgyIGZkLXRpdGxlIFtoZWFkZXJTaXplXT1cInRpdGxlLnNpemVcIj57eyB0aXRsZS50ZXh0IH19PC9oMj5cbiAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XG4gICAgPGZkLWRpYWxvZy1ib2R5PlxuICAgICAgICA8ZmRwLXdpemFyZC1ib2R5XG4gICAgICAgICAgICBbbmF2aWdhdGlvbkJ1dHRvbnNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2Rpc3BsYXlTdW1tYXJ5U3RlcF09XCJkaXNwbGF5U3VtbWFyeVN0ZXBcIlxuICAgICAgICAgICAgW3Jlc3BvbnNpdmVQYWRkaW5nc109XCJyZXNwb25zaXZlUGFkZGluZ3NcIlxuICAgICAgICAgICAgW25hdmlnYXRpb25CdXR0b25MYWJlbHNdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHNcIlxuICAgICAgICAgICAgW2N1c3RvbVN1bW1hcnlTdGVwVGVtcGxhdGVdPVwic3VtbWFyeVN0ZXBUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbcmV2aWV3QnV0dG9uVGVtcGxhdGVdPVwicmV2aWV3QnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCIhd2l6YXJkQ3JlYXRlZFwiXG4gICAgICAgICAgICBbYXBwZW5kVG9XaXphcmRdPVwiYXBwZW5kVG9XaXphcmRcIlxuICAgICAgICAgICAgW3VuaWZpZWRMYXlvdXRdPVwidW5pZmllZExheW91dFwiXG4gICAgICAgICAgICBbY29udGVudEhlaWdodF09XCJjb250ZW50SGVpZ2h0XCJcbiAgICAgICAgICAgIChzdGF0dXNDaGFuZ2UpPVwic3RlcFN0YXR1c0NoYW5nZWQoJGV2ZW50LmlkLCAkZXZlbnQuc3RhdHVzKVwiXG4gICAgICAgID48L2ZkcC13aXphcmQtYm9keT5cbiAgICAgICAgQGlmICh3aXphcmRDcmVhdGVkKSB7XG4gICAgICAgICAgICA8ZGl2IGZkLWJhciBiYXJEZXNpZ249XCJmbG9hdGluZy1mb290ZXJcIiBbY2xhc3MuZmQtYmFyLS1yZXNwb25zaXZlLXBhZGRpbmdzXT1cInJlc3BvbnNpdmVQYWRkaW5nc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLXJpZ2h0PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKCFpc0ZpcnN0U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0R29CYWNrQnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1iYXJfX2VsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb0JhY2suY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uVHlwZV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb0JhY2sudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb0JhY2subGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29CYWNrKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ29CYWNrQnV0dG9uVGVtcGxhdGUgfHwgZGVmYXVsdEdvQmFja0J1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBnb0JhY2s6IF9nb0JhY2tGbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWlzTGFzdFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEdvTmV4dEJ1dHRvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYmFyX19lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29OZXh0LmNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29OZXh0LnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29OZXh0LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvTmV4dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFJldmlld0J1dHRvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYmFyX19lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMucmV2aWV3LmNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMucmV2aWV3LnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMucmV2aWV3LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvTmV4dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzQnJhbmNoaW5nU3RlcCAmJiAoIWlzQ3VycmVudFN0ZXBDb21wbGV0ZWQgfHwgX3N0ZXBzT3JkZXJDaGFuZ2VkKSkgfHwgIWlzTmV4dFN0ZXBTdW1tYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ29OZXh0QnV0dG9uVGVtcGxhdGUgfHwgZGVmYXVsdEdvTmV4dEJ1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZ29OZXh0OiBfZ29OZXh0Rm4gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicmV2aWV3QnV0dG9uVGVtcGxhdGUgfHwgZGVmYXVsdFJldmlld0J1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZ29OZXh0OiBfZ29OZXh0Rm4gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpc0xhc3RTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRGaW5pc2hCdXR0b25UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWJhcl9fZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZENvbnRlbnREZW5zaXR5XT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC5jb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmaW5pc2goKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJmaW5pc2hCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0RmluaXNoQnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpbmlzaDogX2ZpbmlzaEZuIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2FuY2VsQnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYmFyX19lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5jYW5jZWwuY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmNhbmNlbC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuY2FuY2VsLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjYW5jZWxCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0Q2FuY2VsQnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY2FuY2VsOiBfY2FuY2VsRm4gfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuPC9mZC1kaWFsb2c+XG48bmctdGVtcGxhdGVcbiAgICBbZmRNZXNzYWdlQm94VGVtcGxhdGVdXG4gICAgbGV0LW1lc3NhZ2VCb3hcbiAgICBsZXQtbWVzc2FnZUJveENvbmZpZz1cIm1lc3NhZ2VCb3hDb25maWdcIlxuICAgICNkZWZhdWx0Q29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGVcbj5cbiAgICA8ZmQtbWVzc2FnZS1ib3ggW21lc3NhZ2VCb3hDb25maWddPVwibWVzc2FnZUJveENvbmZpZ1wiIFttZXNzYWdlQm94UmVmXT1cIm1lc3NhZ2VCb3hcIj5cbiAgICAgICAgPGZkLW1lc3NhZ2UtYm94LWJvZHk+XG4gICAgICAgICAgICB7eyBjb25maXJtYXRpb25EaWFsb2dUZXh0IH19XG4gICAgICAgIDwvZmQtbWVzc2FnZS1ib3gtYm9keT5cbiAgICAgICAgPGZkLW1lc3NhZ2UtYm94LWZvb3Rlcj5cbiAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbmZpcm1hdGlvbkRpYWxvZ0Nsb3NlVGV4dFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1lc3NhZ2VCb3guY2xvc2UodHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXIgZmRrSW5pdGlhbEZvY3VzIFtsYWJlbF09XCJjb25maXJtYXRpb25EaWFsb2dDYW5jZWxUZXh0XCIgKGNsaWNrKT1cIm1lc3NhZ2VCb3guZGlzbWlzcygpXCI+XG4gICAgICAgICAgICA8L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgIDwvZmQtbWVzc2FnZS1ib3gtZm9vdGVyPlxuICAgIDwvZmQtbWVzc2FnZS1ib3g+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, In
2
2
  import { Subject, firstValueFrom } from 'rxjs';
3
3
  import { debounceTime, takeUntil } from 'rxjs/operators';
4
4
  import { WizardModule } from '@fundamental-ngx/core/wizard';
5
- import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';
5
+ import { NgTemplateOutlet } from '@angular/common';
6
6
  import { ContentDensityDirective } from '@fundamental-ngx/core/content-density';
7
7
  import { ButtonComponent } from '@fundamental-ngx/platform/button';
8
8
  import { WizardGeneratorService } from '../../wizard-generator.service';
@@ -155,22 +155,20 @@ export class WizardBodyComponent {
155
155
  _trackFn(_index, item) {
156
156
  return item.id;
157
157
  }
158
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: WizardBodyComponent, deps: [{ token: i1.WizardGeneratorService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
159
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: WizardBodyComponent, isStandalone: true, selector: "fdp-wizard-body", inputs: { responsivePaddings: "responsivePaddings", navigationButtonLabels: "navigationButtonLabels", appendToWizard: "appendToWizard", contentHeight: "contentHeight", isFirstStep: "isFirstStep", isLastStep: "isLastStep", isNextStepSummary: "isNextStepSummary", displaySummaryStep: "displaySummaryStep", goNextButtonTemplate: "goNextButtonTemplate", finishButtonTemplate: "finishButtonTemplate", customSummaryStepTemplate: "customSummaryStepTemplate", reviewButtonTemplate: "reviewButtonTemplate", isSummaryStep: "isSummaryStep", navigationButtons: "navigationButtons", unifiedLayout: "unifiedLayout", isBranchingStep: "isBranchingStep", isCurrentStepCompleted: "isCurrentStepCompleted", stepsOrderChanged: "stepsOrderChanged" }, outputs: { statusChange: "statusChange", goNext: "goNext", finish: "finish" }, ngImport: i0, template: "<fd-wizard\n [displaySummaryStep]=\"displaySummaryStep\"\n [responsivePaddings]=\"responsivePaddings\"\n [appendToWizard]=\"appendToWizard\"\n [contentHeight]=\"contentHeight\"\n *ngIf=\"visibleItems\"\n>\n <fd-wizard-navigation>\n <ul fd-wizard-progress-bar>\n <ng-container *ngFor=\"let step of visibleItems; let i = index; trackBy: _trackFn\">\n <li\n fd-wizard-step\n [label]=\"step.name\"\n [status]=\"step.status\"\n [optionalText]=\"step.optionalText\"\n [branching]=\"!!step.branching\"\n [stepClickValidator]=\"stepClickValidatorFn(i)\"\n [isSummary]=\"!!step.summary\"\n (statusChange)=\"stepStatusChanged(step.id, $event)\"\n (stepClicked)=\"stepClicked(step.id)\"\n >\n <fd-wizard-step-indicator [glyph]=\"step.icon || null\">\n <ng-container *ngIf=\"!step.icon\">{{ i + 1 }}</ng-container>\n </fd-wizard-step-indicator>\n <fd-wizard-content>\n <fdp-wizard-generator-step\n *ngIf=\"!step.summary\"\n [unifiedLayout]=\"unifiedLayout\"\n [item]=\"step\"\n [stepStatus]=\"step.status\"\n ></fdp-wizard-generator-step>\n <fdp-wizard-summary-step\n *ngIf=\"step.summary\"\n [customSummaryStepTemplate]=\"customSummaryStepTemplate\"\n [status]=\"step.status\"\n ></fdp-wizard-summary-step>\n\n <fd-wizard-next-step [canHide]=\"appendToWizard\" *ngIf=\"navigationButtons\">\n <ng-container *ngIf=\"!isLastStep\">\n <ng-template #defaultGoNextButtonTemplate>\n <fdp-button\n [fdContentDensity]=\"navigationButtonLabels.goNext.contentDensity\"\n [buttonType]=\"navigationButtonLabels.goNext.type\"\n [label]=\"navigationButtonLabels.goNext.label\"\n (click)=\"goNext.emit()\"\n ></fdp-button>\n </ng-template>\n <ng-template #defaultReviewButtonTemplate>\n <fdp-button\n [fdContentDensity]=\"navigationButtonLabels.review.contentDensity\"\n [buttonType]=\"navigationButtonLabels.review.type\"\n [label]=\"navigationButtonLabels.review.label\"\n (click)=\"goNext.emit()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngIf]=\"\n (isBranchingStep && (!isCurrentStepCompleted || stepsOrderChanged)) ||\n !isNextStepSummary\n \"\n [ngIfElse]=\"reviewButton\"\n >\n <ng-template\n [ngTemplateOutlet]=\"goNextButtonTemplate || defaultGoNextButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n </ng-template>\n <ng-template #reviewButton>\n <ng-template\n [ngTemplateOutlet]=\"reviewButtonTemplate || defaultReviewButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"isLastStep\">\n <ng-template #defaultFinishButtonTemplate>\n <fdp-button\n [fdContentDensity]=\"navigationButtonLabels.finish.contentDensity\"\n [buttonType]=\"navigationButtonLabels.finish.type\"\n [label]=\"navigationButtonLabels.finish.label\"\n (click)=\"finish.emit()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"finishButtonTemplate || defaultFinishButtonTemplate\"\n [ngTemplateOutletContext]=\"{ finish: _finishFn }\"\n ></ng-template>\n </ng-container>\n </fd-wizard-next-step>\n </fd-wizard-content>\n </li>\n </ng-container>\n </ul>\n </fd-wizard-navigation>\n</fd-wizard>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: WizardModule }, { kind: "component", type: i2.WizardComponent, selector: "fd-wizard", inputs: ["appendToWizard", "contentHeight", "responsivePaddings", "displaySummaryStep", "ariaLabel"] }, { kind: "component", type: i2.WizardNavigationComponent, selector: "fd-wizard-navigation", inputs: ["ariaLabel"] }, { kind: "directive", type: i2.WizardProgressBarDirective, selector: "[fd-wizard-progress-bar]", inputs: ["size"] }, { kind: "component", type: i2.WizardStepComponent, selector: "[fd-wizard-step]", inputs: ["ariaLabel", "ariaRoleDecription", "status", "branching", "label", "optionalText", "isSummary", "stepClickValidator"], outputs: ["statusChange", "stepClicked", "stepIndicatorItemClicked"] }, { kind: "component", type: i2.WizardStepIndicatorComponent, selector: "fd-wizard-step-indicator", inputs: ["glyph"], outputs: ["stepIndicatorItemClicked"] }, { kind: "component", type: i2.WizardContentComponent, selector: "fd-wizard-content", inputs: ["contentBackground", "size"] }, { kind: "component", type: i2.WizardNextStepComponent, selector: "fd-wizard-next-step", inputs: ["floating", "canHide"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: WizardGeneratorStepComponent, selector: "fdp-wizard-generator-step", inputs: ["item", "stepStatus", "unifiedLayout"], outputs: ["formsSubmitted", "formsCreated"] }, { kind: "component", type: WizardSummaryStepComponent, selector: "fdp-wizard-summary-step", inputs: ["status", "customSummaryStepTemplate"] }, { kind: "component", type: ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "toggled", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "directive", type: ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
158
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: WizardBodyComponent, deps: [{ token: i1.WizardGeneratorService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
159
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.4", type: WizardBodyComponent, isStandalone: true, selector: "fdp-wizard-body", inputs: { responsivePaddings: "responsivePaddings", navigationButtonLabels: "navigationButtonLabels", appendToWizard: "appendToWizard", contentHeight: "contentHeight", isFirstStep: "isFirstStep", isLastStep: "isLastStep", isNextStepSummary: "isNextStepSummary", displaySummaryStep: "displaySummaryStep", goNextButtonTemplate: "goNextButtonTemplate", finishButtonTemplate: "finishButtonTemplate", customSummaryStepTemplate: "customSummaryStepTemplate", reviewButtonTemplate: "reviewButtonTemplate", isSummaryStep: "isSummaryStep", navigationButtons: "navigationButtons", unifiedLayout: "unifiedLayout", isBranchingStep: "isBranchingStep", isCurrentStepCompleted: "isCurrentStepCompleted", stepsOrderChanged: "stepsOrderChanged" }, outputs: { statusChange: "statusChange", goNext: "goNext", finish: "finish" }, ngImport: i0, template: "@if (visibleItems) {\n <fd-wizard\n [displaySummaryStep]=\"displaySummaryStep\"\n [responsivePaddings]=\"responsivePaddings\"\n [appendToWizard]=\"appendToWizard\"\n [contentHeight]=\"contentHeight\"\n >\n <fd-wizard-navigation>\n <ul fd-wizard-progress-bar>\n @for (step of visibleItems; track _trackFn(i, step); let i = $index) {\n <li\n fd-wizard-step\n [label]=\"step.name\"\n [status]=\"step.status\"\n [optionalText]=\"step.optionalText\"\n [branching]=\"!!step.branching\"\n [stepClickValidator]=\"stepClickValidatorFn(i)\"\n [isSummary]=\"!!step.summary\"\n (statusChange)=\"stepStatusChanged(step.id, $event)\"\n (stepClicked)=\"stepClicked(step.id)\"\n >\n <fd-wizard-step-indicator [glyph]=\"step.icon || null\">\n @if (!step.icon) {\n {{ i + 1 }}\n }\n </fd-wizard-step-indicator>\n <fd-wizard-content>\n @if (!step.summary) {\n <fdp-wizard-generator-step\n [unifiedLayout]=\"unifiedLayout\"\n [item]=\"step\"\n [stepStatus]=\"step.status\"\n ></fdp-wizard-generator-step>\n } @else {\n <fdp-wizard-summary-step\n [customSummaryStepTemplate]=\"customSummaryStepTemplate\"\n [status]=\"step.status\"\n ></fdp-wizard-summary-step>\n }\n @if (navigationButtons) {\n <fd-wizard-next-step [canHide]=\"appendToWizard\">\n @if (!isLastStep) {\n <ng-template #defaultGoNextButtonTemplate>\n <fdp-button\n [fdContentDensity]=\"navigationButtonLabels.goNext.contentDensity\"\n [buttonType]=\"navigationButtonLabels.goNext.type\"\n [label]=\"navigationButtonLabels.goNext.label\"\n (click)=\"goNext.emit()\"\n ></fdp-button>\n </ng-template>\n <ng-template #defaultReviewButtonTemplate>\n <fdp-button\n [fdContentDensity]=\"navigationButtonLabels.review.contentDensity\"\n [buttonType]=\"navigationButtonLabels.review.type\"\n [label]=\"navigationButtonLabels.review.label\"\n (click)=\"goNext.emit()\"\n ></fdp-button>\n </ng-template>\n @if (\n (isBranchingStep && (!isCurrentStepCompleted || stepsOrderChanged)) ||\n !isNextStepSummary\n ) {\n <ng-template\n [ngTemplateOutlet]=\"goNextButtonTemplate || defaultGoNextButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"reviewButtonTemplate || defaultReviewButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n }\n } @else {\n <ng-template #defaultFinishButtonTemplate>\n <fdp-button\n [fdContentDensity]=\"navigationButtonLabels.finish.contentDensity\"\n [buttonType]=\"navigationButtonLabels.finish.type\"\n [label]=\"navigationButtonLabels.finish.label\"\n (click)=\"finish.emit()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"finishButtonTemplate || defaultFinishButtonTemplate\"\n [ngTemplateOutletContext]=\"{ finish: _finishFn }\"\n ></ng-template>\n }\n </fd-wizard-next-step>\n }\n </fd-wizard-content>\n </li>\n }\n </ul>\n </fd-wizard-navigation>\n </fd-wizard>\n}\n", dependencies: [{ kind: "ngmodule", type: WizardModule }, { kind: "component", type: i2.WizardComponent, selector: "fd-wizard", inputs: ["appendToWizard", "contentHeight", "responsivePaddings", "displaySummaryStep", "ariaLabel"] }, { kind: "component", type: i2.WizardNavigationComponent, selector: "fd-wizard-navigation", inputs: ["ariaLabel"] }, { kind: "directive", type: i2.WizardProgressBarDirective, selector: "[fd-wizard-progress-bar]", inputs: ["size"] }, { kind: "component", type: i2.WizardStepComponent, selector: "[fd-wizard-step]", inputs: ["ariaLabel", "ariaRoleDecription", "status", "branching", "label", "optionalText", "isSummary", "stepClickValidator"], outputs: ["statusChange", "stepClicked", "stepIndicatorItemClicked"] }, { kind: "component", type: i2.WizardStepIndicatorComponent, selector: "fd-wizard-step-indicator", inputs: ["glyph"], outputs: ["stepIndicatorItemClicked"] }, { kind: "component", type: i2.WizardContentComponent, selector: "fd-wizard-content", inputs: ["contentBackground", "size"] }, { kind: "component", type: i2.WizardNextStepComponent, selector: "fd-wizard-next-step", inputs: ["floating", "canHide"] }, { kind: "component", type: WizardGeneratorStepComponent, selector: "fdp-wizard-generator-step", inputs: ["item", "stepStatus", "unifiedLayout"], outputs: ["formsSubmitted", "formsCreated"] }, { kind: "component", type: WizardSummaryStepComponent, selector: "fdp-wizard-summary-step", inputs: ["status", "customSummaryStepTemplate"] }, { kind: "component", type: ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "toggled", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "directive", type: ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
160
160
  }
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: WizardBodyComponent, decorators: [{
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: WizardBodyComponent, decorators: [{
162
162
  type: Component,
163
163
  args: [{ selector: 'fdp-wizard-body', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
164
- NgIf,
165
164
  WizardModule,
166
- NgFor,
167
165
  WizardGeneratorStepComponent,
168
166
  WizardSummaryStepComponent,
169
167
  ButtonComponent,
170
168
  ContentDensityDirective,
171
169
  NgTemplateOutlet
172
- ], template: "<fd-wizard\n [displaySummaryStep]=\"displaySummaryStep\"\n [responsivePaddings]=\"responsivePaddings\"\n [appendToWizard]=\"appendToWizard\"\n [contentHeight]=\"contentHeight\"\n *ngIf=\"visibleItems\"\n>\n <fd-wizard-navigation>\n <ul fd-wizard-progress-bar>\n <ng-container *ngFor=\"let step of visibleItems; let i = index; trackBy: _trackFn\">\n <li\n fd-wizard-step\n [label]=\"step.name\"\n [status]=\"step.status\"\n [optionalText]=\"step.optionalText\"\n [branching]=\"!!step.branching\"\n [stepClickValidator]=\"stepClickValidatorFn(i)\"\n [isSummary]=\"!!step.summary\"\n (statusChange)=\"stepStatusChanged(step.id, $event)\"\n (stepClicked)=\"stepClicked(step.id)\"\n >\n <fd-wizard-step-indicator [glyph]=\"step.icon || null\">\n <ng-container *ngIf=\"!step.icon\">{{ i + 1 }}</ng-container>\n </fd-wizard-step-indicator>\n <fd-wizard-content>\n <fdp-wizard-generator-step\n *ngIf=\"!step.summary\"\n [unifiedLayout]=\"unifiedLayout\"\n [item]=\"step\"\n [stepStatus]=\"step.status\"\n ></fdp-wizard-generator-step>\n <fdp-wizard-summary-step\n *ngIf=\"step.summary\"\n [customSummaryStepTemplate]=\"customSummaryStepTemplate\"\n [status]=\"step.status\"\n ></fdp-wizard-summary-step>\n\n <fd-wizard-next-step [canHide]=\"appendToWizard\" *ngIf=\"navigationButtons\">\n <ng-container *ngIf=\"!isLastStep\">\n <ng-template #defaultGoNextButtonTemplate>\n <fdp-button\n [fdContentDensity]=\"navigationButtonLabels.goNext.contentDensity\"\n [buttonType]=\"navigationButtonLabels.goNext.type\"\n [label]=\"navigationButtonLabels.goNext.label\"\n (click)=\"goNext.emit()\"\n ></fdp-button>\n </ng-template>\n <ng-template #defaultReviewButtonTemplate>\n <fdp-button\n [fdContentDensity]=\"navigationButtonLabels.review.contentDensity\"\n [buttonType]=\"navigationButtonLabels.review.type\"\n [label]=\"navigationButtonLabels.review.label\"\n (click)=\"goNext.emit()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngIf]=\"\n (isBranchingStep && (!isCurrentStepCompleted || stepsOrderChanged)) ||\n !isNextStepSummary\n \"\n [ngIfElse]=\"reviewButton\"\n >\n <ng-template\n [ngTemplateOutlet]=\"goNextButtonTemplate || defaultGoNextButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n </ng-template>\n <ng-template #reviewButton>\n <ng-template\n [ngTemplateOutlet]=\"reviewButtonTemplate || defaultReviewButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"isLastStep\">\n <ng-template #defaultFinishButtonTemplate>\n <fdp-button\n [fdContentDensity]=\"navigationButtonLabels.finish.contentDensity\"\n [buttonType]=\"navigationButtonLabels.finish.type\"\n [label]=\"navigationButtonLabels.finish.label\"\n (click)=\"finish.emit()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"finishButtonTemplate || defaultFinishButtonTemplate\"\n [ngTemplateOutletContext]=\"{ finish: _finishFn }\"\n ></ng-template>\n </ng-container>\n </fd-wizard-next-step>\n </fd-wizard-content>\n </li>\n </ng-container>\n </ul>\n </fd-wizard-navigation>\n</fd-wizard>\n" }]
173
- }], ctorParameters: function () { return [{ type: i1.WizardGeneratorService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { responsivePaddings: [{
170
+ ], template: "@if (visibleItems) {\n <fd-wizard\n [displaySummaryStep]=\"displaySummaryStep\"\n [responsivePaddings]=\"responsivePaddings\"\n [appendToWizard]=\"appendToWizard\"\n [contentHeight]=\"contentHeight\"\n >\n <fd-wizard-navigation>\n <ul fd-wizard-progress-bar>\n @for (step of visibleItems; track _trackFn(i, step); let i = $index) {\n <li\n fd-wizard-step\n [label]=\"step.name\"\n [status]=\"step.status\"\n [optionalText]=\"step.optionalText\"\n [branching]=\"!!step.branching\"\n [stepClickValidator]=\"stepClickValidatorFn(i)\"\n [isSummary]=\"!!step.summary\"\n (statusChange)=\"stepStatusChanged(step.id, $event)\"\n (stepClicked)=\"stepClicked(step.id)\"\n >\n <fd-wizard-step-indicator [glyph]=\"step.icon || null\">\n @if (!step.icon) {\n {{ i + 1 }}\n }\n </fd-wizard-step-indicator>\n <fd-wizard-content>\n @if (!step.summary) {\n <fdp-wizard-generator-step\n [unifiedLayout]=\"unifiedLayout\"\n [item]=\"step\"\n [stepStatus]=\"step.status\"\n ></fdp-wizard-generator-step>\n } @else {\n <fdp-wizard-summary-step\n [customSummaryStepTemplate]=\"customSummaryStepTemplate\"\n [status]=\"step.status\"\n ></fdp-wizard-summary-step>\n }\n @if (navigationButtons) {\n <fd-wizard-next-step [canHide]=\"appendToWizard\">\n @if (!isLastStep) {\n <ng-template #defaultGoNextButtonTemplate>\n <fdp-button\n [fdContentDensity]=\"navigationButtonLabels.goNext.contentDensity\"\n [buttonType]=\"navigationButtonLabels.goNext.type\"\n [label]=\"navigationButtonLabels.goNext.label\"\n (click)=\"goNext.emit()\"\n ></fdp-button>\n </ng-template>\n <ng-template #defaultReviewButtonTemplate>\n <fdp-button\n [fdContentDensity]=\"navigationButtonLabels.review.contentDensity\"\n [buttonType]=\"navigationButtonLabels.review.type\"\n [label]=\"navigationButtonLabels.review.label\"\n (click)=\"goNext.emit()\"\n ></fdp-button>\n </ng-template>\n @if (\n (isBranchingStep && (!isCurrentStepCompleted || stepsOrderChanged)) ||\n !isNextStepSummary\n ) {\n <ng-template\n [ngTemplateOutlet]=\"goNextButtonTemplate || defaultGoNextButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"reviewButtonTemplate || defaultReviewButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n }\n } @else {\n <ng-template #defaultFinishButtonTemplate>\n <fdp-button\n [fdContentDensity]=\"navigationButtonLabels.finish.contentDensity\"\n [buttonType]=\"navigationButtonLabels.finish.type\"\n [label]=\"navigationButtonLabels.finish.label\"\n (click)=\"finish.emit()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"finishButtonTemplate || defaultFinishButtonTemplate\"\n [ngTemplateOutletContext]=\"{ finish: _finishFn }\"\n ></ng-template>\n }\n </fd-wizard-next-step>\n }\n </fd-wizard-content>\n </li>\n }\n </ul>\n </fd-wizard-navigation>\n </fd-wizard>\n}\n" }]
171
+ }], ctorParameters: () => [{ type: i1.WizardGeneratorService }, { type: i0.ChangeDetectorRef }], propDecorators: { responsivePaddings: [{
174
172
  type: Input
175
173
  }], navigationButtonLabels: [{
176
174
  type: Input
@@ -213,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
213
211
  }], finish: [{
214
212
  type: Output
215
213
  }] } });
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLWJvZHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3dpemFyZC1nZW5lcmF0b3IvY29tcG9uZW50cy93aXphcmQtYm9keS93aXphcmQtYm9keS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvd2l6YXJkLWdlbmVyYXRvci9jb21wb25lbnRzL3dpemFyZC1ib2R5L3dpemFyZC1ib2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEVBQ1gsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHekQsT0FBTyxFQUFFLFlBQVksRUFBb0IsTUFBTSw4QkFBOEIsQ0FBQztBQUU5RSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUduRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7OztBQXdCbEcsTUFBTSxPQUFPLG1CQUFt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LHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNMLElBQUk7d0JBQ0osWUFBWTt3QkFDWixLQUFLO3dCQUNMLDRCQUE0Qjt3QkFDNUIsMEJBQTBCO3dCQUMxQixlQUFlO3dCQUNmLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3FCQUNuQjs2SUFPRCxrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBT04sc0JBQXNCO3NCQURyQixLQUFLO2dCQVFOLGNBQWM7c0JBRGIsS0FBSztnQkFRTixhQUFhO3NCQURaLEtBQUs7Z0JBT04sV0FBVztzQkFEVixLQUFLO2dCQU9OLFVBQVU7c0JBRFQsS0FBSztnQkFPTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBT04sa0JBQWtCO3NCQURqQixLQUFLO2dCQU9OLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFPTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBT04seUJBQXlCO3NCQUR4QixLQUFLO2dCQUtOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFPTixhQUFhO3NCQURaLEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sc0JBQXNCO3NCQURyQixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFPTixZQUFZO3NCQURYLE1BQU07Z0JBT1AsTUFBTTtzQkFETCxNQUFNO2dCQU9QLE1BQU07c0JBREwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBXaXphcmRNb2R1bGUsIFdpemFyZFN0ZXBTdGF0dXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvd2l6YXJkJztcblxuaW1wb3J0IHsgTmdGb3IsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vYnV0dG9uJztcbmltcG9ydCB7IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbSwgV2l6YXJkR2VuZXJhdG9ySXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvd2l6YXJkLWdlbmVyYXRvci1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBXaXphcmROYXZpZ2F0aW9uQnV0dG9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvd2l6YXJkLW5hdmlnYXRpb24tYnV0dG9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2l6YXJkR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3dpemFyZC1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBXaXphcmRHZW5lcmF0b3JTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vd2l6YXJkLWdlbmVyYXRvci1zdGVwL3dpemFyZC1nZW5lcmF0b3Itc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2l6YXJkU3VtbWFyeVN0ZXBDb21wb25lbnQgfSBmcm9tICcuLi93aXphcmQtc3VtbWFyeS1zdGVwL3dpemFyZC1zdW1tYXJ5LXN0ZXAuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBXaXphcmRTdGVwQ2hhbmdlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHN0YXR1czogV2l6YXJkU3RlcFN0YXR1cztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtd2l6YXJkLWJvZHknLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQtYm9keS5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgV2l6YXJkTW9kdWxlLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgV2l6YXJkR2VuZXJhdG9yU3RlcENvbXBvbmVudCxcbiAgICAgICAgV2l6YXJkU3VtbWFyeVN0ZXBDb21wb25lbnQsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgQ29udGVudERlbnNpdHlEaXJlY3RpdmUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFdpemFyZEJvZHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgb3Igbm90IGFwcGx5IHJlc3BvbnNpdmUgcGFkZGluZ3Mgc3R5bGluZy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlc3BvbnNpdmVQYWRkaW5ncyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQnV0dG9uIGxhYmVscyB0byBiZSB1c2VkIGluIFdpemFyZCBuYXZpZ2F0aW9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzOiBSZXF1aXJlZDxXaXphcmROYXZpZ2F0aW9uQnV0dG9ucz47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciBvciBub3QgdG8gYXBwZW5kIHRoZSBzdGVwIHRvIHRoZSB3aXphcmQuIElmIGZhbHNlLCBlYWNoIHN0ZXAgd2lsbCBiZSBkaXNwbGF5ZWQgb24gYSBkaWZmZXJlbnQgcGFnZS5cbiAgICAgKiBEZWZhdWx0IGlzIHRydWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcHBlbmRUb1dpemFyZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3VzdG9tIGhlaWdodCB0byB1c2UgZm9yIHRoZSB3aXphcmQncyBjb250ZW50IHBhbmUuIEJ5IGRlZmF1bHQsIHRoaXMgdmFsdWUgaXMgY2FsYygxMDB2aCAtIDE0NHB4KSwgd2hlcmUgMTQ0cHhcbiAgICAgKiBpcyB0aGUgY29tYmluZWQgaGVpZ2h0IG9mIHRoZSBTaGVsbGJhciwgd2l6YXJkIGhlYWRlciBhbmQgd2l6YXJkIGZvb3Rlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRlbnRIZWlnaHQ6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciBvciBub3QgV2l6YXJkIGlzIGN1cnJlbnRseSBvbiB0aGUgZmlyc3Qgc3RlcFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNGaXJzdFN0ZXAgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIFdpemFyZCBpcyBjdXJyZW50bHkgb24gdGhlIGxhc3Qgc3RlcC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzTGFzdFN0ZXAgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgbmV4dCBzdGVwIGlzIGEgU3VtbWFyeSBzdGVwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNOZXh0U3RlcFN1bW1hcnkgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBCb29sZWFuIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRvIGRpc3BsYXkgU3VtbWFyeSBzdGVwIGluIFdpemFyZCBwcm9ncmVzcyBiYXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5U3VtbWFyeVN0ZXAgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJHbyBOZXh0XCIgYnV0dG9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ29OZXh0QnV0dG9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIFwiRmluaXNoXCIgYnV0dG9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmluaXNoQnV0dG9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIHN1bW1hcnkgc3RlcC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGN1c3RvbVN1bW1hcnlTdGVwVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKiogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBcIlJldmlld1wiIGJ1dHRvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmV2aWV3QnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSXMgY3VycmVudCBzdGVwIGlzIHN1bW1hcnkgc3RlcC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzU3VtbWFyeVN0ZXAgPSBmYWxzZTtcblxuICAgIC8qKiBJZiBuYXZpZ2F0aW9uIGJ1dHRvbnMgc2hvdWxkIGJlIHZpc2libGUuICovXG4gICAgQElucHV0KClcbiAgICBuYXZpZ2F0aW9uQnV0dG9ucyA9IHRydWU7XG5cbiAgICAvKiogV2hldGhlciBvciBub3QgYWxsIGZvcm0gaXRlbXMgc2hvdWxkIGhhdmUgaWRlbnRpY2FsIGxheW91dCBwcm92aWRlZCBmb3IgZm9ybSBncm91cC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHVuaWZpZWRMYXlvdXQgPSB0cnVlO1xuXG4gICAgLyoqIFdoZXRoZXIgY3VycmVudCBzdGVwIGlzIGEgYnJhbmNoaW5nIHN0ZXAuICovXG4gICAgQElucHV0KClcbiAgICBpc0JyYW5jaGluZ1N0ZXAgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGN1cnJlbnQgc3RlcCBpcyBjb21wbGV0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzQ3VycmVudFN0ZXBDb21wbGV0ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIG9yZGVyIG9mIHN0ZXBzIHdhcyBjaGFuZ2VkICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RlcHNPcmRlckNoYW5nZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0cyB3aGVuIHNvbWUgc3RlcCBzdGF0dXMgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzdGF0dXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFdpemFyZFN0ZXBDaGFuZ2U+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdHMgd2hlbiBcIkdvIG5leHRcIiBidXR0b24gaGFzIGJlZW4gY2xpY2tlZFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGdvTmV4dCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0cyB3aGVuIFwiRmluaXNoXCIgYnV0dG9uIGhhcyBiZWVuIGNsaWNrZWRcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBmaW5pc2ggPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX3Zpc2libGVJdGVtczogUHJlcGFyZWRXaXphcmRHZW5lcmF0b3JJdGVtW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQXJyYXkgb2YgdmlzaWJsZSBXaXphcmQgU3RlcHMuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgICBzZXQgdmlzaWJsZUl0ZW1zKGl0ZW1zOiBQcmVwYXJlZFdpemFyZEdlbmVyYXRvckl0ZW1bXSkge1xuICAgICAgICB0aGlzLl92aXNpYmxlSXRlbXMgPSBpdGVtcztcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgICBnZXQgdmlzaWJsZUl0ZW1zKCk6IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVJdGVtcyB8fCB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLml0ZW1zO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF93aXphcmRHZW5lcmF0b3JTZXJ2aWNlOiBXaXphcmRHZW5lcmF0b3JTZXJ2aWNlLCBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2dvTmV4dEZuOiAoKSA9PiB2b2lkID0gKCkgPT4gdGhpcy5nb05leHQuZW1pdCgpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9maW5pc2hGbjogKCkgPT4gdm9pZCA9ICgpID0+IHRoaXMuZmluaXNoLmVtaXQoKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDdXN0b20gc3RlcCBzdGF0dXMgY2hhbmdlIHZhbGlkYXRvciBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0gaW5kZXggQ3VycmVudCBzdGVwIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBJZiB0aGlzIHN0ZXAgc3RhdHVzIGNhbiBiZSBjaGFuZ2VkLlxuICAgICAqL1xuICAgIHN0ZXBDbGlja1ZhbGlkYXRvckZuKGluZGV4OiBudW1iZXIpOiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwSW5kZXggPSB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldEN1cnJlbnRTdGVwSW5kZXgoKTtcbiAgICAgICAgICAgIGNvbnN0IGlzU3VtbWFyeVN0ZXAgPSB0aGlzLl92aXNpYmxlSXRlbXNbY3VycmVudFN0ZXBJbmRleF0/LnN1bW1hcnkgPT09IHRydWU7XG5cbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gY3VycmVudFN0ZXBJbmRleCB8fCBpc1N1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl92aXNpYmxlSXRlbXMuc2xpY2UoMCwgaW5kZXgpLmZpbmQoKGkpID0+ICFpLmNvbXBsZXRlZCAmJiAhaS5zdW1tYXJ5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UudmFsaWRhdGVTdGVwRm9ybXModHJ1ZSkpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZVxuICAgICAgICAgICAgLmdldFZpc2libGVTdGVwcygpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTApLCB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh2aXNpYmxlU3RlcHMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl92aXNpYmxlSXRlbXMgPSB2aXNpYmxlU3RlcHM7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDYWxsYmFjayBmdW5jdGlvbiBmb3Igc3RhdHVzIGNoYW5nZS5cbiAgICAgKiBAcGFyYW0gaWQgc3RlcCBJRC5cbiAgICAgKiBAcGFyYW0gc3RhdHVzIG5ldyBzdGVwIHN0YXR1cy5cbiAgICAgKi9cbiAgICBzdGVwU3RhdHVzQ2hhbmdlZChpZDogc3RyaW5nLCBzdGF0dXM6IFdpemFyZFN0ZXBTdGF0dXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGF0dXNDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0ZXBDbGlja2VkKHN0ZXBJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN0ZXBJbmRleCA9IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0U3RlcEluZGV4KHN0ZXBJZCk7XG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2Uuc2V0TmV4dFN0ZXBJbmRleChzdGVwSW5kZXggKyAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIF9pbmRleFxuICAgICAqIEBwYXJhbSBpdGVtXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBfdHJhY2tGbihfaW5kZXg6IG51bWJlciwgaXRlbTogV2l6YXJkR2VuZXJhdG9ySXRlbSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xuICAgIH1cbn1cbiIsIjxmZC13aXphcmRcbiAgICBbZGlzcGxheVN1bW1hcnlTdGVwXT1cImRpc3BsYXlTdW1tYXJ5U3RlcFwiXG4gICAgW3Jlc3BvbnNpdmVQYWRkaW5nc109XCJyZXNwb25zaXZlUGFkZGluZ3NcIlxuICAgIFthcHBlbmRUb1dpemFyZF09XCJhcHBlbmRUb1dpemFyZFwiXG4gICAgW2NvbnRlbnRIZWlnaHRdPVwiY29udGVudEhlaWdodFwiXG4gICAgKm5nSWY9XCJ2aXNpYmxlSXRlbXNcIlxuPlxuICAgIDxmZC13aXphcmQtbmF2aWdhdGlvbj5cbiAgICAgICAgPHVsIGZkLXdpemFyZC1wcm9ncmVzcy1iYXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdGVwIG9mIHZpc2libGVJdGVtczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogX3RyYWNrRm5cIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgZmQtd2l6YXJkLXN0ZXBcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInN0ZXAubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwic3RlcC5zdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uYWxUZXh0XT1cInN0ZXAub3B0aW9uYWxUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW2JyYW5jaGluZ109XCIhIXN0ZXAuYnJhbmNoaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0ZXBDbGlja1ZhbGlkYXRvcl09XCJzdGVwQ2xpY2tWYWxpZGF0b3JGbihpKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc1N1bW1hcnldPVwiISFzdGVwLnN1bW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAoc3RhdHVzQ2hhbmdlKT1cInN0ZXBTdGF0dXNDaGFuZ2VkKHN0ZXAuaWQsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoc3RlcENsaWNrZWQpPVwic3RlcENsaWNrZWQoc3RlcC5pZClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZkLXdpemFyZC1zdGVwLWluZGljYXRvciBbZ2x5cGhdPVwic3RlcC5pY29uIHx8IG51bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3RlcC5pY29uXCI+e3sgaSArIDEgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9mZC13aXphcmQtc3RlcC1pbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgICAgIDxmZC13aXphcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtd2l6YXJkLWdlbmVyYXRvci1zdGVwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc3RlcC5zdW1tYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdW5pZmllZExheW91dF09XCJ1bmlmaWVkTGF5b3V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbV09XCJzdGVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RlcFN0YXR1c109XCJzdGVwLnN0YXR1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtd2l6YXJkLWdlbmVyYXRvci1zdGVwPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC13aXphcmQtc3VtbWFyeS1zdGVwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdGVwLnN1bW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21TdW1tYXJ5U3RlcFRlbXBsYXRlXT1cImN1c3RvbVN1bW1hcnlTdGVwVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwic3RlcC5zdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLXdpemFyZC1zdW1tYXJ5LXN0ZXA+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC13aXphcmQtbmV4dC1zdGVwIFtjYW5IaWRlXT1cImFwcGVuZFRvV2l6YXJkXCIgKm5nSWY9XCJuYXZpZ2F0aW9uQnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMYXN0U3RlcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRHb05leHRCdXR0b25UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwibmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb05leHQuY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cIm5hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29OZXh0LnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmdvTmV4dC5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvTmV4dC5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0UmV2aWV3QnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZENvbnRlbnREZW5zaXR5XT1cIm5hdmlnYXRpb25CdXR0b25MYWJlbHMucmV2aWV3LmNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uVHlwZV09XCJuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLnJldmlldy50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5yZXZpZXcubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb05leHQuZW1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nSWZdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzQnJhbmNoaW5nU3RlcCAmJiAoIWlzQ3VycmVudFN0ZXBDb21wbGV0ZWQgfHwgc3RlcHNPcmRlckNoYW5nZWQpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc05leHRTdGVwU3VtbWFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0lmRWxzZV09XCJyZXZpZXdCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnb05leHRCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0R29OZXh0QnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGdvTmV4dDogX2dvTmV4dEZuIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmV2aWV3QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicmV2aWV3QnV0dG9uVGVtcGxhdGUgfHwgZGVmYXVsdFJldmlld0J1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBnb05leHQ6IF9nb05leHRGbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xhc3RTdGVwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEZpbmlzaEJ1dHRvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC5jb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwibmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5maW5pc2gudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIm5hdmlnYXRpb25CdXR0b25MYWJlbHMuZmluaXNoLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmluaXNoLmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbmlzaEJ1dHRvblRlbXBsYXRlIHx8IGRlZmF1bHRGaW5pc2hCdXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaW5pc2g6IF9maW5pc2hGbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXdpemFyZC1uZXh0LXN0ZXA+XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtd2l6YXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3VsPlxuICAgIDwvZmQtd2l6YXJkLW5hdmlnYXRpb24+XG48L2ZkLXdpemFyZD5cbiJdfQ==
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLWJvZHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3dpemFyZC1nZW5lcmF0b3IvY29tcG9uZW50cy93aXphcmQtYm9keS93aXphcmQtYm9keS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvd2l6YXJkLWdlbmVyYXRvci9jb21wb25lbnRzL3dpemFyZC1ib2R5L3dpemFyZC1ib2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEVBQ1gsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHekQsT0FBTyxFQUFFLFlBQVksRUFBb0IsTUFBTSw4QkFBOEIsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDeEcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7QUFzQmxHLE1BQU0sT0FBTyxtQkFBbUI7SUFnSTVCOztPQUVHO0lBQ0gs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WTt3QkFDWiw0QkFBNEI7d0JBQzVCLDBCQUEwQjt3QkFDMUIsZUFBZTt3QkFDZix1QkFBdUI7d0JBQ3ZCLGdCQUFnQjtxQkFDbkI7MkhBT0Qsa0JBQWtCO3NCQURqQixLQUFLO2dCQU9OLHNCQUFzQjtzQkFEckIsS0FBSztnQkFRTixjQUFjO3NCQURiLEtBQUs7Z0JBUU4sYUFBYTtzQkFEWixLQUFLO2dCQU9OLFdBQVc7c0JBRFYsS0FBSztnQkFPTixVQUFVO3NCQURULEtBQUs7Z0JBT04saUJBQWlCO3NCQURoQixLQUFLO2dCQU9OLGtCQUFrQjtzQkFEakIsS0FBSztnQkFPTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBT04sb0JBQW9CO3NCQURuQixLQUFLO2dCQU9OLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFLTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBT04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQUtOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBT04sWUFBWTtzQkFEWCxNQUFNO2dCQU9QLE1BQU07c0JBREwsTUFBTTtnQkFPUCxNQUFNO3NCQURMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgV2l6YXJkTW9kdWxlLCBXaXphcmRTdGVwU3RhdHVzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3dpemFyZCc7XG5cbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vYnV0dG9uJztcbmltcG9ydCB7IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbSwgV2l6YXJkR2VuZXJhdG9ySXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvd2l6YXJkLWdlbmVyYXRvci1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBXaXphcmROYXZpZ2F0aW9uQnV0dG9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvd2l6YXJkLW5hdmlnYXRpb24tYnV0dG9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2l6YXJkR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3dpemFyZC1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBXaXphcmRHZW5lcmF0b3JTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vd2l6YXJkLWdlbmVyYXRvci1zdGVwL3dpemFyZC1nZW5lcmF0b3Itc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2l6YXJkU3VtbWFyeVN0ZXBDb21wb25lbnQgfSBmcm9tICcuLi93aXphcmQtc3VtbWFyeS1zdGVwL3dpemFyZC1zdW1tYXJ5LXN0ZXAuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBXaXphcmRTdGVwQ2hhbmdlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHN0YXR1czogV2l6YXJkU3RlcFN0YXR1cztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtd2l6YXJkLWJvZHknLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQtYm9keS5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgV2l6YXJkTW9kdWxlLFxuICAgICAgICBXaXphcmRHZW5lcmF0b3JTdGVwQ29tcG9uZW50LFxuICAgICAgICBXaXphcmRTdW1tYXJ5U3RlcENvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkQm9keUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciBvciBub3QgYXBwbHkgcmVzcG9uc2l2ZSBwYWRkaW5ncyBzdHlsaW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVzcG9uc2l2ZVBhZGRpbmdzID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBCdXR0b24gbGFiZWxzIHRvIGJlIHVzZWQgaW4gV2l6YXJkIG5hdmlnYXRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG5hdmlnYXRpb25CdXR0b25MYWJlbHM6IFJlcXVpcmVkPFdpemFyZE5hdmlnYXRpb25CdXR0b25zPjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIG9yIG5vdCB0byBhcHBlbmQgdGhlIHN0ZXAgdG8gdGhlIHdpemFyZC4gSWYgZmFsc2UsIGVhY2ggc3RlcCB3aWxsIGJlIGRpc3BsYXllZCBvbiBhIGRpZmZlcmVudCBwYWdlLlxuICAgICAqIERlZmF1bHQgaXMgdHJ1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFwcGVuZFRvV2l6YXJkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDdXN0b20gaGVpZ2h0IHRvIHVzZSBmb3IgdGhlIHdpemFyZCdzIGNvbnRlbnQgcGFuZS4gQnkgZGVmYXVsdCwgdGhpcyB2YWx1ZSBpcyBjYWxjKDEwMHZoIC0gMTQ0cHgpLCB3aGVyZSAxNDRweFxuICAgICAqIGlzIHRoZSBjb21iaW5lZCBoZWlnaHQgb2YgdGhlIFNoZWxsYmFyLCB3aXphcmQgaGVhZGVyIGFuZCB3aXphcmQgZm9vdGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29udGVudEhlaWdodDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIG9yIG5vdCBXaXphcmQgaXMgY3VycmVudGx5IG9uIHRoZSBmaXJzdCBzdGVwXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpc0ZpcnN0U3RlcCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgV2l6YXJkIGlzIGN1cnJlbnRseSBvbiB0aGUgbGFzdCBzdGVwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNMYXN0U3RlcCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBuZXh0IHN0ZXAgaXMgYSBTdW1tYXJ5IHN0ZXAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpc05leHRTdGVwU3VtbWFyeSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEJvb2xlYW4gZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gZGlzcGxheSBTdW1tYXJ5IHN0ZXAgaW4gV2l6YXJkIHByb2dyZXNzIGJhci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlTdW1tYXJ5U3RlcCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBcIkdvIE5leHRcIiBidXR0b24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnb05leHRCdXR0b25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJGaW5pc2hcIiBidXR0b24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmaW5pc2hCdXR0b25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3Igc3VtbWFyeSBzdGVwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY3VzdG9tU3VtbWFyeVN0ZXBUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIFwiUmV2aWV3XCIgYnV0dG9uICovXG4gICAgQElucHV0KClcbiAgICByZXZpZXdCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJcyBjdXJyZW50IHN0ZXAgaXMgc3VtbWFyeSBzdGVwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNTdW1tYXJ5U3RlcCA9IGZhbHNlO1xuXG4gICAgLyoqIElmIG5hdmlnYXRpb24gYnV0dG9ucyBzaG91bGQgYmUgdmlzaWJsZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5hdmlnYXRpb25CdXR0b25zID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIG9yIG5vdCBhbGwgZm9ybSBpdGVtcyBzaG91bGQgaGF2ZSBpZGVudGljYWwgbGF5b3V0IHByb3ZpZGVkIGZvciBmb3JtIGdyb3VwLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdW5pZmllZExheW91dCA9IHRydWU7XG5cbiAgICAvKiogV2hldGhlciBjdXJyZW50IHN0ZXAgaXMgYSBicmFuY2hpbmcgc3RlcC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGlzQnJhbmNoaW5nU3RlcCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgY3VycmVudCBzdGVwIGlzIGNvbXBsZXRlZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNDdXJyZW50U3RlcENvbXBsZXRlZCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgb3JkZXIgb2Ygc3RlcHMgd2FzIGNoYW5nZWQgICovXG4gICAgQElucHV0KClcbiAgICBzdGVwc09yZGVyQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRzIHdoZW4gc29tZSBzdGVwIHN0YXR1cyBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHN0YXR1c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8V2l6YXJkU3RlcENoYW5nZT4oKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0cyB3aGVuIFwiR28gbmV4dFwiIGJ1dHRvbiBoYXMgYmVlbiBjbGlja2VkXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgZ29OZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRzIHdoZW4gXCJGaW5pc2hcIiBidXR0b24gaGFzIGJlZW4gY2xpY2tlZFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZpbmlzaCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdmlzaWJsZUl0ZW1zOiBQcmVwYXJlZFdpemFyZEdlbmVyYXRvckl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBcnJheSBvZiB2aXNpYmxlIFdpemFyZCBTdGVwcy5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIHNldCB2aXNpYmxlSXRlbXMoaXRlbXM6IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbVtdKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGVJdGVtcyA9IGl0ZW1zO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCB2aXNpYmxlSXRlbXMoKTogUHJlcGFyZWRXaXphcmRHZW5lcmF0b3JJdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUl0ZW1zIHx8IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuaXRlbXM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF93aXphcmRHZW5lcmF0b3JTZXJ2aWNlOiBXaXphcmRHZW5lcmF0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2dvTmV4dEZuOiAoKSA9PiB2b2lkID0gKCkgPT4gdGhpcy5nb05leHQuZW1pdCgpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9maW5pc2hGbjogKCkgPT4gdm9pZCA9ICgpID0+IHRoaXMuZmluaXNoLmVtaXQoKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDdXN0b20gc3RlcCBzdGF0dXMgY2hhbmdlIHZhbGlkYXRvciBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0gaW5kZXggQ3VycmVudCBzdGVwIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBJZiB0aGlzIHN0ZXAgc3RhdHVzIGNhbiBiZSBjaGFuZ2VkLlxuICAgICAqL1xuICAgIHN0ZXBDbGlja1ZhbGlkYXRvckZuKGluZGV4OiBudW1iZXIpOiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwSW5kZXggPSB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldEN1cnJlbnRTdGVwSW5kZXgoKTtcbiAgICAgICAgICAgIGNvbnN0IGlzU3VtbWFyeVN0ZXAgPSB0aGlzLl92aXNpYmxlSXRlbXNbY3VycmVudFN0ZXBJbmRleF0/LnN1bW1hcnkgPT09IHRydWU7XG5cbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gY3VycmVudFN0ZXBJbmRleCB8fCBpc1N1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl92aXNpYmxlSXRlbXMuc2xpY2UoMCwgaW5kZXgpLmZpbmQoKGkpID0+ICFpLmNvbXBsZXRlZCAmJiAhaS5zdW1tYXJ5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UudmFsaWRhdGVTdGVwRm9ybXModHJ1ZSkpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZVxuICAgICAgICAgICAgLmdldFZpc2libGVTdGVwcygpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTApLCB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh2aXNpYmxlU3RlcHMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl92aXNpYmxlSXRlbXMgPSB2aXNpYmxlU3RlcHM7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDYWxsYmFjayBmdW5jdGlvbiBmb3Igc3RhdHVzIGNoYW5nZS5cbiAgICAgKiBAcGFyYW0gaWQgc3RlcCBJRC5cbiAgICAgKiBAcGFyYW0gc3RhdHVzIG5ldyBzdGVwIHN0YXR1cy5cbiAgICAgKi9cbiAgICBzdGVwU3RhdHVzQ2hhbmdlZChpZDogc3RyaW5nLCBzdGF0dXM6IFdpemFyZFN0ZXBTdGF0dXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGF0dXNDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0ZXBDbGlja2VkKHN0ZXBJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN0ZXBJbmRleCA9IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0U3RlcEluZGV4KHN0ZXBJZCk7XG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2Uuc2V0TmV4dFN0ZXBJbmRleChzdGVwSW5kZXggKyAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIF9pbmRleFxuICAgICAqIEBwYXJhbSBpdGVtXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBfdHJhY2tGbihfaW5kZXg6IG51bWJlciwgaXRlbTogV2l6YXJkR2VuZXJhdG9ySXRlbSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xuICAgIH1cbn1cbiIsIkBpZiAodmlzaWJsZUl0ZW1zKSB7XG4gICAgPGZkLXdpemFyZFxuICAgICAgICBbZGlzcGxheVN1bW1hcnlTdGVwXT1cImRpc3BsYXlTdW1tYXJ5U3RlcFwiXG4gICAgICAgIFtyZXNwb25zaXZlUGFkZGluZ3NdPVwicmVzcG9uc2l2ZVBhZGRpbmdzXCJcbiAgICAgICAgW2FwcGVuZFRvV2l6YXJkXT1cImFwcGVuZFRvV2l6YXJkXCJcbiAgICAgICAgW2NvbnRlbnRIZWlnaHRdPVwiY29udGVudEhlaWdodFwiXG4gICAgPlxuICAgICAgICA8ZmQtd2l6YXJkLW5hdmlnYXRpb24+XG4gICAgICAgICAgICA8dWwgZmQtd2l6YXJkLXByb2dyZXNzLWJhcj5cbiAgICAgICAgICAgICAgICBAZm9yIChzdGVwIG9mIHZpc2libGVJdGVtczsgdHJhY2sgX3RyYWNrRm4oaSwgc3RlcCk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtd2l6YXJkLXN0ZXBcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzdGVwLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXR1c109XCJzdGVwLnN0YXR1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uYWxUZXh0XT1cInN0ZXAub3B0aW9uYWxUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFticmFuY2hpbmddPVwiISFzdGVwLmJyYW5jaGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RlcENsaWNrVmFsaWRhdG9yXT1cInN0ZXBDbGlja1ZhbGlkYXRvckZuKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc1N1bW1hcnldPVwiISFzdGVwLnN1bW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXR1c0NoYW5nZSk9XCJzdGVwU3RhdHVzQ2hhbmdlZChzdGVwLmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzdGVwQ2xpY2tlZCk9XCJzdGVwQ2xpY2tlZChzdGVwLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC13aXphcmQtc3RlcC1pbmRpY2F0b3IgW2dseXBoXT1cInN0ZXAuaWNvbiB8fCBudWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghc3RlcC5pY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkgKyAxIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC13aXphcmQtc3RlcC1pbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtd2l6YXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghc3RlcC5zdW1tYXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtd2l6YXJkLWdlbmVyYXRvci1zdGVwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdW5pZmllZExheW91dF09XCJ1bmlmaWVkTGF5b3V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cInN0ZXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0ZXBTdGF0dXNdPVwic3RlcC5zdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtd2l6YXJkLWdlbmVyYXRvci1zdGVwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLXdpemFyZC1zdW1tYXJ5LXN0ZXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21TdW1tYXJ5U3RlcFRlbXBsYXRlXT1cImN1c3RvbVN1bW1hcnlTdGVwVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXR1c109XCJzdGVwLnN0YXR1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC13aXphcmQtc3VtbWFyeS1zdGVwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKG5hdmlnYXRpb25CdXR0b25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC13aXphcmQtbmV4dC1zdGVwIFtjYW5IaWRlXT1cImFwcGVuZFRvV2l6YXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFpc0xhc3RTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0R29OZXh0QnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmdvTmV4dC5jb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uVHlwZV09XCJuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmdvTmV4dC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmdvTmV4dC5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29OZXh0LmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRSZXZpZXdCdXR0b25UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZENvbnRlbnREZW5zaXR5XT1cIm5hdmlnYXRpb25CdXR0b25MYWJlbHMucmV2aWV3LmNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cIm5hdmlnYXRpb25CdXR0b25MYWJlbHMucmV2aWV3LnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIm5hdmlnYXRpb25CdXR0b25MYWJlbHMucmV2aWV3LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb05leHQuZW1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc0JyYW5jaGluZ1N0ZXAgJiYgKCFpc0N1cnJlbnRTdGVwQ29tcGxldGVkIHx8IHN0ZXBzT3JkZXJDaGFuZ2VkKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzTmV4dFN0ZXBTdW1tYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ29OZXh0QnV0dG9uVGVtcGxhdGUgfHwgZGVmYXVsdEdvTmV4dEJ1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGdvTmV4dDogX2dvTmV4dEZuIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJyZXZpZXdCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0UmV2aWV3QnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZ29OZXh0OiBfZ29OZXh0Rm4gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEZpbmlzaEJ1dHRvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwibmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5maW5pc2guY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwibmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5maW5pc2gudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5maW5pc2gubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbmlzaC5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbmlzaEJ1dHRvblRlbXBsYXRlIHx8IGRlZmF1bHRGaW5pc2hCdXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpbmlzaDogX2ZpbmlzaEZuIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXdpemFyZC1uZXh0LXN0ZXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC13aXphcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2ZkLXdpemFyZC1uYXZpZ2F0aW9uPlxuICAgIDwvZmQtd2l6YXJkPlxufVxuIl19