@dsivd/prestations-ng 17.0.0-beta.2 → 17.0.0-beta.20

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 (239) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/ESLINT_MIGRATION_GUIDE.md +2 -1
  3. package/UPGRADING_V17.md +385 -38
  4. package/dsivd-prestations-ng-17.0.0-beta.20.tgz +0 -0
  5. package/esm2022/abstract-page-component.mjs +10 -6
  6. package/esm2022/directives/currency-formatter.directive.mjs +4 -4
  7. package/esm2022/directives/formatter.module.mjs +5 -5
  8. package/esm2022/directives/iban-formatter.directive.mjs +4 -4
  9. package/esm2022/directives/ide-formatter.directive.mjs +4 -4
  10. package/esm2022/directives/ndc-formatter.directive.mjs +4 -4
  11. package/esm2022/foehn-address/foehn-address.module.mjs +5 -5
  12. package/esm2022/foehn-address/foehn-display-address.component.mjs +4 -4
  13. package/esm2022/foehn-address/foehn-input-address.component.mjs +9 -5
  14. package/esm2022/foehn-address/foehn-input-foreign-locality.component.mjs +4 -4
  15. package/esm2022/foehn-address/foehn-input-foreign-street.component.mjs +6 -7
  16. package/esm2022/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +5 -5
  17. package/esm2022/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +6 -6
  18. package/esm2022/foehn-agenda/foehn-agenda.component.mjs +4 -4
  19. package/esm2022/foehn-agenda/foehn-agenda.module.mjs +5 -5
  20. package/esm2022/foehn-autocomplete/foehn-autocomplete.component.mjs +4 -4
  21. package/esm2022/foehn-autocomplete/foehn-autocomplete.module.mjs +5 -5
  22. package/esm2022/foehn-boolean/foehn-boolean-checkbox.component.mjs +4 -4
  23. package/esm2022/foehn-boolean/foehn-boolean-radio.component.mjs +4 -4
  24. package/esm2022/foehn-boolean/foehn-boolean.module.mjs +5 -5
  25. package/esm2022/foehn-breadcrumb/breadcrumb-event.service.mjs +24 -17
  26. package/esm2022/foehn-breadcrumb/foehn-breadcrumb.component.mjs +4 -4
  27. package/esm2022/foehn-breadcrumb/foehn-breadcrumb.module.mjs +5 -5
  28. package/esm2022/foehn-checkables/foehn-checkable-group.component.mjs +36 -34
  29. package/esm2022/foehn-checkables/foehn-checkables.module.mjs +5 -5
  30. package/esm2022/foehn-checkables/foehn-checkbox.component.mjs +4 -4
  31. package/esm2022/foehn-checkables/foehn-radio.component.mjs +4 -4
  32. package/esm2022/foehn-checkables/foehn-select.component.mjs +4 -4
  33. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.component.mjs +5 -5
  34. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.module.mjs +5 -5
  35. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.service.mjs +4 -4
  36. package/esm2022/foehn-date-picker/foehn-date-picker.component.mjs +5 -5
  37. package/esm2022/foehn-date-picker/foehn-date-picker.module.mjs +5 -5
  38. package/esm2022/foehn-date-picker-button/foehn-date-picker-button.component.mjs +4 -4
  39. package/esm2022/foehn-date-picker-button/foehn-date-picker-button.module.mjs +5 -5
  40. package/esm2022/foehn-debug-summary/foehn-debug-summary.component.mjs +4 -4
  41. package/esm2022/foehn-debug-summary/foehn-debug-summary.component.module.mjs +5 -5
  42. package/esm2022/foehn-decision-electronique/foehn-decision-electronique.component.mjs +4 -4
  43. package/esm2022/foehn-decision-electronique/foehn-decision-electronique.module.mjs +5 -5
  44. package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.component.mjs +5 -5
  45. package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.module.mjs +5 -5
  46. package/esm2022/foehn-feedback-notification/foehn-feedback-notification.component.mjs +90 -0
  47. package/esm2022/foehn-feedback-notification/foehn-feedback-notification.module.mjs +32 -0
  48. package/esm2022/foehn-footer/foehn-footer.component.mjs +5 -5
  49. package/esm2022/foehn-footer/foehn-footer.module.mjs +5 -5
  50. package/esm2022/foehn-form/foehn-form.component.mjs +4 -4
  51. package/esm2022/foehn-form/foehn-form.module.mjs +5 -5
  52. package/esm2022/foehn-form/register-ng-model.service.mjs +4 -4
  53. package/esm2022/foehn-growl/foehn-growl.component.mjs +4 -4
  54. package/esm2022/foehn-growl/foehn-growl.module.mjs +5 -5
  55. package/esm2022/foehn-growl/growl-broker.service.mjs +4 -4
  56. package/esm2022/foehn-header/foehn-header.component.mjs +4 -4
  57. package/esm2022/foehn-header/foehn-header.module.mjs +5 -5
  58. package/esm2022/foehn-header/foehn-skip-link.component.mjs +4 -4
  59. package/esm2022/foehn-help-modal/foehn-help-modal.component.mjs +5 -5
  60. package/esm2022/foehn-help-modal/foehn-help-modal.module.mjs +5 -5
  61. package/esm2022/foehn-icons/abstract-icon-component.mjs +4 -4
  62. package/esm2022/foehn-icons/foehn-icon-calendar.component.mjs +4 -4
  63. package/esm2022/foehn-icons/foehn-icon-check-square-o.component.mjs +4 -4
  64. package/esm2022/foehn-icons/foehn-icon-check.component.mjs +4 -4
  65. package/esm2022/foehn-icons/foehn-icon-chevron-down.component.mjs +4 -4
  66. package/esm2022/foehn-icons/foehn-icon-chevron-left.component.mjs +4 -4
  67. package/esm2022/foehn-icons/foehn-icon-chevron-right.component.mjs +4 -4
  68. package/esm2022/foehn-icons/foehn-icon-chevron-up.component.mjs +4 -4
  69. package/esm2022/foehn-icons/foehn-icon-clock.component.mjs +4 -4
  70. package/esm2022/foehn-icons/foehn-icon-comment-dots.component.mjs +4 -4
  71. package/esm2022/foehn-icons/foehn-icon-edit.component.mjs +4 -4
  72. package/esm2022/foehn-icons/foehn-icon-external-link-alt.component.mjs +4 -4
  73. package/esm2022/foehn-icons/foehn-icon-file-pdf.component.mjs +4 -4
  74. package/esm2022/foehn-icons/foehn-icon-info-circle.component.mjs +4 -4
  75. package/esm2022/foehn-icons/foehn-icon-lock.component.mjs +4 -4
  76. package/esm2022/foehn-icons/foehn-icon-map-marker.component.mjs +4 -4
  77. package/esm2022/foehn-icons/foehn-icon-minus-circle.component.mjs +4 -4
  78. package/esm2022/foehn-icons/foehn-icon-pencil.component.mjs +4 -4
  79. package/esm2022/foehn-icons/foehn-icon-plus-circle.component.mjs +4 -4
  80. package/esm2022/foehn-icons/foehn-icon-plus-square.component.mjs +4 -4
  81. package/esm2022/foehn-icons/foehn-icon-search.component.mjs +4 -4
  82. package/esm2022/foehn-icons/foehn-icon-times.component.mjs +4 -4
  83. package/esm2022/foehn-icons/foehn-icon-trash-alt.component.mjs +4 -4
  84. package/esm2022/foehn-icons/foehn-icon-unlock-alt.component.mjs +4 -4
  85. package/esm2022/foehn-icons/foehn-icon-user.component.mjs +4 -4
  86. package/esm2022/foehn-icons/foehn-icons.module.mjs +5 -5
  87. package/esm2022/foehn-input/foehn-input-email.component.mjs +4 -4
  88. package/esm2022/foehn-input/foehn-input-hidden.component.mjs +4 -4
  89. package/esm2022/foehn-input/foehn-input-number.component.mjs +4 -4
  90. package/esm2022/foehn-input/foehn-input-password.component.mjs +4 -4
  91. package/esm2022/foehn-input/foehn-input-phone.component.mjs +4 -4
  92. package/esm2022/foehn-input/foehn-input-prefixed-text.component.mjs +4 -4
  93. package/esm2022/foehn-input/foehn-input-string.component.mjs +4 -4
  94. package/esm2022/foehn-input/foehn-input-text.component.mjs +4 -4
  95. package/esm2022/foehn-input/foehn-input-textarea.component.mjs +4 -4
  96. package/esm2022/foehn-input/foehn-input.component.mjs +4 -4
  97. package/esm2022/foehn-input/foehn-input.module.mjs +5 -5
  98. package/esm2022/foehn-input-date/foehn-input-date.component.mjs +4 -4
  99. package/esm2022/foehn-input-date-time/foehn-input-date-time.component.mjs +4 -4
  100. package/esm2022/foehn-input-time/foehn-input-time.component.mjs +6 -6
  101. package/esm2022/foehn-list/foehn-list.component.mjs +5 -5
  102. package/esm2022/foehn-list/foehn-list.module.mjs +5 -5
  103. package/esm2022/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +4 -4
  104. package/esm2022/foehn-menu-prestation/abstract-menu-page.component.mjs +4 -4
  105. package/esm2022/foehn-menu-prestation/abstract-page-from-menu.component.mjs +4 -4
  106. package/esm2022/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs +6 -5
  107. package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +6 -6
  108. package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +4 -4
  109. package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +4 -4
  110. package/esm2022/foehn-menu-prestation/foehn-menu-prestation.module.mjs +5 -5
  111. package/esm2022/foehn-misc/foehn-abbr.component.mjs +4 -4
  112. package/esm2022/foehn-misc/foehn-misc.module.mjs +5 -5
  113. package/esm2022/foehn-modal/foehn-modal.component.mjs +5 -5
  114. package/esm2022/foehn-modal/foehn-modal.module.mjs +5 -5
  115. package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +6 -6
  116. package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.mjs +5 -5
  117. package/esm2022/foehn-nav13/foehn-input-nav13.component.mjs +4 -4
  118. package/esm2022/foehn-nav13/foehn-input-nav13.module.mjs +5 -5
  119. package/esm2022/foehn-navigation/abstract-foehn-navigation.component.mjs +4 -4
  120. package/esm2022/foehn-navigation/foehn-navigation/foehn-navigation.component.mjs +5 -5
  121. package/esm2022/foehn-navigation/foehn-navigation.module.mjs +5 -5
  122. package/esm2022/foehn-navigation/foehn-navigation.service.mjs +4 -4
  123. package/esm2022/foehn-navigation/foehn-simple-navigation/foehn-simple-navigation.component.mjs +5 -5
  124. package/esm2022/foehn-notfound/foehn-notfound.component.mjs +4 -4
  125. package/esm2022/foehn-notfound/foehn-notfound.module.mjs +5 -5
  126. package/esm2022/foehn-page/foehn-page-counter.component.mjs +4 -4
  127. package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration-interceptor.mjs +4 -4
  128. package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration.service.mjs +4 -4
  129. package/esm2022/foehn-page/foehn-page-expiration-timer/foehn-page-expiration-timer.component.mjs +4 -4
  130. package/esm2022/foehn-page/foehn-page-expiration-timer/interval.helper.mjs +2 -2
  131. package/esm2022/foehn-page/foehn-page-modal.component.mjs +4 -4
  132. package/esm2022/foehn-page/foehn-page-modal.service.mjs +4 -4
  133. package/esm2022/foehn-page/foehn-page.component.mjs +5 -5
  134. package/esm2022/foehn-page/foehn-page.module.mjs +5 -5
  135. package/esm2022/foehn-page/foehn-page.service.mjs +4 -4
  136. package/esm2022/foehn-page/foehn-transmit-waiting-modal/demande-transmit-interceptor.mjs +4 -4
  137. package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.component.mjs +4 -4
  138. package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.service.mjs +4 -4
  139. package/esm2022/foehn-recap-section/foehn-recap-section.component.mjs +4 -4
  140. package/esm2022/foehn-recap-section/foehn-recap-section.module.mjs +5 -5
  141. package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.mjs +4 -4
  142. package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.mjs +5 -5
  143. package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +4 -4
  144. package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs +5 -5
  145. package/esm2022/foehn-table/foehn-table.component.mjs +9 -5
  146. package/esm2022/foehn-table/foehn-table.module.mjs +5 -5
  147. package/esm2022/foehn-upload/abstract-foehn-uploader.component.mjs +4 -4
  148. package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +6 -19
  149. package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +4 -4
  150. package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs +5 -5
  151. package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +4 -4
  152. package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +5 -5
  153. package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +6 -19
  154. package/esm2022/foehn-upload/foehn-multi-upload/pending-upload.service.mjs +8 -6
  155. package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +20 -47
  156. package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs +5 -5
  157. package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +4 -4
  158. package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +5 -5
  159. package/esm2022/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +4 -4
  160. package/esm2022/foehn-upload/page-upload-limit.service.mjs +4 -4
  161. package/esm2022/foehn-upload/uploader.helper.mjs +5 -13
  162. package/esm2022/foehn-user-connected-as/foehn-user-connected-as.component.mjs +4 -4
  163. package/esm2022/foehn-user-connected-as/foehn-user-connected-as.module.mjs +5 -5
  164. package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs +4 -4
  165. package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs +5 -5
  166. package/esm2022/foehn-validation-alerts/foehn-validation-alerts.component.mjs +4 -4
  167. package/esm2022/foehn-validation-alerts/foehn-validation-alerts.module.mjs +5 -5
  168. package/esm2022/gesdem/gesdem-error-handler.service.mjs +16 -13
  169. package/esm2022/gesdem/gesdem-event.service.mjs +4 -4
  170. package/esm2022/gesdem/gesdem-handler.service.mjs +29 -16
  171. package/esm2022/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs +4 -4
  172. package/esm2022/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +31 -12
  173. package/esm2022/gesdem-action-recovery/gesdem-action-recovery.module.mjs +5 -5
  174. package/esm2022/gesdem-action-recovery/gesdem-action-recovery.service.mjs +4 -4
  175. package/esm2022/gesdem-confirmation/gesdem-confirmation.component.mjs +20 -15
  176. package/esm2022/gesdem-confirmation/gesdem-confirmation.module.mjs +12 -8
  177. package/esm2022/gesdem-error/gesdem-error.component.mjs +8 -6
  178. package/esm2022/gesdem-error/gesdem-error.module.mjs +5 -5
  179. package/esm2022/pipes/currency.pipe.mjs +4 -4
  180. package/esm2022/pipes/date.pipe.mjs +4 -4
  181. package/esm2022/pipes/formatIde.pipe.mjs +4 -4
  182. package/esm2022/pipes/pipes.module.mjs +5 -5
  183. package/esm2022/prestations-ng-core.module.mjs +5 -5
  184. package/esm2022/public_api.mjs +4 -1
  185. package/esm2022/sdk-appinfo/application-info.mjs +7 -1
  186. package/esm2022/sdk-appinfo/application-info.service.mjs +24 -6
  187. package/esm2022/sdk-currency/currency.helper.mjs +4 -4
  188. package/esm2022/sdk-date/date.helper.mjs +4 -4
  189. package/esm2022/sdk-dictionary/default-dictionary.mjs +19 -5
  190. package/esm2022/sdk-dictionary/sdk-dictionary.module.mjs +5 -5
  191. package/esm2022/sdk-dictionary/sdk-dictionary.pipe.mjs +4 -4
  192. package/esm2022/sdk-dictionary/sdk-dictionary.service.mjs +4 -4
  193. package/esm2022/sdk-drafts/drafts-container.component.mjs +5 -5
  194. package/esm2022/sdk-drafts/drafts.module.mjs +5 -5
  195. package/esm2022/sdk-drafts/drafts.service.mjs +4 -4
  196. package/esm2022/sdk-epayment/sdk-epayment.component.mjs +4 -4
  197. package/esm2022/sdk-epayment/sdk-epayment.module.mjs +5 -5
  198. package/esm2022/sdk-epayment/sdk-epayment.service.mjs +4 -4
  199. package/esm2022/sdk-events-logger/sdk-events-logger.service.mjs +4 -4
  200. package/esm2022/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs +4 -4
  201. package/esm2022/sdk-recaptcha/recaptcha.service.mjs +8 -16
  202. package/esm2022/sdk-recaptcha/sdk-recaptcha.component.mjs +4 -4
  203. package/esm2022/sdk-recaptcha/sdk-recaptcha.module.mjs +5 -5
  204. package/esm2022/sdk-redirect/iam-expired-interceptor.service.mjs +12 -11
  205. package/esm2022/sdk-redirect/redirect.component.mjs +32 -17
  206. package/esm2022/sdk-redirect/sdk-redirect.module.mjs +5 -5
  207. package/esm2022/sdk-session-info/session-info-with-application.service.mjs +4 -4
  208. package/esm2022/sdk-session-info/session-info.service.mjs +4 -4
  209. package/esm2022/sdk-statistics/sdk-statistics.service.mjs +4 -4
  210. package/esm2022/sdk-support-alert/support-alert-container.component.mjs +5 -5
  211. package/esm2022/sdk-support-alert/support-alert.component.mjs +12 -14
  212. package/esm2022/sdk-support-alert/support-alert.module.mjs +5 -5
  213. package/esm2022/sdk-support-alert/support-alert.service.mjs +4 -4
  214. package/esm2022/supported-browser.mjs +2 -2
  215. package/esm2022/validation/validation-handler.service.mjs +4 -4
  216. package/fesm2022/dsivd-prestations-ng.mjs +1304 -1153
  217. package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
  218. package/foehn-address/foehn-input-address.component.d.ts +2 -1
  219. package/foehn-breadcrumb/breadcrumb-event.service.d.ts +3 -1
  220. package/foehn-checkables/foehn-checkable-group.component.d.ts +2 -1
  221. package/foehn-feedback-notification/foehn-feedback-notification.component.d.ts +30 -0
  222. package/foehn-feedback-notification/foehn-feedback-notification.module.d.ts +11 -0
  223. package/foehn-table/foehn-table.component.d.ts +3 -1
  224. package/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.d.ts +1 -4
  225. package/foehn-upload/foehn-multi-upload/multi-upload.service.d.ts +1 -4
  226. package/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.d.ts +2 -4
  227. package/gesdem/gesdem-error-handler.service.d.ts +1 -0
  228. package/gesdem/gesdem-handler.service.d.ts +2 -2
  229. package/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.d.ts +3 -1
  230. package/gesdem-confirmation/gesdem-confirmation.component.d.ts +2 -0
  231. package/gesdem-confirmation/gesdem-confirmation.module.d.ts +2 -1
  232. package/gesdem-error/gesdem-error.component.d.ts +1 -0
  233. package/package.json +1 -1
  234. package/public_api.d.ts +2 -0
  235. package/schematics/utility/foehn2-bootstrap5-migration.js +19 -2
  236. package/sdk-appinfo/application-info.d.ts +4 -2
  237. package/sdk-recaptcha/recaptcha.service.d.ts +1 -3
  238. package/sdk-redirect/redirect.component.d.ts +4 -2
  239. package/dsivd-prestations-ng-17.0.0-beta.2.tgz +0 -0
@@ -42,6 +42,7 @@ export class FoehnInputAddressComponent extends FoehnInputComponent {
42
42
  this.addressLine1Required = false;
43
43
  this.addressLine2Required = false;
44
44
  this.withCompanyLocalities = false;
45
+ this.withDefaultCountry = true;
45
46
  this.streetCustomErrors = {};
46
47
  this.iso2IdSubject = new BehaviorSubject(null);
47
48
  this.zipCodeIdSubject = new BehaviorSubject(null);
@@ -309,7 +310,8 @@ export class FoehnInputAddressComponent extends FoehnInputComponent {
309
310
  };
310
311
  }
311
312
  setDefaultCountry() {
312
- if (this.isOnlySwiss || !this.country || !this.country.iso2Id) {
313
+ if (this.withDefaultCountry &&
314
+ (this.isOnlySwiss || !this.country || !this.country.iso2Id)) {
313
315
  this.country = this.getSwissCountry();
314
316
  this.iso2IdSubject.next(SWISS_ISO_ID);
315
317
  this.updateAddress();
@@ -406,8 +408,8 @@ export class FoehnInputAddressComponent extends FoehnInputComponent {
406
408
  // eslint-disable-next-line rxjs-angular/prefer-async-pipe
407
409
  .subscribe());
408
410
  }
409
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnInputAddressComponent, deps: [{ token: i1.HttpClient }, { token: i2.SdkDictionaryService }], target: i0.ɵɵFactoryTarget.Component }); }
410
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: FoehnInputAddressComponent, selector: "foehn-input-address", inputs: { countriesUrl: "countriesUrl", isOnlySwiss: "isOnlySwiss", showPostOfficeBoxText: "showPostOfficeBoxText", showAdressLines: "showAdressLines", showAdressLine1: "showAdressLine1", showAdressLine2: "showAdressLine2", specifiedCanton: "specifiedCanton", countryRequired: "countryRequired", swissNpaLocalityRequired: "swissNpaLocalityRequired", streetRequired: "streetRequired", streetNumberRequired: "streetNumberRequired", hideNotRequiredExtraLabelStreetNumber: "hideNotRequiredExtraLabelStreetNumber", foreignZipCodeRequired: "foreignZipCodeRequired", foreignLocalityRequired: "foreignLocalityRequired", foreignStreetRequired: "foreignStreetRequired", foreignStreetNumberRequired: "foreignStreetNumberRequired", postOfficeBoxTextRequired: "postOfficeBoxTextRequired", addressLine1Required: "addressLine1Required", addressLine2Required: "addressLine2Required", withCompanyLocalities: "withCompanyLocalities" }, providers: [
411
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: FoehnInputAddressComponent, deps: [{ token: i1.HttpClient }, { token: i2.SdkDictionaryService }], target: i0.ɵɵFactoryTarget.Component }); }
412
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: FoehnInputAddressComponent, selector: "foehn-input-address", inputs: { countriesUrl: "countriesUrl", isOnlySwiss: "isOnlySwiss", showPostOfficeBoxText: "showPostOfficeBoxText", showAdressLines: "showAdressLines", showAdressLine1: "showAdressLine1", showAdressLine2: "showAdressLine2", specifiedCanton: "specifiedCanton", countryRequired: "countryRequired", swissNpaLocalityRequired: "swissNpaLocalityRequired", streetRequired: "streetRequired", streetNumberRequired: "streetNumberRequired", hideNotRequiredExtraLabelStreetNumber: "hideNotRequiredExtraLabelStreetNumber", foreignZipCodeRequired: "foreignZipCodeRequired", foreignLocalityRequired: "foreignLocalityRequired", foreignStreetRequired: "foreignStreetRequired", foreignStreetNumberRequired: "foreignStreetNumberRequired", postOfficeBoxTextRequired: "postOfficeBoxTextRequired", addressLine1Required: "addressLine1Required", addressLine2Required: "addressLine2Required", withCompanyLocalities: "withCompanyLocalities", withDefaultCountry: "withDefaultCountry" }, providers: [
411
413
  {
412
414
  provide: FoehnInputComponent,
413
415
  useExisting: forwardRef(() => FoehnInputAddressComponent),
@@ -415,7 +417,7 @@ export class FoehnInputAddressComponent extends FoehnInputComponent {
415
417
  }
416
418
  ], viewQueries: [{ propertyName: "foreignLocalityComponent", first: true, predicate: FoehnInputForeignLocalityComponent, descendants: true }, { propertyName: "foreignStreetComponent", first: true, predicate: FoehnInputForeignStreetComponent, descendants: true }, { propertyName: "foreignHouseNumber", first: true, predicate: ["foreignHouseNumber"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n [attr.id]=\"buildId() + 'Container'\"\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [tabIndex]=\"-1\"\n>\n <fieldset\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'visually-hidden' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <foehn-autocomplete\n *ngIf=\"!isOnlySwiss\"\n [label]=\"'foehn-input-address.country.label' | fromDictionary\"\n [elements]=\"countries | async\"\n elementLabel=\"shortNameFr\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"countryIdentity\"\n (modelChange)=\"countryUpdated($event)\"\n (userInput)=\"userInputCountry()\"\n [model]=\"country\"\n [name]=\"name + '.country'\"\n [required]=\"countryRequired\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n\n <ng-container *ngIf=\"isSwiss()\">\n <foehn-autocomplete\n [label]=\"'foehn-input-address.locality.label' | fromDictionary\"\n [elements]=\"localities | async\"\n [elementLabel]=\"getLocalityDisplayedName\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"localityIdentity\"\n (modelChange)=\"localityUpdated($event)\"\n (userInput)=\"userInputLocality($event)\"\n [model]=\"locality\"\n [name]=\"name + '.locality'\"\n [allowCustomValue]=\"disabled\"\n [required]=\"swissNpaLocalityRequired\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n\n <foehn-autocomplete\n [label]=\"'foehn-input-address.street.label' | fromDictionary\"\n [elements]=\"streets | async\"\n elementLabel=\"longName\"\n [elementValue]=\"identity\"\n [elementValueIdentity]=\"streetIdentity\"\n (modelChange)=\"streetUpdated($event)\"\n [model]=\"street\"\n [name]=\"name + '.street'\"\n [allowCustomValue]=\"true\"\n [customValueModelGenerator]=\"streetGenerator\"\n [required]=\"isStreetRequired()\"\n [helpText]=\"\n 'foehn-input-address.street.help-text' | fromDictionary\n \"\n [customErrors]=\"streetCustomErrors\"\n (userInput)=\"userInputStreet($event)\"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n\n <foehn-autocomplete\n [label]=\"\n 'foehn-input-address.houseNumber.label' | fromDictionary\n \"\n [elements]=\"streetNumbers | async\"\n elementLabel=\"name\"\n elementValue=\"name\"\n [(model)]=\"houseNumber\"\n [name]=\"name + '.houseNumber'\"\n [allowCustomValue]=\"true\"\n [helpText]=\"\n 'foehn-input-address.houseNumber.help-text' | fromDictionary\n \"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"streetNumberRequired\"\n [hideNotRequiredExtraLabel]=\"\n hideNotRequiredExtraLabelStreetNumber\n \"\n [disabled]=\"disabled\"\n ></foehn-autocomplete>\n </ng-container>\n\n <ng-container *ngIf=\"!isSwiss()\">\n <!--\n Component <foehn-input-foreign-locality> is special because we use the same model when swiss or foreigner.\n To do so, we need:\n - Errors will be bind on 'locality' when NULL or on 'zipCode' and 'longName' model inside component when EMPTY\n - Hide label from component because we need label from children to be displayed (isLabelSrOnly: true)\n - required and disabled params are transmitted to children\n -->\n <foehn-input-foreign-locality\n [label]=\"'foehn-input-address.locality.label' | fromDictionary\"\n [name]=\"name + '.locality'\"\n [(model)]=\"locality\"\n [zipCodeRequired]=\"foreignZipCodeRequired\"\n [localityRequired]=\"foreignLocalityRequired\"\n [isLabelSrOnly]=\"true\"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n ></foehn-input-foreign-locality>\n <!--\n Component <foehn-input-foreign-street> is special because we use the same model when swiss or foreigner.\n To do so, we need:\n - Errors will be bind on 'street' when NULL or on 'longName' model inside component when EMPTY\n - required, helpText, isLabelSrOnly and disabled params are transmitted to children\n -->\n <foehn-input-foreign-street\n [label]=\"'foehn-input-address.street.label' | fromDictionary\"\n [name]=\"name + '.street'\"\n [(model)]=\"street\"\n [required]=\"isForeignStreetRequired()\"\n [helpText]=\"\n 'foehn-input-address.street.help-text' | fromDictionary\n \"\n [customErrors]=\"streetCustomErrors\"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n ></foehn-input-foreign-street>\n\n <foehn-input-text\n #foreignHouseNumber\n [label]=\"\n 'foehn-input-address.houseNumber.label' | fromDictionary\n \"\n [name]=\"name + '.houseNumber'\"\n [(model)]=\"houseNumber\"\n [helpText]=\"\n 'foehn-input-address.houseNumber.help-text' | fromDictionary\n \"\n [disabled]=\"!country || disabled\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"foreignStreetNumberRequired\"\n ></foehn-input-text>\n </ng-container>\n\n <foehn-input-text\n *ngIf=\"showPostOfficeBoxText\"\n [(model)]=\"postOfficeBoxText\"\n [helpText]=\"\n 'foehn-input-address.postOfficeBoxText.help-text'\n | fromDictionary\n \"\n [label]=\"\n 'foehn-input-address.postOfficeBoxText.label' | fromDictionary\n \"\n [name]=\"name + '.postOfficeBoxText'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"isPostOfficeBoxTextRequired()\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n\n <foehn-input-text\n *ngIf=\"showAdressLines && showAdressLine1\"\n [(model)]=\"addressLine1\"\n [label]=\"'foehn-input-address.addressLine1.label' | fromDictionary\"\n [name]=\"name + '.addressLine1'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"addressLine1Required\"\n [autocomplete]=\"'address-line2'\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n\n <foehn-input-text\n *ngIf=\"showAdressLines && showAdressLine2\"\n [(model)]=\"addressLine2\"\n [label]=\"'foehn-input-address.addressLine2.label' | fromDictionary\"\n [name]=\"name + '.addressLine2'\"\n (modelChange)=\"updateAddress()\"\n (userInput)=\"handleUserInput()\"\n [required]=\"addressLine2Required\"\n [autocomplete]=\"'address-line3'\"\n [disabled]=\"disabled\"\n ></foehn-input-text>\n </fieldset>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.FoehnAutocompleteComponent, selector: "foehn-autocomplete", inputs: ["searchValueMinCharsCount", "allowCustomValue", "isSuggestionListDynamic", "customValueModelGenerator", "itemHeightInSuggestionListInPx", "elementSuggestionLabel", "caseSensitiveSearch", "disabled"], outputs: ["userSearchInput"] }, { kind: "component", type: i5.FoehnInputTextComponent, selector: "foehn-input-text", inputs: ["numberOnly"] }, { kind: "component", type: i6.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "component", type: i7.FoehnInputForeignLocalityComponent, selector: "foehn-input-foreign-locality", inputs: ["localityRequired", "zipCodeRequired"] }, { kind: "component", type: i8.FoehnInputForeignStreetComponent, selector: "foehn-input-foreign-street" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.SdkDictionaryPipe, name: "fromDictionary" }] }); }
417
419
  }
418
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnInputAddressComponent, decorators: [{
420
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: FoehnInputAddressComponent, decorators: [{
419
421
  type: Component,
420
422
  args: [{ selector: 'foehn-input-address', providers: [
421
423
  {
@@ -473,5 +475,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
473
475
  type: Input
474
476
  }], withCompanyLocalities: [{
475
477
  type: Input
478
+ }], withDefaultCountry: [{
479
+ type: Input
476
480
  }] } });
477
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWRkcmVzcy9mb2Vobi1pbnB1dC1hZGRyZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZGRyZXNzL2ZvZWhuLWlucHV0LWFkZHJlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQU1MLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZUFBZSxFQUNmLGFBQWEsRUFFYixFQUFFLEVBRUwsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0gsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxHQUFHLEVBQ04sTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHeEQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDOUYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7O0FBRTFGLHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBRWpDLE1BQU0sT0FBTyxZQUFZO0NBRXhCO0FBRUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFjLEVBQVcsRUFBRSxDQUMxQyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUM7QUFFdEMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFvQixF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Uzt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSTlELGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSWxELFlBQVk7c0JBRFgsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4scUJBQXFCO3NCQURwQixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sd0JBQXdCO3NCQUR2QixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4scUNBQXFDO3NCQURwQyxLQUFLO2dCQUlOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFJTix1QkFBdUI7c0JBRHRCLEtBQUs7Z0JBSU4scUJBQXFCO3NCQURwQixLQUFLO2dCQUlOLDJCQUEyQjtzQkFEMUIsS0FBSztnQkFJTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUlOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFJTixxQkFBcUI7c0JBRHBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2UsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEJlaGF2aW9yU3ViamVjdCxcbiAgICBjb21iaW5lTGF0ZXN0LFxuICAgIE9ic2VydmFibGUsXG4gICAgb2YsXG4gICAgU3Vic2NyaXB0aW9uXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBkZWJvdW5jZVRpbWUsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgbWFwLFxuICAgIHNoYXJlUmVwbGF5LFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YXBcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGb2VobklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4taW5wdXQvZm9laG4taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEZvZWhuSW5wdXRUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vZm9laG4taW5wdXQvZm9laG4taW5wdXQtdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JqZWN0SGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9vYmplY3QuaGVscGVyJztcbmltcG9ydCB7IFNka0RpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkuc2VydmljZSc7XG5pbXBvcnQgeyBBZGRyZXNzLCBDb3VudHJ5LCBMb2NhbGl0eSwgU3RyZWV0IH0gZnJvbSAnLi9hZGRyZXNzLnR5cGUnO1xuaW1wb3J0IHsgRm9laG5JbnB1dEZvcmVpZ25Mb2NhbGl0eUNvbXBvbmVudCB9IGZyb20gJy4vZm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9laG5JbnB1dEZvcmVpZ25TdHJlZXRDb21wb25lbnQgfSBmcm9tICcuL2ZvZWhuLWlucHV0LWZvcmVpZ24tc3RyZWV0LmNvbXBvbmVudCc7XG5cbi8vIGVzbGludC1kaXNhYmxlIG1heC1jbGFzc2VzLXBlci1maWxlXG5leHBvcnQgY29uc3QgU1dJU1NfSVNPX0lEID0gJ0NIJztcblxuZXhwb3J0IGNsYXNzIFN0cmVldE51bWJlciB7XG4gICAgbmFtZTogc3RyaW5nO1xufVxuXG5jb25zdCBpc0RlZmluZWQgPSAodmFsdWU6IGJvb2xlYW4pOiBib29sZWFuID0+XG4gICAgdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlO1xuXG5jb25zdCBoYXNJbnB1dENoYW5nZWQgPSAoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiBib29sZWFuID0+XG4gICAgY2hhbmdlICYmICFPYmplY3RIZWxwZXIuaXNFcXVhbChjaGFuZ2UucHJldmlvdXNWYWx1ZSwgY2hhbmdlLmN1cnJlbnRWYWx1ZSk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4taW5wdXQtYWRkcmVzcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLWlucHV0LWFkZHJlc3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5JbnB1dEFkZHJlc3NDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5JbnB1dEFkZHJlc3NDb21wb25lbnRcbiAgICBleHRlbmRzIEZvZWhuSW5wdXRDb21wb25lbnQ8QWRkcmVzcz5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgICBAVmlld0NoaWxkKEZvZWhuSW5wdXRGb3JlaWduTG9jYWxpdHlDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGZvcmVpZ25Mb2NhbGl0eUNvbXBvbmVudDogRm9laG5JbnB1dEZvcmVpZ25Mb2NhbGl0eUNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoRm9laG5JbnB1dEZvcmVpZ25TdHJlZXRDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGZvcmVpZ25TdHJlZXRDb21wb25lbnQ6IEZvZWhuSW5wdXRGb3JlaWduU3RyZWV0Q29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgnZm9yZWlnbkhvdXNlTnVtYmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgZm9yZWlnbkhvdXNlTnVtYmVyOiBGb2VobklucHV0VGV4dENvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgY291bnRyaWVzVXJsID0gJ2FwaS9yZWZpbmYvY291bnRyaWVzJztcblxuICAgIEBJbnB1dCgpXG4gICAgaXNPbmx5U3dpc3MgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBzaG93UG9zdE9mZmljZUJveFRleHQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd0FkcmVzc0xpbmVzID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd0FkcmVzc0xpbmUxID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd0FkcmVzc0xpbmUyID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc3BlY2lmaWVkQ2FudG9uOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGNvdW50cnlSZXF1aXJlZCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHN3aXNzTnBhTG9jYWxpdHlSZXF1aXJlZCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHN0cmVldFJlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBzdHJlZXROdW1iZXJSZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsU3RyZWV0TnVtYmVyID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZm9yZWlnblppcENvZGVSZXF1aXJlZCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIGZvcmVpZ25Mb2NhbGl0eVJlcXVpcmVkID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZm9yZWlnblN0cmVldFJlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBmb3JlaWduU3RyZWV0TnVtYmVyUmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcG9zdE9mZmljZUJveFRleHRSZXF1aXJlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgYWRkcmVzc0xpbmUxUmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgYWRkcmVzc0xpbmUyUmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgd2l0aENvbXBhbnlMb2NhbGl0aWVzID0gZmFsc2U7XG5cbiAgICBjb3VudHJ5OiBDb3VudHJ5O1xuICAgIGxvY2FsaXR5OiBMb2NhbGl0eTtcbiAgICBzdHJlZXQ6IFN0cmVldDtcbiAgICBob3VzZU51bWJlcjogc3RyaW5nO1xuICAgIHBvc3RPZmZpY2VCb3hUZXh0OiBzdHJpbmc7XG4gICAgYWRkcmVzc0xpbmUxOiBzdHJpbmc7XG4gICAgYWRkcmVzc0xpbmUyOiBzdHJpbmc7XG5cbiAgICBjb3VudHJpZXM6IE9ic2VydmFibGU8Q291bnRyeVtdPjtcbiAgICBsb2NhbGl0aWVzOiBPYnNlcnZhYmxlPExvY2FsaXR5W10+O1xuICAgIHN0cmVldHM6IE9ic2VydmFibGU8U3RyZWV0W10+O1xuICAgIHN0cmVldE51bWJlcnM6IE9ic2VydmFibGU8U3RyZWV0TnVtYmVyW10+O1xuXG4gICAgc3RyZWV0Q3VzdG9tRXJyb3JzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICBwcml2YXRlIGlzbzJJZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG4gICAgcHJpdmF0ZSB6aXBDb2RlSWRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xuICAgIHByaXZhdGUgZXN0cklkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihudWxsKTtcblxuICAgIHByaXZhdGUgY291bnRyeU1vZGVsQ2hhbmdlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q291bnRyeT4odW5kZWZpbmVkKTtcbiAgICBwcml2YXRlIGlzT25seVN3aXNzQ2hhbmdlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgcHJpdmF0ZSBtYW5hZ2VEZWZhdWx0Q291bnRyeVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBpZGVudGl0eSA9IDxUPihuOiBUKTogVCA9PiBuO1xuICAgIGNvdW50cnlJZGVudGl0eSA9IChjb3VudHJ5OiBDb3VudHJ5KTogc3RyaW5nID0+IGNvdW50cnkuaXNvMklkO1xuICAgIGxvY2FsaXR5SWRlbnRpdHkgPSAobG9jOiBMb2NhbGl0eSk6IHN0cmluZyA9PiBsb2MucG9zdGFsTG9jYWxpdHlIaXN0b3J5SWQ7XG4gICAgc3RyZWV0SWRlbnRpdHkgPSAoc3RyZWV0OiBTdHJlZXQpOiBzdHJpbmcgPT4gc3RyZWV0LmVzdHJpZDtcbiAgICBzdHJlZXRHZW5lcmF0b3IgPSAobG9uZ05hbWU6IHN0cmluZyk6IFN0cmVldCA9PiAoe1xuICAgICAgICBlc3RyaWQ6IG51bGwsXG4gICAgICAgIGxvbmdOYW1lXG4gICAgfSk7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VEZWZhdWx0Q291bnRyeVN1YnNjcmlwdGlvbiA9IHRoaXMubWFuYWdlRGVmYXVsdENvdW50cnkoKTtcblxuICAgICAgICBpZiAoIXRoaXMuc2hvd1Bvc3RPZmZpY2VCb3hUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLnN0cmVldEN1c3RvbUVycm9ycy5BdExlYXN0T25lTm90TnVsbCA9XG4gICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKCdlcnJvcnMuTm90TnVsbCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb3VudHJpZXMgPSB0aGlzLmdldENvdW50cmllcygpO1xuXG4gICAgICAgIHRoaXMubG9jYWxpdGllcyA9IHRoaXMuaXNvMklkU3ViamVjdC5waXBlKFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIC8vIFRoZSBsaXN0IG9mIGxvY2FsaXRpZXMsIG9yIGFuIGVtcHR5IGFycmF5IGFzIHRoZSBkZWZhdWx0IHZhbHVlLlxuICAgICAgICAgICAgc3dpdGNoTWFwKGlzbzJJZCA9PiB0aGlzLmdldExvY2FsaXRpZXMoaXNvMklkKSksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc3RyZWV0cyA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy56aXBDb2RlSWRTdWJqZWN0LFxuICAgICAgICAgICAgdGhpcy5sb2NhbGl0aWVzXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAvLyBUaGUgemlwQ29kZUlkIHdoZW4gbG9jYWxpdHkgY2hhbmdlcyBvciBtYXRjaCBsb2NhbGl0eSAocG9zdGFsTG9jYWxpdHlIaXN0b3J5SWQpIGZyb20gbW9kZWxcbiAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAoW3ppcENvZGVJZCwgbG9jYWxpdGllc10pID0+XG4gICAgICAgICAgICAgICAgICAgIHppcENvZGVJZCB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmV4dHJhY3RMb2NhbGl0eVppcENvZGVJZChsb2NhbGl0aWVzLCB0aGlzLmxvY2FsaXR5KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAvLyBUaGUgbGlzdCBvZiBzdHJlZXRzIG9yIGEgZGVmYXVsdCB2YWx1ZSB0byBhbiBlbXB0eSBhcnJheVxuICAgICAgICAgICAgc3dpdGNoTWFwKHppcENvZGVJZCA9PiB0aGlzLmdldFN0cmVldHNGb3IoemlwQ29kZUlkKSksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc3RyZWV0TnVtYmVycyA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5lc3RySWRTdWJqZWN0LFxuICAgICAgICAgICAgdGhpcy5zdHJlZXRzXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAvLyBUaGUgZXN0cmlkIHdoZW4gc3RyZWV0IGNoYW5nZXMgb3IgbWF0Y2ggc3RyZWV0IChsb25nTmFtZSkgZnJvbSBtb2RlbFxuICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgIChbZXN0cmlkLCBzdHJlZXRzXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgZXN0cmlkIHx8IHRoaXMuZXh0cmFjdFN0cmVldEVzdHJpZChzdHJlZXRzLCB0aGlzLnN0cmVldClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgLy8gVGhlIGxpc3Qgb2Ygc3RyZWV0cyBvciBhIGRlZmF1bHQgdmFsdWUgdG8gYW4gZW1wdHkgYXJyYXlcbiAgICAgICAgICAgIHN3aXRjaE1hcChlc3RyaWQgPT4gdGhpcy5nZXRTdHJlZXROdW1iZXJGb3IoZXN0cmlkKSksXG4gICAgICAgICAgICAvLyBTb21lIHN0cmVldCBtaWdodCBub3QgaGF2ZSBhbiBuYW1lLCBSZWZJbmYgc29tZXRpbWVzIHJldHVybnMgd2VpcmQgZGF0YS5cbiAgICAgICAgICAgIG1hcCh2YWx1ZXMgPT4gdmFsdWVzLmZpbHRlcihzdHJlZXROdW1iZXIgPT4gISFzdHJlZXROdW1iZXIubmFtZSkpLFxuICAgICAgICAgICAgbWFwKHZhbHVlcyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sbGF0b3IgPSBuZXcgSW50bC5Db2xsYXRvcih1bmRlZmluZWQsIHtcbiAgICAgICAgICAgICAgICAgICAgbnVtZXJpYzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc2Vuc2l0aXZpdHk6ICdiYXNlJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZXMuc29ydCgoYSwgYikgPT4gY29sbGF0b3IuY29tcGFyZShhLm5hbWUsIGIubmFtZSkpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLm1hbmFnZURlZmF1bHRDb3VudHJ5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9kZWxDaGFuZ2U6IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXMubW9kZWw7XG4gICAgICAgIGNvbnN0IGlzT25seVN3aXNzOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzLmlzT25seVN3aXNzO1xuXG4gICAgICAgIGlmIChoYXNJbnB1dENoYW5nZWQobW9kZWxDaGFuZ2UpKSB7XG4gICAgICAgICAgICAvLyBXaGVuIG1vZGVsIGNoYW5nZXMsIHdlIGVuc3VyZSB0byBub3Qgc2VuZCBcInVuZGVmaW5lZFwiIGFueW1vcmVcbiAgICAgICAgICAgIGNvbnN0IGNvdW50cnkgPSAhIW1vZGVsQ2hhbmdlLmN1cnJlbnRWYWx1ZVxuICAgICAgICAgICAgICAgID8gbW9kZWxDaGFuZ2UuY3VycmVudFZhbHVlLmNvdW50cnlcbiAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICB0aGlzLmNvdW50cnlNb2RlbENoYW5nZVN1YmplY3QubmV4dChjb3VudHJ5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFzSW5wdXRDaGFuZ2VkKGlzT25seVN3aXNzKSkge1xuICAgICAgICAgICAgdGhpcy5pc09ubHlTd2lzc0NoYW5nZVN1YmplY3QubmV4dChpc09ubHlTd2lzcy5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlQWRkcmVzcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVOZ01vZGVsKHZhbHVlOiBBZGRyZXNzKTogdm9pZCB7XG4gICAgICAgIGlmICghIXZhbHVlKSB7XG4gICAgICAgICAgICAvLyBhdm9pZCB3cm9uZ2Z1bGwgcHJlZmlsbCBieSBzZXNzaW9uIGluZm9cbiAgICAgICAgICAgIGlmICghdGhpcy5zaG93QWRyZXNzTGluZXMgfHwgIXRoaXMuc2hvd0FkcmVzc0xpbmUxKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUuYWRkcmVzc0xpbmUxID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5zaG93QWRyZXNzTGluZXMgfHwgIXRoaXMuc2hvd0FkcmVzc0xpbmUyKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUuYWRkcmVzc0xpbmUyID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5zaG93UG9zdE9mZmljZUJveFRleHQpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZS5wb3N0T2ZmaWNlQm94VGV4dCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBuZXZlciB1cGRhdGFibGUgaW4gdGhlIGNvbXBvbmVudFxuICAgICAgICAgICAgdmFsdWUucG9zdE9mZmljZUJveE51bWJlciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci51cGRhdGVOZ01vZGVsKHZhbHVlKTtcbiAgICB9XG5cbiAgICBoYW5kbGVVc2VySW5wdXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldFZhbGlkVmFsdWUoKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWxpZFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBBZGRyZXNzKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jb3VudHJ5ID0gdmFsdWUuY291bnRyeTtcbiAgICAgICAgICAgIHRoaXMubG9jYWxpdHkgPSB2YWx1ZS5sb2NhbGl0eTtcbiAgICAgICAgICAgIHRoaXMuc3RyZWV0ID0gdmFsdWUuc3RyZWV0O1xuICAgICAgICAgICAgdGhpcy5ob3VzZU51bWJlciA9IHZhbHVlLmhvdXNlTnVtYmVyO1xuICAgICAgICAgICAgdGhpcy5wb3N0T2ZmaWNlQm94VGV4dCA9IHZhbHVlLnBvc3RPZmZpY2VCb3hUZXh0O1xuICAgICAgICAgICAgdGhpcy5hZGRyZXNzTGluZTEgPSB2YWx1ZS5hZGRyZXNzTGluZTE7XG4gICAgICAgICAgICB0aGlzLmFkZHJlc3NMaW5lMiA9IHZhbHVlLmFkZHJlc3NMaW5lMjtcbiAgICAgICAgfSBlbHNlIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubG9jYWxpdHkgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5zdHJlZXQgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5ob3VzZU51bWJlciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnBvc3RPZmZpY2VCb3hUZXh0ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuYWRkcmVzc0xpbmUxID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuYWRkcmVzc0xpbmUyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzU3dpc3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIShcbiAgICAgICAgICAgIHRoaXMuaXNPbmx5U3dpc3MgfHxcbiAgICAgICAgICAgICh0aGlzLmNvdW50cnkgJiYgdGhpcy5jb3VudHJ5LmlzbzJJZCA9PT0gU1dJU1NfSVNPX0lEKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHVzZXJJbnB1dENvdW50cnkoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuemlwQ29kZUlkU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICB0aGlzLmVzdHJJZFN1YmplY3QubmV4dChudWxsKTtcblxuICAgICAgICB0aGlzLmxvY2FsaXR5ID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdHJlZXQgPSBudWxsO1xuICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5wb3N0T2ZmaWNlQm94VGV4dCA9IG51bGw7XG4gICAgICAgIHRoaXMuYWRkcmVzc0xpbmUxID0gbnVsbDtcbiAgICAgICAgdGhpcy5hZGRyZXNzTGluZTIgPSBudWxsO1xuXG4gICAgICAgIHRoaXMudXBkYXRlQWRkcmVzcygpO1xuICAgICAgICB0aGlzLmhhbmRsZVVzZXJJbnB1dCgpO1xuICAgIH1cblxuICAgIHVzZXJJbnB1dExvY2FsaXR5KGxvY2FsaXR5OiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIGlmICghbG9jYWxpdHkpIHtcbiAgICAgICAgICAgIHRoaXMuemlwQ29kZUlkU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFsd2F5cyByZXNldCBzdWdnZXN0aW9uIGxpc3Qgb2YgaG91c2VOdW1iZXIgd2hlbiBsb2NhbGl0eSBjaGFuZ2VzXG4gICAgICAgIHRoaXMuZXN0cklkU3ViamVjdC5uZXh0KG51bGwpO1xuXG4gICAgICAgIHRoaXMuc3RyZWV0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5ob3VzZU51bWJlciA9IG51bGw7XG5cbiAgICAgICAgdGhpcy51cGRhdGVBZGRyZXNzKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlVXNlcklucHV0KCk7XG4gICAgfVxuXG4gICAgdXNlcklucHV0U3RyZWV0KHN0cmVldDogdW5rbm93bik6IHZvaWQge1xuICAgICAgICBpZiAoIXN0cmVldCkge1xuICAgICAgICAgICAgdGhpcy5lc3RySWRTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ob3VzZU51bWJlciA9IG51bGw7XG4gICAgICAgIHRoaXMuaGFuZGxlVXNlcklucHV0KCk7XG4gICAgfVxuXG4gICAgY291bnRyeVVwZGF0ZWQoY291bnRyeTogQ291bnRyeSk6IHZvaWQge1xuICAgICAgICAvLyBObyBkb3VibGUtYmluZGluZyBvbiBjb3VudHJ5IGluIHZpZXcgdG8gZW5zdXJlIHdlIHVwZGF0ZSBwcm9wZXJseSBtb2RlbFxuICAgICAgICB0aGlzLmNvdW50cnkgPSBjb3VudHJ5O1xuICAgICAgICB0aGlzLnVwZGF0ZUFkZHJlc3MoKTtcblxuICAgICAgICBpZiAoIWNvdW50cnkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgaXNvMklkIH0gPSBjb3VudHJ5O1xuICAgICAgICB0aGlzLmlzbzJJZFN1YmplY3QubmV4dChpc28ySWQpO1xuICAgIH1cblxuICAgIGdldExvY2FsaXR5RGlzcGxheWVkTmFtZShsb2NhbGl0eTogTG9jYWxpdHkpOiBzdHJpbmcgfCB2b2lkIHtcbiAgICAgICAgaWYgKCFsb2NhbGl0eSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGAke2xvY2FsaXR5LnppcENvZGV9ICR7bG9jYWxpdHkubG9uZ05hbWV9YDtcbiAgICB9XG5cbiAgICBsb2NhbGl0eVVwZGF0ZWQobG9jYWxpdHk6IExvY2FsaXR5KTogdm9pZCB7XG4gICAgICAgIC8vIE5vIGRvdWJsZS1iaW5kaW5nIG9uIGxvY2FsaXR5IGluIHZpZXcgdG8gZW5zdXJlIHdlIHVwZGF0ZSBwcm9wZXJseSBtb2RlbFxuICAgICAgICB0aGlzLmxvY2FsaXR5ID0gbG9jYWxpdHk7XG4gICAgICAgIHRoaXMudXBkYXRlQWRkcmVzcygpO1xuXG4gICAgICAgIGlmICghbG9jYWxpdHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgemlwQ29kZUlkIH0gPSBsb2NhbGl0eTtcbiAgICAgICAgdGhpcy56aXBDb2RlSWRTdWJqZWN0Lm5leHQoemlwQ29kZUlkKTtcbiAgICB9XG5cbiAgICBzdHJlZXRVcGRhdGVkKHN0cmVldDogU3RyZWV0KTogdm9pZCB7XG4gICAgICAgIC8vIE5vIGRvdWJsZS1iaW5kaW5nIG9uIHN0cmVldCBpbiB2aWV3IHRvIGVuc3VyZSB3ZSB1cGRhdGUgcHJvcGVybHkgbW9kZWxcbiAgICAgICAgdGhpcy5zdHJlZXQgPSBzdHJlZXQ7XG4gICAgICAgIHRoaXMudXBkYXRlQWRkcmVzcygpO1xuXG4gICAgICAgIGlmICghc3RyZWV0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGVzdHJpZCB9ID0gc3RyZWV0O1xuICAgICAgICB0aGlzLmVzdHJJZFN1YmplY3QubmV4dChlc3RyaWQpO1xuICAgIH1cblxuICAgIGlzU3RyZWV0UmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChpc0RlZmluZWQodGhpcy5zdHJlZXRSZXF1aXJlZCkpIHtcbiAgICAgICAgICAgIC8vIHJlc3BlY3Qgb3ZlcnJpZGVuIHZhbHVlXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdHJlZXRSZXF1aXJlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5zaG93UG9zdE9mZmljZUJveFRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICF0aGlzLnBvc3RPZmZpY2VCb3hUZXh0IHx8ICEhdGhpcy5zdHJlZXQ7XG4gICAgfVxuXG4gICAgaXNGb3JlaWduU3RyZWV0UmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChpc0RlZmluZWQodGhpcy5mb3JlaWduU3RyZWV0UmVxdWlyZWQpKSB7XG4gICAgICAgICAgICAvLyByZXNwZWN0IG92ZXJyaWRlbiB2YWx1ZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9yZWlnblN0cmVldFJlcXVpcmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnNob3dQb3N0T2ZmaWNlQm94VGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gIXRoaXMucG9zdE9mZmljZUJveFRleHQgfHwgISF0aGlzLnN0cmVldDtcbiAgICB9XG5cbiAgICBpc1Bvc3RPZmZpY2VCb3hUZXh0UmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChpc0RlZmluZWQodGhpcy5wb3N0T2ZmaWNlQm94VGV4dFJlcXVpcmVkKSkge1xuICAgICAgICAgICAgLy8gcmVzcGVjdCBvdmVycmlkZW4gdmFsdWVcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3RPZmZpY2VCb3hUZXh0UmVxdWlyZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICF0aGlzLnN0cmVldCB8fCAhIXRoaXMucG9zdE9mZmljZUJveFRleHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb3VudHJpZXMoKTogT2JzZXJ2YWJsZTxDb3VudHJ5W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8Q291bnRyeVtdPih0aGlzLmNvdW50cmllc1VybCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMb2NhbGl0aWVzKGlzbzJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxMb2NhbGl0eVtdPiB7XG4gICAgICAgIGlmIChpc28ySWQgIT09IFNXSVNTX0lTT19JRCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gISF0aGlzLndpdGhDb21wYW55TG9jYWxpdGllc1xuICAgICAgICAgICAgPyAnP3dpdGhDb21wYW55TG9jYWxpdGllcz10cnVlJ1xuICAgICAgICAgICAgOiAnJztcblxuICAgICAgICBpZiAoISF0aGlzLnNwZWNpZmllZENhbnRvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8TG9jYWxpdHlbXT4oXG4gICAgICAgICAgICAgICAgYGFwaS9yZWZpbmYvbG9jYWxpdHkvJHt0aGlzLnNwZWNpZmllZENhbnRvbn0ke3F1ZXJ5UGFyYW1zfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxMb2NhbGl0eVtdPihcbiAgICAgICAgICAgICAgICBgYXBpL3JlZmluZi9sb2NhbGl0eS9hbGwke3F1ZXJ5UGFyYW1zfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFN0cmVldE51bWJlckZvcihlc3RyaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8U3RyZWV0TnVtYmVyW10+IHtcbiAgICAgICAgaWYgKCFlc3RyaWQpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cmwgPSBgYXBpL3JlZmluZi9hZGRyZXNzZXMvJHtlc3RyaWR9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8U3RyZWV0TnVtYmVyW10+KHVybCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdHJlZXRzRm9yKHppcENvZGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTdHJlZXRbXT4ge1xuICAgICAgICBpZiAoIXppcENvZGVJZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVybCA9IGBhcGkvcmVmaW5mL3N0cmVldHMvJHt6aXBDb2RlSWR9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8U3RyZWV0W10+KHVybCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhckF1dG9jb21wbGV0ZXNXaGVuQ291bnRyeUlzVW5hcHByb3ByaWF0ZWRUb0NvbXBvbmVudENvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9kZWxFbXB0eSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlzT25seVN3aXNzICYmXG4gICAgICAgICAgICB0aGlzLmNvdW50cnkgJiZcbiAgICAgICAgICAgIHRoaXMuY291bnRyeS5pc28ySWQgIT09IFNXSVNTX0lTT19JRFxuICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIERvIG5vdCByZW1vdmUgdGhpcyB3YXJuaW5nLiBOZWVkZWQgZm9yIGRlYnVnZ2luZyBhdCBhbGwgdGltZS5cbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAgICAgICAgIGBDb3VudHJ5IGFkZHJlc3Mgd2FzICcke3RoaXMuY291bnRyeS5pc28ySWR9Jy4gT25seSBzd2lzcyBpcyBhc2tlZCBpbiBjb21wb25lbnQgJ2ZvZWhuLWlucHV0LWFkZHJlc3MnIGNvbmZpZ3VyYXRpb24uIEFkZHJlc3MgbW9kZWwgcmVzZXR0ZWQuYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJBdXRvY29tcGxldGVzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFN3aXNzQ291bnRyeSgpOiBDb3VudHJ5IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlzbzJJZDogU1dJU1NfSVNPX0lELFxuICAgICAgICAgICAgc2hvcnROYW1lRnI6ICdTdWlzc2UnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0Q291bnRyeSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPbmx5U3dpc3MgfHwgIXRoaXMuY291bnRyeSB8fCAhdGhpcy5jb3VudHJ5LmlzbzJJZCkge1xuICAgICAgICAgICAgdGhpcy5jb3VudHJ5ID0gdGhpcy5nZXRTd2lzc0NvdW50cnkoKTtcbiAgICAgICAgICAgIHRoaXMuaXNvMklkU3ViamVjdC5uZXh0KFNXSVNTX0lTT19JRCk7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlQWRkcmVzcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhckF1dG9jb21wbGV0ZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY291bnRyeSA9IG51bGw7XG4gICAgICAgIHRoaXMuc3RyZWV0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5sb2NhbGl0eSA9IG51bGw7XG4gICAgICAgIHRoaXMuaG91c2VOdW1iZXIgPSBudWxsO1xuICAgICAgICAvLyBObyB1cGRhdGVBZGRyZXNzKCkgaGVyZSBiZWNhdXNlIGRvbmUgaW4gc2V0RGVmYXVsdENvdW50cnkoKVxuICAgIH1cblxuICAgIHByaXZhdGUgZXh0cmFjdExvY2FsaXR5WmlwQ29kZUlkKFxuICAgICAgICBsb2NhbGl0aWVzOiBMb2NhbGl0eVtdLFxuICAgICAgICBsb2NhbGl0eVRvTWF0Y2g6IExvY2FsaXR5XG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGxvY2FsaXR5VG9NYXRjaCAmJiBsb2NhbGl0eVRvTWF0Y2gucG9zdGFsTG9jYWxpdHlIaXN0b3J5SWQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZWQgPSBsb2NhbGl0aWVzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGxvY2FsaXR5OiBMb2NhbGl0eSkgPT5cbiAgICAgICAgICAgICAgICAgICAgbG9jYWxpdHkucG9zdGFsTG9jYWxpdHlIaXN0b3J5SWQgPT09XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsaXR5VG9NYXRjaC5wb3N0YWxMb2NhbGl0eUhpc3RvcnlJZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWQuemlwQ29kZUlkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRyYWN0U3RyZWV0RXN0cmlkKFxuICAgICAgICBzdHJlZXRzOiBTdHJlZXRbXSxcbiAgICAgICAgc3RyZWV0VG9NYXRjaDogU3RyZWV0XG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHN0cmVldFRvTWF0Y2ggJiYgc3RyZWV0VG9NYXRjaC5sb25nTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlZCA9IHN0cmVldHMuZmluZChcbiAgICAgICAgICAgICAgICAoc3RyZWV0OiBTdHJlZXQpID0+IHN0cmVldC5sb25nTmFtZSA9PT0gc3RyZWV0VG9NYXRjaC5sb25nTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWQuZXN0cmlkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYWxpZENvdW50cnkoKTogQ291bnRyeSB7XG4gICAgICAgIC8vIEJlIHN1cmUgdG8gYWx3YXlzIHNlbmQgU3dpc3MgY291bnRyeSB3aGVuICdpc09ubHlTd2lzcycgaXMgc2V0IHRvIHRydWVcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNPbmx5U3dpc3MgPyB0aGlzLmdldFN3aXNzQ291bnRyeSgpIDogdGhpcy5jb3VudHJ5O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRWYWx1ZSgpOiBBZGRyZXNzIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9kZWxFbXB0eSgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbF8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb3VudHJ5OiB0aGlzLmdldFZhbGlkQ291bnRyeSgpLFxuICAgICAgICAgICAgbG9jYWxpdHk6IHRoaXMuZ2V0VmFsaWRMb2NhbGl0eSh0aGlzLmxvY2FsaXR5KSxcbiAgICAgICAgICAgIHN0cmVldDogdGhpcy5zdHJlZXQsXG4gICAgICAgICAgICBob3VzZU51bWJlcjogdGhpcy5ob3VzZU51bWJlcixcbiAgICAgICAgICAgIHBvc3RPZmZpY2VCb3hUZXh0OiB0aGlzLnBvc3RPZmZpY2VCb3hUZXh0LFxuICAgICAgICAgICAgYWRkcmVzc0xpbmUxOiB0aGlzLmFkZHJlc3NMaW5lMSxcbiAgICAgICAgICAgIGFkZHJlc3NMaW5lMjogdGhpcy5hZGRyZXNzTGluZTJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbGlkTG9jYWxpdHkodmFsdWU6IExvY2FsaXR5KTogTG9jYWxpdHkge1xuICAgICAgICAvLyBQUkVTVEFLSVQtMzUyOiBOZWVkIGEgZmFrZSAncG9zdGFsTG9jYWxpdHlIaXN0b3J5SWQnIGZvciBpbmRpdmlkdWFsIGVycm9ycyBvbiAnemlwQ29kZScgYW5kICdsb25nTmFtZSdcbiAgICAgICAgaWYgKCF0aGlzLmlzU3dpc3MoKSAmJiAhdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHBvc3RhbExvY2FsaXR5SGlzdG9yeUlkOiAnLTEnIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc01vZGVsRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy5pc09ubHlTd2lzcyB8fFxuICAgICAgICAgICAgICAgICF0aGlzLmNvdW50cnkgfHxcbiAgICAgICAgICAgICAgICBPYmplY3RIZWxwZXIuaXNFbXB0eSh0aGlzLmNvdW50cnkpKSAmJlxuICAgICAgICAgICAgKCF0aGlzLmxvY2FsaXR5IHx8IE9iamVjdEhlbHBlci5pc0VtcHR5KHRoaXMubG9jYWxpdHkpKSAmJlxuICAgICAgICAgICAgKCF0aGlzLnN0cmVldCB8fCBPYmplY3RIZWxwZXIuaXNFbXB0eSh0aGlzLnN0cmVldCkpICYmXG4gICAgICAgICAgICB0aGlzLmlzRW1wdHkodGhpcy5ob3VzZU51bWJlcikgJiZcbiAgICAgICAgICAgIHRoaXMuaXNFbXB0eSh0aGlzLnBvc3RPZmZpY2VCb3hUZXh0KSAmJlxuICAgICAgICAgICAgdGhpcy5pc0VtcHR5KHRoaXMuYWRkcmVzc0xpbmUxKSAmJlxuICAgICAgICAgICAgdGhpcy5pc0VtcHR5KHRoaXMuYWRkcmVzc0xpbmUyKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFuYWdlRGVmYXVsdENvdW50cnkoKTogU3Vic2NyaXB0aW9uIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgIHRoaXMuY291bnRyeU1vZGVsQ2hhbmdlU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHByZXZpb3VzLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzPy5pc28ySWQgPT09IGN1cnJlbnQ/LmlzbzJJZFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0aGlzLmlzT25seVN3aXNzQ2hhbmdlU3ViamVjdFxuICAgICAgICAgICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFwKChbY291bnRyeSwgaXNPbmx5U3dpc3NdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIGNvdW50cnkgc2VsZWN0aW9uIGlzIGFsbG93ZWQsIHdlIG5lZWQgdG8gY2hlY2sgXCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gc2V0IGRlZmF1bHQgY291bnRyeSBvbmx5IG9uIGNvbXBvbmVudCBpbml0aWFsaXphdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc09ubHlTd2lzcyAmJiBjb3VudHJ5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERlZmF1bHRDb3VudHJ5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNPbmx5U3dpc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZXJlIGlzIGEgY291bnRyeSwgd2UgbmVlZCB0byBjaGVjayBpZiBpdCBoYXMgdG8gYmUgY2xlYW5lZCBhbmQgc2V0IHRvIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFjb3VudHJ5ICYmICFPYmplY3RIZWxwZXIuaXNFbXB0eShjb3VudHJ5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQXV0b2NvbXBsZXRlc1doZW5Db3VudHJ5SXNVbmFwcHJvcHJpYXRlZFRvQ29tcG9uZW50Q29uZmlndXJhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERlZmF1bHRDb3VudHJ5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgpXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoKSArICdDb250YWluZXInXCJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXBcIlxuICAgIFtjbGFzcy5oYXMtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbY2xhc3MudmQtZm9ybS1ncm91cC1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFt0YWJJbmRleF09XCItMVwiXG4+XG4gICAgPGZpZWxkc2V0XG4gICAgICAgIGNsYXNzPVwibWItM1wiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiZ2V0RGVzY3JpYmVkQnkoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKSB8fCBudWxsXCJcbiAgICA+XG4gICAgICAgIDxsZWdlbmRcbiAgICAgICAgICAgICpuZ0lmPVwiISFsYWJlbFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJpc0xhYmVsU3JPbmx5ID8gJ3Zpc3VhbGx5LWhpZGRlbicgOiAndmQtcCdcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImxhYmVsXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFyZXF1aXJlZCAmJiAhaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbFwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAnZm9laG4taW5wdXQub3B0aW9uYWwnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sZWdlbmQ+XG5cbiAgICAgICAgPGZvZWhuLXZhbGlkYXRpb24tYWxlcnRzIFtjb21wb25lbnRdPVwidGhpc1wiPjwvZm9laG4tdmFsaWRhdGlvbi1hbGVydHM+XG5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAqbmdJZj1cImhlbHBUZXh0XCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoKSArICdIZWxwJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaGVscFRleHRcIlxuICAgICAgICA+PC9zbWFsbD5cblxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgPGZvZWhuLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgKm5nSWY9XCIhaXNPbmx5U3dpc3NcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidmb2Vobi1pbnB1dC1hZGRyZXNzLmNvdW50cnkubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgICAgICAgICAgW2VsZW1lbnRzXT1cImNvdW50cmllcyB8IGFzeW5jXCJcbiAgICAgICAgICAgIGVsZW1lbnRMYWJlbD1cInNob3J0TmFtZUZyXCJcbiAgICAgICAgICAgIFtlbGVtZW50VmFsdWVdPVwiaWRlbnRpdHlcIlxuICAgICAgICAgICAgW2VsZW1lbnRWYWx1ZUlkZW50aXR5XT1cImNvdW50cnlJZGVudGl0eVwiXG4gICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY291bnRyeVVwZGF0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAodXNlcklucHV0KT1cInVzZXJJbnB1dENvdW50cnkoKVwiXG4gICAgICAgICAgICBbbW9kZWxdPVwiY291bnRyeVwiXG4gICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJy5jb3VudHJ5J1wiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiY291bnRyeVJlcXVpcmVkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgID48L2ZvZWhuLWF1dG9jb21wbGV0ZT5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTd2lzcygpXCI+XG4gICAgICAgICAgICA8Zm9laG4tYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidmb2Vobi1pbnB1dC1hZGRyZXNzLmxvY2FsaXR5LmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudHNdPVwibG9jYWxpdGllcyB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudExhYmVsXT1cImdldExvY2FsaXR5RGlzcGxheWVkTmFtZVwiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRWYWx1ZV09XCJpZGVudGl0eVwiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRWYWx1ZUlkZW50aXR5XT1cImxvY2FsaXR5SWRlbnRpdHlcIlxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJsb2NhbGl0eVVwZGF0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJ1c2VySW5wdXRMb2NhbGl0eSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbbW9kZWxdPVwibG9jYWxpdHlcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgKyAnLmxvY2FsaXR5J1wiXG4gICAgICAgICAgICAgICAgW2FsbG93Q3VzdG9tVmFsdWVdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJzd2lzc05wYUxvY2FsaXR5UmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA+PC9mb2Vobi1hdXRvY29tcGxldGU+XG5cbiAgICAgICAgICAgIDxmb2Vobi1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2ZvZWhuLWlucHV0LWFkZHJlc3Muc3RyZWV0LmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudHNdPVwic3RyZWV0cyB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBlbGVtZW50TGFiZWw9XCJsb25nTmFtZVwiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRWYWx1ZV09XCJpZGVudGl0eVwiXG4gICAgICAgICAgICAgICAgW2VsZW1lbnRWYWx1ZUlkZW50aXR5XT1cInN0cmVldElkZW50aXR5XCJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwic3RyZWV0VXBkYXRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbbW9kZWxdPVwic3RyZWV0XCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJy5zdHJlZXQnXCJcbiAgICAgICAgICAgICAgICBbYWxsb3dDdXN0b21WYWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbY3VzdG9tVmFsdWVNb2RlbEdlbmVyYXRvcl09XCJzdHJlZXRHZW5lcmF0b3JcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc1N0cmVldFJlcXVpcmVkKClcIlxuICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3Muc3RyZWV0LmhlbHAtdGV4dCcgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2N1c3RvbUVycm9yc109XCJzdHJlZXRDdXN0b21FcnJvcnNcIlxuICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwidXNlcklucHV0U3RyZWV0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA+PC9mb2Vobi1hdXRvY29tcGxldGU+XG5cbiAgICAgICAgICAgIDxmb2Vobi1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLmhvdXNlTnVtYmVyLmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudHNdPVwic3RyZWV0TnVtYmVycyB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICBlbGVtZW50TGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICBlbGVtZW50VmFsdWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJob3VzZU51bWJlclwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcuaG91c2VOdW1iZXInXCJcbiAgICAgICAgICAgICAgICBbYWxsb3dDdXN0b21WYWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLmhvdXNlTnVtYmVyLmhlbHAtdGV4dCcgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInVwZGF0ZUFkZHJlc3MoKVwiXG4gICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInN0cmVldE51bWJlclJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBbaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbFN0cmVldE51bWJlclxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgID48L2ZvZWhuLWF1dG9jb21wbGV0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1N3aXNzKClcIj5cbiAgICAgICAgICAgIDwhLS1cbiAgICAgICAgICAgIENvbXBvbmVudCA8Zm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eT4gaXMgc3BlY2lhbCBiZWNhdXNlIHdlIHVzZSB0aGUgc2FtZSBtb2RlbCB3aGVuIHN3aXNzIG9yIGZvcmVpZ25lci5cbiAgICAgICAgICAgIFRvIGRvIHNvLCB3ZSBuZWVkOlxuICAgICAgICAgICAgICAgIC0gRXJyb3JzIHdpbGwgYmUgYmluZCBvbiAnbG9jYWxpdHknIHdoZW4gTlVMTCBvciBvbiAnemlwQ29kZScgYW5kICdsb25nTmFtZScgbW9kZWwgaW5zaWRlIGNvbXBvbmVudCB3aGVuIEVNUFRZXG4gICAgICAgICAgICAgICAgLSBIaWRlIGxhYmVsIGZyb20gY29tcG9uZW50IGJlY2F1c2Ugd2UgbmVlZCBsYWJlbCBmcm9tIGNoaWxkcmVuIHRvIGJlIGRpc3BsYXllZCAoaXNMYWJlbFNyT25seTogdHJ1ZSlcbiAgICAgICAgICAgICAgICAtIHJlcXVpcmVkIGFuZCBkaXNhYmxlZCBwYXJhbXMgYXJlIHRyYW5zbWl0dGVkIHRvIGNoaWxkcmVuXG4gICAgICAgICAgICAgLS0+XG4gICAgICAgICAgICA8Zm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eVxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInZm9laG4taW5wdXQtYWRkcmVzcy5sb2NhbGl0eS5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcubG9jYWxpdHknXCJcbiAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJsb2NhbGl0eVwiXG4gICAgICAgICAgICAgICAgW3ppcENvZGVSZXF1aXJlZF09XCJmb3JlaWduWmlwQ29kZVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBbbG9jYWxpdHlSZXF1aXJlZF09XCJmb3JlaWduTG9jYWxpdHlSZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgW2lzTGFiZWxTck9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb3VudHJ5IHx8IGRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlQWRkcmVzcygpXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICAgICAgICAgID48L2ZvZWhuLWlucHV0LWZvcmVpZ24tbG9jYWxpdHk+XG4gICAgICAgICAgICA8IS0tXG4gICAgICAgICAgICBDb21wb25lbnQgPGZvZWhuLWlucHV0LWZvcmVpZ24tc3RyZWV0PiBpcyBzcGVjaWFsIGJlY2F1c2Ugd2UgdXNlIHRoZSBzYW1lIG1vZGVsIHdoZW4gc3dpc3Mgb3IgZm9yZWlnbmVyLlxuICAgICAgICAgICAgVG8gZG8gc28sIHdlIG5lZWQ6XG4gICAgICAgICAgICAgICAgLSBFcnJvcnMgd2lsbCBiZSBiaW5kIG9uICdzdHJlZXQnIHdoZW4gTlVMTCBvciBvbiAnbG9uZ05hbWUnIG1vZGVsIGluc2lkZSBjb21wb25lbnQgd2hlbiBFTVBUWVxuICAgICAgICAgICAgICAgIC0gcmVxdWlyZWQsIGhlbHBUZXh0LCBpc0xhYmVsU3JPbmx5IGFuZCBkaXNhYmxlZCAgcGFyYW1zIGFyZSB0cmFuc21pdHRlZCB0byBjaGlsZHJlblxuICAgICAgICAgICAgIC0tPlxuICAgICAgICAgICAgPGZvZWhuLWlucHV0LWZvcmVpZ24tc3RyZWV0XG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidmb2Vobi1pbnB1dC1hZGRyZXNzLnN0cmVldC5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcuc3RyZWV0J1wiXG4gICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic3RyZWV0XCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNGb3JlaWduU3RyZWV0UmVxdWlyZWQoKVwiXG4gICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIlxuICAgICAgICAgICAgICAgICAgICAnZm9laG4taW5wdXQtYWRkcmVzcy5zdHJlZXQuaGVscC10ZXh0JyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbY3VzdG9tRXJyb3JzXT1cInN0cmVldEN1c3RvbUVycm9yc1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb3VudHJ5IHx8IGRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlQWRkcmVzcygpXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICAgICAgICAgID48L2ZvZWhuLWlucHV0LWZvcmVpZ24tc3RyZWV0PlxuXG4gICAgICAgICAgICA8Zm9laG4taW5wdXQtdGV4dFxuICAgICAgICAgICAgICAgICNmb3JlaWduSG91c2VOdW1iZXJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLmhvdXNlTnVtYmVyLmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJy5ob3VzZU51bWJlcidcIlxuICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImhvdXNlTnVtYmVyXCJcbiAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLmhvdXNlTnVtYmVyLmhlbHAtdGV4dCcgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb3VudHJ5IHx8IGRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlQWRkcmVzcygpXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZm9yZWlnblN0cmVldE51bWJlclJlcXVpcmVkXCJcbiAgICAgICAgICAgID48L2ZvZWhuLWlucHV0LXRleHQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxmb2Vobi1pbnB1dC10ZXh0XG4gICAgICAgICAgICAqbmdJZj1cInNob3dQb3N0T2ZmaWNlQm94VGV4dFwiXG4gICAgICAgICAgICBbKG1vZGVsKV09XCJwb3N0T2ZmaWNlQm94VGV4dFwiXG4gICAgICAgICAgICBbaGVscFRleHRdPVwiXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MucG9zdE9mZmljZUJveFRleHQuaGVscC10ZXh0J1xuICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLnBvc3RPZmZpY2VCb3hUZXh0LmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcucG9zdE9mZmljZUJveFRleHQnXCJcbiAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVBZGRyZXNzKClcIlxuICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNQb3N0T2ZmaWNlQm94VGV4dFJlcXVpcmVkKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgPjwvZm9laG4taW5wdXQtdGV4dD5cblxuICAgICAgICA8Zm9laG4taW5wdXQtdGV4dFxuICAgICAgICAgICAgKm5nSWY9XCJzaG93QWRyZXNzTGluZXMgJiYgc2hvd0FkcmVzc0xpbmUxXCJcbiAgICAgICAgICAgIFsobW9kZWwpXT1cImFkZHJlc3NMaW5lMVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ2ZvZWhuLWlucHV0LWFkZHJlc3MuYWRkcmVzc0xpbmUxLmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgKyAnLmFkZHJlc3NMaW5lMSdcIlxuICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInVwZGF0ZUFkZHJlc3MoKVwiXG4gICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJhZGRyZXNzTGluZTFSZXF1aXJlZFwiXG4gICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIidhZGRyZXNzLWxpbmUyJ1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICA+PC9mb2Vobi1pbnB1dC10ZXh0PlxuXG4gICAgICAgIDxmb2Vobi1pbnB1dC10ZXh0XG4gICAgICAgICAgICAqbmdJZj1cInNob3dBZHJlc3NMaW5lcyAmJiBzaG93QWRyZXNzTGluZTJcIlxuICAgICAgICAgICAgWyhtb2RlbCldPVwiYWRkcmVzc0xpbmUyXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCInZm9laG4taW5wdXQtYWRkcmVzcy5hZGRyZXNzTGluZTIubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcuYWRkcmVzc0xpbmUyJ1wiXG4gICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlQWRkcmVzcygpXCJcbiAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cImFkZHJlc3NMaW5lMlJlcXVpcmVkXCJcbiAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiJ2FkZHJlc3MtbGluZTMnXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgID48L2ZvZWhuLWlucHV0LXRleHQ+XG4gICAgPC9maWVsZHNldD5cbjwvZGl2PlxuIl19
481
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWRkcmVzcy9mb2Vobi1pbnB1dC1hZGRyZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZGRyZXNzL2ZvZWhuLWlucHV0LWFkZHJlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQU1MLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZUFBZSxFQUNmLGFBQWEsRUFFYixFQUFFLEVBRUwsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0gsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxHQUFHLEVBQ04sTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHeEQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDOUYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7O0FBRTFGLHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBRWpDLE1BQU0sT0FBTyxZQUFZO0NBRXhCO0FBRUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFjLEVBQVcsRUFBRSxDQUMxQyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUM7QUFFdEMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFvQixF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a0NBQWtDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUloRSxzQkFBc0I7c0JBRHJCLFNBQVM7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUk5RCxrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUlsRCxZQUFZO3NCQURYLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLHdCQUF3QjtzQkFEdkIsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUlOLHFDQUFxQztzQkFEcEMsS0FBSztnQkFJTixzQkFBc0I7c0JBRHJCLEtBQUs7Z0JBSU4sdUJBQXVCO3NCQUR0QixLQUFLO2dCQUlOLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFJTiwyQkFBMkI7c0JBRDFCLEtBQUs7Z0JBSU4seUJBQXlCO3NCQUR4QixLQUFLO2dCQUlOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4scUJBQXFCO3NCQURwQixLQUFLO2dCQUlOLGtCQUFrQjtzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFNpbXBsZUNoYW5nZSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQmVoYXZpb3JTdWJqZWN0LFxuICAgIGNvbWJpbmVMYXRlc3QsXG4gICAgT2JzZXJ2YWJsZSxcbiAgICBvZixcbiAgICBTdWJzY3JpcHRpb25cbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIGRlYm91bmNlVGltZSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgICBtYXAsXG4gICAgc2hhcmVSZXBsYXksXG4gICAgc3dpdGNoTWFwLFxuICAgIHRhcFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9laG5JbnB1dFRleHRDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC10ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYmplY3RIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL29iamVjdC5oZWxwZXInO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IEFkZHJlc3MsIENvdW50cnksIExvY2FsaXR5LCBTdHJlZXQgfSBmcm9tICcuL2FkZHJlc3MudHlwZSc7XG5pbXBvcnQgeyBGb2VobklucHV0Rm9yZWlnbkxvY2FsaXR5Q29tcG9uZW50IH0gZnJvbSAnLi9mb2Vobi1pbnB1dC1mb3JlaWduLWxvY2FsaXR5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb2VobklucHV0Rm9yZWlnblN0cmVldENvbXBvbmVudCB9IGZyb20gJy4vZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50JztcblxuLy8gZXNsaW50LWRpc2FibGUgbWF4LWNsYXNzZXMtcGVyLWZpbGVcbmV4cG9ydCBjb25zdCBTV0lTU19JU09fSUQgPSAnQ0gnO1xuXG5leHBvcnQgY2xhc3MgU3RyZWV0TnVtYmVyIHtcbiAgICBuYW1lOiBzdHJpbmc7XG59XG5cbmNvbnN0IGlzRGVmaW5lZCA9ICh2YWx1ZTogYm9vbGVhbik6IGJvb2xlYW4gPT5cbiAgICB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2U7XG5cbmNvbnN0IGhhc0lucHV0Q2hhbmdlZCA9IChjaGFuZ2U6IFNpbXBsZUNoYW5nZSk6IGJvb2xlYW4gPT5cbiAgICBjaGFuZ2UgJiYgIU9iamVjdEhlbHBlci5pc0VxdWFsKGNoYW5nZS5wcmV2aW91c1ZhbHVlLCBjaGFuZ2UuY3VycmVudFZhbHVlKTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1pbnB1dC1hZGRyZXNzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQtYWRkcmVzcy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2VobklucHV0QWRkcmVzc0NvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobklucHV0QWRkcmVzc0NvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxBZGRyZXNzPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICAgIEBWaWV3Q2hpbGQoRm9laG5JbnB1dEZvcmVpZ25Mb2NhbGl0eUNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgZm9yZWlnbkxvY2FsaXR5Q29tcG9uZW50OiBGb2VobklucHV0Rm9yZWlnbkxvY2FsaXR5Q29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZChGb2VobklucHV0Rm9yZWlnblN0cmVldENvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgZm9yZWlnblN0cmVldENvbXBvbmVudDogRm9laG5JbnB1dEZvcmVpZ25TdHJlZXRDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKCdmb3JlaWduSG91c2VOdW1iZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBmb3JlaWduSG91c2VOdW1iZXI6IEZvZWhuSW5wdXRUZXh0Q29tcG9uZW50O1xuXG4gICAgQElucHV0KClcbiAgICBjb3VudHJpZXNVcmwgPSAnYXBpL3JlZmluZi9jb3VudHJpZXMnO1xuXG4gICAgQElucHV0KClcbiAgICBpc09ubHlTd2lzcyA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHNob3dQb3N0T2ZmaWNlQm94VGV4dCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzaG93QWRyZXNzTGluZXMgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBzaG93QWRyZXNzTGluZTEgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBzaG93QWRyZXNzTGluZTIgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBzcGVjaWZpZWRDYW50b246IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgY291bnRyeVJlcXVpcmVkID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc3dpc3NOcGFMb2NhbGl0eVJlcXVpcmVkID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc3RyZWV0UmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIHN0cmVldE51bWJlclJlcXVpcmVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGhpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxTdHJlZXROdW1iZXIgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBmb3JlaWduWmlwQ29kZVJlcXVpcmVkID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZm9yZWlnbkxvY2FsaXR5UmVxdWlyZWQgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBmb3JlaWduU3RyZWV0UmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIGZvcmVpZ25TdHJlZXROdW1iZXJSZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwb3N0T2ZmaWNlQm94VGV4dFJlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBhZGRyZXNzTGluZTFSZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBhZGRyZXNzTGluZTJSZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICB3aXRoQ29tcGFueUxvY2FsaXRpZXMgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgd2l0aERlZmF1bHRDb3VudHJ5ID0gdHJ1ZTtcblxuICAgIGNvdW50cnk6IENvdW50cnk7XG4gICAgbG9jYWxpdHk6IExvY2FsaXR5O1xuICAgIHN0cmVldDogU3RyZWV0O1xuICAgIGhvdXNlTnVtYmVyOiBzdHJpbmc7XG4gICAgcG9zdE9mZmljZUJveFRleHQ6IHN0cmluZztcbiAgICBhZGRyZXNzTGluZTE6IHN0cmluZztcbiAgICBhZGRyZXNzTGluZTI6IHN0cmluZztcblxuICAgIGNvdW50cmllczogT2JzZXJ2YWJsZTxDb3VudHJ5W10+O1xuICAgIGxvY2FsaXRpZXM6IE9ic2VydmFibGU8TG9jYWxpdHlbXT47XG4gICAgc3RyZWV0czogT2JzZXJ2YWJsZTxTdHJlZXRbXT47XG4gICAgc3RyZWV0TnVtYmVyczogT2JzZXJ2YWJsZTxTdHJlZXROdW1iZXJbXT47XG5cbiAgICBzdHJlZXRDdXN0b21FcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcblxuICAgIHByaXZhdGUgaXNvMklkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihudWxsKTtcbiAgICBwcml2YXRlIHppcENvZGVJZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG4gICAgcHJpdmF0ZSBlc3RySWRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xuXG4gICAgcHJpdmF0ZSBjb3VudHJ5TW9kZWxDaGFuZ2VTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb3VudHJ5Pih1bmRlZmluZWQpO1xuICAgIHByaXZhdGUgaXNPbmx5U3dpc3NDaGFuZ2VTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICBwcml2YXRlIG1hbmFnZURlZmF1bHRDb3VudHJ5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnlTZXJ2aWNlOiBTZGtEaWN0aW9uYXJ5U2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGlkZW50aXR5ID0gPFQ+KG46IFQpOiBUID0+IG47XG4gICAgY291bnRyeUlkZW50aXR5ID0gKGNvdW50cnk6IENvdW50cnkpOiBzdHJpbmcgPT4gY291bnRyeS5pc28ySWQ7XG4gICAgbG9jYWxpdHlJZGVudGl0eSA9IChsb2M6IExvY2FsaXR5KTogc3RyaW5nID0+IGxvYy5wb3N0YWxMb2NhbGl0eUhpc3RvcnlJZDtcbiAgICBzdHJlZXRJZGVudGl0eSA9IChzdHJlZXQ6IFN0cmVldCk6IHN0cmluZyA9PiBzdHJlZXQuZXN0cmlkO1xuICAgIHN0cmVldEdlbmVyYXRvciA9IChsb25nTmFtZTogc3RyaW5nKTogU3RyZWV0ID0+ICh7XG4gICAgICAgIGVzdHJpZDogbnVsbCxcbiAgICAgICAgbG9uZ05hbWVcbiAgICB9KTtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLm1hbmFnZURlZmF1bHRDb3VudHJ5U3Vic2NyaXB0aW9uID0gdGhpcy5tYW5hZ2VEZWZhdWx0Q291bnRyeSgpO1xuXG4gICAgICAgIGlmICghdGhpcy5zaG93UG9zdE9mZmljZUJveFRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RyZWV0Q3VzdG9tRXJyb3JzLkF0TGVhc3RPbmVOb3ROdWxsID1cbiAgICAgICAgICAgICAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoJ2Vycm9ycy5Ob3ROdWxsJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvdW50cmllcyA9IHRoaXMuZ2V0Q291bnRyaWVzKCk7XG5cbiAgICAgICAgdGhpcy5sb2NhbGl0aWVzID0gdGhpcy5pc28ySWRTdWJqZWN0LnBpcGUoXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgLy8gVGhlIGxpc3Qgb2YgbG9jYWxpdGllcywgb3IgYW4gZW1wdHkgYXJyYXkgYXMgdGhlIGRlZmF1bHQgdmFsdWUuXG4gICAgICAgICAgICBzd2l0Y2hNYXAoaXNvMklkID0+IHRoaXMuZ2V0TG9jYWxpdGllcyhpc28ySWQpKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdHJlZXRzID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLnppcENvZGVJZFN1YmplY3QsXG4gICAgICAgICAgICB0aGlzLmxvY2FsaXRpZXNcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIC8vIFRoZSB6aXBDb2RlSWQgd2hlbiBsb2NhbGl0eSBjaGFuZ2VzIG9yIG1hdGNoIGxvY2FsaXR5IChwb3N0YWxMb2NhbGl0eUhpc3RvcnlJZCkgZnJvbSBtb2RlbFxuICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgIChbemlwQ29kZUlkLCBsb2NhbGl0aWVzXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgemlwQ29kZUlkIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXh0cmFjdExvY2FsaXR5WmlwQ29kZUlkKGxvY2FsaXRpZXMsIHRoaXMubG9jYWxpdHkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIC8vIFRoZSBsaXN0IG9mIHN0cmVldHMgb3IgYSBkZWZhdWx0IHZhbHVlIHRvIGFuIGVtcHR5IGFycmF5XG4gICAgICAgICAgICBzd2l0Y2hNYXAoemlwQ29kZUlkID0+IHRoaXMuZ2V0U3RyZWV0c0Zvcih6aXBDb2RlSWQpKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdHJlZXROdW1iZXJzID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLmVzdHJJZFN1YmplY3QsXG4gICAgICAgICAgICB0aGlzLnN0cmVldHNcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIC8vIFRoZSBlc3RyaWQgd2hlbiBzdHJlZXQgY2hhbmdlcyBvciBtYXRjaCBzdHJlZXQgKGxvbmdOYW1lKSBmcm9tIG1vZGVsXG4gICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgKFtlc3RyaWQsIHN0cmVldHNdKSA9PlxuICAgICAgICAgICAgICAgICAgICBlc3RyaWQgfHwgdGhpcy5leHRyYWN0U3RyZWV0RXN0cmlkKHN0cmVldHMsIHRoaXMuc3RyZWV0KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAvLyBUaGUgbGlzdCBvZiBzdHJlZXRzIG9yIGEgZGVmYXVsdCB2YWx1ZSB0byBhbiBlbXB0eSBhcnJheVxuICAgICAgICAgICAgc3dpdGNoTWFwKGVzdHJpZCA9PiB0aGlzLmdldFN0cmVldE51bWJlckZvcihlc3RyaWQpKSxcbiAgICAgICAgICAgIC8vIFNvbWUgc3RyZWV0IG1pZ2h0IG5vdCBoYXZlIGFuIG5hbWUsIFJlZkluZiBzb21ldGltZXMgcmV0dXJucyB3ZWlyZCBkYXRhLlxuICAgICAgICAgICAgbWFwKHZhbHVlcyA9PiB2YWx1ZXMuZmlsdGVyKHN0cmVldE51bWJlciA9PiAhIXN0cmVldE51bWJlci5uYW1lKSksXG4gICAgICAgICAgICBtYXAodmFsdWVzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2xsYXRvciA9IG5ldyBJbnRsLkNvbGxhdG9yKHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgICAgICAgICBudW1lcmljOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzZW5zaXRpdml0eTogJ2Jhc2UnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlcy5zb3J0KChhLCBiKSA9PiBjb2xsYXRvci5jb21wYXJlKGEubmFtZSwgYi5uYW1lKSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMubWFuYWdlRGVmYXVsdENvdW50cnlTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBtb2RlbENoYW5nZTogU2ltcGxlQ2hhbmdlID0gY2hhbmdlcy5tb2RlbDtcbiAgICAgICAgY29uc3QgaXNPbmx5U3dpc3M6IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXMuaXNPbmx5U3dpc3M7XG5cbiAgICAgICAgaWYgKGhhc0lucHV0Q2hhbmdlZChtb2RlbENoYW5nZSkpIHtcbiAgICAgICAgICAgIC8vIFdoZW4gbW9kZWwgY2hhbmdlcywgd2UgZW5zdXJlIHRvIG5vdCBzZW5kIFwidW5kZWZpbmVkXCIgYW55bW9yZVxuICAgICAgICAgICAgY29uc3QgY291bnRyeSA9ICEhbW9kZWxDaGFuZ2UuY3VycmVudFZhbHVlXG4gICAgICAgICAgICAgICAgPyBtb2RlbENoYW5nZS5jdXJyZW50VmFsdWUuY291bnRyeVxuICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgIHRoaXMuY291bnRyeU1vZGVsQ2hhbmdlU3ViamVjdC5uZXh0KGNvdW50cnkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChoYXNJbnB1dENoYW5nZWQoaXNPbmx5U3dpc3MpKSB7XG4gICAgICAgICAgICB0aGlzLmlzT25seVN3aXNzQ2hhbmdlU3ViamVjdC5uZXh0KGlzT25seVN3aXNzLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVBZGRyZXNzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZU5nTW9kZWwodmFsdWU6IEFkZHJlc3MpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdmFsdWUpIHtcbiAgICAgICAgICAgIC8vIGF2b2lkIHdyb25nZnVsbCBwcmVmaWxsIGJ5IHNlc3Npb24gaW5mb1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dBZHJlc3NMaW5lcyB8fCAhdGhpcy5zaG93QWRyZXNzTGluZTEpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZS5hZGRyZXNzTGluZTEgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dBZHJlc3NMaW5lcyB8fCAhdGhpcy5zaG93QWRyZXNzTGluZTIpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZS5hZGRyZXNzTGluZTIgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dQb3N0T2ZmaWNlQm94VGV4dCkge1xuICAgICAgICAgICAgICAgIHZhbHVlLnBvc3RPZmZpY2VCb3hUZXh0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIG5ldmVyIHVwZGF0YWJsZSBpbiB0aGUgY29tcG9uZW50XG4gICAgICAgICAgICB2YWx1ZS5wb3N0T2ZmaWNlQm94TnVtYmVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLnVwZGF0ZU5nTW9kZWwodmFsdWUpO1xuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IEFkZHJlc3MpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNvdW50cnkgPSB2YWx1ZS5jb3VudHJ5O1xuICAgICAgICAgICAgdGhpcy5sb2NhbGl0eSA9IHZhbHVlLmxvY2FsaXR5O1xuICAgICAgICAgICAgdGhpcy5zdHJlZXQgPSB2YWx1ZS5zdHJlZXQ7XG4gICAgICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gdmFsdWUuaG91c2VOdW1iZXI7XG4gICAgICAgICAgICB0aGlzLnBvc3RPZmZpY2VCb3hUZXh0ID0gdmFsdWUucG9zdE9mZmljZUJveFRleHQ7XG4gICAgICAgICAgICB0aGlzLmFkZHJlc3NMaW5lMSA9IHZhbHVlLmFkZHJlc3NMaW5lMTtcbiAgICAgICAgICAgIHRoaXMuYWRkcmVzc0xpbmUyID0gdmFsdWUuYWRkcmVzc0xpbmUyO1xuICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbGl0eSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnN0cmVldCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMucG9zdE9mZmljZUJveFRleHQgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5hZGRyZXNzTGluZTEgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5hZGRyZXNzTGluZTIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNTd2lzcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKFxuICAgICAgICAgICAgdGhpcy5pc09ubHlTd2lzcyB8fFxuICAgICAgICAgICAgKHRoaXMuY291bnRyeSAmJiB0aGlzLmNvdW50cnkuaXNvMklkID09PSBTV0lTU19JU09fSUQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdXNlcklucHV0Q291bnRyeSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy56aXBDb2RlSWRTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMuZXN0cklkU3ViamVjdC5uZXh0KG51bGwpO1xuXG4gICAgICAgIHRoaXMubG9jYWxpdHkgPSBudWxsO1xuICAgICAgICB0aGlzLnN0cmVldCA9IG51bGw7XG4gICAgICAgIHRoaXMuaG91c2VOdW1iZXIgPSBudWxsO1xuICAgICAgICB0aGlzLnBvc3RPZmZpY2VCb3hUZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5hZGRyZXNzTGluZTEgPSBudWxsO1xuICAgICAgICB0aGlzLmFkZHJlc3NMaW5lMiA9IG51bGw7XG5cbiAgICAgICAgdGhpcy51cGRhdGVBZGRyZXNzKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlVXNlcklucHV0KCk7XG4gICAgfVxuXG4gICAgdXNlcklucHV0TG9jYWxpdHkobG9jYWxpdHk6IHVua25vd24pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFsb2NhbGl0eSkge1xuICAgICAgICAgICAgdGhpcy56aXBDb2RlSWRTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWx3YXlzIHJlc2V0IHN1Z2dlc3Rpb24gbGlzdCBvZiBob3VzZU51bWJlciB3aGVuIGxvY2FsaXR5IGNoYW5nZXNcbiAgICAgICAgdGhpcy5lc3RySWRTdWJqZWN0Lm5leHQobnVsbCk7XG5cbiAgICAgICAgdGhpcy5zdHJlZXQgPSBudWxsO1xuICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gbnVsbDtcblxuICAgICAgICB0aGlzLnVwZGF0ZUFkZHJlc3MoKTtcbiAgICAgICAgdGhpcy5oYW5kbGVVc2VySW5wdXQoKTtcbiAgICB9XG5cbiAgICB1c2VySW5wdXRTdHJlZXQoc3RyZWV0OiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIGlmICghc3RyZWV0KSB7XG4gICAgICAgICAgICB0aGlzLmVzdHJJZFN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhvdXNlTnVtYmVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5oYW5kbGVVc2VySW5wdXQoKTtcbiAgICB9XG5cbiAgICBjb3VudHJ5VXBkYXRlZChjb3VudHJ5OiBDb3VudHJ5KTogdm9pZCB7XG4gICAgICAgIC8vIE5vIGRvdWJsZS1iaW5kaW5nIG9uIGNvdW50cnkgaW4gdmlldyB0byBlbnN1cmUgd2UgdXBkYXRlIHByb3Blcmx5IG1vZGVsXG4gICAgICAgIHRoaXMuY291bnRyeSA9IGNvdW50cnk7XG4gICAgICAgIHRoaXMudXBkYXRlQWRkcmVzcygpO1xuXG4gICAgICAgIGlmICghY291bnRyeSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBpc28ySWQgfSA9IGNvdW50cnk7XG4gICAgICAgIHRoaXMuaXNvMklkU3ViamVjdC5uZXh0KGlzbzJJZCk7XG4gICAgfVxuXG4gICAgZ2V0TG9jYWxpdHlEaXNwbGF5ZWROYW1lKGxvY2FsaXR5OiBMb2NhbGl0eSk6IHN0cmluZyB8IHZvaWQge1xuICAgICAgICBpZiAoIWxvY2FsaXR5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7bG9jYWxpdHkuemlwQ29kZX0gJHtsb2NhbGl0eS5sb25nTmFtZX1gO1xuICAgIH1cblxuICAgIGxvY2FsaXR5VXBkYXRlZChsb2NhbGl0eTogTG9jYWxpdHkpOiB2b2lkIHtcbiAgICAgICAgLy8gTm8gZG91YmxlLWJpbmRpbmcgb24gbG9jYWxpdHkgaW4gdmlldyB0byBlbnN1cmUgd2UgdXBkYXRlIHByb3Blcmx5IG1vZGVsXG4gICAgICAgIHRoaXMubG9jYWxpdHkgPSBsb2NhbGl0eTtcbiAgICAgICAgdGhpcy51cGRhdGVBZGRyZXNzKCk7XG5cbiAgICAgICAgaWYgKCFsb2NhbGl0eSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyB6aXBDb2RlSWQgfSA9IGxvY2FsaXR5O1xuICAgICAgICB0aGlzLnppcENvZGVJZFN1YmplY3QubmV4dCh6aXBDb2RlSWQpO1xuICAgIH1cblxuICAgIHN0cmVldFVwZGF0ZWQoc3RyZWV0OiBTdHJlZXQpOiB2b2lkIHtcbiAgICAgICAgLy8gTm8gZG91YmxlLWJpbmRpbmcgb24gc3RyZWV0IGluIHZpZXcgdG8gZW5zdXJlIHdlIHVwZGF0ZSBwcm9wZXJseSBtb2RlbFxuICAgICAgICB0aGlzLnN0cmVldCA9IHN0cmVldDtcbiAgICAgICAgdGhpcy51cGRhdGVBZGRyZXNzKCk7XG5cbiAgICAgICAgaWYgKCFzdHJlZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgZXN0cmlkIH0gPSBzdHJlZXQ7XG4gICAgICAgIHRoaXMuZXN0cklkU3ViamVjdC5uZXh0KGVzdHJpZCk7XG4gICAgfVxuXG4gICAgaXNTdHJlZXRSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzRGVmaW5lZCh0aGlzLnN0cmVldFJlcXVpcmVkKSkge1xuICAgICAgICAgICAgLy8gcmVzcGVjdCBvdmVycmlkZW4gdmFsdWVcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0cmVldFJlcXVpcmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnNob3dQb3N0T2ZmaWNlQm94VGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gIXRoaXMucG9zdE9mZmljZUJveFRleHQgfHwgISF0aGlzLnN0cmVldDtcbiAgICB9XG5cbiAgICBpc0ZvcmVpZ25TdHJlZXRSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzRGVmaW5lZCh0aGlzLmZvcmVpZ25TdHJlZXRSZXF1aXJlZCkpIHtcbiAgICAgICAgICAgIC8vIHJlc3BlY3Qgb3ZlcnJpZGVuIHZhbHVlXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JlaWduU3RyZWV0UmVxdWlyZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuc2hvd1Bvc3RPZmZpY2VCb3hUZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhdGhpcy5wb3N0T2ZmaWNlQm94VGV4dCB8fCAhIXRoaXMuc3RyZWV0O1xuICAgIH1cblxuICAgIGlzUG9zdE9mZmljZUJveFRleHRSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzRGVmaW5lZCh0aGlzLnBvc3RPZmZpY2VCb3hUZXh0UmVxdWlyZWQpKSB7XG4gICAgICAgICAgICAvLyByZXNwZWN0IG92ZXJyaWRlbiB2YWx1ZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zdE9mZmljZUJveFRleHRSZXF1aXJlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIXRoaXMuc3RyZWV0IHx8ICEhdGhpcy5wb3N0T2ZmaWNlQm94VGV4dDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvdW50cmllcygpOiBPYnNlcnZhYmxlPENvdW50cnlbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxDb3VudHJ5W10+KHRoaXMuY291bnRyaWVzVXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExvY2FsaXRpZXMoaXNvMklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPExvY2FsaXR5W10+IHtcbiAgICAgICAgaWYgKGlzbzJJZCAhPT0gU1dJU1NfSVNPX0lEKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSAhIXRoaXMud2l0aENvbXBhbnlMb2NhbGl0aWVzXG4gICAgICAgICAgICA/ICc/d2l0aENvbXBhbnlMb2NhbGl0aWVzPXRydWUnXG4gICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgIGlmICghIXRoaXMuc3BlY2lmaWVkQ2FudG9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxMb2NhbGl0eVtdPihcbiAgICAgICAgICAgICAgICBgYXBpL3JlZmluZi9sb2NhbGl0eS8ke3RoaXMuc3BlY2lmaWVkQ2FudG9ufSR7cXVlcnlQYXJhbXN9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PExvY2FsaXR5W10+KFxuICAgICAgICAgICAgICAgIGBhcGkvcmVmaW5mL2xvY2FsaXR5L2FsbCR7cXVlcnlQYXJhbXN9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U3RyZWV0TnVtYmVyRm9yKGVzdHJpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTdHJlZXROdW1iZXJbXT4ge1xuICAgICAgICBpZiAoIWVzdHJpZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVybCA9IGBhcGkvcmVmaW5mL2FkZHJlc3Nlcy8ke2VzdHJpZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxTdHJlZXROdW1iZXJbXT4odXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFN0cmVldHNGb3IoemlwQ29kZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFN0cmVldFtdPiB7XG4gICAgICAgIGlmICghemlwQ29kZUlkKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXJsID0gYGFwaS9yZWZpbmYvc3RyZWV0cy8ke3ppcENvZGVJZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxTdHJlZXRbXT4odXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyQXV0b2NvbXBsZXRlc1doZW5Db3VudHJ5SXNVbmFwcHJvcHJpYXRlZFRvQ29tcG9uZW50Q29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2RlbEVtcHR5KCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaXNPbmx5U3dpc3MgJiZcbiAgICAgICAgICAgIHRoaXMuY291bnRyeSAmJlxuICAgICAgICAgICAgdGhpcy5jb3VudHJ5LmlzbzJJZCAhPT0gU1dJU1NfSVNPX0lEXG4gICAgICAgICkge1xuICAgICAgICAgICAgLy8gRG8gbm90IHJlbW92ZSB0aGlzIHdhcm5pbmcuIE5lZWRlZCBmb3IgZGVidWdnaW5nIGF0IGFsbCB0aW1lLlxuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICAgICAgICAgYENvdW50cnkgYWRkcmVzcyB3YXMgJyR7dGhpcy5jb3VudHJ5LmlzbzJJZH0nLiBPbmx5IHN3aXNzIGlzIGFza2VkIGluIGNvbXBvbmVudCAnZm9laG4taW5wdXQtYWRkcmVzcycgY29uZmlndXJhdGlvbi4gQWRkcmVzcyBtb2RlbCByZXNldHRlZC5gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jbGVhckF1dG9jb21wbGV0ZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U3dpc3NDb3VudHJ5KCk6IENvdW50cnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXNvMklkOiBTV0lTU19JU09fSUQsXG4gICAgICAgICAgICBzaG9ydE5hbWVGcjogJ1N1aXNzZSdcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERlZmF1bHRDb3VudHJ5KCk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLndpdGhEZWZhdWx0Q291bnRyeSAmJlxuICAgICAgICAgICAgKHRoaXMuaXNPbmx5U3dpc3MgfHwgIXRoaXMuY291bnRyeSB8fCAhdGhpcy5jb3VudHJ5LmlzbzJJZClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNvdW50cnkgPSB0aGlzLmdldFN3aXNzQ291bnRyeSgpO1xuICAgICAgICAgICAgdGhpcy5pc28ySWRTdWJqZWN0Lm5leHQoU1dJU1NfSVNPX0lEKTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVBZGRyZXNzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyQXV0b2NvbXBsZXRlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb3VudHJ5ID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdHJlZXQgPSBudWxsO1xuICAgICAgICB0aGlzLmxvY2FsaXR5ID0gbnVsbDtcbiAgICAgICAgdGhpcy5ob3VzZU51bWJlciA9IG51bGw7XG4gICAgICAgIC8vIE5vIHVwZGF0ZUFkZHJlc3MoKSBoZXJlIGJlY2F1c2UgZG9uZSBpbiBzZXREZWZhdWx0Q291bnRyeSgpXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRyYWN0TG9jYWxpdHlaaXBDb2RlSWQoXG4gICAgICAgIGxvY2FsaXRpZXM6IExvY2FsaXR5W10sXG4gICAgICAgIGxvY2FsaXR5VG9NYXRjaDogTG9jYWxpdHlcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBpZiAobG9jYWxpdHlUb01hdGNoICYmIGxvY2FsaXR5VG9NYXRjaC5wb3N0YWxMb2NhbGl0eUhpc3RvcnlJZCkge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlZCA9IGxvY2FsaXRpZXMuZmluZChcbiAgICAgICAgICAgICAgICAobG9jYWxpdHk6IExvY2FsaXR5KSA9PlxuICAgICAgICAgICAgICAgICAgICBsb2NhbGl0eS5wb3N0YWxMb2NhbGl0eUhpc3RvcnlJZCA9PT1cbiAgICAgICAgICAgICAgICAgICAgbG9jYWxpdHlUb01hdGNoLnBvc3RhbExvY2FsaXR5SGlzdG9yeUlkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlZC56aXBDb2RlSWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dHJhY3RTdHJlZXRFc3RyaWQoXG4gICAgICAgIHN0cmVldHM6IFN0cmVldFtdLFxuICAgICAgICBzdHJlZXRUb01hdGNoOiBTdHJlZXRcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBpZiAoc3RyZWV0VG9NYXRjaCAmJiBzdHJlZXRUb01hdGNoLmxvbmdOYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkID0gc3RyZWV0cy5maW5kKFxuICAgICAgICAgICAgICAgIChzdHJlZXQ6IFN0cmVldCkgPT4gc3RyZWV0LmxvbmdOYW1lID09PSBzdHJlZXRUb01hdGNoLmxvbmdOYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlZC5lc3RyaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbGlkQ291bnRyeSgpOiBDb3VudHJ5IHtcbiAgICAgICAgLy8gQmUgc3VyZSB0byBhbHdheXMgc2VuZCBTd2lzcyBjb3VudHJ5IHdoZW4gJ2lzT25seVN3aXNzJyBpcyBzZXQgdG8gdHJ1ZVxuICAgICAgICByZXR1cm4gdGhpcy5pc09ubHlTd2lzcyA/IHRoaXMuZ2V0U3dpc3NDb3VudHJ5KCkgOiB0aGlzLmNvdW50cnk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYWxpZFZhbHVlKCk6IEFkZHJlc3MgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2RlbEVtcHR5KCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsXyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvdW50cnk6IHRoaXMuZ2V0VmFsaWRDb3VudHJ5KCksXG4gICAgICAgICAgICBsb2NhbGl0eTogdGhpcy5nZXRWYWxpZExvY2FsaXR5KHRoaXMubG9jYWxpdHkpLFxuICAgICAgICAgICAgc3RyZWV0OiB0aGlzLnN0cmVldCxcbiAgICAgICAgICAgIGhvdXNlTnVtYmVyOiB0aGlzLmhvdXNlTnVtYmVyLFxuICAgICAgICAgICAgcG9zdE9mZmljZUJveFRleHQ6IHRoaXMucG9zdE9mZmljZUJveFRleHQsXG4gICAgICAgICAgICBhZGRyZXNzTGluZTE6IHRoaXMuYWRkcmVzc0xpbmUxLFxuICAgICAgICAgICAgYWRkcmVzc0xpbmUyOiB0aGlzLmFkZHJlc3NMaW5lMlxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRMb2NhbGl0eSh2YWx1ZTogTG9jYWxpdHkpOiBMb2NhbGl0eSB7XG4gICAgICAgIC8vIFBSRVNUQUtJVC0zNTI6IE5lZWQgYSBmYWtlICdwb3N0YWxMb2NhbGl0eUhpc3RvcnlJZCcgZm9yIGluZGl2aWR1YWwgZXJyb3JzIG9uICd6aXBDb2RlJyBhbmQgJ2xvbmdOYW1lJ1xuICAgICAgICBpZiAoIXRoaXMuaXNTd2lzcygpICYmICF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgcG9zdGFsTG9jYWxpdHlIaXN0b3J5SWQ6ICctMScgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTW9kZWxFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0aGlzLmlzT25seVN3aXNzIHx8XG4gICAgICAgICAgICAgICAgIXRoaXMuY291bnRyeSB8fFxuICAgICAgICAgICAgICAgIE9iamVjdEhlbHBlci5pc0VtcHR5KHRoaXMuY291bnRyeSkpICYmXG4gICAgICAgICAgICAoIXRoaXMubG9jYWxpdHkgfHwgT2JqZWN0SGVscGVyLmlzRW1wdHkodGhpcy5sb2NhbGl0eSkpICYmXG4gICAgICAgICAgICAoIXRoaXMuc3RyZWV0IHx8IE9iamVjdEhlbHBlci5pc0VtcHR5KHRoaXMuc3RyZWV0KSkgJiZcbiAgICAgICAgICAgIHRoaXMuaXNFbXB0eSh0aGlzLmhvdXNlTnVtYmVyKSAmJlxuICAgICAgICAgICAgdGhpcy5pc0VtcHR5KHRoaXMucG9zdE9mZmljZUJveFRleHQpICYmXG4gICAgICAgICAgICB0aGlzLmlzRW1wdHkodGhpcy5hZGRyZXNzTGluZTEpICYmXG4gICAgICAgICAgICB0aGlzLmlzRW1wdHkodGhpcy5hZGRyZXNzTGluZTIpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYW5hZ2VEZWZhdWx0Q291bnRyeSgpOiBTdWJzY3JpcHRpb24ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudHJ5TW9kZWxDaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAocHJldmlvdXMsIGN1cnJlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXM/LmlzbzJJZCA9PT0gY3VycmVudD8uaXNvMklkXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRoaXMuaXNPbmx5U3dpc3NDaGFuZ2VTdWJqZWN0XG4gICAgICAgICAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YXAoKFtjb3VudHJ5LCBpc09ubHlTd2lzc10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gY291bnRyeSBzZWxlY3Rpb24gaXMgYWxsb3dlZCwgd2UgbmVlZCB0byBjaGVjayBcInVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBzZXQgZGVmYXVsdCBjb3VudHJ5IG9ubHkgb24gY29tcG9uZW50IGluaXRpYWxpemF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzT25seVN3aXNzICYmIGNvdW50cnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdENvdW50cnkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc09ubHlTd2lzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlcmUgaXMgYSBjb3VudHJ5LCB3ZSBuZWVkIHRvIGNoZWNrIGlmIGl0IGhhcyB0byBiZSBjbGVhbmVkIGFuZCBzZXQgdG8gZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIWNvdW50cnkgJiYgIU9iamVjdEhlbHBlci5pc0VtcHR5KGNvdW50cnkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJBdXRvY29tcGxldGVzV2hlbkNvdW50cnlJc1VuYXBwcm9wcmlhdGVkVG9Db21wb25lbnRDb25maWd1cmF0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdENvdW50cnkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKClcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgW2F0dHIuaWRdPVwiYnVpbGRJZCgpICsgJ0NvbnRhaW5lcidcIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cFwiXG4gICAgW2NsYXNzLmhhcy1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFtjbGFzcy52ZC1mb3JtLWdyb3VwLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW3RhYkluZGV4XT1cIi0xXCJcbj5cbiAgICA8ZmllbGRzZXRcbiAgICAgICAgY2xhc3M9XCJtYi0zXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJnZXREZXNjcmliZWRCeSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgID5cbiAgICAgICAgPGxlZ2VuZFxuICAgICAgICAgICAgKm5nSWY9XCIhIWxhYmVsXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImlzTGFiZWxTck9ubHkgPyAndmlzdWFsbHktaGlkZGVuJyA6ICd2ZC1wJ1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwibGFiZWxcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJlcXVpcmVkICYmICFoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ICdmb2Vobi1pbnB1dC5vcHRpb25hbCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2xlZ2VuZD5cblxuICAgICAgICA8Zm9laG4tdmFsaWRhdGlvbi1hbGVydHMgW2NvbXBvbmVudF09XCJ0aGlzXCI+PC9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cz5cblxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiaGVscFRleHRcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRJZCgpICsgJ0hlbHAnXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJoZWxwVGV4dFwiXG4gICAgICAgID48L3NtYWxsPlxuXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgICAgICA8Zm9laG4tYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAqbmdJZj1cIiFpc09ubHlTd2lzc1wiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ2ZvZWhuLWlucHV0LWFkZHJlc3MuY291bnRyeS5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICBbZWxlbWVudHNdPVwiY291bnRyaWVzIHwgYXN5bmNcIlxuICAgICAgICAgICAgZWxlbWVudExhYmVsPVwic2hvcnROYW1lRnJcIlxuICAgICAgICAgICAgW2VsZW1lbnRWYWx1ZV09XCJpZGVudGl0eVwiXG4gICAgICAgICAgICBbZWxlbWVudFZhbHVlSWRlbnRpdHldPVwiY291bnRyeUlkZW50aXR5XCJcbiAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjb3VudHJ5VXBkYXRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICh1c2VySW5wdXQpPVwidXNlcklucHV0Q291bnRyeSgpXCJcbiAgICAgICAgICAgIFttb2RlbF09XCJjb3VudHJ5XCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgKyAnLmNvdW50cnknXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJjb3VudHJ5UmVxdWlyZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgPjwvZm9laG4tYXV0b2NvbXBsZXRlPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1N3aXNzKClcIj5cbiAgICAgICAgICAgIDxmb2Vobi1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2ZvZWhuLWlucHV0LWFkZHJlc3MubG9jYWxpdHkubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50c109XCJsb2NhbGl0aWVzIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50TGFiZWxdPVwiZ2V0TG9jYWxpdHlEaXNwbGF5ZWROYW1lXCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudFZhbHVlXT1cImlkZW50aXR5XCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudFZhbHVlSWRlbnRpdHldPVwibG9jYWxpdHlJZGVudGl0eVwiXG4gICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImxvY2FsaXR5VXBkYXRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cInVzZXJJbnB1dExvY2FsaXR5KCRldmVudClcIlxuICAgICAgICAgICAgICAgIFttb2RlbF09XCJsb2NhbGl0eVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcubG9jYWxpdHknXCJcbiAgICAgICAgICAgICAgICBbYWxsb3dDdXN0b21WYWx1ZV09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInN3aXNzTnBhTG9jYWxpdHlSZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgID48L2ZvZWhuLWF1dG9jb21wbGV0ZT5cblxuICAgICAgICAgICAgPGZvZWhuLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInZm9laG4taW5wdXQtYWRkcmVzcy5zdHJlZXQubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50c109XCJzdHJlZXRzIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIGVsZW1lbnRMYWJlbD1cImxvbmdOYW1lXCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudFZhbHVlXT1cImlkZW50aXR5XCJcbiAgICAgICAgICAgICAgICBbZWxlbWVudFZhbHVlSWRlbnRpdHldPVwic3RyZWV0SWRlbnRpdHlcIlxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJzdHJlZXRVcGRhdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFttb2RlbF09XCJzdHJlZXRcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgKyAnLnN0cmVldCdcIlxuICAgICAgICAgICAgICAgIFthbGxvd0N1c3RvbVZhbHVlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtjdXN0b21WYWx1ZU1vZGVsR2VuZXJhdG9yXT1cInN0cmVldEdlbmVyYXRvclwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImlzU3RyZWV0UmVxdWlyZWQoKVwiXG4gICAgICAgICAgICAgICAgW2hlbHBUZXh0XT1cIlxuICAgICAgICAgICAgICAgICAgICAnZm9laG4taW5wdXQtYWRkcmVzcy5zdHJlZXQuaGVscC10ZXh0JyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbY3VzdG9tRXJyb3JzXT1cInN0cmVldEN1c3RvbUVycm9yc1wiXG4gICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJ1c2VySW5wdXRTdHJlZXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgID48L2ZvZWhuLWF1dG9jb21wbGV0ZT5cblxuICAgICAgICAgICAgPGZvZWhuLWF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MuaG91c2VOdW1iZXIubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtlbGVtZW50c109XCJzdHJlZXROdW1iZXJzIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIGVsZW1lbnRMYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgIGVsZW1lbnRWYWx1ZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImhvdXNlTnVtYmVyXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJy5ob3VzZU51bWJlcidcIlxuICAgICAgICAgICAgICAgIFthbGxvd0N1c3RvbVZhbHVlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MuaG91c2VOdW1iZXIuaGVscC10ZXh0JyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlQWRkcmVzcygpXCJcbiAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwic3RyZWV0TnVtYmVyUmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIFtoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICBoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsU3RyZWV0TnVtYmVyXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgPjwvZm9laG4tYXV0b2NvbXBsZXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU3dpc3MoKVwiPlxuICAgICAgICAgICAgPCEtLVxuICAgICAgICAgICAgQ29tcG9uZW50IDxmb2Vobi1pbnB1dC1mb3JlaWduLWxvY2FsaXR5PiBpcyBzcGVjaWFsIGJlY2F1c2Ugd2UgdXNlIHRoZSBzYW1lIG1vZGVsIHdoZW4gc3dpc3Mgb3IgZm9yZWlnbmVyLlxuICAgICAgICAgICAgVG8gZG8gc28sIHdlIG5lZWQ6XG4gICAgICAgICAgICAgICAgLSBFcnJvcnMgd2lsbCBiZSBiaW5kIG9uICdsb2NhbGl0eScgd2hlbiBOVUxMIG9yIG9uICd6aXBDb2RlJyBhbmQgJ2xvbmdOYW1lJyBtb2RlbCBpbnNpZGUgY29tcG9uZW50IHdoZW4gRU1QVFlcbiAgICAgICAgICAgICAgICAtIEhpZGUgbGFiZWwgZnJvbSBjb21wb25lbnQgYmVjYXVzZSB3ZSBuZWVkIGxhYmVsIGZyb20gY2hpbGRyZW4gdG8gYmUgZGlzcGxheWVkIChpc0xhYmVsU3JPbmx5OiB0cnVlKVxuICAgICAgICAgICAgICAgIC0gcmVxdWlyZWQgYW5kIGRpc2FibGVkIHBhcmFtcyBhcmUgdHJhbnNtaXR0ZWQgdG8gY2hpbGRyZW5cbiAgICAgICAgICAgICAtLT5cbiAgICAgICAgICAgIDxmb2Vobi1pbnB1dC1mb3JlaWduLWxvY2FsaXR5XG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidmb2Vobi1pbnB1dC1hZGRyZXNzLmxvY2FsaXR5LmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJy5sb2NhbGl0eSdcIlxuICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImxvY2FsaXR5XCJcbiAgICAgICAgICAgICAgICBbemlwQ29kZVJlcXVpcmVkXT1cImZvcmVpZ25aaXBDb2RlUmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIFtsb2NhbGl0eVJlcXVpcmVkXT1cImZvcmVpZ25Mb2NhbGl0eVJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBbaXNMYWJlbFNyT25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvdW50cnkgfHwgZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVBZGRyZXNzKClcIlxuICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgPjwvZm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eT5cbiAgICAgICAgICAgIDwhLS1cbiAgICAgICAgICAgIENvbXBvbmVudCA8Zm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQ+IGlzIHNwZWNpYWwgYmVjYXVzZSB3ZSB1c2UgdGhlIHNhbWUgbW9kZWwgd2hlbiBzd2lzcyBvciBmb3JlaWduZXIuXG4gICAgICAgICAgICBUbyBkbyBzbywgd2UgbmVlZDpcbiAgICAgICAgICAgICAgICAtIEVycm9ycyB3aWxsIGJlIGJpbmQgb24gJ3N0cmVldCcgd2hlbiBOVUxMIG9yIG9uICdsb25nTmFtZScgbW9kZWwgaW5zaWRlIGNvbXBvbmVudCB3aGVuIEVNUFRZXG4gICAgICAgICAgICAgICAgLSByZXF1aXJlZCwgaGVscFRleHQsIGlzTGFiZWxTck9ubHkgYW5kIGRpc2FibGVkICBwYXJhbXMgYXJlIHRyYW5zbWl0dGVkIHRvIGNoaWxkcmVuXG4gICAgICAgICAgICAgLS0+XG4gICAgICAgICAgICA8Zm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXRcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2ZvZWhuLWlucHV0LWFkZHJlc3Muc3RyZWV0LmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJy5zdHJlZXQnXCJcbiAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzdHJlZXRcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc0ZvcmVpZ25TdHJlZXRSZXF1aXJlZCgpXCJcbiAgICAgICAgICAgICAgICBbaGVscFRleHRdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1pbnB1dC1hZGRyZXNzLnN0cmVldC5oZWxwLXRleHQnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtjdXN0b21FcnJvcnNdPVwic3RyZWV0Q3VzdG9tRXJyb3JzXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvdW50cnkgfHwgZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVBZGRyZXNzKClcIlxuICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgPjwvZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQ+XG5cbiAgICAgICAgICAgIDxmb2Vobi1pbnB1dC10ZXh0XG4gICAgICAgICAgICAgICAgI2ZvcmVpZ25Ib3VzZU51bWJlclxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MuaG91c2VOdW1iZXIubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgKyAnLmhvdXNlTnVtYmVyJ1wiXG4gICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiaG91c2VOdW1iZXJcIlxuICAgICAgICAgICAgICAgIFtoZWxwVGV4dF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MuaG91c2VOdW1iZXIuaGVscC10ZXh0JyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvdW50cnkgfHwgZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVBZGRyZXNzKClcIlxuICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmb3JlaWduU3RyZWV0TnVtYmVyUmVxdWlyZWRcIlxuICAgICAgICAgICAgPjwvZm9laG4taW5wdXQtdGV4dD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGZvZWhuLWlucHV0LXRleHRcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1Bvc3RPZmZpY2VCb3hUZXh0XCJcbiAgICAgICAgICAgIFsobW9kZWwpXT1cInBvc3RPZmZpY2VCb3hUZXh0XCJcbiAgICAgICAgICAgIFtoZWxwVGV4dF09XCJcbiAgICAgICAgICAgICAgICAnZm9laG4taW5wdXQtYWRkcmVzcy5wb3N0T2ZmaWNlQm94VGV4dC5oZWxwLXRleHQnXG4gICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLWlucHV0LWFkZHJlc3MucG9zdE9mZmljZUJveFRleHQubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJy5wb3N0T2ZmaWNlQm94VGV4dCdcIlxuICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInVwZGF0ZUFkZHJlc3MoKVwiXG4gICAgICAgICAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc1Bvc3RPZmZpY2VCb3hUZXh0UmVxdWlyZWQoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICA+PC9mb2Vobi1pbnB1dC10ZXh0PlxuXG4gICAgICAgIDxmb2Vobi1pbnB1dC10ZXh0XG4gICAgICAgICAgICAqbmdJZj1cInNob3dBZHJlc3NMaW5lcyAmJiBzaG93QWRyZXNzTGluZTFcIlxuICAgICAgICAgICAgWyhtb2RlbCldPVwiYWRkcmVzc0xpbmUxXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCInZm9laG4taW5wdXQtYWRkcmVzcy5hZGRyZXNzTGluZTEubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcuYWRkcmVzc0xpbmUxJ1wiXG4gICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlQWRkcmVzcygpXCJcbiAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cImFkZHJlc3NMaW5lMVJlcXVpcmVkXCJcbiAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiJ2FkZHJlc3MtbGluZTInXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgID48L2ZvZWhuLWlucHV0LXRleHQ+XG5cbiAgICAgICAgPGZvZWhuLWlucHV0LXRleHRcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0FkcmVzc0xpbmVzICYmIHNob3dBZHJlc3NMaW5lMlwiXG4gICAgICAgICAgICBbKG1vZGVsKV09XCJhZGRyZXNzTGluZTJcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidmb2Vobi1pbnB1dC1hZGRyZXNzLmFkZHJlc3NMaW5lMi5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJy5hZGRyZXNzTGluZTInXCJcbiAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVBZGRyZXNzKClcIlxuICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiYWRkcmVzc0xpbmUyUmVxdWlyZWRcIlxuICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInYWRkcmVzcy1saW5lMydcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgPjwvZm9laG4taW5wdXQtdGV4dD5cbiAgICA8L2ZpZWxkc2V0PlxuPC9kaXY+XG4iXX0=
@@ -40,8 +40,8 @@ export class FoehnInputForeignLocalityComponent extends FoehnInputComponent {
40
40
  }
41
41
  return { zipCode: this.zipCode, longName: this.longName };
42
42
  }
43
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnInputForeignLocalityComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
44
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: FoehnInputForeignLocalityComponent, selector: "foehn-input-foreign-locality", inputs: { localityRequired: "localityRequired", zipCodeRequired: "zipCodeRequired" }, providers: [
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: FoehnInputForeignLocalityComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: FoehnInputForeignLocalityComponent, selector: "foehn-input-foreign-locality", inputs: { localityRequired: "localityRequired", zipCodeRequired: "zipCodeRequired" }, providers: [
45
45
  {
46
46
  provide: FoehnInputComponent,
47
47
  useExisting: forwardRef(() => FoehnInputForeignLocalityComponent),
@@ -49,7 +49,7 @@ export class FoehnInputForeignLocalityComponent extends FoehnInputComponent {
49
49
  }
50
50
  ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'visually-hidden' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!isRequired() && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <foehn-input-text\n [name]=\"name + '.zipCode'\"\n [label]=\"\n 'foehn-input-foreign-locality.zipCode.label' | fromDictionary\n \"\n [(model)]=\"zipCode\"\n (modelChange)=\"updateLocality()\"\n [required]=\"zipCodeRequired\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n [autocomplete]=\"'postal-code'\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n ></foehn-input-text>\n\n <foehn-input-text\n [name]=\"name + '.longName'\"\n [label]=\"\n 'foehn-input-foreign-locality.locality.label' | fromDictionary\n \"\n [(model)]=\"longName\"\n (modelChange)=\"updateLocality()\"\n [required]=\"localityRequired\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n ></foehn-input-text>\n </fieldset>\n</div>\n", styles: [":host ::ng-deep foehn-input-text:last-child .form-group{margin-bottom:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FoehnInputTextComponent, selector: "foehn-input-text", inputs: ["numberOnly"] }, { kind: "component", type: i3.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { kind: "pipe", type: i4.SdkDictionaryPipe, name: "fromDictionary" }] }); }
51
51
  }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnInputForeignLocalityComponent, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: FoehnInputForeignLocalityComponent, decorators: [{
53
53
  type: Component,
54
54
  args: [{ selector: 'foehn-input-foreign-locality', providers: [
55
55
  {
@@ -63,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
63
63
  }], zipCodeRequired: [{
64
64
  type: Input
65
65
  }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWRkcmVzcy9mb2Vobi1pbnB1dC1mb3JlaWduLWxvY2FsaXR5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZGRyZXNzL2ZvZWhuLWlucHV0LWZvcmVpZ24tbG9jYWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7QUFlM0UsTUFBTSxPQUFPLGtDQUFtQyxTQUFRLG1CQUE2QjtJQVVqRixjQUFjO1FBQ1YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLElBQUksT0FBTyxVQUFVLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEMsSUFBSSxPQUFPLFVBQVUsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWU7UUFDekIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN6QixDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDMUUsQ0FBQztJQUVPLGFBQWE7UUFDakIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzVELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztZQUVELE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5RCxDQUFDOzhHQS9DUSxrQ0FBa0M7a0dBQWxDLGtDQUFrQyw2SUFSaEM7WUFDUDtnQkFDSSxPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtDQUFrQyxDQUFDO2dCQUNqRSxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osaURDZkwsbWxFQStEQTs7MkZEOUNhLGtDQUFrQztrQkFaOUMsU0FBUzsrQkFDSSw4QkFBOEIsYUFHN0I7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUNBQW1DLENBQUM7NEJBQ2pFLEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzhCQUlELGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2NhbGl0eSB9IGZyb20gJy4vYWRkcmVzcy50eXBlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1pbnB1dC1mb3JlaWduLWxvY2FsaXR5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eS5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2VobklucHV0Rm9yZWlnbkxvY2FsaXR5Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuSW5wdXRGb3JlaWduTG9jYWxpdHlDb21wb25lbnQgZXh0ZW5kcyBGb2VobklucHV0Q29tcG9uZW50PExvY2FsaXR5PiB7XG4gICAgQElucHV0KClcbiAgICBsb2NhbGl0eVJlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICB6aXBDb2RlUmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICB6aXBDb2RlOiBzdHJpbmc7XG4gICAgbG9uZ05hbWU6IHN0cmluZztcblxuICAgIHVwZGF0ZUxvY2FsaXR5KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IExvY2FsaXR5KTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy56aXBDb2RlID0gdmFsdWUuemlwQ29kZTtcbiAgICAgICAgICAgIHRoaXMubG9uZ05hbWUgPSB2YWx1ZS5sb25nTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuemlwQ29kZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmxvbmdOYW1lID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzUmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkIHx8IHRoaXMuemlwQ29kZVJlcXVpcmVkIHx8IHRoaXMubG9jYWxpdHlSZXF1aXJlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbGlkVmFsdWUoKTogTG9jYWxpdHkgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSh0aGlzLnppcENvZGUpICYmIHRoaXMuaXNFbXB0eSh0aGlzLmxvbmdOYW1lKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWxfICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB6aXBDb2RlOiB0aGlzLnppcENvZGUsIGxvbmdOYW1lOiB0aGlzLmxvbmdOYW1lIH07XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cFwiXG4gICAgW2NsYXNzLmhhcy1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFtjbGFzcy52ZC1mb3JtLWdyb3VwLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2F0dHIuaWRdPVwiYnVpbGRJZCgnQ29udGFpbmVyJylcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuPlxuICAgIDxmaWVsZHNldFxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImdldERlc2NyaWJlZEJ5KClcIlxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KCkgfHwgbnVsbFwiXG4gICAgPlxuICAgICAgICA8bGVnZW5kXG4gICAgICAgICAgICAqbmdJZj1cIiEhbGFiZWxcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXNMYWJlbFNyT25seSA/ICd2aXN1YWxseS1oaWRkZW4nIDogJ3ZkLXAnXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsYWJlbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNSZXF1aXJlZCgpICYmICFoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ICdmb2Vobi1pbnB1dC5vcHRpb25hbCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2xlZ2VuZD5cblxuICAgICAgICA8Zm9laG4tdmFsaWRhdGlvbi1hbGVydHMgW2NvbXBvbmVudF09XCJ0aGlzXCI+PC9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cz5cblxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiaGVscFRleHRcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRJZCgpICsgJ0hlbHAnXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJoZWxwVGV4dFwiXG4gICAgICAgID48L3NtYWxsPlxuXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgICAgICA8Zm9laG4taW5wdXQtdGV4dFxuICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcuemlwQ29kZSdcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICdmb2Vobi1pbnB1dC1mb3JlaWduLWxvY2FsaXR5LnppcENvZGUubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbKG1vZGVsKV09XCJ6aXBDb2RlXCJcbiAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVMb2NhbGl0eSgpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ6aXBDb2RlUmVxdWlyZWRcIlxuICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCIncG9zdGFsLWNvZGUnXCJcbiAgICAgICAgICAgIFtpc0Vycm9ySW5oZXJpdGVkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICAgICAgPjwvZm9laG4taW5wdXQtdGV4dD5cblxuICAgICAgICA8Zm9laG4taW5wdXQtdGV4dFxuICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcubG9uZ05hbWUnXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAnZm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eS5sb2NhbGl0eS5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFsobW9kZWwpXT1cImxvbmdOYW1lXCJcbiAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVMb2NhbGl0eSgpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJsb2NhbGl0eVJlcXVpcmVkXCJcbiAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtpc0Vycm9ySW5oZXJpdGVkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICAgICAgPjwvZm9laG4taW5wdXQtdGV4dD5cbiAgICA8L2ZpZWxkc2V0PlxuPC9kaXY+XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWRkcmVzcy9mb2Vobi1pbnB1dC1mb3JlaWduLWxvY2FsaXR5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZGRyZXNzL2ZvZWhuLWlucHV0LWZvcmVpZ24tbG9jYWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7QUFlM0UsTUFBTSxPQUFPLGtDQUFtQyxTQUFRLG1CQUE2QjtJQVVqRixjQUFjO1FBQ1YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLElBQUksT0FBTyxVQUFVLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEMsSUFBSSxPQUFPLFVBQVUsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWU7UUFDekIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN6QixDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDMUUsQ0FBQztJQUVPLGFBQWE7UUFDakIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzVELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztZQUVELE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM5RCxDQUFDOytHQS9DUSxrQ0FBa0M7bUdBQWxDLGtDQUFrQyw2SUFSaEM7WUFDUDtnQkFDSSxPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtDQUFrQyxDQUFDO2dCQUNqRSxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osaURDZkwsbWxFQStEQTs7NEZEOUNhLGtDQUFrQztrQkFaOUMsU0FBUzsrQkFDSSw4QkFBOEIsYUFHN0I7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUNBQW1DLENBQUM7NEJBQ2pFLEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzhCQUlELGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2NhbGl0eSB9IGZyb20gJy4vYWRkcmVzcy50eXBlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1pbnB1dC1mb3JlaWduLWxvY2FsaXR5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eS5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2VobklucHV0Rm9yZWlnbkxvY2FsaXR5Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuSW5wdXRGb3JlaWduTG9jYWxpdHlDb21wb25lbnQgZXh0ZW5kcyBGb2VobklucHV0Q29tcG9uZW50PExvY2FsaXR5PiB7XG4gICAgQElucHV0KClcbiAgICBsb2NhbGl0eVJlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICB6aXBDb2RlUmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICB6aXBDb2RlOiBzdHJpbmc7XG4gICAgbG9uZ05hbWU6IHN0cmluZztcblxuICAgIHVwZGF0ZUxvY2FsaXR5KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IExvY2FsaXR5KTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy56aXBDb2RlID0gdmFsdWUuemlwQ29kZTtcbiAgICAgICAgICAgIHRoaXMubG9uZ05hbWUgPSB2YWx1ZS5sb25nTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuemlwQ29kZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmxvbmdOYW1lID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzUmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVpcmVkIHx8IHRoaXMuemlwQ29kZVJlcXVpcmVkIHx8IHRoaXMubG9jYWxpdHlSZXF1aXJlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbGlkVmFsdWUoKTogTG9jYWxpdHkgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSh0aGlzLnppcENvZGUpICYmIHRoaXMuaXNFbXB0eSh0aGlzLmxvbmdOYW1lKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWxfICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB6aXBDb2RlOiB0aGlzLnppcENvZGUsIGxvbmdOYW1lOiB0aGlzLmxvbmdOYW1lIH07XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cFwiXG4gICAgW2NsYXNzLmhhcy1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFtjbGFzcy52ZC1mb3JtLWdyb3VwLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2F0dHIuaWRdPVwiYnVpbGRJZCgnQ29udGFpbmVyJylcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuPlxuICAgIDxmaWVsZHNldFxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImdldERlc2NyaWJlZEJ5KClcIlxuICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KCkgfHwgbnVsbFwiXG4gICAgPlxuICAgICAgICA8bGVnZW5kXG4gICAgICAgICAgICAqbmdJZj1cIiEhbGFiZWxcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXNMYWJlbFNyT25seSA/ICd2aXN1YWxseS1oaWRkZW4nIDogJ3ZkLXAnXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsYWJlbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNSZXF1aXJlZCgpICYmICFoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ICdmb2Vobi1pbnB1dC5vcHRpb25hbCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2xlZ2VuZD5cblxuICAgICAgICA8Zm9laG4tdmFsaWRhdGlvbi1hbGVydHMgW2NvbXBvbmVudF09XCJ0aGlzXCI+PC9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cz5cblxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiaGVscFRleHRcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRJZCgpICsgJ0hlbHAnXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJoZWxwVGV4dFwiXG4gICAgICAgID48L3NtYWxsPlxuXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgICAgICA8Zm9laG4taW5wdXQtdGV4dFxuICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcuemlwQ29kZSdcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgICdmb2Vobi1pbnB1dC1mb3JlaWduLWxvY2FsaXR5LnppcENvZGUubGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbKG1vZGVsKV09XCJ6aXBDb2RlXCJcbiAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVMb2NhbGl0eSgpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ6aXBDb2RlUmVxdWlyZWRcIlxuICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCIncG9zdGFsLWNvZGUnXCJcbiAgICAgICAgICAgIFtpc0Vycm9ySW5oZXJpdGVkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICAgICAgPjwvZm9laG4taW5wdXQtdGV4dD5cblxuICAgICAgICA8Zm9laG4taW5wdXQtdGV4dFxuICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcubG9uZ05hbWUnXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAnZm9laG4taW5wdXQtZm9yZWlnbi1sb2NhbGl0eS5sb2NhbGl0eS5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFsobW9kZWwpXT1cImxvbmdOYW1lXCJcbiAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVMb2NhbGl0eSgpXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJsb2NhbGl0eVJlcXVpcmVkXCJcbiAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtpc0Vycm9ySW5oZXJpdGVkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICAgICAgPjwvZm9laG4taW5wdXQtdGV4dD5cbiAgICA8L2ZpZWxkc2V0PlxuPC9kaXY+XG4iXX0=
@@ -2,7 +2,6 @@ import { Component, forwardRef } from '@angular/core';
2
2
  import { FoehnInputComponent } from '../foehn-input/foehn-input.component';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../foehn-input/foehn-input-text.component";
5
- import * as i2 from "../foehn-validation-alerts/foehn-validation-alerts.component";
6
5
  export class FoehnInputForeignStreetComponent extends FoehnInputComponent {
7
6
  updateStreet() {
8
7
  const validValue = this.getValidValue();
@@ -33,16 +32,16 @@ export class FoehnInputForeignStreetComponent extends FoehnInputComponent {
33
32
  }
34
33
  return { estrid: null, longName: this.longName };
35
34
  }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnInputForeignStreetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
37
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: FoehnInputForeignStreetComponent, selector: "foehn-input-foreign-street", providers: [
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: FoehnInputForeignStreetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: FoehnInputForeignStreetComponent, selector: "foehn-input-foreign-street", providers: [
38
37
  {
39
38
  provide: FoehnInputComponent,
40
39
  useExisting: forwardRef(() => FoehnInputForeignStreetComponent),
41
40
  multi: true
42
41
  }
43
- ], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <foehn-input-text\n [label]=\"label\"\n [name]=\"name + '.longName'\"\n [(model)]=\"longName\"\n (modelChange)=\"updateStreet()\"\n [required]=\"required\"\n [helpText]=\"helpText\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n [isLabelSrOnly]=\"isLabelSrOnly\"\n [autocomplete]=\"'address-line1'\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n >\n <ng-content></ng-content>\n </foehn-input-text>\n </fieldset>\n</div>\n", styles: [":host ::ng-deep foehn-input-text:last-child .form-group{margin-bottom:0}\n"], dependencies: [{ kind: "component", type: i1.FoehnInputTextComponent, selector: "foehn-input-text", inputs: ["numberOnly"] }, { kind: "component", type: i2.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }] }); }
42
+ ], usesInheritance: true, ngImport: i0, template: "<foehn-input-text\n [label]=\"label\"\n [name]=\"name + '.longName'\"\n [(model)]=\"longName\"\n (modelChange)=\"updateStreet()\"\n [required]=\"required\"\n [helpText]=\"helpText\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n [isLabelSrOnly]=\"isLabelSrOnly\"\n [autocomplete]=\"'address-line1'\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n>\n <ng-content></ng-content>\n</foehn-input-text>\n", dependencies: [{ kind: "component", type: i1.FoehnInputTextComponent, selector: "foehn-input-text", inputs: ["numberOnly"] }] }); }
44
43
  }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FoehnInputForeignStreetComponent, decorators: [{
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: FoehnInputForeignStreetComponent, decorators: [{
46
45
  type: Component,
47
46
  args: [{ selector: 'foehn-input-foreign-street', providers: [
48
47
  {
@@ -50,6 +49,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
50
49
  useExisting: forwardRef(() => FoehnInputForeignStreetComponent),
51
50
  multi: true
52
51
  }
53
- ], template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <foehn-input-text\n [label]=\"label\"\n [name]=\"name + '.longName'\"\n [(model)]=\"longName\"\n (modelChange)=\"updateStreet()\"\n [required]=\"required\"\n [helpText]=\"helpText\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n [isLabelSrOnly]=\"isLabelSrOnly\"\n [autocomplete]=\"'address-line1'\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n >\n <ng-content></ng-content>\n </foehn-input-text>\n </fieldset>\n</div>\n", styles: [":host ::ng-deep foehn-input-text:last-child .form-group{margin-bottom:0}\n"] }]
52
+ ], template: "<foehn-input-text\n [label]=\"label\"\n [name]=\"name + '.longName'\"\n [(model)]=\"longName\"\n (modelChange)=\"updateStreet()\"\n [required]=\"required\"\n [helpText]=\"helpText\"\n (userInput)=\"handleUserInput()\"\n [disabled]=\"disabled\"\n [isLabelSrOnly]=\"isLabelSrOnly\"\n [autocomplete]=\"'address-line1'\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n>\n <ng-content></ng-content>\n</foehn-input-text>\n" }]
54
53
  }] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWFkZHJlc3MvZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWFkZHJlc3MvZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7QUFlM0UsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLG1CQUEyQjtJQUc3RSxZQUFZO1FBQ1IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLElBQUksT0FBTyxVQUFVLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEMsSUFBSSxPQUFPLFVBQVUsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDdkIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUNuQyxDQUFDO2FBQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUM1QixPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBRUQsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckQsQ0FBQzs4R0FsQ1EsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0MscURBUjlCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLG1CQUFtQjtnQkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztnQkFDL0QsS0FBSyxFQUFFLElBQUk7YUFDZDtTQUNKLGlEQ2ZMLGlnQ0E4QkE7OzJGRGJhLGdDQUFnQztrQkFaNUMsU0FBUzsrQkFDSSw0QkFBNEIsYUFHM0I7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsaUNBQWlDLENBQUM7NEJBQy9ELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RyZWV0IH0gZnJvbSAnLi9hZGRyZXNzLnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWlucHV0LWZvcmVpZ24tc3RyZWV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWlucHV0LWZvcmVpZ24tc3RyZWV0LmNvbXBvbmVudC5jc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRm9laG5JbnB1dENvbXBvbmVudCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvZWhuSW5wdXRGb3JlaWduU3RyZWV0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuSW5wdXRGb3JlaWduU3RyZWV0Q29tcG9uZW50IGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxTdHJlZXQ+IHtcbiAgICBsb25nTmFtZTogc3RyaW5nO1xuXG4gICAgdXBkYXRlU3RyZWV0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmdNb2RlbCh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWxpZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IFN0cmVldCk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubG9uZ05hbWUgPSB2YWx1ZS5sb25nTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubG9uZ05hbWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYWxpZFZhbHVlKCk6IFN0cmVldCB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5pc0VtcHR5KHRoaXMubG9uZ05hbWUpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbF8gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGVzdHJpZDogbnVsbCwgbG9uZ05hbWU6IHRoaXMubG9uZ05hbWUgfTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwXCJcbiAgICBbY2xhc3MuaGFzLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2NsYXNzLnZkLWZvcm0tZ3JvdXAtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbYXR0ci5pZF09XCJidWlsZElkKCdDb250YWluZXInKVwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4+XG4gICAgPGZpZWxkc2V0XG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiZ2V0RGVzY3JpYmVkQnkoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKSB8fCBudWxsXCJcbiAgICA+XG4gICAgICAgIDxmb2Vobi12YWxpZGF0aW9uLWFsZXJ0cyBbY29tcG9uZW50XT1cInRoaXNcIj48L2ZvZWhuLXZhbGlkYXRpb24tYWxlcnRzPlxuXG4gICAgICAgIDxmb2Vobi1pbnB1dC10ZXh0XG4gICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICcubG9uZ05hbWUnXCJcbiAgICAgICAgICAgIFsobW9kZWwpXT1cImxvbmdOYW1lXCJcbiAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVTdHJlZXQoKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgW2hlbHBUZXh0XT1cImhlbHBUZXh0XCJcbiAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtpc0xhYmVsU3JPbmx5XT1cImlzTGFiZWxTck9ubHlcIlxuICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInYWRkcmVzcy1saW5lMSdcIlxuICAgICAgICAgICAgW2lzRXJyb3JJbmhlcml0ZWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZm9laG4taW5wdXQtdGV4dD5cbiAgICA8L2ZpZWxkc2V0PlxuPC9kaXY+XG4iXX0=
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWFkZHJlc3MvZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWFkZHJlc3MvZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7OztBQWMzRSxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsbUJBQTJCO0lBRzdFLFlBQVk7UUFDUixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEMsSUFBSSxPQUFPLFVBQVUsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN4QyxJQUFJLE9BQU8sVUFBVSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYTtRQUN2QixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ25DLENBQUM7YUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7SUFFTyxhQUFhO1FBQ2pCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyRCxDQUFDOytHQWxDUSxnQ0FBZ0M7bUdBQWhDLGdDQUFnQyxxREFSOUI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO2dCQUMvRCxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osaURDZEwsc2NBZUE7OzRGRENhLGdDQUFnQztrQkFYNUMsU0FBUzsrQkFDSSw0QkFBNEIsYUFFM0I7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsaUNBQWlDLENBQUM7NEJBQy9ELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RyZWV0IH0gZnJvbSAnLi9hZGRyZXNzLnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWlucHV0LWZvcmVpZ24tc3RyZWV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQtZm9yZWlnbi1zdHJlZXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5JbnB1dEZvcmVpZ25TdHJlZXRDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5JbnB1dEZvcmVpZ25TdHJlZXRDb21wb25lbnQgZXh0ZW5kcyBGb2VobklucHV0Q29tcG9uZW50PFN0cmVldD4ge1xuICAgIGxvbmdOYW1lOiBzdHJpbmc7XG5cbiAgICB1cGRhdGVTdHJlZXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldFZhbGlkVmFsdWUoKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWxpZFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlVXNlcklucHV0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKHZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogU3RyZWV0KTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5sb25nTmFtZSA9IHZhbHVlLmxvbmdOYW1lO1xuICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5sb25nTmFtZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbGlkVmFsdWUoKTogU3RyZWV0IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRW1wdHkodGhpcy5sb25nTmFtZSkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsXyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZXN0cmlkOiBudWxsLCBsb25nTmFtZTogdGhpcy5sb25nTmFtZSB9O1xuICAgIH1cbn1cbiIsIjxmb2Vobi1pbnB1dC10ZXh0XG4gICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICBbbmFtZV09XCJuYW1lICsgJy5sb25nTmFtZSdcIlxuICAgIFsobW9kZWwpXT1cImxvbmdOYW1lXCJcbiAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlU3RyZWV0KClcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2hlbHBUZXh0XT1cImhlbHBUZXh0XCJcbiAgICAodXNlcklucHV0KT1cImhhbmRsZVVzZXJJbnB1dCgpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtpc0xhYmVsU3JPbmx5XT1cImlzTGFiZWxTck9ubHlcIlxuICAgIFthdXRvY29tcGxldGVdPVwiJ2FkZHJlc3MtbGluZTEnXCJcbiAgICBbaXNFcnJvckluaGVyaXRlZF09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9mb2Vobi1pbnB1dC10ZXh0PlxuIl19