ontimize-web-ngx 15.5.0 → 15.6.0-next.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 (458) hide show
  1. package/esm2020/lib/components/app-header/o-app-header.component.mjs +4 -4
  2. package/esm2020/lib/components/app-header/o-app-header.module.mjs +5 -5
  3. package/esm2020/lib/components/app-sidenav/image/o-app-sidenav-image.component.mjs +4 -4
  4. package/esm2020/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.mjs +4 -4
  5. package/esm2020/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.mjs +4 -4
  6. package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +4 -4
  7. package/esm2020/lib/components/app-sidenav/o-app-sidenav.module.mjs +5 -5
  8. package/esm2020/lib/components/bar-menu/locale-menu-item/o-locale-bar-menu-item.component.mjs +4 -4
  9. package/esm2020/lib/components/bar-menu/menu-group/o-bar-menu-group.component.mjs +4 -4
  10. package/esm2020/lib/components/bar-menu/menu-item/o-bar-menu-item.component.mjs +4 -4
  11. package/esm2020/lib/components/bar-menu/menu-nested/o-bar-menu-nested.component.mjs +4 -4
  12. package/esm2020/lib/components/bar-menu/menu-separator/o-bar-menu-separator.component.mjs +4 -4
  13. package/esm2020/lib/components/bar-menu/o-bar-menu-base.class.mjs +4 -4
  14. package/esm2020/lib/components/bar-menu/o-bar-menu.component.mjs +4 -4
  15. package/esm2020/lib/components/bar-menu/o-bar-menu.module.mjs +5 -5
  16. package/esm2020/lib/components/bar-menu/o-base-menu-item.class.mjs +4 -4
  17. package/esm2020/lib/components/breadcrumb/o-breadcrumb.component.mjs +4 -4
  18. package/esm2020/lib/components/breadcrumb/o-breadcrumb.module.mjs +5 -5
  19. package/esm2020/lib/components/button/o-button.component.mjs +4 -4
  20. package/esm2020/lib/components/button/o-button.module.mjs +5 -5
  21. package/esm2020/lib/components/button-toggle/o-button-toggle-group/o-button-toggle-group.component.mjs +4 -4
  22. package/esm2020/lib/components/button-toggle/o-button-toggle.component.mjs +4 -4
  23. package/esm2020/lib/components/button-toggle/o-button-toggle.module.mjs +5 -5
  24. package/esm2020/lib/components/card-menu-item/o-card-menu-item.component.mjs +4 -4
  25. package/esm2020/lib/components/card-menu-item/o-card-menu-item.module.mjs +5 -5
  26. package/esm2020/lib/components/container/column/o-column.component.mjs +4 -4
  27. package/esm2020/lib/components/container/column/o-column.module.mjs +5 -5
  28. package/esm2020/lib/components/container/column-collapsible/o-column-collapsible.component.mjs +4 -4
  29. package/esm2020/lib/components/container/column-collapsible/o-column-collapsible.module.mjs +5 -5
  30. package/esm2020/lib/components/container/o-container-collapsible-component.class.mjs +4 -4
  31. package/esm2020/lib/components/container/o-container-component.class.mjs +4 -4
  32. package/esm2020/lib/components/container/row/o-row.component.mjs +4 -4
  33. package/esm2020/lib/components/container/row/o-row.module.mjs +5 -5
  34. package/esm2020/lib/components/container/row-collapsible/o-row-collapsible.component.mjs +4 -4
  35. package/esm2020/lib/components/container/row-collapsible/o-row-collapsible.module.mjs +5 -5
  36. package/esm2020/lib/components/contextmenu/context-menu/o-context-menu-content.component.mjs +4 -4
  37. package/esm2020/lib/components/contextmenu/context-menu/o-wrapper-content-menu/o-wrapper-content-menu.component.mjs +4 -4
  38. package/esm2020/lib/components/contextmenu/context-menu-group/o-context-menu-group.component.mjs +4 -4
  39. package/esm2020/lib/components/contextmenu/context-menu-item/o-context-menu-item.component.mjs +4 -4
  40. package/esm2020/lib/components/contextmenu/context-menu-separator/o-context-menu-separator.component.mjs +4 -4
  41. package/esm2020/lib/components/contextmenu/o-content-menu-base-item.class.mjs +4 -4
  42. package/esm2020/lib/components/contextmenu/o-context-menu-overlay.service.mjs +4 -4
  43. package/esm2020/lib/components/contextmenu/o-context-menu.component.mjs +4 -4
  44. package/esm2020/lib/components/contextmenu/o-context-menu.directive.mjs +4 -4
  45. package/esm2020/lib/components/contextmenu/o-context-menu.module.mjs +5 -5
  46. package/esm2020/lib/components/contextmenu/o-context-menu.service.mjs +4 -4
  47. package/esm2020/lib/components/dual-list-selector/dual-list-selector-item/date/o-dual-list-selector-date-item.component.mjs +4 -4
  48. package/esm2020/lib/components/dual-list-selector/o-dual-list-selector.component.mjs +4 -4
  49. package/esm2020/lib/components/dual-list-selector/o-dual-list-selector.module.mjs +5 -5
  50. package/esm2020/lib/components/expandable-container/o-expandable-container.component.mjs +4 -4
  51. package/esm2020/lib/components/expandable-container/o-expandable-container.module.mjs +5 -5
  52. package/esm2020/lib/components/filter-builder/filter-builder-menu/filter-builder-menu.component.mjs +4 -4
  53. package/esm2020/lib/components/filter-builder/o-filter-builder-clear.directive.mjs +4 -4
  54. package/esm2020/lib/components/filter-builder/o-filter-builder-query.directive.mjs +4 -4
  55. package/esm2020/lib/components/filter-builder/o-filter-builder.component.mjs +4 -4
  56. package/esm2020/lib/components/filter-builder/o-filter-builder.module.mjs +5 -5
  57. package/esm2020/lib/components/form/guards/o-form-can-deactivate.guard.mjs +4 -4
  58. package/esm2020/lib/components/form/navigation/o-form-confirm-exit.service.mjs +4 -4
  59. package/esm2020/lib/components/form/navigation/o-form-navigation.component.mjs +6 -5
  60. package/esm2020/lib/components/form/o-form.component.mjs +27 -13
  61. package/esm2020/lib/components/form/o-form.module.mjs +5 -5
  62. package/esm2020/lib/components/form/services/o-form-message.service.mjs +4 -4
  63. package/esm2020/lib/components/form/toolbar/o-form-toolbar.component.mjs +4 -4
  64. package/esm2020/lib/components/form/toolbar/o-form-toolbar.module.mjs +5 -5
  65. package/esm2020/lib/components/form-container/o-form-container.component.mjs +4 -4
  66. package/esm2020/lib/components/form-container/o-form-container.module.mjs +5 -5
  67. package/esm2020/lib/components/grid/grid-item/o-grid-item.component.mjs +4 -4
  68. package/esm2020/lib/components/grid/grid-item/o-grid-item.directive.mjs +4 -4
  69. package/esm2020/lib/components/grid/o-grid.component.mjs +5 -5
  70. package/esm2020/lib/components/grid/o-grid.module.mjs +5 -5
  71. package/esm2020/lib/components/grid/skeketon/o-grid-skeleton.component.mjs +4 -4
  72. package/esm2020/lib/components/image/fullscreen/fullscreen-dialog.component.mjs +4 -4
  73. package/esm2020/lib/components/image/o-image.component.mjs +6 -6
  74. package/esm2020/lib/components/image/o-image.module.mjs +5 -5
  75. package/esm2020/lib/components/input/checkbox/o-checkbox.component.mjs +4 -4
  76. package/esm2020/lib/components/input/checkbox/o-checkbox.module.mjs +5 -5
  77. package/esm2020/lib/components/input/combo/combo-renderer/boolean/o-combo-renderer-boolean.component.mjs +4 -4
  78. package/esm2020/lib/components/input/combo/combo-renderer/currency/o-combo-renderer-currency.component.mjs +4 -4
  79. package/esm2020/lib/components/input/combo/combo-renderer/date/o-combo-renderer-date.component.mjs +4 -4
  80. package/esm2020/lib/components/input/combo/combo-renderer/icon/o-combo-renderer-icon.component.mjs +4 -4
  81. package/esm2020/lib/components/input/combo/combo-renderer/integer/o-combo-renderer-integer.component.mjs +4 -4
  82. package/esm2020/lib/components/input/combo/combo-renderer/o-combo-renderer.class.mjs +4 -4
  83. package/esm2020/lib/components/input/combo/combo-renderer/percentage/o-combo-renderer-percentage.component.mjs +4 -4
  84. package/esm2020/lib/components/input/combo/combo-renderer/real/o-combo-renderer-real.component.mjs +4 -4
  85. package/esm2020/lib/components/input/combo/combo-search/o-combo-search.component.mjs +4 -4
  86. package/esm2020/lib/components/input/combo/o-combo.component.mjs +4 -4
  87. package/esm2020/lib/components/input/combo/o-combo.module.mjs +5 -5
  88. package/esm2020/lib/components/input/currency-input/o-currency-input.component.mjs +5 -5
  89. package/esm2020/lib/components/input/currency-input/o-currency-input.module.mjs +5 -5
  90. package/esm2020/lib/components/input/date-input/o-date-input.component.mjs +4 -4
  91. package/esm2020/lib/components/input/date-input/o-date-input.module.mjs +5 -5
  92. package/esm2020/lib/components/input/date-range/o-daterange-input.component.mjs +4 -4
  93. package/esm2020/lib/components/input/date-range/o-daterange-input.module.mjs +5 -5
  94. package/esm2020/lib/components/input/date-range-legacy/o-daterange-input.component.mjs +4 -4
  95. package/esm2020/lib/components/input/date-range-legacy/o-daterange-input.directive.mjs +4 -4
  96. package/esm2020/lib/components/input/date-range-legacy/o-daterange-input.module.mjs +5 -5
  97. package/esm2020/lib/components/input/date-range-legacy/o-daterange-picker.component.mjs +4 -4
  98. package/esm2020/lib/components/input/email-input/o-email-input.component.mjs +4 -4
  99. package/esm2020/lib/components/input/email-input/o-email-input.module.mjs +5 -5
  100. package/esm2020/lib/components/input/file-input/o-file-input.component.mjs +9 -5
  101. package/esm2020/lib/components/input/file-input/o-file-input.module.mjs +5 -5
  102. package/esm2020/lib/components/input/hour-input/o-hour-input.component.mjs +4 -4
  103. package/esm2020/lib/components/input/hour-input/o-hour-input.module.mjs +5 -5
  104. package/esm2020/lib/components/input/html-input/o-html-input.component.mjs +4 -4
  105. package/esm2020/lib/components/input/html-input/o-html-input.module.mjs +5 -5
  106. package/esm2020/lib/components/input/integer-input/o-integer-input.component.mjs +4 -4
  107. package/esm2020/lib/components/input/integer-input/o-integer-input.module.mjs +5 -5
  108. package/esm2020/lib/components/input/listpicker/listpicker-renderer/currency/o-list-picker-renderer-currency.component.mjs +4 -4
  109. package/esm2020/lib/components/input/listpicker/listpicker-renderer/date/o-list-picker-renderer-date.component.mjs +4 -4
  110. package/esm2020/lib/components/input/listpicker/listpicker-renderer/integer/o-list-picker-renderer-integer.component.mjs +4 -4
  111. package/esm2020/lib/components/input/listpicker/listpicker-renderer/o-list-picker-renderer.class.mjs +4 -4
  112. package/esm2020/lib/components/input/listpicker/listpicker-renderer/percentage/o-list-picker-renderer-percentage.component.mjs +4 -4
  113. package/esm2020/lib/components/input/listpicker/listpicker-renderer/real/o-list-picker-renderer-real.component.mjs +4 -4
  114. package/esm2020/lib/components/input/listpicker/o-list-picker-dialog.component.mjs +4 -4
  115. package/esm2020/lib/components/input/listpicker/o-list-picker.component.mjs +4 -4
  116. package/esm2020/lib/components/input/listpicker/o-list-picker.module.mjs +5 -5
  117. package/esm2020/lib/components/input/nif-input/o-nif-input.component.mjs +4 -4
  118. package/esm2020/lib/components/input/nif-input/o-nif-input.module.mjs +5 -5
  119. package/esm2020/lib/components/input/o-boolean-form-data-component.class.mjs +4 -4
  120. package/esm2020/lib/components/input/o-form-service-component.class.mjs +20 -11
  121. package/esm2020/lib/components/input/password-input/o-password-input.component.mjs +4 -4
  122. package/esm2020/lib/components/input/password-input/o-password-input.module.mjs +5 -5
  123. package/esm2020/lib/components/input/percent-input/o-percent-input.component.mjs +4 -4
  124. package/esm2020/lib/components/input/percent-input/o-percent-input.module.mjs +5 -5
  125. package/esm2020/lib/components/input/phone-input/data/country-code.mjs +4 -4
  126. package/esm2020/lib/components/input/phone-input/o-phone-input.component.mjs +4 -4
  127. package/esm2020/lib/components/input/phone-input/o-phone-input.module.mjs +5 -5
  128. package/esm2020/lib/components/input/radio/o-radio.component.mjs +4 -4
  129. package/esm2020/lib/components/input/radio/o-radio.module.mjs +5 -5
  130. package/esm2020/lib/components/input/real-input/o-real-input.component.mjs +4 -4
  131. package/esm2020/lib/components/input/real-input/o-real-input.module.mjs +5 -5
  132. package/esm2020/lib/components/input/search-input/o-search-input.component.mjs +4 -4
  133. package/esm2020/lib/components/input/search-input/o-search-input.module.mjs +5 -5
  134. package/esm2020/lib/components/input/slide-toggle/o-slide-toggle.component.mjs +4 -4
  135. package/esm2020/lib/components/input/slide-toggle/o-slide-toggle.module.mjs +5 -5
  136. package/esm2020/lib/components/input/slider/o-slider.component.mjs +4 -4
  137. package/esm2020/lib/components/input/slider/o-slider.module.mjs +5 -5
  138. package/esm2020/lib/components/input/text-input/o-text-input.component.mjs +4 -4
  139. package/esm2020/lib/components/input/text-input/o-text-input.module.mjs +5 -5
  140. package/esm2020/lib/components/input/textarea-input/o-textarea-input.component.mjs +4 -4
  141. package/esm2020/lib/components/input/textarea-input/o-textarea-input.module.mjs +5 -5
  142. package/esm2020/lib/components/input/time-input/o-time-input.component.mjs +4 -4
  143. package/esm2020/lib/components/input/time-input/o-time-input.module.mjs +5 -5
  144. package/esm2020/lib/components/language-selector/o-language-selector.component.mjs +4 -4
  145. package/esm2020/lib/components/language-selector/o-language-selector.module.mjs +5 -5
  146. package/esm2020/lib/components/list/list-item/o-list-item.component.mjs +4 -4
  147. package/esm2020/lib/components/list/list-item/o-list-item.directive.mjs +4 -4
  148. package/esm2020/lib/components/list/o-list.component.mjs +5 -5
  149. package/esm2020/lib/components/list/o-list.module.mjs +5 -5
  150. package/esm2020/lib/components/list/renderers/avatar/o-list-item-avatar.component.mjs +4 -4
  151. package/esm2020/lib/components/list/renderers/card/o-list-item-card.component.mjs +4 -4
  152. package/esm2020/lib/components/list/renderers/card-image/o-list-item-card-image.component.mjs +4 -4
  153. package/esm2020/lib/components/list/renderers/o-list-item-card-renderer.class.mjs +4 -4
  154. package/esm2020/lib/components/list/renderers/o-list-item-text-renderer.class.mjs +4 -4
  155. package/esm2020/lib/components/list/renderers/text/o-list-item-text.component.mjs +4 -4
  156. package/esm2020/lib/components/list/skeleton/o-list-skeleton.component.mjs +4 -4
  157. package/esm2020/lib/components/material/ckeditor/ck-editor.component.mjs +4 -4
  158. package/esm2020/lib/components/material/ckeditor/ck-editor.module.mjs +5 -5
  159. package/esm2020/lib/components/o-data-toolbar/o-data-toolbar.component.mjs +4 -4
  160. package/esm2020/lib/components/o-data-toolbar/o-data-toolbar.module.mjs +5 -5
  161. package/esm2020/lib/components/o-form-data-component.class.mjs +4 -4
  162. package/esm2020/lib/components/o-service-base-component.class.mjs +35 -24
  163. package/esm2020/lib/components/o-service-component.class.mjs +8 -8
  164. package/esm2020/lib/components/o-skeleton.component.mjs +4 -4
  165. package/esm2020/lib/components/table/column/calculated/o-table-column-calculated.component.mjs +4 -4
  166. package/esm2020/lib/components/table/column/cell-editor/boolean/o-table-cell-editor-boolean.component.mjs +4 -4
  167. package/esm2020/lib/components/table/column/cell-editor/date/o-table-cell-editor-date.component.mjs +4 -4
  168. package/esm2020/lib/components/table/column/cell-editor/email/o-table-cell-editor-email.component.mjs +4 -4
  169. package/esm2020/lib/components/table/column/cell-editor/integer/o-table-cell-editor-integer.component.mjs +4 -4
  170. package/esm2020/lib/components/table/column/cell-editor/o-base-table-cell-editor.class.mjs +4 -4
  171. package/esm2020/lib/components/table/column/cell-editor/real/o-table-cell-editor-real.component.mjs +4 -4
  172. package/esm2020/lib/components/table/column/cell-editor/text/o-table-cell-editor-text.component.mjs +4 -4
  173. package/esm2020/lib/components/table/column/cell-editor/time/o-table-cell-editor-time.component.mjs +4 -4
  174. package/esm2020/lib/components/table/column/cell-renderer/action/o-table-cell-renderer-action.component.mjs +4 -4
  175. package/esm2020/lib/components/table/column/cell-renderer/boolean/o-table-cell-renderer-boolean.component.mjs +4 -4
  176. package/esm2020/lib/components/table/column/cell-renderer/currency/o-table-cell-renderer-currency.component.mjs +4 -4
  177. package/esm2020/lib/components/table/column/cell-renderer/date/o-table-cell-renderer-date.component.mjs +4 -4
  178. package/esm2020/lib/components/table/column/cell-renderer/image/o-table-cell-renderer-image.component.mjs +4 -4
  179. package/esm2020/lib/components/table/column/cell-renderer/integer/o-table-cell-renderer-integer.component.mjs +4 -4
  180. package/esm2020/lib/components/table/column/cell-renderer/o-base-table-cell-renderer.class.mjs +4 -4
  181. package/esm2020/lib/components/table/column/cell-renderer/percentage/o-table-cell-renderer-percentage.component.mjs +4 -4
  182. package/esm2020/lib/components/table/column/cell-renderer/real/o-table-cell-renderer-real.component.mjs +4 -4
  183. package/esm2020/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.mjs +23 -9
  184. package/esm2020/lib/components/table/column/cell-renderer/time/o-table-cell-renderer-time.component.mjs +4 -4
  185. package/esm2020/lib/components/table/column/cell-renderer/translate/o-table-cell-renderer-translate.component.mjs +4 -4
  186. package/esm2020/lib/components/table/column/o-table-column.component.mjs +4 -4
  187. package/esm2020/lib/components/table/extensions/contextmenu/o-table-context-menu.component.mjs +4 -4
  188. package/esm2020/lib/components/table/extensions/dialog/apply-configuration/o-table-apply-configuration-dialog.component.mjs +4 -4
  189. package/esm2020/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.mjs +4 -4
  190. package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +4 -4
  191. package/esm2020/lib/components/table/extensions/dialog/group-by-columns/o-table-group-by-columns-dialog.component.mjs +4 -4
  192. package/esm2020/lib/components/table/extensions/dialog/o-table-base-dialog.class.mjs +4 -4
  193. package/esm2020/lib/components/table/extensions/dialog/store-configuration/o-table-store-configuration-dialog.component.mjs +4 -4
  194. package/esm2020/lib/components/table/extensions/dialog/visible-columns/o-table-visible-columns-dialog.component.mjs +4 -4
  195. package/esm2020/lib/components/table/extensions/export-button/o-table-export-button.component.mjs +4 -4
  196. package/esm2020/lib/components/table/extensions/export-button/o-table-export-button.service.mjs +4 -4
  197. package/esm2020/lib/components/table/extensions/footer/aggregate/o-table-column-aggregate.component.mjs +4 -4
  198. package/esm2020/lib/components/table/extensions/footer/expanded/o-table-expanded-footer.directive.mjs +4 -4
  199. package/esm2020/lib/components/table/extensions/footer/paginator/o-table-mat-paginator-intl.mjs +4 -4
  200. package/esm2020/lib/components/table/extensions/footer/paginator/o-table-paginator.component.mjs +4 -4
  201. package/esm2020/lib/components/table/extensions/header/o-table-header-components.mjs +3 -2
  202. package/esm2020/lib/components/table/extensions/header/table-button/o-table-button.component.mjs +4 -4
  203. package/esm2020/lib/components/table/extensions/header/table-buttons/o-table-buttons.component.mjs +4 -4
  204. package/esm2020/lib/components/table/extensions/header/table-column-resizer/o-table-column-resizer.component.mjs +4 -4
  205. package/esm2020/lib/components/table/extensions/header/table-column-select-all/o-table-column-select-all.directive.mjs +4 -4
  206. package/esm2020/lib/components/table/extensions/header/table-columns-filter/columns/o-table-columns-filter-column.component.mjs +4 -4
  207. package/esm2020/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.mjs +4 -4
  208. package/esm2020/lib/components/table/extensions/header/table-columns-grouping/columns/o-table-columns-grouping-column.component.mjs +4 -4
  209. package/esm2020/lib/components/table/extensions/header/table-columns-grouping/o-table-columns-grouping.component.mjs +4 -4
  210. package/esm2020/lib/components/table/extensions/header/table-header/o-table-header.component.mjs +4 -4
  211. package/esm2020/lib/components/table/extensions/header/table-header-column-filter-icon/o-table-header-column-filter-icon.component.mjs +4 -4
  212. package/esm2020/lib/components/table/extensions/header/table-header-select-all/o-table-header-select-all.component.mjs +4 -4
  213. package/esm2020/lib/components/table/extensions/header/table-insertable-row/o-table-insertable-row.component.mjs +4 -4
  214. package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +4 -4
  215. package/esm2020/lib/components/table/extensions/header/table-option/o-table-option.component.mjs +4 -4
  216. package/esm2020/lib/components/table/extensions/header/table-quickfilter/o-table-quickfilter.component.mjs +4 -4
  217. package/esm2020/lib/components/table/extensions/o-table-datasource.service.mjs +4 -4
  218. package/esm2020/lib/components/table/extensions/o-table-strategy.service.mjs +4 -4
  219. package/esm2020/lib/components/table/extensions/o-table.dao.mjs +2 -2
  220. package/esm2020/lib/components/table/extensions/pipes/o-table-row-class.pipe.mjs +4 -4
  221. package/esm2020/lib/components/table/extensions/row/o-table-row.directive.mjs +4 -4
  222. package/esm2020/lib/components/table/extensions/row/table-row-expandable/o-table-row-expandable.component.mjs +4 -4
  223. package/esm2020/lib/components/table/extensions/skeleton/o-table-skeleton.component.mjs +4 -4
  224. package/esm2020/lib/components/table/extensions/sort/o-mat-sort-header.mjs +4 -4
  225. package/esm2020/lib/components/table/extensions/sort/o-mat-sort-module.mjs +5 -5
  226. package/esm2020/lib/components/table/extensions/sort/o-mat-sort.mjs +4 -4
  227. package/esm2020/lib/components/table/o-table.component.mjs +21 -16
  228. package/esm2020/lib/components/table/o-table.module.mjs +6 -6
  229. package/esm2020/lib/components/tree/header/tree-menu/o-tree-menu.component.mjs +4 -4
  230. package/esm2020/lib/components/tree/o-tree-dao.service.mjs +4 -4
  231. package/esm2020/lib/components/tree/o-tree.component.mjs +6 -6
  232. package/esm2020/lib/components/tree/o-tree.module.mjs +5 -5
  233. package/esm2020/lib/components/tree/tree-node/tree-node.component.mjs +4 -4
  234. package/esm2020/lib/components/user-info/o-user-info.component.mjs +4 -4
  235. package/esm2020/lib/components/user-info/o-user-info.module.mjs +5 -5
  236. package/esm2020/lib/components/user-info/user-info-configuration/o-user-info-configuration.directive.mjs +4 -4
  237. package/esm2020/lib/components/user-info/user-info-configuration-item/o-user-info-configuration-item.directive.mjs +4 -4
  238. package/esm2020/lib/config/app-config.mjs +4 -1
  239. package/esm2020/lib/config/o-modules.mjs +5 -5
  240. package/esm2020/lib/config/o-providers.mjs +9 -4
  241. package/esm2020/lib/directives/input-regulate.directive.mjs +4 -4
  242. package/esm2020/lib/directives/keyboard-listener.directive.mjs +4 -4
  243. package/esm2020/lib/directives/locker.directive.mjs +4 -4
  244. package/esm2020/lib/directives/o-file-drag-and-drop.directive.mjs +4 -4
  245. package/esm2020/lib/directives/o-hidden.directive.mjs +4 -4
  246. package/esm2020/lib/directives/o-mat-error.directive.mjs +4 -4
  247. package/esm2020/lib/directives/o-mat-prefix.directive.mjs +4 -4
  248. package/esm2020/lib/directives/o-mat-suffix.directive.mjs +4 -4
  249. package/esm2020/lib/directives/o-tab-group.directive.mjs +4 -4
  250. package/esm2020/lib/interfaces/base-response.interface.mjs +2 -0
  251. package/esm2020/lib/interfaces/data-service.interface.mjs +1 -1
  252. package/esm2020/lib/interfaces/form-data-component.interface.mjs +1 -1
  253. package/esm2020/lib/interfaces/index.mjs +4 -1
  254. package/esm2020/lib/interfaces/jsonapi-response.interface.mjs +2 -0
  255. package/esm2020/lib/interfaces/name-convention.interface.mjs +2 -0
  256. package/esm2020/lib/interfaces/prefereces-service.interface.mjs +2 -0
  257. package/esm2020/lib/interfaces/service-response-adapter.interface.mjs +1 -1
  258. package/esm2020/lib/interfaces/service-response.interface.mjs +1 -1
  259. package/esm2020/lib/layouts/app-layout/app-layout-header/o-app-layout-header.component.mjs +4 -4
  260. package/esm2020/lib/layouts/app-layout/app-layout-sidenav/o-app-layout-sidenav.component.mjs +4 -4
  261. package/esm2020/lib/layouts/app-layout/o-app-layout.component.mjs +4 -4
  262. package/esm2020/lib/layouts/app-layout/o-app-layout.module.mjs +5 -5
  263. package/esm2020/lib/layouts/card-menu-layout/o-card-menu-layout.component.mjs +4 -4
  264. package/esm2020/lib/layouts/card-menu-layout/o-card-menu-layout.module.mjs +5 -5
  265. package/esm2020/lib/layouts/form-layout/dialog/o-form-layout-dialog.component.mjs +4 -4
  266. package/esm2020/lib/layouts/form-layout/dialog/options/o-form-layout-dialog-options.directive.mjs +4 -4
  267. package/esm2020/lib/layouts/form-layout/directives/o-form-layout-manager-content.directive.mjs +4 -4
  268. package/esm2020/lib/layouts/form-layout/guards/o-form-layout-can-activate-child.guard.mjs +4 -4
  269. package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +4 -4
  270. package/esm2020/lib/layouts/form-layout/o-form-layout-manager.module.mjs +5 -5
  271. package/esm2020/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.mjs +4 -4
  272. package/esm2020/lib/layouts/form-layout/split-pane/options/o-form-layout-split-pane-options.directive.mjs +4 -4
  273. package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +4 -4
  274. package/esm2020/lib/layouts/form-layout/tabgroup/options/o-form-layout-tabgroup-options.directive.mjs +4 -4
  275. package/esm2020/lib/ontimize-web-ngx.module.mjs +5 -5
  276. package/esm2020/lib/pipes/columns-filter.pipe.mjs +4 -4
  277. package/esm2020/lib/pipes/is-empty-value.pipe.mjs +4 -4
  278. package/esm2020/lib/pipes/o-currency.pipe.mjs +4 -4
  279. package/esm2020/lib/pipes/o-icon.pipe.mjs +4 -4
  280. package/esm2020/lib/pipes/o-integer.pipe.mjs +4 -4
  281. package/esm2020/lib/pipes/o-moment.pipe.mjs +4 -4
  282. package/esm2020/lib/pipes/o-percentage.pipe.mjs +4 -4
  283. package/esm2020/lib/pipes/o-real.pipe.mjs +4 -4
  284. package/esm2020/lib/pipes/o-safe.pipe.mjs +4 -4
  285. package/esm2020/lib/pipes/o-translate.pipe.mjs +8 -8
  286. package/esm2020/lib/pipes/order-by.pipe.mjs +4 -4
  287. package/esm2020/lib/services/app-menu.service.mjs +4 -4
  288. package/esm2020/lib/services/appearance.service.mjs +4 -4
  289. package/esm2020/lib/services/auth-guard.service.mjs +4 -4
  290. package/esm2020/lib/services/auth.service.mjs +4 -4
  291. package/esm2020/lib/services/base-data-service.class.mjs +19 -0
  292. package/esm2020/lib/services/base-service.class.mjs +36 -9
  293. package/esm2020/lib/services/currency.service.mjs +4 -4
  294. package/esm2020/lib/services/dialog.service.mjs +4 -4
  295. package/esm2020/lib/services/factories.mjs +73 -4
  296. package/esm2020/lib/services/icon.service.mjs +4 -4
  297. package/esm2020/lib/services/index.mjs +4 -1
  298. package/esm2020/lib/services/jsonapi/index.mjs +5 -0
  299. package/esm2020/lib/services/jsonapi/jsonapi-preferences.service.mjs +45 -0
  300. package/esm2020/lib/services/jsonapi/jsonapi-service-response.adapter.mjs +31 -0
  301. package/esm2020/lib/services/jsonapi/jsonapi-service-response.class.mjs +45 -0
  302. package/esm2020/lib/services/jsonapi/jsonapi.service.mjs +166 -0
  303. package/esm2020/lib/services/local-storage.service.mjs +4 -4
  304. package/esm2020/lib/services/login-storage.service.mjs +4 -4
  305. package/esm2020/lib/services/moment.service.mjs +4 -4
  306. package/esm2020/lib/services/name-convention/base-name-convention.service.mjs +59 -0
  307. package/esm2020/lib/services/name-convention/index.mjs +4 -0
  308. package/esm2020/lib/services/name-convention/name-convention-lower.service.mjs +11 -0
  309. package/esm2020/lib/services/name-convention/name-convention-upper.service.mjs +11 -0
  310. package/esm2020/lib/services/name-convention/name-convention.service.mjs +24 -0
  311. package/esm2020/lib/services/navigation.service.mjs +4 -4
  312. package/esm2020/lib/services/number.service.mjs +4 -4
  313. package/esm2020/lib/services/o-auth.service.mjs +4 -4
  314. package/esm2020/lib/services/o-breadcrumb.service.mjs +4 -4
  315. package/esm2020/lib/services/o-error-dialog-manager.service.mjs +4 -4
  316. package/esm2020/lib/services/o-form-layout-manager.service.mjs +4 -4
  317. package/esm2020/lib/services/o-modules-info.service.mjs +4 -4
  318. package/esm2020/lib/services/o-user-info.service.mjs +4 -4
  319. package/esm2020/lib/services/ontimize/index.mjs +4 -1
  320. package/esm2020/lib/services/ontimize/o-preference-query-argument.adapter.mjs +17 -0
  321. package/esm2020/lib/services/ontimize/o-preference-response.adapter.mjs +22 -0
  322. package/esm2020/lib/services/ontimize/ontimize-base-service.class.mjs +7 -12
  323. package/esm2020/lib/services/ontimize/ontimize-ee.service.mjs +33 -12
  324. package/esm2020/lib/services/ontimize/ontimize-export-3xx.service.mjs +6 -6
  325. package/esm2020/lib/services/ontimize/ontimize-export.service.mjs +6 -6
  326. package/esm2020/lib/services/ontimize/ontimize-file.service.mjs +6 -6
  327. package/esm2020/lib/services/ontimize/ontimize-preferences.service.mjs +58 -0
  328. package/esm2020/lib/services/ontimize/ontimize-service-response.adapter.mjs +7 -4
  329. package/esm2020/lib/services/ontimize/ontimize.service.mjs +32 -23
  330. package/esm2020/lib/services/ontimize-export-data-base-provider.service.mjs +4 -4
  331. package/esm2020/lib/services/ontimize-export-data-provider-3x.service.mjs +4 -4
  332. package/esm2020/lib/services/ontimize-export-data-provider.service.mjs +4 -4
  333. package/esm2020/lib/services/ontimize-icon-registry.service.mjs +4 -4
  334. package/esm2020/lib/services/pagination-context.service.mjs +4 -4
  335. package/esm2020/lib/services/parser/o-service-response.parser.mjs +21 -4
  336. package/esm2020/lib/services/permissions/o-permissions.module.mjs +5 -5
  337. package/esm2020/lib/services/permissions/ontimize-ee-permissions.service.mjs +4 -4
  338. package/esm2020/lib/services/permissions/ontimize-permissions.service.mjs +4 -4
  339. package/esm2020/lib/services/permissions/permissions-can-activate.guard.mjs +4 -4
  340. package/esm2020/lib/services/permissions/permissions.service.mjs +4 -4
  341. package/esm2020/lib/services/query-arguments/base-query-argument.adapter.mjs +9 -0
  342. package/esm2020/lib/services/query-arguments/base-query-argument.interface.mjs +2 -0
  343. package/esm2020/lib/services/query-arguments/index.mjs +5 -0
  344. package/esm2020/lib/services/query-arguments/jsonapi-query-arguments.adapter.mjs +63 -0
  345. package/esm2020/lib/services/query-arguments/ontimize-query-arguments.adapter.mjs +19 -0
  346. package/esm2020/lib/services/remote-config.service.mjs +5 -5
  347. package/esm2020/lib/services/share-can-activate-child.service.mjs +4 -4
  348. package/esm2020/lib/services/snackbar.service.mjs +4 -4
  349. package/esm2020/lib/services/state/o-app-menu-component-state.service.mjs +4 -4
  350. package/esm2020/lib/services/state/o-component-state.service.mjs +10 -10
  351. package/esm2020/lib/services/state/o-filter-builder-component-state.service.mjs +4 -4
  352. package/esm2020/lib/services/state/o-form-layout-manager-component-state.service.mjs +4 -4
  353. package/esm2020/lib/services/state/o-grid-component-state.service.mjs +4 -4
  354. package/esm2020/lib/services/state/o-list-component-state.service.mjs +4 -4
  355. package/esm2020/lib/services/state/o-table-component-state.service.mjs +4 -4
  356. package/esm2020/lib/services/state/o-tree-component-state.service.mjs +4 -4
  357. package/esm2020/lib/services/translate/o-translate.parser.mjs +4 -4
  358. package/esm2020/lib/services/translate/o-translate.service.mjs +4 -4
  359. package/esm2020/lib/shared/components/dialog/o-dialog-internal.component.mjs +4 -4
  360. package/esm2020/lib/shared/components/dialog/o-dialog.component.mjs +4 -4
  361. package/esm2020/lib/shared/components/error403/o-error-403.component.mjs +4 -4
  362. package/esm2020/lib/shared/components/filter/load-filter/o-load-filter-dialog.component.mjs +4 -4
  363. package/esm2020/lib/shared/components/filter/store-filter/o-store-filter-dialog.component.mjs +4 -4
  364. package/esm2020/lib/shared/components/snackbar/o-snackbar-base.class.mjs +4 -4
  365. package/esm2020/lib/shared/components/snackbar/o-snackbar.component.mjs +4 -4
  366. package/esm2020/lib/shared/components/validation/o-error.component.mjs +4 -4
  367. package/esm2020/lib/shared/components/validation/o-validator.component.mjs +4 -4
  368. package/esm2020/lib/shared/material/custom.material.module.mjs +5 -5
  369. package/esm2020/lib/shared/material/date/ontimize-moment-date-adapter.mjs +4 -4
  370. package/esm2020/lib/shared/shared.module.mjs +5 -5
  371. package/esm2020/lib/types/config.type.mjs +1 -1
  372. package/esm2020/lib/types/configure-service-args.type.mjs +1 -1
  373. package/esm2020/lib/types/index.mjs +5 -1
  374. package/esm2020/lib/types/json-query-parameter.type.mjs +2 -0
  375. package/esm2020/lib/types/preferences.type.mjs +2 -0
  376. package/esm2020/lib/types/query-params.type.mjs +2 -0
  377. package/esm2020/lib/types/service-configuration.type.mjs +2 -0
  378. package/esm2020/lib/types/service-request-param.type.mjs +1 -1
  379. package/esm2020/lib/types/service-type.type.mjs +8 -0
  380. package/esm2020/lib/util/codes.mjs +2 -1
  381. package/esm2020/lib/util/index.mjs +2 -1
  382. package/esm2020/lib/util/preference-mapping-util.mjs +80 -0
  383. package/esm2020/lib/util/sqltypes.mjs +5 -1
  384. package/esm2020/lib/util/util.mjs +103 -12
  385. package/fesm2015/ontimize-web-ngx.mjs +3565 -2638
  386. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  387. package/fesm2020/ontimize-web-ngx.mjs +3561 -2637
  388. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  389. package/lib/components/form/navigation/o-form-navigation.component.d.ts +3 -1
  390. package/lib/components/form/o-form.component.d.ts +12 -7
  391. package/lib/components/grid/o-grid.component.d.ts +2 -1
  392. package/lib/components/input/file-input/o-file-input.component.d.ts +3 -1
  393. package/lib/components/input/o-form-service-component.class.d.ts +11 -4
  394. package/lib/components/list/o-list.component.d.ts +2 -1
  395. package/lib/components/o-service-base-component.class.d.ts +8 -4
  396. package/lib/components/o-service-component.class.d.ts +1 -1
  397. package/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.d.ts +7 -2
  398. package/lib/components/table/column/o-table-column.component.d.ts +1 -1
  399. package/lib/components/table/extensions/o-table.dao.d.ts +4 -2
  400. package/lib/components/table/o-table.component.d.ts +4 -2
  401. package/lib/components/table/o-table.module.d.ts +1 -1
  402. package/lib/config/app-config.d.ts +1 -0
  403. package/lib/config/o-directives.d.ts +1 -1
  404. package/lib/interfaces/base-response.interface.d.ts +7 -0
  405. package/lib/interfaces/data-service.interface.d.ts +1 -0
  406. package/lib/interfaces/form-data-component.interface.d.ts +1 -0
  407. package/lib/interfaces/index.d.ts +3 -0
  408. package/lib/interfaces/jsonapi-response.interface.d.ts +9 -0
  409. package/lib/interfaces/name-convention.interface.d.ts +9 -0
  410. package/lib/interfaces/prefereces-service.interface.d.ts +7 -0
  411. package/lib/interfaces/service-response-adapter.interface.d.ts +4 -2
  412. package/lib/interfaces/service-response.interface.d.ts +2 -6
  413. package/lib/services/base-data-service.class.d.ts +17 -0
  414. package/lib/services/base-service.class.d.ts +27 -20
  415. package/lib/services/factories.d.ts +30 -0
  416. package/lib/services/index.d.ts +3 -0
  417. package/lib/services/jsonapi/index.d.ts +4 -0
  418. package/lib/services/jsonapi/jsonapi-preferences.service.d.ts +13 -0
  419. package/lib/services/jsonapi/jsonapi-service-response.adapter.d.ts +12 -0
  420. package/lib/services/jsonapi/jsonapi-service-response.class.d.ts +23 -0
  421. package/lib/services/jsonapi/jsonapi.service.d.ts +31 -0
  422. package/lib/services/name-convention/base-name-convention.service.d.ts +12 -0
  423. package/lib/services/name-convention/index.d.ts +3 -0
  424. package/lib/services/name-convention/name-convention-lower.service.d.ts +5 -0
  425. package/lib/services/name-convention/name-convention-upper.service.d.ts +5 -0
  426. package/lib/services/name-convention/name-convention.service.d.ts +10 -0
  427. package/lib/services/ontimize/index.d.ts +3 -0
  428. package/lib/services/ontimize/o-preference-query-argument.adapter.d.ts +7 -0
  429. package/lib/services/ontimize/o-preference-response.adapter.d.ts +9 -0
  430. package/lib/services/ontimize/ontimize-base-service.class.d.ts +3 -3
  431. package/lib/services/ontimize/ontimize-ee.service.d.ts +1 -0
  432. package/lib/services/ontimize/ontimize-export-3xx.service.d.ts +3 -2
  433. package/lib/services/ontimize/ontimize-export.service.d.ts +2 -2
  434. package/lib/services/ontimize/ontimize-file.service.d.ts +3 -2
  435. package/lib/services/ontimize/ontimize-preferences.service.d.ts +16 -0
  436. package/lib/services/ontimize/ontimize-service-response.adapter.d.ts +6 -5
  437. package/lib/services/ontimize/ontimize.service.d.ts +2 -0
  438. package/lib/services/parser/o-service-response.parser.d.ts +11 -5
  439. package/lib/services/query-arguments/base-query-argument.adapter.d.ts +6 -0
  440. package/lib/services/query-arguments/base-query-argument.interface.d.ts +3 -0
  441. package/lib/services/query-arguments/index.d.ts +4 -0
  442. package/lib/services/query-arguments/jsonapi-query-arguments.adapter.d.ts +12 -0
  443. package/lib/services/query-arguments/ontimize-query-arguments.adapter.d.ts +8 -0
  444. package/lib/types/config.type.d.ts +3 -1
  445. package/lib/types/configure-service-args.type.d.ts +5 -5
  446. package/lib/types/index.d.ts +4 -0
  447. package/lib/types/json-query-parameter.type.d.ts +15 -0
  448. package/lib/types/preferences.type.d.ts +7 -0
  449. package/lib/types/query-params.type.d.ts +11 -0
  450. package/lib/types/service-configuration.type.d.ts +7 -0
  451. package/lib/types/service-request-param.type.d.ts +5 -5
  452. package/lib/types/service-type.type.d.ts +5 -0
  453. package/lib/util/codes.d.ts +6 -5
  454. package/lib/util/index.d.ts +1 -0
  455. package/lib/util/preference-mapping-util.d.ts +74 -0
  456. package/lib/util/util.d.ts +10 -2
  457. package/package.json +1 -1
  458. package/theme.scss +69 -69
@@ -521,8 +521,8 @@ export class OFormLayoutManagerComponent {
521
521
  OFormLayoutManagerComponent.DIALOG_MODE = 'dialog';
522
522
  OFormLayoutManagerComponent.TAB_MODE = 'tab';
523
523
  OFormLayoutManagerComponent.SPLIT_PANE_MODE = 'split-pane';
524
- OFormLayoutManagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OFormLayoutManagerComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.MatDialog }, { token: i0.ElementRef }, { token: i3.OFormLayoutManagerBase, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
525
- OFormLayoutManagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OFormLayoutManagerComponent, selector: "o-form-layout-manager", inputs: { oattr: ["attr", "oattr"], mode: "mode", storeState: ["store-state", "storeState"], title: "title", labelColumns: ["label-columns", "labelColumns"], separator: "separator", titleDataOrigin: ["title-data-origin", "titleDataOrigin"], dialogWidth: ["dialog-width", "dialogWidth"], dialogMinWidth: ["dialog-min-width", "dialogMinWidth"], dialogMaxWidth: ["dialog-max-width", "dialogMaxWidth"], dialogHeight: ["dialog-height", "dialogHeight"], dialogMinHeight: ["dialog-min-height", "dialogMinHeight"], "dialogMaxHeight dialog-max-height": "dialogMaxHeight dialog-max-height", dialogClass: ["dialog-class", "dialogClass"], dialogTitleSeparator: ["dialog-title-separator", "dialogTitleSeparator"] }, outputs: { onMainTabSelected: "onMainTabSelected", onSelectedTabChange: "onSelectedTabChange", onCloseTab: "onCloseTab" }, host: { listeners: { "window:beforeunload": "beforeunloadHandler()" }, properties: { "class.o-form-layout-manager": "true" } }, providers: [
524
+ OFormLayoutManagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutManagerComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.MatDialog }, { token: i0.ElementRef }, { token: i3.OFormLayoutManagerBase, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
525
+ OFormLayoutManagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OFormLayoutManagerComponent, selector: "o-form-layout-manager", inputs: { oattr: ["attr", "oattr"], mode: "mode", storeState: ["store-state", "storeState"], title: "title", labelColumns: ["label-columns", "labelColumns"], separator: "separator", titleDataOrigin: ["title-data-origin", "titleDataOrigin"], dialogWidth: ["dialog-width", "dialogWidth"], dialogMinWidth: ["dialog-min-width", "dialogMinWidth"], dialogMaxWidth: ["dialog-max-width", "dialogMaxWidth"], dialogHeight: ["dialog-height", "dialogHeight"], dialogMinHeight: ["dialog-min-height", "dialogMinHeight"], "dialogMaxHeight dialog-max-height": "dialogMaxHeight dialog-max-height", dialogClass: ["dialog-class", "dialogClass"], dialogTitleSeparator: ["dialog-title-separator", "dialogTitleSeparator"] }, outputs: { onMainTabSelected: "onMainTabSelected", onSelectedTabChange: "onSelectedTabChange", onCloseTab: "onCloseTab" }, host: { listeners: { "window:beforeunload": "beforeunloadHandler()" }, properties: { "class.o-form-layout-manager": "true" } }, providers: [
526
526
  ComponentStateServiceProvider,
527
527
  { provide: O_COMPONENT_STATE_SERVICE, useClass: OFormLayoutManagerComponentStateService },
528
528
  { provide: OFormLayoutManagerBase, useExisting: OFormLayoutManagerComponent }
@@ -531,7 +531,7 @@ __decorate([
531
531
  BooleanInputConverter(),
532
532
  __metadata("design:type", Boolean)
533
533
  ], OFormLayoutManagerComponent.prototype, "storeState", void 0);
534
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OFormLayoutManagerComponent, decorators: [{
534
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutManagerComponent, decorators: [{
535
535
  type: Component,
536
536
  args: [{ selector: 'o-form-layout-manager', inputs: DEFAULT_INPUTS_O_FORM_LAYOUT_MANAGER, outputs: DEFAULT_OUTPUTS_O_FORM_LAYOUT_MANAGER, providers: [
537
537
  ComponentStateServiceProvider,
@@ -554,4 +554,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
554
554
  type: HostListener,
555
555
  args: ['window:beforeunload', []]
556
556
  }] } });
557
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L28tZm9ybS1sYXlvdXQtbWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9mb3JtLWxheW91dC9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUdSLFFBQVEsRUFDUixRQUFRLEVBRVIsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQWlDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBaUMsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGVBQWUsRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFJekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFL0YsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sb0VB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UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2tpcFNlbGYsXG4gIFR5cGUsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgSUxheW91dE1hbmFnZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2xheW91dC1tYW5hZ2VyLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUxvY2FsU3RvcmFnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbG9jYWwtc3RvcmFnZS1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlck1vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL28tZm9ybS1sYXlvdXQtbWFuYWdlci1tb2RlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlciwgT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhY3Rvcmllcyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVDbGFzcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tZm9ybS1sYXlvdXQtbWFuYWdlci1jb21wb25lbnQtc3RhdGUuY2xhc3MnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGUvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbXBvbmVudC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlL28tdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucywgRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEgfSBmcm9tICcuLi8uLi90eXBlcy9mb3JtLWxheW91dC1kZXRhaWwtY29tcG9uZW50LWRhdGEudHlwZSc7XG5pbXBvcnQgeyBPX0dMT0JBTF9DT05GSUcgfSBmcm9tICcuLi8uLi90eXBlcy9vLWdsb2JhbC1jb25maWcudHlwZSc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZGlhbG9nL28tZm9ybS1sYXlvdXQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvby1mb3JtLWxheW91dC1jYW4tYWN0aXZhdGUtY2hpbGQuZ3VhcmQnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSB9IGZyb20gJy4vby1mb3JtLWxheW91dC1tYW5hZ2VyLWJhc2UuY2xhc3MnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGV4dCB9IGZyb20gJy4uLy4uL3R5cGVzL2Zvcm0tbGF5b3V0LW1hbmFnZXItY29udGV4dC50eXBlJztcbmltcG9ydCB7IElPRm9ybUxheW91dE1hbmFnZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Zvcm0tbGF5b3V0LW1hbmFnZXIuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fRk9STV9MQVlPVVRfTUFOQUdFUiA9IFtcbiAgJ29hdHRyOiBhdHRyJyxcbiAgJ21vZGUnLFxuICAnc3RvcmVTdGF0ZTogc3RvcmUtc3RhdGUnLFxuXG4gIC8vIENvbW1vbiBmb3IgZGlhbG9nIGFuZCB0YWIgbW9kZVxuICAvLyBkZXByZWNhdGVkLCBvbmx5IG1hbnRhaW5lZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgJ3RpdGxlJyxcbiAgJ2xhYmVsQ29sdW1uczogbGFiZWwtY29sdW1ucycsXG4gICdzZXBhcmF0b3InLFxuXG4gIC8vIGF0dHIgb2YgdGhlIGNoaWxkIGZvcm0gZnJvbSB3aGljaCB0aGUgZGF0YSBmb3IgYnVpbGRpbmcgdGhlIHRhYiB0aXRsZSB3aWxsIGJlIG9idGFpbmVkIChvbmx5IGluIHRhYiBtb2RlKVxuICAvLyBkZXByZWNhdGVkLCBvbmx5IG1hbnRhaW5lZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgJ3RpdGxlRGF0YU9yaWdpbjogdGl0bGUtZGF0YS1vcmlnaW4nLFxuXG4gIC8vIE9ubHkgZGlhbG9nIG9wdGlvbnMgY29uZmlndXJhYmxlIGFzIGFuIGlucHV0IG9mIHRoZSBvLWZvcm0tbGF5b3V0LW1hbmFnZXIgKHVzZSB0aGUgby1mb3JtLWxheW91dC1kaWFsb2ctb3B0aW9ucyBkaXJlY3RpdmUpXG4gIC8vIGRlcHJlY2F0ZWQsIG9ubHkgbWFudGFpbmVkIGZvciBsZWdhY3kgcmVhc29uc1xuICAnZGlhbG9nV2lkdGg6IGRpYWxvZy13aWR0aCcsXG4gICdkaWFsb2dNaW5XaWR0aDogZGlhbG9nLW1pbi13aWR0aCcsXG4gICdkaWFsb2dNYXhXaWR0aDogZGlhbG9nLW1heC13aWR0aCcsXG4gICdkaWFsb2dIZWlnaHQ6IGRpYWxvZy1oZWlnaHQnLFxuICAnZGlhbG9nTWluSGVpZ2h0OiBkaWFsb2ctbWluLWhlaWdodCcsXG4gICdkaWFsb2dNYXhIZWlnaHQgZGlhbG9nLW1heC1oZWlnaHQnLFxuICAnZGlhbG9nQ2xhc3M6IGRpYWxvZy1jbGFzcycsXG4gICdkaWFsb2dUaXRsZVNlcGFyYXRvcjogZGlhbG9nLXRpdGxlLXNlcGFyYXRvcidcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19GT1JNX0xBWU9VVF9NQU5BR0VSID0gW1xuICAnb25NYWluVGFiU2VsZWN0ZWQnLFxuICAnb25TZWxlY3RlZFRhYkNoYW5nZScsXG4gICdvbkNsb3NlVGFiJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby1mb3JtLWxheW91dC1tYW5hZ2VyJyxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX0ZPUk1fTEFZT1VUX01BTkFHRVIsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX0ZPUk1fTEFZT1VUX01BTkFHRVIsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQ29tcG9uZW50U3RhdGVTZXJ2aWNlUHJvdmlkZXIsXG4gICAgeyBwcm92aWRlOiBPX0NPTVBPTkVOVF9TVEFURV9TRVJWSUNFLCB1c2VDbGFzczogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlIH0sXG4gICAgeyBwcm92aWRlOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlLCB1c2VFeGlzdGluZzogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50IH1cbiAgXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1mb3JtLWxheW91dC1tYW5hZ2VyXSc6ICd0cnVlJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95LCBJTG9jYWxTdG9yYWdlQ29tcG9uZW50LElPRm9ybUxheW91dE1hbmFnZXIge1xuXG4gIC8vIGRlY2xhcmluZyB0aGlzIHByb3BlcnR5IHRvIGhhdmUgYWNjZXMgdG8gc3RhdGljIG1lbWJlcnMgaW4gdGhlIHRlbXBsYXRlXG4gIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCA9IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudDtcblxuXG4gIHB1YmxpYyBzdGF0aWMgRElBTE9HX01PREUgPSAnZGlhbG9nJztcbiAgcHVibGljIHN0YXRpYyBUQUJfTU9ERSA9ICd0YWInO1xuICBwdWJsaWMgc3RhdGljIFNQTElUX1BBTkVfTU9ERSA9ICdzcGxpdC1wYW5lJztcblxuICBwdWJsaWMgb2F0dHI6IHN0cmluZztcbiAgcHVibGljIF9tb2RlOiBzdHJpbmcgPSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuRElBTE9HX01PREU7XG4gIHB1YmxpYyBzdHJldGNoVGFicyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBnZXQgbW9kZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9tb2RlO1xuICB9XG5cbiAgcHVibGljIHNldCBtb2RlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhdmFpbGFibGVNb2RlVmFsdWVzID0gW09Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERSwgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlRBQl9NT0RFLCBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuU1BMSVRfUEFORV9NT0RFXTtcbiAgICB0aGlzLl9tb2RlID0gKHZhbHVlIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChhdmFpbGFibGVNb2RlVmFsdWVzLmluZGV4T2YodGhpcy5fbW9kZSkgPT09IC0xKSB7XG4gICAgICB0aGlzLl9tb2RlID0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LkRJQUxPR19NT0RFO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfc2VwYXJhdG9yOiBzdHJpbmcgPSAnICc7XG5cbiAgLyoqXG4gICogQGRlcHJlY2F0ZWQgdXNlciBzaG91bGQgdXNlIHRoZSBvcHRpb25zIGlucHV0XG4gICovXG4gIHNldCBzZXBhcmF0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NlcGFyYXRvciA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHNlcGFyYXRvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXBhcmF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlciBzaG91bGQgdXNlIHRoZSBvcHRpb25zIGlucHV0XG4gICAqL1xuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIHN0b3JlU3RhdGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAqIEBkZXByZWNhdGVkIHVzZXIgc2hvdWxkIHVzZSB0aGUgb3B0aW9ucyBpbnB1dFxuICAqL1xuICBwdWJsaWMgdGl0bGVEYXRhT3JpZ2luOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoZSBuZXh0IGlucHV0cyBhcmUgZGVwcmVjYXRlZCBhbmQgdXNlciBzaG91bGQgdXNlIHRoZSBPRm9ybUxheW91dERpYWxvZ09wdGlvbnNEaXJlY3RpdmUgaW5wdXRzXG4gICAqL1xuICBwdWJsaWMgZGlhbG9nV2lkdGg6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ01pbldpZHRoOiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNYXhXaWR0aDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nSGVpZ2h0OiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNaW5IZWlnaHQ6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ01heEhlaWdodDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgZGlhbG9nVGl0bGVTZXBhcmF0b3IgPSAnOic7XG5cbiAgQFZpZXdDaGlsZCgndGFiR3JvdXAnKVxuICBwdWJsaWMgb1RhYkdyb3VwOiBPRm9ybUxheW91dE1hbmFnZXJNb2RlO1xuICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8T0Zvcm1MYXlvdXREaWFsb2dDb21wb25lbnQ+O1xuICBAVmlld0NoaWxkKCdzcGxpdFBhbmUnKVxuICBwdWJsaWMgb1NwbGl0UGFuZTogT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZTtcblxuICBwdWJsaWMgb25NYWluVGFiU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBvblNlbGVjdGVkVGFiQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25DbG9zZVRhYjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcm90ZWN0ZWQgX2xhYmVsQ29sdW1uczogc3RyaW5nO1xuXG4gIGdldCBsYWJlbENvbHVtbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxDb2x1bW5zO1xuICB9XG5cbiAgLyoqXG4gICogQGRlcHJlY2F0ZWQgdXNlciBzaG91bGQgdXNlIHRoZSBvcHRpb25zIGlucHV0XG4gICovXG4gIHNldCBsYWJlbENvbHVtbnModmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2xhYmVsQ29sdW1ucyA9IHZhbHVlO1xuICAgIHRoaXMuX2xhYmVsQ29sc0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfbGFiZWxDb2xzQXJyYXk6IHN0cmluZ1tdID0gW107XG5cbiAgZ2V0IGxhYmVsQ29sc0FycmF5KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxDb2xzQXJyYXk7XG4gIH1cblxuICBzZXQgbGFiZWxDb2xzQXJyYXkodmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fbGFiZWxDb2xzQXJyYXkgPSB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBPVHJhbnNsYXRlU2VydmljZTtcbiAgcHJvdGVjdGVkIG9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2U6IE9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2U7XG4gIHByb3RlY3RlZCBsb2NhbFN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlO1xuXG4gIHByb3RlY3RlZCBfdGFiR3JvdXBPcHRpb25zOiBhbnkgPSB7fTtcblxuICBnZXQgdGFiR3JvdXBPcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYkdyb3VwT3B0aW9ucztcbiAgfVxuXG4gIGFkZFRhYkdyb3VwT3B0aW9ucyh2YWx1ZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl90YWJHcm91cE9wdGlvbnMsIHZhbHVlKTtcbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2xhYmVsQ29sdW1ucycpKSB7XG4gICAgICB0aGlzLmxhYmVsQ29sc0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHZhbHVlWydsYWJlbENvbHVtbnMnXSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnc2VwYXJhdG9yJykpIHtcbiAgICAgIHRoaXMuc2VwYXJhdG9yID0gdmFsdWVbJ3NlcGFyYXRvciddO1xuICAgIH1cbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ3N0cmV0Y2hUYWJzJykpIHtcbiAgICAgIHRoaXMuc3RyZXRjaFRhYnMgPSB2YWx1ZVsnc3RyZXRjaFRhYnMnXTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX2RpYWxvZ09wdGlvbnM6IGFueSA9IHt9O1xuXG4gIGdldCBkaWFsb2dPcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2RpYWxvZ09wdGlvbnM7XG4gIH1cblxuICBhZGREaWFsb2dPcHRpb25zKHZhbHVlOiBhbnkpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuX2RpYWxvZ09wdGlvbnMsIHZhbHVlKTtcbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2xhYmVsQ29sdW1ucycpKSB7XG4gICAgICB0aGlzLmxhYmVsQ29sc0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHZhbHVlWydsYWJlbENvbHVtbnMnXSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnc2VwYXJhdG9yJykpIHtcbiAgICAgIHRoaXMuc2VwYXJhdG9yID0gdmFsdWVbJ3NlcGFyYXRvciddO1xuICAgIH1cbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2RpYWxvZ1RpdGxlU2VwYXJhdG9yJykpIHtcbiAgICAgIHRoaXMuZGlhbG9nVGl0bGVTZXBhcmF0b3IgPSB2YWx1ZVsnZGlhbG9nVGl0bGVTZXBhcmF0b3InXTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NwbGl0UGFuZU9wdGlvbnM6IGFueSA9IHt9O1xuXG4gIGdldCBzcGxpdFBhbmVPcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3NwbGl0UGFuZU9wdGlvbnM7XG4gIH1cblxuICBhZGRTcGxpdFBhbmVPcHRpb25zKHZhbHVlOiBhbnkpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuX3NwbGl0UGFuZU9wdGlvbnMsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRpbmdHdWFyZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2U7XG5cbiAgcHVibGljIF9tYXJrRm9yVXBkYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBvblRyaWdnZXJVcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByb3RlY3RlZCBjb21wb25lbnRTdGF0ZVNlcnZpY2U6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgYWN0Um91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcm90ZWN0ZWQgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgQFNraXBTZWxmKCkgQE9wdGlvbmFsKClcbiAgICBwdWJsaWMgcGFyZW50Rm9ybUxheW91dE1hbmFnZXI6IE9Gb3JtTGF5b3V0TWFuYWdlckJhc2VcbiAgKSB7XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZSk7XG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTG9jYWxTdG9yYWdlU2VydmljZSk7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT1RyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChOYXZpZ2F0aW9uU2VydmljZSk7XG4gICAgdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZVNlcnZpY2U+KEFic3RyYWN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlIGFzIFR5cGU8T0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlPik7XG4gICAgaWYgKHRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5vblJvdXRlQ2hhbmdlLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlU3RvcmFnZSgpO1xuICAgICAgfSkpO1xuICAgIH1cbiAgICB0aGlzLmdldEluamVjdGlvblRva2VuQ29uZmlnKCk7XG5cbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5qZWN0aW9uVG9rZW5Db25maWcoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG9HbG9iYWxDb25maWcgPSB0aGlzLmluamVjdG9yLmdldChPX0dMT0JBTF9DT05GSUcpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKG9HbG9iYWxDb25maWcuc3RvcmVTdGF0ZSkpIHtcbiAgICAgICAgdGhpcy5zdG9yZVN0YXRlID0gb0dsb2JhbENvbmZpZy5zdG9yZVN0YXRlO1xuICAgICAgICBpZiAoIXRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gRG8gbm90aGluZyBiZWNhdXNlIGlzIG9wdGlvbmFsXG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlQ2xhc3Mge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZS5zdGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEFjdGl2YXRlQ2hpbGRHdWFyZCgpO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5vYXR0cikpIHtcbiAgICAgIHRoaXMub2F0dHIgPSAodGhpcy50aXRsZSB8fCAnJykgKyB0aGlzLm1vZGU7XG4gICAgICBjb25zb2xlLndhcm4oJ28tZm9ybS1sYXlvdXQtbWFuYWdlciBtdXN0IGhhdmUgYW4gdW5pcXVlIGF0dHInKTtcbiAgICB9XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLnJlZ2lzdGVyRm9ybUxheW91dE1hbmFnZXIodGhpcyk7XG4gICAgaWYgKHRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZWxSZWYpIHtcbiAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgndGl0bGUnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZS5yZW1vdmVGb3JtTGF5b3V0TWFuYWdlcih0aGlzKTtcbiAgICB0aGlzLmRlc3Ryb3lBY3RpdmF0ZUNoaWxkR3VhcmQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBdHRyaWJ1dGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vYXR0cjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb21wb25lbnRLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ09Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudF8nICsgdGhpcy5vYXR0cjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZUtleSgpOiBzdHJpbmcge1xuICAgIGxldCByb3V0ZSA9IHRoaXMucm91dGVyLnVybDtcbiAgICB0aGlzLmFjdFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICByb3V0ZSA9IHJvdXRlLnJlcGxhY2UocGFyYW1zW2tleV0sIGtleSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcm91dGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YVRvU3RvcmUoKTogYW55IHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpID8gY29tcFJlZi5nZXREYXRhVG9TdG9yZSgpIDoge307XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJywgW10pXG4gIHB1YmxpYyBiZWZvcmV1bmxvYWRIYW5kbGVyKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlU3RhdGVTdG9yYWdlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFiZWxGcm9tVXJsUGFyYW1zKHVybFBhcmFtczogb2JqZWN0KTogc3RyaW5nIHtcbiAgICBsZXQgbGFiZWwgPSAnJztcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModXJsUGFyYW1zKTtcbiAgICBrZXlzLmZvckVhY2goKHBhcmFtLCBpKSA9PiB7XG4gICAgICBsYWJlbCArPSB1cmxQYXJhbXNbcGFyYW1dICsgKChpIDwga2V5cy5sZW5ndGggLSAxKSA/IHRoaXMuc2VwYXJhdG9yIDogJycpO1xuICAgIH0pO1xuICAgIHJldHVybiBsYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtRGF0YUZyb21MYWJlbENvbHVtbnMoZGF0YTogYW55KSB7XG4gICAgY29uc3QgZm9ybURhdGEgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKHggPT4ge1xuICAgICAgaWYgKHRoaXMubGFiZWxDb2xzQXJyYXkuaW5kZXhPZih4KSA+IC0xKSB7XG4gICAgICAgIGZvcm1EYXRhW3hdID0gZGF0YVt4XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZm9ybURhdGE7XG4gIH1cblxuICBwdWJsaWMgYWRkQWN0aXZhdGVDaGlsZEd1YXJkKCk6IHZvaWQge1xuICAgIGNvbnN0IHJvdXRlQ29uZmlnID0gdGhpcy5nZXRQYXJlbnRBY3RSb3V0ZVJvdXRlKCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJvdXRlQ29uZmlnKSkge1xuICAgICAgY29uc3QgY2FuQWN0aXZhdGVDaGlsZEFycmF5ID0gKHJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGQgfHwgW10pO1xuICAgICAgbGV0IHByZXZpb3VzbHlBZGRlZCA9IGZhbHNlO1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGNhbkFjdGl2YXRlQ2hpbGRBcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBjb25zdCBndWFyZENoaWxkID0gdGhpcy5pbmplY3Rvci5nZXQoQ2FuQWN0aXZhdGVGb3JtTGF5b3V0Q2hpbGRHdWFyZCk7XG4gICAgICAgIHByZXZpb3VzbHlBZGRlZCA9IChjYW5BY3RpdmF0ZUNoaWxkQXJyYXlbaV0gPT09IGd1YXJkQ2hpbGQuY29uc3RydWN0b3IpO1xuICAgICAgICBpZiAocHJldmlvdXNseUFkZGVkKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghcHJldmlvdXNseUFkZGVkKSB7XG4gICAgICAgIHRoaXMuYWRkaW5nR3VhcmQgPSB0cnVlO1xuICAgICAgICBjYW5BY3RpdmF0ZUNoaWxkQXJyYXkucHVzaChDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkKTtcbiAgICAgICAgcm91dGVDb25maWcuY2FuQWN0aXZhdGVDaGlsZCA9IGNhbkFjdGl2YXRlQ2hpbGRBcnJheTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveUFjdGl2YXRlQ2hpbGRHdWFyZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWRkaW5nR3VhcmQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLmFjdGl2ZUZvcm1MYXlvdXRNYW5hZ2VyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZS5jb250ZXh0ID0gdm9pZCAwO1xuICAgIGNvbnN0IHJvdXRlQ29uZmlnID0gdGhpcy5nZXRQYXJlbnRBY3RSb3V0ZVJvdXRlKCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJvdXRlQ29uZmlnKSkge1xuICAgICAgZm9yIChsZXQgaSA9IChyb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkIHx8IFtdKS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBndWFyZENoaWxkID0gdGhpcy5pbmplY3Rvci5nZXQoQ2FuQWN0aXZhdGVGb3JtTGF5b3V0Q2hpbGRHdWFyZCk7XG4gICAgICAgIGlmIChyb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkW2ldID09PSBndWFyZENoaWxkLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgcm91dGVDb25maWcuY2FuQWN0aXZhdGVDaGlsZC5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNEaWFsb2dNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERTtcbiAgfVxuXG4gIHB1YmxpYyBpc1RhYk1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlRBQl9NT0RFO1xuICB9XG5cbiAgcHVibGljIGlzU3BsaXRQYW5lTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuU1BMSVRfUEFORV9NT0RFO1xuICB9XG5cbiAgcHVibGljIGFkZERldGFpbENvbXBvbmVudChjaGlsZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCB1cmw6IHN0cmluZywgY29udGV4dD86IE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRleHQpOiB2b2lkIHtcbiAgICBjaGlsZFJvdXRlID0gVXRpbC5nZXRMYXN0QWN0aXZhdGVSb3V0ZShjaGlsZFJvdXRlKTtcbiAgICBjb25zdCBuZXdEZXRhaWxDb21wOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHBhcmFtczogY2hpbGRSb3V0ZS5wYXJhbXMsXG4gICAgICBxdWVyeVBhcmFtczogY2hpbGRSb3V0ZS5xdWVyeVBhcmFtcyxcbiAgICAgIHVybFNlZ21lbnRzOiBjaGlsZFJvdXRlLnVybCxcbiAgICAgIGNvbXBvbmVudDogY2hpbGRSb3V0ZS5yb3V0ZUNvbmZpZy5jb21wb25lbnQsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGlkOiBVdGlsLnJhbmRvbU51bWJlcigpLnRvU3RyaW5nKCksXG4gICAgICBsYWJlbDogY29udGV4dD8ubGFiZWwgfHwgJycsXG4gICAgICBpbm5lckZvcm1zSW5mbzoge30sXG4gICAgICByZW5kZXJlZDogZmFsc2UsXG4gICAgICBpbnNlcnRpb25Nb2RlOiBjaGlsZFJvdXRlLnF1ZXJ5UGFyYW1zW0NvZGVzLklOU0VSVElPTl9NT0RFXSA9PT0gJ3RydWUnLFxuICAgICAgcmVuZGVyZXJTdWJqZWN0OiBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKVxuICAgIH07XG4gICAgLyoqIGxpc3RlbmluZyBmb3IgdGhlIGNvbXBvbmVudHMgdG8gYmUgcmVuZGVyZWQgdG8gZGV0ZXJtaW5lIHRoYXQgdGhlIGZvcm0tbGF5b3V0LW1hbmFnZXIgaXMgZmluaXNoZWQgbmF2aWdhdGluZy4gKi9cbiAgICBuZXdEZXRhaWxDb21wLnJlbmRlcmVyU3ViamVjdC5zdWJzY3JpYmUoKHJlbmRlcmVyOmJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChyZW5kZXJlcikge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmlzTmF2aWdhdGluZyA9ICFyZW5kZXJlcjtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmlzRGlhbG9nTW9kZSgpKSB7XG4gICAgICB0aGlzLm9wZW5Gb3JtTGF5b3V0RGlhbG9nKG5ld0RldGFpbENvbXApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZikpIHtcbiAgICAgICAgY29tcFJlZi5vcGVuRGV0YWlsKG5ld0RldGFpbENvbXApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbG9zZURldGFpbChvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZikpIHtcbiAgICAgIGNvbXBSZWYuY2xvc2VEZXRhaWwob3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlRGV0YWlscyhkZXRhaWxzRGF0YTogYW55W10gPSBbXSwgb3B0aW9ucz86IEZvcm1MYXlvdXRDbG9zZURldGFpbE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCkpIHtcbiAgICAgIHRoaXMub1RhYkdyb3VwLmNsb3NlRGV0YWlscyhkZXRhaWxzRGF0YSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW5Gb3JtTGF5b3V0RGlhbG9nKGRldGFpbENvbXA6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhKTogdm9pZCB7XG4gICAgY29uc3QgY3NzY2xhc3MgPSBbJ28tZm9ybS1sYXlvdXQtZGlhbG9nLW92ZXJsYXknXTtcbiAgICBpZiAodGhpcy5kaWFsb2dDbGFzcykge1xuICAgICAgY3NzY2xhc3MucHVzaCh0aGlzLmRpYWxvZ0NsYXNzKTtcbiAgICB9XG5cbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0gKHRoaXMuZGlhbG9nT3B0aW9ucyB8fCB7fSk7XG5cbiAgICBjb25zdCBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZyA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZGF0YTogZGV0YWlsQ29tcCxcbiAgICAgICAgbGF5b3V0TWFuYWdlckNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgdGl0bGU6ICh0aGlzLnRpdGxlIHx8IGRpYWxvZ09wdGlvbnMudGl0bGUpLFxuICAgICAgICBkaWFsb2dUaXRsZVNlcGFyYXRvcjogdGhpcy5kaWFsb2dUaXRsZVNlcGFyYXRvclxuICAgICAgfSxcbiAgICAgIHdpZHRoOiBkaWFsb2dPcHRpb25zLndpZHRoIHx8IHRoaXMuZGlhbG9nV2lkdGgsXG4gICAgICBtaW5XaWR0aDogZGlhbG9nT3B0aW9ucy5taW5XaWR0aCB8fCB0aGlzLmRpYWxvZ01pbldpZHRoLFxuICAgICAgbWF4V2lkdGg6IGRpYWxvZ09wdGlvbnMubWF4V2lkdGggfHwgdGhpcy5kaWFsb2dNYXhXaWR0aCxcbiAgICAgIGhlaWdodDogZGlhbG9nT3B0aW9ucy5oZWlnaHQgfHwgdGhpcy5kaWFsb2dIZWlnaHQsXG4gICAgICBtaW5IZWlnaHQ6IGRpYWxvZ09wdGlvbnMubWluSGVpZ2h0IHx8IHRoaXMuZGlhbG9nTWluSGVpZ2h0LFxuICAgICAgbWF4SGVpZ2h0OiBkaWFsb2dPcHRpb25zLm1heEhlaWdodCB8fCB0aGlzLmRpYWxvZ01heEhlaWdodCxcbiAgICAgIGRpc2FibGVDbG9zZTogZGlhbG9nT3B0aW9ucy5kaXNhYmxlQ2xvc2UgfHwgdHJ1ZSxcbiAgICAgIHBhbmVsQ2xhc3M6IGRpYWxvZ09wdGlvbnMuY2xhc3MgfHwgY3NzY2xhc3NcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuZGlhbG9nT3B0aW9ucykge1xuICAgICAgZGlhbG9nQ29uZmlnLmNsb3NlT25OYXZpZ2F0aW9uID0gdGhpcy5kaWFsb2dPcHRpb25zLmNsb3NlT25OYXZpZ2F0aW9uO1xuICAgICAgZGlhbG9nQ29uZmlnLmJhY2tkcm9wQ2xhc3MgPSB0aGlzLmRpYWxvZ09wdGlvbnMuYmFja2Ryb3BDbGFzcztcbiAgICAgIGRpYWxvZ0NvbmZpZy5wb3NpdGlvbiA9IHRoaXMuZGlhbG9nT3B0aW9ucy5wb3NpdGlvbjtcbiAgICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSB0aGlzLmRpYWxvZ09wdGlvbnMuZGlzYWJsZUNsb3NlO1xuICAgIH1cblxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5tYXJrRm9yVXBkYXRlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSWZOZWVkZWQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVsb2FkTWFpbkNvbXBvbmVudHMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlck9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBkZXRhaWxDb21wLnJlbmRlcmVkID0gdHJ1ZTtcbiAgICAgIGRldGFpbENvbXAucmVuZGVyZXJTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rm9ybUNhY2hlRGF0YSgpOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0Rm9ybUNhY2hlRGF0YSgpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNldE1vZGlmaWVkU3RhdGUoZm9ybUF0dHI6IHN0cmluZywgbW9kaWZpZWQ6IGJvb2xlYW4sIGNvbmZpcm1FeGl0OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgY29tcFJlZi5zZXRNb2RpZmllZFN0YXRlKGZvcm1BdHRyLCBtb2RpZmllZCwgY29uZmlybUV4aXQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRMYWJlbEZyb21EYXRhKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IGxhYmVsID0gJyc7XG4gICAgY29uc3QgaXNEYXRhRGVmaW5lZCA9IFV0aWwuaXNEZWZpbmVkKGRhdGEpO1xuICAgIGlmIChpc0RhdGFEZWZpbmVkICYmIGRhdGEuaGFzT3duUHJvcGVydHkoJ25ld190YWJfdGl0bGUnKSkge1xuICAgICAgbGFiZWwgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KGRhdGEubmV3X3RhYl90aXRsZSk7XG4gICAgfSBlbHNlIGlmIChpc0RhdGFEZWZpbmVkICYmIHRoaXMubGFiZWxDb2xzQXJyYXkubGVuZ3RoICE9PSAwKSB7XG4gICAgICB0aGlzLmxhYmVsQ29sc0FycmF5LmZvckVhY2goKGNvbCwgaWR4KSA9PiB7XG4gICAgICAgIGlmIChkYXRhW2NvbF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxhYmVsICs9IGRhdGFbY29sXSArICgoaWR4IDwgdGhpcy5sYWJlbENvbHNBcnJheS5sZW5ndGggLSAxKSA/IHRoaXMuc2VwYXJhdG9yIDogJycpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxhYmVsO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU5hdmlnYXRpb24oZGF0YTogYW55LCBrZXlzVmFsdWVzOiBhbnksIGluc2VydGlvbk1vZGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpKSB7XG4gICAgICBjb21wUmVmLnVwZGF0ZU5hdmlnYXRpb24oZGF0YSwga2V5c1ZhbHVlcywgaW5zZXJ0aW9uTW9kZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFjdGl2ZURhdGEoZGF0YTogYW55KSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgY29tcFJlZi51cGRhdGVBY3RpdmVEYXRhKGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZU9mQWN0aXZlSXRlbSgpOiBhbnlbXSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0Um91dGVPZkFjdGl2ZUl0ZW0oKSA6IFtdO1xuICB9XG5cbiAgcHVibGljIGlzTWFpbkNvbXBvbmVudChjb21wOiBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmlzRGlhbG9nTW9kZSgpKSB7XG4gICAgICByZXR1cm4gIWNvbXAub0Zvcm1MYXlvdXREaWFsb2c7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZilcbiAgICAgICYmIChjb21wUmVmLmlzTWFpbkNvbXBvbmVudChjb21wKVxuICAgICAgICB8fCAoVXRpbC5pc0RlZmluZWQoY29tcC5wYXJlbnRDb21wb25lbnQpKSAmJiBjb21wUmVmLmlzTWFpbkNvbXBvbmVudChjb21wLnBhcmVudENvbXBvbmVudCkpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZUZvckNvbXBvbmVudChjb21wOiBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCk6IGFueVtdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5wYXJlbnRGb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgY29uc3QgcGFyZW50Um91dGUgPSB0aGlzLnBhcmVudEZvcm1MYXlvdXRNYW5hZ2VyLmdldFJvdXRlRm9yQ29tcG9uZW50KGNvbXApO1xuICAgICAgaWYgKHBhcmVudFJvdXRlICYmIHBhcmVudFJvdXRlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4ucGFyZW50Um91dGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNNYWluQ29tcG9uZW50KGNvbXApKSB7XG4gICAgICBjb25zdCBhY3RpdmVSb3V0ZSA9IHRoaXMuZ2V0Um91dGVPZkFjdGl2ZUl0ZW0oKTtcblxuICAgICAgaWYgKGFjdGl2ZVJvdXRlICYmIGFjdGl2ZVJvdXRlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4uYWN0aXZlUm91dGUpO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBc0FjdGl2ZUZvcm1MYXlvdXRNYW5hZ2VyKCk6IHZvaWQge1xuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZS5hY3RpdmVGb3JtTGF5b3V0TWFuYWdlciA9IHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkTWFpbkNvbXBvbmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5vblRyaWdnZXJVcGRhdGUuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIGFsbG93VG9VcGRhdGVOYXZpZ2F0aW9uKGZvcm1BdHRyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuaXNUYWJNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5vVGFiR3JvdXApICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMudGl0bGVEYXRhT3JpZ2luKSkgP1xuICAgICAgdGhpcy50aXRsZURhdGFPcmlnaW4gPT09IGZvcm1BdHRyIDpcbiAgICAgIHRydWU7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU3RhdGVTdG9yYWdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlIHx8ICF0aGlzLnN0b3JlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXNUYWJNb2RlID0gdGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCk7XG4gICAgY29uc3QgaXNTcGxpdFBhbmVNb2RlID0gdGhpcy5pc1NwbGl0UGFuZU1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9TcGxpdFBhbmUpO1xuICAgIGlmIChpc1RhYk1vZGUgfHwgaXNTcGxpdFBhbmVNb2RlKSB7XG4gICAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UudXBkYXRlQ29tcG9uZW50U3RvcmFnZSh0aGlzLCB0aGlzLmdldFJvdXRlS2V5KCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFyZW50QWN0Um91dGVSb3V0ZSgpOiBSb3V0ZSB7XG4gICAgbGV0IGFjdFJvdXRlID0gdGhpcy5hY3RSb3V0ZTtcbiAgICB3aGlsZSAoYWN0Um91dGUucGFyZW50ICE9PSB1bmRlZmluZWQgJiYgYWN0Um91dGUucGFyZW50ICE9PSBudWxsKSB7XG4gICAgICBpZiAoYWN0Um91dGUucm91dGVDb25maWcuY2hpbGRyZW4gfHwgYWN0Um91dGUucm91dGVDb25maWcubG9hZENoaWxkcmVuKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYWN0Um91dGUgPSBhY3RSb3V0ZS5wYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBhY3RSb3V0ZS5yb3V0ZUNvbmZpZztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5tYXJrRm9yVXBkYXRlKSB7XG4gICAgICB0aGlzLm1hcmtGb3JVcGRhdGUgPSBmYWxzZTtcbiAgICAgIHRoaXMub25UcmlnZ2VyVXBkYXRlLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0UGFyYW1zKCk6IGFueSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0UGFyYW1zKCkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBzZXQgbWFya0ZvclVwZGF0ZShhcmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tYXJrRm9yVXBkYXRlID0gYXJnO1xuICAgIGlmICh0aGlzLmlzU3BsaXRQYW5lTW9kZSgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZUlmTmVlZGVkKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG1hcmtGb3JVcGRhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtGb3JVcGRhdGU7XG4gIH1cblxuICBnZXQgaWdub3JlQ2FuRGVhY3RpdmF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNTcGxpdFBhbmVNb2RlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpOiBPRm9ybUxheW91dE1hbmFnZXJNb2RlIHtcbiAgICBsZXQgY29tcFJlZjtcbiAgICBpZiAodGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCkpIHtcbiAgICAgIGNvbXBSZWYgPSB0aGlzLm9UYWJHcm91cDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNEaWFsb2dNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5kaWFsb2dSZWYpKSB7XG4gICAgICBjb21wUmVmID0gdGhpcy5kaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzU3BsaXRQYW5lTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMub1NwbGl0UGFuZSkpIHtcbiAgICAgIGNvbXBSZWYgPSB0aGlzLm9TcGxpdFBhbmU7XG4gICAgfVxuICAgIHJldHVybiBjb21wUmVmO1xuICB9XG5cbiAgYWxsb3dOYXZpZ2F0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc1RhYk1vZGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5BZGREZXRhaWxDb21wb25lbnQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLndyYXBJbnRvT2JzZXJ2YWJsZShVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuY2FuQWRkRGV0YWlsQ29tcG9uZW50KCkgOiB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNUb0NvbmZpcm1FeGl0KGRhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhLCBvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChvcHRpb25zKSAmJiBvcHRpb25zLmV4aXRXaXRob3V0Q29uZmlybWF0aW9uKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1zQXR0ciA9IE9iamVjdC5rZXlzKGRhdGEuaW5uZXJGb3Jtc0luZm8pO1xuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpZiAoZm9ybXNBdHRyLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvcm1zQXR0ci5mb3JFYWNoKGZvcm1BdHRyID0+IHtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IGRhdGEuaW5uZXJGb3Jtc0luZm9bZm9ybUF0dHJdO1xuICAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhLmNvbmZpcm1PbkV4aXQgJiYgZm9ybURhdGEubW9kaWZpZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdldElkT2ZBY3RpdmVJdGVtKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGAke3RoaXMub2F0dHJ9LSR7Y29tcFJlZi5nZXRJZE9mQWN0aXZlSXRlbSgpfS1gIDogJyc7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm1vZGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlRBQl9NT0RFXCI+XG4gICAgPG8tZm9ybS1sYXlvdXQtdGFiZ3JvdXAgI3RhYkdyb3VwIFt0aXRsZV09XCJ0aXRsZVwiIChvbk1haW5UYWJTZWxlY3RlZCk9XCJvbk1haW5UYWJTZWxlY3RlZC5lbWl0KCRldmVudClcIlxuICAgICAgKG9uU2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25TZWxlY3RlZFRhYkNoYW5nZS5lbWl0KCRldmVudClcIiAob25DbG9zZVRhYik9XCJvbkNsb3NlVGFiLmVtaXQoJGV2ZW50KVwiXG4gICAgICBbb3B0aW9uc109XCJ0YWJHcm91cE9wdGlvbnNcIiBbc3RyZXRjaC10YWJzXT1cInN0cmV0Y2hUYWJzXCI+XG4gICAgICA8bmctY29udGVudCAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRCbG9ja1wiPjwvbmctY29udGVudD5cbiAgICA8L28tZm9ybS1sYXlvdXQtdGFiZ3JvdXA+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIk9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5TUExJVF9QQU5FX01PREVcIj5cbiAgICA8by1mb3JtLWxheW91dC1zcGxpdC1wYW5lICNzcGxpdFBhbmUgW29wdGlvbnNdPVwic3BsaXRQYW5lT3B0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRlbnQgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50QmxvY2tcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9vLWZvcm0tbGF5b3V0LXNwbGl0LXBhbmU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIk9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERVwiPlxuICAgIDxuZy1jb250ZW50ICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEJsb2NrXCI+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudEJsb2NrPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPiJdfQ==
557
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L28tZm9ybS1sYXlvdXQtbWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9mb3JtLWxheW91dC9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUdSLFFBQVEsRUFDUixRQUFRLEVBRVIsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQWlDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBaUMsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGVBQWUsRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFJekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFL0YsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sb0VB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UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2tpcFNlbGYsXG4gIFR5cGUsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgSUxheW91dE1hbmFnZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2xheW91dC1tYW5hZ2VyLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUxvY2FsU3RvcmFnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbG9jYWwtc3RvcmFnZS1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlck1vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL28tZm9ybS1sYXlvdXQtbWFuYWdlci1tb2RlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlciwgT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhY3Rvcmllcyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVDbGFzcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tZm9ybS1sYXlvdXQtbWFuYWdlci1jb21wb25lbnQtc3RhdGUuY2xhc3MnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGUvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbXBvbmVudC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlL28tdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucywgRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEgfSBmcm9tICcuLi8uLi90eXBlcy9mb3JtLWxheW91dC1kZXRhaWwtY29tcG9uZW50LWRhdGEudHlwZSc7XG5pbXBvcnQgeyBPX0dMT0JBTF9DT05GSUcgfSBmcm9tICcuLi8uLi90eXBlcy9vLWdsb2JhbC1jb25maWcudHlwZSc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZGlhbG9nL28tZm9ybS1sYXlvdXQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvby1mb3JtLWxheW91dC1jYW4tYWN0aXZhdGUtY2hpbGQuZ3VhcmQnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSB9IGZyb20gJy4vby1mb3JtLWxheW91dC1tYW5hZ2VyLWJhc2UuY2xhc3MnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGV4dCB9IGZyb20gJy4uLy4uL3R5cGVzL2Zvcm0tbGF5b3V0LW1hbmFnZXItY29udGV4dC50eXBlJztcbmltcG9ydCB7IElPRm9ybUxheW91dE1hbmFnZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Zvcm0tbGF5b3V0LW1hbmFnZXIuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fRk9STV9MQVlPVVRfTUFOQUdFUiA9IFtcbiAgJ29hdHRyOiBhdHRyJyxcbiAgJ21vZGUnLFxuICAnc3RvcmVTdGF0ZTogc3RvcmUtc3RhdGUnLFxuXG4gIC8vIENvbW1vbiBmb3IgZGlhbG9nIGFuZCB0YWIgbW9kZVxuICAvLyBkZXByZWNhdGVkLCBvbmx5IG1hbnRhaW5lZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgJ3RpdGxlJyxcbiAgJ2xhYmVsQ29sdW1uczogbGFiZWwtY29sdW1ucycsXG4gICdzZXBhcmF0b3InLFxuXG4gIC8vIGF0dHIgb2YgdGhlIGNoaWxkIGZvcm0gZnJvbSB3aGljaCB0aGUgZGF0YSBmb3IgYnVpbGRpbmcgdGhlIHRhYiB0aXRsZSB3aWxsIGJlIG9idGFpbmVkIChvbmx5IGluIHRhYiBtb2RlKVxuICAvLyBkZXByZWNhdGVkLCBvbmx5IG1hbnRhaW5lZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgJ3RpdGxlRGF0YU9yaWdpbjogdGl0bGUtZGF0YS1vcmlnaW4nLFxuXG4gIC8vIE9ubHkgZGlhbG9nIG9wdGlvbnMgY29uZmlndXJhYmxlIGFzIGFuIGlucHV0IG9mIHRoZSBvLWZvcm0tbGF5b3V0LW1hbmFnZXIgKHVzZSB0aGUgby1mb3JtLWxheW91dC1kaWFsb2ctb3B0aW9ucyBkaXJlY3RpdmUpXG4gIC8vIGRlcHJlY2F0ZWQsIG9ubHkgbWFudGFpbmVkIGZvciBsZWdhY3kgcmVhc29uc1xuICAnZGlhbG9nV2lkdGg6IGRpYWxvZy13aWR0aCcsXG4gICdkaWFsb2dNaW5XaWR0aDogZGlhbG9nLW1pbi13aWR0aCcsXG4gICdkaWFsb2dNYXhXaWR0aDogZGlhbG9nLW1heC13aWR0aCcsXG4gICdkaWFsb2dIZWlnaHQ6IGRpYWxvZy1oZWlnaHQnLFxuICAnZGlhbG9nTWluSGVpZ2h0OiBkaWFsb2ctbWluLWhlaWdodCcsXG4gICdkaWFsb2dNYXhIZWlnaHQgZGlhbG9nLW1heC1oZWlnaHQnLFxuICAnZGlhbG9nQ2xhc3M6IGRpYWxvZy1jbGFzcycsXG4gICdkaWFsb2dUaXRsZVNlcGFyYXRvcjogZGlhbG9nLXRpdGxlLXNlcGFyYXRvcidcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19GT1JNX0xBWU9VVF9NQU5BR0VSID0gW1xuICAnb25NYWluVGFiU2VsZWN0ZWQnLFxuICAnb25TZWxlY3RlZFRhYkNoYW5nZScsXG4gICdvbkNsb3NlVGFiJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby1mb3JtLWxheW91dC1tYW5hZ2VyJyxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX0ZPUk1fTEFZT1VUX01BTkFHRVIsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX0ZPUk1fTEFZT1VUX01BTkFHRVIsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQ29tcG9uZW50U3RhdGVTZXJ2aWNlUHJvdmlkZXIsXG4gICAgeyBwcm92aWRlOiBPX0NPTVBPTkVOVF9TVEFURV9TRVJWSUNFLCB1c2VDbGFzczogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlIH0sXG4gICAgeyBwcm92aWRlOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlLCB1c2VFeGlzdGluZzogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50IH1cbiAgXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1mb3JtLWxheW91dC1tYW5hZ2VyXSc6ICd0cnVlJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95LCBJTG9jYWxTdG9yYWdlQ29tcG9uZW50LElPRm9ybUxheW91dE1hbmFnZXIge1xuXG4gIC8vIGRlY2xhcmluZyB0aGlzIHByb3BlcnR5IHRvIGhhdmUgYWNjZXMgdG8gc3RhdGljIG1lbWJlcnMgaW4gdGhlIHRlbXBsYXRlXG4gIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCA9IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudDtcblxuXG4gIHB1YmxpYyBzdGF0aWMgRElBTE9HX01PREUgPSAnZGlhbG9nJztcbiAgcHVibGljIHN0YXRpYyBUQUJfTU9ERSA9ICd0YWInO1xuICBwdWJsaWMgc3RhdGljIFNQTElUX1BBTkVfTU9ERSA9ICdzcGxpdC1wYW5lJztcblxuICBwdWJsaWMgb2F0dHI6IHN0cmluZztcbiAgcHVibGljIF9tb2RlOiBzdHJpbmcgPSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuRElBTE9HX01PREU7XG4gIHB1YmxpYyBzdHJldGNoVGFicyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBnZXQgbW9kZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9tb2RlO1xuICB9XG5cbiAgcHVibGljIHNldCBtb2RlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhdmFpbGFibGVNb2RlVmFsdWVzID0gW09Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERSwgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlRBQl9NT0RFLCBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuU1BMSVRfUEFORV9NT0RFXTtcbiAgICB0aGlzLl9tb2RlID0gKHZhbHVlIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChhdmFpbGFibGVNb2RlVmFsdWVzLmluZGV4T2YodGhpcy5fbW9kZSkgPT09IC0xKSB7XG4gICAgICB0aGlzLl9tb2RlID0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LkRJQUxPR19NT0RFO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfc2VwYXJhdG9yOiBzdHJpbmcgPSAnICc7XG5cbiAgLyoqXG4gICogQGRlcHJlY2F0ZWQgdXNlciBzaG91bGQgdXNlIHRoZSBvcHRpb25zIGlucHV0XG4gICovXG4gIHNldCBzZXBhcmF0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NlcGFyYXRvciA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHNlcGFyYXRvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXBhcmF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlciBzaG91bGQgdXNlIHRoZSBvcHRpb25zIGlucHV0XG4gICAqL1xuICBwdWJsaWMgdGl0bGU6IHN0cmluZztcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIHN0b3JlU3RhdGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAqIEBkZXByZWNhdGVkIHVzZXIgc2hvdWxkIHVzZSB0aGUgb3B0aW9ucyBpbnB1dFxuICAqL1xuICBwdWJsaWMgdGl0bGVEYXRhT3JpZ2luOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoZSBuZXh0IGlucHV0cyBhcmUgZGVwcmVjYXRlZCBhbmQgdXNlciBzaG91bGQgdXNlIHRoZSBPRm9ybUxheW91dERpYWxvZ09wdGlvbnNEaXJlY3RpdmUgaW5wdXRzXG4gICAqL1xuICBwdWJsaWMgZGlhbG9nV2lkdGg6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ01pbldpZHRoOiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNYXhXaWR0aDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nSGVpZ2h0OiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNaW5IZWlnaHQ6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ01heEhlaWdodDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgZGlhbG9nVGl0bGVTZXBhcmF0b3IgPSAnOic7XG5cbiAgQFZpZXdDaGlsZCgndGFiR3JvdXAnKVxuICBwdWJsaWMgb1RhYkdyb3VwOiBPRm9ybUxheW91dE1hbmFnZXJNb2RlO1xuICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8T0Zvcm1MYXlvdXREaWFsb2dDb21wb25lbnQ+O1xuICBAVmlld0NoaWxkKCdzcGxpdFBhbmUnKVxuICBwdWJsaWMgb1NwbGl0UGFuZTogT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZTtcblxuICBwdWJsaWMgb25NYWluVGFiU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHB1YmxpYyBvblNlbGVjdGVkVGFiQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25DbG9zZVRhYjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcm90ZWN0ZWQgX2xhYmVsQ29sdW1uczogc3RyaW5nO1xuXG4gIGdldCBsYWJlbENvbHVtbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxDb2x1bW5zO1xuICB9XG5cbiAgLyoqXG4gICogQGRlcHJlY2F0ZWQgdXNlciBzaG91bGQgdXNlIHRoZSBvcHRpb25zIGlucHV0XG4gICovXG4gIHNldCBsYWJlbENvbHVtbnModmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2xhYmVsQ29sdW1ucyA9IHZhbHVlO1xuICAgIHRoaXMuX2xhYmVsQ29sc0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfbGFiZWxDb2xzQXJyYXk6IHN0cmluZ1tdID0gW107XG5cbiAgZ2V0IGxhYmVsQ29sc0FycmF5KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxDb2xzQXJyYXk7XG4gIH1cblxuICBzZXQgbGFiZWxDb2xzQXJyYXkodmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fbGFiZWxDb2xzQXJyYXkgPSB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBPVHJhbnNsYXRlU2VydmljZTtcbiAgcHJvdGVjdGVkIG9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2U6IE9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2U7XG4gIHByb3RlY3RlZCBsb2NhbFN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlO1xuXG4gIHByb3RlY3RlZCBfdGFiR3JvdXBPcHRpb25zOiBhbnkgPSB7fTtcblxuICBnZXQgdGFiR3JvdXBPcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYkdyb3VwT3B0aW9ucztcbiAgfVxuXG4gIGFkZFRhYkdyb3VwT3B0aW9ucyh2YWx1ZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl90YWJHcm91cE9wdGlvbnMsIHZhbHVlKTtcbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2xhYmVsQ29sdW1ucycpKSB7XG4gICAgICB0aGlzLmxhYmVsQ29sc0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHZhbHVlWydsYWJlbENvbHVtbnMnXSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnc2VwYXJhdG9yJykpIHtcbiAgICAgIHRoaXMuc2VwYXJhdG9yID0gdmFsdWVbJ3NlcGFyYXRvciddO1xuICAgIH1cbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ3N0cmV0Y2hUYWJzJykpIHtcbiAgICAgIHRoaXMuc3RyZXRjaFRhYnMgPSB2YWx1ZVsnc3RyZXRjaFRhYnMnXTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX2RpYWxvZ09wdGlvbnM6IGFueSA9IHt9O1xuXG4gIGdldCBkaWFsb2dPcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2RpYWxvZ09wdGlvbnM7XG4gIH1cblxuICBhZGREaWFsb2dPcHRpb25zKHZhbHVlOiBhbnkpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuX2RpYWxvZ09wdGlvbnMsIHZhbHVlKTtcbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2xhYmVsQ29sdW1ucycpKSB7XG4gICAgICB0aGlzLmxhYmVsQ29sc0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHZhbHVlWydsYWJlbENvbHVtbnMnXSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnc2VwYXJhdG9yJykpIHtcbiAgICAgIHRoaXMuc2VwYXJhdG9yID0gdmFsdWVbJ3NlcGFyYXRvciddO1xuICAgIH1cbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2RpYWxvZ1RpdGxlU2VwYXJhdG9yJykpIHtcbiAgICAgIHRoaXMuZGlhbG9nVGl0bGVTZXBhcmF0b3IgPSB2YWx1ZVsnZGlhbG9nVGl0bGVTZXBhcmF0b3InXTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NwbGl0UGFuZU9wdGlvbnM6IGFueSA9IHt9O1xuXG4gIGdldCBzcGxpdFBhbmVPcHRpb25zKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3NwbGl0UGFuZU9wdGlvbnM7XG4gIH1cblxuICBhZGRTcGxpdFBhbmVPcHRpb25zKHZhbHVlOiBhbnkpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuX3NwbGl0UGFuZU9wdGlvbnMsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRpbmdHdWFyZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2U7XG5cbiAgcHVibGljIF9tYXJrRm9yVXBkYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBvblRyaWdnZXJVcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByb3RlY3RlZCBjb21wb25lbnRTdGF0ZVNlcnZpY2U6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgYWN0Um91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcm90ZWN0ZWQgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgQFNraXBTZWxmKCkgQE9wdGlvbmFsKClcbiAgICBwdWJsaWMgcGFyZW50Rm9ybUxheW91dE1hbmFnZXI6IE9Gb3JtTGF5b3V0TWFuYWdlckJhc2VcbiAgKSB7XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZSk7XG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTG9jYWxTdG9yYWdlU2VydmljZSk7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT1RyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChOYXZpZ2F0aW9uU2VydmljZSk7XG4gICAgdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZVNlcnZpY2U+KEFic3RyYWN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlIGFzIFR5cGU8T0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlPik7XG4gICAgaWYgKHRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5vblJvdXRlQ2hhbmdlLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlU3RvcmFnZSgpO1xuICAgICAgfSkpO1xuICAgIH1cbiAgICB0aGlzLmdldEluamVjdGlvblRva2VuQ29uZmlnKCk7XG5cbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5qZWN0aW9uVG9rZW5Db25maWcoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG9HbG9iYWxDb25maWcgPSB0aGlzLmluamVjdG9yLmdldChPX0dMT0JBTF9DT05GSUcpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKG9HbG9iYWxDb25maWcuc3RvcmVTdGF0ZSkpIHtcbiAgICAgICAgdGhpcy5zdG9yZVN0YXRlID0gb0dsb2JhbENvbmZpZy5zdG9yZVN0YXRlO1xuICAgICAgICBpZiAoIXRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gRG8gbm90aGluZyBiZWNhdXNlIGlzIG9wdGlvbmFsXG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlQ2xhc3Mge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZS5zdGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEFjdGl2YXRlQ2hpbGRHdWFyZCgpO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5vYXR0cikpIHtcbiAgICAgIHRoaXMub2F0dHIgPSAodGhpcy50aXRsZSB8fCAnJykgKyB0aGlzLm1vZGU7XG4gICAgICBjb25zb2xlLndhcm4oJ28tZm9ybS1sYXlvdXQtbWFuYWdlciBtdXN0IGhhdmUgYW4gdW5pcXVlIGF0dHInKTtcbiAgICB9XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLnJlZ2lzdGVyRm9ybUxheW91dE1hbmFnZXIodGhpcyk7XG4gICAgaWYgKHRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZWxSZWYpIHtcbiAgICAgICAgdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgndGl0bGUnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZS5yZW1vdmVGb3JtTGF5b3V0TWFuYWdlcih0aGlzKTtcbiAgICB0aGlzLmRlc3Ryb3lBY3RpdmF0ZUNoaWxkR3VhcmQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBdHRyaWJ1dGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vYXR0cjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb21wb25lbnRLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ09Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudF8nICsgdGhpcy5vYXR0cjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZUtleSgpOiBzdHJpbmcge1xuICAgIGxldCByb3V0ZSA9IHRoaXMucm91dGVyLnVybDtcbiAgICB0aGlzLmFjdFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICByb3V0ZSA9IHJvdXRlLnJlcGxhY2UocGFyYW1zW2tleV0sIGtleSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcm91dGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YVRvU3RvcmUoKTogYW55IHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpID8gY29tcFJlZi5nZXREYXRhVG9TdG9yZSgpIDoge307XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJywgW10pXG4gIHB1YmxpYyBiZWZvcmV1bmxvYWRIYW5kbGVyKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlU3RhdGVTdG9yYWdlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFiZWxGcm9tVXJsUGFyYW1zKHVybFBhcmFtczogb2JqZWN0KTogc3RyaW5nIHtcbiAgICBsZXQgbGFiZWwgPSAnJztcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModXJsUGFyYW1zKTtcbiAgICBrZXlzLmZvckVhY2goKHBhcmFtLCBpKSA9PiB7XG4gICAgICBsYWJlbCArPSB1cmxQYXJhbXNbcGFyYW1dICsgKChpIDwga2V5cy5sZW5ndGggLSAxKSA/IHRoaXMuc2VwYXJhdG9yIDogJycpO1xuICAgIH0pO1xuICAgIHJldHVybiBsYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtRGF0YUZyb21MYWJlbENvbHVtbnMoZGF0YTogYW55KSB7XG4gICAgY29uc3QgZm9ybURhdGEgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKHggPT4ge1xuICAgICAgaWYgKHRoaXMubGFiZWxDb2xzQXJyYXkuaW5kZXhPZih4KSA+IC0xKSB7XG4gICAgICAgIGZvcm1EYXRhW3hdID0gZGF0YVt4XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZm9ybURhdGE7XG4gIH1cblxuICBwdWJsaWMgYWRkQWN0aXZhdGVDaGlsZEd1YXJkKCk6IHZvaWQge1xuICAgIGNvbnN0IHJvdXRlQ29uZmlnID0gdGhpcy5nZXRQYXJlbnRBY3RSb3V0ZVJvdXRlKCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJvdXRlQ29uZmlnKSkge1xuICAgICAgY29uc3QgY2FuQWN0aXZhdGVDaGlsZEFycmF5ID0gKHJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGQgfHwgW10pO1xuICAgICAgbGV0IHByZXZpb3VzbHlBZGRlZCA9IGZhbHNlO1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGNhbkFjdGl2YXRlQ2hpbGRBcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBjb25zdCBndWFyZENoaWxkID0gdGhpcy5pbmplY3Rvci5nZXQoQ2FuQWN0aXZhdGVGb3JtTGF5b3V0Q2hpbGRHdWFyZCk7XG4gICAgICAgIHByZXZpb3VzbHlBZGRlZCA9IChjYW5BY3RpdmF0ZUNoaWxkQXJyYXlbaV0gPT09IGd1YXJkQ2hpbGQuY29uc3RydWN0b3IpO1xuICAgICAgICBpZiAocHJldmlvdXNseUFkZGVkKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghcHJldmlvdXNseUFkZGVkKSB7XG4gICAgICAgIHRoaXMuYWRkaW5nR3VhcmQgPSB0cnVlO1xuICAgICAgICBjYW5BY3RpdmF0ZUNoaWxkQXJyYXkucHVzaChDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkKTtcbiAgICAgICAgcm91dGVDb25maWcuY2FuQWN0aXZhdGVDaGlsZCA9IGNhbkFjdGl2YXRlQ2hpbGRBcnJheTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveUFjdGl2YXRlQ2hpbGRHdWFyZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWRkaW5nR3VhcmQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLmFjdGl2ZUZvcm1MYXlvdXRNYW5hZ2VyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZS5jb250ZXh0ID0gdm9pZCAwO1xuICAgIGNvbnN0IHJvdXRlQ29uZmlnID0gdGhpcy5nZXRQYXJlbnRBY3RSb3V0ZVJvdXRlKCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJvdXRlQ29uZmlnKSkge1xuICAgICAgZm9yIChsZXQgaSA9IChyb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkIHx8IFtdKS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBndWFyZENoaWxkID0gdGhpcy5pbmplY3Rvci5nZXQoQ2FuQWN0aXZhdGVGb3JtTGF5b3V0Q2hpbGRHdWFyZCk7XG4gICAgICAgIGlmIChyb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkW2ldID09PSBndWFyZENoaWxkLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgcm91dGVDb25maWcuY2FuQWN0aXZhdGVDaGlsZC5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNEaWFsb2dNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERTtcbiAgfVxuXG4gIHB1YmxpYyBpc1RhYk1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlRBQl9NT0RFO1xuICB9XG5cbiAgcHVibGljIGlzU3BsaXRQYW5lTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuU1BMSVRfUEFORV9NT0RFO1xuICB9XG5cbiAgcHVibGljIGFkZERldGFpbENvbXBvbmVudChjaGlsZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCB1cmw6IHN0cmluZywgY29udGV4dD86IE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRleHQpOiB2b2lkIHtcbiAgICBjaGlsZFJvdXRlID0gVXRpbC5nZXRMYXN0QWN0aXZhdGVSb3V0ZShjaGlsZFJvdXRlKTtcbiAgICBjb25zdCBuZXdEZXRhaWxDb21wOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHBhcmFtczogY2hpbGRSb3V0ZS5wYXJhbXMsXG4gICAgICBxdWVyeVBhcmFtczogY2hpbGRSb3V0ZS5xdWVyeVBhcmFtcyxcbiAgICAgIHVybFNlZ21lbnRzOiBjaGlsZFJvdXRlLnVybCxcbiAgICAgIGNvbXBvbmVudDogY2hpbGRSb3V0ZS5yb3V0ZUNvbmZpZy5jb21wb25lbnQsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGlkOiBVdGlsLnJhbmRvbU51bWJlcigpLnRvU3RyaW5nKCksXG4gICAgICBsYWJlbDogY29udGV4dD8ubGFiZWwgfHwgJycsXG4gICAgICBpbm5lckZvcm1zSW5mbzoge30sXG4gICAgICByZW5kZXJlZDogZmFsc2UsXG4gICAgICBpbnNlcnRpb25Nb2RlOiBjaGlsZFJvdXRlLnF1ZXJ5UGFyYW1zW0NvZGVzLklOU0VSVElPTl9NT0RFXSA9PT0gJ3RydWUnLFxuICAgICAgcmVuZGVyZXJTdWJqZWN0OiBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKVxuICAgIH07XG4gICAgLyoqIGxpc3RlbmluZyBmb3IgdGhlIGNvbXBvbmVudHMgdG8gYmUgcmVuZGVyZWQgdG8gZGV0ZXJtaW5lIHRoYXQgdGhlIGZvcm0tbGF5b3V0LW1hbmFnZXIgaXMgZmluaXNoZWQgbmF2aWdhdGluZy4gKi9cbiAgICBuZXdEZXRhaWxDb21wLnJlbmRlcmVyU3ViamVjdC5zdWJzY3JpYmUoKHJlbmRlcmVyOmJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChyZW5kZXJlcikge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmlzTmF2aWdhdGluZyA9ICFyZW5kZXJlcjtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmlzRGlhbG9nTW9kZSgpKSB7XG4gICAgICB0aGlzLm9wZW5Gb3JtTGF5b3V0RGlhbG9nKG5ld0RldGFpbENvbXApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZikpIHtcbiAgICAgICAgY29tcFJlZi5vcGVuRGV0YWlsKG5ld0RldGFpbENvbXApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbG9zZURldGFpbChvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZikpIHtcbiAgICAgIGNvbXBSZWYuY2xvc2VEZXRhaWwob3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlRGV0YWlscyhkZXRhaWxzRGF0YTogYW55W10gPSBbXSwgb3B0aW9ucz86IEZvcm1MYXlvdXRDbG9zZURldGFpbE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCkpIHtcbiAgICAgIHRoaXMub1RhYkdyb3VwLmNsb3NlRGV0YWlscyhkZXRhaWxzRGF0YSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW5Gb3JtTGF5b3V0RGlhbG9nKGRldGFpbENvbXA6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhKTogdm9pZCB7XG4gICAgY29uc3QgY3NzY2xhc3MgPSBbJ28tZm9ybS1sYXlvdXQtZGlhbG9nLW92ZXJsYXknXTtcbiAgICBpZiAodGhpcy5kaWFsb2dDbGFzcykge1xuICAgICAgY3NzY2xhc3MucHVzaCh0aGlzLmRpYWxvZ0NsYXNzKTtcbiAgICB9XG5cbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0gKHRoaXMuZGlhbG9nT3B0aW9ucyB8fCB7fSk7XG5cbiAgICBjb25zdCBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZyA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZGF0YTogZGV0YWlsQ29tcCxcbiAgICAgICAgbGF5b3V0TWFuYWdlckNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgdGl0bGU6ICh0aGlzLnRpdGxlIHx8IGRpYWxvZ09wdGlvbnMudGl0bGUpLFxuICAgICAgICBkaWFsb2dUaXRsZVNlcGFyYXRvcjogdGhpcy5kaWFsb2dUaXRsZVNlcGFyYXRvclxuICAgICAgfSxcbiAgICAgIHdpZHRoOiBkaWFsb2dPcHRpb25zLndpZHRoIHx8IHRoaXMuZGlhbG9nV2lkdGgsXG4gICAgICBtaW5XaWR0aDogZGlhbG9nT3B0aW9ucy5taW5XaWR0aCB8fCB0aGlzLmRpYWxvZ01pbldpZHRoLFxuICAgICAgbWF4V2lkdGg6IGRpYWxvZ09wdGlvbnMubWF4V2lkdGggfHwgdGhpcy5kaWFsb2dNYXhXaWR0aCxcbiAgICAgIGhlaWdodDogZGlhbG9nT3B0aW9ucy5oZWlnaHQgfHwgdGhpcy5kaWFsb2dIZWlnaHQsXG4gICAgICBtaW5IZWlnaHQ6IGRpYWxvZ09wdGlvbnMubWluSGVpZ2h0IHx8IHRoaXMuZGlhbG9nTWluSGVpZ2h0LFxuICAgICAgbWF4SGVpZ2h0OiBkaWFsb2dPcHRpb25zLm1heEhlaWdodCB8fCB0aGlzLmRpYWxvZ01heEhlaWdodCxcbiAgICAgIGRpc2FibGVDbG9zZTogZGlhbG9nT3B0aW9ucy5kaXNhYmxlQ2xvc2UgfHwgdHJ1ZSxcbiAgICAgIHBhbmVsQ2xhc3M6IGRpYWxvZ09wdGlvbnMuY2xhc3MgfHwgY3NzY2xhc3NcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuZGlhbG9nT3B0aW9ucykge1xuICAgICAgZGlhbG9nQ29uZmlnLmNsb3NlT25OYXZpZ2F0aW9uID0gdGhpcy5kaWFsb2dPcHRpb25zLmNsb3NlT25OYXZpZ2F0aW9uO1xuICAgICAgZGlhbG9nQ29uZmlnLmJhY2tkcm9wQ2xhc3MgPSB0aGlzLmRpYWxvZ09wdGlvbnMuYmFja2Ryb3BDbGFzcztcbiAgICAgIGRpYWxvZ0NvbmZpZy5wb3NpdGlvbiA9IHRoaXMuZGlhbG9nT3B0aW9ucy5wb3NpdGlvbjtcbiAgICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSB0aGlzLmRpYWxvZ09wdGlvbnMuZGlzYWJsZUNsb3NlO1xuICAgIH1cblxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5tYXJrRm9yVXBkYXRlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSWZOZWVkZWQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVsb2FkTWFpbkNvbXBvbmVudHMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlck9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBkZXRhaWxDb21wLnJlbmRlcmVkID0gdHJ1ZTtcbiAgICAgIGRldGFpbENvbXAucmVuZGVyZXJTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rm9ybUNhY2hlRGF0YSgpOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0Rm9ybUNhY2hlRGF0YSgpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNldE1vZGlmaWVkU3RhdGUoZm9ybUF0dHI6IHN0cmluZywgbW9kaWZpZWQ6IGJvb2xlYW4sIGNvbmZpcm1FeGl0OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgY29tcFJlZi5zZXRNb2RpZmllZFN0YXRlKGZvcm1BdHRyLCBtb2RpZmllZCwgY29uZmlybUV4aXQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRMYWJlbEZyb21EYXRhKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IGxhYmVsID0gJyc7XG4gICAgY29uc3QgaXNEYXRhRGVmaW5lZCA9IFV0aWwuaXNEZWZpbmVkKGRhdGEpO1xuICAgIGlmIChpc0RhdGFEZWZpbmVkICYmIGRhdGEuaGFzT3duUHJvcGVydHkoJ25ld190YWJfdGl0bGUnKSkge1xuICAgICAgbGFiZWwgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KGRhdGEubmV3X3RhYl90aXRsZSk7XG4gICAgfSBlbHNlIGlmIChpc0RhdGFEZWZpbmVkICYmIHRoaXMubGFiZWxDb2xzQXJyYXkubGVuZ3RoICE9PSAwKSB7XG4gICAgICB0aGlzLmxhYmVsQ29sc0FycmF5LmZvckVhY2goKGNvbCwgaWR4KSA9PiB7XG4gICAgICAgIGlmIChkYXRhW2NvbF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxhYmVsICs9IGRhdGFbY29sXSArICgoaWR4IDwgdGhpcy5sYWJlbENvbHNBcnJheS5sZW5ndGggLSAxKSA/IHRoaXMuc2VwYXJhdG9yIDogJycpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxhYmVsO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU5hdmlnYXRpb24oZGF0YTogYW55LCBrZXlzVmFsdWVzOiBhbnksIGluc2VydGlvbk1vZGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpKSB7XG4gICAgICBjb21wUmVmLnVwZGF0ZU5hdmlnYXRpb24oZGF0YSwga2V5c1ZhbHVlcywgaW5zZXJ0aW9uTW9kZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFjdGl2ZURhdGEoZGF0YTogYW55KSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgY29tcFJlZi51cGRhdGVBY3RpdmVEYXRhKGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZU9mQWN0aXZlSXRlbSgpOiBhbnlbXSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0Um91dGVPZkFjdGl2ZUl0ZW0oKSA6IFtdO1xuICB9XG5cbiAgcHVibGljIGlzTWFpbkNvbXBvbmVudChjb21wOiBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmlzRGlhbG9nTW9kZSgpKSB7XG4gICAgICByZXR1cm4gIWNvbXAub0Zvcm1MYXlvdXREaWFsb2c7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZilcbiAgICAgICYmIChjb21wUmVmLmlzTWFpbkNvbXBvbmVudChjb21wKVxuICAgICAgICB8fCAoVXRpbC5pc0RlZmluZWQoY29tcC5wYXJlbnRDb21wb25lbnQpKSAmJiBjb21wUmVmLmlzTWFpbkNvbXBvbmVudChjb21wLnBhcmVudENvbXBvbmVudCkpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZUZvckNvbXBvbmVudChjb21wOiBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCk6IGFueVtdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5wYXJlbnRGb3JtTGF5b3V0TWFuYWdlcikge1xuICAgICAgY29uc3QgcGFyZW50Um91dGUgPSB0aGlzLnBhcmVudEZvcm1MYXlvdXRNYW5hZ2VyLmdldFJvdXRlRm9yQ29tcG9uZW50KGNvbXApO1xuICAgICAgaWYgKHBhcmVudFJvdXRlICYmIHBhcmVudFJvdXRlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4ucGFyZW50Um91dGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNNYWluQ29tcG9uZW50KGNvbXApKSB7XG4gICAgICBjb25zdCBhY3RpdmVSb3V0ZSA9IHRoaXMuZ2V0Um91dGVPZkFjdGl2ZUl0ZW0oKTtcblxuICAgICAgaWYgKGFjdGl2ZVJvdXRlICYmIGFjdGl2ZVJvdXRlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4uYWN0aXZlUm91dGUpO1xuICAgICAgfVxuXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBc0FjdGl2ZUZvcm1MYXlvdXRNYW5hZ2VyKCk6IHZvaWQge1xuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZS5hY3RpdmVGb3JtTGF5b3V0TWFuYWdlciA9IHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkTWFpbkNvbXBvbmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5vblRyaWdnZXJVcGRhdGUuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIGFsbG93VG9VcGRhdGVOYXZpZ2F0aW9uKGZvcm1BdHRyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuaXNUYWJNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5vVGFiR3JvdXApICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMudGl0bGVEYXRhT3JpZ2luKSkgP1xuICAgICAgdGhpcy50aXRsZURhdGFPcmlnaW4gPT09IGZvcm1BdHRyIDpcbiAgICAgIHRydWU7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU3RhdGVTdG9yYWdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlIHx8ICF0aGlzLnN0b3JlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXNUYWJNb2RlID0gdGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCk7XG4gICAgY29uc3QgaXNTcGxpdFBhbmVNb2RlID0gdGhpcy5pc1NwbGl0UGFuZU1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9TcGxpdFBhbmUpO1xuICAgIGlmIChpc1RhYk1vZGUgfHwgaXNTcGxpdFBhbmVNb2RlKSB7XG4gICAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UudXBkYXRlQ29tcG9uZW50U3RvcmFnZSh0aGlzLCB0aGlzLmdldFJvdXRlS2V5KCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFyZW50QWN0Um91dGVSb3V0ZSgpOiBSb3V0ZSB7XG4gICAgbGV0IGFjdFJvdXRlID0gdGhpcy5hY3RSb3V0ZTtcbiAgICB3aGlsZSAoYWN0Um91dGUucGFyZW50ICE9PSB1bmRlZmluZWQgJiYgYWN0Um91dGUucGFyZW50ICE9PSBudWxsKSB7XG4gICAgICBpZiAoYWN0Um91dGUucm91dGVDb25maWcuY2hpbGRyZW4gfHwgYWN0Um91dGUucm91dGVDb25maWcubG9hZENoaWxkcmVuKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYWN0Um91dGUgPSBhY3RSb3V0ZS5wYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBhY3RSb3V0ZS5yb3V0ZUNvbmZpZztcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVJZk5lZWRlZCgpIHtcbiAgICBpZiAodGhpcy5tYXJrRm9yVXBkYXRlKSB7XG4gICAgICB0aGlzLm1hcmtGb3JVcGRhdGUgPSBmYWxzZTtcbiAgICAgIHRoaXMub25UcmlnZ2VyVXBkYXRlLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0UGFyYW1zKCk6IGFueSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0UGFyYW1zKCkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBzZXQgbWFya0ZvclVwZGF0ZShhcmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tYXJrRm9yVXBkYXRlID0gYXJnO1xuICAgIGlmICh0aGlzLmlzU3BsaXRQYW5lTW9kZSgpKSB7XG4gICAgICB0aGlzLnVwZGF0ZUlmTmVlZGVkKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG1hcmtGb3JVcGRhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtGb3JVcGRhdGU7XG4gIH1cblxuICBnZXQgaWdub3JlQ2FuRGVhY3RpdmF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNTcGxpdFBhbmVNb2RlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpOiBPRm9ybUxheW91dE1hbmFnZXJNb2RlIHtcbiAgICBsZXQgY29tcFJlZjtcbiAgICBpZiAodGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCkpIHtcbiAgICAgIGNvbXBSZWYgPSB0aGlzLm9UYWJHcm91cDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNEaWFsb2dNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5kaWFsb2dSZWYpKSB7XG4gICAgICBjb21wUmVmID0gdGhpcy5kaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzU3BsaXRQYW5lTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMub1NwbGl0UGFuZSkpIHtcbiAgICAgIGNvbXBSZWYgPSB0aGlzLm9TcGxpdFBhbmU7XG4gICAgfVxuICAgIHJldHVybiBjb21wUmVmO1xuICB9XG5cbiAgYWxsb3dOYXZpZ2F0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc1RhYk1vZGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5BZGREZXRhaWxDb21wb25lbnQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLndyYXBJbnRvT2JzZXJ2YWJsZShVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuY2FuQWRkRGV0YWlsQ29tcG9uZW50KCkgOiB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNUb0NvbmZpcm1FeGl0KGRhdGE6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhLCBvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChvcHRpb25zKSAmJiBvcHRpb25zLmV4aXRXaXRob3V0Q29uZmlybWF0aW9uKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1zQXR0ciA9IE9iamVjdC5rZXlzKGRhdGEuaW5uZXJGb3Jtc0luZm8pO1xuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpZiAoZm9ybXNBdHRyLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvcm1zQXR0ci5mb3JFYWNoKGZvcm1BdHRyID0+IHtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IGRhdGEuaW5uZXJGb3Jtc0luZm9bZm9ybUF0dHJdO1xuICAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhLmNvbmZpcm1PbkV4aXQgJiYgZm9ybURhdGEubW9kaWZpZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGdldElkT2ZBY3RpdmVJdGVtKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGAke3RoaXMub2F0dHJ9LSR7Y29tcFJlZi5nZXRJZE9mQWN0aXZlSXRlbSgpfS1gIDogJyc7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm1vZGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlRBQl9NT0RFXCI+XG4gICAgPG8tZm9ybS1sYXlvdXQtdGFiZ3JvdXAgI3RhYkdyb3VwIFt0aXRsZV09XCJ0aXRsZVwiIChvbk1haW5UYWJTZWxlY3RlZCk9XCJvbk1haW5UYWJTZWxlY3RlZC5lbWl0KCRldmVudClcIlxuICAgICAgKG9uU2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25TZWxlY3RlZFRhYkNoYW5nZS5lbWl0KCRldmVudClcIiAob25DbG9zZVRhYik9XCJvbkNsb3NlVGFiLmVtaXQoJGV2ZW50KVwiXG4gICAgICBbb3B0aW9uc109XCJ0YWJHcm91cE9wdGlvbnNcIiBbc3RyZXRjaC10YWJzXT1cInN0cmV0Y2hUYWJzXCI+XG4gICAgICA8bmctY29udGVudCAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRCbG9ja1wiPjwvbmctY29udGVudD5cbiAgICA8L28tZm9ybS1sYXlvdXQtdGFiZ3JvdXA+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIk9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5TUExJVF9QQU5FX01PREVcIj5cbiAgICA8by1mb3JtLWxheW91dC1zcGxpdC1wYW5lICNzcGxpdFBhbmUgW29wdGlvbnNdPVwic3BsaXRQYW5lT3B0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRlbnQgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50QmxvY2tcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9vLWZvcm0tbGF5b3V0LXNwbGl0LXBhbmU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIk9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERVwiPlxuICAgIDxuZy1jb250ZW50ICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEJsb2NrXCI+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudEJsb2NrPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -16,8 +16,8 @@ import { OFormLayoutTabGroupOptionsDirective } from './tabgroup/options/o-form-l
16
16
  import * as i0 from "@angular/core";
17
17
  export class OFormLayoutManagerModule {
18
18
  }
19
- OFormLayoutManagerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OFormLayoutManagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20
- OFormLayoutManagerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: OFormLayoutManagerModule, declarations: [OFormLayoutDialogComponent,
19
+ OFormLayoutManagerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutManagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20
+ OFormLayoutManagerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutManagerModule, declarations: [OFormLayoutDialogComponent,
21
21
  OFormLayoutManagerComponent,
22
22
  OFormLayoutTabGroupComponent,
23
23
  OFormLayoutManagerContentDirective,
@@ -28,13 +28,13 @@ OFormLayoutManagerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0"
28
28
  OFormLayoutTabGroupOptionsDirective,
29
29
  OFormLayoutDialogOptionsDirective,
30
30
  OFormLayoutSplitPaneOptionsDirective] });
31
- OFormLayoutManagerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OFormLayoutManagerModule, providers: [{
31
+ OFormLayoutManagerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutManagerModule, providers: [{
32
32
  provide: CanActivateFormLayoutChildGuard,
33
33
  useClass: CanActivateFormLayoutChildGuard
34
34
  },
35
35
  OFormLayoutManagerComponentStateService
36
36
  ], imports: [CommonModule, OSharedModule, RouterModule, ResizableModule] });
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OFormLayoutManagerModule, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutManagerModule, decorators: [{
38
38
  type: NgModule,
39
39
  args: [{
40
40
  imports: [CommonModule, OSharedModule, RouterModule, ResizableModule],
@@ -63,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
63
63
  schemas: [CUSTOM_ELEMENTS_SCHEMA]
64
64
  }]
65
65
  }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1tYW5hZ2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L28tZm9ybS1sYXlvdXQtbWFuYWdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUU3SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDckYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seURBQXlELENBQUM7QUFDNUcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDMUcsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbEcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDaEcsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDdkgsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sNkRBQTZELENBQUM7O0FBNEJsSCxNQUFNLE9BQU8sd0JBQXdCOztzSEFBeEIsd0JBQXdCO3VIQUF4Qix3QkFBd0IsaUJBdkI3QiwwQkFBMEI7UUFDMUIsMkJBQTJCO1FBQzNCLDRCQUE0QjtRQUM1QixrQ0FBa0M7UUFDbEMsbUNBQW1DO1FBQ25DLGlDQUFpQztRQUNqQyw2QkFBNkI7UUFDN0Isb0NBQW9DLGFBVDlCLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGVBQWUsYUFZaEUsMkJBQTJCO1FBQzNCLG1DQUFtQztRQUNuQyxpQ0FBaUM7UUFDakMsb0NBQW9DO3VIQVUvQix3QkFBd0IsYUFSdEIsQ0FBQztZQUNKLE9BQU8sRUFBRSwrQkFBK0I7WUFDeEMsUUFBUSxFQUFFLCtCQUErQjtTQUM1QztRQUNELHVDQUF1QztLQUMxQyxZQXRCUyxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxlQUFlOzRGQXlCM0Qsd0JBQXdCO2tCQTFCcEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3JFLFlBQVksRUFBRTt3QkFDViwwQkFBMEI7d0JBQzFCLDJCQUEyQjt3QkFDM0IsNEJBQTRCO3dCQUM1QixrQ0FBa0M7d0JBQ2xDLG1DQUFtQzt3QkFDbkMsaUNBQWlDO3dCQUNqQyw2QkFBNkI7d0JBQzdCLG9DQUFvQztxQkFDdkM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLDJCQUEyQjt3QkFDM0IsbUNBQW1DO3dCQUNuQyxpQ0FBaUM7d0JBQ2pDLG9DQUFvQztxQkFDdkM7b0JBQ0QsU0FBUyxFQUFFLENBQUM7NEJBQ0osT0FBTyxFQUFFLCtCQUErQjs0QkFDeEMsUUFBUSxFQUFFLCtCQUErQjt5QkFDNUM7d0JBQ0QsdUNBQXVDO3FCQUMxQztvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBSZXNpemFibGVNb2R1bGUgfSBmcm9tICdhbmd1bGFyLXJlc2l6YWJsZS1lbGVtZW50JztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tZm9ybS1sYXlvdXQtbWFuYWdlci1jb21wb25lbnQtc3RhdGUuc2VydmljZSc7XG5cbmltcG9ydCB7IE9TaGFyZWRNb2R1bGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZGlhbG9nL28tZm9ybS1sYXlvdXQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dERpYWxvZ09wdGlvbnNEaXJlY3RpdmUgfSBmcm9tICcuL2RpYWxvZy9vcHRpb25zL28tZm9ybS1sYXlvdXQtZGlhbG9nLW9wdGlvbnMuZGlyZWN0aXZlJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRlbnREaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbnRlbnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IENhbkFjdGl2YXRlRm9ybUxheW91dENoaWxkR3VhcmQgfSBmcm9tICcuL2d1YXJkcy9vLWZvcm0tbGF5b3V0LWNhbi1hY3RpdmF0ZS1jaGlsZC5ndWFyZCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQgfSBmcm9tICcuL28tZm9ybS1sYXlvdXQtbWFuYWdlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRTcGxpdFBhbmVDb21wb25lbnQgfSBmcm9tICcuL3NwbGl0LXBhbmUvby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dFNwbGl0UGFuZU9wdGlvbnNEaXJlY3RpdmUgfSBmcm9tICcuL3NwbGl0LXBhbmUvb3B0aW9ucy9vLWZvcm0tbGF5b3V0LXNwbGl0LXBhbmUtb3B0aW9ucy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRUYWJHcm91cENvbXBvbmVudCB9IGZyb20gJy4vdGFiZ3JvdXAvby1mb3JtLWxheW91dC10YWJncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRUYWJHcm91cE9wdGlvbnNEaXJlY3RpdmUgfSBmcm9tICcuL3RhYmdyb3VwL29wdGlvbnMvby1mb3JtLWxheW91dC10YWJncm91cC1vcHRpb25zLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgT1NoYXJlZE1vZHVsZSwgUm91dGVyTW9kdWxlLCBSZXNpemFibGVNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LFxuICAgICAgICBPRm9ybUxheW91dFRhYkdyb3VwQ29tcG9uZW50LFxuICAgICAgICBPRm9ybUxheW91dE1hbmFnZXJDb250ZW50RGlyZWN0aXZlLFxuICAgICAgICBPRm9ybUxheW91dFRhYkdyb3VwT3B0aW9uc0RpcmVjdGl2ZSxcbiAgICAgICAgT0Zvcm1MYXlvdXREaWFsb2dPcHRpb25zRGlyZWN0aXZlLFxuICAgICAgICBPRm9ybUxheW91dFNwbGl0UGFuZUNvbXBvbmVudCxcbiAgICAgICAgT0Zvcm1MYXlvdXRTcGxpdFBhbmVPcHRpb25zRGlyZWN0aXZlXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCxcbiAgICAgICAgT0Zvcm1MYXlvdXRUYWJHcm91cE9wdGlvbnNEaXJlY3RpdmUsXG4gICAgICAgIE9Gb3JtTGF5b3V0RGlhbG9nT3B0aW9uc0RpcmVjdGl2ZSxcbiAgICAgICAgT0Zvcm1MYXlvdXRTcGxpdFBhbmVPcHRpb25zRGlyZWN0aXZlXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICAgICAgICBwcm92aWRlOiBDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IENhbkFjdGl2YXRlRm9ybUxheW91dENoaWxkR3VhcmRcbiAgICAgICAgfSxcbiAgICAgICAgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlXG4gICAgXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV1cbn0pXG5leHBvcnQgY2xhc3MgT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kdWxlIHsgfVxuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1tYW5hZ2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L28tZm9ybS1sYXlvdXQtbWFuYWdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUU3SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDckYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seURBQXlELENBQUM7QUFDNUcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDMUcsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbEcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDaEcsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDdkgsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sNkRBQTZELENBQUM7O0FBNEJsSCxNQUFNLE9BQU8sd0JBQXdCOztxSEFBeEIsd0JBQXdCO3NIQUF4Qix3QkFBd0IsaUJBdkI3QiwwQkFBMEI7UUFDMUIsMkJBQTJCO1FBQzNCLDRCQUE0QjtRQUM1QixrQ0FBa0M7UUFDbEMsbUNBQW1DO1FBQ25DLGlDQUFpQztRQUNqQyw2QkFBNkI7UUFDN0Isb0NBQW9DLGFBVDlCLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGVBQWUsYUFZaEUsMkJBQTJCO1FBQzNCLG1DQUFtQztRQUNuQyxpQ0FBaUM7UUFDakMsb0NBQW9DO3NIQVUvQix3QkFBd0IsYUFSdEIsQ0FBQztZQUNKLE9BQU8sRUFBRSwrQkFBK0I7WUFDeEMsUUFBUSxFQUFFLCtCQUErQjtTQUM1QztRQUNELHVDQUF1QztLQUMxQyxZQXRCUyxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxlQUFlOzJGQXlCM0Qsd0JBQXdCO2tCQTFCcEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3JFLFlBQVksRUFBRTt3QkFDViwwQkFBMEI7d0JBQzFCLDJCQUEyQjt3QkFDM0IsNEJBQTRCO3dCQUM1QixrQ0FBa0M7d0JBQ2xDLG1DQUFtQzt3QkFDbkMsaUNBQWlDO3dCQUNqQyw2QkFBNkI7d0JBQzdCLG9DQUFvQztxQkFDdkM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLDJCQUEyQjt3QkFDM0IsbUNBQW1DO3dCQUNuQyxpQ0FBaUM7d0JBQ2pDLG9DQUFvQztxQkFDdkM7b0JBQ0QsU0FBUyxFQUFFLENBQUM7NEJBQ0osT0FBTyxFQUFFLCtCQUErQjs0QkFDeEMsUUFBUSxFQUFFLCtCQUErQjt5QkFDNUM7d0JBQ0QsdUNBQXVDO3FCQUMxQztvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBSZXNpemFibGVNb2R1bGUgfSBmcm9tICdhbmd1bGFyLXJlc2l6YWJsZS1lbGVtZW50JztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tZm9ybS1sYXlvdXQtbWFuYWdlci1jb21wb25lbnQtc3RhdGUuc2VydmljZSc7XG5cbmltcG9ydCB7IE9TaGFyZWRNb2R1bGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZGlhbG9nL28tZm9ybS1sYXlvdXQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dERpYWxvZ09wdGlvbnNEaXJlY3RpdmUgfSBmcm9tICcuL2RpYWxvZy9vcHRpb25zL28tZm9ybS1sYXlvdXQtZGlhbG9nLW9wdGlvbnMuZGlyZWN0aXZlJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0TWFuYWdlckNvbnRlbnREaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbnRlbnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IENhbkFjdGl2YXRlRm9ybUxheW91dENoaWxkR3VhcmQgfSBmcm9tICcuL2d1YXJkcy9vLWZvcm0tbGF5b3V0LWNhbi1hY3RpdmF0ZS1jaGlsZC5ndWFyZCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQgfSBmcm9tICcuL28tZm9ybS1sYXlvdXQtbWFuYWdlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRTcGxpdFBhbmVDb21wb25lbnQgfSBmcm9tICcuL3NwbGl0LXBhbmUvby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dFNwbGl0UGFuZU9wdGlvbnNEaXJlY3RpdmUgfSBmcm9tICcuL3NwbGl0LXBhbmUvb3B0aW9ucy9vLWZvcm0tbGF5b3V0LXNwbGl0LXBhbmUtb3B0aW9ucy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRUYWJHcm91cENvbXBvbmVudCB9IGZyb20gJy4vdGFiZ3JvdXAvby1mb3JtLWxheW91dC10YWJncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRUYWJHcm91cE9wdGlvbnNEaXJlY3RpdmUgfSBmcm9tICcuL3RhYmdyb3VwL29wdGlvbnMvby1mb3JtLWxheW91dC10YWJncm91cC1vcHRpb25zLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgT1NoYXJlZE1vZHVsZSwgUm91dGVyTW9kdWxlLCBSZXNpemFibGVNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBPRm9ybUxheW91dERpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LFxuICAgICAgICBPRm9ybUxheW91dFRhYkdyb3VwQ29tcG9uZW50LFxuICAgICAgICBPRm9ybUxheW91dE1hbmFnZXJDb250ZW50RGlyZWN0aXZlLFxuICAgICAgICBPRm9ybUxheW91dFRhYkdyb3VwT3B0aW9uc0RpcmVjdGl2ZSxcbiAgICAgICAgT0Zvcm1MYXlvdXREaWFsb2dPcHRpb25zRGlyZWN0aXZlLFxuICAgICAgICBPRm9ybUxheW91dFNwbGl0UGFuZUNvbXBvbmVudCxcbiAgICAgICAgT0Zvcm1MYXlvdXRTcGxpdFBhbmVPcHRpb25zRGlyZWN0aXZlXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCxcbiAgICAgICAgT0Zvcm1MYXlvdXRUYWJHcm91cE9wdGlvbnNEaXJlY3RpdmUsXG4gICAgICAgIE9Gb3JtTGF5b3V0RGlhbG9nT3B0aW9uc0RpcmVjdGl2ZSxcbiAgICAgICAgT0Zvcm1MYXlvdXRTcGxpdFBhbmVPcHRpb25zRGlyZWN0aXZlXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICAgICAgICBwcm92aWRlOiBDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IENhbkFjdGl2YXRlRm9ybUxheW91dENoaWxkR3VhcmRcbiAgICAgICAgfSxcbiAgICAgICAgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlXG4gICAgXSxcbiAgICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV1cbn0pXG5leHBvcnQgY2xhc3MgT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kdWxlIHsgfVxuIl19
@@ -146,9 +146,9 @@ export class OFormLayoutSplitPaneComponent {
146
146
  return 'split-pane';
147
147
  }
148
148
  }
149
- OFormLayoutSplitPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OFormLayoutSplitPaneComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: forwardRef(() => OFormLayoutManagerBase) }], target: i0.ɵɵFactoryTarget.Component });
150
- OFormLayoutSplitPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OFormLayoutSplitPaneComponent, selector: "o-form-layout-split-pane", inputs: { options: "options" }, host: { properties: { "class.o-form-layout-split-pane": "true" } }, viewQueries: [{ propertyName: "contentDirective", first: true, predicate: OFormLayoutManagerContentDirective, descendants: true }, { propertyName: "mainWrapper", first: true, predicate: ["mainWrapper"], descendants: true, read: ElementRef }, { propertyName: "detailWrapper", first: true, predicate: ["detailWrapper"], descendants: true, read: ElementRef }], ngImport: i0, template: "\n <div fxLayout=\"row\" class=\"o-split-pane-row-wrapper\">\n <div #mainWrapper fxFlex fxLayout=\"row\" class=\"o-split-pane-main-content\">\n <ng-content></ng-content>\n </div>\n\n <div #detailWrapper class=\"o-split-pane-content-wrapper mwlResizable\" mwlResizable [enableGhostResize]=\"true\"\n (resizeEnd)=\"onResizeEnd('width', $event, detailWrapper)\">\n\n <div class=\"o-split-pane-resize-handle\" mwlResizeHandle [resizeEdges]=\"{ left: true }\">\n <div class=\"o-split-pane-resize-border\">\n <div></div>\n </div>\n </div>\n\n <div class=\"o-split-pane-secondary-content\" fxLayout=\"column\" fxLayoutAlign=\"center stretch\" fxFlex>\n <ng-template o-form-layout-manager-content></ng-template>\n </div>\n </div>\n </div>\n <div *ngIf=\"showLoading | async\" class=\"spinner-container\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-progress-spinner mode=\"indeterminate\" strokeWidth=\"3\"></mat-progress-spinner>\n </div>\n", styles: [".o-form-layout-split-pane .o-split-pane-row-wrapper{height:100%}.o-form-layout-split-pane .o-split-pane-content-wrapper{z-index:1000;min-width:15%}.o-form-layout-split-pane .o-split-pane-content-wrapper>.o-split-pane-resize-handle{width:8px;position:relative;cursor:col-resize}.o-form-layout-split-pane .o-split-pane-content-wrapper>.o-split-pane-resize-handle>.o-split-pane-resize-border{position:absolute;height:100%;width:2px;left:3px;background-color:#929292}.o-form-layout-split-pane .o-split-pane-content-wrapper>.o-split-pane-resize-handle>.o-split-pane-resize-border>div{width:4px;height:32px;position:absolute;top:calc(50% - 16px);left:-1px;background-color:#666}.o-form-layout-split-pane .o-split-pane-content-wrapper:not(.resized){width:50%}.o-form-layout-split-pane .mwlResizable{box-sizing:border-box}.o-form-layout-split-pane .o-split-pane-secondary-content{padding:0 8px;overflow:auto}.o-form-layout-split-pane .o-split-pane-secondary-content>*{height:100%}.o-form-layout-split-pane .spinner-container{position:absolute;top:0;left:0;right:0;bottom:0;z-index:500;visibility:visible;opacity:1;transition:opacity .25s linear}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i4.ResizableDirective, selector: "[mwlResizable]", inputs: ["resizeEdges", "enableGhostResize", "resizeSnapGrid", "resizeCursors", "resizeCursorPrecision", "ghostElementPositioning", "allowNegativeResizes", "mouseMoveThrottleMS", "validateResize"], outputs: ["resizeStart", "resizing", "resizeEnd"] }, { kind: "directive", type: i4.ResizeHandleDirective, selector: "[mwlResizeHandle]", inputs: ["resizeEdges"] }, { kind: "directive", type: i5.OFormLayoutManagerContentDirective, selector: "[o-form-layout-manager-content]", inputs: ["index"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None });
151
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OFormLayoutSplitPaneComponent, decorators: [{
149
+ OFormLayoutSplitPaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutSplitPaneComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: forwardRef(() => OFormLayoutManagerBase) }], target: i0.ɵɵFactoryTarget.Component });
150
+ OFormLayoutSplitPaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OFormLayoutSplitPaneComponent, selector: "o-form-layout-split-pane", inputs: { options: "options" }, host: { properties: { "class.o-form-layout-split-pane": "true" } }, viewQueries: [{ propertyName: "contentDirective", first: true, predicate: OFormLayoutManagerContentDirective, descendants: true }, { propertyName: "mainWrapper", first: true, predicate: ["mainWrapper"], descendants: true, read: ElementRef }, { propertyName: "detailWrapper", first: true, predicate: ["detailWrapper"], descendants: true, read: ElementRef }], ngImport: i0, template: "\n <div fxLayout=\"row\" class=\"o-split-pane-row-wrapper\">\n <div #mainWrapper fxFlex fxLayout=\"row\" class=\"o-split-pane-main-content\">\n <ng-content></ng-content>\n </div>\n\n <div #detailWrapper class=\"o-split-pane-content-wrapper mwlResizable\" mwlResizable [enableGhostResize]=\"true\"\n (resizeEnd)=\"onResizeEnd('width', $event, detailWrapper)\">\n\n <div class=\"o-split-pane-resize-handle\" mwlResizeHandle [resizeEdges]=\"{ left: true }\">\n <div class=\"o-split-pane-resize-border\">\n <div></div>\n </div>\n </div>\n\n <div class=\"o-split-pane-secondary-content\" fxLayout=\"column\" fxLayoutAlign=\"center stretch\" fxFlex>\n <ng-template o-form-layout-manager-content></ng-template>\n </div>\n </div>\n </div>\n <div *ngIf=\"showLoading | async\" class=\"spinner-container\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-progress-spinner mode=\"indeterminate\" strokeWidth=\"3\"></mat-progress-spinner>\n </div>\n", styles: [".o-form-layout-split-pane .o-split-pane-row-wrapper{height:100%}.o-form-layout-split-pane .o-split-pane-content-wrapper{z-index:1000;min-width:15%}.o-form-layout-split-pane .o-split-pane-content-wrapper>.o-split-pane-resize-handle{width:8px;position:relative;cursor:col-resize}.o-form-layout-split-pane .o-split-pane-content-wrapper>.o-split-pane-resize-handle>.o-split-pane-resize-border{position:absolute;height:100%;width:2px;left:3px;background-color:#929292}.o-form-layout-split-pane .o-split-pane-content-wrapper>.o-split-pane-resize-handle>.o-split-pane-resize-border>div{width:4px;height:32px;position:absolute;top:calc(50% - 16px);left:-1px;background-color:#666}.o-form-layout-split-pane .o-split-pane-content-wrapper:not(.resized){width:50%}.o-form-layout-split-pane .mwlResizable{box-sizing:border-box}.o-form-layout-split-pane .o-split-pane-secondary-content{padding:0 8px;overflow:auto}.o-form-layout-split-pane .o-split-pane-secondary-content>*{height:100%}.o-form-layout-split-pane .spinner-container{position:absolute;top:0;left:0;right:0;bottom:0;z-index:500;visibility:visible;opacity:1;transition:opacity .25s linear}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i4.ResizableDirective, selector: "[mwlResizable]", inputs: ["resizeEdges", "enableGhostResize", "resizeSnapGrid", "resizeCursors", "resizeCursorPrecision", "ghostElementPositioning", "allowNegativeResizes", "mouseMoveThrottleMS", "validateResize"], outputs: ["resizeStart", "resizing", "resizeEnd"] }, { kind: "directive", type: i4.ResizeHandleDirective, selector: "[mwlResizeHandle]", inputs: ["resizeEdges"] }, { kind: "directive", type: i5.OFormLayoutManagerContentDirective, selector: "[o-form-layout-manager-content]", inputs: ["index"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None });
151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutSplitPaneComponent, decorators: [{
152
152
  type: Component,
153
153
  args: [{ selector: 'o-form-layout-split-pane', inputs: DEFAULT_INPUTS_O_FORM_LAYOUT_SPLIT_PANE, outputs: DEFAULT_OUTPUTS_O_FORM_LAYOUT_SPLIT_PANE, encapsulation: ViewEncapsulation.None, host: {
154
154
  '[class.o-form-layout-split-pane]': 'true'
@@ -166,4 +166,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
166
166
  type: ViewChild,
167
167
  args: ['detailWrapper', { read: ElementRef }]
168
168
  }] } });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L3NwbGl0LXBhbmUvby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L3NwbGl0LXBhbmUvby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVJLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUluRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFakUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7QUFHN0UsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUc7SUFDckQsU0FBUztDQUNWLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3Q0FBd0MsR0FBRyxFQUN2RCxDQUFDO0FBYUYsTUFBTSxP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LENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDOzsySEE1S1UsNkJBQTZCLDZGQThCOUIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDOytHQTlCdkMsNkJBQTZCLHNOQU83QixrQ0FBa0Msd0hBR1gsVUFBVSx5R0FHUixVQUFVLDZCQzlDaEQscWdDQXVCQTs0RkRVYSw2QkFBNkI7a0JBWHpDLFNBQVM7K0JBQ0UsMEJBQTBCLFVBRzVCLHVDQUF1QyxXQUN0Qyx3Q0FBd0MsaUJBQ2xDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osa0NBQWtDLEVBQUUsTUFBTTtxQkFDM0M7OzBCQWdDRSxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzs0Q0F0QmxELGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGtDQUFrQztnQkFJbkMsV0FBVztzQkFEcEIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUlwQyxhQUFhO3NCQUR0QixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEluamVjdCwgSW5qZWN0b3IsIFJlbmRlcmVyMiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJlc2l6ZUV2ZW50IH0gZnJvbSAnYW5ndWxhci1yZXNpemFibGUtZWxlbWVudCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSUxheW91dE1hbmFnZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2xheW91dC1tYW5hZ2VyLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvby1mb3JtLWxheW91dC1tYW5hZ2VyLW1vZGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZUNsYXNzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RhdGUvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbXBvbmVudC1zdGF0ZS5jbGFzcyc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9vLWZvcm0tbGF5b3V0LW1hbmFnZXItY29udGVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSB9IGZyb20gJy4uL28tZm9ybS1sYXlvdXQtbWFuYWdlci1iYXNlLmNsYXNzJztcblxuaW1wb3J0IHR5cGUgeyBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2Zvcm0tbGF5b3V0LWRldGFpbC1jb21wb25lbnQtZGF0YS50eXBlJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0ZPUk1fTEFZT1VUX1NQTElUX1BBTkUgPSBbXG4gICdvcHRpb25zJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX0ZPUk1fTEFZT1VUX1NQTElUX1BBTkUgPSBbXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLWZvcm0tbGF5b3V0LXNwbGl0LXBhbmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19GT1JNX0xBWU9VVF9TUExJVF9QQU5FLFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19GT1JNX0xBWU9VVF9TUExJVF9QQU5FLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWZvcm0tbGF5b3V0LXNwbGl0LXBhbmVdJzogJ3RydWUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0Zvcm1MYXlvdXRTcGxpdFBhbmVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPRm9ybUxheW91dE1hbmFnZXJNb2RlIHtcblxuICBkYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YTtcbiAgcHVibGljIHNob3dMb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyO1xuXG4gIEBWaWV3Q2hpbGQoT0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGVudERpcmVjdGl2ZSlcbiAgY29udGVudERpcmVjdGl2ZTogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGVudERpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkKCdtYWluV3JhcHBlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcm90ZWN0ZWQgbWFpbldyYXBwZXI6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnZGV0YWlsV3JhcHBlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcm90ZWN0ZWQgZGV0YWlsV3JhcHBlcjogRWxlbWVudFJlZjtcblxuICBwcm90ZWN0ZWQgX29wdGlvbnM6IGFueTtcblxuICBwdWJsaWMgc2V0IG9wdGlvbnModmFsdWU6IGFueSkge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh2YWx1ZSkgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9Gb3JtTGF5b3V0TWFuYWdlckJhc2UpKSBwdWJsaWMgZm9ybUxheW91dE1hbmFnZXI6IE9Gb3JtTGF5b3V0TWFuYWdlckJhc2VcbiAgKSB7XG4gICAgdGhpcy5yb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpO1xuICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IGluamVjdG9yLmdldChEaWFsb2dTZXJ2aWNlKTtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZUNsYXNzIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5zdGF0ZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5tYWluV3JhcHBlciAmJiB0aGlzLm1haW5XcmFwcGVyLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuc2V0T3B0aW9uKHRoaXMubWFpbldyYXBwZXIubmF0aXZlRWxlbWVudCwgJ21haW5XaWR0aCcsICd3aWR0aCcpO1xuICAgICAgdGhpcy5zZXRPcHRpb24odGhpcy5tYWluV3JhcHBlci5uYXRpdmVFbGVtZW50LCAnbWFpbk1heFdpZHRoJywgJ21heC13aWR0aCcpO1xuICAgICAgdGhpcy5zZXRPcHRpb24odGhpcy5tYWluV3JhcHBlci5uYXRpdmVFbGVtZW50LCAnbWFpbk1pbldpZHRoJywgJ21pbi13aWR0aCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kZXRhaWxXcmFwcGVyICYmIHRoaXMuZGV0YWlsV3JhcHBlci5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLnNldE9wdGlvbih0aGlzLmRldGFpbFdyYXBwZXIubmF0aXZlRWxlbWVudCwgJ2RldGFpbFdpZHRoJywgJ3dpZHRoJyk7XG4gICAgICB0aGlzLnNldE9wdGlvbih0aGlzLmRldGFpbFdyYXBwZXIubmF0aXZlRWxlbWVudCwgJ2RldGFpbE1heFdpZHRoJywgJ21heC13aWR0aCcpO1xuICAgICAgdGhpcy5zZXRPcHRpb24odGhpcy5kZXRhaWxXcmFwcGVyLm5hdGl2ZUVsZW1lbnQsICdkZXRhaWxNaW5XaWR0aCcsICdtaW4td2lkdGgnKTtcbiAgICB9XG4gICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50U3RhdGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRPcHRpb24oZWw6IGFueSwgb3B0aW9uTmFtZTogc3RyaW5nLCBwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLl9vcHRpb25zW29wdGlvbk5hbWVdKSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbCwgcHJvcGVydHlOYW1lLCB0aGlzLl9vcHRpb25zW29wdGlvbk5hbWVdKTtcbiAgICB9XG4gIH1cblxuICBnZXRGb3JtQ2FjaGVEYXRhKCk6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG5cbiAgc2V0TW9kaWZpZWRTdGF0ZShmb3JtQXR0cjogc3RyaW5nLCBtb2RpZmllZDogYm9vbGVhbiwgY29uZmlybUV4aXQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRhdGEuaW5uZXJGb3Jtc0luZm9bZm9ybUF0dHJdID0ge1xuICAgICAgbW9kaWZpZWQ6IG1vZGlmaWVkLFxuICAgICAgY29uZmlybU9uRXhpdDogY29uZmlybUV4aXRcbiAgICB9O1xuICB9XG5cbiAgc2V0RGV0YWlsQ29tcG9uZW50KGNvbXBEYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSkge1xuICAgIHRoaXMuZGF0YSA9IGNvbXBEYXRhO1xuICAgIHRoaXMuY3JlYXRlQ29tcG9uZW50KCk7XG4gICAgdGhpcy5kYXRhLnJlbmRlcmVyU3ViamVjdC5uZXh0KHRydWUpO1xuICB9XG5cbiAgb25SZXNpemVFbmQocHJvcGVydHk6IHN0cmluZywgZXZlbnQ6IFJlc2l6ZUV2ZW50LCBlbDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhlbCwgJ3Jlc2l6ZWQnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCBwcm9wZXJ0eSwgYCR7ZXZlbnQucmVjdGFuZ2xlW3Byb3BlcnR5XX1weGApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUNvbXBvbmVudCgpIHtcbiAgICBpZiAoIXRoaXMuZGF0YSkge1xuICAgICAgdGhpcy5jb250ZW50RGlyZWN0aXZlLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5kYXRhLmNvbXBvbmVudDtcbiAgICBpZiAodGhpcy5jb250ZW50RGlyZWN0aXZlICYmIGNvbXBvbmVudCkge1xuICAgICAgY29uc3Qgdmlld0NvbnRhaW5lclJlZiA9IHRoaXMuY29udGVudERpcmVjdGl2ZS52aWV3Q29udGFpbmVyUmVmO1xuICAgICAgdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcbiAgICB9XG4gIH1cblxuICBnZXREYXRhVG9TdG9yZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmRhdGE7XG4gIH1cblxuICBnZXRQYXJhbXMoKTogYW55IHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQodGhpcy5kYXRhKSA/IHRoaXMuZGF0YS5wYXJhbXMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpbml0aWFsaXplQ29tcG9uZW50U3RhdGUoKSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlKSB8fCAhVXRpbC5pc0RlZmluZWQodGhpcy5zdGF0ZS51cmwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93TG9hZGluZy5uZXh0KHRydWUpO1xuICAgIGNvbnN0IGV4dHJhcyA9IHt9O1xuICAgIGV4dHJhc1tDb2Rlcy5RVUVSWV9QQVJBTVNdID0gdGhpcy5zdGF0ZS5xdWVyeVBhcmFtcztcblxuICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLnNldEFzQWN0aXZlRm9ybUxheW91dE1hbmFnZXIoKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5zdGF0ZS51cmxdLCBleHRyYXMpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5zaG93TG9hZGluZy5uZXh0KGZhbHNlKTtcbiAgICB9KTtcblxuICB9XG5cbiAgdXBkYXRlQWN0aXZlRGF0YShkYXRhOiBhbnkpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5kYXRhKSkge1xuICAgICAgdGhpcy5kYXRhID0gT2JqZWN0LmFzc2lnbih0aGlzLmRhdGEsIGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIGdldFJvdXRlT2ZBY3RpdmVJdGVtKCk6IGFueVtdIHtcbiAgICBjb25zdCByb3V0ZSA9IFtdO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLmRhdGEpKSB7XG4gICAgICBjb25zdCB1cmxTZWdtZW50cyA9IHRoaXMuZGF0YS51cmxTZWdtZW50cyB8fCBbXTtcbiAgICAgIHVybFNlZ21lbnRzLmZvckVhY2goKHNlZ21lbnQpID0+IHtcbiAgICAgICAgcm91dGUucHVzaChzZWdtZW50LnBhdGgpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcm91dGU7XG4gICAgfVxuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuXG4gIGlzTWFpbkNvbXBvbmVudChjb21wOiBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1haW5XcmFwcGVyICYmIHRoaXMubWFpbldyYXBwZXIubmF0aXZlRWxlbWVudFxuICAgICAgJiYgY29tcC5lbGVtZW50UmVmICYmIHRoaXMubWFpbldyYXBwZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhjb21wLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBvcGVuRGV0YWlsKGRldGFpbDogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEpIHtcbiAgICB0aGlzLnNldERldGFpbENvbXBvbmVudChkZXRhaWwpO1xuICB9XG5cbiAgY2xvc2VEZXRhaWwoKSB7XG4gICAgdGhpcy5zZXREZXRhaWxDb21wb25lbnQobnVsbCk7XG4gIH1cblxuICB1cGRhdGVOYXZpZ2F0aW9uKGRhdGE6IGFueSwga2V5c1ZhbHVlczogYW55LCBpbnNlcnRpb25Nb2RlPzogYm9vbGVhbikge1xuICAgIC8vIE5vdGhpbmcgdG8gZG9cbiAgfVxuXG4gIGNhbkFkZERldGFpbENvbXBvbmVudCgpOiBib29sZWFuIHwgT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmRhdGEpIHx8ICF0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmhhc1RvQ29uZmlybUV4aXQodGhpcy5kYXRhKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jb25maXJtKCdDT05GSVJNJywgJ01FU1NBR0VTLkZPUk1fQ0hBTkdFU19XSUxMX0JFX0xPU1QnKS50aGVuKHJlcyA9PiB7XG4gICAgICAgIG9ic2VydmVyLm5leHQocmVzKTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRJZE9mQWN0aXZlSXRlbSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnc3BsaXQtcGFuZSc7XG4gIH1cbn1cbiIsIlxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgY2xhc3M9XCJvLXNwbGl0LXBhbmUtcm93LXdyYXBwZXJcIj5cbiAgICA8ZGl2ICNtYWluV3JhcHBlciBmeEZsZXggZnhMYXlvdXQ9XCJyb3dcIiBjbGFzcz1cIm8tc3BsaXQtcGFuZS1tYWluLWNvbnRlbnRcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgI2RldGFpbFdyYXBwZXIgY2xhc3M9XCJvLXNwbGl0LXBhbmUtY29udGVudC13cmFwcGVyIG13bFJlc2l6YWJsZVwiIG13bFJlc2l6YWJsZSBbZW5hYmxlR2hvc3RSZXNpemVdPVwidHJ1ZVwiXG4gICAgICAocmVzaXplRW5kKT1cIm9uUmVzaXplRW5kKCd3aWR0aCcsICRldmVudCwgZGV0YWlsV3JhcHBlcilcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm8tc3BsaXQtcGFuZS1yZXNpemUtaGFuZGxlXCIgbXdsUmVzaXplSGFuZGxlIFtyZXNpemVFZGdlc109XCJ7IGxlZnQ6IHRydWUgfVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1zcGxpdC1wYW5lLXJlc2l6ZS1ib3JkZXJcIj5cbiAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiby1zcGxpdC1wYW5lLXNlY29uZGFyeS1jb250ZW50XCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIHN0cmV0Y2hcIiBmeEZsZXg+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBvLWZvcm0tbGF5b3V0LW1hbmFnZXItY29udGVudD48L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwic2hvd0xvYWRpbmcgfCBhc3luY1wiIGNsYXNzPVwic3Bpbm5lci1jb250YWluZXJcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgc3Ryb2tlV2lkdGg9XCIzXCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cbiAgPC9kaXY+XG4iXX0=
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L3NwbGl0LXBhbmUvby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L3NwbGl0LXBhbmUvby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVJLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUluRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFakUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7QUFHN0UsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUc7SUFDckQsU0FBUztDQUNWLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3Q0FBd0MsR0FBRyxFQUN2RCxDQUFDO0FBYUYsTUFBTSxP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LENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDOzswSEE1S1UsNkJBQTZCLDZGQThCOUIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDOzhHQTlCdkMsNkJBQTZCLHNOQU83QixrQ0FBa0Msd0hBR1gsVUFBVSx5R0FHUixVQUFVLDZCQzlDaEQscWdDQXVCQTsyRkRVYSw2QkFBNkI7a0JBWHpDLFNBQVM7K0JBQ0UsMEJBQTBCLFVBRzVCLHVDQUF1QyxXQUN0Qyx3Q0FBd0MsaUJBQ2xDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osa0NBQWtDLEVBQUUsTUFBTTtxQkFDM0M7OzBCQWdDRSxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzs0Q0F0QmxELGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGtDQUFrQztnQkFJbkMsV0FBVztzQkFEcEIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUlwQyxhQUFhO3NCQUR0QixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEluamVjdCwgSW5qZWN0b3IsIFJlbmRlcmVyMiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJlc2l6ZUV2ZW50IH0gZnJvbSAnYW5ndWxhci1yZXNpemFibGUtZWxlbWVudCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSUxheW91dE1hbmFnZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2xheW91dC1tYW5hZ2VyLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvby1mb3JtLWxheW91dC1tYW5hZ2VyLW1vZGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZUNsYXNzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RhdGUvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbXBvbmVudC1zdGF0ZS5jbGFzcyc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9vLWZvcm0tbGF5b3V0LW1hbmFnZXItY29udGVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSB9IGZyb20gJy4uL28tZm9ybS1sYXlvdXQtbWFuYWdlci1iYXNlLmNsYXNzJztcblxuaW1wb3J0IHR5cGUgeyBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2Zvcm0tbGF5b3V0LWRldGFpbC1jb21wb25lbnQtZGF0YS50eXBlJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0ZPUk1fTEFZT1VUX1NQTElUX1BBTkUgPSBbXG4gICdvcHRpb25zJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX0ZPUk1fTEFZT1VUX1NQTElUX1BBTkUgPSBbXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLWZvcm0tbGF5b3V0LXNwbGl0LXBhbmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19GT1JNX0xBWU9VVF9TUExJVF9QQU5FLFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19GT1JNX0xBWU9VVF9TUExJVF9QQU5FLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWZvcm0tbGF5b3V0LXNwbGl0LXBhbmVdJzogJ3RydWUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0Zvcm1MYXlvdXRTcGxpdFBhbmVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPRm9ybUxheW91dE1hbmFnZXJNb2RlIHtcblxuICBkYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YTtcbiAgcHVibGljIHNob3dMb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyO1xuXG4gIEBWaWV3Q2hpbGQoT0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGVudERpcmVjdGl2ZSlcbiAgY29udGVudERpcmVjdGl2ZTogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29udGVudERpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkKCdtYWluV3JhcHBlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcm90ZWN0ZWQgbWFpbldyYXBwZXI6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnZGV0YWlsV3JhcHBlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcm90ZWN0ZWQgZGV0YWlsV3JhcHBlcjogRWxlbWVudFJlZjtcblxuICBwcm90ZWN0ZWQgX29wdGlvbnM6IGFueTtcblxuICBwdWJsaWMgc2V0IG9wdGlvbnModmFsdWU6IGFueSkge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh2YWx1ZSkgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9Gb3JtTGF5b3V0TWFuYWdlckJhc2UpKSBwdWJsaWMgZm9ybUxheW91dE1hbmFnZXI6IE9Gb3JtTGF5b3V0TWFuYWdlckJhc2VcbiAgKSB7XG4gICAgdGhpcy5yb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpO1xuICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IGluamVjdG9yLmdldChEaWFsb2dTZXJ2aWNlKTtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZUNsYXNzIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtTGF5b3V0TWFuYWdlci5zdGF0ZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5tYWluV3JhcHBlciAmJiB0aGlzLm1haW5XcmFwcGVyLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuc2V0T3B0aW9uKHRoaXMubWFpbldyYXBwZXIubmF0aXZlRWxlbWVudCwgJ21haW5XaWR0aCcsICd3aWR0aCcpO1xuICAgICAgdGhpcy5zZXRPcHRpb24odGhpcy5tYWluV3JhcHBlci5uYXRpdmVFbGVtZW50LCAnbWFpbk1heFdpZHRoJywgJ21heC13aWR0aCcpO1xuICAgICAgdGhpcy5zZXRPcHRpb24odGhpcy5tYWluV3JhcHBlci5uYXRpdmVFbGVtZW50LCAnbWFpbk1pbldpZHRoJywgJ21pbi13aWR0aCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kZXRhaWxXcmFwcGVyICYmIHRoaXMuZGV0YWlsV3JhcHBlci5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLnNldE9wdGlvbih0aGlzLmRldGFpbFdyYXBwZXIubmF0aXZlRWxlbWVudCwgJ2RldGFpbFdpZHRoJywgJ3dpZHRoJyk7XG4gICAgICB0aGlzLnNldE9wdGlvbih0aGlzLmRldGFpbFdyYXBwZXIubmF0aXZlRWxlbWVudCwgJ2RldGFpbE1heFdpZHRoJywgJ21heC13aWR0aCcpO1xuICAgICAgdGhpcy5zZXRPcHRpb24odGhpcy5kZXRhaWxXcmFwcGVyLm5hdGl2ZUVsZW1lbnQsICdkZXRhaWxNaW5XaWR0aCcsICdtaW4td2lkdGgnKTtcbiAgICB9XG4gICAgdGhpcy5pbml0aWFsaXplQ29tcG9uZW50U3RhdGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRPcHRpb24oZWw6IGFueSwgb3B0aW9uTmFtZTogc3RyaW5nLCBwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLl9vcHRpb25zW29wdGlvbk5hbWVdKSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlbCwgcHJvcGVydHlOYW1lLCB0aGlzLl9vcHRpb25zW29wdGlvbk5hbWVdKTtcbiAgICB9XG4gIH1cblxuICBnZXRGb3JtQ2FjaGVEYXRhKCk6IEZvcm1MYXlvdXREZXRhaWxDb21wb25lbnREYXRhIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG5cbiAgc2V0TW9kaWZpZWRTdGF0ZShmb3JtQXR0cjogc3RyaW5nLCBtb2RpZmllZDogYm9vbGVhbiwgY29uZmlybUV4aXQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRhdGEuaW5uZXJGb3Jtc0luZm9bZm9ybUF0dHJdID0ge1xuICAgICAgbW9kaWZpZWQ6IG1vZGlmaWVkLFxuICAgICAgY29uZmlybU9uRXhpdDogY29uZmlybUV4aXRcbiAgICB9O1xuICB9XG5cbiAgc2V0RGV0YWlsQ29tcG9uZW50KGNvbXBEYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSkge1xuICAgIHRoaXMuZGF0YSA9IGNvbXBEYXRhO1xuICAgIHRoaXMuY3JlYXRlQ29tcG9uZW50KCk7XG4gICAgdGhpcy5kYXRhLnJlbmRlcmVyU3ViamVjdC5uZXh0KHRydWUpO1xuICB9XG5cbiAgb25SZXNpemVFbmQocHJvcGVydHk6IHN0cmluZywgZXZlbnQ6IFJlc2l6ZUV2ZW50LCBlbDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhlbCwgJ3Jlc2l6ZWQnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsLCBwcm9wZXJ0eSwgYCR7ZXZlbnQucmVjdGFuZ2xlW3Byb3BlcnR5XX1weGApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUNvbXBvbmVudCgpIHtcbiAgICBpZiAoIXRoaXMuZGF0YSkge1xuICAgICAgdGhpcy5jb250ZW50RGlyZWN0aXZlLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5kYXRhLmNvbXBvbmVudDtcbiAgICBpZiAodGhpcy5jb250ZW50RGlyZWN0aXZlICYmIGNvbXBvbmVudCkge1xuICAgICAgY29uc3Qgdmlld0NvbnRhaW5lclJlZiA9IHRoaXMuY29udGVudERpcmVjdGl2ZS52aWV3Q29udGFpbmVyUmVmO1xuICAgICAgdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcbiAgICB9XG4gIH1cblxuICBnZXREYXRhVG9TdG9yZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmRhdGE7XG4gIH1cblxuICBnZXRQYXJhbXMoKTogYW55IHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQodGhpcy5kYXRhKSA/IHRoaXMuZGF0YS5wYXJhbXMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpbml0aWFsaXplQ29tcG9uZW50U3RhdGUoKSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlKSB8fCAhVXRpbC5pc0RlZmluZWQodGhpcy5zdGF0ZS51cmwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93TG9hZGluZy5uZXh0KHRydWUpO1xuICAgIGNvbnN0IGV4dHJhcyA9IHt9O1xuICAgIGV4dHJhc1tDb2Rlcy5RVUVSWV9QQVJBTVNdID0gdGhpcy5zdGF0ZS5xdWVyeVBhcmFtcztcblxuICAgIGlmICh0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICB0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLnNldEFzQWN0aXZlRm9ybUxheW91dE1hbmFnZXIoKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5zdGF0ZS51cmxdLCBleHRyYXMpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy5zaG93TG9hZGluZy5uZXh0KGZhbHNlKTtcbiAgICB9KTtcblxuICB9XG5cbiAgdXBkYXRlQWN0aXZlRGF0YShkYXRhOiBhbnkpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5kYXRhKSkge1xuICAgICAgdGhpcy5kYXRhID0gT2JqZWN0LmFzc2lnbih0aGlzLmRhdGEsIGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIGdldFJvdXRlT2ZBY3RpdmVJdGVtKCk6IGFueVtdIHtcbiAgICBjb25zdCByb3V0ZSA9IFtdO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLmRhdGEpKSB7XG4gICAgICBjb25zdCB1cmxTZWdtZW50cyA9IHRoaXMuZGF0YS51cmxTZWdtZW50cyB8fCBbXTtcbiAgICAgIHVybFNlZ21lbnRzLmZvckVhY2goKHNlZ21lbnQpID0+IHtcbiAgICAgICAgcm91dGUucHVzaChzZWdtZW50LnBhdGgpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcm91dGU7XG4gICAgfVxuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuXG4gIGlzTWFpbkNvbXBvbmVudChjb21wOiBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1haW5XcmFwcGVyICYmIHRoaXMubWFpbldyYXBwZXIubmF0aXZlRWxlbWVudFxuICAgICAgJiYgY29tcC5lbGVtZW50UmVmICYmIHRoaXMubWFpbldyYXBwZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhjb21wLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBvcGVuRGV0YWlsKGRldGFpbDogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEpIHtcbiAgICB0aGlzLnNldERldGFpbENvbXBvbmVudChkZXRhaWwpO1xuICB9XG5cbiAgY2xvc2VEZXRhaWwoKSB7XG4gICAgdGhpcy5zZXREZXRhaWxDb21wb25lbnQobnVsbCk7XG4gIH1cblxuICB1cGRhdGVOYXZpZ2F0aW9uKGRhdGE6IGFueSwga2V5c1ZhbHVlczogYW55LCBpbnNlcnRpb25Nb2RlPzogYm9vbGVhbikge1xuICAgIC8vIE5vdGhpbmcgdG8gZG9cbiAgfVxuXG4gIGNhbkFkZERldGFpbENvbXBvbmVudCgpOiBib29sZWFuIHwgT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmRhdGEpIHx8ICF0aGlzLmZvcm1MYXlvdXRNYW5hZ2VyLmhhc1RvQ29uZmlybUV4aXQodGhpcy5kYXRhKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jb25maXJtKCdDT05GSVJNJywgJ01FU1NBR0VTLkZPUk1fQ0hBTkdFU19XSUxMX0JFX0xPU1QnKS50aGVuKHJlcyA9PiB7XG4gICAgICAgIG9ic2VydmVyLm5leHQocmVzKTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRJZE9mQWN0aXZlSXRlbSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnc3BsaXQtcGFuZSc7XG4gIH1cbn1cbiIsIlxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgY2xhc3M9XCJvLXNwbGl0LXBhbmUtcm93LXdyYXBwZXJcIj5cbiAgICA8ZGl2ICNtYWluV3JhcHBlciBmeEZsZXggZnhMYXlvdXQ9XCJyb3dcIiBjbGFzcz1cIm8tc3BsaXQtcGFuZS1tYWluLWNvbnRlbnRcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgI2RldGFpbFdyYXBwZXIgY2xhc3M9XCJvLXNwbGl0LXBhbmUtY29udGVudC13cmFwcGVyIG13bFJlc2l6YWJsZVwiIG13bFJlc2l6YWJsZSBbZW5hYmxlR2hvc3RSZXNpemVdPVwidHJ1ZVwiXG4gICAgICAocmVzaXplRW5kKT1cIm9uUmVzaXplRW5kKCd3aWR0aCcsICRldmVudCwgZGV0YWlsV3JhcHBlcilcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm8tc3BsaXQtcGFuZS1yZXNpemUtaGFuZGxlXCIgbXdsUmVzaXplSGFuZGxlIFtyZXNpemVFZGdlc109XCJ7IGxlZnQ6IHRydWUgfVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1zcGxpdC1wYW5lLXJlc2l6ZS1ib3JkZXJcIj5cbiAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiby1zcGxpdC1wYW5lLXNlY29uZGFyeS1jb250ZW50XCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIHN0cmV0Y2hcIiBmeEZsZXg+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBvLWZvcm0tbGF5b3V0LW1hbmFnZXItY29udGVudD48L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwic2hvd0xvYWRpbmcgfCBhc3luY1wiIGNsYXNzPVwic3Bpbm5lci1jb250YWluZXJcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG4gICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgc3Ryb2tlV2lkdGg9XCIzXCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cbiAgPC9kaXY+XG4iXX0=
@@ -24,9 +24,9 @@ export class OFormLayoutSplitPaneOptionsDirective {
24
24
  return result;
25
25
  }
26
26
  }
27
- OFormLayoutSplitPaneOptionsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OFormLayoutSplitPaneOptionsDirective, deps: [{ token: i1.OFormLayoutManagerComponent }], target: i0.ɵɵFactoryTarget.Directive });
28
- OFormLayoutSplitPaneOptionsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: OFormLayoutSplitPaneOptionsDirective, selector: "o-form-layout-split-pane-options, o-form-layout-manager[mode=\"split-pane\"]", inputs: { mainWidth: ["main-width", "mainWidth"], mainMaxWidth: ["main-max-width", "mainMaxWidth"], mainMinWidth: ["main-min-width", "mainMinWidth"], detailWidth: ["detail-width", "detailWidth"], detailMaxWidth: ["detail-max-width", "detailMaxWidth"], detailMinWidth: ["detail-min-width", "detailMinWidth"] }, usesOnChanges: true, ngImport: i0 });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OFormLayoutSplitPaneOptionsDirective, decorators: [{
27
+ OFormLayoutSplitPaneOptionsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutSplitPaneOptionsDirective, deps: [{ token: i1.OFormLayoutManagerComponent }], target: i0.ɵɵFactoryTarget.Directive });
28
+ OFormLayoutSplitPaneOptionsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: OFormLayoutSplitPaneOptionsDirective, selector: "o-form-layout-split-pane-options, o-form-layout-manager[mode=\"split-pane\"]", inputs: { mainWidth: ["main-width", "mainWidth"], mainMaxWidth: ["main-max-width", "mainMaxWidth"], mainMinWidth: ["main-min-width", "mainMinWidth"], detailWidth: ["detail-width", "detailWidth"], detailMaxWidth: ["detail-max-width", "detailMaxWidth"], detailMinWidth: ["detail-min-width", "detailMinWidth"] }, usesOnChanges: true, ngImport: i0 });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OFormLayoutSplitPaneOptionsDirective, decorators: [{
30
30
  type: Directive,
31
31
  args: [{
32
32
  selector: 'o-form-layout-split-pane-options, o-form-layout-manager[mode="split-pane"]'
@@ -50,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
50
50
  type: Input,
51
51
  args: ['detail-min-width']
52
52
  }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLW9wdGlvbnMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2xheW91dHMvZm9ybS1sYXlvdXQvc3BsaXQtcGFuZS9vcHRpb25zL28tZm9ybS1sYXlvdXQtc3BsaXQtcGFuZS1vcHRpb25zLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBS3BGLE1BQU0sT0FBTyxvQ0FBb0M7SUFFL0MsWUFBc0IsaUJBQThDO1FBQTlDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7SUFBSSxDQUFDO0lBRXpFLFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDO0lBU0QsVUFBVTtRQUNSLE1BQU0sTUFBTSxHQUFHO1lBQ2IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDcEMsQ0FBQTtRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O2tJQTdCVSxvQ0FBb0M7c0hBQXBDLG9DQUFvQzs0RkFBcEMsb0NBQW9DO2tCQUhoRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0RUFBNEU7aUJBQ3ZGO2tIQVdzQixTQUFTO3NCQUE3QixLQUFLO3VCQUFDLFlBQVk7Z0JBQ00sWUFBWTtzQkFBcEMsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBQ0UsWUFBWTtzQkFBcEMsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBQ0EsV0FBVztzQkFBakMsS0FBSzt1QkFBQyxjQUFjO2dCQUNNLGNBQWM7c0JBQXhDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUNFLGNBQWM7c0JBQXhDLEtBQUs7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLW9wdGlvbnMsIG8tZm9ybS1sYXlvdXQtbWFuYWdlclttb2RlPVwic3BsaXQtcGFuZVwiXSdcbn0pXG5leHBvcnQgY2xhc3MgT0Zvcm1MYXlvdXRTcGxpdFBhbmVPcHRpb25zRGlyZWN0aXZlIHtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZm9ybUxheW91dE1hbmFnZXI6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCkgeyB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIpIHtcbiAgICAgIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuYWRkU3BsaXRQYW5lT3B0aW9ucyh0aGlzLmdldE9wdGlvbnMoKSk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCdtYWluLXdpZHRoJykgbWFpbldpZHRoOiBudW1iZXIgfCBzdHJpbmc7XG4gIEBJbnB1dCgnbWFpbi1tYXgtd2lkdGgnKSBtYWluTWF4V2lkdGg6IG51bWJlciB8IHN0cmluZztcbiAgQElucHV0KCdtYWluLW1pbi13aWR0aCcpIG1haW5NaW5XaWR0aDogbnVtYmVyIHwgc3RyaW5nO1xuICBASW5wdXQoJ2RldGFpbC13aWR0aCcpIGRldGFpbFdpZHRoOiBudW1iZXIgfCBzdHJpbmc7XG4gIEBJbnB1dCgnZGV0YWlsLW1heC13aWR0aCcpIGRldGFpbE1heFdpZHRoOiBudW1iZXIgfCBzdHJpbmc7XG4gIEBJbnB1dCgnZGV0YWlsLW1pbi13aWR0aCcpIGRldGFpbE1pbldpZHRoOiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgZ2V0T3B0aW9ucygpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICBtYWluV2lkdGg6IHRoaXMubWFpbldpZHRoLFxuICAgICAgbWFpbk1heFdpZHRoOiB0aGlzLm1haW5NYXhXaWR0aCxcbiAgICAgIG1haW5NaW5XaWR0aDogdGhpcy5tYWluTWluV2lkdGgsXG4gICAgICBkZXRhaWxXaWR0aDogdGhpcy5kZXRhaWxXaWR0aCxcbiAgICAgIGRldGFpbE1heFdpZHRoOiB0aGlzLmRldGFpbE1heFdpZHRoLFxuICAgICAgZGV0YWlsTWluV2lkdGg6IHRoaXMuZGV0YWlsTWluV2lkdGhcbiAgICB9XG4gICAgLy8gRGVsZXRpbmcgdW5kZWZpbmVkIHByb3BlcnRpZXNcbiAgICBPYmplY3Qua2V5cyhyZXN1bHQpLmZvckVhY2goa2V5ID0+IHJlc3VsdFtrZXldID09IG51bGwgPyBkZWxldGUgcmVzdWx0W2tleV0gOiB7fSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLW9wdGlvbnMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2xheW91dHMvZm9ybS1sYXlvdXQvc3BsaXQtcGFuZS9vcHRpb25zL28tZm9ybS1sYXlvdXQtc3BsaXQtcGFuZS1vcHRpb25zLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBS3BGLE1BQU0sT0FBTyxvQ0FBb0M7SUFFL0MsWUFBc0IsaUJBQThDO1FBQTlDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7SUFBSSxDQUFDO0lBRXpFLFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDO0lBU0QsVUFBVTtRQUNSLE1BQU0sTUFBTSxHQUFHO1lBQ2IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDcEMsQ0FBQTtRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O2lJQTdCVSxvQ0FBb0M7cUhBQXBDLG9DQUFvQzsyRkFBcEMsb0NBQW9DO2tCQUhoRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0RUFBNEU7aUJBQ3ZGO2tIQVdzQixTQUFTO3NCQUE3QixLQUFLO3VCQUFDLFlBQVk7Z0JBQ00sWUFBWTtzQkFBcEMsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBQ0UsWUFBWTtzQkFBcEMsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBQ0EsV0FBVztzQkFBakMsS0FBSzt1QkFBQyxjQUFjO2dCQUNNLGNBQWM7c0JBQXhDLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUNFLGNBQWM7c0JBQXhDLEtBQUs7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnby1mb3JtLWxheW91dC1zcGxpdC1wYW5lLW9wdGlvbnMsIG8tZm9ybS1sYXlvdXQtbWFuYWdlclttb2RlPVwic3BsaXQtcGFuZVwiXSdcbn0pXG5leHBvcnQgY2xhc3MgT0Zvcm1MYXlvdXRTcGxpdFBhbmVPcHRpb25zRGlyZWN0aXZlIHtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZm9ybUxheW91dE1hbmFnZXI6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCkgeyB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUxheW91dE1hbmFnZXIpIHtcbiAgICAgIHRoaXMuZm9ybUxheW91dE1hbmFnZXIuYWRkU3BsaXRQYW5lT3B0aW9ucyh0aGlzLmdldE9wdGlvbnMoKSk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCdtYWluLXdpZHRoJykgbWFpbldpZHRoOiBudW1iZXIgfCBzdHJpbmc7XG4gIEBJbnB1dCgnbWFpbi1tYXgtd2lkdGgnKSBtYWluTWF4V2lkdGg6IG51bWJlciB8IHN0cmluZztcbiAgQElucHV0KCdtYWluLW1pbi13aWR0aCcpIG1haW5NaW5XaWR0aDogbnVtYmVyIHwgc3RyaW5nO1xuICBASW5wdXQoJ2RldGFpbC13aWR0aCcpIGRldGFpbFdpZHRoOiBudW1iZXIgfCBzdHJpbmc7XG4gIEBJbnB1dCgnZGV0YWlsLW1heC13aWR0aCcpIGRldGFpbE1heFdpZHRoOiBudW1iZXIgfCBzdHJpbmc7XG4gIEBJbnB1dCgnZGV0YWlsLW1pbi13aWR0aCcpIGRldGFpbE1pbldpZHRoOiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgZ2V0T3B0aW9ucygpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICBtYWluV2lkdGg6IHRoaXMubWFpbldpZHRoLFxuICAgICAgbWFpbk1heFdpZHRoOiB0aGlzLm1haW5NYXhXaWR0aCxcbiAgICAgIG1haW5NaW5XaWR0aDogdGhpcy5tYWluTWluV2lkdGgsXG4gICAgICBkZXRhaWxXaWR0aDogdGhpcy5kZXRhaWxXaWR0aCxcbiAgICAgIGRldGFpbE1heFdpZHRoOiB0aGlzLmRldGFpbE1heFdpZHRoLFxuICAgICAgZGV0YWlsTWluV2lkdGg6IHRoaXMuZGV0YWlsTWluV2lkdGhcbiAgICB9XG4gICAgLy8gRGVsZXRpbmcgdW5kZWZpbmVkIHByb3BlcnRpZXNcbiAgICBPYmplY3Qua2V5cyhyZXN1bHQpLmZvckVhY2goa2V5ID0+IHJlc3VsdFtrZXldID09IG51bGwgPyBkZWxldGUgcmVzdWx0W2tleV0gOiB7fSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19