@keycloakify/angular 0.0.1-rc.17 → 0.0.1-rc.19

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 (350) hide show
  1. package/account/containers/template/template.component.d.ts +18 -5
  2. package/account/pages/account/account.component.d.ts +3 -2
  3. package/account/pages/applications/applications.component.d.ts +3 -2
  4. package/account/pages/federatedIdentity/federatedIdentity.component.d.ts +3 -2
  5. package/account/pages/log/log.component.d.ts +3 -2
  6. package/account/pages/password/password.component.d.ts +3 -2
  7. package/account/pages/sessions/sessions.component.d.ts +3 -2
  8. package/account/pages/totp/totp.component.d.ts +3 -2
  9. package/esm2022/account/containers/template/template.component.mjs +42 -9
  10. package/esm2022/account/directives/kc-class/kc-class.directive.mjs +3 -3
  11. package/esm2022/account/pages/account/account.component.mjs +8 -7
  12. package/esm2022/account/pages/applications/applications.component.mjs +8 -7
  13. package/esm2022/account/pages/federatedIdentity/federatedIdentity.component.mjs +8 -7
  14. package/esm2022/account/pages/log/log.component.mjs +8 -7
  15. package/esm2022/account/pages/password/password.component.mjs +9 -7
  16. package/esm2022/account/pages/sessions/sessions.component.mjs +8 -7
  17. package/esm2022/account/pages/totp/totp.component.mjs +8 -7
  18. package/esm2022/account/providers/keycloakify-angular/keycloakify-angular.providers.mjs +2 -1
  19. package/esm2022/account/services/account-resource-injector/account-resource-injector.service.mjs +3 -3
  20. package/esm2022/account/services/i18n/i18n.service.mjs +3 -3
  21. package/esm2022/lib/directives/attributes/attributes.directive.mjs +3 -3
  22. package/esm2022/lib/pipes/input-type/input-type.pipe.mjs +3 -3
  23. package/esm2022/lib/pipes/is-array-with-empty-object/is-array-with-empty-object.pipe.mjs +3 -3
  24. package/esm2022/lib/pipes/kc-sanitize/kc-sanitize.pipe.mjs +3 -3
  25. package/esm2022/lib/pipes/to-array/to-array.pipe.mjs +3 -3
  26. package/esm2022/lib/pipes/to-number/to-number.pipe.mjs +3 -3
  27. package/esm2022/lib/services/resource-injector/resource-injector.service.mjs +3 -3
  28. package/esm2022/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.mjs +5 -5
  29. package/esm2022/login/components/field-errors/field-errors.component.mjs +6 -6
  30. package/esm2022/login/components/group-label/group-label.component.mjs +3 -3
  31. package/esm2022/login/components/input-field-by-type/input-field-by-type.component.mjs +6 -6
  32. package/esm2022/login/components/input-tag/input-tag.component.mjs +6 -6
  33. package/esm2022/login/components/input-tag-selects/input-tag-selects.component.mjs +3 -3
  34. package/esm2022/login/components/logout-other-sessions/logout-other-sessions.component.mjs +3 -3
  35. package/esm2022/login/components/password-wrapper/password-wrapper.component.mjs +6 -6
  36. package/esm2022/login/components/select-tag/select-tag.component.mjs +3 -3
  37. package/esm2022/login/components/textarea-tag/textarea-tag.component.mjs +3 -3
  38. package/esm2022/login/components/user-profile-form-fields/user-profile-form-fields.component.mjs +6 -6
  39. package/esm2022/login/containers/template/template.component.mjs +83 -15
  40. package/esm2022/login/directives/kc-class/kc-class.directive.mjs +5 -5
  41. package/esm2022/login/pages/code/code.component.mjs +16 -10
  42. package/esm2022/login/pages/delete-account-confirm/delete-account-confirm.component.mjs +14 -8
  43. package/esm2022/login/pages/delete-credential/delete-credential.component.mjs +12 -11
  44. package/esm2022/login/pages/error/error.component.mjs +16 -10
  45. package/esm2022/login/pages/frontchannel-logout/frontchannel-logout.component.mjs +14 -12
  46. package/esm2022/login/pages/idp-review-user-profile/idp-review-user-profile.component.mjs +14 -13
  47. package/esm2022/login/pages/info/info.component.mjs +13 -12
  48. package/esm2022/login/pages/login/login.component.mjs +15 -14
  49. package/esm2022/login/pages/login-config-totp/login-config-totp.component.mjs +14 -13
  50. package/esm2022/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.mjs +13 -16
  51. package/esm2022/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.mjs +13 -16
  52. package/esm2022/login/pages/login-idp-link-email/login-idp-link-email.component.mjs +12 -15
  53. package/esm2022/login/pages/login-oauth-grant/login-oauth-grant.component.mjs +13 -15
  54. package/esm2022/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.mjs +12 -11
  55. package/esm2022/login/pages/login-otp/login-otp.component.mjs +13 -12
  56. package/esm2022/login/pages/login-page-expired/login-page-expired.component.mjs +12 -11
  57. package/esm2022/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.mjs +13 -8
  58. package/esm2022/login/pages/login-password/login-password.component.mjs +15 -13
  59. package/esm2022/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.mjs +14 -13
  60. package/esm2022/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.mjs +14 -13
  61. package/esm2022/login/pages/login-reset-otp/login-reset-otp.component.mjs +13 -12
  62. package/esm2022/login/pages/login-reset-password/login-reset-password.component.mjs +13 -12
  63. package/esm2022/login/pages/login-update-password/login-update-password.component.mjs +13 -12
  64. package/esm2022/login/pages/login-update-profile/login-update-profile.component.mjs +13 -12
  65. package/esm2022/login/pages/login-username/login-username.component.mjs +14 -13
  66. package/esm2022/login/pages/login-verify-email/login-verify-email.component.mjs +12 -11
  67. package/esm2022/login/pages/login-x509-info/login-x509-info.component.mjs +12 -11
  68. package/esm2022/login/pages/logout-confirm/logout-confirm.component.mjs +12 -15
  69. package/esm2022/login/pages/register/register.component.mjs +16 -15
  70. package/esm2022/login/pages/saml-post-form/saml-post-form.component.mjs +16 -17
  71. package/esm2022/login/pages/select-authenticator/select-authenticator.component.mjs +13 -12
  72. package/esm2022/login/pages/terms/terms.component.mjs +12 -11
  73. package/esm2022/login/pages/update-email/update-email.component.mjs +14 -17
  74. package/esm2022/login/pages/webauthn-authenticate/webauthn-authenticate.component.mjs +12 -11
  75. package/esm2022/login/pages/webauthn-error/webauthn-error.component.mjs +13 -12
  76. package/esm2022/login/pages/webauthn-register/webauthn-register.component.mjs +12 -11
  77. package/esm2022/login/providers/keycloakify-angular/keycloakify-angular.providers.mjs +2 -1
  78. package/esm2022/login/services/i18n/i18n.service.mjs +3 -3
  79. package/esm2022/login/services/login-resource-injector/login-resource-injector.service.mjs +3 -3
  80. package/esm2022/login/services/submit/submit.service.mjs +4 -4
  81. package/esm2022/login/services/user-profile-form/user-profile-form.service.mjs +3 -3
  82. package/fesm2022/keycloakify-angular-account-containers-template.mjs +42 -9
  83. package/fesm2022/keycloakify-angular-account-containers-template.mjs.map +1 -1
  84. package/fesm2022/keycloakify-angular-account-directives-kc-class.mjs +3 -3
  85. package/fesm2022/keycloakify-angular-account-pages-account.mjs +7 -6
  86. package/fesm2022/keycloakify-angular-account-pages-account.mjs.map +1 -1
  87. package/fesm2022/keycloakify-angular-account-pages-applications.mjs +7 -6
  88. package/fesm2022/keycloakify-angular-account-pages-applications.mjs.map +1 -1
  89. package/fesm2022/keycloakify-angular-account-pages-federatedIdentity.mjs +7 -6
  90. package/fesm2022/keycloakify-angular-account-pages-federatedIdentity.mjs.map +1 -1
  91. package/fesm2022/keycloakify-angular-account-pages-log.mjs +7 -6
  92. package/fesm2022/keycloakify-angular-account-pages-log.mjs.map +1 -1
  93. package/fesm2022/keycloakify-angular-account-pages-password.mjs +8 -6
  94. package/fesm2022/keycloakify-angular-account-pages-password.mjs.map +1 -1
  95. package/fesm2022/keycloakify-angular-account-pages-sessions.mjs +7 -6
  96. package/fesm2022/keycloakify-angular-account-pages-sessions.mjs.map +1 -1
  97. package/fesm2022/keycloakify-angular-account-pages-totp.mjs +7 -6
  98. package/fesm2022/keycloakify-angular-account-pages-totp.mjs.map +1 -1
  99. package/fesm2022/keycloakify-angular-account-providers-keycloakify-angular.mjs +1 -0
  100. package/fesm2022/keycloakify-angular-account-providers-keycloakify-angular.mjs.map +1 -1
  101. package/fesm2022/keycloakify-angular-account-services-account-resource-injector.mjs +3 -3
  102. package/fesm2022/keycloakify-angular-account-services-i18n.mjs +3 -3
  103. package/fesm2022/keycloakify-angular-lib-directives-attributes.mjs +3 -3
  104. package/fesm2022/keycloakify-angular-lib-pipes-input-type.mjs +3 -3
  105. package/fesm2022/keycloakify-angular-lib-pipes-is-array-with-empty-object.mjs +3 -3
  106. package/fesm2022/keycloakify-angular-lib-pipes-kc-sanitize.mjs +3 -3
  107. package/fesm2022/keycloakify-angular-lib-pipes-to-array.mjs +3 -3
  108. package/fesm2022/keycloakify-angular-lib-pipes-to-number.mjs +3 -3
  109. package/fesm2022/keycloakify-angular-lib-services-resource-injector.mjs +3 -3
  110. package/fesm2022/keycloakify-angular-login-components-add-remove-buttons-multi-valued-attribute.mjs +4 -4
  111. package/fesm2022/keycloakify-angular-login-components-add-remove-buttons-multi-valued-attribute.mjs.map +1 -1
  112. package/fesm2022/keycloakify-angular-login-components-field-errors.mjs +5 -5
  113. package/fesm2022/keycloakify-angular-login-components-field-errors.mjs.map +1 -1
  114. package/fesm2022/keycloakify-angular-login-components-group-label.mjs +3 -3
  115. package/fesm2022/keycloakify-angular-login-components-input-field-by-type.mjs +5 -5
  116. package/fesm2022/keycloakify-angular-login-components-input-field-by-type.mjs.map +1 -1
  117. package/fesm2022/keycloakify-angular-login-components-input-tag-selects.mjs +3 -3
  118. package/fesm2022/keycloakify-angular-login-components-input-tag.mjs +5 -5
  119. package/fesm2022/keycloakify-angular-login-components-input-tag.mjs.map +1 -1
  120. package/fesm2022/keycloakify-angular-login-components-logout-other-sessions.mjs +3 -3
  121. package/fesm2022/keycloakify-angular-login-components-password-wrapper.mjs +5 -5
  122. package/fesm2022/keycloakify-angular-login-components-password-wrapper.mjs.map +1 -1
  123. package/fesm2022/keycloakify-angular-login-components-select-tag.mjs +3 -3
  124. package/fesm2022/keycloakify-angular-login-components-textarea-tag.mjs +3 -3
  125. package/fesm2022/keycloakify-angular-login-components-user-profile-form-fields.mjs +5 -5
  126. package/fesm2022/keycloakify-angular-login-components-user-profile-form-fields.mjs.map +1 -1
  127. package/fesm2022/keycloakify-angular-login-containers-template.mjs +83 -15
  128. package/fesm2022/keycloakify-angular-login-containers-template.mjs.map +1 -1
  129. package/fesm2022/keycloakify-angular-login-directives-kc-class.mjs +4 -4
  130. package/fesm2022/keycloakify-angular-login-directives-kc-class.mjs.map +1 -1
  131. package/fesm2022/keycloakify-angular-login-pages-code.mjs +15 -9
  132. package/fesm2022/keycloakify-angular-login-pages-code.mjs.map +1 -1
  133. package/fesm2022/keycloakify-angular-login-pages-delete-account-confirm.mjs +13 -7
  134. package/fesm2022/keycloakify-angular-login-pages-delete-account-confirm.mjs.map +1 -1
  135. package/fesm2022/keycloakify-angular-login-pages-delete-credential.mjs +11 -10
  136. package/fesm2022/keycloakify-angular-login-pages-delete-credential.mjs.map +1 -1
  137. package/fesm2022/keycloakify-angular-login-pages-error.mjs +15 -9
  138. package/fesm2022/keycloakify-angular-login-pages-error.mjs.map +1 -1
  139. package/fesm2022/keycloakify-angular-login-pages-frontchannel-logout.mjs +13 -11
  140. package/fesm2022/keycloakify-angular-login-pages-frontchannel-logout.mjs.map +1 -1
  141. package/fesm2022/keycloakify-angular-login-pages-idp-review-user-profile.mjs +13 -12
  142. package/fesm2022/keycloakify-angular-login-pages-idp-review-user-profile.mjs.map +1 -1
  143. package/fesm2022/keycloakify-angular-login-pages-info.mjs +12 -11
  144. package/fesm2022/keycloakify-angular-login-pages-info.mjs.map +1 -1
  145. package/fesm2022/keycloakify-angular-login-pages-login-config-totp.mjs +13 -12
  146. package/fesm2022/keycloakify-angular-login-pages-login-config-totp.mjs.map +1 -1
  147. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-confirm-override.mjs +12 -15
  148. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-confirm-override.mjs.map +1 -1
  149. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-confirm.mjs +12 -15
  150. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-confirm.mjs.map +1 -1
  151. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-email.mjs +11 -14
  152. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-email.mjs.map +1 -1
  153. package/fesm2022/keycloakify-angular-login-pages-login-oauth-grant.mjs +12 -14
  154. package/fesm2022/keycloakify-angular-login-pages-login-oauth-grant.mjs.map +1 -1
  155. package/fesm2022/keycloakify-angular-login-pages-login-oauth2-device-verify-user-code.mjs +11 -10
  156. package/fesm2022/keycloakify-angular-login-pages-login-oauth2-device-verify-user-code.mjs.map +1 -1
  157. package/fesm2022/keycloakify-angular-login-pages-login-otp.mjs +12 -11
  158. package/fesm2022/keycloakify-angular-login-pages-login-otp.mjs.map +1 -1
  159. package/fesm2022/keycloakify-angular-login-pages-login-page-expired.mjs +11 -10
  160. package/fesm2022/keycloakify-angular-login-pages-login-page-expired.mjs.map +1 -1
  161. package/fesm2022/keycloakify-angular-login-pages-login-passkeys-conditional-authenticate.mjs +12 -7
  162. package/fesm2022/keycloakify-angular-login-pages-login-passkeys-conditional-authenticate.mjs.map +1 -1
  163. package/fesm2022/keycloakify-angular-login-pages-login-password.mjs +14 -12
  164. package/fesm2022/keycloakify-angular-login-pages-login-password.mjs.map +1 -1
  165. package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-config.mjs +13 -12
  166. package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-config.mjs.map +1 -1
  167. package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-input.mjs +13 -12
  168. package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-input.mjs.map +1 -1
  169. package/fesm2022/keycloakify-angular-login-pages-login-reset-otp.mjs +12 -11
  170. package/fesm2022/keycloakify-angular-login-pages-login-reset-otp.mjs.map +1 -1
  171. package/fesm2022/keycloakify-angular-login-pages-login-reset-password.mjs +12 -11
  172. package/fesm2022/keycloakify-angular-login-pages-login-reset-password.mjs.map +1 -1
  173. package/fesm2022/keycloakify-angular-login-pages-login-update-password.mjs +12 -11
  174. package/fesm2022/keycloakify-angular-login-pages-login-update-password.mjs.map +1 -1
  175. package/fesm2022/keycloakify-angular-login-pages-login-update-profile.mjs +12 -11
  176. package/fesm2022/keycloakify-angular-login-pages-login-update-profile.mjs.map +1 -1
  177. package/fesm2022/keycloakify-angular-login-pages-login-username.mjs +13 -12
  178. package/fesm2022/keycloakify-angular-login-pages-login-username.mjs.map +1 -1
  179. package/fesm2022/keycloakify-angular-login-pages-login-verify-email.mjs +11 -10
  180. package/fesm2022/keycloakify-angular-login-pages-login-verify-email.mjs.map +1 -1
  181. package/fesm2022/keycloakify-angular-login-pages-login-x509-info.mjs +11 -10
  182. package/fesm2022/keycloakify-angular-login-pages-login-x509-info.mjs.map +1 -1
  183. package/fesm2022/keycloakify-angular-login-pages-login.mjs +14 -13
  184. package/fesm2022/keycloakify-angular-login-pages-login.mjs.map +1 -1
  185. package/fesm2022/keycloakify-angular-login-pages-logout-confirm.mjs +11 -14
  186. package/fesm2022/keycloakify-angular-login-pages-logout-confirm.mjs.map +1 -1
  187. package/fesm2022/keycloakify-angular-login-pages-register.mjs +15 -14
  188. package/fesm2022/keycloakify-angular-login-pages-register.mjs.map +1 -1
  189. package/fesm2022/keycloakify-angular-login-pages-saml-post-form.mjs +15 -16
  190. package/fesm2022/keycloakify-angular-login-pages-saml-post-form.mjs.map +1 -1
  191. package/fesm2022/keycloakify-angular-login-pages-select-authenticator.mjs +12 -11
  192. package/fesm2022/keycloakify-angular-login-pages-select-authenticator.mjs.map +1 -1
  193. package/fesm2022/keycloakify-angular-login-pages-terms.mjs +11 -10
  194. package/fesm2022/keycloakify-angular-login-pages-terms.mjs.map +1 -1
  195. package/fesm2022/keycloakify-angular-login-pages-update-email.mjs +13 -16
  196. package/fesm2022/keycloakify-angular-login-pages-update-email.mjs.map +1 -1
  197. package/fesm2022/keycloakify-angular-login-pages-webauthn-authenticate.mjs +11 -10
  198. package/fesm2022/keycloakify-angular-login-pages-webauthn-authenticate.mjs.map +1 -1
  199. package/fesm2022/keycloakify-angular-login-pages-webauthn-error.mjs +12 -11
  200. package/fesm2022/keycloakify-angular-login-pages-webauthn-error.mjs.map +1 -1
  201. package/fesm2022/keycloakify-angular-login-pages-webauthn-register.mjs +11 -10
  202. package/fesm2022/keycloakify-angular-login-pages-webauthn-register.mjs.map +1 -1
  203. package/fesm2022/keycloakify-angular-login-providers-keycloakify-angular.mjs +1 -0
  204. package/fesm2022/keycloakify-angular-login-providers-keycloakify-angular.mjs.map +1 -1
  205. package/fesm2022/keycloakify-angular-login-services-i18n.mjs +3 -3
  206. package/fesm2022/keycloakify-angular-login-services-login-resource-injector.mjs +3 -3
  207. package/fesm2022/keycloakify-angular-login-services-submit.mjs +3 -3
  208. package/fesm2022/keycloakify-angular-login-services-submit.mjs.map +1 -1
  209. package/fesm2022/keycloakify-angular-login-services-user-profile-form.mjs +3 -3
  210. package/login/containers/template/template.component.d.ts +25 -9
  211. package/login/directives/kc-class/kc-class.directive.d.ts +1 -1
  212. package/login/pages/code/code.component.d.ts +12 -3
  213. package/login/pages/delete-account-confirm/delete-account-confirm.component.d.ts +11 -2
  214. package/login/pages/delete-credential/delete-credential.component.d.ts +9 -5
  215. package/login/pages/error/error.component.d.ts +11 -2
  216. package/login/pages/frontchannel-logout/frontchannel-logout.component.d.ts +9 -5
  217. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.d.ts +10 -7
  218. package/login/pages/info/info.component.d.ts +9 -5
  219. package/login/pages/login/login.component.d.ts +10 -6
  220. package/login/pages/login-config-totp/login-config-totp.component.d.ts +9 -5
  221. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.d.ts +8 -7
  222. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.d.ts +8 -7
  223. package/login/pages/login-idp-link-email/login-idp-link-email.component.d.ts +8 -7
  224. package/login/pages/login-oauth-grant/login-oauth-grant.component.d.ts +8 -7
  225. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.d.ts +9 -5
  226. package/login/pages/login-otp/login-otp.component.d.ts +9 -5
  227. package/login/pages/login-page-expired/login-page-expired.component.d.ts +9 -5
  228. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.d.ts +11 -3
  229. package/login/pages/login-password/login-password.component.d.ts +10 -5
  230. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.d.ts +9 -5
  231. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.d.ts +9 -5
  232. package/login/pages/login-reset-otp/login-reset-otp.component.d.ts +9 -5
  233. package/login/pages/login-reset-password/login-reset-password.component.d.ts +9 -5
  234. package/login/pages/login-update-password/login-update-password.component.d.ts +9 -5
  235. package/login/pages/login-update-profile/login-update-profile.component.d.ts +9 -6
  236. package/login/pages/login-username/login-username.component.d.ts +10 -6
  237. package/login/pages/login-verify-email/login-verify-email.component.d.ts +9 -5
  238. package/login/pages/login-x509-info/login-x509-info.component.d.ts +9 -5
  239. package/login/pages/logout-confirm/logout-confirm.component.d.ts +8 -7
  240. package/login/pages/register/register.component.d.ts +11 -8
  241. package/login/pages/saml-post-form/saml-post-form.component.d.ts +10 -7
  242. package/login/pages/select-authenticator/select-authenticator.component.d.ts +9 -5
  243. package/login/pages/terms/terms.component.d.ts +9 -5
  244. package/login/pages/update-email/update-email.component.d.ts +9 -9
  245. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.d.ts +10 -6
  246. package/login/pages/webauthn-error/webauthn-error.component.d.ts +9 -5
  247. package/login/pages/webauthn-register/webauthn-register.component.d.ts +10 -6
  248. package/package.json +8 -8
  249. package/src/account/containers/template/template.component.html +16 -11
  250. package/src/account/containers/template/template.component.ts +54 -7
  251. package/src/account/pages/account/account.component.html +139 -143
  252. package/src/account/pages/account/account.component.ts +4 -3
  253. package/src/account/pages/applications/applications.component.html +128 -136
  254. package/src/account/pages/applications/applications.component.ts +4 -3
  255. package/src/account/pages/federatedIdentity/federatedIdentity.component.html +84 -88
  256. package/src/account/pages/federatedIdentity/federatedIdentity.component.ts +4 -3
  257. package/src/account/pages/log/log.component.html +35 -39
  258. package/src/account/pages/log/log.component.ts +4 -3
  259. package/src/account/pages/password/password.component.html +109 -113
  260. package/src/account/pages/password/password.component.ts +6 -3
  261. package/src/account/pages/sessions/sessions.component.html +52 -56
  262. package/src/account/pages/sessions/sessions.component.ts +4 -3
  263. package/src/account/pages/totp/totp.component.html +234 -238
  264. package/src/account/pages/totp/totp.component.ts +4 -3
  265. package/src/account/providers/keycloakify-angular/keycloakify-angular.providers.ts +1 -0
  266. package/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.html +2 -2
  267. package/src/login/components/field-errors/field-errors.component.html +1 -1
  268. package/src/login/components/input-field-by-type/input-field-by-type.component.html +6 -6
  269. package/src/login/components/input-tag/input-tag.component.html +2 -2
  270. package/src/login/components/password-wrapper/password-wrapper.component.html +2 -2
  271. package/src/login/components/user-profile-form-fields/user-profile-form-fields.component.html +7 -11
  272. package/src/login/containers/template/template.component.html +29 -15
  273. package/src/login/containers/template/template.component.ts +100 -12
  274. package/src/login/directives/kc-class/kc-class.directive.ts +1 -2
  275. package/src/login/pages/code/code.component.html +19 -23
  276. package/src/login/pages/code/code.component.ts +18 -6
  277. package/src/login/pages/delete-account-confirm/delete-account-confirm.component.html +41 -45
  278. package/src/login/pages/delete-account-confirm/delete-account-confirm.component.ts +16 -4
  279. package/src/login/pages/delete-credential/delete-credential.component.html +29 -31
  280. package/src/login/pages/delete-credential/delete-credential.component.ts +16 -9
  281. package/src/login/pages/error/error.component.html +20 -22
  282. package/src/login/pages/error/error.component.ts +17 -5
  283. package/src/login/pages/frontchannel-logout/frontchannel-logout.component.html +25 -34
  284. package/src/login/pages/frontchannel-logout/frontchannel-logout.component.ts +17 -9
  285. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.html +29 -38
  286. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.ts +18 -12
  287. package/src/login/pages/info/info.component.html +39 -48
  288. package/src/login/pages/info/info.component.ts +17 -10
  289. package/src/login/pages/login/login.component.html +184 -194
  290. package/src/login/pages/login/login.component.ts +20 -12
  291. package/src/login/pages/login-config-totp/login-config-totp.component.html +181 -190
  292. package/src/login/pages/login-config-totp/login-config-totp.component.ts +16 -10
  293. package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.html +27 -37
  294. package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.ts +15 -14
  295. package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.html +26 -36
  296. package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.ts +15 -14
  297. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.html +24 -34
  298. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.ts +15 -14
  299. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.html +75 -84
  300. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.ts +15 -14
  301. package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.html +49 -58
  302. package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.ts +15 -9
  303. package/src/login/pages/login-otp/login-otp.component.html +89 -98
  304. package/src/login/pages/login-otp/login-otp.component.ts +16 -9
  305. package/src/login/pages/login-page-expired/login-page-expired.component.html +26 -33
  306. package/src/login/pages/login-page-expired/login-page-expired.component.ts +15 -9
  307. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.html +181 -188
  308. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.ts +15 -5
  309. package/src/login/pages/login-password/login-password.component.html +73 -80
  310. package/src/login/pages/login-password/login-password.component.ts +17 -9
  311. package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.html +136 -145
  312. package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.ts +17 -9
  313. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.html +60 -68
  314. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.ts +16 -9
  315. package/src/login/pages/login-reset-otp/login-reset-otp.component.html +53 -60
  316. package/src/login/pages/login-reset-otp/login-reset-otp.component.ts +15 -8
  317. package/src/login/pages/login-reset-password/login-reset-password.component.html +77 -86
  318. package/src/login/pages/login-reset-password/login-reset-password.component.ts +16 -9
  319. package/src/login/pages/login-update-password/login-update-password.component.html +98 -108
  320. package/src/login/pages/login-update-password/login-update-password.component.ts +15 -8
  321. package/src/login/pages/login-update-profile/login-update-profile.component.html +44 -53
  322. package/src/login/pages/login-update-profile/login-update-profile.component.ts +17 -10
  323. package/src/login/pages/login-username/login-username.component.html +138 -148
  324. package/src/login/pages/login-username/login-username.component.ts +16 -9
  325. package/src/login/pages/login-verify-email/login-verify-email.component.html +17 -25
  326. package/src/login/pages/login-verify-email/login-verify-email.component.ts +15 -9
  327. package/src/login/pages/login-x509-info/login-x509-info.component.html +85 -94
  328. package/src/login/pages/login-x509-info/login-x509-info.component.ts +15 -9
  329. package/src/login/pages/logout-confirm/logout-confirm.component.html +39 -49
  330. package/src/login/pages/logout-confirm/logout-confirm.component.ts +15 -14
  331. package/src/login/pages/register/register.component.html +100 -110
  332. package/src/login/pages/register/register.component.ts +19 -12
  333. package/src/login/pages/saml-post-form/saml-post-form.component.html +39 -48
  334. package/src/login/pages/saml-post-form/saml-post-form.component.ts +19 -13
  335. package/src/login/pages/select-authenticator/select-authenticator.component.html +36 -44
  336. package/src/login/pages/select-authenticator/select-authenticator.component.ts +16 -9
  337. package/src/login/pages/terms/terms.component.html +25 -34
  338. package/src/login/pages/terms/terms.component.ts +16 -9
  339. package/src/login/pages/update-email/update-email.component.html +44 -53
  340. package/src/login/pages/update-email/update-email.component.ts +16 -15
  341. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.html +134 -145
  342. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.ts +16 -9
  343. package/src/login/pages/webauthn-error/webauthn-error.component.html +45 -55
  344. package/src/login/pages/webauthn-error/webauthn-error.component.ts +16 -9
  345. package/src/login/pages/webauthn-register/webauthn-register.component.html +65 -75
  346. package/src/login/pages/webauthn-register/webauthn-register.component.ts +16 -9
  347. package/src/login/providers/keycloakify-angular/keycloakify-angular.providers.ts +1 -0
  348. package/src/login/services/submit/submit.service.ts +1 -1
  349. package/src/tsconfig.lib.json +0 -12
  350. package/src/tsconfig.lib.prod.json +0 -10
@@ -16,22 +16,23 @@ export class ApplicationsComponent extends ComponentReference {
16
16
  this.kcContext = inject(KC_ACCOUNT_CONTEXT);
17
17
  this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
18
18
  this.classes = inject(ACCOUNT_CLASSES);
19
+ this.active = 'applications';
19
20
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ApplicationsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: ApplicationsComponent, isStandalone: true, selector: "kc-root", providers: [
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ApplicationsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: ApplicationsComponent, isStandalone: true, selector: "kc-applications", providers: [
22
23
  {
23
24
  provide: ComponentReference,
24
25
  useExisting: forwardRef(() => ApplicationsComponent)
25
26
  }
26
- ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let stateChecker = kcContext.stateChecker;\n@let applications = kcContext.applications?.applications;\n\n<kc-account-template [active]=\"'applications'\">\n <ng-container content>\n <div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('applicationsHtmlTitle') }}</h2>\n </div>\n\n <form\n [action]=\"url.applicationsUrl\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n id=\"referrer\"\n name=\"referrer\"\n [value]=\"stateChecker\"\n />\n\n <table class=\"table table-striped table-bordered\">\n <thead>\n <tr>\n <td>{{ i18n.msgStr('application') }}</td>\n <td>{{ i18n.msgStr('availableRoles') }}</td>\n <td>{{ i18n.msgStr('grantedPermissions') }}</td>\n <td>{{ i18n.msgStr('additionalGrants') }}</td>\n <td>{{ i18n.msgStr('action') }}</td>\n </tr>\n </thead>\n\n <tbody>\n @for (application of applications ?? []; track application) {\n <tr>\n <td>\n @if (application.effectiveUrl) {\n <a [href]=\"application.effectiveUrl\">\n @if (application.client.name) {\n {{ i18n.advancedMsgStr(application.client.name) }}\n } @else {\n {{ application.client.clientId }}\n }\n </a>\n } @else {\n @if (application.client.name) {\n {{ i18n.advancedMsgStr(application.client.name) }}\n } @else {\n {{ application.client.clientId }}\n }\n }\n </td>\n\n <td>\n @if (!(application.realmRolesAvailable | isArrayWithEmptyObject)) {\n @for (role of application.realmRolesAvailable; track role; let last = $last) {\n <span>\n @if (role.description) {\n {{ i18n.advancedMsgStr(role.description) }}\n } @else {\n {{ i18n.advancedMsgStr(role.name) }}\n }\n @if (!last) {\n ,&nbsp;\n }\n </span>\n }\n }\n @if (application.resourceRolesAvailable) {\n @for (resource of application.resourceRolesAvailable | keyvalue; track resource.key) {\n <span>\n @if (!(application.realmRolesAvailable | isArrayWithEmptyObject)) {\n ,&nbsp;\n }\n @for (\n clientRole of application.resourceRolesAvailable[resource.key];\n track clientRole;\n let roleLast = $last\n ) {\n <span>\n {{\n i18n.advancedMsgStr(\n clientRole.roleDescription ? clientRole.roleDescription : clientRole.roleName\n )\n }}\n {{ i18n.msgStr('inResource') }}\n <strong>\n {{\n clientRole.clientName\n ? i18n.advancedMsgStr(clientRole.clientName)\n : clientRole.clientId\n }}</strong\n >\n @if (!roleLast) {\n ,&nbsp;\n }\n </span>\n }\n </span>\n }\n }\n </td>\n\n <td>\n @if (application.client.consentRequired) {\n @for (claim of application.clientScopesGranted; track claim; let last = $last) {\n {{ i18n.advancedMsgStr(claim) }}\n @if (!last) {\n ,&nbsp;\n }\n }\n } @else {\n <strong>{{ i18n.msgStr('fullAccess') }}</strong>\n }\n </td>\n\n <td>\n @for (grant of application.additionalGrants; track grant; let last = $last) {\n {{ i18n.advancedMsgStr(grant) }}\n @if (!last) {\n ,&nbsp;\n }\n }\n </td>\n\n <td>\n @if (\n (application.client.consentRequired && application.clientScopesGranted.length > 0) ||\n application.additionalGrants.length > 0\n ) {\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonPrimaryClass', 'kcButtonClass']\"\n [id]=\"'revoke-' + application.client.clientId\"\n name=\"clientId\"\n [value]=\"application.client.id\"\n >\n {{ i18n.msgStr('revoke') }}\n </button>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </form>\n </div>\n </ng-container>\n</kc-account-template>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "component", type: TemplateComponent, selector: "kc-account-template", inputs: ["active"] }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: IsArrayWithEmptyObjectPipe, name: "isArrayWithEmptyObject" }] }); }
27
+ ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let stateChecker = kcContext.stateChecker;\n@let applications = kcContext.applications?.applications;\n\n<div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('applicationsHtmlTitle') }}</h2>\n </div>\n\n <form\n method=\"post\"\n [action]=\"url.applicationsUrl\"\n >\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n id=\"referrer\"\n name=\"referrer\"\n [value]=\"stateChecker\"\n />\n\n <table class=\"table table-striped table-bordered\">\n <thead>\n <tr>\n <td>{{ i18n.msgStr('application') }}</td>\n <td>{{ i18n.msgStr('availableRoles') }}</td>\n <td>{{ i18n.msgStr('grantedPermissions') }}</td>\n <td>{{ i18n.msgStr('additionalGrants') }}</td>\n <td>{{ i18n.msgStr('action') }}</td>\n </tr>\n </thead>\n\n <tbody>\n @for (application of applications ?? []; track application) {\n <tr>\n <td>\n @if (application.effectiveUrl) {\n <a [href]=\"application.effectiveUrl\">\n @if (application.client.name) {\n {{ i18n.advancedMsgStr(application.client.name) }}\n } @else {\n {{ application.client.clientId }}\n }\n </a>\n } @else {\n @if (application.client.name) {\n {{ i18n.advancedMsgStr(application.client.name) }}\n } @else {\n {{ application.client.clientId }}\n }\n }\n </td>\n\n <td>\n @if (!(application.realmRolesAvailable | isArrayWithEmptyObject)) {\n @for (role of application.realmRolesAvailable; track role; let last = $last) {\n <span>\n @if (role.description) {\n {{ i18n.advancedMsgStr(role.description) }}\n } @else {\n {{ i18n.advancedMsgStr(role.name) }}\n }\n @if (!last) {\n ,&nbsp;\n }\n </span>\n }\n }\n @if (application.resourceRolesAvailable) {\n @for (resource of application.resourceRolesAvailable | keyvalue; track resource.key) {\n <span>\n @if (!(application.realmRolesAvailable | isArrayWithEmptyObject)) {\n ,&nbsp;\n }\n @for (\n clientRole of application.resourceRolesAvailable[resource.key];\n track clientRole;\n let roleLast = $last\n ) {\n <span>\n {{\n i18n.advancedMsgStr(clientRole.roleDescription ? clientRole.roleDescription : clientRole.roleName)\n }}\n {{ i18n.msgStr('inResource') }}\n <strong>\n {{\n clientRole.clientName ? i18n.advancedMsgStr(clientRole.clientName) : clientRole.clientId\n }}</strong\n >\n @if (!roleLast) {\n ,&nbsp;\n }\n </span>\n }\n </span>\n }\n }\n </td>\n\n <td>\n @if (application.client.consentRequired) {\n @for (claim of application.clientScopesGranted; track claim; let last = $last) {\n {{ i18n.advancedMsgStr(claim) }}\n @if (!last) {\n ,&nbsp;\n }\n }\n } @else {\n <strong>{{ i18n.msgStr('fullAccess') }}</strong>\n }\n </td>\n\n <td>\n @for (grant of application.additionalGrants; track grant; let last = $last) {\n {{ i18n.advancedMsgStr(grant) }}\n @if (!last) {\n ,&nbsp;\n }\n }\n </td>\n\n <td>\n @if (\n (application.client.consentRequired && application.clientScopesGranted.length > 0) ||\n application.additionalGrants.length > 0\n ) {\n <button\n type=\"submit\"\n name=\"clientId\"\n [kcClass]=\"['kcButtonPrimaryClass', 'kcButtonClass']\"\n [id]=\"'revoke-' + application.client.clientId\"\n [value]=\"application.client.id\"\n >\n {{ i18n.msgStr('revoke') }}\n </button>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </form>\n</div>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: IsArrayWithEmptyObjectPipe, name: "isArrayWithEmptyObject" }] }); }
27
28
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ApplicationsComponent, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ApplicationsComponent, decorators: [{
29
30
  type: Component,
30
- args: [{ standalone: true, imports: [KcClassDirective, TemplateComponent, NgClass, KeyValuePipe, IsArrayWithEmptyObjectPipe], selector: 'kc-root', providers: [
31
+ args: [{ standalone: true, imports: [KcClassDirective, TemplateComponent, NgClass, KeyValuePipe, IsArrayWithEmptyObjectPipe], selector: 'kc-applications', providers: [
31
32
  {
32
33
  provide: ComponentReference,
33
34
  useExisting: forwardRef(() => ApplicationsComponent)
34
35
  }
35
- ], template: "@let url = kcContext.url;\n@let stateChecker = kcContext.stateChecker;\n@let applications = kcContext.applications?.applications;\n\n<kc-account-template [active]=\"'applications'\">\n <ng-container content>\n <div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('applicationsHtmlTitle') }}</h2>\n </div>\n\n <form\n [action]=\"url.applicationsUrl\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n id=\"referrer\"\n name=\"referrer\"\n [value]=\"stateChecker\"\n />\n\n <table class=\"table table-striped table-bordered\">\n <thead>\n <tr>\n <td>{{ i18n.msgStr('application') }}</td>\n <td>{{ i18n.msgStr('availableRoles') }}</td>\n <td>{{ i18n.msgStr('grantedPermissions') }}</td>\n <td>{{ i18n.msgStr('additionalGrants') }}</td>\n <td>{{ i18n.msgStr('action') }}</td>\n </tr>\n </thead>\n\n <tbody>\n @for (application of applications ?? []; track application) {\n <tr>\n <td>\n @if (application.effectiveUrl) {\n <a [href]=\"application.effectiveUrl\">\n @if (application.client.name) {\n {{ i18n.advancedMsgStr(application.client.name) }}\n } @else {\n {{ application.client.clientId }}\n }\n </a>\n } @else {\n @if (application.client.name) {\n {{ i18n.advancedMsgStr(application.client.name) }}\n } @else {\n {{ application.client.clientId }}\n }\n }\n </td>\n\n <td>\n @if (!(application.realmRolesAvailable | isArrayWithEmptyObject)) {\n @for (role of application.realmRolesAvailable; track role; let last = $last) {\n <span>\n @if (role.description) {\n {{ i18n.advancedMsgStr(role.description) }}\n } @else {\n {{ i18n.advancedMsgStr(role.name) }}\n }\n @if (!last) {\n ,&nbsp;\n }\n </span>\n }\n }\n @if (application.resourceRolesAvailable) {\n @for (resource of application.resourceRolesAvailable | keyvalue; track resource.key) {\n <span>\n @if (!(application.realmRolesAvailable | isArrayWithEmptyObject)) {\n ,&nbsp;\n }\n @for (\n clientRole of application.resourceRolesAvailable[resource.key];\n track clientRole;\n let roleLast = $last\n ) {\n <span>\n {{\n i18n.advancedMsgStr(\n clientRole.roleDescription ? clientRole.roleDescription : clientRole.roleName\n )\n }}\n {{ i18n.msgStr('inResource') }}\n <strong>\n {{\n clientRole.clientName\n ? i18n.advancedMsgStr(clientRole.clientName)\n : clientRole.clientId\n }}</strong\n >\n @if (!roleLast) {\n ,&nbsp;\n }\n </span>\n }\n </span>\n }\n }\n </td>\n\n <td>\n @if (application.client.consentRequired) {\n @for (claim of application.clientScopesGranted; track claim; let last = $last) {\n {{ i18n.advancedMsgStr(claim) }}\n @if (!last) {\n ,&nbsp;\n }\n }\n } @else {\n <strong>{{ i18n.msgStr('fullAccess') }}</strong>\n }\n </td>\n\n <td>\n @for (grant of application.additionalGrants; track grant; let last = $last) {\n {{ i18n.advancedMsgStr(grant) }}\n @if (!last) {\n ,&nbsp;\n }\n }\n </td>\n\n <td>\n @if (\n (application.client.consentRequired && application.clientScopesGranted.length > 0) ||\n application.additionalGrants.length > 0\n ) {\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonPrimaryClass', 'kcButtonClass']\"\n [id]=\"'revoke-' + application.client.clientId\"\n name=\"clientId\"\n [value]=\"application.client.id\"\n >\n {{ i18n.msgStr('revoke') }}\n </button>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </form>\n </div>\n </ng-container>\n</kc-account-template>\n" }]
36
+ ], template: "@let url = kcContext.url;\n@let stateChecker = kcContext.stateChecker;\n@let applications = kcContext.applications?.applications;\n\n<div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('applicationsHtmlTitle') }}</h2>\n </div>\n\n <form\n method=\"post\"\n [action]=\"url.applicationsUrl\"\n >\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n id=\"referrer\"\n name=\"referrer\"\n [value]=\"stateChecker\"\n />\n\n <table class=\"table table-striped table-bordered\">\n <thead>\n <tr>\n <td>{{ i18n.msgStr('application') }}</td>\n <td>{{ i18n.msgStr('availableRoles') }}</td>\n <td>{{ i18n.msgStr('grantedPermissions') }}</td>\n <td>{{ i18n.msgStr('additionalGrants') }}</td>\n <td>{{ i18n.msgStr('action') }}</td>\n </tr>\n </thead>\n\n <tbody>\n @for (application of applications ?? []; track application) {\n <tr>\n <td>\n @if (application.effectiveUrl) {\n <a [href]=\"application.effectiveUrl\">\n @if (application.client.name) {\n {{ i18n.advancedMsgStr(application.client.name) }}\n } @else {\n {{ application.client.clientId }}\n }\n </a>\n } @else {\n @if (application.client.name) {\n {{ i18n.advancedMsgStr(application.client.name) }}\n } @else {\n {{ application.client.clientId }}\n }\n }\n </td>\n\n <td>\n @if (!(application.realmRolesAvailable | isArrayWithEmptyObject)) {\n @for (role of application.realmRolesAvailable; track role; let last = $last) {\n <span>\n @if (role.description) {\n {{ i18n.advancedMsgStr(role.description) }}\n } @else {\n {{ i18n.advancedMsgStr(role.name) }}\n }\n @if (!last) {\n ,&nbsp;\n }\n </span>\n }\n }\n @if (application.resourceRolesAvailable) {\n @for (resource of application.resourceRolesAvailable | keyvalue; track resource.key) {\n <span>\n @if (!(application.realmRolesAvailable | isArrayWithEmptyObject)) {\n ,&nbsp;\n }\n @for (\n clientRole of application.resourceRolesAvailable[resource.key];\n track clientRole;\n let roleLast = $last\n ) {\n <span>\n {{\n i18n.advancedMsgStr(clientRole.roleDescription ? clientRole.roleDescription : clientRole.roleName)\n }}\n {{ i18n.msgStr('inResource') }}\n <strong>\n {{\n clientRole.clientName ? i18n.advancedMsgStr(clientRole.clientName) : clientRole.clientId\n }}</strong\n >\n @if (!roleLast) {\n ,&nbsp;\n }\n </span>\n }\n </span>\n }\n }\n </td>\n\n <td>\n @if (application.client.consentRequired) {\n @for (claim of application.clientScopesGranted; track claim; let last = $last) {\n {{ i18n.advancedMsgStr(claim) }}\n @if (!last) {\n ,&nbsp;\n }\n }\n } @else {\n <strong>{{ i18n.msgStr('fullAccess') }}</strong>\n }\n </td>\n\n <td>\n @for (grant of application.additionalGrants; track grant; let last = $last) {\n {{ i18n.advancedMsgStr(grant) }}\n @if (!last) {\n ,&nbsp;\n }\n }\n </td>\n\n <td>\n @if (\n (application.client.consentRequired && application.clientScopesGranted.length > 0) ||\n application.additionalGrants.length > 0\n ) {\n <button\n type=\"submit\"\n name=\"clientId\"\n [kcClass]=\"['kcButtonPrimaryClass', 'kcButtonClass']\"\n [id]=\"'revoke-' + application.client.clientId\"\n [value]=\"application.client.id\"\n >\n {{ i18n.msgStr('revoke') }}\n </button>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </form>\n</div>\n" }]
36
37
  }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hY2NvdW50L3BhZ2VzL2FwcGxpY2F0aW9ucy9hcHBsaWNhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2FjY291bnQvcGFnZXMvYXBwbGljYXRpb25zL2FwcGxpY2F0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFpQmxGLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxrQkFBa0I7SUFaN0Q7O1FBYUksU0FBSSxHQUFHLE1BQU0sQ0FBTyxZQUFZLENBQUMsQ0FBQztRQUNsQyxjQUFTLEdBQUcsTUFBTSxDQUFxRCxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2xGLG9CQUFlLEdBQUcsTUFBTSxDQUFVLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELFlBQU8sR0FBRyxNQUFNLENBQW9DLGVBQWUsQ0FBQyxDQUFDO0tBQ2pGOzhHQUxZLHFCQUFxQjtrR0FBckIscUJBQXFCLHNEQVBuQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7YUFDdkQ7U0FDSixpREN4QkwsNjJRQTRKQSw0Q0Q1SWMsZ0JBQWdCLCtGQUFFLGlCQUFpQiwrRUFBVyxZQUFZLDRDQUFFLDBCQUEwQjs7MkZBVXZGLHFCQUFxQjtrQkFaakMsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixDQUFDLFlBQ3ZGLFNBQVMsYUFFUjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzt5QkFDdkQ7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLZXlWYWx1ZVBpcGUsIE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFJlZmVyZW5jZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvY2xhc3Nlcy9jb21wb25lbnQtcmVmZXJlbmNlJztcbmltcG9ydCB7IFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9jb250YWluZXJzL3RlbXBsYXRlJztcbmltcG9ydCB7IEtjQ2xhc3NEaXJlY3RpdmUgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L2RpcmVjdGl2ZXMva2MtY2xhc3MnO1xuaW1wb3J0IHsgQUNDT1VOVF9DTEFTU0VTIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC90b2tlbnMvY2xhc3Nlcyc7XG5pbXBvcnQgeyBBQ0NPVU5UX0kxOE4gfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L3Rva2Vucy9pMThuJztcbmltcG9ydCB7IEtDX0FDQ09VTlRfQ09OVEVYVCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvdG9rZW5zL2tjLWNvbnRleHQnO1xuaW1wb3J0IHsgSXNBcnJheVdpdGhFbXB0eU9iamVjdFBpcGUgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvcGlwZXMvaXMtYXJyYXktd2l0aC1lbXB0eS1vYmplY3QnO1xuaW1wb3J0IHsgVVNFX0RFRkFVTFRfQ1NTIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbGliL3Rva2Vucy91c2UtZGVmYXVsdC1jc3MnO1xuaW1wb3J0IHR5cGUgeyBDbGFzc0tleSB9IGZyb20gJ2tleWNsb2FraWZ5L2FjY291bnQnO1xuaW1wb3J0IHR5cGUgeyBJMThuIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9pMThuJztcbmltcG9ydCB0eXBlIHsgS2NDb250ZXh0IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9LY0NvbnRleHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtLY0NsYXNzRGlyZWN0aXZlLCBUZW1wbGF0ZUNvbXBvbmVudCwgTmdDbGFzcywgS2V5VmFsdWVQaXBlLCBJc0FycmF5V2l0aEVtcHR5T2JqZWN0UGlwZV0sXG4gICAgc2VsZWN0b3I6ICdrYy1yb290JyxcbiAgICB0ZW1wbGF0ZVVybDogJ2FwcGxpY2F0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENvbXBvbmVudFJlZmVyZW5jZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFwcGxpY2F0aW9uc0NvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25zQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIHtcbiAgICBpMThuID0gaW5qZWN0PEkxOG4+KEFDQ09VTlRfSTE4Tik7XG4gICAga2NDb250ZXh0ID0gaW5qZWN0PEV4dHJhY3Q8S2NDb250ZXh0LCB7IHBhZ2VJZDogJ2FwcGxpY2F0aW9ucy5mdGwnIH0+PihLQ19BQ0NPVU5UX0NPTlRFWFQpO1xuICAgIG92ZXJyaWRlIGRvVXNlRGVmYXVsdENzcyA9IGluamVjdDxib29sZWFuPihVU0VfREVGQVVMVF9DU1MpO1xuICAgIG92ZXJyaWRlIGNsYXNzZXMgPSBpbmplY3Q8UGFydGlhbDxSZWNvcmQ8Q2xhc3NLZXksIHN0cmluZz4+PihBQ0NPVU5UX0NMQVNTRVMpO1xufVxuIiwiQGxldCB1cmwgPSBrY0NvbnRleHQudXJsO1xuQGxldCBzdGF0ZUNoZWNrZXIgPSBrY0NvbnRleHQuc3RhdGVDaGVja2VyO1xuQGxldCBhcHBsaWNhdGlvbnMgPSBrY0NvbnRleHQuYXBwbGljYXRpb25zPy5hcHBsaWNhdGlvbnM7XG5cbjxrYy1hY2NvdW50LXRlbXBsYXRlIFthY3RpdmVdPVwiJ2FwcGxpY2F0aW9ucydcIj5cbiAgICA8bmctY29udGFpbmVyIGNvbnRlbnQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cbiAgICAgICAgICAgICAgICA8aDI+e3sgaTE4bi5tc2dTdHIoJ2FwcGxpY2F0aW9uc0h0bWxUaXRsZScpIH19PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgICAgIFthY3Rpb25dPVwidXJsLmFwcGxpY2F0aW9uc1VybFwiXG4gICAgICAgICAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICBpZD1cInN0YXRlQ2hlY2tlclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzdGF0ZUNoZWNrZXJcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic3RhdGVDaGVja2VyXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJyZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJyZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzdGF0ZUNoZWNrZXJcIlxuICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWJvcmRlcmVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaTE4bi5tc2dTdHIoJ2FwcGxpY2F0aW9uJykgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpMThuLm1zZ1N0cignYXZhaWxhYmxlUm9sZXMnKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGkxOG4ubXNnU3RyKCdncmFudGVkUGVybWlzc2lvbnMnKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGkxOG4ubXNnU3RyKCdhZGRpdGlvbmFsR3JhbnRzJykgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpMThuLm1zZ1N0cignYWN0aW9uJykgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cblxuICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChhcHBsaWNhdGlvbiBvZiBhcHBsaWNhdGlvbnMgPz8gW107IHRyYWNrIGFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFwcGxpY2F0aW9uLmVmZmVjdGl2ZVVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImFwcGxpY2F0aW9uLmVmZmVjdGl2ZVVybFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFwcGxpY2F0aW9uLmNsaWVudC5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLmFkdmFuY2VkTXNnU3RyKGFwcGxpY2F0aW9uLmNsaWVudC5uYW1lKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwcGxpY2F0aW9uLmNsaWVudC5jbGllbnRJZCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhcHBsaWNhdGlvbi5jbGllbnQubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLmFkdmFuY2VkTXNnU3RyKGFwcGxpY2F0aW9uLmNsaWVudC5uYW1lKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhcHBsaWNhdGlvbi5jbGllbnQuY2xpZW50SWQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghKGFwcGxpY2F0aW9uLnJlYWxtUm9sZXNBdmFpbGFibGUgfCBpc0FycmF5V2l0aEVtcHR5T2JqZWN0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHJvbGUgb2YgYXBwbGljYXRpb24ucmVhbG1Sb2xlc0F2YWlsYWJsZTsgdHJhY2sgcm9sZTsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocm9sZS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4uYWR2YW5jZWRNc2dTdHIocm9sZS5kZXNjcmlwdGlvbikgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4uYWR2YW5jZWRNc2dTdHIocm9sZS5uYW1lKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYXBwbGljYXRpb24ucmVzb3VyY2VSb2xlc0F2YWlsYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHJlc291cmNlIG9mIGFwcGxpY2F0aW9uLnJlc291cmNlUm9sZXNBdmFpbGFibGUgfCBrZXl2YWx1ZTsgdHJhY2sgcmVzb3VyY2Uua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghKGFwcGxpY2F0aW9uLnJlYWxtUm9sZXNBdmFpbGFibGUgfCBpc0FycmF5V2l0aEVtcHR5T2JqZWN0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudFJvbGUgb2YgYXBwbGljYXRpb24ucmVzb3VyY2VSb2xlc0F2YWlsYWJsZVtyZXNvdXJjZS5rZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIGNsaWVudFJvbGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJvbGVMYXN0ID0gJGxhc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4bi5hZHZhbmNlZE1zZ1N0cihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRSb2xlLnJvbGVEZXNjcmlwdGlvbiA/IGNsaWVudFJvbGUucm9sZURlc2NyaXB0aW9uIDogY2xpZW50Um9sZS5yb2xlTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLm1zZ1N0cignaW5SZXNvdXJjZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudFJvbGUuY2xpZW50TmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGkxOG4uYWR2YW5jZWRNc2dTdHIoY2xpZW50Um9sZS5jbGllbnROYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNsaWVudFJvbGUuY2xpZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zdHJvbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFyb2xlTGFzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYXBwbGljYXRpb24uY2xpZW50LmNvbnNlbnRSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGNsYWltIG9mIGFwcGxpY2F0aW9uLmNsaWVudFNjb3Blc0dyYW50ZWQ7IHRyYWNrIGNsYWltOyBsZXQgbGFzdCA9ICRsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4uYWR2YW5jZWRNc2dTdHIoY2xhaW0pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWxhc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgaTE4bi5tc2dTdHIoJ2Z1bGxBY2Nlc3MnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGdyYW50IG9mIGFwcGxpY2F0aW9uLmFkZGl0aW9uYWxHcmFudHM7IHRyYWNrIGdyYW50OyBsZXQgbGFzdCA9ICRsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5hZHZhbmNlZE1zZ1N0cihncmFudCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXBwbGljYXRpb24uY2xpZW50LmNvbnNlbnRSZXF1aXJlZCAmJiBhcHBsaWNhdGlvbi5jbGllbnRTY29wZXNHcmFudGVkLmxlbmd0aCA+IDApIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24uYWRkaXRpb25hbEdyYW50cy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCJbJ2tjQnV0dG9uUHJpbWFyeUNsYXNzJywgJ2tjQnV0dG9uQ2xhc3MnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCIncmV2b2tlLScgKyBhcHBsaWNhdGlvbi5jbGllbnQuY2xpZW50SWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY2xpZW50SWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiYXBwbGljYXRpb24uY2xpZW50LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4ubXNnU3RyKCdyZXZva2UnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2tjLWFjY291bnQtdGVtcGxhdGU+XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hY2NvdW50L3BhZ2VzL2FwcGxpY2F0aW9ucy9hcHBsaWNhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2FjY291bnQvcGFnZXMvYXBwbGljYXRpb25zL2FwcGxpY2F0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUdwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFlbEYsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGtCQUFrQjtJQVo3RDs7UUFhSSxTQUFJLEdBQUcsTUFBTSxDQUFPLFlBQVksQ0FBQyxDQUFDO1FBQ2xDLGNBQVMsR0FBRyxNQUFNLENBQXFELGtCQUFrQixDQUFDLENBQUM7UUFDbEYsb0JBQWUsR0FBRyxNQUFNLENBQVUsZUFBZSxDQUFDLENBQUM7UUFDbkQsWUFBTyxHQUFHLE1BQU0sQ0FBb0MsZUFBZSxDQUFDLENBQUM7UUFDOUUsV0FBTSxHQUFHLGNBQWMsQ0FBQztLQUMzQjs4R0FOWSxxQkFBcUI7a0dBQXJCLHFCQUFxQiw4REFQbkI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDO2FBQ3ZEO1NBQ0osaURDeEJMLCs1TkFvSkEsNENEcEljLGdCQUFnQiwwRkFBOEIsWUFBWSw0Q0FBRSwwQkFBMEI7OzJGQVV2RixxQkFBcUI7a0JBWmpDLFNBQVM7aUNBQ00sSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSwwQkFBMEIsQ0FBQyxZQUN2RixpQkFBaUIsYUFFaEI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7eUJBQ3ZEO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5VmFsdWVQaXBlLCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L2NsYXNzZXMvY29tcG9uZW50LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvY29udGFpbmVycy90ZW1wbGF0ZSc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9kaXJlY3RpdmVzL2tjLWNsYXNzJztcbmltcG9ydCB0eXBlIHsgSTE4biB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvaTE4bic7XG5pbXBvcnQgdHlwZSB7IEtjQ29udGV4dCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvS2NDb250ZXh0JztcbmltcG9ydCB7IEFDQ09VTlRfQ0xBU1NFUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvdG9rZW5zL2NsYXNzZXMnO1xuaW1wb3J0IHsgQUNDT1VOVF9JMThOIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC90b2tlbnMvaTE4bic7XG5pbXBvcnQgeyBLQ19BQ0NPVU5UX0NPTlRFWFQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L3Rva2Vucy9rYy1jb250ZXh0JztcbmltcG9ydCB7IElzQXJyYXlXaXRoRW1wdHlPYmplY3RQaXBlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbGliL3BpcGVzL2lzLWFycmF5LXdpdGgtZW1wdHktb2JqZWN0JztcbmltcG9ydCB7IFVTRV9ERUZBVUxUX0NTUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi90b2tlbnMvdXNlLWRlZmF1bHQtY3NzJztcbmltcG9ydCB0eXBlIHsgQ2xhc3NLZXkgfSBmcm9tICdrZXljbG9ha2lmeS9hY2NvdW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbS2NDbGFzc0RpcmVjdGl2ZSwgVGVtcGxhdGVDb21wb25lbnQsIE5nQ2xhc3MsIEtleVZhbHVlUGlwZSwgSXNBcnJheVdpdGhFbXB0eU9iamVjdFBpcGVdLFxuICAgIHNlbGVjdG9yOiAna2MtYXBwbGljYXRpb25zJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2FwcGxpY2F0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENvbXBvbmVudFJlZmVyZW5jZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFwcGxpY2F0aW9uc0NvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25zQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIHtcbiAgICBpMThuID0gaW5qZWN0PEkxOG4+KEFDQ09VTlRfSTE4Tik7XG4gICAga2NDb250ZXh0ID0gaW5qZWN0PEV4dHJhY3Q8S2NDb250ZXh0LCB7IHBhZ2VJZDogJ2FwcGxpY2F0aW9ucy5mdGwnIH0+PihLQ19BQ0NPVU5UX0NPTlRFWFQpO1xuICAgIG92ZXJyaWRlIGRvVXNlRGVmYXVsdENzcyA9IGluamVjdDxib29sZWFuPihVU0VfREVGQVVMVF9DU1MpO1xuICAgIG92ZXJyaWRlIGNsYXNzZXMgPSBpbmplY3Q8UGFydGlhbDxSZWNvcmQ8Q2xhc3NLZXksIHN0cmluZz4+PihBQ0NPVU5UX0NMQVNTRVMpO1xuICAgIGFjdGl2ZSA9ICdhcHBsaWNhdGlvbnMnO1xufVxuIiwiQGxldCB1cmwgPSBrY0NvbnRleHQudXJsO1xuQGxldCBzdGF0ZUNoZWNrZXIgPSBrY0NvbnRleHQuc3RhdGVDaGVja2VyO1xuQGxldCBhcHBsaWNhdGlvbnMgPSBrY0NvbnRleHQuYXBwbGljYXRpb25zPy5hcHBsaWNhdGlvbnM7XG5cbjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEwXCI+XG4gICAgICAgIDxoMj57eyBpMThuLm1zZ1N0cignYXBwbGljYXRpb25zSHRtbFRpdGxlJykgfX08L2gyPlxuICAgIDwvZGl2PlxuXG4gICAgPGZvcm1cbiAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICAgIFthY3Rpb25dPVwidXJsLmFwcGxpY2F0aW9uc1VybFwiXG4gICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgICAgaWQ9XCJzdGF0ZUNoZWNrZXJcIlxuICAgICAgICAgICAgbmFtZT1cInN0YXRlQ2hlY2tlclwiXG4gICAgICAgICAgICBbdmFsdWVdPVwic3RhdGVDaGVja2VyXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgIGlkPVwicmVmZXJyZXJcIlxuICAgICAgICAgICAgbmFtZT1cInJlZmVycmVyXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJzdGF0ZUNoZWNrZXJcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtYm9yZGVyZWRcIj5cbiAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpMThuLm1zZ1N0cignYXBwbGljYXRpb24nKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpMThuLm1zZ1N0cignYXZhaWxhYmxlUm9sZXMnKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpMThuLm1zZ1N0cignZ3JhbnRlZFBlcm1pc3Npb25zJykgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaTE4bi5tc2dTdHIoJ2FkZGl0aW9uYWxHcmFudHMnKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpMThuLm1zZ1N0cignYWN0aW9uJykgfX08L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3RoZWFkPlxuXG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgQGZvciAoYXBwbGljYXRpb24gb2YgYXBwbGljYXRpb25zID8/IFtdOyB0cmFjayBhcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhcHBsaWNhdGlvbi5lZmZlY3RpdmVVcmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiYXBwbGljYXRpb24uZWZmZWN0aXZlVXJsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFwcGxpY2F0aW9uLmNsaWVudC5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5hZHZhbmNlZE1zZ1N0cihhcHBsaWNhdGlvbi5jbGllbnQubmFtZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwcGxpY2F0aW9uLmNsaWVudC5jbGllbnRJZCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYXBwbGljYXRpb24uY2xpZW50Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4uYWR2YW5jZWRNc2dTdHIoYXBwbGljYXRpb24uY2xpZW50Lm5hbWUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwbGljYXRpb24uY2xpZW50LmNsaWVudElkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghKGFwcGxpY2F0aW9uLnJlYWxtUm9sZXNBdmFpbGFibGUgfCBpc0FycmF5V2l0aEVtcHR5T2JqZWN0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChyb2xlIG9mIGFwcGxpY2F0aW9uLnJlYWxtUm9sZXNBdmFpbGFibGU7IHRyYWNrIHJvbGU7IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocm9sZS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLmFkdmFuY2VkTXNnU3RyKHJvbGUuZGVzY3JpcHRpb24pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4uYWR2YW5jZWRNc2dTdHIocm9sZS5uYW1lKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhcHBsaWNhdGlvbi5yZXNvdXJjZVJvbGVzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHJlc291cmNlIG9mIGFwcGxpY2F0aW9uLnJlc291cmNlUm9sZXNBdmFpbGFibGUgfCBrZXl2YWx1ZTsgdHJhY2sgcmVzb3VyY2Uua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCEoYXBwbGljYXRpb24ucmVhbG1Sb2xlc0F2YWlsYWJsZSB8IGlzQXJyYXlXaXRoRW1wdHlPYmplY3QpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudFJvbGUgb2YgYXBwbGljYXRpb24ucmVzb3VyY2VSb2xlc0F2YWlsYWJsZVtyZXNvdXJjZS5rZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayBjbGllbnRSb2xlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcm9sZUxhc3QgPSAkbGFzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4bi5hZHZhbmNlZE1zZ1N0cihjbGllbnRSb2xlLnJvbGVEZXNjcmlwdGlvbiA/IGNsaWVudFJvbGUucm9sZURlc2NyaXB0aW9uIDogY2xpZW50Um9sZS5yb2xlTmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLm1zZ1N0cignaW5SZXNvdXJjZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudFJvbGUuY2xpZW50TmFtZSA/IGkxOG4uYWR2YW5jZWRNc2dTdHIoY2xpZW50Um9sZS5jbGllbnROYW1lKSA6IGNsaWVudFJvbGUuY2xpZW50SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Ryb25nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFyb2xlTGFzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFwcGxpY2F0aW9uLmNsaWVudC5jb25zZW50UmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoY2xhaW0gb2YgYXBwbGljYXRpb24uY2xpZW50U2NvcGVzR3JhbnRlZDsgdHJhY2sgY2xhaW07IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4uYWR2YW5jZWRNc2dTdHIoY2xhaW0pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e3sgaTE4bi5tc2dTdHIoJ2Z1bGxBY2Nlc3MnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChncmFudCBvZiBhcHBsaWNhdGlvbi5hZGRpdGlvbmFsR3JhbnRzOyB0cmFjayBncmFudDsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLmFkdmFuY2VkTXNnU3RyKGdyYW50KSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGxpY2F0aW9uLmNsaWVudC5jb25zZW50UmVxdWlyZWQgJiYgYXBwbGljYXRpb24uY2xpZW50U2NvcGVzR3JhbnRlZC5sZW5ndGggPiAwKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbi5hZGRpdGlvbmFsR3JhbnRzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY2xpZW50SWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvblByaW1hcnlDbGFzcycsICdrY0J1dHRvbkNsYXNzJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidyZXZva2UtJyArIGFwcGxpY2F0aW9uLmNsaWVudC5jbGllbnRJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiYXBwbGljYXRpb24uY2xpZW50LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5tc2dTdHIoJ3Jldm9rZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICA8L2Zvcm0+XG48L2Rpdj5cbiJdfQ==
@@ -15,22 +15,23 @@ export class FederatedIdentityComponent extends ComponentReference {
15
15
  this.kcContext = inject(KC_ACCOUNT_CONTEXT);
16
16
  this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
17
17
  this.classes = inject(ACCOUNT_CLASSES);
18
+ this.active = 'social';
18
19
  }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: FederatedIdentityComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: FederatedIdentityComponent, isStandalone: true, selector: "kc-root", providers: [
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FederatedIdentityComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FederatedIdentityComponent, isStandalone: true, selector: "kc-federatedIdentity", providers: [
21
22
  {
22
23
  provide: ComponentReference,
23
24
  useExisting: forwardRef(() => FederatedIdentityComponent)
24
25
  }
25
- ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let federatedIdentity = kcContext.federatedIdentity;\n@let stateChecker = kcContext.stateChecker;\n\n<kc-account-template [active]=\"'social'\">\n <ng-container content>\n <div class=\"main-layout social\">\n <div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('federatedIdentitiesHtmlTitle') }}</h2>\n </div>\n </div>\n <div id=\"federated-identities\">\n @for (identity of federatedIdentity.identities; track identity) {\n <div class=\"row margin-bottom\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n [for]=\"identity.providerId\"\n class=\"control-label\"\n >\n {{ identity.displayName }}\n </label>\n </div>\n <div class=\"col-sm-5 col-md-5\">\n <input\n disabled\n class=\"form-control\"\n [value]=\"identity.userName\"\n />\n </div>\n <div class=\"col-sm-5 col-md-5\">\n @if (identity.connected) {\n @if (federatedIdentity.removeLinkPossible) {\n <form\n [action]=\"url.socialUrl\"\n method=\"post\"\n class=\"form-inline\"\n >\n <input\n type=\"hidden\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n name=\"action\"\n value=\"remove\"\n />\n <input\n type=\"hidden\"\n name=\"providerId\"\n [value]=\"identity.providerId\"\n />\n <button\n [id]=\"'remove-link-' + identity.providerId\"\n class=\"btn btn-default\"\n >\n {{ i18n.msgStr('doRemove') }}\n </button>\n </form>\n }\n } @else {\n <form\n [action]=\"url.socialUrl\"\n method=\"post\"\n class=\"form-inline\"\n >\n <input\n type=\"hidden\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n name=\"action\"\n value=\"add\"\n />\n <input\n type=\"hidden\"\n name=\"providerId\"\n [value]=\"identity.providerId\"\n />\n <button\n [id]=\"'add-link-' + identity.providerId\"\n class=\"btn btn-default\"\n >\n {{ i18n.msgStr('doAdd') }}\n </button>\n </form>\n }\n </div>\n </div>\n }\n </div>\n </div>\n </ng-container>\n</kc-account-template>\n", dependencies: [{ kind: "component", type: TemplateComponent, selector: "kc-account-template", inputs: ["active"] }] }); }
26
+ ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let federatedIdentity = kcContext.federatedIdentity;\n@let stateChecker = kcContext.stateChecker;\n\n<div class=\"main-layout social\">\n <div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('federatedIdentitiesHtmlTitle') }}</h2>\n </div>\n </div>\n <div id=\"federated-identities\">\n @for (identity of federatedIdentity.identities; track identity) {\n <div class=\"row margin-bottom\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n class=\"control-label\"\n [for]=\"identity.providerId\"\n >\n {{ identity.displayName }}\n </label>\n </div>\n <div class=\"col-sm-5 col-md-5\">\n <input\n disabled\n class=\"form-control\"\n [value]=\"identity.userName\"\n />\n </div>\n <div class=\"col-sm-5 col-md-5\">\n @if (identity.connected) {\n @if (federatedIdentity.removeLinkPossible) {\n <form\n method=\"post\"\n class=\"form-inline\"\n [action]=\"url.socialUrl\"\n >\n <input\n type=\"hidden\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n name=\"action\"\n value=\"remove\"\n />\n <input\n type=\"hidden\"\n name=\"providerId\"\n [value]=\"identity.providerId\"\n />\n <button\n class=\"btn btn-default\"\n [id]=\"'remove-link-' + identity.providerId\"\n >\n {{ i18n.msgStr('doRemove') }}\n </button>\n </form>\n }\n } @else {\n <form\n method=\"post\"\n class=\"form-inline\"\n [action]=\"url.socialUrl\"\n >\n <input\n type=\"hidden\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n name=\"action\"\n value=\"add\"\n />\n <input\n type=\"hidden\"\n name=\"providerId\"\n [value]=\"identity.providerId\"\n />\n <button\n class=\"btn btn-default\"\n [id]=\"'add-link-' + identity.providerId\"\n >\n {{ i18n.msgStr('doAdd') }}\n </button>\n </form>\n }\n </div>\n </div>\n }\n </div>\n</div>\n" }); }
26
27
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: FederatedIdentityComponent, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FederatedIdentityComponent, decorators: [{
28
29
  type: Component,
29
- args: [{ standalone: true, imports: [KcClassDirective, TemplateComponent, NgClass], selector: 'kc-root', providers: [
30
+ args: [{ standalone: true, imports: [KcClassDirective, TemplateComponent, NgClass], selector: 'kc-federatedIdentity', providers: [
30
31
  {
31
32
  provide: ComponentReference,
32
33
  useExisting: forwardRef(() => FederatedIdentityComponent)
33
34
  }
34
- ], template: "@let url = kcContext.url;\n@let federatedIdentity = kcContext.federatedIdentity;\n@let stateChecker = kcContext.stateChecker;\n\n<kc-account-template [active]=\"'social'\">\n <ng-container content>\n <div class=\"main-layout social\">\n <div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('federatedIdentitiesHtmlTitle') }}</h2>\n </div>\n </div>\n <div id=\"federated-identities\">\n @for (identity of federatedIdentity.identities; track identity) {\n <div class=\"row margin-bottom\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n [for]=\"identity.providerId\"\n class=\"control-label\"\n >\n {{ identity.displayName }}\n </label>\n </div>\n <div class=\"col-sm-5 col-md-5\">\n <input\n disabled\n class=\"form-control\"\n [value]=\"identity.userName\"\n />\n </div>\n <div class=\"col-sm-5 col-md-5\">\n @if (identity.connected) {\n @if (federatedIdentity.removeLinkPossible) {\n <form\n [action]=\"url.socialUrl\"\n method=\"post\"\n class=\"form-inline\"\n >\n <input\n type=\"hidden\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n name=\"action\"\n value=\"remove\"\n />\n <input\n type=\"hidden\"\n name=\"providerId\"\n [value]=\"identity.providerId\"\n />\n <button\n [id]=\"'remove-link-' + identity.providerId\"\n class=\"btn btn-default\"\n >\n {{ i18n.msgStr('doRemove') }}\n </button>\n </form>\n }\n } @else {\n <form\n [action]=\"url.socialUrl\"\n method=\"post\"\n class=\"form-inline\"\n >\n <input\n type=\"hidden\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n name=\"action\"\n value=\"add\"\n />\n <input\n type=\"hidden\"\n name=\"providerId\"\n [value]=\"identity.providerId\"\n />\n <button\n [id]=\"'add-link-' + identity.providerId\"\n class=\"btn btn-default\"\n >\n {{ i18n.msgStr('doAdd') }}\n </button>\n </form>\n }\n </div>\n </div>\n }\n </div>\n </div>\n </ng-container>\n</kc-account-template>\n" }]
35
+ ], template: "@let url = kcContext.url;\n@let federatedIdentity = kcContext.federatedIdentity;\n@let stateChecker = kcContext.stateChecker;\n\n<div class=\"main-layout social\">\n <div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('federatedIdentitiesHtmlTitle') }}</h2>\n </div>\n </div>\n <div id=\"federated-identities\">\n @for (identity of federatedIdentity.identities; track identity) {\n <div class=\"row margin-bottom\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n class=\"control-label\"\n [for]=\"identity.providerId\"\n >\n {{ identity.displayName }}\n </label>\n </div>\n <div class=\"col-sm-5 col-md-5\">\n <input\n disabled\n class=\"form-control\"\n [value]=\"identity.userName\"\n />\n </div>\n <div class=\"col-sm-5 col-md-5\">\n @if (identity.connected) {\n @if (federatedIdentity.removeLinkPossible) {\n <form\n method=\"post\"\n class=\"form-inline\"\n [action]=\"url.socialUrl\"\n >\n <input\n type=\"hidden\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n name=\"action\"\n value=\"remove\"\n />\n <input\n type=\"hidden\"\n name=\"providerId\"\n [value]=\"identity.providerId\"\n />\n <button\n class=\"btn btn-default\"\n [id]=\"'remove-link-' + identity.providerId\"\n >\n {{ i18n.msgStr('doRemove') }}\n </button>\n </form>\n }\n } @else {\n <form\n method=\"post\"\n class=\"form-inline\"\n [action]=\"url.socialUrl\"\n >\n <input\n type=\"hidden\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n name=\"action\"\n value=\"add\"\n />\n <input\n type=\"hidden\"\n name=\"providerId\"\n [value]=\"identity.providerId\"\n />\n <button\n class=\"btn btn-default\"\n [id]=\"'add-link-' + identity.providerId\"\n >\n {{ i18n.msgStr('doAdd') }}\n </button>\n </form>\n }\n </div>\n </div>\n }\n </div>\n</div>\n" }]
35
36
  }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVkZXJhdGVkSWRlbnRpdHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FjY291bnQvcGFnZXMvZmVkZXJhdGVkSWRlbnRpdHkvZmVkZXJhdGVkSWRlbnRpdHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2FjY291bnQvcGFnZXMvZmVkZXJhdGVkSWRlbnRpdHkvZmVkZXJhdGVkSWRlbnRpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFpQmxGLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxrQkFBa0I7SUFabEU7O1FBYUksU0FBSSxHQUFHLE1BQU0sQ0FBTyxZQUFZLENBQUMsQ0FBQztRQUNsQyxjQUFTLEdBQUcsTUFBTSxDQUEwRCxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZGLG9CQUFlLEdBQUcsTUFBTSxDQUFVLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELFlBQU8sR0FBRyxNQUFNLENBQW9DLGVBQWUsQ0FBQyxDQUFDO0tBQ2pGOzhHQUxZLDBCQUEwQjtrR0FBMUIsMEJBQTBCLHNEQVB4QjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMEJBQTBCLENBQUM7YUFDNUQ7U0FDSixpREN2QkwsOHFKQWlHQSw0Q0RsRmdDLGlCQUFpQjs7MkZBVXBDLDBCQUEwQjtrQkFadEMsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLENBQUMsWUFDN0MsU0FBUyxhQUVSO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxrQkFBa0I7NEJBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDJCQUEyQixDQUFDO3lCQUM1RDtxQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFJlZmVyZW5jZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvY2xhc3Nlcy9jb21wb25lbnQtcmVmZXJlbmNlJztcbmltcG9ydCB7IFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9jb250YWluZXJzL3RlbXBsYXRlJztcbmltcG9ydCB7IEtjQ2xhc3NEaXJlY3RpdmUgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L2RpcmVjdGl2ZXMva2MtY2xhc3MnO1xuaW1wb3J0IHsgQUNDT1VOVF9DTEFTU0VTIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC90b2tlbnMvY2xhc3Nlcyc7XG5pbXBvcnQgeyBBQ0NPVU5UX0kxOE4gfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L3Rva2Vucy9pMThuJztcbmltcG9ydCB7IEtDX0FDQ09VTlRfQ09OVEVYVCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvdG9rZW5zL2tjLWNvbnRleHQnO1xuaW1wb3J0IHsgVVNFX0RFRkFVTFRfQ1NTIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbGliL3Rva2Vucy91c2UtZGVmYXVsdC1jc3MnO1xuaW1wb3J0IHR5cGUgeyBDbGFzc0tleSB9IGZyb20gJ2tleWNsb2FraWZ5L2FjY291bnQnO1xuaW1wb3J0IHR5cGUgeyBJMThuIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9pMThuJztcbmltcG9ydCB0eXBlIHsgS2NDb250ZXh0IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9LY0NvbnRleHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtLY0NsYXNzRGlyZWN0aXZlLCBUZW1wbGF0ZUNvbXBvbmVudCwgTmdDbGFzc10sXG4gICAgc2VsZWN0b3I6ICdrYy1yb290JyxcbiAgICB0ZW1wbGF0ZVVybDogJ2ZlZGVyYXRlZElkZW50aXR5LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQ29tcG9uZW50UmVmZXJlbmNlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmVkZXJhdGVkSWRlbnRpdHlDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZlZGVyYXRlZElkZW50aXR5Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIHtcbiAgICBpMThuID0gaW5qZWN0PEkxOG4+KEFDQ09VTlRfSTE4Tik7XG4gICAga2NDb250ZXh0ID0gaW5qZWN0PEV4dHJhY3Q8S2NDb250ZXh0LCB7IHBhZ2VJZDogJ2ZlZGVyYXRlZElkZW50aXR5LmZ0bCcgfT4+KEtDX0FDQ09VTlRfQ09OVEVYVCk7XG4gICAgb3ZlcnJpZGUgZG9Vc2VEZWZhdWx0Q3NzID0gaW5qZWN0PGJvb2xlYW4+KFVTRV9ERUZBVUxUX0NTUyk7XG4gICAgb3ZlcnJpZGUgY2xhc3NlcyA9IGluamVjdDxQYXJ0aWFsPFJlY29yZDxDbGFzc0tleSwgc3RyaW5nPj4+KEFDQ09VTlRfQ0xBU1NFUyk7XG59XG4iLCJAbGV0IHVybCA9IGtjQ29udGV4dC51cmw7XG5AbGV0IGZlZGVyYXRlZElkZW50aXR5ID0ga2NDb250ZXh0LmZlZGVyYXRlZElkZW50aXR5O1xuQGxldCBzdGF0ZUNoZWNrZXIgPSBrY0NvbnRleHQuc3RhdGVDaGVja2VyO1xuXG48a2MtYWNjb3VudC10ZW1wbGF0ZSBbYWN0aXZlXT1cIidzb2NpYWwnXCI+XG4gICAgPG5nLWNvbnRhaW5lciBjb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1sYXlvdXQgc29jaWFsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDI+e3sgaTE4bi5tc2dTdHIoJ2ZlZGVyYXRlZElkZW50aXRpZXNIdG1sVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJmZWRlcmF0ZWQtaWRlbnRpdGllc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGlkZW50aXR5IG9mIGZlZGVyYXRlZElkZW50aXR5LmlkZW50aXRpZXM7IHRyYWNrIGlkZW50aXR5KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWFyZ2luLWJvdHRvbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIGNvbC1tZC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiaWRlbnRpdHkucHJvdmlkZXJJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpZGVudGl0eS5kaXNwbGF5TmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNSBjb2wtbWQtNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpZGVudGl0eS51c2VyTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS01IGNvbC1tZC01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpZGVudGl0eS5jb25uZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmZWRlcmF0ZWRJZGVudGl0eS5yZW1vdmVMaW5rUG9zc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGlvbl09XCJ1cmwuc29jaWFsVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q9XCJwb3N0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0taW5saW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzdGF0ZUNoZWNrZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic3RhdGVDaGVja2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwicmVtb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInByb3ZpZGVySWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaWRlbnRpdHkucHJvdmlkZXJJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCIncmVtb3ZlLWxpbmstJyArIGlkZW50aXR5LnByb3ZpZGVySWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLm1zZ1N0cignZG9SZW1vdmUnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aW9uXT1cInVybC5zb2NpYWxVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0taW5saW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInN0YXRlQ2hlY2tlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInN0YXRlQ2hlY2tlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJhZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwcm92aWRlcklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaWRlbnRpdHkucHJvdmlkZXJJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInYWRkLWxpbmstJyArIGlkZW50aXR5LnByb3ZpZGVySWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLm1zZ1N0cignZG9BZGQnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9rYy1hY2NvdW50LXRlbXBsYXRlPlxuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVkZXJhdGVkSWRlbnRpdHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FjY291bnQvcGFnZXMvZmVkZXJhdGVkSWRlbnRpdHkvZmVkZXJhdGVkSWRlbnRpdHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2FjY291bnQvcGFnZXMvZmVkZXJhdGVkSWRlbnRpdHkvZmVkZXJhdGVkSWRlbnRpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUdwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFlbEYsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGtCQUFrQjtJQVpsRTs7UUFhSSxTQUFJLEdBQUcsTUFBTSxDQUFPLFlBQVksQ0FBQyxDQUFDO1FBQ2xDLGNBQVMsR0FBRyxNQUFNLENBQTBELGtCQUFrQixDQUFDLENBQUM7UUFDdkYsb0JBQWUsR0FBRyxNQUFNLENBQVUsZUFBZSxDQUFDLENBQUM7UUFDbkQsWUFBTyxHQUFHLE1BQU0sQ0FBb0MsZUFBZSxDQUFDLENBQUM7UUFDOUUsV0FBTSxHQUFHLFFBQVEsQ0FBQztLQUNyQjs4R0FOWSwwQkFBMEI7a0dBQTFCLDBCQUEwQixtRUFQeEI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixDQUFDO2FBQzVEO1NBQ0osaURDdkJMLGczSEE2RkE7OzJGRHBFYSwwQkFBMEI7a0JBWnRDLFNBQVM7aUNBQ00sSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLFlBQzdDLHNCQUFzQixhQUVyQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQzt5QkFDNUQ7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L2NsYXNzZXMvY29tcG9uZW50LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvY29udGFpbmVycy90ZW1wbGF0ZSc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9kaXJlY3RpdmVzL2tjLWNsYXNzJztcbmltcG9ydCB0eXBlIHsgSTE4biB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvaTE4bic7XG5pbXBvcnQgdHlwZSB7IEtjQ29udGV4dCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvS2NDb250ZXh0JztcbmltcG9ydCB7IEFDQ09VTlRfQ0xBU1NFUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvdG9rZW5zL2NsYXNzZXMnO1xuaW1wb3J0IHsgQUNDT1VOVF9JMThOIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC90b2tlbnMvaTE4bic7XG5pbXBvcnQgeyBLQ19BQ0NPVU5UX0NPTlRFWFQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L3Rva2Vucy9rYy1jb250ZXh0JztcbmltcG9ydCB7IFVTRV9ERUZBVUxUX0NTUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi90b2tlbnMvdXNlLWRlZmF1bHQtY3NzJztcbmltcG9ydCB0eXBlIHsgQ2xhc3NLZXkgfSBmcm9tICdrZXljbG9ha2lmeS9hY2NvdW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbS2NDbGFzc0RpcmVjdGl2ZSwgVGVtcGxhdGVDb21wb25lbnQsIE5nQ2xhc3NdLFxuICAgIHNlbGVjdG9yOiAna2MtZmVkZXJhdGVkSWRlbnRpdHknLFxuICAgIHRlbXBsYXRlVXJsOiAnZmVkZXJhdGVkSWRlbnRpdHkuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21wb25lbnRSZWZlcmVuY2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGZWRlcmF0ZWRJZGVudGl0eUNvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRmVkZXJhdGVkSWRlbnRpdHlDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRSZWZlcmVuY2Uge1xuICAgIGkxOG4gPSBpbmplY3Q8STE4bj4oQUNDT1VOVF9JMThOKTtcbiAgICBrY0NvbnRleHQgPSBpbmplY3Q8RXh0cmFjdDxLY0NvbnRleHQsIHsgcGFnZUlkOiAnZmVkZXJhdGVkSWRlbnRpdHkuZnRsJyB9Pj4oS0NfQUNDT1VOVF9DT05URVhUKTtcbiAgICBvdmVycmlkZSBkb1VzZURlZmF1bHRDc3MgPSBpbmplY3Q8Ym9vbGVhbj4oVVNFX0RFRkFVTFRfQ1NTKTtcbiAgICBvdmVycmlkZSBjbGFzc2VzID0gaW5qZWN0PFBhcnRpYWw8UmVjb3JkPENsYXNzS2V5LCBzdHJpbmc+Pj4oQUNDT1VOVF9DTEFTU0VTKTtcbiAgICBhY3RpdmUgPSAnc29jaWFsJztcbn1cbiIsIkBsZXQgdXJsID0ga2NDb250ZXh0LnVybDtcbkBsZXQgZmVkZXJhdGVkSWRlbnRpdHkgPSBrY0NvbnRleHQuZmVkZXJhdGVkSWRlbnRpdHk7XG5AbGV0IHN0YXRlQ2hlY2tlciA9IGtjQ29udGV4dC5zdGF0ZUNoZWNrZXI7XG5cbjxkaXYgY2xhc3M9XCJtYWluLWxheW91dCBzb2NpYWxcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cbiAgICAgICAgICAgIDxoMj57eyBpMThuLm1zZ1N0cignZmVkZXJhdGVkSWRlbnRpdGllc0h0bWxUaXRsZScpIH19PC9oMj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBpZD1cImZlZGVyYXRlZC1pZGVudGl0aWVzXCI+XG4gICAgICAgIEBmb3IgKGlkZW50aXR5IG9mIGZlZGVyYXRlZElkZW50aXR5LmlkZW50aXRpZXM7IHRyYWNrIGlkZW50aXR5KSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1hcmdpbi1ib3R0b21cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgY29sLW1kLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCJpZGVudGl0eS5wcm92aWRlcklkXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaWRlbnRpdHkuZGlzcGxheU5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTUgY29sLW1kLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImlkZW50aXR5LnVzZXJOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTUgY29sLW1kLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpZGVudGl0eS5jb25uZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmVkZXJhdGVkSWRlbnRpdHkucmVtb3ZlTGlua1Bvc3NpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1pbmxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aW9uXT1cInVybC5zb2NpYWxVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzdGF0ZUNoZWNrZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInN0YXRlQ2hlY2tlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwicmVtb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwcm92aWRlcklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpZGVudGl0eS5wcm92aWRlcklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidyZW1vdmUtbGluay0nICsgaWRlbnRpdHkucHJvdmlkZXJJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4ubXNnU3RyKCdkb1JlbW92ZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD1cInBvc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1pbmxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3Rpb25dPVwidXJsLnNvY2lhbFVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwic3RhdGVDaGVja2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInN0YXRlQ2hlY2tlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImFkZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwcm92aWRlcklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImlkZW50aXR5LnByb3ZpZGVySWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInYWRkLWxpbmstJyArIGlkZW50aXR5LnByb3ZpZGVySWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5tc2dTdHIoJ2RvQWRkJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -15,22 +15,23 @@ export class LogComponent extends ComponentReference {
15
15
  this.kcContext = inject(KC_ACCOUNT_CONTEXT);
16
16
  this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
17
17
  this.classes = inject(ACCOUNT_CLASSES);
18
+ this.active = 'log';
18
19
  }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LogComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: LogComponent, isStandalone: true, selector: "kc-root", providers: [
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LogComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: LogComponent, isStandalone: true, selector: "kc-log", providers: [
21
22
  {
22
23
  provide: ComponentReference,
23
24
  useExisting: forwardRef(() => LogComponent)
24
25
  }
25
- ], usesInheritance: true, ngImport: i0, template: "@let log = kcContext.log;\n\n<kc-account-template [active]=\"'log'\">\n <ng-container content>\n <div [kcClass]=\"'kcContentWrapperClass'\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('accountLogHtmlTitle') }}</h2>\n </div>\n\n <table class=\"table table-striped table-bordered\">\n <thead>\n <tr>\n <td>{{ i18n.msgStr('date') }}</td>\n <td>{{ i18n.msgStr('event') }}</td>\n <td>{{ i18n.msgStr('ip') }}</td>\n <td>{{ i18n.msgStr('client') }}</td>\n <td>{{ i18n.msgStr('details') }}</td>\n </tr>\n </thead>\n\n <tbody>\n @for (event of log.events; track event) {\n <tr>\n <td>{{ event.date ? (event.date | date) : '' }}</td>\n <td>{{ event.event }}</td>\n <td>{{ event.ipAddress }}</td>\n <td>{{ event.client || '' }}</td>\n <td>\n @for (detail of event.details; track detail; let last = $last) {\n <span>\n {{ detail.key }} = {{ detail.value }}\n @if (!last) {\n ,&nbsp;\n }\n </span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </ng-container>\n</kc-account-template>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "component", type: TemplateComponent, selector: "kc-account-template", inputs: ["active"] }, { kind: "pipe", type: DatePipe, name: "date" }] }); }
26
+ ], usesInheritance: true, ngImport: i0, template: "@let log = kcContext.log;\n\n<div [kcClass]=\"'kcContentWrapperClass'\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('accountLogHtmlTitle') }}</h2>\n </div>\n\n <table class=\"table table-striped table-bordered\">\n <thead>\n <tr>\n <td>{{ i18n.msgStr('date') }}</td>\n <td>{{ i18n.msgStr('event') }}</td>\n <td>{{ i18n.msgStr('ip') }}</td>\n <td>{{ i18n.msgStr('client') }}</td>\n <td>{{ i18n.msgStr('details') }}</td>\n </tr>\n </thead>\n\n <tbody>\n @for (event of log.events; track event) {\n <tr>\n <td>{{ event.date ? (event.date | date) : '' }}</td>\n <td>{{ event.event }}</td>\n <td>{{ event.ipAddress }}</td>\n <td>{{ event.client || '' }}</td>\n <td>\n @for (detail of event.details; track detail; let last = $last) {\n <span>\n {{ detail.key }} = {{ detail.value }}\n @if (!last) {\n ,&nbsp;\n }\n </span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "pipe", type: DatePipe, name: "date" }] }); }
26
27
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LogComponent, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LogComponent, decorators: [{
28
29
  type: Component,
29
- args: [{ standalone: true, imports: [KcClassDirective, TemplateComponent, NgClass, DatePipe], selector: 'kc-root', providers: [
30
+ args: [{ standalone: true, imports: [KcClassDirective, TemplateComponent, NgClass, DatePipe], selector: 'kc-log', providers: [
30
31
  {
31
32
  provide: ComponentReference,
32
33
  useExisting: forwardRef(() => LogComponent)
33
34
  }
34
- ], template: "@let log = kcContext.log;\n\n<kc-account-template [active]=\"'log'\">\n <ng-container content>\n <div [kcClass]=\"'kcContentWrapperClass'\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('accountLogHtmlTitle') }}</h2>\n </div>\n\n <table class=\"table table-striped table-bordered\">\n <thead>\n <tr>\n <td>{{ i18n.msgStr('date') }}</td>\n <td>{{ i18n.msgStr('event') }}</td>\n <td>{{ i18n.msgStr('ip') }}</td>\n <td>{{ i18n.msgStr('client') }}</td>\n <td>{{ i18n.msgStr('details') }}</td>\n </tr>\n </thead>\n\n <tbody>\n @for (event of log.events; track event) {\n <tr>\n <td>{{ event.date ? (event.date | date) : '' }}</td>\n <td>{{ event.event }}</td>\n <td>{{ event.ipAddress }}</td>\n <td>{{ event.client || '' }}</td>\n <td>\n @for (detail of event.details; track detail; let last = $last) {\n <span>\n {{ detail.key }} = {{ detail.value }}\n @if (!last) {\n ,&nbsp;\n }\n </span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </ng-container>\n</kc-account-template>\n" }]
35
+ ], template: "@let log = kcContext.log;\n\n<div [kcClass]=\"'kcContentWrapperClass'\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('accountLogHtmlTitle') }}</h2>\n </div>\n\n <table class=\"table table-striped table-bordered\">\n <thead>\n <tr>\n <td>{{ i18n.msgStr('date') }}</td>\n <td>{{ i18n.msgStr('event') }}</td>\n <td>{{ i18n.msgStr('ip') }}</td>\n <td>{{ i18n.msgStr('client') }}</td>\n <td>{{ i18n.msgStr('details') }}</td>\n </tr>\n </thead>\n\n <tbody>\n @for (event of log.events; track event) {\n <tr>\n <td>{{ event.date ? (event.date | date) : '' }}</td>\n <td>{{ event.event }}</td>\n <td>{{ event.ipAddress }}</td>\n <td>{{ event.client || '' }}</td>\n <td>\n @for (detail of event.details; track detail; let last = $last) {\n <span>\n {{ detail.key }} = {{ detail.value }}\n @if (!last) {\n ,&nbsp;\n }\n </span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n" }]
35
36
  }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hY2NvdW50L3BhZ2VzL2xvZy9sb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2FjY291bnQvcGFnZXMvbG9nL2xvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFpQmxGLE1BQU0sT0FBTyxZQUFhLFNBQVEsa0JBQWtCO0lBWnBEOztRQWFJLFNBQUksR0FBRyxNQUFNLENBQU8sWUFBWSxDQUFDLENBQUM7UUFDbEMsY0FBUyxHQUFHLE1BQU0sQ0FBNEMsa0JBQWtCLENBQUMsQ0FBQztRQUN6RSxvQkFBZSxHQUFHLE1BQU0sQ0FBVSxlQUFlLENBQUMsQ0FBQztRQUNuRCxZQUFPLEdBQUcsTUFBTSxDQUFvQyxlQUFlLENBQUMsQ0FBQztLQUNqRjs4R0FMWSxZQUFZO2tHQUFaLFlBQVksc0RBUFY7WUFDUDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQzthQUM5QztTQUNKLGlEQ3ZCTCw2eERBNENBLDRDRDdCYyxnQkFBZ0IsK0ZBQUUsaUJBQWlCLCtFQUFXLFFBQVE7OzJGQVV2RCxZQUFZO2tCQVp4QixTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsWUFDdkQsU0FBUyxhQUVSO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxrQkFBa0I7NEJBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQzt5QkFDOUM7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmZXJlbmNlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9jbGFzc2VzL2NvbXBvbmVudC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L2NvbnRhaW5lcnMvdGVtcGxhdGUnO1xuaW1wb3J0IHsgS2NDbGFzc0RpcmVjdGl2ZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvZGlyZWN0aXZlcy9rYy1jbGFzcyc7XG5pbXBvcnQgeyBBQ0NPVU5UX0NMQVNTRVMgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L3Rva2Vucy9jbGFzc2VzJztcbmltcG9ydCB7IEFDQ09VTlRfSTE4TiB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvdG9rZW5zL2kxOG4nO1xuaW1wb3J0IHsgS0NfQUNDT1VOVF9DT05URVhUIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC90b2tlbnMva2MtY29udGV4dCc7XG5pbXBvcnQgeyBVU0VfREVGQVVMVF9DU1MgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvdG9rZW5zL3VzZS1kZWZhdWx0LWNzcyc7XG5pbXBvcnQgdHlwZSB7IENsYXNzS2V5IH0gZnJvbSAna2V5Y2xvYWtpZnkvYWNjb3VudCc7XG5pbXBvcnQgdHlwZSB7IEkxOG4gfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBLY0NvbnRleHQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L0tjQ29udGV4dCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0tjQ2xhc3NEaXJlY3RpdmUsIFRlbXBsYXRlQ29tcG9uZW50LCBOZ0NsYXNzLCBEYXRlUGlwZV0sXG4gICAgc2VsZWN0b3I6ICdrYy1yb290JyxcbiAgICB0ZW1wbGF0ZVVybDogJ2xvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENvbXBvbmVudFJlZmVyZW5jZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExvZ0NvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTG9nQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIHtcbiAgICBpMThuID0gaW5qZWN0PEkxOG4+KEFDQ09VTlRfSTE4Tik7XG4gICAga2NDb250ZXh0ID0gaW5qZWN0PEV4dHJhY3Q8S2NDb250ZXh0LCB7IHBhZ2VJZDogJ2xvZy5mdGwnIH0+PihLQ19BQ0NPVU5UX0NPTlRFWFQpO1xuICAgIG92ZXJyaWRlIGRvVXNlRGVmYXVsdENzcyA9IGluamVjdDxib29sZWFuPihVU0VfREVGQVVMVF9DU1MpO1xuICAgIG92ZXJyaWRlIGNsYXNzZXMgPSBpbmplY3Q8UGFydGlhbDxSZWNvcmQ8Q2xhc3NLZXksIHN0cmluZz4+PihBQ0NPVU5UX0NMQVNTRVMpO1xufVxuIiwiQGxldCBsb2cgPSBrY0NvbnRleHQubG9nO1xuXG48a2MtYWNjb3VudC10ZW1wbGF0ZSBbYWN0aXZlXT1cIidsb2cnXCI+XG4gICAgPG5nLWNvbnRhaW5lciBjb250ZW50PlxuICAgICAgICA8ZGl2IFtrY0NsYXNzXT1cIidrY0NvbnRlbnRXcmFwcGVyQ2xhc3MnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEwXCI+XG4gICAgICAgICAgICAgICAgPGgyPnt7IGkxOG4ubXNnU3RyKCdhY2NvdW50TG9nSHRtbFRpdGxlJykgfX08L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtYm9yZGVyZWRcIj5cbiAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpMThuLm1zZ1N0cignZGF0ZScpIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpMThuLm1zZ1N0cignZXZlbnQnKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaTE4bi5tc2dTdHIoJ2lwJykgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGkxOG4ubXNnU3RyKCdjbGllbnQnKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaTE4bi5tc2dTdHIoJ2RldGFpbHMnKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cblxuICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoZXZlbnQgb2YgbG9nLmV2ZW50czsgdHJhY2sgZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZXZlbnQuZGF0ZSA/IChldmVudC5kYXRlIHwgZGF0ZSkgOiAnJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGV2ZW50LmV2ZW50IH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZXZlbnQuaXBBZGRyZXNzIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZXZlbnQuY2xpZW50IHx8ICcnIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGRldGFpbCBvZiBldmVudC5kZXRhaWxzOyB0cmFjayBkZXRhaWw7IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRldGFpbC5rZXkgfX0gPSB7eyBkZXRhaWwudmFsdWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwva2MtYWNjb3VudC10ZW1wbGF0ZT5cbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hY2NvdW50L3BhZ2VzL2xvZy9sb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2FjY291bnQvcGFnZXMvbG9nL2xvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUdwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFlbEYsTUFBTSxPQUFPLFlBQWEsU0FBUSxrQkFBa0I7SUFacEQ7O1FBYUksU0FBSSxHQUFHLE1BQU0sQ0FBTyxZQUFZLENBQUMsQ0FBQztRQUNsQyxjQUFTLEdBQUcsTUFBTSxDQUE0QyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3pFLG9CQUFlLEdBQUcsTUFBTSxDQUFVLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELFlBQU8sR0FBRyxNQUFNLENBQW9DLGVBQWUsQ0FBQyxDQUFDO1FBQzlFLFdBQU0sR0FBRyxLQUFLLENBQUM7S0FDbEI7OEdBTlksWUFBWTtrR0FBWixZQUFZLHFEQVBWO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUM7YUFDOUM7U0FDSixpREN2QkwsMDRDQXdDQSw0Q0R6QmMsZ0JBQWdCLDBGQUE4QixRQUFROzsyRkFVdkQsWUFBWTtrQkFaeEIsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQ3ZELFFBQVEsYUFFUDt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUM7eUJBQzlDO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUsIE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFJlZmVyZW5jZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvY2xhc3Nlcy9jb21wb25lbnQtcmVmZXJlbmNlJztcbmltcG9ydCB7IFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9jb250YWluZXJzL3RlbXBsYXRlJztcbmltcG9ydCB7IEtjQ2xhc3NEaXJlY3RpdmUgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L2RpcmVjdGl2ZXMva2MtY2xhc3MnO1xuaW1wb3J0IHR5cGUgeyBJMThuIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9pMThuJztcbmltcG9ydCB0eXBlIHsgS2NDb250ZXh0IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9LY0NvbnRleHQnO1xuaW1wb3J0IHsgQUNDT1VOVF9DTEFTU0VTIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC90b2tlbnMvY2xhc3Nlcyc7XG5pbXBvcnQgeyBBQ0NPVU5UX0kxOE4gfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L3Rva2Vucy9pMThuJztcbmltcG9ydCB7IEtDX0FDQ09VTlRfQ09OVEVYVCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvdG9rZW5zL2tjLWNvbnRleHQnO1xuaW1wb3J0IHsgVVNFX0RFRkFVTFRfQ1NTIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbGliL3Rva2Vucy91c2UtZGVmYXVsdC1jc3MnO1xuaW1wb3J0IHR5cGUgeyBDbGFzc0tleSB9IGZyb20gJ2tleWNsb2FraWZ5L2FjY291bnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtLY0NsYXNzRGlyZWN0aXZlLCBUZW1wbGF0ZUNvbXBvbmVudCwgTmdDbGFzcywgRGF0ZVBpcGVdLFxuICAgIHNlbGVjdG9yOiAna2MtbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2xvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENvbXBvbmVudFJlZmVyZW5jZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExvZ0NvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTG9nQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIHtcbiAgICBpMThuID0gaW5qZWN0PEkxOG4+KEFDQ09VTlRfSTE4Tik7XG4gICAga2NDb250ZXh0ID0gaW5qZWN0PEV4dHJhY3Q8S2NDb250ZXh0LCB7IHBhZ2VJZDogJ2xvZy5mdGwnIH0+PihLQ19BQ0NPVU5UX0NPTlRFWFQpO1xuICAgIG92ZXJyaWRlIGRvVXNlRGVmYXVsdENzcyA9IGluamVjdDxib29sZWFuPihVU0VfREVGQVVMVF9DU1MpO1xuICAgIG92ZXJyaWRlIGNsYXNzZXMgPSBpbmplY3Q8UGFydGlhbDxSZWNvcmQ8Q2xhc3NLZXksIHN0cmluZz4+PihBQ0NPVU5UX0NMQVNTRVMpO1xuICAgIGFjdGl2ZSA9ICdsb2cnO1xufVxuIiwiQGxldCBsb2cgPSBrY0NvbnRleHQubG9nO1xuXG48ZGl2IFtrY0NsYXNzXT1cIidrY0NvbnRlbnRXcmFwcGVyQ2xhc3MnXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMFwiPlxuICAgICAgICA8aDI+e3sgaTE4bi5tc2dTdHIoJ2FjY291bnRMb2dIdG1sVGl0bGUnKSB9fTwvaDI+XG4gICAgPC9kaXY+XG5cbiAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWJvcmRlcmVkXCI+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQ+e3sgaTE4bi5tc2dTdHIoJ2RhdGUnKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPnt7IGkxOG4ubXNnU3RyKCdldmVudCcpIH19PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+e3sgaTE4bi5tc2dTdHIoJ2lwJykgfX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD57eyBpMThuLm1zZ1N0cignY2xpZW50JykgfX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD57eyBpMThuLm1zZ1N0cignZGV0YWlscycpIH19PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGhlYWQ+XG5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgQGZvciAoZXZlbnQgb2YgbG9nLmV2ZW50czsgdHJhY2sgZXZlbnQpIHtcbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD57eyBldmVudC5kYXRlID8gKGV2ZW50LmRhdGUgfCBkYXRlKSA6ICcnIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGV2ZW50LmV2ZW50IH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGV2ZW50LmlwQWRkcmVzcyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD57eyBldmVudC5jbGllbnQgfHwgJycgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChkZXRhaWwgb2YgZXZlbnQuZGV0YWlsczsgdHJhY2sgZGV0YWlsOyBsZXQgbGFzdCA9ICRsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRldGFpbC5rZXkgfX0gPSB7eyBkZXRhaWwudmFsdWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbjwvZGl2PlxuIl19
@@ -18,6 +18,7 @@ export class PasswordComponent extends ComponentReference {
18
18
  this.additionalClasses = {
19
19
  kcBodyClass: `${this.classes?.kcBodyClass} password`
20
20
  };
21
+ this.active = 'password';
21
22
  this.currentPassword = signal('');
22
23
  this.newPassword = signal('');
23
24
  this.newPasswordConfirm = signal('');
@@ -25,6 +26,7 @@ export class PasswordComponent extends ComponentReference {
25
26
  this.newPasswordConfirmError = signal('');
26
27
  this.hasNewPasswordBlurred = signal(false);
27
28
  this.hasNewPasswordConfirmBlurred = signal(false);
29
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
28
30
  // @ts-ignore
29
31
  window.kcContext = {
30
32
  ...this.kcContext,
@@ -87,21 +89,21 @@ export class PasswordComponent extends ComponentReference {
87
89
  this.hasNewPasswordConfirmBlurred.set(true);
88
90
  this.checkNewPasswordConfirm(this.newPasswordConfirm());
89
91
  }
90
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: PasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
91
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: PasswordComponent, isStandalone: true, selector: "kc-root", providers: [
92
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
93
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PasswordComponent, isStandalone: true, selector: "kc-password", providers: [
92
94
  {
93
95
  provide: ComponentReference,
94
96
  useExisting: forwardRef(() => PasswordComponent)
95
97
  }
96
- ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let password = kcContext.password;\n@let account = kcContext.account;\n@let stateChecker = kcContext.stateChecker;\n\n<kc-account-template [active]=\"'password'\">\n <ng-container content>\n <div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('changePasswordHtmlTitle') }}</h2>\n </div>\n <div class=\"col-md-2 subtitle\">\n <span class=\"subtitle\">{{ i18n.msgStr('allFieldsRequired') }}</span>\n </div>\n </div>\n\n <form\n [action]=\"url.passwordUrl\"\n class=\"form-horizontal\"\n method=\"post\"\n >\n <input\n type=\"text\"\n id=\"username\"\n name=\"username\"\n [value]=\"account.username ?? ''\"\n autoComplete=\"username\"\n readOnly\n [style.display]=\"'none'\"\n />\n\n @if (password.passwordSet) {\n <div class=\"form-group\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"password\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('password') }}\n </label>\n </div>\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"password\"\n class=\"form-control\"\n id=\"password\"\n name=\"password\"\n autoFocus\n autoComplete=\"current-password\"\n [value]=\"currentPassword()\"\n (change)=\"currentPassword.set($any($event.target).value)\"\n />\n </div>\n </div>\n }\n\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n\n <div class=\"form-group\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"password-new\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('passwordNew') }}\n </label>\n </div>\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"password\"\n class=\"form-control\"\n id=\"password-new\"\n name=\"password-new\"\n autoComplete=\"new-password\"\n [value]=\"newPassword()\"\n (change)=\"onNewPasswordChange($any($event.target).value)\"\n (blur)=\"onNewPasswordBlur()\"\n />\n </div>\n </div>\n\n <div class=\"form-group\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"password-confirm\"\n class=\"control-label two-lines\"\n >\n {{ i18n.msgStr('passwordConfirm') }}\n </label>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"password\"\n class=\"form-control\"\n id=\"password-confirm\"\n name=\"password-confirm\"\n autoComplete=\"new-password\"\n [value]=\"newPasswordConfirm()\"\n (change)=\"onNewPasswordConfirmChange($any($event.target).value)\"\n (blur)=\"onNewPasswordConfirmBlur()\"\n />\n </div>\n </div>\n\n <div class=\"form-group\">\n <div\n id=\"kc-form-buttons\"\n class=\"col-md-offset-2 col-md-10 submit\"\n >\n <div>\n <button\n [disabled]=\"newPasswordError() !== '' || newPasswordConfirmError() !== ''\"\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n name=\"submitAction\"\n value=\"Save\"\n >\n {{ i18n.msgStr('doSave') }}\n </button>\n </div>\n </div>\n </div>\n </form>\n </ng-container>\n</kc-account-template>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "component", type: TemplateComponent, selector: "kc-account-template", inputs: ["active"] }] }); }
98
+ ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let password = kcContext.password;\n@let account = kcContext.account;\n@let stateChecker = kcContext.stateChecker;\n\n<div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('changePasswordHtmlTitle') }}</h2>\n </div>\n <div class=\"col-md-2 subtitle\">\n <span class=\"subtitle\">{{ i18n.msgStr('allFieldsRequired') }}</span>\n </div>\n</div>\n\n<form\n class=\"form-horizontal\"\n method=\"post\"\n [action]=\"url.passwordUrl\"\n>\n <input\n type=\"text\"\n id=\"username\"\n name=\"username\"\n autoComplete=\"username\"\n readOnly\n [value]=\"account.username ?? ''\"\n [style.display]=\"'none'\"\n />\n\n @if (password.passwordSet) {\n <div class=\"form-group\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"password\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('password') }}\n </label>\n </div>\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"password\"\n class=\"form-control\"\n id=\"password\"\n name=\"password\"\n autoFocus\n autoComplete=\"current-password\"\n [value]=\"currentPassword()\"\n (change)=\"currentPassword.set($any($event.target).value)\"\n />\n </div>\n </div>\n }\n\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n\n <div class=\"form-group\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"password-new\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('passwordNew') }}\n </label>\n </div>\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"password\"\n class=\"form-control\"\n id=\"password-new\"\n name=\"password-new\"\n autoComplete=\"new-password\"\n [value]=\"newPassword()\"\n (change)=\"onNewPasswordChange($any($event.target).value)\"\n (blur)=\"onNewPasswordBlur()\"\n />\n </div>\n </div>\n\n <div class=\"form-group\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"password-confirm\"\n class=\"control-label two-lines\"\n >\n {{ i18n.msgStr('passwordConfirm') }}\n </label>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"password\"\n class=\"form-control\"\n id=\"password-confirm\"\n name=\"password-confirm\"\n autoComplete=\"new-password\"\n [value]=\"newPasswordConfirm()\"\n (change)=\"onNewPasswordConfirmChange($any($event.target).value)\"\n (blur)=\"onNewPasswordConfirmBlur()\"\n />\n </div>\n </div>\n\n <div class=\"form-group\">\n <div\n id=\"kc-form-buttons\"\n class=\"col-md-offset-2 col-md-10 submit\"\n >\n <div>\n <button\n type=\"submit\"\n name=\"submitAction\"\n value=\"Save\"\n [disabled]=\"newPasswordError() !== '' || newPasswordConfirmError() !== ''\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doSave') }}\n </button>\n </div>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }] }); }
97
99
  }
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: PasswordComponent, decorators: [{
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PasswordComponent, decorators: [{
99
101
  type: Component,
100
- args: [{ standalone: true, imports: [KcClassDirective, TemplateComponent, NgClass], selector: 'kc-root', providers: [
102
+ args: [{ standalone: true, imports: [KcClassDirective, TemplateComponent, NgClass], selector: 'kc-password', providers: [
101
103
  {
102
104
  provide: ComponentReference,
103
105
  useExisting: forwardRef(() => PasswordComponent)
104
106
  }
105
- ], template: "@let url = kcContext.url;\n@let password = kcContext.password;\n@let account = kcContext.account;\n@let stateChecker = kcContext.stateChecker;\n\n<kc-account-template [active]=\"'password'\">\n <ng-container content>\n <div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('changePasswordHtmlTitle') }}</h2>\n </div>\n <div class=\"col-md-2 subtitle\">\n <span class=\"subtitle\">{{ i18n.msgStr('allFieldsRequired') }}</span>\n </div>\n </div>\n\n <form\n [action]=\"url.passwordUrl\"\n class=\"form-horizontal\"\n method=\"post\"\n >\n <input\n type=\"text\"\n id=\"username\"\n name=\"username\"\n [value]=\"account.username ?? ''\"\n autoComplete=\"username\"\n readOnly\n [style.display]=\"'none'\"\n />\n\n @if (password.passwordSet) {\n <div class=\"form-group\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"password\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('password') }}\n </label>\n </div>\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"password\"\n class=\"form-control\"\n id=\"password\"\n name=\"password\"\n autoFocus\n autoComplete=\"current-password\"\n [value]=\"currentPassword()\"\n (change)=\"currentPassword.set($any($event.target).value)\"\n />\n </div>\n </div>\n }\n\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n\n <div class=\"form-group\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"password-new\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('passwordNew') }}\n </label>\n </div>\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"password\"\n class=\"form-control\"\n id=\"password-new\"\n name=\"password-new\"\n autoComplete=\"new-password\"\n [value]=\"newPassword()\"\n (change)=\"onNewPasswordChange($any($event.target).value)\"\n (blur)=\"onNewPasswordBlur()\"\n />\n </div>\n </div>\n\n <div class=\"form-group\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"password-confirm\"\n class=\"control-label two-lines\"\n >\n {{ i18n.msgStr('passwordConfirm') }}\n </label>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"password\"\n class=\"form-control\"\n id=\"password-confirm\"\n name=\"password-confirm\"\n autoComplete=\"new-password\"\n [value]=\"newPasswordConfirm()\"\n (change)=\"onNewPasswordConfirmChange($any($event.target).value)\"\n (blur)=\"onNewPasswordConfirmBlur()\"\n />\n </div>\n </div>\n\n <div class=\"form-group\">\n <div\n id=\"kc-form-buttons\"\n class=\"col-md-offset-2 col-md-10 submit\"\n >\n <div>\n <button\n [disabled]=\"newPasswordError() !== '' || newPasswordConfirmError() !== ''\"\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n name=\"submitAction\"\n value=\"Save\"\n >\n {{ i18n.msgStr('doSave') }}\n </button>\n </div>\n </div>\n </div>\n </form>\n </ng-container>\n</kc-account-template>\n" }]
107
+ ], template: "@let url = kcContext.url;\n@let password = kcContext.password;\n@let account = kcContext.account;\n@let stateChecker = kcContext.stateChecker;\n\n<div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('changePasswordHtmlTitle') }}</h2>\n </div>\n <div class=\"col-md-2 subtitle\">\n <span class=\"subtitle\">{{ i18n.msgStr('allFieldsRequired') }}</span>\n </div>\n</div>\n\n<form\n class=\"form-horizontal\"\n method=\"post\"\n [action]=\"url.passwordUrl\"\n>\n <input\n type=\"text\"\n id=\"username\"\n name=\"username\"\n autoComplete=\"username\"\n readOnly\n [value]=\"account.username ?? ''\"\n [style.display]=\"'none'\"\n />\n\n @if (password.passwordSet) {\n <div class=\"form-group\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"password\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('password') }}\n </label>\n </div>\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"password\"\n class=\"form-control\"\n id=\"password\"\n name=\"password\"\n autoFocus\n autoComplete=\"current-password\"\n [value]=\"currentPassword()\"\n (change)=\"currentPassword.set($any($event.target).value)\"\n />\n </div>\n </div>\n }\n\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n\n <div class=\"form-group\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"password-new\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('passwordNew') }}\n </label>\n </div>\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"password\"\n class=\"form-control\"\n id=\"password-new\"\n name=\"password-new\"\n autoComplete=\"new-password\"\n [value]=\"newPassword()\"\n (change)=\"onNewPasswordChange($any($event.target).value)\"\n (blur)=\"onNewPasswordBlur()\"\n />\n </div>\n </div>\n\n <div class=\"form-group\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"password-confirm\"\n class=\"control-label two-lines\"\n >\n {{ i18n.msgStr('passwordConfirm') }}\n </label>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"password\"\n class=\"form-control\"\n id=\"password-confirm\"\n name=\"password-confirm\"\n autoComplete=\"new-password\"\n [value]=\"newPasswordConfirm()\"\n (change)=\"onNewPasswordConfirmChange($any($event.target).value)\"\n (blur)=\"onNewPasswordConfirmBlur()\"\n />\n </div>\n </div>\n\n <div class=\"form-group\">\n <div\n id=\"kc-form-buttons\"\n class=\"col-md-offset-2 col-md-10 submit\"\n >\n <div>\n <button\n type=\"submit\"\n name=\"submitAction\"\n value=\"Save\"\n [disabled]=\"newPasswordError() !== '' || newPasswordConfirmError() !== ''\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doSave') }}\n </button>\n </div>\n </div>\n </div>\n</form>\n" }]
106
108
  }], ctorParameters: () => [] });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FjY291bnQvcGFnZXMvcGFzc3dvcmQvcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2FjY291bnQvcGFnZXMvcGFzc3dvcmQvcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saURBQWlELENBQUM7O0FBaUJsRixNQUFNLE9BQU8saUJBQWtCLFNBQVEsa0JBQWtCO0lBaUJyRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBakJaLFNBQUksR0FBRyxNQUFNLENBQU8sWUFBWSxDQUFDLENBQUM7UUFDbEMsY0FBUyxHQUFHLE1BQU0sQ0FBaUQsa0JBQWtCLENBQUMsQ0FBQztRQUM5RSxvQkFBZSxHQUFHLE1BQU0sQ0FBVSxlQUFlLENBQUMsQ0FBQztRQUNuRCxZQUFPLEdBQUcsTUFBTSxDQUFvQyxlQUFlLENBQUMsQ0FBQztRQUNyRSxzQkFBaUIsR0FBc0M7WUFDNUQsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLFdBQVc7U0FDdkQsQ0FBQztRQUVGLG9CQUFlLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsNEJBQXVCLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLDBCQUFxQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxpQ0FBNEIsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFJekMsYUFBYTtRQUNiLE1BQU0sQ0FBQyxTQUFTLEdBQUc7WUFDZixHQUFHLElBQUksQ0FBQyxTQUFTO1lBQ2pCLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRTtnQkFDWCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUNqQyxPQUFPO3dCQUNILElBQUksRUFBRSxPQUFPO3dCQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7cUJBQ25DLENBQUM7Z0JBQ04sQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUN4QyxPQUFPO3dCQUNILElBQUksRUFBRSxPQUFPO3dCQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsdUJBQXVCLEVBQUU7cUJBQzFDLENBQUM7Z0JBQ04sQ0FBQztnQkFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxFQUFFO1NBQ1AsQ0FBQztJQUNOLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxXQUFtQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVztZQUFFLE9BQU87UUFDakQsSUFBSSxXQUFXLEtBQUssSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3RELENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQztJQUNELHVCQUF1QixDQUFDLGtCQUEwQjtRQUM5QyxJQUFJLGtCQUFrQixLQUFLLEVBQUU7WUFBRSxPQUFPO1FBQ3RDLElBQUksa0JBQWtCLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQWE7UUFDN0IsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBRTFCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUI7UUFDYixJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsMEJBQTBCLENBQUMsS0FBYTtRQUNwQyxNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUVqQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEQsSUFBSSxJQUFJLENBQUMsNEJBQTRCLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDTCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3BCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQzs4R0FuRlEsaUJBQWlCO2tHQUFqQixpQkFBaUIsc0RBUGY7WUFDUDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2FBQ25EO1NBQ0osaURDdkJMLGk0SkFtSUEsNENEcEhjLGdCQUFnQiwrRkFBRSxpQkFBaUI7OzJGQVVwQyxpQkFBaUI7a0JBWjdCLFNBQVM7aUNBQ00sSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLFlBQzdDLFNBQVMsYUFFUjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQzt5QkFDbkQ7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFJlZmVyZW5jZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvY2xhc3Nlcy9jb21wb25lbnQtcmVmZXJlbmNlJztcbmltcG9ydCB7IFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9jb250YWluZXJzL3RlbXBsYXRlJztcbmltcG9ydCB7IEtjQ2xhc3NEaXJlY3RpdmUgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L2RpcmVjdGl2ZXMva2MtY2xhc3MnO1xuaW1wb3J0IHsgQUNDT1VOVF9DTEFTU0VTIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC90b2tlbnMvY2xhc3Nlcyc7XG5pbXBvcnQgeyBBQ0NPVU5UX0kxOE4gfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L3Rva2Vucy9pMThuJztcbmltcG9ydCB7IEtDX0FDQ09VTlRfQ09OVEVYVCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvdG9rZW5zL2tjLWNvbnRleHQnO1xuaW1wb3J0IHsgVVNFX0RFRkFVTFRfQ1NTIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbGliL3Rva2Vucy91c2UtZGVmYXVsdC1jc3MnO1xuaW1wb3J0IHR5cGUgeyBDbGFzc0tleSB9IGZyb20gJ2tleWNsb2FraWZ5L2FjY291bnQnO1xuaW1wb3J0IHR5cGUgeyBJMThuIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9pMThuJztcbmltcG9ydCB0eXBlIHsgS2NDb250ZXh0IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9LY0NvbnRleHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtLY0NsYXNzRGlyZWN0aXZlLCBUZW1wbGF0ZUNvbXBvbmVudCwgTmdDbGFzc10sXG4gICAgc2VsZWN0b3I6ICdrYy1yb290JyxcbiAgICB0ZW1wbGF0ZVVybDogJ3Bhc3N3b3JkLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQ29tcG9uZW50UmVmZXJlbmNlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGFzc3dvcmRDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIHtcbiAgICBpMThuID0gaW5qZWN0PEkxOG4+KEFDQ09VTlRfSTE4Tik7XG4gICAga2NDb250ZXh0ID0gaW5qZWN0PEV4dHJhY3Q8S2NDb250ZXh0LCB7IHBhZ2VJZDogJ3Bhc3N3b3JkLmZ0bCcgfT4+KEtDX0FDQ09VTlRfQ09OVEVYVCk7XG4gICAgb3ZlcnJpZGUgZG9Vc2VEZWZhdWx0Q3NzID0gaW5qZWN0PGJvb2xlYW4+KFVTRV9ERUZBVUxUX0NTUyk7XG4gICAgb3ZlcnJpZGUgY2xhc3NlcyA9IGluamVjdDxQYXJ0aWFsPFJlY29yZDxDbGFzc0tleSwgc3RyaW5nPj4+KEFDQ09VTlRfQ0xBU1NFUyk7XG4gICAgb3ZlcnJpZGUgYWRkaXRpb25hbENsYXNzZXM6IFBhcnRpYWw8UmVjb3JkPENsYXNzS2V5LCBzdHJpbmc+PiA9IHtcbiAgICAgICAga2NCb2R5Q2xhc3M6IGAke3RoaXMuY2xhc3Nlcz8ua2NCb2R5Q2xhc3N9IHBhc3N3b3JkYFxuICAgIH07XG5cbiAgICBjdXJyZW50UGFzc3dvcmQgPSBzaWduYWwoJycpO1xuICAgIG5ld1Bhc3N3b3JkID0gc2lnbmFsKCcnKTtcbiAgICBuZXdQYXNzd29yZENvbmZpcm0gPSBzaWduYWwoJycpO1xuICAgIG5ld1Bhc3N3b3JkRXJyb3IgPSBzaWduYWwoJycpO1xuICAgIG5ld1Bhc3N3b3JkQ29uZmlybUVycm9yID0gc2lnbmFsKCcnKTtcbiAgICBoYXNOZXdQYXNzd29yZEJsdXJyZWQgPSBzaWduYWwoZmFsc2UpO1xuICAgIGhhc05ld1Bhc3N3b3JkQ29uZmlybUJsdXJyZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgd2luZG93LmtjQ29udGV4dCA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMua2NDb250ZXh0LFxuICAgICAgICAgICAgbWVzc2FnZTogKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5uZXdQYXNzd29yZEVycm9yKCkgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeTogdGhpcy5uZXdQYXNzd29yZEVycm9yKClcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubmV3UGFzc3dvcmRDb25maXJtRXJyb3IoKSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLm5ld1Bhc3N3b3JkQ29uZmlybUVycm9yKClcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMua2NDb250ZXh0Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9KSgpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY2hlY2tOZXdQYXNzd29yZChuZXdQYXNzd29yZDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5rY0NvbnRleHQucGFzc3dvcmQucGFzc3dvcmRTZXQpIHJldHVybjtcbiAgICAgICAgaWYgKG5ld1Bhc3N3b3JkID09PSB0aGlzLmN1cnJlbnRQYXNzd29yZCgpKSB7XG4gICAgICAgICAgICB0aGlzLm5ld1Bhc3N3b3JkRXJyb3Iuc2V0KCduZXdQYXNzd29yZFNhbWVBc09sZCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uZXdQYXNzd29yZEVycm9yLnNldCgnJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2hlY2tOZXdQYXNzd29yZENvbmZpcm0obmV3UGFzc3dvcmRDb25maXJtOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKG5ld1Bhc3N3b3JkQ29uZmlybSA9PT0gJycpIHJldHVybjtcbiAgICAgICAgaWYgKG5ld1Bhc3N3b3JkQ29uZmlybSAhPT0gdGhpcy5uZXdQYXNzd29yZCgpKSB7XG4gICAgICAgICAgICB0aGlzLm5ld1Bhc3N3b3JkQ29uZmlybUVycm9yLnNldCgncGFzc3dvcmRDb25maXJtTm90TWF0Y2gnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubmV3UGFzc3dvcmRDb25maXJtRXJyb3Iuc2V0KCcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTmV3UGFzc3dvcmRDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBuZXdQYXNzd29yZCA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMubmV3UGFzc3dvcmQuc2V0KG5ld1Bhc3N3b3JkKTtcbiAgICAgICAgaWYgKHRoaXMuaGFzTmV3UGFzc3dvcmRCbHVycmVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tOZXdQYXNzd29yZChuZXdQYXNzd29yZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk5ld1Bhc3N3b3JkQmx1cigpIHtcbiAgICAgICAgdGhpcy5oYXNOZXdQYXNzd29yZEJsdXJyZWQuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLmNoZWNrTmV3UGFzc3dvcmQodGhpcy5uZXdQYXNzd29yZCgpKTtcbiAgICB9XG5cbiAgICBvbk5ld1Bhc3N3b3JkQ29uZmlybUNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG5ld1Bhc3N3b3JkQ29uZmlybSA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMubmV3UGFzc3dvcmRDb25maXJtLnNldChuZXdQYXNzd29yZENvbmZpcm0pO1xuICAgICAgICBpZiAodGhpcy5oYXNOZXdQYXNzd29yZENvbmZpcm1CbHVycmVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tOZXdQYXNzd29yZENvbmZpcm0obmV3UGFzc3dvcmRDb25maXJtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTmV3UGFzc3dvcmRDb25maXJtQmx1cigpIHtcbiAgICAgICAgdGhpcy5oYXNOZXdQYXNzd29yZENvbmZpcm1CbHVycmVkLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5jaGVja05ld1Bhc3N3b3JkQ29uZmlybSh0aGlzLm5ld1Bhc3N3b3JkQ29uZmlybSgpKTtcbiAgICB9XG59XG4iLCJAbGV0IHVybCA9IGtjQ29udGV4dC51cmw7XG5AbGV0IHBhc3N3b3JkID0ga2NDb250ZXh0LnBhc3N3b3JkO1xuQGxldCBhY2NvdW50ID0ga2NDb250ZXh0LmFjY291bnQ7XG5AbGV0IHN0YXRlQ2hlY2tlciA9IGtjQ29udGV4dC5zdGF0ZUNoZWNrZXI7XG5cbjxrYy1hY2NvdW50LXRlbXBsYXRlIFthY3RpdmVdPVwiJ3Bhc3N3b3JkJ1wiPlxuICAgIDxuZy1jb250YWluZXIgY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMFwiPlxuICAgICAgICAgICAgICAgIDxoMj57eyBpMThuLm1zZ1N0cignY2hhbmdlUGFzc3dvcmRIdG1sVGl0bGUnKSB9fTwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBzdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGVcIj57eyBpMThuLm1zZ1N0cignYWxsRmllbGRzUmVxdWlyZWQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgW2FjdGlvbl09XCJ1cmwucGFzc3dvcmRVcmxcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIlxuICAgICAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBpZD1cInVzZXJuYW1lXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwidXNlcm5hbWVcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhY2NvdW50LnVzZXJuYW1lID8/ICcnXCJcbiAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJ1c2VybmFtZVwiXG4gICAgICAgICAgICAgICAgcmVhZE9ubHlcbiAgICAgICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgQGlmIChwYXNzd29yZC5wYXNzd29yZFNldCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBjb2wtbWQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5tc2dTdHIoJ3Bhc3N3b3JkJykgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEwIGNvbC1tZC0xMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJjdXJyZW50LXBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY3VycmVudFBhc3N3b3JkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY3VycmVudFBhc3N3b3JkLnNldCgkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgaWQ9XCJzdGF0ZUNoZWNrZXJcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJzdGF0ZUNoZWNrZXJcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzdGF0ZUNoZWNrZXJcIlxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgY29sLW1kLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJwYXNzd29yZC1uZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb250cm9sLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaTE4bi5tc2dTdHIoJ3Bhc3N3b3JkTmV3JykgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEwIGNvbC1tZC0xMFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInBhc3N3b3JkLW5ld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmQtbmV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwibmV3UGFzc3dvcmQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uTmV3UGFzc3dvcmRDaGFuZ2UoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25OZXdQYXNzd29yZEJsdXIoKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgY29sLW1kLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJwYXNzd29yZC1jb25maXJtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbCB0d28tbGluZXNcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpMThuLm1zZ1N0cigncGFzc3dvcmRDb25maXJtJykgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTAgY29sLW1kLTEwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicGFzc3dvcmQtY29uZmlybVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmQtY29uZmlybVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJuZXctcGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm5ld1Bhc3N3b3JkQ29uZmlybSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25OZXdQYXNzd29yZENvbmZpcm1DaGFuZ2UoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25OZXdQYXNzd29yZENvbmZpcm1CbHVyKClcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBpZD1cImtjLWZvcm0tYnV0dG9uc1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLW1kLW9mZnNldC0yIGNvbC1tZC0xMCBzdWJtaXRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibmV3UGFzc3dvcmRFcnJvcigpICE9PSAnJyB8fCBuZXdQYXNzd29yZENvbmZpcm1FcnJvcigpICE9PSAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uUHJpbWFyeUNsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwic3VibWl0QWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIlNhdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGkxOG4ubXNnU3RyKCdkb1NhdmUnKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwva2MtYWNjb3VudC10ZW1wbGF0ZT5cbiJdfQ==
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FjY291bnQvcGFnZXMvcGFzc3dvcmQvcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2FjY291bnQvcGFnZXMvcGFzc3dvcmQvcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFHcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saURBQWlELENBQUM7O0FBZWxGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFBa0I7SUFtQnJEO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFuQlosU0FBSSxHQUFHLE1BQU0sQ0FBTyxZQUFZLENBQUMsQ0FBQztRQUNsQyxjQUFTLEdBQUcsTUFBTSxDQUFpRCxrQkFBa0IsQ0FBQyxDQUFDO1FBQzlFLG9CQUFlLEdBQUcsTUFBTSxDQUFVLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELFlBQU8sR0FBRyxNQUFNLENBQW9DLGVBQWUsQ0FBQyxDQUFDO1FBQ3JFLHNCQUFpQixHQUFzQztZQUM1RCxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsV0FBVztTQUN2RCxDQUFDO1FBRUYsV0FBTSxHQUFHLFVBQVUsQ0FBQztRQUVwQixvQkFBZSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6Qix1QkFBa0IsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLDRCQUF1QixHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQywwQkFBcUIsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsaUNBQTRCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSXpDLDZEQUE2RDtRQUM3RCxhQUFhO1FBQ2IsTUFBTSxDQUFDLFNBQVMsR0FBRztZQUNmLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDakIsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFO2dCQUNYLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQ2pDLE9BQU87d0JBQ0gsSUFBSSxFQUFFLE9BQU87d0JBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtxQkFDbkMsQ0FBQztnQkFDTixDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQ3hDLE9BQU87d0JBQ0gsSUFBSSxFQUFFLE9BQU87d0JBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtxQkFDMUMsQ0FBQztnQkFDTixDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDbEMsQ0FBQyxDQUFDLEVBQUU7U0FDUCxDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQixDQUFDLFdBQW1CO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUNqRCxJQUFJLFdBQVcsS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDdEQsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO0lBQ0QsdUJBQXVCLENBQUMsa0JBQTBCO1FBQzlDLElBQUksa0JBQWtCLEtBQUssRUFBRTtZQUFFLE9BQU87UUFDdEMsSUFBSSxrQkFBa0IsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDaEUsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDTCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBYTtRQUM3QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFFMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtRQUNiLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxLQUFhO1FBQ3BDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRWpDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoRCxJQUFJLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckQsQ0FBQztJQUNMLENBQUM7SUFFRCx3QkFBd0I7UUFDcEIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDOzhHQXRGUSxpQkFBaUI7a0dBQWpCLGlCQUFpQiwwREFQZjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7YUFDbkQ7U0FDSixpREN2QkwsaTNIQStIQSw0Q0RoSGMsZ0JBQWdCOzsyRkFVakIsaUJBQWlCO2tCQVo3QixTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxZQUM3QyxhQUFhLGFBRVo7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7eUJBQ25EO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L2NsYXNzZXMvY29tcG9uZW50LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvY29udGFpbmVycy90ZW1wbGF0ZSc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC9kaXJlY3RpdmVzL2tjLWNsYXNzJztcbmltcG9ydCB0eXBlIHsgSTE4biB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvaTE4bic7XG5pbXBvcnQgdHlwZSB7IEtjQ29udGV4dCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvS2NDb250ZXh0JztcbmltcG9ydCB7IEFDQ09VTlRfQ0xBU1NFUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2FjY291bnQvdG9rZW5zL2NsYXNzZXMnO1xuaW1wb3J0IHsgQUNDT1VOVF9JMThOIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvYWNjb3VudC90b2tlbnMvaTE4bic7XG5pbXBvcnQgeyBLQ19BQ0NPVU5UX0NPTlRFWFQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9hY2NvdW50L3Rva2Vucy9rYy1jb250ZXh0JztcbmltcG9ydCB7IFVTRV9ERUZBVUxUX0NTUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi90b2tlbnMvdXNlLWRlZmF1bHQtY3NzJztcbmltcG9ydCB0eXBlIHsgQ2xhc3NLZXkgfSBmcm9tICdrZXljbG9ha2lmeS9hY2NvdW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbS2NDbGFzc0RpcmVjdGl2ZSwgVGVtcGxhdGVDb21wb25lbnQsIE5nQ2xhc3NdLFxuICAgIHNlbGVjdG9yOiAna2MtcGFzc3dvcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAncGFzc3dvcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21wb25lbnRSZWZlcmVuY2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQYXNzd29yZENvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRSZWZlcmVuY2Uge1xuICAgIGkxOG4gPSBpbmplY3Q8STE4bj4oQUNDT1VOVF9JMThOKTtcbiAgICBrY0NvbnRleHQgPSBpbmplY3Q8RXh0cmFjdDxLY0NvbnRleHQsIHsgcGFnZUlkOiAncGFzc3dvcmQuZnRsJyB9Pj4oS0NfQUNDT1VOVF9DT05URVhUKTtcbiAgICBvdmVycmlkZSBkb1VzZURlZmF1bHRDc3MgPSBpbmplY3Q8Ym9vbGVhbj4oVVNFX0RFRkFVTFRfQ1NTKTtcbiAgICBvdmVycmlkZSBjbGFzc2VzID0gaW5qZWN0PFBhcnRpYWw8UmVjb3JkPENsYXNzS2V5LCBzdHJpbmc+Pj4oQUNDT1VOVF9DTEFTU0VTKTtcbiAgICBvdmVycmlkZSBhZGRpdGlvbmFsQ2xhc3NlczogUGFydGlhbDxSZWNvcmQ8Q2xhc3NLZXksIHN0cmluZz4+ID0ge1xuICAgICAgICBrY0JvZHlDbGFzczogYCR7dGhpcy5jbGFzc2VzPy5rY0JvZHlDbGFzc30gcGFzc3dvcmRgXG4gICAgfTtcblxuICAgIGFjdGl2ZSA9ICdwYXNzd29yZCc7XG5cbiAgICBjdXJyZW50UGFzc3dvcmQgPSBzaWduYWwoJycpO1xuICAgIG5ld1Bhc3N3b3JkID0gc2lnbmFsKCcnKTtcbiAgICBuZXdQYXNzd29yZENvbmZpcm0gPSBzaWduYWwoJycpO1xuICAgIG5ld1Bhc3N3b3JkRXJyb3IgPSBzaWduYWwoJycpO1xuICAgIG5ld1Bhc3N3b3JkQ29uZmlybUVycm9yID0gc2lnbmFsKCcnKTtcbiAgICBoYXNOZXdQYXNzd29yZEJsdXJyZWQgPSBzaWduYWwoZmFsc2UpO1xuICAgIGhhc05ld1Bhc3N3b3JkQ29uZmlybUJsdXJyZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB3aW5kb3cua2NDb250ZXh0ID0ge1xuICAgICAgICAgICAgLi4udGhpcy5rY0NvbnRleHQsXG4gICAgICAgICAgICBtZXNzYWdlOiAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5ld1Bhc3N3b3JkRXJyb3IoKSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5OiB0aGlzLm5ld1Bhc3N3b3JkRXJyb3IoKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5uZXdQYXNzd29yZENvbmZpcm1FcnJvcigpICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnk6IHRoaXMubmV3UGFzc3dvcmRDb25maXJtRXJyb3IoKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5rY0NvbnRleHQubWVzc2FnZTtcbiAgICAgICAgICAgIH0pKClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjaGVja05ld1Bhc3N3b3JkKG5ld1Bhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLmtjQ29udGV4dC5wYXNzd29yZC5wYXNzd29yZFNldCkgcmV0dXJuO1xuICAgICAgICBpZiAobmV3UGFzc3dvcmQgPT09IHRoaXMuY3VycmVudFBhc3N3b3JkKCkpIHtcbiAgICAgICAgICAgIHRoaXMubmV3UGFzc3dvcmRFcnJvci5zZXQoJ25ld1Bhc3N3b3JkU2FtZUFzT2xkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5ld1Bhc3N3b3JkRXJyb3Iuc2V0KCcnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjaGVja05ld1Bhc3N3b3JkQ29uZmlybShuZXdQYXNzd29yZENvbmZpcm06IHN0cmluZykge1xuICAgICAgICBpZiAobmV3UGFzc3dvcmRDb25maXJtID09PSAnJykgcmV0dXJuO1xuICAgICAgICBpZiAobmV3UGFzc3dvcmRDb25maXJtICE9PSB0aGlzLm5ld1Bhc3N3b3JkKCkpIHtcbiAgICAgICAgICAgIHRoaXMubmV3UGFzc3dvcmRDb25maXJtRXJyb3Iuc2V0KCdwYXNzd29yZENvbmZpcm1Ob3RNYXRjaCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uZXdQYXNzd29yZENvbmZpcm1FcnJvci5zZXQoJycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25OZXdQYXNzd29yZENoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG5ld1Bhc3N3b3JkID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5uZXdQYXNzd29yZC5zZXQobmV3UGFzc3dvcmQpO1xuICAgICAgICBpZiAodGhpcy5oYXNOZXdQYXNzd29yZEJsdXJyZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5jaGVja05ld1Bhc3N3b3JkKG5ld1Bhc3N3b3JkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTmV3UGFzc3dvcmRCbHVyKCkge1xuICAgICAgICB0aGlzLmhhc05ld1Bhc3N3b3JkQmx1cnJlZC5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuY2hlY2tOZXdQYXNzd29yZCh0aGlzLm5ld1Bhc3N3b3JkKCkpO1xuICAgIH1cblxuICAgIG9uTmV3UGFzc3dvcmRDb25maXJtQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgbmV3UGFzc3dvcmRDb25maXJtID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5uZXdQYXNzd29yZENvbmZpcm0uc2V0KG5ld1Bhc3N3b3JkQ29uZmlybSk7XG4gICAgICAgIGlmICh0aGlzLmhhc05ld1Bhc3N3b3JkQ29uZmlybUJsdXJyZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5jaGVja05ld1Bhc3N3b3JkQ29uZmlybShuZXdQYXNzd29yZENvbmZpcm0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25OZXdQYXNzd29yZENvbmZpcm1CbHVyKCkge1xuICAgICAgICB0aGlzLmhhc05ld1Bhc3N3b3JkQ29uZmlybUJsdXJyZWQuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLmNoZWNrTmV3UGFzc3dvcmRDb25maXJtKHRoaXMubmV3UGFzc3dvcmRDb25maXJtKCkpO1xuICAgIH1cbn1cbiIsIkBsZXQgdXJsID0ga2NDb250ZXh0LnVybDtcbkBsZXQgcGFzc3dvcmQgPSBrY0NvbnRleHQucGFzc3dvcmQ7XG5AbGV0IGFjY291bnQgPSBrY0NvbnRleHQuYWNjb3VudDtcbkBsZXQgc3RhdGVDaGVja2VyID0ga2NDb250ZXh0LnN0YXRlQ2hlY2tlcjtcblxuPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cbiAgICAgICAgPGgyPnt7IGkxOG4ubXNnU3RyKCdjaGFuZ2VQYXNzd29yZEh0bWxUaXRsZScpIH19PC9oMj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgc3VidGl0bGVcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJ0aXRsZVwiPnt7IGkxOG4ubXNnU3RyKCdhbGxGaWVsZHNSZXF1aXJlZCcpIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxmb3JtXG4gICAgY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIlxuICAgIG1ldGhvZD1cInBvc3RcIlxuICAgIFthY3Rpb25dPVwidXJsLnBhc3N3b3JkVXJsXCJcbj5cbiAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBpZD1cInVzZXJuYW1lXCJcbiAgICAgICAgbmFtZT1cInVzZXJuYW1lXCJcbiAgICAgICAgYXV0b0NvbXBsZXRlPVwidXNlcm5hbWVcIlxuICAgICAgICByZWFkT25seVxuICAgICAgICBbdmFsdWVdPVwiYWNjb3VudC51c2VybmFtZSA/PyAnJ1wiXG4gICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiXG4gICAgLz5cblxuICAgIEBpZiAocGFzc3dvcmQucGFzc3dvcmRTZXQpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBjb2wtbWQtMlwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBmb3I9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBpMThuLm1zZ1N0cigncGFzc3dvcmQnKSB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTAgY29sLW1kLTEwXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJjdXJyZW50LXBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImN1cnJlbnRQYXNzd29yZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjdXJyZW50UGFzc3dvcmQuc2V0KCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgaWQ9XCJzdGF0ZUNoZWNrZXJcIlxuICAgICAgICBuYW1lPVwic3RhdGVDaGVja2VyXCJcbiAgICAgICAgW3ZhbHVlXT1cInN0YXRlQ2hlY2tlclwiXG4gICAgLz5cblxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBjb2wtbWQtMlwiPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgZm9yPVwicGFzc3dvcmQtbmV3XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGkxOG4ubXNnU3RyKCdwYXNzd29yZE5ldycpIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMCBjb2wtbWQtMTBcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIGlkPVwicGFzc3dvcmQtbmV3XCJcbiAgICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmQtbmV3XCJcbiAgICAgICAgICAgICAgICBhdXRvQ29tcGxldGU9XCJuZXctcGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJuZXdQYXNzd29yZCgpXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uTmV3UGFzc3dvcmRDaGFuZ2UoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxuICAgICAgICAgICAgICAgIChibHVyKT1cIm9uTmV3UGFzc3dvcmRCbHVyKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTIgY29sLW1kLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGZvcj1cInBhc3N3b3JkLWNvbmZpcm1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbCB0d28tbGluZXNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGkxOG4ubXNnU3RyKCdwYXNzd29yZENvbmZpcm0nKSB9fVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMCBjb2wtbWQtMTBcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIGlkPVwicGFzc3dvcmQtY29uZmlybVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkLWNvbmZpcm1cIlxuICAgICAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm5ld1Bhc3N3b3JkQ29uZmlybSgpXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uTmV3UGFzc3dvcmRDb25maXJtQ2hhbmdlKCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJvbk5ld1Bhc3N3b3JkQ29uZmlybUJsdXIoKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGlkPVwia2MtZm9ybS1idXR0b25zXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLW1kLW9mZnNldC0yIGNvbC1tZC0xMCBzdWJtaXRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzdWJtaXRBY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIlNhdmVcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibmV3UGFzc3dvcmRFcnJvcigpICE9PSAnJyB8fCBuZXdQYXNzd29yZENvbmZpcm1FcnJvcigpICE9PSAnJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIlsna2NCdXR0b25DbGFzcycsICdrY0J1dHRvblByaW1hcnlDbGFzcycsICdrY0J1dHRvbkxhcmdlQ2xhc3MnXVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBpMThuLm1zZ1N0cignZG9TYXZlJykgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==