@theseam/ui-common 0.4.0-beta.5 → 0.4.0-beta.6

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 (519) hide show
  1. package/breadcrumbs/breadcrumb.d.ts +1 -1
  2. package/breadcrumbs/breadcrumbs-resolver.d.ts +1 -1
  3. package/core/common-behaviors/active.d.ts +1 -1
  4. package/core/common-behaviors/constructor.d.ts +1 -1
  5. package/core/common-behaviors/disabled.d.ts +1 -1
  6. package/core/common-behaviors/initialized.d.ts +1 -1
  7. package/core/common-behaviors/size.d.ts +1 -1
  8. package/core/common-behaviors/tabindex.d.ts +1 -1
  9. package/core/common-behaviors/theme.d.ts +1 -1
  10. package/data-exporter/data-exporter.d.ts +1 -1
  11. package/data-filters/data-filter.d.ts +3 -3
  12. package/data-filters/filters/data-filter-search/search-filter-options.d.ts +1 -1
  13. package/datatable/datatable-column/datatable-column.component.d.ts +1 -1
  14. package/datatable/models/preferences.d.ts +1 -1
  15. package/datatable/models/table-column.d.ts +1 -1
  16. package/datatable/services/columns-manager.service.d.ts +1 -1
  17. package/datatable-dynamic/datatable-dynamic-def.d.ts +3 -3
  18. package/datatable-dynamic/models/dynamic-datatable-action-menu-record.d.ts +1 -1
  19. package/dynamic/models/dynamic-value-base-type.d.ts +1 -1
  20. package/dynamic/models/dynamic-value-evaluatable-type.d.ts +1 -1
  21. package/dynamic/models/dynamic-value-primitive.d.ts +1 -1
  22. package/dynamic/models/dynamic-value.d.ts +1 -1
  23. package/dynamic/tokens/api-config.d.ts +1 -1
  24. package/esm2020/asset-reader/asset-reader-helper.service.mjs +3 -3
  25. package/esm2020/asset-reader/asset-reader.module.mjs +4 -4
  26. package/esm2020/asset-reader/encrypted-asset-link.directive.mjs +12 -12
  27. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +3 -3
  28. package/esm2020/breadcrumbs/breadcrumbs.module.mjs +4 -4
  29. package/esm2020/breadcrumbs/breadcrumbs.service.mjs +3 -3
  30. package/esm2020/buttons/badge-button/badge-button.component.mjs +6 -6
  31. package/esm2020/buttons/button/button.component.mjs +9 -9
  32. package/esm2020/buttons/buttons.module.mjs +4 -4
  33. package/esm2020/buttons/progress-circle-button/progress-circle-button.component.mjs +3 -3
  34. package/esm2020/buttons/toggle-button/toggle-button.component.mjs +5 -5
  35. package/esm2020/card/card-action/card-action.component.mjs +3 -3
  36. package/esm2020/card/card-body/card-body.component.mjs +3 -3
  37. package/esm2020/card/card-footer/card-footer.component.mjs +3 -3
  38. package/esm2020/card/card-header/card-header.component.mjs +3 -3
  39. package/esm2020/card/card.component.mjs +3 -3
  40. package/esm2020/card/card.module.mjs +4 -4
  41. package/esm2020/checkbox/checkbox.component.mjs +43 -43
  42. package/esm2020/checkbox/checkbox.module.mjs +4 -4
  43. package/esm2020/confirm-dialog/confirm-click.directive.mjs +9 -9
  44. package/esm2020/confirm-dialog/confirm-dialog.component.mjs +3 -3
  45. package/esm2020/confirm-dialog/confirm-dialog.module.mjs +4 -4
  46. package/esm2020/confirm-dialog/confirm-dialog.service.mjs +3 -3
  47. package/esm2020/core/common-behaviors/active.mjs +3 -3
  48. package/esm2020/core/common-behaviors/disabled.mjs +3 -3
  49. package/esm2020/core/common-behaviors/size.mjs +6 -6
  50. package/esm2020/core/common-behaviors/tabindex.mjs +5 -5
  51. package/esm2020/core/common-behaviors/theme.mjs +6 -6
  52. package/esm2020/data-exporter/data-exporter.module.mjs +4 -4
  53. package/esm2020/data-exporter/exporters/csv-exporter.mjs +3 -3
  54. package/esm2020/data-exporter/exporters/xlsx-exporter.mjs +3 -3
  55. package/esm2020/data-filters/data-filters.module.mjs +4 -4
  56. package/esm2020/data-filters/filters/data-filter-search/data-filter-search.component.mjs +10 -10
  57. package/esm2020/data-filters/filters/data-filter-text/data-filter-text.component.mjs +10 -10
  58. package/esm2020/data-filters/filters/data-filter-toggle-buttons/data-filter-toggle-buttons.component.mjs +11 -11
  59. package/esm2020/datatable/datatable/datatable.component.mjs +108 -108
  60. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +3 -3
  61. package/esm2020/datatable/datatable-action-menu-item/datatable-action-menu-item.component.mjs +3 -3
  62. package/esm2020/datatable/datatable-column/datatable-column.component.mjs +7 -7
  63. package/esm2020/datatable/datatable-column-preferences/datatable-column-preferences.component.mjs +3 -3
  64. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +3 -3
  65. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +7 -7
  66. package/esm2020/datatable/datatable-footer/datatable-footer-tpl.directive.mjs +3 -3
  67. package/esm2020/datatable/datatable-footer/datatable-footer.directive.mjs +3 -3
  68. package/esm2020/datatable/datatable-menu-bar/datatable-menu-bar.component.mjs +8 -8
  69. package/esm2020/datatable/datatable-menu-bar-column-center/datatable-menu-bar-column-center.component.mjs +3 -3
  70. package/esm2020/datatable/datatable-menu-bar-column-left/datatable-menu-bar-column-left.component.mjs +3 -3
  71. package/esm2020/datatable/datatable-menu-bar-column-right/datatable-menu-bar-column-right.component.mjs +3 -3
  72. package/esm2020/datatable/datatable-menu-bar-row/datatable-menu-bar-row.component.mjs +3 -3
  73. package/esm2020/datatable/datatable-menu-bar-text/datatable-menu-bar-text.component.mjs +3 -3
  74. package/esm2020/datatable/datatable-row-detail/datatable-row-detail-tpl.directive.mjs +3 -3
  75. package/esm2020/datatable/datatable-row-detail/datatable-row-detail.directive.mjs +3 -3
  76. package/esm2020/datatable/datatable.module.mjs +4 -4
  77. package/esm2020/datatable/directives/datatable-action-menu-item.directive.mjs +3 -3
  78. package/esm2020/datatable/directives/datatable-action-menu-toggle.directive.mjs +11 -11
  79. package/esm2020/datatable/directives/datatable-cell-tpl.directive.mjs +3 -3
  80. package/esm2020/datatable/directives/datatable-filter.directive.mjs +3 -3
  81. package/esm2020/datatable/directives/datatable-row-action-item.directive.mjs +3 -3
  82. package/esm2020/datatable/services/columns-alterations-manager.service.mjs +3 -3
  83. package/esm2020/datatable/services/columns-manager.service.mjs +3 -3
  84. package/esm2020/datatable/services/datatable-column-changes.service.mjs +3 -3
  85. package/esm2020/datatable/services/datatable-preferences.service.mjs +6 -6
  86. package/esm2020/datatable/services/datatable-scrollbar-helper.service.mjs +3 -3
  87. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +12 -12
  88. package/esm2020/datatable-dynamic/datatable-dynamic-filter-container/datatable-dynamic-filter-container.component.mjs +8 -8
  89. package/esm2020/datatable-dynamic/datatable-dynamic-menu-bar-content/datatable-dynamic-menu-bar-content.component.mjs +6 -6
  90. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +8 -8
  91. package/esm2020/datatable-dynamic/datatable-dynamic.module.mjs +4 -4
  92. package/esm2020/datatable-dynamic/directives/datatable-dynamic-action-menu-item.directive.mjs +7 -7
  93. package/esm2020/datatable-dynamic/dynamic-datatable-def.service.mjs +3 -3
  94. package/esm2020/datatable-dynamic/dynamic-datatable-row-actions.service.mjs +3 -3
  95. package/esm2020/dynamic/action/api/dynamic-action-api.service.mjs +3 -3
  96. package/esm2020/dynamic/action/dynamic-action-helper.service.mjs +3 -3
  97. package/esm2020/dynamic/action/link/dynamic-action-link.service.mjs +3 -3
  98. package/esm2020/dynamic/action/modal/dynamic-action-modal.service.mjs +3 -3
  99. package/esm2020/dynamic/dynamic-value-helper.service.mjs +3 -3
  100. package/esm2020/dynamic/evaluators/exporters-data-evaluator/exporters-data-evaluator.mjs +3 -3
  101. package/esm2020/dynamic/evaluators/jexl-evaluator/jexl-evaluator.mjs +3 -3
  102. package/esm2020/dynamic-component-loader/dynamic-component-loader.module.mjs +4 -4
  103. package/esm2020/dynamic-component-loader/dynamic-component-loader.service.mjs +3 -3
  104. package/esm2020/footer-bar/footer-bar/footer-bar.component.mjs +3 -3
  105. package/esm2020/footer-bar/footer-bar.module.mjs +4 -4
  106. package/esm2020/form-field/form-field-error.directive.mjs +6 -6
  107. package/esm2020/form-field/form-field-help-text.directive.mjs +3 -3
  108. package/esm2020/form-field/form-field-label-tpl.directive.mjs +3 -3
  109. package/esm2020/form-field/form-field-required-indicator.component.mjs +3 -3
  110. package/esm2020/form-field/form-field.component.mjs +48 -48
  111. package/esm2020/form-field/form-field.module.mjs +4 -4
  112. package/esm2020/form-field/input.directive.mjs +43 -43
  113. package/esm2020/form-field-error/form-field-error/form-field-error.component.mjs +3 -3
  114. package/esm2020/form-field-error/form-field-error-list/form-field-error-list-item-tpl.directive.mjs +3 -3
  115. package/esm2020/form-field-error/form-field-error-list/form-field-error-list-item.directive.mjs +3 -3
  116. package/esm2020/form-field-error/form-field-error-list/form-field-error-list.component.mjs +92 -92
  117. package/esm2020/form-field-error/form-field-error.module.mjs +4 -4
  118. package/esm2020/framework/base-layout/base-layout.component.mjs +6 -6
  119. package/esm2020/framework/base-layout/base-layout.module.mjs +4 -4
  120. package/esm2020/framework/base-layout/directives/base-layout-content-footer.directive.mjs +3 -3
  121. package/esm2020/framework/base-layout/directives/base-layout-content-header.directive.mjs +3 -3
  122. package/esm2020/framework/base-layout/directives/base-layout-content.directive.mjs +3 -3
  123. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +10 -10
  124. package/esm2020/framework/base-layout/directives/base-layout-side-bar-footer.directive.mjs +3 -3
  125. package/esm2020/framework/base-layout/directives/base-layout-side-bar.directive.mjs +3 -3
  126. package/esm2020/framework/base-layout/directives/base-layout-top-bar.directive.mjs +3 -3
  127. package/esm2020/framework/dashboard/dashboard-widget-container/dashboard-widget-container.component.mjs +3 -3
  128. package/esm2020/framework/dashboard/dashboard-widget-template-container/dashboard-widget-template-container.component.mjs +3 -3
  129. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widget-portal-outlet.directive.mjs +3 -3
  130. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences.service.mjs +3 -3
  131. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.component.mjs +18 -18
  132. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.service.mjs +12 -12
  133. package/esm2020/framework/dashboard/dashboard.component.mjs +3 -3
  134. package/esm2020/framework/dashboard/dashboard.module.mjs +4 -4
  135. package/esm2020/framework/dynamic-router/dynamic-router.module.mjs +4 -4
  136. package/esm2020/framework/dynamic-router/hierarchy-router-outlet/hierarchy-router-outlet.component.mjs +3 -3
  137. package/esm2020/framework/dynamic-router/resolvers/hierarchy-level.resolver.mjs +3 -3
  138. package/esm2020/framework/schema-form/schema-form-framework.component.mjs +3 -3
  139. package/esm2020/framework/schema-form/schema-form-framework.mjs +3 -3
  140. package/esm2020/framework/schema-form/schema-form.module.mjs +4 -4
  141. package/esm2020/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.mjs +3 -3
  142. package/esm2020/framework/schema-form-controls/schema-form-controls.module.mjs +4 -4
  143. package/esm2020/framework/schema-form-controls/schema-form-input/schema-form-input.component.mjs +3 -3
  144. package/esm2020/framework/schema-form-controls/schema-form-number/schema-form-number.component.mjs +3 -3
  145. package/esm2020/framework/schema-form-controls/schema-form-select/schema-form-select.component.mjs +3 -3
  146. package/esm2020/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.mjs +3 -3
  147. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +3 -3
  148. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +24 -24
  149. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +3 -3
  150. package/esm2020/framework/side-nav/side-nav.component.mjs +17 -17
  151. package/esm2020/framework/side-nav/side-nav.module.mjs +4 -4
  152. package/esm2020/framework/side-nav/side-nav.service.mjs +3 -3
  153. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +3 -3
  154. package/esm2020/framework/top-bar/top-bar-menu-btn-detail.directive.mjs +3 -3
  155. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +3 -3
  156. package/esm2020/framework/top-bar/top-bar-menu.directive.mjs +3 -3
  157. package/esm2020/framework/top-bar/top-bar-title/top-bar-title.component.mjs +3 -3
  158. package/esm2020/framework/top-bar/top-bar.component.mjs +3 -3
  159. package/esm2020/framework/top-bar/top-bar.module.mjs +4 -4
  160. package/esm2020/google-maps/google-maps/google-maps.component.mjs +17 -17
  161. package/esm2020/google-maps/google-maps-api-loader/lazy-google-maps-api-loader.mjs +103 -0
  162. package/esm2020/google-maps/google-maps-api-loader/noop-google-maps-api-loader.mjs +25 -0
  163. package/esm2020/google-maps/google-maps-controls.service.mjs +3 -3
  164. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +19 -19
  165. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.directive.mjs +7 -7
  166. package/esm2020/google-maps/google-maps-recenter-button-control/google-maps-recenter-button-control.component.mjs +7 -7
  167. package/esm2020/google-maps/google-maps-upload-button-control/google-maps-upload-button-control.component.mjs +7 -7
  168. package/esm2020/google-maps/google-maps.module.mjs +4 -4
  169. package/esm2020/google-maps/google-maps.service.mjs +5 -5
  170. package/esm2020/google-maps/map-control.component.mjs +9 -9
  171. package/esm2020/google-maps/map-file-drop/map-file-drop.component.mjs +3 -3
  172. package/esm2020/google-maps/map-value-manager.service.mjs +3 -3
  173. package/esm2020/google-maps/public-api.mjs +4 -1
  174. package/esm2020/graphql/datatable/datatable-graphql-query-ref.mjs +5 -5
  175. package/esm2020/graphql/datatable/datatable-graphql.service.mjs +3 -3
  176. package/esm2020/icon/icon/icon.component.mjs +3 -3
  177. package/esm2020/icon/icon-btn/icon-btn.component.mjs +24 -24
  178. package/esm2020/icon/icon-notification/icon-notification.component.mjs +3 -3
  179. package/esm2020/icon/icon.module.mjs +4 -4
  180. package/esm2020/layout/layout.module.mjs +4 -4
  181. package/esm2020/layout/layout.service.mjs +3 -3
  182. package/esm2020/loading/loading/loading.component.mjs +7 -7
  183. package/esm2020/loading/loading-overlay.service.mjs +3 -3
  184. package/esm2020/loading/loading.module.mjs +4 -4
  185. package/esm2020/menu/menu-divider.component.mjs +3 -3
  186. package/esm2020/menu/menu-footer/menu-footer.component.mjs +3 -3
  187. package/esm2020/menu/menu-footer-action/menu-footer-action.component.mjs +7 -7
  188. package/esm2020/menu/menu-header/menu-header.component.mjs +3 -3
  189. package/esm2020/menu/menu-item.component.mjs +3 -3
  190. package/esm2020/menu/menu-toggle.directive.mjs +42 -42
  191. package/esm2020/menu/menu.component.mjs +15 -15
  192. package/esm2020/menu/menu.module.mjs +4 -4
  193. package/esm2020/modal/directives/modal-close.directive.mjs +11 -11
  194. package/esm2020/modal/directives/modal-footer-tpl.directive.mjs +3 -3
  195. package/esm2020/modal/directives/modal-header-icon-tpl.directive.mjs +3 -3
  196. package/esm2020/modal/directives/modal-header-title-tpl.directive.mjs +3 -3
  197. package/esm2020/modal/directives/modal-title.directive.mjs +3 -3
  198. package/esm2020/modal/directives/modal.directive.mjs +3 -3
  199. package/esm2020/modal/modal/modal.component.mjs +19 -19
  200. package/esm2020/modal/modal-body/modal-body.component.mjs +3 -3
  201. package/esm2020/modal/modal-container/modal-container.component.mjs +12 -12
  202. package/esm2020/modal/modal-footer/modal-footer.component.mjs +3 -3
  203. package/esm2020/modal/modal-header/modal-header.component.mjs +3 -3
  204. package/esm2020/modal/modal.module.mjs +4 -4
  205. package/esm2020/modal/modal.service.mjs +16 -16
  206. package/esm2020/modal/route-modal/route-modal.component.mjs +3 -3
  207. package/esm2020/popover/popover/popover.component.mjs +18 -18
  208. package/esm2020/popover/popover.directive.mjs +32 -32
  209. package/esm2020/popover/popover.module.mjs +4 -4
  210. package/esm2020/progress/progress-circle/progress-circle.component.mjs +9 -9
  211. package/esm2020/progress/progress.module.mjs +4 -4
  212. package/esm2020/scrollbar/overlay-scrollbar.directive.mjs +10 -10
  213. package/esm2020/scrollbar/overlay-scrollbars.service.mjs +3 -3
  214. package/esm2020/scrollbar/scrollbar.module.mjs +4 -4
  215. package/esm2020/services/asset-loader.service.mjs +3 -3
  216. package/esm2020/services/font-loader.service.mjs +3 -3
  217. package/esm2020/services/router-helpers.service.mjs +3 -3
  218. package/esm2020/shared/components/password-input-reveal/password-input-reveal.component.mjs +3 -3
  219. package/esm2020/shared/directives/auto-focus.directive.mjs +3 -3
  220. package/esm2020/shared/directives/click-outside.directive.mjs +9 -9
  221. package/esm2020/shared/directives/disable-control.directive.mjs +7 -7
  222. package/esm2020/shared/directives/elem-resized.directive.mjs +3 -3
  223. package/esm2020/shared/directives/hover-class-toggle.directive.mjs +10 -10
  224. package/esm2020/shared/directives/hover-class.directive.mjs +9 -9
  225. package/esm2020/shared/directives/ng-select-extra.directive.mjs +26 -26
  226. package/esm2020/shared/directives/ngx-quill-extra.directive.mjs +10 -10
  227. package/esm2020/shared/pipes/mask-chars.pipe.mjs +3 -3
  228. package/esm2020/shared/pipes/truncate.pipe.mjs +3 -3
  229. package/esm2020/shared/shared.module.mjs +4 -4
  230. package/esm2020/storage/local-storage.service.mjs +3 -3
  231. package/esm2020/story-helpers/initial-route.service.mjs +3 -3
  232. package/esm2020/story-helpers/story-empty-with-route.component.mjs +3 -3
  233. package/esm2020/story-helpers/story-empty.component.mjs +3 -3
  234. package/esm2020/story-helpers/story-helper-components.module.mjs +4 -4
  235. package/esm2020/story-helpers/story-initial-route.mjs +4 -4
  236. package/esm2020/story-helpers/story-modal-container.component.mjs +6 -6
  237. package/esm2020/story-helpers/story-toastr.service.mjs +3 -3
  238. package/esm2020/tabbed/directives/tabbed-tab-content.directive.mjs +3 -3
  239. package/esm2020/tabbed/directives/tabbed-tab.directive.mjs +3 -3
  240. package/esm2020/tabbed/tabbed-content/tabbed-content.component.mjs +3 -3
  241. package/esm2020/tabbed/tabbed-item/tabbed-item.component.mjs +3 -3
  242. package/esm2020/tabbed/tabbed.component.mjs +13 -13
  243. package/esm2020/tabbed/tabbed.module.mjs +4 -4
  244. package/esm2020/tabbed/tabbed.service.mjs +3 -3
  245. package/esm2020/table/table/table.component.mjs +11 -11
  246. package/esm2020/table/table.module.mjs +4 -4
  247. package/esm2020/table-cell-type/services/table-cell-types-helpers.service.mjs +3 -3
  248. package/esm2020/table-cell-type/table-cell-type-selector.component.mjs +3 -3
  249. package/esm2020/table-cell-type/table-cell-type.module.mjs +4 -4
  250. package/esm2020/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.mjs +3 -3
  251. package/esm2020/table-cell-types/table-cell-type-date/table-cell-type-date.component.mjs +3 -3
  252. package/esm2020/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.mjs +3 -3
  253. package/esm2020/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.mjs +31 -31
  254. package/esm2020/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.mjs +3 -3
  255. package/esm2020/table-cell-types/table-cell-type-phone/table-cell-type-phone.component.mjs +6 -6
  256. package/esm2020/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle.component.mjs +3 -3
  257. package/esm2020/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon.component.mjs +3 -3
  258. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +23 -23
  259. package/esm2020/table-cell-types/table-cell-types.module.mjs +4 -4
  260. package/esm2020/tel-input/phone-number.pipe.mjs +3 -3
  261. package/esm2020/tel-input/tel-input/tel-input.component.mjs +34 -34
  262. package/esm2020/tel-input/tel-input.directive.mjs +18 -18
  263. package/esm2020/tel-input/tel-input.module.mjs +4 -4
  264. package/esm2020/tiled-select/components/tiled-select/tiled-select.component.mjs +20 -20
  265. package/esm2020/tiled-select/components/tiled-select-tile/tiled-select-tile.component.mjs +6 -6
  266. package/esm2020/tiled-select/components/tiled-select-tile-icon/tiled-select-tile-icon.component.mjs +10 -10
  267. package/esm2020/tiled-select/directives/tiled-select-tile-icon-tpl.directive.mjs +3 -3
  268. package/esm2020/tiled-select/directives/tiled-select-tile-label-tpl.directive.mjs +3 -3
  269. package/esm2020/tiled-select/directives/tiled-select-tile-overlay.directive.mjs +3 -3
  270. package/esm2020/tiled-select/tiled-select.module.mjs +4 -4
  271. package/esm2020/toggle-edit/toggle-edit-actions-container/toggle-edit-actions-container.component.mjs +3 -3
  272. package/esm2020/toggle-edit/toggle-edit-display-tpl.directive.mjs +3 -3
  273. package/esm2020/toggle-edit/toggle-edit-keyboard-listener.service.mjs +3 -3
  274. package/esm2020/toggle-edit/toggle-edit.component.mjs +16 -16
  275. package/esm2020/toggle-edit/toggle-edit.module.mjs +4 -4
  276. package/esm2020/toggle-group/toggle-group-option.directive.mjs +12 -12
  277. package/esm2020/toggle-group/toggle-group.directive.mjs +3 -3
  278. package/esm2020/toggle-group/toggle-group.module.mjs +4 -4
  279. package/esm2020/unsaved-changes-dialog/unsaved-changes-can-deactivate.mjs +3 -3
  280. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +3 -3
  281. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.guard.mjs +3 -3
  282. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +4 -4
  283. package/esm2020/viewers/html-template-viewer/html-template-viewer.component.mjs +37 -37
  284. package/esm2020/viewers/html-template-viewer/html-template-viewer.module.mjs +4 -4
  285. package/esm2020/viewers/pdf-viewer/pdf-page/pdf-page.component.mjs +10 -10
  286. package/esm2020/viewers/pdf-viewer/pdf-renderer.service.mjs +3 -3
  287. package/esm2020/viewers/pdf-viewer/pdf-viewer.component.mjs +38 -38
  288. package/esm2020/viewers/pdf-viewer/pdf-viewer.module.mjs +4 -4
  289. package/esm2020/widget/directives/widget-drag-handle.directive.mjs +12 -12
  290. package/esm2020/widget/directives/widget-icon-tpl.directive.mjs +3 -3
  291. package/esm2020/widget/directives/widget-title-tpl.directive.mjs +3 -3
  292. package/esm2020/widget/widget/widget.component.mjs +3 -3
  293. package/esm2020/widget/widget-content-components/widget-button-group/widget-button-group.component.mjs +3 -3
  294. package/esm2020/widget/widget-content-components/widget-button-group/widget-button-group.module.mjs +4 -4
  295. package/esm2020/widget/widget-content-components/widget-content-header/widget-content-header.component.mjs +3 -3
  296. package/esm2020/widget/widget-content-components/widget-content-header/widget-content-header.module.mjs +4 -4
  297. package/esm2020/widget/widget-content-components/widget-description/widget-description.component.mjs +3 -3
  298. package/esm2020/widget/widget-content-components/widget-description/widget-description.module.mjs +4 -4
  299. package/esm2020/widget/widget-content-components/widget-empty-label/widget-empty-label.component.mjs +7 -7
  300. package/esm2020/widget/widget-content-components/widget-empty-label/widget-empty-label.module.mjs +4 -4
  301. package/esm2020/widget/widget-content-components/widget-footer-link/widget-footer-link.component.mjs +3 -3
  302. package/esm2020/widget/widget-content-components/widget-footer-link/widget-footer-link.module.mjs +4 -4
  303. package/esm2020/widget/widget-content-components/widget-footer-text/widget-footer-text.component.mjs +3 -3
  304. package/esm2020/widget/widget-content-components/widget-footer-text/widget-footer-text.module.mjs +4 -4
  305. package/esm2020/widget/widget-content-components/widget-header-badge/widget-header-badge.component.mjs +3 -3
  306. package/esm2020/widget/widget-content-components/widget-header-badge/widget-header-badge.module.mjs +4 -4
  307. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item-icon-tpl.directive.mjs +3 -3
  308. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item.component.mjs +15 -15
  309. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group.component.mjs +3 -3
  310. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group.module.mjs +4 -4
  311. package/esm2020/widget/widget-content-components/widget-table/widget-table.component.mjs +3 -3
  312. package/esm2020/widget/widget-content-components/widget-table/widget-table.module.mjs +4 -4
  313. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-footer/widget-tile-footer.component.mjs +3 -3
  314. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-footer-item/widget-tile-footer-item.component.mjs +8 -8
  315. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-group/widget-tile-group.component.mjs +3 -3
  316. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-secondary-icon.directive.mjs +3 -3
  317. package/esm2020/widget/widget-content-components/widget-tile/widget-tile.component.mjs +16 -16
  318. package/esm2020/widget/widget-content-components/widget-tile/widget-tile.module.mjs +4 -4
  319. package/esm2020/widget/widget-content-components/widget-tile-list/widget-tile-list.component.mjs +3 -3
  320. package/esm2020/widget/widget-content-components/widget-tile-list/widget-tile-list.module.mjs +4 -4
  321. package/esm2020/widget/widget-footer/widget-footer.component.mjs +3 -3
  322. package/esm2020/widget/widget-registry.service.mjs +3 -3
  323. package/esm2020/widget/widget.module.mjs +4 -4
  324. package/fesm2015/theseam-ui-common-asset-reader.mjs +18 -18
  325. package/fesm2015/theseam-ui-common-asset-reader.mjs.map +1 -1
  326. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +10 -10
  327. package/fesm2015/theseam-ui-common-buttons.mjs +26 -26
  328. package/fesm2015/theseam-ui-common-buttons.mjs.map +1 -1
  329. package/fesm2015/theseam-ui-common-card.mjs +19 -19
  330. package/fesm2015/theseam-ui-common-checkbox.mjs +46 -46
  331. package/fesm2015/theseam-ui-common-checkbox.mjs.map +1 -1
  332. package/fesm2015/theseam-ui-common-confirm-dialog.mjs +18 -18
  333. package/fesm2015/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  334. package/fesm2015/theseam-ui-common-core.mjs +18 -18
  335. package/fesm2015/theseam-ui-common-core.mjs.map +1 -1
  336. package/fesm2015/theseam-ui-common-data-exporter.mjs +10 -10
  337. package/fesm2015/theseam-ui-common-data-filters.mjs +32 -32
  338. package/fesm2015/theseam-ui-common-data-filters.mjs.map +1 -1
  339. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +46 -46
  340. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  341. package/fesm2015/theseam-ui-common-datatable.mjs +208 -208
  342. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  343. package/fesm2015/theseam-ui-common-dynamic-component-loader.mjs +7 -7
  344. package/fesm2015/theseam-ui-common-dynamic.mjs +21 -21
  345. package/fesm2015/theseam-ui-common-footer-bar.mjs +7 -7
  346. package/fesm2015/theseam-ui-common-form-field-error.mjs +104 -104
  347. package/fesm2015/theseam-ui-common-form-field-error.mjs.map +1 -1
  348. package/fesm2015/theseam-ui-common-form-field.mjs +107 -107
  349. package/fesm2015/theseam-ui-common-form-field.mjs.map +1 -1
  350. package/fesm2015/theseam-ui-common-framework.mjs +196 -196
  351. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  352. package/fesm2015/theseam-ui-common-google-maps.mjs +202 -80
  353. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  354. package/fesm2015/theseam-ui-common-graphql.mjs +7 -7
  355. package/fesm2015/theseam-ui-common-graphql.mjs.map +1 -1
  356. package/fesm2015/theseam-ui-common-icon.mjs +33 -33
  357. package/fesm2015/theseam-ui-common-icon.mjs.map +1 -1
  358. package/fesm2015/theseam-ui-common-layout.mjs +7 -7
  359. package/fesm2015/theseam-ui-common-loading.mjs +13 -13
  360. package/fesm2015/theseam-ui-common-loading.mjs.map +1 -1
  361. package/fesm2015/theseam-ui-common-menu.mjs +79 -79
  362. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  363. package/fesm2015/theseam-ui-common-modal.mjs +85 -85
  364. package/fesm2015/theseam-ui-common-modal.mjs.map +1 -1
  365. package/fesm2015/theseam-ui-common-popover.mjs +52 -52
  366. package/fesm2015/theseam-ui-common-popover.mjs.map +1 -1
  367. package/fesm2015/theseam-ui-common-progress.mjs +12 -12
  368. package/fesm2015/theseam-ui-common-progress.mjs.map +1 -1
  369. package/fesm2015/theseam-ui-common-scrollbar.mjs +16 -16
  370. package/fesm2015/theseam-ui-common-scrollbar.mjs.map +1 -1
  371. package/fesm2015/theseam-ui-common-services.mjs +9 -9
  372. package/fesm2015/theseam-ui-common-shared.mjs +84 -84
  373. package/fesm2015/theseam-ui-common-shared.mjs.map +1 -1
  374. package/fesm2015/theseam-ui-common-storage.mjs +3 -3
  375. package/fesm2015/theseam-ui-common-story-helpers.mjs +25 -25
  376. package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
  377. package/fesm2015/theseam-ui-common-tabbed.mjs +31 -31
  378. package/fesm2015/theseam-ui-common-tabbed.mjs.map +1 -1
  379. package/fesm2015/theseam-ui-common-table-cell-type.mjs +10 -10
  380. package/fesm2015/theseam-ui-common-table-cell-types.mjs +80 -80
  381. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  382. package/fesm2015/theseam-ui-common-table.mjs +14 -14
  383. package/fesm2015/theseam-ui-common-table.mjs.map +1 -1
  384. package/fesm2015/theseam-ui-common-tel-input.mjs +59 -59
  385. package/fesm2015/theseam-ui-common-tel-input.mjs.map +1 -1
  386. package/fesm2015/theseam-ui-common-tiled-select.mjs +46 -46
  387. package/fesm2015/theseam-ui-common-tiled-select.mjs.map +1 -1
  388. package/fesm2015/theseam-ui-common-toggle-edit.mjs +28 -28
  389. package/fesm2015/theseam-ui-common-toggle-edit.mjs.map +1 -1
  390. package/fesm2015/theseam-ui-common-toggle-group.mjs +18 -18
  391. package/fesm2015/theseam-ui-common-toggle-group.mjs.map +1 -1
  392. package/fesm2015/theseam-ui-common-unsaved-changes-dialog.mjs +13 -13
  393. package/fesm2015/theseam-ui-common-viewers.mjs +93 -93
  394. package/fesm2015/theseam-ui-common-viewers.mjs.map +1 -1
  395. package/fesm2015/theseam-ui-common-widget.mjs +156 -156
  396. package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
  397. package/fesm2020/theseam-ui-common-asset-reader.mjs +18 -18
  398. package/fesm2020/theseam-ui-common-asset-reader.mjs.map +1 -1
  399. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +10 -10
  400. package/fesm2020/theseam-ui-common-buttons.mjs +26 -26
  401. package/fesm2020/theseam-ui-common-buttons.mjs.map +1 -1
  402. package/fesm2020/theseam-ui-common-card.mjs +19 -19
  403. package/fesm2020/theseam-ui-common-checkbox.mjs +46 -46
  404. package/fesm2020/theseam-ui-common-checkbox.mjs.map +1 -1
  405. package/fesm2020/theseam-ui-common-confirm-dialog.mjs +18 -18
  406. package/fesm2020/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  407. package/fesm2020/theseam-ui-common-core.mjs +18 -18
  408. package/fesm2020/theseam-ui-common-core.mjs.map +1 -1
  409. package/fesm2020/theseam-ui-common-data-exporter.mjs +10 -10
  410. package/fesm2020/theseam-ui-common-data-filters.mjs +32 -32
  411. package/fesm2020/theseam-ui-common-data-filters.mjs.map +1 -1
  412. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +46 -46
  413. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  414. package/fesm2020/theseam-ui-common-datatable.mjs +208 -208
  415. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  416. package/fesm2020/theseam-ui-common-dynamic-component-loader.mjs +7 -7
  417. package/fesm2020/theseam-ui-common-dynamic.mjs +21 -21
  418. package/fesm2020/theseam-ui-common-footer-bar.mjs +7 -7
  419. package/fesm2020/theseam-ui-common-form-field-error.mjs +104 -104
  420. package/fesm2020/theseam-ui-common-form-field-error.mjs.map +1 -1
  421. package/fesm2020/theseam-ui-common-form-field.mjs +107 -107
  422. package/fesm2020/theseam-ui-common-form-field.mjs.map +1 -1
  423. package/fesm2020/theseam-ui-common-framework.mjs +196 -196
  424. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  425. package/fesm2020/theseam-ui-common-google-maps.mjs +200 -80
  426. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  427. package/fesm2020/theseam-ui-common-graphql.mjs +7 -7
  428. package/fesm2020/theseam-ui-common-graphql.mjs.map +1 -1
  429. package/fesm2020/theseam-ui-common-icon.mjs +33 -33
  430. package/fesm2020/theseam-ui-common-icon.mjs.map +1 -1
  431. package/fesm2020/theseam-ui-common-layout.mjs +7 -7
  432. package/fesm2020/theseam-ui-common-loading.mjs +13 -13
  433. package/fesm2020/theseam-ui-common-loading.mjs.map +1 -1
  434. package/fesm2020/theseam-ui-common-menu.mjs +77 -77
  435. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  436. package/fesm2020/theseam-ui-common-modal.mjs +85 -85
  437. package/fesm2020/theseam-ui-common-modal.mjs.map +1 -1
  438. package/fesm2020/theseam-ui-common-popover.mjs +52 -52
  439. package/fesm2020/theseam-ui-common-popover.mjs.map +1 -1
  440. package/fesm2020/theseam-ui-common-progress.mjs +12 -12
  441. package/fesm2020/theseam-ui-common-progress.mjs.map +1 -1
  442. package/fesm2020/theseam-ui-common-scrollbar.mjs +16 -16
  443. package/fesm2020/theseam-ui-common-scrollbar.mjs.map +1 -1
  444. package/fesm2020/theseam-ui-common-services.mjs +9 -9
  445. package/fesm2020/theseam-ui-common-shared.mjs +84 -84
  446. package/fesm2020/theseam-ui-common-shared.mjs.map +1 -1
  447. package/fesm2020/theseam-ui-common-storage.mjs +3 -3
  448. package/fesm2020/theseam-ui-common-story-helpers.mjs +25 -25
  449. package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
  450. package/fesm2020/theseam-ui-common-tabbed.mjs +31 -31
  451. package/fesm2020/theseam-ui-common-tabbed.mjs.map +1 -1
  452. package/fesm2020/theseam-ui-common-table-cell-type.mjs +10 -10
  453. package/fesm2020/theseam-ui-common-table-cell-types.mjs +80 -80
  454. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  455. package/fesm2020/theseam-ui-common-table.mjs +14 -14
  456. package/fesm2020/theseam-ui-common-table.mjs.map +1 -1
  457. package/fesm2020/theseam-ui-common-tel-input.mjs +57 -57
  458. package/fesm2020/theseam-ui-common-tel-input.mjs.map +1 -1
  459. package/fesm2020/theseam-ui-common-tiled-select.mjs +46 -46
  460. package/fesm2020/theseam-ui-common-tiled-select.mjs.map +1 -1
  461. package/fesm2020/theseam-ui-common-toggle-edit.mjs +28 -28
  462. package/fesm2020/theseam-ui-common-toggle-edit.mjs.map +1 -1
  463. package/fesm2020/theseam-ui-common-toggle-group.mjs +18 -18
  464. package/fesm2020/theseam-ui-common-toggle-group.mjs.map +1 -1
  465. package/fesm2020/theseam-ui-common-unsaved-changes-dialog.mjs +13 -13
  466. package/fesm2020/theseam-ui-common-viewers.mjs +93 -93
  467. package/fesm2020/theseam-ui-common-viewers.mjs.map +1 -1
  468. package/fesm2020/theseam-ui-common-widget.mjs +156 -156
  469. package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
  470. package/framework/base-layout/base-layout-action.d.ts +1 -1
  471. package/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.d.ts +1 -1
  472. package/framework/side-nav/side-nav.models.d.ts +1 -1
  473. package/google-maps/google-maps-api-loader/lazy-google-maps-api-loader.d.ts +73 -0
  474. package/google-maps/google-maps-api-loader/noop-google-maps-api-loader.d.ts +13 -0
  475. package/google-maps/map-value-manager.service.d.ts +1 -1
  476. package/google-maps/public-api.d.ts +3 -0
  477. package/graphql/datatable/datatable-graphql-query-ref.d.ts +2 -2
  478. package/graphql/datatable/datatable-graphql.service.d.ts +1 -1
  479. package/graphql/datatable/datatable-helpers.d.ts +2 -2
  480. package/graphql/datatable/map-filter-states.d.ts +2 -2
  481. package/graphql/datatable/map-page-info.d.ts +1 -1
  482. package/graphql/datatable/mapper-context.d.ts +1 -1
  483. package/graphql/models/gql-datatable-accessor.d.ts +1 -1
  484. package/graphql/models/hint-transformer.d.ts +1 -1
  485. package/icon/icon/icon.component.d.ts +1 -1
  486. package/icon/icon.d.ts +1 -1
  487. package/layout/breakpoint-aliases.d.ts +1 -1
  488. package/loading/loading.models.d.ts +1 -1
  489. package/modal/modal-config.d.ts +1 -1
  490. package/models/component-type.d.ts +1 -1
  491. package/models/size-prefixes.d.ts +1 -1
  492. package/models/size-types.d.ts +1 -1
  493. package/models/theme-prefixes.d.ts +1 -1
  494. package/models/theme-types.d.ts +2 -2
  495. package/package.json +1 -1
  496. package/scrollbar/overlay-scrollbars-config-model.d.ts +1 -1
  497. package/services/font-loader.service.d.ts +1 -1
  498. package/table/table/table.component.d.ts +1 -1
  499. package/table-cell-type/table-cell-type-models.d.ts +3 -3
  500. package/table-cell-type/table-cell-type-name.d.ts +1 -1
  501. package/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.d.ts +1 -1
  502. package/table-cell-types/table-cell-type-currency/table-cell-type-currency.d.ts +1 -1
  503. package/table-cell-types/table-cell-type-date/table-cell-type-date.d.ts +1 -1
  504. package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.d.ts +1 -1
  505. package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.d.ts +1 -1
  506. package/table-cell-types/table-cell-type-icon/table-cell-type-icon-config.d.ts +1 -1
  507. package/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.d.ts +1 -1
  508. package/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.d.ts +1 -1
  509. package/table-cell-types/table-cell-type-integer/table-cell-type-integer.d.ts +1 -1
  510. package/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle-config.d.ts +1 -1
  511. package/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon-config.d.ts +1 -1
  512. package/table-cell-types/table-cell-type-string/table-cell-type-string-config.d.ts +1 -1
  513. package/table-cell-types/table-cell-type-string/table-cell-type-string.component.d.ts +1 -1
  514. package/tel-input/utils/coerce-phone-number-format.d.ts +1 -1
  515. package/tiled-select/components/tiled-select/tiled-select.component.d.ts +1 -1
  516. package/tiled-select/tiled-select.models.d.ts +2 -2
  517. package/utils/polling-ticker.d.ts +1 -1
  518. package/utils/subscriber-count.d.ts +1 -1
  519. package/widget/directives/widget-drag-handle.directive.d.ts +1 -1
@@ -10,45 +10,6 @@ import * as i2 from "@ng-select/ng-select";
10
10
  // NOTE: Partially based on mat-input: https://github.com/angular/material2/blob/master/src/lib/input/input.ts
11
11
  let nextUniqueId = 0;
12
12
  export class InputDirective {
13
- constructor(_elementRef, ngControl, _parentForm, _parentFormGroup,
14
- // 3rd party support
15
- _ngSelect) {
16
- this._elementRef = _elementRef;
17
- this.ngControl = ngControl;
18
- this._parentForm = _parentForm;
19
- this._parentFormGroup = _parentFormGroup;
20
- this._ngSelect = _ngSelect;
21
- this._uid = `lib-input-${nextUniqueId++}`;
22
- // TODO: Remove this being added to all seamInput elements or break this
23
- // directive up. Some elements in our app already have worked around this
24
- // class being there, so some refactoring will be required before removal.
25
- this._isFormControl = true;
26
- this.seamInputSize = 'normal';
27
- this._type = 'text';
28
- /**
29
- * Implemented as part of MatFormFieldControl.
30
- * @docs-private
31
- */
32
- this.required = false;
33
- this._disabled = false;
34
- this.focused = false;
35
- this.stateChanges = new Subject();
36
- // @Input()
37
- // get value(): string { return this._inputValueAccessor.value; }
38
- // set value(value: string) {
39
- // if (value !== this.value) {
40
- // this._inputValueAccessor.value = value;
41
- // this.stateChanges.next();
42
- // }
43
- // }
44
- /** Whether the element is readonly. */
45
- this.readonly = false;
46
- // Force setter to be called in case id was not specified.
47
- this.id = this.id;
48
- if (!this._shouldHaveFormControlCssClass()) {
49
- this._isFormControl = false;
50
- }
51
- }
52
13
  get _isFormControlSmall() {
53
14
  return this._isFormControl && this.seamInputSize === 'sm';
54
15
  }
@@ -90,6 +51,45 @@ export class InputDirective {
90
51
  this.stateChanges.next();
91
52
  }
92
53
  }
54
+ constructor(_elementRef, ngControl, _parentForm, _parentFormGroup,
55
+ // 3rd party support
56
+ _ngSelect) {
57
+ this._elementRef = _elementRef;
58
+ this.ngControl = ngControl;
59
+ this._parentForm = _parentForm;
60
+ this._parentFormGroup = _parentFormGroup;
61
+ this._ngSelect = _ngSelect;
62
+ this._uid = `lib-input-${nextUniqueId++}`;
63
+ // TODO: Remove this being added to all seamInput elements or break this
64
+ // directive up. Some elements in our app already have worked around this
65
+ // class being there, so some refactoring will be required before removal.
66
+ this._isFormControl = true;
67
+ this.seamInputSize = 'normal';
68
+ this._type = 'text';
69
+ /**
70
+ * Implemented as part of MatFormFieldControl.
71
+ * @docs-private
72
+ */
73
+ this.required = false;
74
+ this._disabled = false;
75
+ this.focused = false;
76
+ this.stateChanges = new Subject();
77
+ // @Input()
78
+ // get value(): string { return this._inputValueAccessor.value; }
79
+ // set value(value: string) {
80
+ // if (value !== this.value) {
81
+ // this._inputValueAccessor.value = value;
82
+ // this.stateChanges.next();
83
+ // }
84
+ // }
85
+ /** Whether the element is readonly. */
86
+ this.readonly = false;
87
+ // Force setter to be called in case id was not specified.
88
+ this.id = this.id;
89
+ if (!this._shouldHaveFormControlCssClass()) {
90
+ this._isFormControl = false;
91
+ }
92
+ }
93
93
  ngDoCheck() {
94
94
  if (this._isNgSelect()) {
95
95
  this._ngSelect.labelForId = this.id;
@@ -157,15 +157,15 @@ export class InputDirective {
157
157
  }
158
158
  }
159
159
  }
160
- InputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: InputDirective, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i2.NgSelectComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
161
- InputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.4", type: InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: { seamInputSize: "seamInputSize", id: "id", type: "type", placeholder: "placeholder", required: "required", disabled: "disabled", readonly: "readonly" }, host: { properties: { "class.form-control": "this._isFormControl", "class.form-control-sm": "this._isFormControlSmall", "class.is-invalid": "this._isInvalid", "attr.id": "this._attrId", "attr.placeholder": "this._attrPlaceholder", "attr.aria-describedby": "this.ariaDescribedBy" } }, exportAs: ["seamInput"], ngImport: i0 });
160
+ InputDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: InputDirective, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i2.NgSelectComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
161
+ InputDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: { seamInputSize: "seamInputSize", id: "id", type: "type", placeholder: "placeholder", required: "required", disabled: "disabled", readonly: "readonly" }, host: { properties: { "class.form-control": "this._isFormControl", "class.form-control-sm": "this._isFormControlSmall", "class.is-invalid": "this._isInvalid", "attr.id": "this._attrId", "attr.placeholder": "this._attrPlaceholder", "attr.aria-describedby": "this.ariaDescribedBy" } }, exportAs: ["seamInput"], ngImport: i0 });
162
162
  __decorate([
163
163
  InputBoolean()
164
164
  ], InputDirective.prototype, "required", void 0);
165
165
  __decorate([
166
166
  InputBoolean()
167
167
  ], InputDirective.prototype, "readonly", void 0);
168
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: InputDirective, decorators: [{
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: InputDirective, decorators: [{
169
169
  type: Directive,
170
170
  args: [{
171
171
  // TODO: Consider removing restriction and instead adding a dev warning. A few
@@ -216,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
216
216
  }], readonly: [{
217
217
  type: Input
218
218
  }] } });
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2Zvcm0tZmllbGQvaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBdUIsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRWxHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFJOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTs7OztBQUUxRCw4R0FBOEc7QUFFOUcsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFBO0FBUXBCLE1BQU0sT0FBTyxjQUFjO0lBZ0d6QixZQUNTLFdBQW1GLEVBQy9ELFNBQW9CLEVBQzNCLFdBQW1CLEVBQ25CLGdCQUFvQztJQUN4RCxvQkFBb0I7SUFDQSxTQUE0QjtRQUx6QyxnQkFBVyxHQUFYLFdBQVcsQ0FBd0U7UUFDL0QsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBRXBDLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBakd4QyxTQUFJLEdBQUcsYUFBYSxZQUFZLEVBQUUsRUFBRSxDQUFBO1FBRTlDLHdFQUF3RTtRQUN4RSx5RUFBeUU7UUFDekUsMEVBQTBFO1FBQ3ZDLG1CQUFjLEdBQUcsSUFBSSxDQUFBO1FBWS9DLGtCQUFhLEdBQW9CLFFBQVEsQ0FBQTtRQXFCeEMsVUFBSyxHQUE4QixNQUFNLENBQUE7UUFRbkQ7OztXQUdHO1FBQ3NCLGFBQVEsR0FBWSxLQUFLLENBQUE7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Y0FBYztrQkFOMUIsU0FBUzttQkFBQztvQkFDVCw4RUFBOEU7b0JBQzlFLHVEQUF1RDtvQkFDdkQsUUFBUSxFQUFFLHdMQUF3TDtvQkFDbE0sUUFBUSxFQUFFLFdBQVc7aUJBQ3RCOzswQkFtR0ksUUFBUTs7MEJBQUksSUFBSTs7MEJBQ2hCLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUVSLFFBQVE7NENBNUZ3QixjQUFjO3NCQUFoRCxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDUyxtQkFBbUI7c0JBQTVELFdBQVc7dUJBQUMsdUJBQXVCO2dCQUdDLFVBQVU7c0JBQTlDLFdBQVc7dUJBQUMsa0JBQWtCO2dCQUlILE9BQU87c0JBQWxDLFdBQVc7dUJBQUMsU0FBUztnQkFDZSxnQkFBZ0I7c0JBQXBELFdBQVc7dUJBQUMsa0JBQWtCO2dCQUNPLGVBQWU7c0JBQXBELFdBQVc7dUJBQUMsdUJBQXVCO2dCQUUzQixhQUFhO3NCQUFyQixLQUFLO2dCQUdGLEVBQUU7c0JBREwsS0FBSztnQkFPRixJQUFJO3NCQURQLEtBQUs7Z0JBbUJHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTW1CLFFBQVE7c0JBQWhDLEtBQUs7Z0JBT0YsUUFBUTtzQkFEWCxLQUFLO2dCQWlDbUIsUUFBUTtzQkFBaEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBEb0NoZWNrLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9wdGlvbmFsLCBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBOZ1NlbGVjdENvbXBvbmVudCB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0J1xuXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vY29yZSdcbmltcG9ydCB7IHRvZ2dsZUF0dHJpYnV0ZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcblxuLy8gTk9URTogUGFydGlhbGx5IGJhc2VkIG9uIG1hdC1pbnB1dDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvbWF0ZXJpYWwyL2Jsb2IvbWFzdGVyL3NyYy9saWIvaW5wdXQvaW5wdXQudHNcblxubGV0IG5leHRVbmlxdWVJZCA9IDBcblxuQERpcmVjdGl2ZSh7XG4gIC8vIFRPRE86IENvbnNpZGVyIHJlbW92aW5nIHJlc3RyaWN0aW9uIGFuZCBpbnN0ZWFkIGFkZGluZyBhIGRldiB3YXJuaW5nLiBBIGZld1xuICAvLyBpbnB1dHMgaW4gdGhlIGFwcCBuZWVkIHRvIGJlIGNoYW5nZWQgZm9yIHRoaXMgZmlyc3QuXG4gIHNlbGVjdG9yOiAnaW5wdXRbc2VhbUlucHV0XSwgdGV4dGFyZWFbc2VhbUlucHV0XSwgbmctc2VsZWN0W3NlYW1JbnB1dF0sIHNlYW0tY2hlY2tib3hbc2VhbUlucHV0XSBbbmdiUmFkaW9Hcm91cF0sIHNlYW0tdGVsLWlucHV0W3NlYW1JbnB1dF0sIHF1aWxsLWVkaXRvcltzZWFtSW5wdXRdLCBzZWFtLWdvb2dsZS1tYXBzW3NlYW1JbnB1dF0nLFxuICBleHBvcnRBczogJ3NlYW1JbnB1dCcsXG59KVxuZXhwb3J0IGNsYXNzIElucHV0RGlyZWN0aXZlIGltcGxlbWVudHMgRG9DaGVjayB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yZXF1aXJlZDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yZWFkb25seTogQm9vbGVhbklucHV0XG5cbiAgcHJvdGVjdGVkIF91aWQgPSBgbGliLWlucHV0LSR7bmV4dFVuaXF1ZUlkKyt9YFxuXG4gIC8vIFRPRE86IFJlbW92ZSB0aGlzIGJlaW5nIGFkZGVkIHRvIGFsbCBzZWFtSW5wdXQgZWxlbWVudHMgb3IgYnJlYWsgdGhpc1xuICAvLyBkaXJlY3RpdmUgdXAuIFNvbWUgZWxlbWVudHMgaW4gb3VyIGFwcCBhbHJlYWR5IGhhdmUgd29ya2VkIGFyb3VuZCB0aGlzXG4gIC8vIGNsYXNzIGJlaW5nIHRoZXJlLCBzbyBzb21lIHJlZmFjdG9yaW5nIHdpbGwgYmUgcmVxdWlyZWQgYmVmb3JlIHJlbW92YWwuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZm9ybS1jb250cm9sJykgX2lzRm9ybUNvbnRyb2wgPSB0cnVlXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZm9ybS1jb250cm9sLXNtJykgZ2V0IF9pc0Zvcm1Db250cm9sU21hbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzRm9ybUNvbnRyb2wgJiYgdGhpcy5zZWFtSW5wdXRTaXplID09PSAnc20nXG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1pbnZhbGlkJykgZ2V0IF9pc0ludmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmludmFsaWQgJiYgKHRoaXMubmdDb250cm9sLmRpcnR5IHx8IHRoaXMubmdDb250cm9sLnRvdWNoZWQpXG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKSBnZXQgX2F0dHJJZCgpIHsgcmV0dXJuIHRoaXMuX2lzTmdTZWxlY3QoKSA/IHVuZGVmaW5lZCA6IHRoaXMuaWQgfVxuICBASG9zdEJpbmRpbmcoJ2F0dHIucGxhY2Vob2xkZXInKSBnZXQgX2F0dHJQbGFjZWhvbGRlcigpIHsgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXIgfVxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRieScpIGFyaWFEZXNjcmliZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KCkgc2VhbUlucHV0U2l6ZTogJ3NtJyB8ICdub3JtYWwnID0gJ25vcm1hbCdcblxuICBASW5wdXQoKVxuICBnZXQgaWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCB7IHJldHVybiB0aGlzLl9pZCB9XG4gIHNldCBpZCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkgeyB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMuX3VpZCB9XG4gIHByb3RlY3RlZCBfaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICAvKiogSW5wdXQgdHlwZSBvZiB0aGUgZWxlbWVudC4gKi9cbiAgQElucHV0KClcbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCB7IHJldHVybiB0aGlzLl90eXBlIH1cbiAgc2V0IHR5cGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICB0aGlzLl90eXBlID0gdmFsdWUgfHwgJ3RleHQnXG4gICAgLy8gdGhpcy5fdmFsaWRhdGVUeXBlKClcblxuICAgIC8vIFdoZW4gdXNpbmcgQW5ndWxhciBpbnB1dHMsIGRldmVsb3BlcnMgYXJlIG5vIGxvbmdlciBhYmxlIHRvIHNldCB0aGUgcHJvcGVydGllcyBvbiB0aGUgbmF0aXZlXG4gICAgLy8gaW5wdXQgZWxlbWVudC4gVG8gZW5zdXJlIHRoYXQgYmluZGluZ3MgZm9yIGB0eXBlYCB3b3JrLCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHNldHRlclxuICAgIC8vIHdpdGggdGhlIG5hdGl2ZSBwcm9wZXJ0eS4gVGV4dGFyZWEgZWxlbWVudHMgZG9uJ3Qgc3VwcG9ydCB0aGUgdHlwZSBwcm9wZXJ0eSBvciBhdHRyaWJ1dGUuXG4gICAgaWYgKCghdGhpcy5faXNUZXh0YXJlYSgpICYmICF0aGlzLl9pc05nU2VsZWN0KCkpIC8qICYmIGdldFN1cHBvcnRlZElucHV0VHlwZXMoKS5oYXModGhpcy5fdHlwZSkgKi8pIHtcbiAgICAgICh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudCkudHlwZSA9IHRoaXMuX3R5cGVcbiAgICB9XG4gIH1cbiAgcHJvdGVjdGVkIF90eXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsID0gJ3RleHQnXG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNYXRGb3JtRmllbGRDb250cm9sLlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hdEZvcm1GaWVsZENvbnRyb2wuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWRcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSlcblxuICAgIC8vIEJyb3dzZXJzIG1heSBub3QgZmlyZSB0aGUgYmx1ciBldmVudCBpZiB0aGUgaW5wdXQgaXMgZGlzYWJsZWQgdG9vIHF1aWNrbHkuXG4gICAgLy8gUmVzZXQgZnJvbSBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGRvZXNuJ3QgYmVjb21lIHN0dWNrLlxuICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlXG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KClcbiAgICB9XG4gIH1cbiAgcHJvdGVjdGVkIF9kaXNhYmxlZCA9IGZhbHNlXG5cbiAgZm9jdXNlZCA9IGZhbHNlXG5cbiAgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gIC8vIEBJbnB1dCgpXG4gIC8vIGdldCB2YWx1ZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5faW5wdXRWYWx1ZUFjY2Vzc29yLnZhbHVlOyB9XG4gIC8vIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gIC8vICAgaWYgKHZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XG4gIC8vICAgICB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IudmFsdWUgPSB2YWx1ZTtcbiAgLy8gICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgLy8gICB9XG4gIC8vIH1cblxuICAvKiogV2hldGhlciB0aGUgZWxlbWVudCBpcyByZWFkb25seS4gKi9cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudD4sXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfcGFyZW50Rm9ybTogTmdGb3JtLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3BhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIC8vIDNyZCBwYXJ0eSBzdXBwb3J0XG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfbmdTZWxlY3Q6IE5nU2VsZWN0Q29tcG9uZW50XG4gICkge1xuICAgIC8vIEZvcmNlIHNldHRlciB0byBiZSBjYWxsZWQgaW4gY2FzZSBpZCB3YXMgbm90IHNwZWNpZmllZC5cbiAgICB0aGlzLmlkID0gdGhpcy5pZFxuXG4gICAgaWYgKCF0aGlzLl9zaG91bGRIYXZlRm9ybUNvbnRyb2xDc3NDbGFzcygpKSB7XG4gICAgICB0aGlzLl9pc0Zvcm1Db250cm9sID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgaWYgKHRoaXMuX2lzTmdTZWxlY3QoKSkge1xuICAgICAgdGhpcy5fbmdTZWxlY3QubGFiZWxGb3JJZCA9IHRoaXMuaWRcbiAgICAgIHRoaXMuX25nU2VsZWN0LnNldERpc2FibGVkU3RhdGUodGhpcy5kaXNhYmxlZClcbiAgICB9IGVsc2Uge1xuICAgICAgdG9nZ2xlQXR0cmlidXRlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3JlcXVpcmVkJywgdGhpcy5yZXF1aXJlZClcbiAgICAgIHRvZ2dsZUF0dHJpYnV0ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsIHRoaXMuZGlzYWJsZWQpXG4gICAgfVxuICB9XG5cbiAgLyoqIFNob3VsZCBvbmx5IGJlIHRleHR1YWwgaW5wdXRzLCBidXQgaW5pdGlhbGx5IG91ciBhcHAgYWRkZWQgdG8gYWxsIGZvcm0gY29udHJvbHMuICovXG4gIHByb3RlY3RlZCBfc2hvdWxkSGF2ZUZvcm1Db250cm9sQ3NzQ2xhc3MoKSB7XG4gICAgcmV0dXJuICF0aGlzLl9pc1NlYW1DaGVja2JveCgpXG4gICAgICAmJiAhdGhpcy5faXNSYWRpb0lucHV0KClcbiAgICAgICYmICF0aGlzLl9pc05nYlJhZGlvR3JvdXAoKVxuICAgICAgJiYgIXRoaXMuX2lzVGVsSW5wdXQoKVxuICAgICAgJiYgIXRoaXMuX2lzUXVpbGxFZGl0b3IoKVxuICB9XG5cbiAgLyoqIERldGVybWluZXMgaWYgdGhlIGNvbXBvbmVudCBob3N0IGlzIGEgdGV4dGFyZWEuICovXG4gIHByb3RlY3RlZCBfaXNUZXh0YXJlYSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICd0ZXh0YXJlYSdcbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBjb21wb25lbnQgaG9zdCBpcyBhIG5nLXNlbGVjdC4gKi9cbiAgcHJvdGVjdGVkIF9pc05nU2VsZWN0KCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ25nLXNlbGVjdCdcbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBjb21wb25lbnQgaG9zdCBpcyBhIHNlYW0tY2hlY2tib3guICovXG4gIHByb3RlY3RlZCBfaXNTZWFtQ2hlY2tib3goKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc2VhbS1jaGVja2JveCdcbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBjb21wb25lbnQgaG9zdCBpcyBhIHJhZGlvIGlucHV0LiAqL1xuICBwcm90ZWN0ZWQgX2lzUmFkaW9JbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiZcbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50eXBlLnRvTG93ZXJDYXNlKCkgPT09ICdyYWRpbydcbiAgfVxuXG4gIHByb3RlY3RlZCBfaXNOZ2JSYWRpb0dyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCduZ2JSYWRpb0dyb3VwJykgIT09IG51bGxcbiAgfVxuXG4gIHByb3RlY3RlZCBfaXNUZWxJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzZWFtLXRlbC1pbnB1dCdcbiAgfVxuXG4gIHByb3RlY3RlZCBfaXNRdWlsbEVkaXRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdxdWlsbC1lZGl0b3InXG4gIH1cblxuICAvKiogTWFrZSBzdXJlIHRoZSBpbnB1dCBpcyBhIHN1cHBvcnRlZCB0eXBlLiAqL1xuICAvLyBwcm90ZWN0ZWQgX3ZhbGlkYXRlVHlwZSgpIHtcbiAgLy8gICBpZiAoTUFUX0lOUFVUX0lOVkFMSURfVFlQRVMuaW5kZXhPZih0aGlzLl90eXBlKSA+IC0xKSB7XG4gIC8vICAgICB0aHJvdyBnZXRNYXRJbnB1dFVuc3VwcG9ydGVkVHlwZUVycm9yKHRoaXMuX3R5cGUpXG4gIC8vICAgfVxuICAvLyB9XG5cbiAgLyoqIEZvY3VzZXMgdGhlIGlucHV0LiAqL1xuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKVxuICB9XG5cbiAgLyoqIFVuZm9jdXNlcyB0aGUgaW5wdXQuICovXG4gIGJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmJsdXIoKVxuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMubmdDb250cm9sLmNvbnRyb2xcbiAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUodmFsdWUpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2Zvcm0tZmllbGQvaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBdUIsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRWxHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFJOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTs7OztBQUUxRCw4R0FBOEc7QUFFOUcsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFBO0FBUXBCLE1BQU0sT0FBTyxjQUFjO0lBV3pCLElBQTBDLG1CQUFtQjtRQUMzRCxPQUFPLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUE7SUFDM0QsQ0FBQztJQUNELElBQXFDLFVBQVU7UUFDN0MsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNyRyxDQUFDO0lBRUQsSUFBNEIsT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUEsQ0FBQyxDQUFDO0lBQ3pGLElBQXFDLGdCQUFnQixLQUFLLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQSxDQUFDLENBQUM7SUFL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QWM7a0JBTjFCLFNBQVM7bUJBQUM7b0JBQ1QsOEVBQThFO29CQUM5RSx1REFBdUQ7b0JBQ3ZELFFBQVEsRUFBRSx3TEFBd0w7b0JBQ2xNLFFBQVEsRUFBRSxXQUFXO2lCQUN0Qjs7MEJBbUdJLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixRQUFROzswQkFDUixRQUFROzswQkFFUixRQUFROzRDQTVGd0IsY0FBYztzQkFBaEQsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBQ1MsbUJBQW1CO3NCQUE1RCxXQUFXO3VCQUFDLHVCQUF1QjtnQkFHQyxVQUFVO3NCQUE5QyxXQUFXO3VCQUFDLGtCQUFrQjtnQkFJSCxPQUFPO3NCQUFsQyxXQUFXO3VCQUFDLFNBQVM7Z0JBQ2UsZ0JBQWdCO3NCQUFwRCxXQUFXO3VCQUFDLGtCQUFrQjtnQkFDTyxlQUFlO3NCQUFwRCxXQUFXO3VCQUFDLHVCQUF1QjtnQkFFM0IsYUFBYTtzQkFBckIsS0FBSztnQkFHRixFQUFFO3NCQURMLEtBQUs7Z0JBT0YsSUFBSTtzQkFEUCxLQUFLO2dCQW1CRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1tQixRQUFRO3NCQUFoQyxLQUFLO2dCQU9GLFFBQVE7c0JBRFgsS0FBSztnQkFpQ21CLFFBQVE7c0JBQWhDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7IERpcmVjdGl2ZSwgRG9DaGVjaywgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPcHRpb25hbCwgU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcblxuaW1wb3J0IHsgTmdTZWxlY3RDb21wb25lbnQgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCdcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5pbXBvcnQgeyB0b2dnbGVBdHRyaWJ1dGUgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXG5cbi8vIE5PVEU6IFBhcnRpYWxseSBiYXNlZCBvbiBtYXQtaW5wdXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL21hdGVyaWFsMi9ibG9iL21hc3Rlci9zcmMvbGliL2lucHV0L2lucHV0LnRzXG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwXG5cbkBEaXJlY3RpdmUoe1xuICAvLyBUT0RPOiBDb25zaWRlciByZW1vdmluZyByZXN0cmljdGlvbiBhbmQgaW5zdGVhZCBhZGRpbmcgYSBkZXYgd2FybmluZy4gQSBmZXdcbiAgLy8gaW5wdXRzIGluIHRoZSBhcHAgbmVlZCB0byBiZSBjaGFuZ2VkIGZvciB0aGlzIGZpcnN0LlxuICBzZWxlY3RvcjogJ2lucHV0W3NlYW1JbnB1dF0sIHRleHRhcmVhW3NlYW1JbnB1dF0sIG5nLXNlbGVjdFtzZWFtSW5wdXRdLCBzZWFtLWNoZWNrYm94W3NlYW1JbnB1dF0gW25nYlJhZGlvR3JvdXBdLCBzZWFtLXRlbC1pbnB1dFtzZWFtSW5wdXRdLCBxdWlsbC1lZGl0b3Jbc2VhbUlucHV0XSwgc2VhbS1nb29nbGUtbWFwc1tzZWFtSW5wdXRdJyxcbiAgZXhwb3J0QXM6ICdzZWFtSW5wdXQnLFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dERpcmVjdGl2ZSBpbXBsZW1lbnRzIERvQ2hlY2sge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcmVxdWlyZWQ6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfcmVhZG9ubHk6IEJvb2xlYW5JbnB1dFxuXG4gIHByb3RlY3RlZCBfdWlkID0gYGxpYi1pbnB1dC0ke25leHRVbmlxdWVJZCsrfWBcblxuICAvLyBUT0RPOiBSZW1vdmUgdGhpcyBiZWluZyBhZGRlZCB0byBhbGwgc2VhbUlucHV0IGVsZW1lbnRzIG9yIGJyZWFrIHRoaXNcbiAgLy8gZGlyZWN0aXZlIHVwLiBTb21lIGVsZW1lbnRzIGluIG91ciBhcHAgYWxyZWFkeSBoYXZlIHdvcmtlZCBhcm91bmQgdGhpc1xuICAvLyBjbGFzcyBiZWluZyB0aGVyZSwgc28gc29tZSByZWZhY3RvcmluZyB3aWxsIGJlIHJlcXVpcmVkIGJlZm9yZSByZW1vdmFsLlxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZvcm0tY29udHJvbCcpIF9pc0Zvcm1Db250cm9sID0gdHJ1ZVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZvcm0tY29udHJvbC1zbScpIGdldCBfaXNGb3JtQ29udHJvbFNtYWxsKCkge1xuICAgIHJldHVybiB0aGlzLl9pc0Zvcm1Db250cm9sICYmIHRoaXMuc2VhbUlucHV0U2l6ZSA9PT0gJ3NtJ1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtaW52YWxpZCcpIGdldCBfaXNJbnZhbGlkKCkge1xuICAgIHJldHVybiB0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5pbnZhbGlkICYmICh0aGlzLm5nQ29udHJvbC5kaXJ0eSB8fCB0aGlzLm5nQ29udHJvbC50b3VjaGVkKVxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgZ2V0IF9hdHRySWQoKSB7IHJldHVybiB0aGlzLl9pc05nU2VsZWN0KCkgPyB1bmRlZmluZWQgOiB0aGlzLmlkIH1cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnBsYWNlaG9sZGVyJykgZ2V0IF9hdHRyUGxhY2Vob2xkZXIoKSB7IHJldHVybiB0aGlzLnBsYWNlaG9sZGVyIH1cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkYnknKSBhcmlhRGVzY3JpYmVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCgpIHNlYW1JbnB1dFNpemU6ICdzbScgfCAnbm9ybWFsJyA9ICdub3JtYWwnXG5cbiAgQElucHV0KClcbiAgZ2V0IGlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwgeyByZXR1cm4gdGhpcy5faWQgfVxuICBzZXQgaWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHsgdGhpcy5faWQgPSB2YWx1ZSB8fCB0aGlzLl91aWQgfVxuICBwcm90ZWN0ZWQgX2lkOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgLyoqIElucHV0IHR5cGUgb2YgdGhlIGVsZW1lbnQuICovXG4gIEBJbnB1dCgpXG4gIGdldCB0eXBlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwgeyByZXR1cm4gdGhpcy5fdHlwZSB9XG4gIHNldCB0eXBlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fdHlwZSA9IHZhbHVlIHx8ICd0ZXh0J1xuICAgIC8vIHRoaXMuX3ZhbGlkYXRlVHlwZSgpXG5cbiAgICAvLyBXaGVuIHVzaW5nIEFuZ3VsYXIgaW5wdXRzLCBkZXZlbG9wZXJzIGFyZSBubyBsb25nZXIgYWJsZSB0byBzZXQgdGhlIHByb3BlcnRpZXMgb24gdGhlIG5hdGl2ZVxuICAgIC8vIGlucHV0IGVsZW1lbnQuIFRvIGVuc3VyZSB0aGF0IGJpbmRpbmdzIGZvciBgdHlwZWAgd29yaywgd2UgbmVlZCB0byBzeW5jIHRoZSBzZXR0ZXJcbiAgICAvLyB3aXRoIHRoZSBuYXRpdmUgcHJvcGVydHkuIFRleHRhcmVhIGVsZW1lbnRzIGRvbid0IHN1cHBvcnQgdGhlIHR5cGUgcHJvcGVydHkgb3IgYXR0cmlidXRlLlxuICAgIGlmICgoIXRoaXMuX2lzVGV4dGFyZWEoKSAmJiAhdGhpcy5faXNOZ1NlbGVjdCgpKSAvKiAmJiBnZXRTdXBwb3J0ZWRJbnB1dFR5cGVzKCkuaGFzKHRoaXMuX3R5cGUpICovKSB7XG4gICAgICAodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnR5cGUgPSB0aGlzLl90eXBlXG4gICAgfVxuICB9XG4gIHByb3RlY3RlZCBfdHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICd0ZXh0J1xuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hdEZvcm1GaWVsZENvbnRyb2wuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWF0Rm9ybUZpZWxkQ29udHJvbC5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2VcblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNYXRGb3JtRmllbGRDb250cm9sLlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmRpc2FibGVkICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWRcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkXG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpXG5cbiAgICAvLyBCcm93c2VycyBtYXkgbm90IGZpcmUgdGhlIGJsdXIgZXZlbnQgaWYgdGhlIGlucHV0IGlzIGRpc2FibGVkIHRvbyBxdWlja2x5LlxuICAgIC8vIFJlc2V0IGZyb20gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgZWxlbWVudCBkb2Vzbid0IGJlY29tZSBzdHVjay5cbiAgICBpZiAodGhpcy5mb2N1c2VkKSB7XG4gICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZVxuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpXG4gICAgfVxuICB9XG4gIHByb3RlY3RlZCBfZGlzYWJsZWQgPSBmYWxzZVxuXG4gIGZvY3VzZWQgPSBmYWxzZVxuXG4gIHJlYWRvbmx5IHN0YXRlQ2hhbmdlczogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICAvLyBASW5wdXQoKVxuICAvLyBnZXQgdmFsdWUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2lucHV0VmFsdWVBY2Nlc3Nvci52YWx1ZTsgfVxuICAvLyBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAvLyAgIGlmICh2YWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuICAvLyAgICAgdGhpcy5faW5wdXRWYWx1ZUFjY2Vzc29yLnZhbHVlID0gdmFsdWU7XG4gIC8vICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgcmVhZG9ubHkuICovXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MU2VsZWN0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQ+LFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9wYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICAvLyAzcmQgcGFydHkgc3VwcG9ydFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX25nU2VsZWN0OiBOZ1NlbGVjdENvbXBvbmVudFxuICApIHtcbiAgICAvLyBGb3JjZSBzZXR0ZXIgdG8gYmUgY2FsbGVkIGluIGNhc2UgaWQgd2FzIG5vdCBzcGVjaWZpZWQuXG4gICAgdGhpcy5pZCA9IHRoaXMuaWRcblxuICAgIGlmICghdGhpcy5fc2hvdWxkSGF2ZUZvcm1Db250cm9sQ3NzQ2xhc3MoKSkge1xuICAgICAgdGhpcy5faXNGb3JtQ29udHJvbCA9IGZhbHNlXG4gICAgfVxuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmICh0aGlzLl9pc05nU2VsZWN0KCkpIHtcbiAgICAgIHRoaXMuX25nU2VsZWN0LmxhYmVsRm9ySWQgPSB0aGlzLmlkXG4gICAgICB0aGlzLl9uZ1NlbGVjdC5zZXREaXNhYmxlZFN0YXRlKHRoaXMuZGlzYWJsZWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRvZ2dsZUF0dHJpYnV0ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdyZXF1aXJlZCcsIHRoaXMucmVxdWlyZWQpXG4gICAgICB0b2dnbGVBdHRyaWJ1dGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCB0aGlzLmRpc2FibGVkKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBTaG91bGQgb25seSBiZSB0ZXh0dWFsIGlucHV0cywgYnV0IGluaXRpYWxseSBvdXIgYXBwIGFkZGVkIHRvIGFsbCBmb3JtIGNvbnRyb2xzLiAqL1xuICBwcm90ZWN0ZWQgX3Nob3VsZEhhdmVGb3JtQ29udHJvbENzc0NsYXNzKCkge1xuICAgIHJldHVybiAhdGhpcy5faXNTZWFtQ2hlY2tib3goKVxuICAgICAgJiYgIXRoaXMuX2lzUmFkaW9JbnB1dCgpXG4gICAgICAmJiAhdGhpcy5faXNOZ2JSYWRpb0dyb3VwKClcbiAgICAgICYmICF0aGlzLl9pc1RlbElucHV0KClcbiAgICAgICYmICF0aGlzLl9pc1F1aWxsRWRpdG9yKClcbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBjb21wb25lbnQgaG9zdCBpcyBhIHRleHRhcmVhLiAqL1xuICBwcm90ZWN0ZWQgX2lzVGV4dGFyZWEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAndGV4dGFyZWEnXG4gIH1cblxuICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgY29tcG9uZW50IGhvc3QgaXMgYSBuZy1zZWxlY3QuICovXG4gIHByb3RlY3RlZCBfaXNOZ1NlbGVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICduZy1zZWxlY3QnXG4gIH1cblxuICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgY29tcG9uZW50IGhvc3QgaXMgYSBzZWFtLWNoZWNrYm94LiAqL1xuICBwcm90ZWN0ZWQgX2lzU2VhbUNoZWNrYm94KCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NlYW0tY2hlY2tib3gnXG4gIH1cblxuICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgY29tcG9uZW50IGhvc3QgaXMgYSByYWRpbyBpbnB1dC4gKi9cbiAgcHJvdGVjdGVkIF9pc1JhZGlvSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudHlwZS50b0xvd2VyQ2FzZSgpID09PSAncmFkaW8nXG4gIH1cblxuICBwcm90ZWN0ZWQgX2lzTmdiUmFkaW9Hcm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnbmdiUmFkaW9Hcm91cCcpICE9PSBudWxsXG4gIH1cblxuICBwcm90ZWN0ZWQgX2lzVGVsSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc2VhbS10ZWwtaW5wdXQnXG4gIH1cblxuICBwcm90ZWN0ZWQgX2lzUXVpbGxFZGl0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAncXVpbGwtZWRpdG9yJ1xuICB9XG5cbiAgLyoqIE1ha2Ugc3VyZSB0aGUgaW5wdXQgaXMgYSBzdXBwb3J0ZWQgdHlwZS4gKi9cbiAgLy8gcHJvdGVjdGVkIF92YWxpZGF0ZVR5cGUoKSB7XG4gIC8vICAgaWYgKE1BVF9JTlBVVF9JTlZBTElEX1RZUEVTLmluZGV4T2YodGhpcy5fdHlwZSkgPiAtMSkge1xuICAvLyAgICAgdGhyb3cgZ2V0TWF0SW5wdXRVbnN1cHBvcnRlZFR5cGVFcnJvcih0aGlzLl90eXBlKVxuICAvLyAgIH1cbiAgLy8gfVxuXG4gIC8qKiBGb2N1c2VzIHRoZSBpbnB1dC4gKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKClcbiAgfVxuXG4gIC8qKiBVbmZvY3VzZXMgdGhlIGlucHV0LiAqL1xuICBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ibHVyKClcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbC5jb250cm9sXG4gICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKHZhbHVlKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG4iXX0=
@@ -10,12 +10,12 @@ export class FormFieldErrorComponent {
10
10
  ngOnInit() {
11
11
  }
12
12
  }
13
- FormFieldErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FormFieldErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
- FormFieldErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: FormFieldErrorComponent, selector: "seam-form-field-error", inputs: { validatorName: "validatorName", message: "message", showValidatorName: "showValidatorName" }, ngImport: i0, template: "<em style=\"display: block;\">\n <span *ngIf=\"showValidatorName && validatorName\"\n style=\"font-weight: bold;\">{{ validatorName }}: </span>\n <span class=\"msg-text\">{{ message }}</span>\n</em>\n", styles: ["@charset \"UTF-8\";.msg-text:empty:after{content:\"\\200b\"}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
13
+ FormFieldErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: FormFieldErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ FormFieldErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: FormFieldErrorComponent, selector: "seam-form-field-error", inputs: { validatorName: "validatorName", message: "message", showValidatorName: "showValidatorName" }, ngImport: i0, template: "<em style=\"display: block;\">\n <span *ngIf=\"showValidatorName && validatorName\"\n style=\"font-weight: bold;\">{{ validatorName }}: </span>\n <span class=\"msg-text\">{{ message }}</span>\n</em>\n", styles: ["@charset \"UTF-8\";.msg-text:empty:after{content:\"\\200b\"}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
15
15
  __decorate([
16
16
  InputBoolean()
17
17
  ], FormFieldErrorComponent.prototype, "showValidatorName", void 0);
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FormFieldErrorComponent, decorators: [{
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: FormFieldErrorComponent, decorators: [{
19
19
  type: Component,
20
20
  args: [{ selector: 'seam-form-field-error', template: "<em style=\"display: block;\">\n <span *ngIf=\"showValidatorName && validatorName\"\n style=\"font-weight: bold;\">{{ validatorName }}: </span>\n <span class=\"msg-text\">{{ message }}</span>\n</em>\n", styles: ["@charset \"UTF-8\";.msg-text:empty:after{content:\"\\200b\"}\n"] }]
21
21
  }], ctorParameters: function () { return []; }, propDecorators: { validatorName: [{
@@ -8,12 +8,12 @@ export class FormFieldErrorListItemTplDirective {
8
8
  this.external = false;
9
9
  }
10
10
  }
11
- FormFieldErrorListItemTplDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FormFieldErrorListItemTplDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
12
- FormFieldErrorListItemTplDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.4", type: FormFieldErrorListItemTplDirective, selector: "[seamFormFieldErrorListItemTpl]", inputs: { validatorName: "validatorName", external: "external" }, ngImport: i0 });
11
+ FormFieldErrorListItemTplDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: FormFieldErrorListItemTplDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
12
+ FormFieldErrorListItemTplDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: FormFieldErrorListItemTplDirective, selector: "[seamFormFieldErrorListItemTpl]", inputs: { validatorName: "validatorName", external: "external" }, ngImport: i0 });
13
13
  __decorate([
14
14
  InputBoolean()
15
15
  ], FormFieldErrorListItemTplDirective.prototype, "external", void 0);
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FormFieldErrorListItemTplDirective, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: FormFieldErrorListItemTplDirective, decorators: [{
17
17
  type: Directive,
18
18
  args: [{
19
19
  selector: '[seamFormFieldErrorListItemTpl]'
@@ -5,9 +5,9 @@ export class FormFieldErrorListItemDirective {
5
5
  this.template = template;
6
6
  }
7
7
  }
8
- FormFieldErrorListItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FormFieldErrorListItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
9
- FormFieldErrorListItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.4", type: FormFieldErrorListItemDirective, selector: "[seamFormFieldErrorListItem]", inputs: { validatorName: "validatorName" }, ngImport: i0 });
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FormFieldErrorListItemDirective, decorators: [{
8
+ FormFieldErrorListItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: FormFieldErrorListItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
9
+ FormFieldErrorListItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.6", type: FormFieldErrorListItemDirective, selector: "[seamFormFieldErrorListItem]", inputs: { validatorName: "validatorName" }, ngImport: i0 });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: FormFieldErrorListItemDirective, decorators: [{
11
11
  type: Directive,
12
12
  args: [{
13
13
  selector: '[seamFormFieldErrorListItem]'
@@ -12,6 +12,94 @@ import * as i2 from "../form-field-error/form-field-error.component";
12
12
  * TODO: Cleanup remaining code from before refactor.
13
13
  */
14
14
  export class FormFieldErrorListComponent {
15
+ get _display() {
16
+ return this.showErrors ? 'block' : 'none';
17
+ }
18
+ set errors(records) {
19
+ // if (val instanceof Array) {
20
+ // this._errors = val
21
+ // } else {
22
+ // const errs = []
23
+ // for (const k in val) {
24
+ // if (val[k]) {
25
+ // const err = val[k]
26
+ // const newErr = {
27
+ // validatorName: k,
28
+ // error: err,
29
+ // message: '',
30
+ // template: err.template,
31
+ // external: !!err.external
32
+ // }
33
+ // if (err.message) {
34
+ // const msgTmp = err.message
35
+ // if (typeof msgTmp === 'string') {
36
+ // newErr.message = msgTmp
37
+ // } else if (typeof msgTmp === 'function') {
38
+ // newErr.message = msgTmp(err)
39
+ // }
40
+ // } else if (FormFieldErrorListComponent.defaultMessages[k]) {
41
+ // const defaultMsg = FormFieldErrorListComponent.defaultMessages[k]
42
+ // if (typeof defaultMsg === 'string') {
43
+ // newErr.message = defaultMsg
44
+ // } else if (typeof defaultMsg === 'function') {
45
+ // newErr.message = defaultMsg(err)
46
+ // }
47
+ // }
48
+ // errs.push(newErr)
49
+ // }
50
+ // }
51
+ // this._errors = errs
52
+ // }
53
+ this._initErrorInput(records || []);
54
+ }
55
+ // private errorTpl: TemplateRef<any>
56
+ // private _listItemTpls: QueryList<FormFieldErrorListItemTplDirective>
57
+ // private listItemTplsObj = {}
58
+ set _listItemTpls(val) {
59
+ this._initErrorTemplates(val);
60
+ }
61
+ set listItemTpls(val) {
62
+ this._initErrorTemplates(val);
63
+ // for (const v of val.toArray()) {
64
+ // if (v.validatorName !== undefined) {
65
+ // this.listItemTplsObj[v.validatorName] = v
66
+ // }
67
+ // }
68
+ // const tmp = val.find(v => v.validatorName === undefined)
69
+ // if (tmp) {
70
+ // this.errorTpl = tmp.template
71
+ // }
72
+ // this._listItemTpls = val
73
+ }
74
+ get control() { return this._control; }
75
+ set control(value) {
76
+ this._control = value;
77
+ if (value) {
78
+ this._initControlListeners(value);
79
+ }
80
+ }
81
+ set showErrors(val) {
82
+ this._showErrors = val;
83
+ }
84
+ get showErrors() {
85
+ let show = this._showErrors;
86
+ if (show && this.control) {
87
+ if (this.numPaddingErrors > 0) {
88
+ show = true;
89
+ }
90
+ else {
91
+ show = !!(this.control.invalid && (this.control.dirty || this.control.touched));
92
+ }
93
+ }
94
+ return show;
95
+ }
96
+ get showControlErrors() {
97
+ let show = false;
98
+ if (this.control && this.showErrors) {
99
+ show = !!(this.control.invalid && (this.control.dirty || this.control.touched));
100
+ }
101
+ return show;
102
+ }
15
103
  constructor() {
16
104
  this._defaultMessages = {
17
105
  // required: () => 'Required',
@@ -122,94 +210,6 @@ export class FormFieldErrorListComponent {
122
210
  }))
123
211
  .pipe(shareReplay(1));
124
212
  }
125
- get _display() {
126
- return this.showErrors ? 'block' : 'none';
127
- }
128
- set errors(records) {
129
- // if (val instanceof Array) {
130
- // this._errors = val
131
- // } else {
132
- // const errs = []
133
- // for (const k in val) {
134
- // if (val[k]) {
135
- // const err = val[k]
136
- // const newErr = {
137
- // validatorName: k,
138
- // error: err,
139
- // message: '',
140
- // template: err.template,
141
- // external: !!err.external
142
- // }
143
- // if (err.message) {
144
- // const msgTmp = err.message
145
- // if (typeof msgTmp === 'string') {
146
- // newErr.message = msgTmp
147
- // } else if (typeof msgTmp === 'function') {
148
- // newErr.message = msgTmp(err)
149
- // }
150
- // } else if (FormFieldErrorListComponent.defaultMessages[k]) {
151
- // const defaultMsg = FormFieldErrorListComponent.defaultMessages[k]
152
- // if (typeof defaultMsg === 'string') {
153
- // newErr.message = defaultMsg
154
- // } else if (typeof defaultMsg === 'function') {
155
- // newErr.message = defaultMsg(err)
156
- // }
157
- // }
158
- // errs.push(newErr)
159
- // }
160
- // }
161
- // this._errors = errs
162
- // }
163
- this._initErrorInput(records || []);
164
- }
165
- // private errorTpl: TemplateRef<any>
166
- // private _listItemTpls: QueryList<FormFieldErrorListItemTplDirective>
167
- // private listItemTplsObj = {}
168
- set _listItemTpls(val) {
169
- this._initErrorTemplates(val);
170
- }
171
- set listItemTpls(val) {
172
- this._initErrorTemplates(val);
173
- // for (const v of val.toArray()) {
174
- // if (v.validatorName !== undefined) {
175
- // this.listItemTplsObj[v.validatorName] = v
176
- // }
177
- // }
178
- // const tmp = val.find(v => v.validatorName === undefined)
179
- // if (tmp) {
180
- // this.errorTpl = tmp.template
181
- // }
182
- // this._listItemTpls = val
183
- }
184
- get control() { return this._control; }
185
- set control(value) {
186
- this._control = value;
187
- if (value) {
188
- this._initControlListeners(value);
189
- }
190
- }
191
- set showErrors(val) {
192
- this._showErrors = val;
193
- }
194
- get showErrors() {
195
- let show = this._showErrors;
196
- if (show && this.control) {
197
- if (this.numPaddingErrors > 0) {
198
- show = true;
199
- }
200
- else {
201
- show = !!(this.control.invalid && (this.control.dirty || this.control.touched));
202
- }
203
- }
204
- return show;
205
- }
206
- get showControlErrors() {
207
- let show = false;
208
- if (this.control && this.showErrors) {
209
- show = !!(this.control.invalid && (this.control.dirty || this.control.touched));
210
- }
211
- return show;
212
- }
213
213
  ngOnInit() { }
214
214
  ngOnDestroy() {
215
215
  this._valueChangeSub.unsubscribe();
@@ -355,9 +355,9 @@ FormFieldErrorListComponent.defaultMessages = {
355
355
  // maxlength: (params) => 'The max allowed number of characters is ' + params.requiredLength,
356
356
  // pattern: (params) => 'The required pattern is: ' + params.requiredPattern
357
357
  };
358
- FormFieldErrorListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FormFieldErrorListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
359
- FormFieldErrorListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: FormFieldErrorListComponent, selector: "seam-form-field-error-list", inputs: { errors: "errors", showValidatorName: "showValidatorName", numPaddingErrors: "numPaddingErrors", listItemTpls: "listItemTpls", maxErrors: "maxErrors", control: "control", showErrors: "showErrors" }, host: { properties: { "style.display": "this._display" } }, queries: [{ propertyName: "_listItemTpls", predicate: FormFieldErrorListItemTplDirective }], ngImport: i0, template: "<ng-container *ngFor=\"let record of displayRecords$ | async\">\n <ng-container *ngIf=\"record.template; else noTemplate\">\n <div>\n <ng-template\n [ngTemplateOutlet]=\"record.template\"\n [ngTemplateOutletContext]=\"{ $implicit: record.error, errors: record._errors }\">\n </ng-template>\n </div>\n </ng-container>\n <ng-template #noTemplate>\n <seam-form-field-error\n [validatorName]=\"record.validatorName\"\n [message]=\"record.message\"\n [showValidatorName]=\"showValidatorName\">\n </seam-form-field-error>\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.FormFieldErrorComponent, selector: "seam-form-field-error", inputs: ["validatorName", "message", "showValidatorName"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
360
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: FormFieldErrorListComponent, decorators: [{
358
+ FormFieldErrorListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: FormFieldErrorListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
359
+ FormFieldErrorListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: FormFieldErrorListComponent, selector: "seam-form-field-error-list", inputs: { errors: "errors", showValidatorName: "showValidatorName", numPaddingErrors: "numPaddingErrors", listItemTpls: "listItemTpls", maxErrors: "maxErrors", control: "control", showErrors: "showErrors" }, host: { properties: { "style.display": "this._display" } }, queries: [{ propertyName: "_listItemTpls", predicate: FormFieldErrorListItemTplDirective }], ngImport: i0, template: "<ng-container *ngFor=\"let record of displayRecords$ | async\">\n <ng-container *ngIf=\"record.template; else noTemplate\">\n <div>\n <ng-template\n [ngTemplateOutlet]=\"record.template\"\n [ngTemplateOutletContext]=\"{ $implicit: record.error, errors: record._errors }\">\n </ng-template>\n </div>\n </ng-container>\n <ng-template #noTemplate>\n <seam-form-field-error\n [validatorName]=\"record.validatorName\"\n [message]=\"record.message\"\n [showValidatorName]=\"showValidatorName\">\n </seam-form-field-error>\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.FormFieldErrorComponent, selector: "seam-form-field-error", inputs: ["validatorName", "message", "showValidatorName"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
360
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: FormFieldErrorListComponent, decorators: [{
361
361
  type: Component,
362
362
  args: [{ selector: 'seam-form-field-error-list', template: "<ng-container *ngFor=\"let record of displayRecords$ | async\">\n <ng-container *ngIf=\"record.template; else noTemplate\">\n <div>\n <ng-template\n [ngTemplateOutlet]=\"record.template\"\n [ngTemplateOutletContext]=\"{ $implicit: record.error, errors: record._errors }\">\n </ng-template>\n </div>\n </ng-container>\n <ng-template #noTemplate>\n <seam-form-field-error\n [validatorName]=\"record.validatorName\"\n [message]=\"record.message\"\n [showValidatorName]=\"showValidatorName\">\n </seam-form-field-error>\n </ng-template>\n</ng-container>\n" }]
363
363
  }], ctorParameters: function () { return []; }, propDecorators: { _display: [{
@@ -381,4 +381,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
381
381
  }], showErrors: [{
382
382
  type: Input
383
383
  }] } });
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1lcnJvci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9mb3JtLWZpZWxkLWVycm9yL2Zvcm0tZmllbGQtZXJyb3ItbGlzdC9mb3JtLWZpZWxkLWVycm9yLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2Zvcm0tZmllbGQtZXJyb3IvZm9ybS1maWVsZC1lcnJvci1saXN0L2Zvcm0tZmllbGQtZXJyb3ItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBVyxXQUFXLEVBQUUsS0FBSyxFQUE2QyxNQUFNLGVBQWUsQ0FBQTtBQUVsSSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFbEYsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sNENBQTRDLENBQUE7Ozs7QUFhL0Y7Ozs7O0dBS0c7QUFNSCxNQUFNLE9BQU8sMkJBQTJCO0lBNk50QztRQWhOaUIscUJBQWdCLEdBQW1FO1FBQ2xHLDhCQUE4QjtRQUM5QixxRkFBcUY7UUFDckYsNkZBQTZGO1FBQzdGLDRFQUE0RTtTQUM3RSxDQUFBO1FBRU8sWUFBTyxHQUFVLEVBQUUsQ0FBQTtRQUVwQixtQkFBYyxHQUFHLEVBQUUsQ0FBQTtRQTRDMUIsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUVsQix3QkFBd0I7UUFDeEIsNEJBQTRCO1FBQzVCLDRCQUE0QjtRQUM1QixlQUFlO1FBQ2YseUNBQXlDO1FBQ3pDLHdGQUF3RjtRQUN4Riw0Q0FBNEM7UUFDNUMsd0RBQXdEO1FBQ3hELGVB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QUFHLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ3JFLEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFO1lBQ3RCLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDL0IsT0FBTyxJQUFJLENBQUE7YUFDWjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDOztBQWhhdUIsMkNBQWUsR0FBbUU7QUFDeEcsOEJBQThCO0FBQzlCLHFGQUFxRjtBQUNyRiw2RkFBNkY7QUFDN0YsNEVBQTRFO0NBQzdFLENBQUE7d0hBWFUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsNFdBMElyQixrQ0FBa0MsNkJDdktyRCxnbUJBaUJBOzJGRFlhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSw0QkFBNEI7MEVBTUosUUFBUTtzQkFBekMsV0FBVzt1QkFBQyxlQUFlO2dCQXVCeEIsTUFBTTtzQkFEVCxLQUFLO2dCQXlHRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQVFGLGFBQWE7c0JBRGhCLGVBQWU7dUJBQUMsa0NBQWtDO2dCQU0vQyxZQUFZO3NCQURmLEtBQUs7Z0JBc0JHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0YsT0FBTztzQkFEVixLQUFLO2dCQXlCRixVQUFVO3NCQURiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRG9DaGVjaywgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEFic3RyYWN0Q29udHJvbERpcmVjdGl2ZSwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBGb3JtRmllbGRFcnJvckxpc3RJdGVtVHBsRGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtLWZpZWxkLWVycm9yLWxpc3QtaXRlbS10cGwuZGlyZWN0aXZlJ1xuXG5leHBvcnQgaW50ZXJmYWNlIElFcnJvclJlY29yZCB7XG4gIHZhbGlkYXRvck5hbWU6IHN0cmluZ1xuICBlcnJvcjogYW55LFxuICBtZXNzYWdlPzogc3RyaW5nXG4gIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PlxuXG4gIGV4dGVybmFsPzogYm9vbGVhblxuXG4gIF9lcnJvcnM/OiBWYWxpZGF0aW9uRXJyb3JzXG59XG5cbi8qKlxuICogTk9URTogVGhpcyBjbGFzcyBoYXMgc29tZSBpc3N1ZXMgd2l0aCBmaWx0ZXJpbmcgZHVwbGljYXRlIHZhbGlkYXRvcnMuIFRoZVxuICogaW5wdXRzIHdpbGwgYmUgY2xlYW5lZCB1cCBzb29uIHRvIGZpeCB0aGUgaW5wdXQgY29uZnVzaW9uLlxuICpcbiAqIFRPRE86IENsZWFudXAgcmVtYWluaW5nIGNvZGUgZnJvbSBiZWZvcmUgcmVmYWN0b3IuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tZm9ybS1maWVsZC1lcnJvci1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQtZXJyb3ItbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmllbGQtZXJyb3ItbGlzdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZEVycm9yTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBEb0NoZWNrIHtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmRpc3BsYXknKSBnZXQgX2Rpc3BsYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0Vycm9ycyA/ICdibG9jaycgOiAnbm9uZSdcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRNZXNzYWdlczogeyBbbmFtZTogc3RyaW5nXTogKChwYXJhbXM6IGFueSkgPT4gc3RyaW5nKSB8ICgoKSA9PiBzdHJpbmcpIH0gPSB7XG4gICAgLy8gcmVxdWlyZWQ6ICgpID0+ICdSZXF1aXJlZCcsXG4gICAgLy8gbWlubGVuZ3RoOiAocGFyYW1zKSA9PiAnVGhlIG1pbiBudW1iZXIgb2YgY2hhcmFjdGVycyBpcyAnICsgcGFyYW1zLnJlcXVpcmVkTGVuZ3RoLFxuICAgIC8vIG1heGxlbmd0aDogKHBhcmFtcykgPT4gJ1RoZSBtYXggYWxsb3dlZCBudW1iZXIgb2YgY2hhcmFjdGVycyBpcyAnICsgcGFyYW1zLnJlcXVpcmVkTGVuZ3RoLFxuICAgIC8vIHBhdHRlcm46IChwYXJhbXMpID0+ICdUaGUgcmVxdWlyZWQgcGF0dGVybiBpczogJyArIHBhcmFtcy5yZXF1aXJlZFBhdHRlcm5cbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRNZXNzYWdlczogeyBbbmFtZTogc3RyaW5nXTogKChwYXJhbXM6IGFueSkgPT4gc3RyaW5nKSB8ICgoKSA9PiBzdHJpbmcpIH0gPSB7XG4gICAgLy8gcmVxdWlyZWQ6ICgpID0+ICdSZXF1aXJlZCcsXG4gICAgLy8gbWlubGVuZ3RoOiAocGFyYW1zKSA9PiAnVGhlIG1pbiBudW1iZXIgb2YgY2hhcmFjdGVycyBpcyAnICsgcGFyYW1zLnJlcXVpcmVkTGVuZ3RoLFxuICAgIC8vIG1heGxlbmd0aDogKHBhcmFtcykgPT4gJ1RoZSBtYXggYWxsb3dlZCBudW1iZXIgb2YgY2hhcmFjdGVycyBpcyAnICsgcGFyYW1zLnJlcXVpcmVkTGVuZ3RoLFxuICAgIC8vIHBhdHRlcm46IChwYXJhbXMpID0+ICdUaGUgcmVxdWlyZWQgcGF0dGVybiBpczogJyArIHBhcmFtcy5yZXF1aXJlZFBhdHRlcm5cbiAgfVxuXG4gIHByaXZhdGUgX2Vycm9yczogYW55W10gPSBbXVxuXG4gIHB1YmxpYyBfcGFkZGluZ0Vycm9ycyA9IFtdXG5cbiAgQElucHV0KClcbiAgc2V0IGVycm9ycyhyZWNvcmRzOiBJRXJyb3JSZWNvcmRbXSB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICAvLyBpZiAodmFsIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAvLyAgIHRoaXMuX2Vycm9ycyA9IHZhbFxuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICBjb25zdCBlcnJzID0gW11cbiAgICAvLyAgIGZvciAoY29uc3QgayBpbiB2YWwpIHtcbiAgICAvLyAgICAgaWYgKHZhbFtrXSkge1xuICAgIC8vICAgICAgIGNvbnN0IGVyciA9IHZhbFtrXVxuICAgIC8vICAgICAgIGNvbnN0IG5ld0VyciA9IHtcbiAgICAvLyAgICAgICAgIHZhbGlkYXRvck5hbWU6IGssXG4gICAgLy8gICAgICAgICBlcnJvcjogZXJyLFxuICAgIC8vICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgLy8gICAgICAgICB0ZW1wbGF0ZTogZXJyLnRlbXBsYXRlLFxuICAgIC8vICAgICAgICAgZXh0ZXJuYWw6ICEhZXJyLmV4dGVybmFsXG4gICAgLy8gICAgICAgfVxuXG4gICAgLy8gICAgICAgaWYgKGVyci5tZXNzYWdlKSB7XG4gICAgLy8gICAgICAgICBjb25zdCBtc2dUbXAgPSBlcnIubWVzc2FnZVxuICAgIC8vICAgICAgICAgaWYgKHR5cGVvZiBtc2dUbXAgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gICAgICAgICAgIG5ld0Vyci5tZXNzYWdlID0gbXNnVG1wXG4gICAgLy8gICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBtc2dUbXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyAgICAgICAgICAgbmV3RXJyLm1lc3NhZ2UgPSBtc2dUbXAoZXJyKVxuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICAgIH0gZWxzZSBpZiAoRm9ybUZpZWxkRXJyb3JMaXN0Q29tcG9uZW50LmRlZmF1bHRNZXNzYWdlc1trXSkge1xuICAgIC8vICAgICAgICAgY29uc3QgZGVmYXVsdE1zZyA9IEZvcm1GaWVsZEVycm9yTGlzdENvbXBvbmVudC5kZWZhdWx0TWVzc2FnZXNba11cbiAgICAvLyAgICAgICAgIGlmICh0eXBlb2YgZGVmYXVsdE1zZyA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyAgICAgICAgICAgbmV3RXJyLm1lc3NhZ2UgPSBkZWZhdWx0TXNnXG4gICAgLy8gICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBkZWZhdWx0TXNnID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gICAgICAgICAgIG5ld0Vyci5tZXNzYWdlID0gZGVmYXVsdE1zZyhlcnIpXG4gICAgLy8gICAgICAgICB9XG4gICAgLy8gICAgICAgfVxuXG4gICAgLy8gICAgICAgZXJycy5wdXNoKG5ld0VycilcbiAgICAvLyAgICAgfVxuICAgIC8vICAgfVxuICAgIC8vICAgdGhpcy5fZXJyb3JzID0gZXJyc1xuICAgIC8vIH1cblxuICAgIHRoaXMuX2luaXRFcnJvcklucHV0KHJlY29yZHMgfHwgW10pXG4gIH1cblxuICAvLyBnZXQgZXJyb3JzKCkge1xuICAvLyAgIGxldCBlcnJzID0gW11cblxuICAvLyAgIGlmICh0aGlzLl9lcnJvcnMpIHtcbiAgLy8gICAgIGlmICghdGhpcy5tZXNzYWdlcykge1xuICAvLyAgICAgICBlcnJzID0gdGhpcy5fZXJyb3JzXG4gIC8vICAgICB9IGVsc2Uge1xuICAvLyAgICAgICBlcnJzID0gdGhpcy5fZXJyb3JzLm1hcChlcnIgPT4ge1xuICAvLyAgICAgICAgIGlmICh0aGlzLm1lc3NhZ2VzICYmIGVyci52YWxpZGF0b3JOYW1lICYmIHRoaXMubWVzc2FnZXNbZXJyLnZhbGlkYXRvck5hbWVdKSB7XG4gIC8vICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZXJyLCB7XG4gIC8vICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZXNbZXJyLnZhbGlkYXRvck5hbWVdXG4gIC8vICAgICAgICAgICB9KVxuICAvLyAgICAgICAgIH0gZWxzZSB7XG4gIC8vICAgICAgICAgICByZXR1cm4gZXJyXG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9KVxuICAvLyAgICAgfVxuICAvLyAgIH1cblxuICAvLyAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgLy8gICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY29udHJvbC5lcnJvcnMpIHtcbiAgLy8gICAgICAgaWYgKHRoaXMuY29udHJvbC5lcnJvcnNba2V5XSkge1xuICAvLyAgICAgICAgIGNvbnN0IGVyciA9IHRoaXMuY29udHJvbC5lcnJvcnNba2V5XVxuXG4gIC8vICAgICAgICAgY29uc3QgbmV3RXJyID0ge1xuICAvLyAgICAgICAgICAgdmFsaWRhdG9yTmFtZToga2V5LFxuICAvLyAgICAgICAgICAgZXJyb3I6IGVycixcbiAgLy8gICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAvLyAgICAgICAgICAgZXh0ZXJuYWw6IGZhbHNlXG4gIC8vICAgICAgICAgfVxuXG4gIC8vICAgICAgICAgaWYgKEZvcm1GaWVsZEVycm9yTGlzdENvbXBvbmVudC5kZWZhdWx0TWVzc2FnZXNba2V5XSkge1xuICAvLyAgICAgICAgICAgY29uc3QgZGVmYXVsdE1zZyA9IEZvcm1GaWVsZEVycm9yTGlzdENvbXBvbmVudC5kZWZhdWx0TWVzc2FnZXNba2V5XVxuICAvLyAgICAgICAgICAgaWYgKHR5cGVvZiBkZWZhdWx0TXNnID09PSAnc3RyaW5nJykge1xuICAvLyAgICAgICAgICAgICBuZXdFcnIubWVzc2FnZSA9IGRlZmF1bHRNc2dcbiAgLy8gICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGRlZmF1bHRNc2cgPT09ICdmdW5jdGlvbicpIHtcbiAgLy8gICAgICAgICAgICAgbmV3RXJyLm1lc3NhZ2UgPSBkZWZhdWx0TXNnKGVycilcbiAgLy8gICAgICAgICAgIH1cbiAgLy8gICAgICAgICB9XG5cbiAgLy8gICAgICAgICBlcnJzID0gWyAuLi5lcnJzLCBuZXdFcnIgXVxuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfVxuXG4gIC8vICAgaWYgKHRoaXMubWF4RXJyb3JzID49IDApIHtcbiAgLy8gICAgIGVycnMgPSBlcnJzLnNsaWNlKDAsIHRoaXMubWF4RXJyb3JzKVxuICAvLyAgIH1cblxuICAvLyAgIGNvbnN0IGNvdW50ID0gdGhpcy5zaG93Q29udHJvbEVycm9ycyA/IHRoaXMubnVtUGFkZGluZ0Vycm9ycyAtIGVycnMubGVuZ3RoIDogdGhpcy5udW1QYWRkaW5nRXJyb3JzXG4gIC8vICAgaWYgKGNvdW50ID4gMCkge1xuICAvLyAgICAgdGhpcy5fcGFkZGluZ0Vycm9ycyA9IFtdXG4gIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgLy8gICAgICAgdGhpcy5fcGFkZGluZ0Vycm9ycy5wdXNoKHsgdmFsaWRhdG9yTmFtZTogJ19fcGFkZGluZ19fJywgZXJyb3I6IHt9LCBtZXNzYWdlOiAnJywgZXh0ZXJuYWw6IGZhbHNlIH0pXG4gIC8vICAgICB9XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIHRoaXMuX3BhZGRpbmdFcnJvcnMgPSBbXVxuICAvLyAgIH1cblxuICAvLyAgIHJldHVybiBlcnJzXG4gIC8vIH1cblxuICAvLyBASW5wdXQoKSBtZXNzYWdlczogYW55ID0ge31cbiAgQElucHV0KCkgc2hvd1ZhbGlkYXRvck5hbWUgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIG51bVBhZGRpbmdFcnJvcnMgPSAxXG5cbiAgLy8gcHJpdmF0ZSBlcnJvclRwbDogVGVtcGxhdGVSZWY8YW55PlxuXG4gIC8vIHByaXZhdGUgX2xpc3RJdGVtVHBsczogUXVlcnlMaXN0PEZvcm1GaWVsZEVycm9yTGlzdEl0ZW1UcGxEaXJlY3RpdmU+XG4gIC8vIHByaXZhdGUgbGlzdEl0ZW1UcGxzT2JqID0ge31cblxuICBAQ29udGVudENoaWxkcmVuKEZvcm1GaWVsZEVycm9yTGlzdEl0ZW1UcGxEaXJlY3RpdmUpXG4gIHNldCBfbGlzdEl0ZW1UcGxzKHZhbDogUXVlcnlMaXN0PEZvcm1GaWVsZEVycm9yTGlzdEl0ZW1UcGxEaXJlY3RpdmU+KSB7XG4gICAgdGhpcy5faW5pdEVycm9yVGVtcGxhdGVzKHZhbClcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBsaXN0SXRlbVRwbHModmFsOiBRdWVyeUxpc3Q8Rm9ybUZpZWxkRXJyb3JMaXN0SXRlbVRwbERpcmVjdGl2ZT4pIHtcbiAgICB0aGlzLl9pbml0RXJyb3JUZW1wbGF0ZXModmFsKVxuXG4gICAgLy8gZm9yIChjb25zdCB2IG9mIHZhbC50b0FycmF5KCkpIHtcbiAgICAvLyAgIGlmICh2LnZhbGlkYXRvck5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vICAgICB0aGlzLmxpc3RJdGVtVHBsc09ialt2LnZhbGlkYXRvck5hbWVdID0gdlxuICAgIC8vICAgfVxuICAgIC8vIH1cblxuICAgIC8vIGNvbnN0IHRtcCA9IHZhbC5maW5kKHYgPT4gdi52YWxpZGF0b3JOYW1lID09PSB1bmRlZmluZWQpXG4gICAgLy8gaWYgKHRtcCkge1xuICAgIC8vICAgdGhpcy5lcnJvclRwbCA9IHRtcC50ZW1wbGF0ZVxuICAgIC8vIH1cblxuICAgIC8vIHRoaXMuX2xpc3RJdGVtVHBscyA9IHZhbFxuICB9XG5cbiAgLy8gZ2V0IGxpc3RJdGVtVHBscygpOiBRdWVyeUxpc3Q8Rm9ybUZpZWxkRXJyb3JMaXN0SXRlbVRwbERpcmVjdGl2ZT4ge1xuICAvLyAgIHJldHVybiB0aGlzLl9saXN0SXRlbVRwbHNcbiAgLy8gfVxuXG4gIEBJbnB1dCgpIG1heEVycm9ycyA9IC0xXG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sRGlyZWN0aXZlIHwgQWJzdHJhY3RDb250cm9sIHwgdW5kZWZpbmVkIHwgbnVsbCB7IHJldHVybiB0aGlzLl9jb250cm9sIH1cbiAgc2V0IGNvbnRyb2wodmFsdWU6IEFic3RyYWN0Q29udHJvbERpcmVjdGl2ZSB8IEFic3RyYWN0Q29udHJvbCB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICB0aGlzLl9jb250cm9sID0gdmFsdWVcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX2luaXRDb250cm9sTGlzdGVuZXJzKHZhbHVlKVxuICAgIH1cbiAgfVxuICBwcml2YXRlIF9jb250cm9sOiBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUgfCBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgcHJpdmF0ZSBfdmFsdWVDaGFuZ2VTdWIgPSBTdWJzY3JpcHRpb24uRU1QVFlcbiAgcHJpdmF0ZSBfZXJyb3JUcGxzQ2hhbmdlU3ViID0gU3Vic2NyaXB0aW9uLkVNUFRZXG5cbiAgcHJpdmF0ZSBfY29udHJvbEVycm9ycyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUVycm9yUmVjb3JkW10+KFtdKVxuICBwcml2YXRlIF9lcnJvclRwbHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElFcnJvclJlY29yZFtdPihbXSlcbiAgcHJpdmF0ZSBfZXJyb3JJbnB1dCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUVycm9yUmVjb3JkW10+KFtdKVxuXG4gIHByaXZhdGUgX3Nob3dDb250cm9sRXJyb3JzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpXG5cbiAgcHVibGljIGRpc3BsYXlSZWNvcmRzJDogT2JzZXJ2YWJsZTxJRXJyb3JSZWNvcmRbXT5cbiAgcHVibGljIHNob3dDb250cm9sRXJyb3JzJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuXG4gIHByaXZhdGUgX3Nob3dFcnJvcnMgPSB0cnVlXG5cbiAgQElucHV0KClcbiAgc2V0IHNob3dFcnJvcnModmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0Vycm9ycyA9IHZhbFxuICB9XG5cbiAgZ2V0IHNob3dFcnJvcnMoKTogYm9vbGVhbiB7XG4gICAgbGV0IHNob3cgPSB0aGlzLl9zaG93RXJyb3JzXG5cbiAgICBpZiAoc2hvdyAmJiB0aGlzLmNvbnRyb2wpIHtcbiAgICAgIGlmICh0aGlzLm51bVBhZGRpbmdFcnJvcnMgPiAwKSB7XG4gICAgICAgIHNob3cgPSB0cnVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaG93ID0gISEodGhpcy5jb250cm9sLmludmFsaWQgJiYgKHRoaXMuY29udHJvbC5kaXJ0eSB8fCB0aGlzLmNvbnRyb2wudG91Y2hlZCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNob3dcbiAgfVxuXG4gIGdldCBzaG93Q29udHJvbEVycm9ycygpOiBib29sZWFuIHtcbiAgICBsZXQgc2hvdyA9IGZhbHNlXG4gICAgaWYgKHRoaXMuY29udHJvbCAmJiB0aGlzLnNob3dFcnJvcnMpIHtcbiAgICAgIHNob3cgPSAhISh0aGlzLmNvbnRyb2wuaW52YWxpZCAmJiAodGhpcy5jb250cm9sLmRpcnR5IHx8IHRoaXMuY29udHJvbC50b3VjaGVkKSlcbiAgICB9XG5cbiAgICByZXR1cm4gc2hvd1xuICB9XG5cbiAgcHVibGljIGVycm9yUmVjb3JkcyQ6IE9ic2VydmFibGU8SUVycm9yUmVjb3JkW10+XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zaG93Q29udHJvbEVycm9ycyQgPSB0aGlzLl9zaG93Q29udHJvbEVycm9yc1N1YmplY3QuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAucGlwZShzaGFyZVJlcGxheSgxKSlcblxuICAgIHRoaXMuZXJyb3JSZWNvcmRzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2NvbnRyb2xFcnJvcnMsIHRoaXMuX2Vycm9yVHBscywgdGhpcy5fZXJyb3JJbnB1dF0pXG4gICAgICAucGlwZShtYXAoKFtjdHJsRXJycywgZXJyVHBscywgZXJyb3JJbnB1dF0pID0+IHRoaXMuX2NvbXBvc2VFcnJvcklucHV0cyhjdHJsRXJycywgZXJyVHBscywgZXJyb3JJbnB1dCkpKVxuICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoMSkpXG5cbiAgICB0aGlzLmRpc3BsYXlSZWNvcmRzJCA9IHRoaXMuZXJyb3JSZWNvcmRzJFxuICAgICAgLnBpcGUobWFwKHJlY29yZHMgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0UmVjb3JkczogSUVycm9yUmVjb3JkW10gPSBbXVxuXG4gICAgICAgIGlmICghdGhpcy5zaG93RXJyb3JzKSB7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgZXJycyA9IFsgLi4ucmVjb3JkcyBdXG5cbiAgICAgICAgICBpZiAodGhpcy5tYXhFcnJvcnMgPj0gMCkge1xuICAgICAgICAgICAgZXJycyA9IGVycnMuc2xpY2UoMCwgdGhpcy5tYXhFcnJvcnMpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY291bnQgPSB0aGlzLnNob3dDb250cm9sRXJyb3JzID8gdGhpcy5udW1QYWRkaW5nRXJyb3JzIC0gZXJycy5sZW5ndGggOiB0aGlzLm51bVBhZGRpbmdFcnJvcnNcbiAgICAgICAgICBjb25zdCBwYWRkaW5nRXJyb3JzOiBJRXJyb3JSZWNvcmRbXSA9IFtdXG4gICAgICAgICAgaWYgKGNvdW50ID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgIHBhZGRpbmdFcnJvcnMucHVzaCh7IHZhbGlkYXRvck5hbWU6ICdfX3BhZGRpbmdfXycsIGVycm9yOiB7fSwgbWVzc2FnZTogJycsIGV4dGVybmFsOiBmYWxzZSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnNob3dDb250cm9sRXJyb3JzKSB7XG4gICAgICAgICAgICByZXN1bHRSZWNvcmRzID0gWyAuLi5lcnJzLCAuLi5wYWRkaW5nRXJyb3JzIF1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0UmVjb3JkcyA9IFsgLi4ucGFkZGluZ0Vycm9ycyBdXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFJlY29yZHNcbiAgICAgIH0pKVxuICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoMSkpXG4gIH1cblxuICBuZ09uSW5pdCgpIHsgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3ZhbHVlQ2hhbmdlU3ViLnVuc3Vic2NyaWJlKClcbiAgICB0aGlzLl9lcnJvclRwbHNDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKVxuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIHRoaXMuX3Nob3dDb250cm9sRXJyb3JzU3ViamVjdC5uZXh0KHRoaXMuc2hvd0NvbnRyb2xFcnJvcnMpXG4gIH1cblxuICBwcml2YXRlIF9pbml0Q29udHJvbExpc3RlbmVycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUgfCBBYnN0cmFjdENvbnRyb2wpOiB2b2lkIHtcbiAgICAvLyBVbnN1YnNjcmliZSBmcm9tIG9sZCBjb250cm9sIGNoYW5nZXNcbiAgICBpZiAodGhpcy5fdmFsdWVDaGFuZ2VTdWIgJiYgIXRoaXMuX3ZhbHVlQ2hhbmdlU3ViLmNsb3NlZCkge1xuICAgICAgdGhpcy5fdmFsdWVDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKVxuICAgIH1cblxuICAgIGlmIChjb250cm9sLnZhbHVlQ2hhbmdlcyAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5fdmFsdWVDaGFuZ2VTdWIgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnNob3dDb250cm9sRXJyb3JzJCwgY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSldKVxuICAgICAgICAucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSlcbiAgICAgICAgLnN1YnNjcmliZShfID0+IHRoaXMuX3VwZGF0ZUNvbnRyb2xFcnJvcnMoY29udHJvbC5lcnJvcnMpKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRDb250cm9sRXJyb3JzKFtdKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUNvbnRyb2xFcnJvcnMoZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IGVycnM6IElFcnJvclJlY29yZFtdID0gW11cbiAgICBmb3IgKGNvbnN0IHZhbGlkYXRvck5hbWUgaW4gZXJyb3JzKSB7XG4gICAgICBpZiAoZXJyb3JzLmhhc093blByb3BlcnR5KHZhbGlkYXRvck5hbWUpKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gZXJyb3JzW3ZhbGlkYXRvck5hbWVdXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLl9wYXJzZU1lc3NhZ2UodGhpcy5fZGVmYXVsdE1lc3NhZ2VzW3ZhbGlkYXRvck5hbWVdLCBlcnJvcilcbiAgICAgICAgY29uc3QgZXh0ZXJuYWwgPSBmYWxzZVxuICAgICAgICBlcnJzLnB1c2goeyB2YWxpZGF0b3JOYW1lLCBlcnJvciwgbWVzc2FnZSwgZXh0ZXJuYWwgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fc2V0Q29udHJvbEVycm9ycyhlcnJzKVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0Q29udHJvbEVycm9ycyhlcnJvcnM6IElFcnJvclJlY29yZFtdKSB7XG4gICAgdGhpcy5fY29udHJvbEVycm9ycy5uZXh0KGVycm9ycylcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlTWVzc2FnZShtZXNzYWdlOiBhbnksIGVycm9yOiBhbnkpIHtcbiAgICBpZiAoIW1lc3NhZ2UpIHsgcmV0dXJuIH1cblxuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIG1lc3NhZ2UoZXJyb3IpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEVycm9yVGVtcGxhdGVzKHRwbHNRdWVyeUxpc3Q6IFF1ZXJ5TGlzdDxGb3JtRmllbGRFcnJvckxpc3RJdGVtVHBsRGlyZWN0aXZlPikge1xuICAgIGlmICh0aGlzLl9lcnJvclRwbHNDaGFuZ2VTdWIgJiYgIXRoaXMuX2Vycm9yVHBsc0NoYW5nZVN1Yi5jbG9zZWQpIHtcbiAgICAgIHRoaXMuX2Vycm9yVHBsc0NoYW5nZVN1Yi51bnN1YnNjcmliZSgpXG4gICAgfVxuXG4gICAgaWYgKHRwbHNRdWVyeUxpc3QpIHtcbiAgICAgIHRoaXMuX2Vycm9yVHBsc0NoYW5nZVN1YiA9IHRwbHNRdWVyeUxpc3QuY2hhbmdlc1xuICAgICAgICAucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSlcbiAgICAgICAgLnN1YnNjcmliZShfID0+IHRoaXMuX3VwZGF0ZUVycm9yVGVtcGxhdGVzKHRwbHNRdWVyeUxpc3QudG9BcnJheSgpKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2V0RXJyb3JUZW1wbGF0ZXMoW10pXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRXJyb3JUZW1wbGF0ZXModHBsc0xpc3Q6IEZvcm1GaWVsZEVycm9yTGlzdEl0ZW1UcGxEaXJlY3RpdmVbXSk6IHZvaWQge1xuICAgIGNvbnN0IGVycnM6IElFcnJvclJlY29yZFtdID0gW11cbiAgICBmb3IgKGNvbnN0IHRwbCBvZiB0cGxzTGlzdCkge1xuICAgICAgaWYgKHRwbC52YWxpZGF0b3JOYW1lICE9PSB1bmRlZmluZWQgJiYgdHBsLnZhbGlkYXRvck5hbWUgIT09IG51bGwpIHtcbiAgICAgICAgZXJycy5wdXNoKHtcbiAgICAgICAgICB2YWxpZGF0b3JOYW1lOiB0cGwudmFsaWRhdG9yTmFtZSxcbiAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICB0ZW1wbGF0ZTogdHBsLnRlbXBsYXRlLFxuICAgICAgICAgIGV4dGVybmFsOiAhIXRwbC5leHRlcm5hbFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhpcy5lcnJvclRwbCA9IHRwbC50ZW1wbGF0ZVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9zZXRFcnJvclRlbXBsYXRlcyhlcnJzKVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RXJyb3JUZW1wbGF0ZXMoZXJyb3JUcGxzOiBJRXJyb3JSZWNvcmRbXSk6IHZvaWQge1xuICAgIHRoaXMuX2Vycm9yVHBscy5uZXh0KGVycm9yVHBscylcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRFcnJvcklucHV0KGVycm9yczogSUVycm9yUmVjb3JkW10pOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVFcnJvcklucHV0cyhlcnJvcnMpXG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVFcnJvcklucHV0cyhlcnJvcnM6IElFcnJvclJlY29yZFtdKTogdm9pZCB7XG4gICAgdGhpcy5fc2V0RXJyb3JJbnB1dChlcnJvcnMpXG4gIH1cblxuICBwcml2YXRlIF9zZXRFcnJvcklucHV0KGVycm9yczogSUVycm9yUmVjb3JkW10pOiB2b2lkIHtcbiAgICB0aGlzLl9lcnJvcklucHV0Lm5leHQoZXJyb3JzKVxuICB9XG5cbiAgcHJpdmF0ZSBfY29tcG9zZUVycm9ySW5wdXRzKFxuICAgIGNvbnRyb2xFcnJvcnM6IElFcnJvclJlY29yZFtdLFxuICAgIGVycm9yVGVtcGxhdGVzOiBJRXJyb3JSZWNvcmRbXSxcbiAgICBlcnJvcklucHV0OiBJRXJyb3JSZWNvcmRbXVxuICApOiBJRXJyb3JSZWNvcmRbXSB7XG4gICAgY29uc3QgZXJyczogSUVycm9yUmVjb3JkW10gPSBbXVxuXG4gICAgY29uc3QgZXJyc01hcDogeyBbbmFtZTogc3RyaW5nXTogSUVycm9yUmVjb3JkIH0gPSB7fVxuXG4gICAgZm9yIChjb25zdCBlcnIgb2YgY29udHJvbEVycm9ycykge1xuICAgICAgaWYgKGVyci5tZXNzYWdlIHx8IGVyci50ZW1wbGF0ZSkge1xuICAgICAgICBlcnJzTWFwW2Vyci52YWxpZGF0b3JOYW1lXSA9IGVyclxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZXJyIG9mIGVycm9ySW5wdXQpIHtcbiAgICAgIGlmIChlcnIubWVzc2FnZSB8fCBlcnIudGVtcGxhdGUpIHtcbiAgICAgICAgZXJyc01hcFtlcnIudmFsaWRhdG9yTmFtZV0gPSBlcnJcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGVyciBvZiBlcnJvclRlbXBsYXRlcykge1xuICAgICAgaWYgKGVyci5tZXNzYWdlIHx8IGVyci50ZW1wbGF0ZSkge1xuICAgICAgICBlcnJzTWFwW2Vyci52YWxpZGF0b3JOYW1lXSA9IGVyclxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgdmFsaWRhdG9yTmFtZSBpbiBlcnJzTWFwKSB7XG4gICAgICBpZiAoZXJyc01hcC5oYXNPd25Qcm9wZXJ0eSh2YWxpZGF0b3JOYW1lKSkge1xuICAgICAgICBlcnJzLnB1c2goZXJyc01hcFt2YWxpZGF0b3JOYW1lXSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb250cm9sXG4gICAgaWYgKCFjb250cm9sKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG5cbiAgICByZXR1cm4gZXJyc1xuICAgICAgLmZpbHRlcihlcnIgPT4gdGhpcy5faXNFcnJvclZhbGlkYXRvcihjb250cm9sLmVycm9ycywgZXJyLnZhbGlkYXRvck5hbWUpKVxuICAgICAgLmZpbHRlcihlcnIgPT4gIWVyci5leHRlcm5hbClcbiAgICAgIC5tYXAoZXJyID0+ICh7XG4gICAgICAgIC4uLmVycixcbiAgICAgICAgZXJyb3I6IGNvbnRyb2wuZXJyb3JzID8gY29udHJvbC5lcnJvcnNbZXJyLnZhbGlkYXRvck5hbWVdIDogbnVsbCxcbiAgICAgICAgX2Vycm9yczogY29udHJvbC5lcnJvcnNcbiAgICAgIH0gYXMgSUVycm9yUmVjb3JkKSlcbiAgfVxuXG4gIHByaXZhdGUgX2lzRXJyb3JWYWxpZGF0b3IoZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCwgdmFsaWRhdG9yTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFlcnJvcnMpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICBjb25zdCBhcnIgPSB2YWxpZGF0b3JOYW1lLnNwbGl0KCcgJykuZmlsdGVyKHYgPT4gdi50cmltKCkubGVuZ3RoID4gMClcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXJyKSB7XG4gICAgICBpZiAoZXJyb3JzLmhhc093blByb3BlcnR5KGl0ZW0pKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJlY29yZCBvZiBkaXNwbGF5UmVjb3JkcyQgfCBhc3luY1wiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVjb3JkLnRlbXBsYXRlOyBlbHNlIG5vVGVtcGxhdGVcIj5cbiAgICA8ZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJlY29yZC50ZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcmVjb3JkLmVycm9yLCBlcnJvcnM6IHJlY29yZC5fZXJyb3JzIH1cIj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI25vVGVtcGxhdGU+XG4gICAgPHNlYW0tZm9ybS1maWVsZC1lcnJvclxuICAgICAgW3ZhbGlkYXRvck5hbWVdPVwicmVjb3JkLnZhbGlkYXRvck5hbWVcIlxuICAgICAgW21lc3NhZ2VdPVwicmVjb3JkLm1lc3NhZ2VcIlxuICAgICAgW3Nob3dWYWxpZGF0b3JOYW1lXT1cInNob3dWYWxpZGF0b3JOYW1lXCI+XG4gICAgPC9zZWFtLWZvcm0tZmllbGQtZXJyb3I+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1lcnJvci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9mb3JtLWZpZWxkLWVycm9yL2Zvcm0tZmllbGQtZXJyb3ItbGlzdC9mb3JtLWZpZWxkLWVycm9yLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2Zvcm0tZmllbGQtZXJyb3IvZm9ybS1maWVsZC1lcnJvci1saXN0L2Zvcm0tZmllbGQtZXJyb3ItbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBVyxXQUFXLEVBQUUsS0FBSyxFQUE2QyxNQUFNLGVBQWUsQ0FBQTtBQUVsSSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFbEYsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sNENBQTRDLENBQUE7Ozs7QUFhL0Y7Ozs7O0dBS0c7QUFNSCxNQUFNLE9BQU8sMkJBQTJCO0lBRXRDLElBQWtDLFFBQVE7UUFDeEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtJQUMzQyxDQUFDO0lBb0JELElBQ0ksTUFBTSxDQUFDLE9BQTBDO1FBQ25ELDhCQUE4QjtRQUM5Qix1QkFBdUI7UUFDdkIsV0FBVztRQUNYLG9CQUFvQjtRQUNwQiwyQkFBMkI7UUFDM0Isb0JBQW9CO1FBQ3BCLDJCQUEyQjtRQUMzQix5QkFBeUI7UUFDekIsNEJBQTRCO1FBQzVCLHNCQUFzQjtRQUN0Qix1QkFBdUI7UUFDdkIsa0NBQWtD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LEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ3JFLEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFO1lBQ3RCLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDL0IsT0FBTyxJQUFJLENBQUE7YUFDWjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDOztBQWhhdUIsMkNBQWUsR0FBbUU7QUFDeEcsOEJBQThCO0FBQzlCLHFGQUFxRjtBQUNyRiw2RkFBNkY7QUFDN0YsNEVBQTRFO0NBQzdFLENBQUE7d0hBWFUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsNFdBMElyQixrQ0FBa0MsNkJDdktyRCxnbUJBaUJBOzJGRFlhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSw0QkFBNEI7MEVBTUosUUFBUTtzQkFBekMsV0FBVzt1QkFBQyxlQUFlO2dCQXVCeEIsTUFBTTtzQkFEVCxLQUFLO2dCQXlHRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQVFGLGFBQWE7c0JBRGhCLGVBQWU7dUJBQUMsa0NBQWtDO2dCQU0vQyxZQUFZO3NCQURmLEtBQUs7Z0JBc0JHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0YsT0FBTztzQkFEVixLQUFLO2dCQXlCRixVQUFVO3NCQURiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRG9DaGVjaywgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEFic3RyYWN0Q29udHJvbERpcmVjdGl2ZSwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBGb3JtRmllbGRFcnJvckxpc3RJdGVtVHBsRGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtLWZpZWxkLWVycm9yLWxpc3QtaXRlbS10cGwuZGlyZWN0aXZlJ1xuXG5leHBvcnQgaW50ZXJmYWNlIElFcnJvclJlY29yZCB7XG4gIHZhbGlkYXRvck5hbWU6IHN0cmluZ1xuICBlcnJvcjogYW55LFxuICBtZXNzYWdlPzogc3RyaW5nXG4gIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PlxuXG4gIGV4dGVybmFsPzogYm9vbGVhblxuXG4gIF9lcnJvcnM/OiBWYWxpZGF0aW9uRXJyb3JzXG59XG5cbi8qKlxuICogTk9URTogVGhpcyBjbGFzcyBoYXMgc29tZSBpc3N1ZXMgd2l0aCBmaWx0ZXJpbmcgZHVwbGljYXRlIHZhbGlkYXRvcnMuIFRoZVxuICogaW5wdXRzIHdpbGwgYmUgY2xlYW5lZCB1cCBzb29uIHRvIGZpeCB0aGUgaW5wdXQgY29uZnVzaW9uLlxuICpcbiAqIFRPRE86IENsZWFudXAgcmVtYWluaW5nIGNvZGUgZnJvbSBiZWZvcmUgcmVmYWN0b3IuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tZm9ybS1maWVsZC1lcnJvci1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQtZXJyb3ItbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmllbGQtZXJyb3ItbGlzdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZEVycm9yTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBEb0NoZWNrIHtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmRpc3BsYXknKSBnZXQgX2Rpc3BsYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0Vycm9ycyA/ICdibG9jaycgOiAnbm9uZSdcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGRlZmF1bHRNZXNzYWdlczogeyBbbmFtZTogc3RyaW5nXTogKChwYXJhbXM6IGFueSkgPT4gc3RyaW5nKSB8ICgoKSA9PiBzdHJpbmcpIH0gPSB7XG4gICAgLy8gcmVxdWlyZWQ6ICgpID0+ICdSZXF1aXJlZCcsXG4gICAgLy8gbWlubGVuZ3RoOiAocGFyYW1zKSA9PiAnVGhlIG1pbiBudW1iZXIgb2YgY2hhcmFjdGVycyBpcyAnICsgcGFyYW1zLnJlcXVpcmVkTGVuZ3RoLFxuICAgIC8vIG1heGxlbmd0aDogKHBhcmFtcykgPT4gJ1RoZSBtYXggYWxsb3dlZCBudW1iZXIgb2YgY2hhcmFjdGVycyBpcyAnICsgcGFyYW1zLnJlcXVpcmVkTGVuZ3RoLFxuICAgIC8vIHBhdHRlcm46IChwYXJhbXMpID0+ICdUaGUgcmVxdWlyZWQgcGF0dGVybiBpczogJyArIHBhcmFtcy5yZXF1aXJlZFBhdHRlcm5cbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRNZXNzYWdlczogeyBbbmFtZTogc3RyaW5nXTogKChwYXJhbXM6IGFueSkgPT4gc3RyaW5nKSB8ICgoKSA9PiBzdHJpbmcpIH0gPSB7XG4gICAgLy8gcmVxdWlyZWQ6ICgpID0+ICdSZXF1aXJlZCcsXG4gICAgLy8gbWlubGVuZ3RoOiAocGFyYW1zKSA9PiAnVGhlIG1pbiBudW1iZXIgb2YgY2hhcmFjdGVycyBpcyAnICsgcGFyYW1zLnJlcXVpcmVkTGVuZ3RoLFxuICAgIC8vIG1heGxlbmd0aDogKHBhcmFtcykgPT4gJ1RoZSBtYXggYWxsb3dlZCBudW1iZXIgb2YgY2hhcmFjdGVycyBpcyAnICsgcGFyYW1zLnJlcXVpcmVkTGVuZ3RoLFxuICAgIC8vIHBhdHRlcm46IChwYXJhbXMpID0+ICdUaGUgcmVxdWlyZWQgcGF0dGVybiBpczogJyArIHBhcmFtcy5yZXF1aXJlZFBhdHRlcm5cbiAgfVxuXG4gIHByaXZhdGUgX2Vycm9yczogYW55W10gPSBbXVxuXG4gIHB1YmxpYyBfcGFkZGluZ0Vycm9ycyA9IFtdXG5cbiAgQElucHV0KClcbiAgc2V0IGVycm9ycyhyZWNvcmRzOiBJRXJyb3JSZWNvcmRbXSB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICAvLyBpZiAodmFsIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAvLyAgIHRoaXMuX2Vycm9ycyA9IHZhbFxuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICBjb25zdCBlcnJzID0gW11cbiAgICAvLyAgIGZvciAoY29uc3QgayBpbiB2YWwpIHtcbiAgICAvLyAgICAgaWYgKHZhbFtrXSkge1xuICAgIC8vICAgICAgIGNvbnN0IGVyciA9IHZhbFtrXVxuICAgIC8vICAgICAgIGNvbnN0IG5ld0VyciA9IHtcbiAgICAvLyAgICAgICAgIHZhbGlkYXRvck5hbWU6IGssXG4gICAgLy8gICAgICAgICBlcnJvcjogZXJyLFxuICAgIC8vICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgLy8gICAgICAgICB0ZW1wbGF0ZTogZXJyLnRlbXBsYXRlLFxuICAgIC8vICAgICAgICAgZXh0ZXJuYWw6ICEhZXJyLmV4dGVybmFsXG4gICAgLy8gICAgICAgfVxuXG4gICAgLy8gICAgICAgaWYgKGVyci5tZXNzYWdlKSB7XG4gICAgLy8gICAgICAgICBjb25zdCBtc2dUbXAgPSBlcnIubWVzc2FnZVxuICAgIC8vICAgICAgICAgaWYgKHR5cGVvZiBtc2dUbXAgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gICAgICAgICAgIG5ld0Vyci5tZXNzYWdlID0gbXNnVG1wXG4gICAgLy8gICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBtc2dUbXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyAgICAgICAgICAgbmV3RXJyLm1lc3NhZ2UgPSBtc2dUbXAoZXJyKVxuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICAgIH0gZWxzZSBpZiAoRm9ybUZpZWxkRXJyb3JMaXN0Q29tcG9uZW50LmRlZmF1bHRNZXNzYWdlc1trXSkge1xuICAgIC8vICAgICAgICAgY29uc3QgZGVmYXVsdE1zZyA9IEZvcm1GaWVsZEVycm9yTGlzdENvbXBvbmVudC5kZWZhdWx0TWVzc2FnZXNba11cbiAgICAvLyAgICAgICAgIGlmICh0eXBlb2YgZGVmYXVsdE1zZyA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyAgICAgICAgICAgbmV3RXJyLm1lc3NhZ2UgPSBkZWZhdWx0TXNnXG4gICAgLy8gICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBkZWZhdWx0TXNnID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gICAgICAgICAgIG5ld0Vyci5tZXNzYWdlID0gZGVmYXVsdE1zZyhlcnIpXG4gICAgLy8gICAgICAgICB9XG4gICAgLy8gICAgICAgfVxuXG4gICAgLy8gICAgICAgZXJycy5wdXNoKG5ld0VycilcbiAgICAvLyAgICAgfVxuICAgIC8vICAgfVxuICAgIC8vICAgdGhpcy5fZXJyb3JzID0gZXJyc1xuICAgIC8vIH1cblxuICAgIHRoaXMuX2luaXRFcnJvcklucHV0KHJlY29yZHMgfHwgW10pXG4gIH1cblxuICAvLyBnZXQgZXJyb3JzKCkge1xuICAvLyAgIGxldCBlcnJzID0gW11cblxuICAvLyAgIGlmICh0aGlzLl9lcnJvcnMpIHtcbiAgLy8gICAgIGlmICghdGhpcy5tZXNzYWdlcykge1xuICAvLyAgICAgICBlcnJzID0gdGhpcy5fZXJyb3JzXG4gIC8vICAgICB9IGVsc2Uge1xuICAvLyAgICAgICBlcnJzID0gdGhpcy5fZXJyb3JzLm1hcChlcnIgPT4ge1xuICAvLyAgICAgICAgIGlmICh0aGlzLm1lc3NhZ2VzICYmIGVyci52YWxpZGF0b3JOYW1lICYmIHRoaXMubWVzc2FnZXNbZXJyLnZhbGlkYXRvck5hbWVdKSB7XG4gIC8vICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZXJyLCB7XG4gIC8vICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZXNbZXJyLnZhbGlkYXRvck5hbWVdXG4gIC8vICAgICAgICAgICB9KVxuICAvLyAgICAgICAgIH0gZWxzZSB7XG4gIC8vICAgICAgICAgICByZXR1cm4gZXJyXG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9KVxuICAvLyAgICAgfVxuICAvLyAgIH1cblxuICAvLyAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgLy8gICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY29udHJvbC5lcnJvcnMpIHtcbiAgLy8gICAgICAgaWYgKHRoaXMuY29udHJvbC5lcnJvcnNba2V5XSkge1xuICAvLyAgICAgICAgIGNvbnN0IGVyciA9IHRoaXMuY29udHJvbC5lcnJvcnNba2V5XVxuXG4gIC8vICAgICAgICAgY29uc3QgbmV3RXJyID0ge1xuICAvLyAgICAgICAgICAgdmFsaWRhdG9yTmFtZToga2V5LFxuICAvLyAgICAgICAgICAgZXJyb3I6IGVycixcbiAgLy8gICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAvLyAgICAgICAgICAgZXh0ZXJuYWw6IGZhbHNlXG4gIC8vICAgICAgICAgfVxuXG4gIC8vICAgICAgICAgaWYgKEZvcm1GaWVsZEVycm9yTGlzdENvbXBvbmVudC5kZWZhdWx0TWVzc2FnZXNba2V5XSkge1xuICAvLyAgICAgICAgICAgY29uc3QgZGVmYXVsdE1zZyA9IEZvcm1GaWVsZEVycm9yTGlzdENvbXBvbmVudC5kZWZhdWx0TWVzc2FnZXNba2V5XVxuICAvLyAgICAgICAgICAgaWYgKHR5cGVvZiBkZWZhdWx0TXNnID09PSAnc3RyaW5nJykge1xuICAvLyAgICAgICAgICAgICBuZXdFcnIubWVzc2FnZSA9IGRlZmF1bHRNc2dcbiAgLy8gICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGRlZmF1bHRNc2cgPT09ICdmdW5jdGlvbicpIHtcbiAgLy8gICAgICAgICAgICAgbmV3RXJyLm1lc3NhZ2UgPSBkZWZhdWx0TXNnKGVycilcbiAgLy8gICAgICAgICAgIH1cbiAgLy8gICAgICAgICB9XG5cbiAgLy8gICAgICAgICBlcnJzID0gWyAuLi5lcnJzLCBuZXdFcnIgXVxuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfVxuXG4gIC8vICAgaWYgKHRoaXMubWF4RXJyb3JzID49IDApIHtcbiAgLy8gICAgIGVycnMgPSBlcnJzLnNsaWNlKDAsIHRoaXMubWF4RXJyb3JzKVxuICAvLyAgIH1cblxuICAvLyAgIGNvbnN0IGNvdW50ID0gdGhpcy5zaG93Q29udHJvbEVycm9ycyA/IHRoaXMubnVtUGFkZGluZ0Vycm9ycyAtIGVycnMubGVuZ3RoIDogdGhpcy5udW1QYWRkaW5nRXJyb3JzXG4gIC8vICAgaWYgKGNvdW50ID4gMCkge1xuICAvLyAgICAgdGhpcy5fcGFkZGluZ0Vycm9ycyA9IFtdXG4gIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgLy8gICAgICAgdGhpcy5fcGFkZGluZ0Vycm9ycy5wdXNoKHsgdmFsaWRhdG9yTmFtZTogJ19fcGFkZGluZ19fJywgZXJyb3I6IHt9LCBtZXNzYWdlOiAnJywgZXh0ZXJuYWw6IGZhbHNlIH0pXG4gIC8vICAgICB9XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIHRoaXMuX3BhZGRpbmdFcnJvcnMgPSBbXVxuICAvLyAgIH1cblxuICAvLyAgIHJldHVybiBlcnJzXG4gIC8vIH1cblxuICAvLyBASW5wdXQoKSBtZXNzYWdlczogYW55ID0ge31cbiAgQElucHV0KCkgc2hvd1ZhbGlkYXRvck5hbWUgPSBmYWxzZVxuXG4gIEBJbnB1dCgpIG51bVBhZGRpbmdFcnJvcnMgPSAxXG5cbiAgLy8gcHJpdmF0ZSBlcnJvclRwbDogVGVtcGxhdGVSZWY8YW55PlxuXG4gIC8vIHByaXZhdGUgX2xpc3RJdGVtVHBsczogUXVlcnlMaXN0PEZvcm1GaWVsZEVycm9yTGlzdEl0ZW1UcGxEaXJlY3RpdmU+XG4gIC8vIHByaXZhdGUgbGlzdEl0ZW1UcGxzT2JqID0ge31cblxuICBAQ29udGVudENoaWxkcmVuKEZvcm1GaWVsZEVycm9yTGlzdEl0ZW1UcGxEaXJlY3RpdmUpXG4gIHNldCBfbGlzdEl0ZW1UcGxzKHZhbDogUXVlcnlMaXN0PEZvcm1GaWVsZEVycm9yTGlzdEl0ZW1UcGxEaXJlY3RpdmU+KSB7XG4gICAgdGhpcy5faW5pdEVycm9yVGVtcGxhdGVzKHZhbClcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBsaXN0SXRlbVRwbHModmFsOiBRdWVyeUxpc3Q8Rm9ybUZpZWxkRXJyb3JMaXN0SXRlbVRwbERpcmVjdGl2ZT4pIHtcbiAgICB0aGlzLl9pbml0RXJyb3JUZW1wbGF0ZXModmFsKVxuXG4gICAgLy8gZm9yIChjb25zdCB2IG9mIHZhbC50b0FycmF5KCkpIHtcbiAgICAvLyAgIGlmICh2LnZhbGlkYXRvck5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vICAgICB0aGlzLmxpc3RJdGVtVHBsc09ialt2LnZhbGlkYXRvck5hbWVdID0gdlxuICAgIC8vICAgfVxuICAgIC8vIH1cblxuICAgIC8vIGNvbnN0IHRtcCA9IHZhbC5maW5kKHYgPT4gdi52YWxpZGF0b3JOYW1lID09PSB1bmRlZmluZWQpXG4gICAgLy8gaWYgKHRtcCkge1xuICAgIC8vICAgdGhpcy5lcnJvclRwbCA9IHRtcC50ZW1wbGF0ZVxuICAgIC8vIH1cblxuICAgIC8vIHRoaXMuX2xpc3RJdGVtVHBscyA9IHZhbFxuICB9XG5cbiAgLy8gZ2V0IGxpc3RJdGVtVHBscygpOiBRdWVyeUxpc3Q8Rm9ybUZpZWxkRXJyb3JMaXN0SXRlbVRwbERpcmVjdGl2ZT4ge1xuICAvLyAgIHJldHVybiB0aGlzLl9saXN0SXRlbVRwbHNcbiAgLy8gfVxuXG4gIEBJbnB1dCgpIG1heEVycm9ycyA9IC0xXG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sRGlyZWN0aXZlIHwgQWJzdHJhY3RDb250cm9sIHwgdW5kZWZpbmVkIHwgbnVsbCB7IHJldHVybiB0aGlzLl9jb250cm9sIH1cbiAgc2V0IGNvbnRyb2wodmFsdWU6IEFic3RyYWN0Q29udHJvbERpcmVjdGl2ZSB8IEFic3RyYWN0Q29udHJvbCB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICB0aGlzLl9jb250cm9sID0gdmFsdWVcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX2luaXRDb250cm9sTGlzdGVuZXJzKHZhbHVlKVxuICAgIH1cbiAgfVxuICBwcml2YXRlIF9jb250cm9sOiBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUgfCBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgcHJpdmF0ZSBfdmFsdWVDaGFuZ2VTdWIgPSBTdWJzY3JpcHRpb24uRU1QVFlcbiAgcHJpdmF0ZSBfZXJyb3JUcGxzQ2hhbmdlU3ViID0gU3Vic2NyaXB0aW9uLkVNUFRZXG5cbiAgcHJpdmF0ZSBfY29udHJvbEVycm9ycyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUVycm9yUmVjb3JkW10+KFtdKVxuICBwcml2YXRlIF9lcnJvclRwbHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElFcnJvclJlY29yZFtdPihbXSlcbiAgcHJpdmF0ZSBfZXJyb3JJbnB1dCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUVycm9yUmVjb3JkW10+KFtdKVxuXG4gIHByaXZhdGUgX3Nob3dDb250cm9sRXJyb3JzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpXG5cbiAgcHVibGljIGRpc3BsYXlSZWNvcmRzJDogT2JzZXJ2YWJsZTxJRXJyb3JSZWNvcmRbXT5cbiAgcHVibGljIHNob3dDb250cm9sRXJyb3JzJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuXG4gIHByaXZhdGUgX3Nob3dFcnJvcnMgPSB0cnVlXG5cbiAgQElucHV0KClcbiAgc2V0IHNob3dFcnJvcnModmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0Vycm9ycyA9IHZhbFxuICB9XG5cbiAgZ2V0IHNob3dFcnJvcnMoKTogYm9vbGVhbiB7XG4gICAgbGV0IHNob3cgPSB0aGlzLl9zaG93RXJyb3JzXG5cbiAgICBpZiAoc2hvdyAmJiB0aGlzLmNvbnRyb2wpIHtcbiAgICAgIGlmICh0aGlzLm51bVBhZGRpbmdFcnJvcnMgPiAwKSB7XG4gICAgICAgIHNob3cgPSB0cnVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaG93ID0gISEodGhpcy5jb250cm9sLmludmFsaWQgJiYgKHRoaXMuY29udHJvbC5kaXJ0eSB8fCB0aGlzLmNvbnRyb2wudG91Y2hlZCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNob3dcbiAgfVxuXG4gIGdldCBzaG93Q29udHJvbEVycm9ycygpOiBib29sZWFuIHtcbiAgICBsZXQgc2hvdyA9IGZhbHNlXG4gICAgaWYgKHRoaXMuY29udHJvbCAmJiB0aGlzLnNob3dFcnJvcnMpIHtcbiAgICAgIHNob3cgPSAhISh0aGlzLmNvbnRyb2wuaW52YWxpZCAmJiAodGhpcy5jb250cm9sLmRpcnR5IHx8IHRoaXMuY29udHJvbC50b3VjaGVkKSlcbiAgICB9XG5cbiAgICByZXR1cm4gc2hvd1xuICB9XG5cbiAgcHVibGljIGVycm9yUmVjb3JkcyQ6IE9ic2VydmFibGU8SUVycm9yUmVjb3JkW10+XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zaG93Q29udHJvbEVycm9ycyQgPSB0aGlzLl9zaG93Q29udHJvbEVycm9yc1N1YmplY3QuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAucGlwZShzaGFyZVJlcGxheSgxKSlcblxuICAgIHRoaXMuZXJyb3JSZWNvcmRzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2NvbnRyb2xFcnJvcnMsIHRoaXMuX2Vycm9yVHBscywgdGhpcy5fZXJyb3JJbnB1dF0pXG4gICAgICAucGlwZShtYXAoKFtjdHJsRXJycywgZXJyVHBscywgZXJyb3JJbnB1dF0pID0+IHRoaXMuX2NvbXBvc2VFcnJvcklucHV0cyhjdHJsRXJycywgZXJyVHBscywgZXJyb3JJbnB1dCkpKVxuICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoMSkpXG5cbiAgICB0aGlzLmRpc3BsYXlSZWNvcmRzJCA9IHRoaXMuZXJyb3JSZWNvcmRzJFxuICAgICAgLnBpcGUobWFwKHJlY29yZHMgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0UmVjb3JkczogSUVycm9yUmVjb3JkW10gPSBbXVxuXG4gICAgICAgIGlmICghdGhpcy5zaG93RXJyb3JzKSB7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgZXJycyA9IFsgLi4ucmVjb3JkcyBdXG5cbiAgICAgICAgICBpZiAodGhpcy5tYXhFcnJvcnMgPj0gMCkge1xuICAgICAgICAgICAgZXJycyA9IGVycnMuc2xpY2UoMCwgdGhpcy5tYXhFcnJvcnMpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY291bnQgPSB0aGlzLnNob3dDb250cm9sRXJyb3JzID8gdGhpcy5udW1QYWRkaW5nRXJyb3JzIC0gZXJycy5sZW5ndGggOiB0aGlzLm51bVBhZGRpbmdFcnJvcnNcbiAgICAgICAgICBjb25zdCBwYWRkaW5nRXJyb3JzOiBJRXJyb3JSZWNvcmRbXSA9IFtdXG4gICAgICAgICAgaWYgKGNvdW50ID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgIHBhZGRpbmdFcnJvcnMucHVzaCh7IHZhbGlkYXRvck5hbWU6ICdfX3BhZGRpbmdfXycsIGVycm9yOiB7fSwgbWVzc2FnZTogJycsIGV4dGVybmFsOiBmYWxzZSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnNob3dDb250cm9sRXJyb3JzKSB7XG4gICAgICAgICAgICByZXN1bHRSZWNvcmRzID0gWyAuLi5lcnJzLCAuLi5wYWRkaW5nRXJyb3JzIF1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0UmVjb3JkcyA9IFsgLi4ucGFkZGluZ0Vycm9ycyBdXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFJlY29yZHNcbiAgICAgIH0pKVxuICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoMSkpXG4gIH1cblxuICBuZ09uSW5pdCgpIHsgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3ZhbHVlQ2hhbmdlU3ViLnVuc3Vic2NyaWJlKClcbiAgICB0aGlzLl9lcnJvclRwbHNDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKVxuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIHRoaXMuX3Nob3dDb250cm9sRXJyb3JzU3ViamVjdC5uZXh0KHRoaXMuc2hvd0NvbnRyb2xFcnJvcnMpXG4gIH1cblxuICBwcml2YXRlIF9pbml0Q29udHJvbExpc3RlbmVycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUgfCBBYnN0cmFjdENvbnRyb2wpOiB2b2lkIHtcbiAgICAvLyBVbnN1YnNjcmliZSBmcm9tIG9sZCBjb250cm9sIGNoYW5nZXNcbiAgICBpZiAodGhpcy5fdmFsdWVDaGFuZ2VTdWIgJiYgIXRoaXMuX3ZhbHVlQ2hhbmdlU3ViLmNsb3NlZCkge1xuICAgICAgdGhpcy5fdmFsdWVDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKVxuICAgIH1cblxuICAgIGlmIChjb250cm9sLnZhbHVlQ2hhbmdlcyAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5fdmFsdWVDaGFuZ2VTdWIgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnNob3dDb250cm9sRXJyb3JzJCwgY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSldKVxuICAgICAgICAucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSlcbiAgICAgICAgLnN1YnNjcmliZShfID0+IHRoaXMuX3VwZGF0ZUNvbnRyb2xFcnJvcnMoY29udHJvbC5lcnJvcnMpKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRDb250cm9sRXJyb3JzKFtdKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUNvbnRyb2xFcnJvcnMoZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCk6IHZvaWQge1xuICAgIGNvbnN0IGVycnM6IElFcnJvclJlY29yZFtdID0gW11cbiAgICBmb3IgKGNvbnN0IHZhbGlkYXRvck5hbWUgaW4gZXJyb3JzKSB7XG4gICAgICBpZiAoZXJyb3JzLmhhc093blByb3BlcnR5KHZhbGlkYXRvck5hbWUpKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gZXJyb3JzW3ZhbGlkYXRvck5hbWVdXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLl9wYXJzZU1lc3NhZ2UodGhpcy5fZGVmYXVsdE1lc3NhZ2VzW3ZhbGlkYXRvck5hbWVdLCBlcnJvcilcbiAgICAgICAgY29uc3QgZXh0ZXJuYWwgPSBmYWxzZVxuICAgICAgICBlcnJzLnB1c2goeyB2YWxpZGF0b3JOYW1lLCBlcnJvciwgbWVzc2FnZSwgZXh0ZXJuYWwgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fc2V0Q29udHJvbEVycm9ycyhlcnJzKVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0Q29udHJvbEVycm9ycyhlcnJvcnM6IElFcnJvclJlY29yZFtdKSB7XG4gICAgdGhpcy5fY29udHJvbEVycm9ycy5uZXh0KGVycm9ycylcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlTWVzc2FnZShtZXNzYWdlOiBhbnksIGVycm9yOiBhbnkpIHtcbiAgICBpZiAoIW1lc3NhZ2UpIHsgcmV0dXJuIH1cblxuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIG1lc3NhZ2UoZXJyb3IpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEVycm9yVGVtcGxhdGVzKHRwbHNRdWVyeUxpc3Q6IFF1ZXJ5TGlzdDxGb3JtRmllbGRFcnJvckxpc3RJdGVtVHBsRGlyZWN0aXZlPikge1xuICAgIGlmICh0aGlzLl9lcnJvclRwbHNDaGFuZ2VTdWIgJiYgIXRoaXMuX2Vycm9yVHBsc0NoYW5nZVN1Yi5jbG9zZWQpIHtcbiAgICAgIHRoaXMuX2Vycm9yVHBsc0NoYW5nZVN1Yi51bnN1YnNjcmliZSgpXG4gICAgfVxuXG4gICAgaWYgKHRwbHNRdWVyeUxpc3QpIHtcbiAgICAgIHRoaXMuX2Vycm9yVHBsc0NoYW5nZVN1YiA9IHRwbHNRdWVyeUxpc3QuY2hhbmdlc1xuICAgICAgICAucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSlcbiAgICAgICAgLnN1YnNjcmliZShfID0+IHRoaXMuX3VwZGF0ZUVycm9yVGVtcGxhdGVzKHRwbHNRdWVyeUxpc3QudG9BcnJheSgpKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2V0RXJyb3JUZW1wbGF0ZXMoW10pXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRXJyb3JUZW1wbGF0ZXModHBsc0xpc3Q6IEZvcm1GaWVsZEVycm9yTGlzdEl0ZW1UcGxEaXJlY3RpdmVbXSk6IHZvaWQge1xuICAgIGNvbnN0IGVycnM6IElFcnJvclJlY29yZFtdID0gW11cbiAgICBmb3IgKGNvbnN0IHRwbCBvZiB0cGxzTGlzdCkge1xuICAgICAgaWYgKHRwbC52YWxpZGF0b3JOYW1lICE9PSB1bmRlZmluZWQgJiYgdHBsLnZhbGlkYXRvck5hbWUgIT09IG51bGwpIHtcbiAgICAgICAgZXJycy5wdXNoKHtcbiAgICAgICAgICB2YWxpZGF0b3JOYW1lOiB0cGwudmFsaWRhdG9yTmFtZSxcbiAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICB0ZW1wbGF0ZTogdHBsLnRlbXBsYXRlLFxuICAgICAgICAgIGV4dGVybmFsOiAhIXRwbC5leHRlcm5hbFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhpcy5lcnJvclRwbCA9IHRwbC50ZW1wbGF0ZVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9zZXRFcnJvclRlbXBsYXRlcyhlcnJzKVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RXJyb3JUZW1wbGF0ZXMoZXJyb3JUcGxzOiBJRXJyb3JSZWNvcmRbXSk6IHZvaWQge1xuICAgIHRoaXMuX2Vycm9yVHBscy5uZXh0KGVycm9yVHBscylcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRFcnJvcklucHV0KGVycm9yczogSUVycm9yUmVjb3JkW10pOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVFcnJvcklucHV0cyhlcnJvcnMpXG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVFcnJvcklucHV0cyhlcnJvcnM6IElFcnJvclJlY29yZFtdKTogdm9pZCB7XG4gICAgdGhpcy5fc2V0RXJyb3JJbnB1dChlcnJvcnMpXG4gIH1cblxuICBwcml2YXRlIF9zZXRFcnJvcklucHV0KGVycm9yczogSUVycm9yUmVjb3JkW10pOiB2b2lkIHtcbiAgICB0aGlzLl9lcnJvcklucHV0Lm5leHQoZXJyb3JzKVxuICB9XG5cbiAgcHJpdmF0ZSBfY29tcG9zZUVycm9ySW5wdXRzKFxuICAgIGNvbnRyb2xFcnJvcnM6IElFcnJvclJlY29yZFtdLFxuICAgIGVycm9yVGVtcGxhdGVzOiBJRXJyb3JSZWNvcmRbXSxcbiAgICBlcnJvcklucHV0OiBJRXJyb3JSZWNvcmRbXVxuICApOiBJRXJyb3JSZWNvcmRbXSB7XG4gICAgY29uc3QgZXJyczogSUVycm9yUmVjb3JkW10gPSBbXVxuXG4gICAgY29uc3QgZXJyc01hcDogeyBbbmFtZTogc3RyaW5nXTogSUVycm9yUmVjb3JkIH0gPSB7fVxuXG4gICAgZm9yIChjb25zdCBlcnIgb2YgY29udHJvbEVycm9ycykge1xuICAgICAgaWYgKGVyci5tZXNzYWdlIHx8IGVyci50ZW1wbGF0ZSkge1xuICAgICAgICBlcnJzTWFwW2Vyci52YWxpZGF0b3JOYW1lXSA9IGVyclxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZXJyIG9mIGVycm9ySW5wdXQpIHtcbiAgICAgIGlmIChlcnIubWVzc2FnZSB8fCBlcnIudGVtcGxhdGUpIHtcbiAgICAgICAgZXJyc01hcFtlcnIudmFsaWRhdG9yTmFtZV0gPSBlcnJcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGVyciBvZiBlcnJvclRlbXBsYXRlcykge1xuICAgICAgaWYgKGVyci5tZXNzYWdlIHx8IGVyci50ZW1wbGF0ZSkge1xuICAgICAgICBlcnJzTWFwW2Vyci52YWxpZGF0b3JOYW1lXSA9IGVyclxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgdmFsaWRhdG9yTmFtZSBpbiBlcnJzTWFwKSB7XG4gICAgICBpZiAoZXJyc01hcC5oYXNPd25Qcm9wZXJ0eSh2YWxpZGF0b3JOYW1lKSkge1xuICAgICAgICBlcnJzLnB1c2goZXJyc01hcFt2YWxpZGF0b3JOYW1lXSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb250cm9sXG4gICAgaWYgKCFjb250cm9sKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG5cbiAgICByZXR1cm4gZXJyc1xuICAgICAgLmZpbHRlcihlcnIgPT4gdGhpcy5faXNFcnJvclZhbGlkYXRvcihjb250cm9sLmVycm9ycywgZXJyLnZhbGlkYXRvck5hbWUpKVxuICAgICAgLmZpbHRlcihlcnIgPT4gIWVyci5leHRlcm5hbClcbiAgICAgIC5tYXAoZXJyID0+ICh7XG4gICAgICAgIC4uLmVycixcbiAgICAgICAgZXJyb3I6IGNvbnRyb2wuZXJyb3JzID8gY29udHJvbC5lcnJvcnNbZXJyLnZhbGlkYXRvck5hbWVdIDogbnVsbCxcbiAgICAgICAgX2Vycm9yczogY29udHJvbC5lcnJvcnNcbiAgICAgIH0gYXMgSUVycm9yUmVjb3JkKSlcbiAgfVxuXG4gIHByaXZhdGUgX2lzRXJyb3JWYWxpZGF0b3IoZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCwgdmFsaWRhdG9yTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFlcnJvcnMpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICBjb25zdCBhcnIgPSB2YWxpZGF0b3JOYW1lLnNwbGl0KCcgJykuZmlsdGVyKHYgPT4gdi50cmltKCkubGVuZ3RoID4gMClcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXJyKSB7XG4gICAgICBpZiAoZXJyb3JzLmhhc093blByb3BlcnR5KGl0ZW0pKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJlY29yZCBvZiBkaXNwbGF5UmVjb3JkcyQgfCBhc3luY1wiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVjb3JkLnRlbXBsYXRlOyBlbHNlIG5vVGVtcGxhdGVcIj5cbiAgICA8ZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJlY29yZC50ZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcmVjb3JkLmVycm9yLCBlcnJvcnM6IHJlY29yZC5fZXJyb3JzIH1cIj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI25vVGVtcGxhdGU+XG4gICAgPHNlYW0tZm9ybS1maWVsZC1lcnJvclxuICAgICAgW3ZhbGlkYXRvck5hbWVdPVwicmVjb3JkLnZhbGlkYXRvck5hbWVcIlxuICAgICAgW21lc3NhZ2VdPVwicmVjb3JkLm1lc3NhZ2VcIlxuICAgICAgW3Nob3dWYWxpZGF0b3JOYW1lXT1cInNob3dWYWxpZGF0b3JOYW1lXCI+XG4gICAgPC9zZWFtLWZvcm0tZmllbGQtZXJyb3I+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==