@keycloakify/angular 0.0.1-rc.0 → 0.0.1-rc.2

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 (423) hide show
  1. package/lib/i18n.d.ts +2 -2
  2. package/lib/i18n.mjs +6 -0
  3. package/lib/models/index.d.ts +1 -1
  4. package/lib/models/index.mjs +2 -0
  5. package/lib/models/script.model.mjs +2 -0
  6. package/lib/providers/keycloakify-angular.providers.d.ts +5 -5
  7. package/lib/providers/keycloakify-angular.providers.mjs +54 -0
  8. package/lib/public-api.d.ts +5 -5
  9. package/lib/public-api.mjs +4 -0
  10. package/lib/services/i18n.service.d.ts +3 -0
  11. package/lib/services/i18n.service.mjs +11 -0
  12. package/lib/services/index.d.ts +2 -2
  13. package/lib/services/index.mjs +3 -0
  14. package/lib/services/resource-injector.service.d.ts +5 -2
  15. package/lib/services/resource-injector.service.mjs +54 -0
  16. package/login/DefaultPage.d.ts +4 -4
  17. package/login/DefaultPage.mjs +121 -0
  18. package/login/KcContext.d.ts +1 -1
  19. package/login/KcContext.mjs +2 -0
  20. package/login/classes/component-reference.class.d.ts +1 -1
  21. package/login/classes/component-reference.class.mjs +3 -0
  22. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.d.ts +5 -2
  23. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.mjs +105 -0
  24. package/login/components/field-errors/field-errors.component.d.ts +7 -4
  25. package/login/components/field-errors/field-errors.component.mjs +32 -0
  26. package/login/components/group-label/group-label.component.d.ts +6 -3
  27. package/login/components/group-label/group-label.component.mjs +41 -0
  28. package/login/components/hello-world/hello-world.component.d.ts +5 -0
  29. package/login/components/hello-world/hello-world.component.mjs +11 -0
  30. package/login/components/index.d.ts +11 -11
  31. package/login/components/index.mjs +12 -0
  32. package/login/components/input-field-by-type/input-field-by-type.component.d.ts +7 -4
  33. package/login/components/input-field-by-type/input-field-by-type.component.mjs +52 -0
  34. package/login/components/input-tag/input-tag.component.d.ts +7 -4
  35. package/login/components/input-tag/input-tag.component.mjs +89 -0
  36. package/login/components/input-tag-selects/input-tag-selects.component.d.ts +9 -6
  37. package/login/components/input-tag-selects/input-tag-selects.component.mjs +115 -0
  38. package/login/components/logout-other-sessions/logout-other-sessions.component.d.ts +5 -2
  39. package/login/components/logout-other-sessions/logout-other-sessions.component.mjs +30 -0
  40. package/login/components/password-wrapper/password-wrapper.component.d.ts +6 -3
  41. package/login/components/password-wrapper/password-wrapper.component.mjs +44 -0
  42. package/login/components/select-tag/select-tag.component.d.ts +7 -4
  43. package/login/components/select-tag/select-tag.component.mjs +80 -0
  44. package/login/components/textarea-tag/textarea-tag.component.d.ts +7 -4
  45. package/login/components/textarea-tag/textarea-tag.component.mjs +48 -0
  46. package/login/components/user-profile-form-fields/user-profile-form-fields.component.d.ts +8 -5
  47. package/login/components/user-profile-form-fields/user-profile-form-fields.component.mjs +62 -0
  48. package/login/containers/template.component.d.ts +11 -8
  49. package/login/containers/template.component.mjs +71 -0
  50. package/login/directives/attributes.directive.d.ts +3 -0
  51. package/login/directives/attributes.directive.mjs +26 -0
  52. package/login/directives/index.d.ts +2 -2
  53. package/login/directives/index.mjs +3 -0
  54. package/login/directives/kc-class.directive.d.ts +5 -2
  55. package/login/directives/kc-class.directive.mjs +138 -0
  56. package/login/i18n.d.ts +2 -2
  57. package/login/i18n.mjs +2 -0
  58. package/login/pages/code/code.component.d.ts +6 -3
  59. package/login/pages/code/code.component.mjs +32 -0
  60. package/login/pages/delete-account-confirm/delete-account-confirm.component.d.ts +6 -3
  61. package/login/pages/delete-account-confirm/delete-account-confirm.component.mjs +32 -0
  62. package/login/pages/delete-credential/delete-credential.component.d.ts +6 -3
  63. package/login/pages/delete-credential/delete-credential.component.mjs +37 -0
  64. package/login/pages/error/error.component.d.ts +6 -3
  65. package/login/pages/error/error.component.mjs +32 -0
  66. package/login/pages/frontchannel-logout/frontchannel-logout.component.d.ts +7 -4
  67. package/login/pages/frontchannel-logout/frontchannel-logout.component.mjs +41 -0
  68. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.d.ts +6 -3
  69. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.mjs +47 -0
  70. package/login/pages/info/info.component.d.ts +9 -6
  71. package/login/pages/info/info.component.mjs +58 -0
  72. package/login/pages/login/login.component.d.ts +6 -3
  73. package/login/pages/login/login.component.mjs +51 -0
  74. package/login/pages/login-config-totp/login-config-totp.component.d.ts +6 -3
  75. package/login/pages/login-config-totp/login-config-totp.component.mjs +47 -0
  76. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.d.ts +6 -3
  77. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.mjs +37 -0
  78. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.d.ts +6 -3
  79. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.mjs +37 -0
  80. package/login/pages/login-idp-link-email/login-idp-link-email.component.d.ts +6 -3
  81. package/login/pages/login-idp-link-email/login-idp-link-email.component.mjs +37 -0
  82. package/login/pages/login-oauth-grant/login-oauth-grant.component.d.ts +6 -3
  83. package/login/pages/login-oauth-grant/login-oauth-grant.component.mjs +38 -0
  84. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.d.ts +6 -3
  85. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.mjs +37 -0
  86. package/login/pages/login-otp/login-otp.component.d.ts +6 -3
  87. package/login/pages/login-otp/login-otp.component.mjs +38 -0
  88. package/login/pages/login-page-expired/login-page-expired.component.d.ts +6 -3
  89. package/login/pages/login-page-expired/login-page-expired.component.mjs +36 -0
  90. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.d.ts +8 -5
  91. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.mjs +85 -0
  92. package/login/pages/login-password/login-password.component.d.ts +6 -3
  93. package/login/pages/login-password/login-password.component.mjs +46 -0
  94. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.d.ts +6 -3
  95. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.mjs +45 -0
  96. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.d.ts +6 -3
  97. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.mjs +38 -0
  98. package/login/pages/login-reset-otp/login-reset-otp.component.d.ts +6 -3
  99. package/login/pages/login-reset-otp/login-reset-otp.component.mjs +37 -0
  100. package/login/pages/login-reset-password/login-reset-password.component.d.ts +6 -3
  101. package/login/pages/login-reset-password/login-reset-password.component.mjs +38 -0
  102. package/login/pages/login-update-password/login-update-password.component.d.ts +6 -3
  103. package/login/pages/login-update-password/login-update-password.component.mjs +47 -0
  104. package/login/pages/login-update-profile/login-update-profile.component.d.ts +6 -3
  105. package/login/pages/login-update-profile/login-update-profile.component.mjs +44 -0
  106. package/login/pages/login-username/login-username.component.d.ts +6 -3
  107. package/login/pages/login-username/login-username.component.mjs +49 -0
  108. package/login/pages/login-verify-email/login-verify-email.component.d.ts +6 -3
  109. package/login/pages/login-verify-email/login-verify-email.component.mjs +37 -0
  110. package/login/pages/login-x509-info/login-x509-info.component.d.ts +6 -3
  111. package/login/pages/login-x509-info/login-x509-info.component.mjs +37 -0
  112. package/login/pages/logout-confirm/logout-confirm.component.d.ts +6 -3
  113. package/login/pages/logout-confirm/logout-confirm.component.mjs +37 -0
  114. package/login/pages/register/register.component.d.ts +6 -3
  115. package/login/pages/register/register.component.mjs +55 -0
  116. package/login/pages/saml-post-form/saml-post-form.component.d.ts +7 -4
  117. package/login/pages/saml-post-form/saml-post-form.component.mjs +49 -0
  118. package/login/pages/select-authenticator/select-authenticator.component.d.ts +6 -3
  119. package/login/pages/select-authenticator/select-authenticator.component.mjs +45 -0
  120. package/login/pages/terms/terms.component.d.ts +6 -3
  121. package/login/pages/terms/terms.component.mjs +37 -0
  122. package/login/pages/update-email/update-email.component.d.ts +6 -3
  123. package/login/pages/update-email/update-email.component.mjs +46 -0
  124. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.d.ts +8 -5
  125. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.mjs +87 -0
  126. package/login/pages/webauthn-error/webauthn-error.component.d.ts +6 -3
  127. package/login/pages/webauthn-error/webauthn-error.component.mjs +51 -0
  128. package/login/pages/webauthn-register/webauthn-register.component.d.ts +8 -5
  129. package/login/pages/webauthn-register/webauthn-register.component.mjs +81 -0
  130. package/login/pipes/advanced-msg-str.pipe.d.ts +4 -1
  131. package/login/pipes/advanced-msg-str.pipe.mjs +19 -0
  132. package/login/pipes/index.d.ts +6 -6
  133. package/login/pipes/index.mjs +7 -0
  134. package/login/pipes/input-type.pipe.d.ts +4 -1
  135. package/login/pipes/input-type.pipe.mjs +20 -0
  136. package/login/pipes/kc-sanitize.pipe.d.ts +5 -2
  137. package/login/pipes/kc-sanitize.pipe.mjs +34 -0
  138. package/login/pipes/msg-str.pipe.d.ts +5 -2
  139. package/login/pipes/msg-str.pipe.mjs +19 -0
  140. package/login/pipes/to-array.pipe.d.ts +4 -1
  141. package/login/pipes/to-array.pipe.mjs +21 -0
  142. package/login/pipes/to-number.pipe.d.ts +4 -1
  143. package/login/pipes/to-number.pipe.mjs +20 -0
  144. package/login/services/index.d.ts +2 -2
  145. package/login/services/index.mjs +3 -0
  146. package/login/services/login-resource-injector.service.d.ts +4 -1
  147. package/login/services/login-resource-injector.service.mjs +68 -0
  148. package/login/services/user-profile-form.service.d.ts +15 -12
  149. package/login/services/user-profile-form.service.mjs +1017 -0
  150. package/package.json +90 -200
  151. package/src/lib/i18n.ts +2 -2
  152. package/src/lib/models/index.ts +1 -1
  153. package/src/lib/providers/keycloakify-angular.providers.ts +18 -18
  154. package/src/lib/public-api.ts +5 -5
  155. package/src/lib/services/i18n.service.ts +2 -2
  156. package/src/lib/services/index.ts +2 -2
  157. package/src/lib/services/resource-injector.service.ts +7 -7
  158. package/src/login/DefaultPage.ts +76 -76
  159. package/src/login/KcContext.ts +1 -1
  160. package/src/login/classes/component-reference.class.ts +1 -1
  161. package/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.ts +11 -11
  162. package/src/login/components/field-errors/field-errors.component.ts +9 -9
  163. package/src/login/components/group-label/group-label.component.ts +12 -12
  164. package/src/login/components/hello-world/hello-world.component.css +0 -0
  165. package/src/login/components/hello-world/hello-world.component.html +1 -0
  166. package/src/login/components/hello-world/hello-world.component.ts +10 -0
  167. package/src/login/components/index.ts +11 -11
  168. package/src/login/components/input-field-by-type/input-field-by-type.component.ts +15 -15
  169. package/src/login/components/input-tag/input-tag.component.ts +20 -20
  170. package/src/login/components/input-tag-selects/input-tag-selects.component.ts +26 -26
  171. package/src/login/components/logout-other-sessions/logout-other-sessions.component.ts +8 -8
  172. package/src/login/components/password-wrapper/password-wrapper.component.ts +11 -11
  173. package/src/login/components/select-tag/select-tag.component.ts +16 -16
  174. package/src/login/components/textarea-tag/textarea-tag.component.ts +14 -14
  175. package/src/login/components/user-profile-form-fields/user-profile-form-fields.component.ts +16 -16
  176. package/src/login/containers/template.component.ts +19 -19
  177. package/src/login/directives/attributes.directive.ts +2 -2
  178. package/src/login/directives/index.ts +2 -2
  179. package/src/login/directives/kc-class.directive.ts +11 -11
  180. package/src/login/i18n.ts +2 -2
  181. package/src/login/pages/code/code.component.ts +11 -11
  182. package/src/login/pages/delete-account-confirm/delete-account-confirm.component.ts +11 -11
  183. package/src/login/pages/delete-credential/delete-credential.component.ts +11 -11
  184. package/src/login/pages/error/error.component.ts +11 -11
  185. package/src/login/pages/frontchannel-logout/frontchannel-logout.component.ts +11 -11
  186. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.ts +14 -14
  187. package/src/login/pages/info/info.component.ts +15 -15
  188. package/src/login/pages/login/login.component.ts +16 -16
  189. package/src/login/pages/login-config-totp/login-config-totp.component.ts +16 -16
  190. package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.ts +11 -11
  191. package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.ts +11 -11
  192. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.ts +11 -11
  193. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.ts +13 -13
  194. package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.ts +11 -11
  195. package/src/login/pages/login-otp/login-otp.component.ts +13 -13
  196. package/src/login/pages/login-page-expired/login-page-expired.component.ts +10 -10
  197. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.ts +21 -21
  198. package/src/login/pages/login-password/login-password.component.ts +14 -14
  199. package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.ts +13 -13
  200. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.ts +13 -13
  201. package/src/login/pages/login-reset-otp/login-reset-otp.component.ts +12 -12
  202. package/src/login/pages/login-reset-password/login-reset-password.component.ts +13 -13
  203. package/src/login/pages/login-update-password/login-update-password.component.ts +16 -16
  204. package/src/login/pages/login-update-profile/login-update-profile.component.ts +13 -13
  205. package/src/login/pages/login-username/login-username.component.ts +14 -14
  206. package/src/login/pages/login-verify-email/login-verify-email.component.ts +11 -11
  207. package/src/login/pages/login-x509-info/login-x509-info.component.ts +11 -11
  208. package/src/login/pages/logout-confirm/logout-confirm.component.ts +11 -11
  209. package/src/login/pages/register/register.component.ts +17 -17
  210. package/src/login/pages/saml-post-form/saml-post-form.component.ts +13 -13
  211. package/src/login/pages/select-authenticator/select-authenticator.component.ts +13 -13
  212. package/src/login/pages/terms/terms.component.ts +11 -11
  213. package/src/login/pages/update-email/update-email.component.ts +14 -14
  214. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.ts +21 -21
  215. package/src/login/pages/webauthn-error/webauthn-error.component.ts +15 -15
  216. package/src/login/pages/webauthn-register/webauthn-register.component.ts +20 -20
  217. package/src/login/pipes/advanced-msg-str.pipe.ts +4 -4
  218. package/src/login/pipes/index.ts +6 -6
  219. package/src/login/pipes/input-type.pipe.ts +4 -4
  220. package/src/login/pipes/kc-sanitize.pipe.ts +8 -8
  221. package/src/login/pipes/msg-str.pipe.ts +5 -5
  222. package/src/login/pipes/to-array.pipe.ts +2 -2
  223. package/src/login/pipes/to-number.pipe.ts +3 -3
  224. package/src/login/services/index.ts +2 -2
  225. package/src/login/services/login-resource-injector.service.ts +11 -11
  226. package/src/login/services/user-profile-form.service.ts +178 -178
  227. package/stories/login/pages/login/login.stories.ts +146 -0
  228. package/lib/i18n.js +0 -6
  229. package/lib/i18n.js.map +0 -1
  230. package/lib/models/index.js +0 -2
  231. package/lib/models/index.js.map +0 -1
  232. package/lib/models/script.model.js +0 -2
  233. package/lib/models/script.model.js.map +0 -1
  234. package/lib/providers/keycloakify-angular.providers.js +0 -58
  235. package/lib/providers/keycloakify-angular.providers.js.map +0 -1
  236. package/lib/public-api.js +0 -4
  237. package/lib/public-api.js.map +0 -1
  238. package/lib/services/i18n.service.js +0 -14
  239. package/lib/services/i18n.service.js.map +0 -1
  240. package/lib/services/index.js +0 -3
  241. package/lib/services/index.js.map +0 -1
  242. package/lib/services/resource-injector.service.js +0 -57
  243. package/lib/services/resource-injector.service.js.map +0 -1
  244. package/login/DefaultPage.js +0 -121
  245. package/login/DefaultPage.js.map +0 -1
  246. package/login/KcContext.js +0 -2
  247. package/login/KcContext.js.map +0 -1
  248. package/login/classes/component-reference.class.js +0 -3
  249. package/login/classes/component-reference.class.js.map +0 -1
  250. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.html +0 -24
  251. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.js +0 -123
  252. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.js.map +0 -1
  253. package/login/components/field-errors/field-errors.component.html +0 -15
  254. package/login/components/field-errors/field-errors.component.js +0 -45
  255. package/login/components/field-errors/field-errors.component.js.map +0 -1
  256. package/login/components/group-label/group-label.component.html +0 -30
  257. package/login/components/group-label/group-label.component.js +0 -55
  258. package/login/components/group-label/group-label.component.js.map +0 -1
  259. package/login/components/index.js +0 -12
  260. package/login/components/index.js.map +0 -1
  261. package/login/components/input-field-by-type/input-field-by-type.component.html +0 -63
  262. package/login/components/input-field-by-type/input-field-by-type.component.js +0 -63
  263. package/login/components/input-field-by-type/input-field-by-type.component.js.map +0 -1
  264. package/login/components/input-tag/input-tag.component.html +0 -49
  265. package/login/components/input-tag/input-tag.component.js +0 -107
  266. package/login/components/input-tag/input-tag.component.js.map +0 -1
  267. package/login/components/input-tag-selects/input-tag-selects.component.html +0 -29
  268. package/login/components/input-tag-selects/input-tag-selects.component.js +0 -132
  269. package/login/components/input-tag-selects/input-tag-selects.component.js.map +0 -1
  270. package/login/components/logout-other-sessions/logout-other-sessions.component.html +0 -19
  271. package/login/components/logout-other-sessions/logout-other-sessions.component.js +0 -43
  272. package/login/components/logout-other-sessions/logout-other-sessions.component.js.map +0 -1
  273. package/login/components/password-wrapper/password-wrapper.component.html +0 -15
  274. package/login/components/password-wrapper/password-wrapper.component.js +0 -57
  275. package/login/components/password-wrapper/password-wrapper.component.js.map +0 -1
  276. package/login/components/select-tag/select-tag.component.html +0 -31
  277. package/login/components/select-tag/select-tag.component.js +0 -97
  278. package/login/components/select-tag/select-tag.component.js.map +0 -1
  279. package/login/components/textarea-tag/textarea-tag.component.html +0 -18
  280. package/login/components/textarea-tag/textarea-tag.component.js +0 -63
  281. package/login/components/textarea-tag/textarea-tag.component.js.map +0 -1
  282. package/login/components/user-profile-form-fields/user-profile-form-fields.component.html +0 -85
  283. package/login/components/user-profile-form-fields/user-profile-form-fields.component.js +0 -74
  284. package/login/components/user-profile-form-fields/user-profile-form-fields.component.js.map +0 -1
  285. package/login/containers/template.component.html +0 -203
  286. package/login/containers/template.component.js +0 -78
  287. package/login/containers/template.component.js.map +0 -1
  288. package/login/directives/attributes.directive.js +0 -34
  289. package/login/directives/attributes.directive.js.map +0 -1
  290. package/login/directives/index.js +0 -3
  291. package/login/directives/index.js.map +0 -1
  292. package/login/directives/kc-class.directive.js +0 -146
  293. package/login/directives/kc-class.directive.js.map +0 -1
  294. package/login/i18n.js +0 -2
  295. package/login/i18n.js.map +0 -1
  296. package/login/pages/code/code.component.html +0 -26
  297. package/login/pages/code/code.component.js +0 -38
  298. package/login/pages/code/code.component.js.map +0 -1
  299. package/login/pages/delete-account-confirm/delete-account-confirm.component.html +0 -46
  300. package/login/pages/delete-account-confirm/delete-account-confirm.component.js +0 -38
  301. package/login/pages/delete-account-confirm/delete-account-confirm.component.js.map +0 -1
  302. package/login/pages/delete-credential/delete-credential.component.html +0 -35
  303. package/login/pages/delete-credential/delete-credential.component.js +0 -43
  304. package/login/pages/delete-credential/delete-credential.component.js.map +0 -1
  305. package/login/pages/error/error.component.html +0 -25
  306. package/login/pages/error/error.component.js +0 -38
  307. package/login/pages/error/error.component.js.map +0 -1
  308. package/login/pages/frontchannel-logout/frontchannel-logout.component.html +0 -35
  309. package/login/pages/frontchannel-logout/frontchannel-logout.component.js +0 -47
  310. package/login/pages/frontchannel-logout/frontchannel-logout.component.js.map +0 -1
  311. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.html +0 -41
  312. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.js +0 -54
  313. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.js.map +0 -1
  314. package/login/pages/info/info.component.html +0 -54
  315. package/login/pages/info/info.component.js +0 -61
  316. package/login/pages/info/info.component.js.map +0 -1
  317. package/login/pages/login/login.component.html +0 -212
  318. package/login/pages/login/login.component.js +0 -58
  319. package/login/pages/login/login.component.js.map +0 -1
  320. package/login/pages/login-config-totp/login-config-totp.component.html +0 -190
  321. package/login/pages/login-config-totp/login-config-totp.component.js +0 -53
  322. package/login/pages/login-config-totp/login-config-totp.component.js.map +0 -1
  323. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.html +0 -41
  324. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.js +0 -43
  325. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.js.map +0 -1
  326. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.html +0 -40
  327. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.js +0 -43
  328. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.js.map +0 -1
  329. package/login/pages/login-idp-link-email/login-idp-link-email.component.html +0 -37
  330. package/login/pages/login-idp-link-email/login-idp-link-email.component.js +0 -43
  331. package/login/pages/login-idp-link-email/login-idp-link-email.component.js.map +0 -1
  332. package/login/pages/login-oauth-grant/login-oauth-grant.component.html +0 -92
  333. package/login/pages/login-oauth-grant/login-oauth-grant.component.js +0 -44
  334. package/login/pages/login-oauth-grant/login-oauth-grant.component.js.map +0 -1
  335. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.html +0 -63
  336. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.js +0 -43
  337. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.js.map +0 -1
  338. package/login/pages/login-otp/login-otp.component.html +0 -103
  339. package/login/pages/login-otp/login-otp.component.js +0 -44
  340. package/login/pages/login-otp/login-otp.component.js.map +0 -1
  341. package/login/pages/login-page-expired/login-page-expired.component.html +0 -35
  342. package/login/pages/login-page-expired/login-page-expired.component.js +0 -42
  343. package/login/pages/login-page-expired/login-page-expired.component.js.map +0 -1
  344. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.html +0 -203
  345. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.js +0 -91
  346. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.js.map +0 -1
  347. package/login/pages/login-password/login-password.component.html +0 -90
  348. package/login/pages/login-password/login-password.component.js +0 -52
  349. package/login/pages/login-password/login-password.component.js.map +0 -1
  350. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.html +0 -155
  351. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.js +0 -51
  352. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.js.map +0 -1
  353. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.html +0 -76
  354. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.js +0 -44
  355. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.js.map +0 -1
  356. package/login/pages/login-reset-otp/login-reset-otp.component.html +0 -65
  357. package/login/pages/login-reset-otp/login-reset-otp.component.js +0 -43
  358. package/login/pages/login-reset-otp/login-reset-otp.component.js.map +0 -1
  359. package/login/pages/login-reset-password/login-reset-password.component.html +0 -95
  360. package/login/pages/login-reset-password/login-reset-password.component.js +0 -44
  361. package/login/pages/login-reset-password/login-reset-password.component.js.map +0 -1
  362. package/login/pages/login-update-password/login-update-password.component.html +0 -116
  363. package/login/pages/login-update-password/login-update-password.component.js +0 -53
  364. package/login/pages/login-update-password/login-update-password.component.js.map +0 -1
  365. package/login/pages/login-update-profile/login-update-profile.component.html +0 -59
  366. package/login/pages/login-update-profile/login-update-profile.component.js +0 -50
  367. package/login/pages/login-update-profile/login-update-profile.component.js.map +0 -1
  368. package/login/pages/login-username/login-username.component.html +0 -161
  369. package/login/pages/login-username/login-username.component.js +0 -56
  370. package/login/pages/login-username/login-username.component.js.map +0 -1
  371. package/login/pages/login-verify-email/login-verify-email.component.html +0 -27
  372. package/login/pages/login-verify-email/login-verify-email.component.js +0 -43
  373. package/login/pages/login-verify-email/login-verify-email.component.js.map +0 -1
  374. package/login/pages/login-x509-info/login-x509-info.component.html +0 -102
  375. package/login/pages/login-x509-info/login-x509-info.component.js +0 -43
  376. package/login/pages/login-x509-info/login-x509-info.component.js.map +0 -1
  377. package/login/pages/logout-confirm/logout-confirm.component.html +0 -59
  378. package/login/pages/logout-confirm/logout-confirm.component.js +0 -43
  379. package/login/pages/logout-confirm/logout-confirm.component.js.map +0 -1
  380. package/login/pages/register/register.component.html +0 -126
  381. package/login/pages/register/register.component.js +0 -62
  382. package/login/pages/register/register.component.js.map +0 -1
  383. package/login/pages/saml-post-form/saml-post-form.component.html +0 -51
  384. package/login/pages/saml-post-form/saml-post-form.component.js +0 -55
  385. package/login/pages/saml-post-form/saml-post-form.component.js.map +0 -1
  386. package/login/pages/select-authenticator/select-authenticator.component.html +0 -49
  387. package/login/pages/select-authenticator/select-authenticator.component.js +0 -51
  388. package/login/pages/select-authenticator/select-authenticator.component.js.map +0 -1
  389. package/login/pages/terms/terms.component.html +0 -36
  390. package/login/pages/terms/terms.component.js +0 -43
  391. package/login/pages/terms/terms.component.js.map +0 -1
  392. package/login/pages/update-email/update-email.component.html +0 -58
  393. package/login/pages/update-email/update-email.component.js +0 -52
  394. package/login/pages/update-email/update-email.component.js.map +0 -1
  395. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.html +0 -162
  396. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.js +0 -93
  397. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.js.map +0 -1
  398. package/login/pages/webauthn-error/webauthn-error.component.html +0 -60
  399. package/login/pages/webauthn-error/webauthn-error.component.js +0 -57
  400. package/login/pages/webauthn-error/webauthn-error.component.js.map +0 -1
  401. package/login/pages/webauthn-register/webauthn-register.component.html +0 -82
  402. package/login/pages/webauthn-register/webauthn-register.component.js +0 -86
  403. package/login/pages/webauthn-register/webauthn-register.component.js.map +0 -1
  404. package/login/pipes/advanced-msg-str.pipe.js +0 -31
  405. package/login/pipes/advanced-msg-str.pipe.js.map +0 -1
  406. package/login/pipes/index.js +0 -7
  407. package/login/pipes/index.js.map +0 -1
  408. package/login/pipes/input-type.pipe.js +0 -23
  409. package/login/pipes/input-type.pipe.js.map +0 -1
  410. package/login/pipes/kc-sanitize.pipe.js +0 -36
  411. package/login/pipes/kc-sanitize.pipe.js.map +0 -1
  412. package/login/pipes/msg-str.pipe.js +0 -31
  413. package/login/pipes/msg-str.pipe.js.map +0 -1
  414. package/login/pipes/to-array.pipe.js +0 -24
  415. package/login/pipes/to-array.pipe.js.map +0 -1
  416. package/login/pipes/to-number.pipe.js +0 -23
  417. package/login/pipes/to-number.pipe.js.map +0 -1
  418. package/login/services/index.js +0 -3
  419. package/login/services/index.js.map +0 -1
  420. package/login/services/login-resource-injector.service.js +0 -71
  421. package/login/services/login-resource-injector.service.js.map +0 -1
  422. package/login/services/user-profile-form.service.js +0 -1031
  423. package/login/services/user-profile-form.service.js.map +0 -1
@@ -0,0 +1,51 @@
1
+ import { ChangeDetectionStrategy, Component, forwardRef, inject, input } from '@angular/core';
2
+ import { CLASSES, KC_CONTEXT, USE_DEFAULT_CSS } from '../../../lib/public-api';
3
+ import { ComponentReference } from '../../../login/classes/component-reference.class';
4
+ import { LogoutOtherSessionsComponent } from '../../../login/components/logout-other-sessions/logout-other-sessions.component';
5
+ import { TemplateComponent } from '../../../login/containers/template.component';
6
+ import { KcClassDirective } from '../../../login/directives';
7
+ import { MsgStrPipe } from '../../../login/pipes/msg-str.pipe';
8
+ import * as i0 from "@angular/core";
9
+ export class WebauthnErrorComponent extends ComponentReference {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.kcContext = inject(KC_CONTEXT);
13
+ this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
14
+ this.classes = inject(CLASSES);
15
+ this.displayRequiredFields = input(false);
16
+ this.documentTitle = input();
17
+ this.bodyClassName = input();
18
+ this.displayInfo = false;
19
+ this.displayMessage = true;
20
+ }
21
+ onClick() {
22
+ // @ts-expect-error: Trusted Keycloak's code
23
+ document.getElementById('isSetRetry').value = 'retry';
24
+ // @ts-expect-error: Trusted Keycloak's code
25
+ document.getElementById('executionValue').value = '${execution}';
26
+ // @ts-expect-error: Trusted Keycloak's code
27
+ document.getElementById('kc-error-credential-form').submit();
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WebauthnErrorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: WebauthnErrorComponent, isStandalone: true, selector: "kc-root", inputs: { displayRequiredFields: { classPropertyName: "displayRequiredFields", publicName: "displayRequiredFields", isSignal: true, isRequired: false, transformFunction: null }, documentTitle: { classPropertyName: "documentTitle", publicName: "documentTitle", isSignal: true, isRequired: false, transformFunction: null }, bodyClassName: { classPropertyName: "bodyClassName", publicName: "bodyClassName", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
31
+ {
32
+ provide: ComponentReference,
33
+ useExisting: forwardRef(() => WebauthnErrorComponent)
34
+ }
35
+ ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ 'webauthn-error-title' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-error-credential-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n id=\"executionValue\"\n name=\"authenticationExecution\"\n />\n <input\n type=\"hidden\"\n id=\"isSetRetry\"\n name=\"isSetRetry\"\n />\n </form>\n <input\n tabIndex=\"4\"\n (click)=\"onClick()\"\n type=\"button\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"try-again\"\n id=\"kc-try-again\"\n [value]=\"'doTryAgain' | msgStr\"\n />\n @if (isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ 'doCancel' | msgStr }}\n </button>\n </form>\n }\n </ng-container>\n</kc-login-template>\n", dependencies: [{ kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "pipe", type: MsgStrPipe, name: "msgStr" }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WebauthnErrorComponent, decorators: [{
38
+ type: Component,
39
+ args: [{ standalone: true, imports: [
40
+ TemplateComponent,
41
+ MsgStrPipe,
42
+ KcClassDirective,
43
+ LogoutOtherSessionsComponent
44
+ ], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
45
+ {
46
+ provide: ComponentReference,
47
+ useExisting: forwardRef(() => WebauthnErrorComponent)
48
+ }
49
+ ], template: "@let url = kcContext.url;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ 'webauthn-error-title' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-error-credential-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n id=\"executionValue\"\n name=\"authenticationExecution\"\n />\n <input\n type=\"hidden\"\n id=\"isSetRetry\"\n name=\"isSetRetry\"\n />\n </form>\n <input\n tabIndex=\"4\"\n (click)=\"onClick()\"\n type=\"button\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"try-again\"\n id=\"kc-try-again\"\n [value]=\"'doTryAgain' | msgStr\"\n />\n @if (isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ 'doCancel' | msgStr }}\n </button>\n </form>\n }\n </ng-container>\n</kc-login-template>\n" }]
50
+ }] });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViYXV0aG4tZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tZXJyb3Ivd2ViYXV0aG4tZXJyb3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tZXJyb3Ivd2ViYXV0aG4tZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsZUFBZSxFQUNsQixNQUFNLHFDQUFxQyxDQUFDO0FBRzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZGQUE2RixDQUFDO0FBQzNJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7QUFvQjNFLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxrQkFBa0I7SUFsQjlEOztRQW1CSSxjQUFTLEdBQUcsTUFBTSxDQUF1RCxVQUFVLENBQUMsQ0FBQztRQUM1RSxvQkFBZSxHQUFHLE1BQU0sQ0FBVSxlQUFlLENBQUMsQ0FBQztRQUNuRCxZQUFPLEdBQUcsTUFBTSxDQUFvQyxPQUFPLENBQUMsQ0FBQztRQUN0RSwwQkFBcUIsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ2hDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLG1CQUFjLEdBQVksSUFBSSxDQUFDO0tBVWxDO0lBUkcsT0FBTztRQUNILDRDQUE0QztRQUM1QyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7UUFDdEQsNENBQTRDO1FBQzVDLFFBQVEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDO1FBQ2pFLDRDQUE0QztRQUM1QyxRQUFRLENBQUMsY0FBYyxDQUFDLDBCQUEwQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDakUsQ0FBQzs4R0FqQlEsc0JBQXNCO2tHQUF0QixzQkFBc0IsMGdCQVBwQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7YUFDeEQ7U0FDSixpRENwQ0wsbXFEQTREQSw0Q0RyQ1EsaUJBQWlCLCtKQUNqQixVQUFVLCtDQUNWLGdCQUFnQjs7MkZBYVgsc0JBQXNCO2tCQWxCbEMsU0FBUztpQ0FDTSxJQUFJLFdBQ1A7d0JBQ0wsaUJBQWlCO3dCQUNqQixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsNEJBQTRCO3FCQUMvQixZQUNTLFNBQVMsbUJBRUYsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzt5QkFDeEQ7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ0xBU1NFUyxcbiAgICBLQ19DT05URVhULFxuICAgIFVTRV9ERUZBVUxUX0NTU1xufSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBDbGFzc0tleSB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL2xpYi9rY0Nsc3gnO1xuaW1wb3J0IHsgS2NDb250ZXh0IH0gZnJvbSAna2V5Y2xvYWtpZnkvbG9naW4vS2NDb250ZXh0JztcbmltcG9ydCB7IENvbXBvbmVudFJlZmVyZW5jZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NsYXNzZXMvY29tcG9uZW50LXJlZmVyZW5jZS5jbGFzcyc7XG5pbXBvcnQgeyBMb2dvdXRPdGhlclNlc3Npb25zQ29tcG9uZW50IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vY29tcG9uZW50cy9sb2dvdXQtb3RoZXItc2Vzc2lvbnMvbG9nb3V0LW90aGVyLXNlc3Npb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NvbnRhaW5lcnMvdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEtjQ2xhc3NEaXJlY3RpdmUgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IE1zZ1N0clBpcGUgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9waXBlcy9tc2ctc3RyLnBpcGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIE1zZ1N0clBpcGUsXG4gICAgICAgIEtjQ2xhc3NEaXJlY3RpdmUsXG4gICAgICAgIExvZ291dE90aGVyU2Vzc2lvbnNDb21wb25lbnRcbiAgICBdLFxuICAgIHNlbGVjdG9yOiAna2Mtcm9vdCcsXG4gICAgdGVtcGxhdGVVcmw6ICd3ZWJhdXRobi1lcnJvci5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENvbXBvbmVudFJlZmVyZW5jZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdlYmF1dGhuRXJyb3JDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFdlYmF1dGhuRXJyb3JDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRSZWZlcmVuY2Uge1xuICAgIGtjQ29udGV4dCA9IGluamVjdDxFeHRyYWN0PEtjQ29udGV4dCwgeyBwYWdlSWQ6ICd3ZWJhdXRobi1lcnJvci5mdGwnIH0+PihLQ19DT05URVhUKTtcbiAgICBvdmVycmlkZSBkb1VzZURlZmF1bHRDc3MgPSBpbmplY3Q8Ym9vbGVhbj4oVVNFX0RFRkFVTFRfQ1NTKTtcbiAgICBvdmVycmlkZSBjbGFzc2VzID0gaW5qZWN0PFBhcnRpYWw8UmVjb3JkPENsYXNzS2V5LCBzdHJpbmc+Pj4oQ0xBU1NFUyk7XG4gICAgZGlzcGxheVJlcXVpcmVkRmllbGRzID0gaW5wdXQoZmFsc2UpO1xuICAgIGRvY3VtZW50VGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgYm9keUNsYXNzTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBkaXNwbGF5SW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGRpc3BsYXlNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIG9uQ2xpY2soKSB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IFRydXN0ZWQgS2V5Y2xvYWsncyBjb2RlXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpc1NldFJldHJ5JykudmFsdWUgPSAncmV0cnknO1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBUcnVzdGVkIEtleWNsb2FrJ3MgY29kZVxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhlY3V0aW9uVmFsdWUnKS52YWx1ZSA9ICcke2V4ZWN1dGlvbn0nO1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBUcnVzdGVkIEtleWNsb2FrJ3MgY29kZVxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna2MtZXJyb3ItY3JlZGVudGlhbC1mb3JtJykuc3VibWl0KCk7XG4gICAgfVxufVxuIiwiQGxldCB1cmwgPSBrY0NvbnRleHQudXJsO1xuQGxldCBpc0FwcEluaXRpYXRlZEFjdGlvbiA9IGtjQ29udGV4dC5pc0FwcEluaXRpYXRlZEFjdGlvbjtcblxuPGtjLWxvZ2luLXRlbXBsYXRlXG4gIFtkaXNwbGF5SW5mb109XCJkaXNwbGF5SW5mb1wiXG4gIFtib2R5Q2xhc3NOYW1lXT1cImJvZHlDbGFzc05hbWUoKVwiXG4gIFtkaXNwbGF5TWVzc2FnZV09XCJkaXNwbGF5TWVzc2FnZVwiXG4gIFtkaXNwbGF5UmVxdWlyZWRGaWVsZHNdPVwiZGlzcGxheVJlcXVpcmVkRmllbGRzKClcIlxuICBbZG9jdW1lbnRUaXRsZV09XCJkb2N1bWVudFRpdGxlKClcIlxuPlxuICA8bmctY29udGFpbmVyIGhlYWRlck5vZGU+XG4gICAge3sgJ3dlYmF1dGhuLWVycm9yLXRpdGxlJyB8IG1zZ1N0ciB9fVxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciBjb250ZW50PlxuICAgIDxmb3JtXG4gICAgICBpZD1cImtjLWVycm9yLWNyZWRlbnRpYWwtZm9ybVwiXG4gICAgICBba2NDbGFzc109XCIna2NGb3JtQ2xhc3MnXCJcbiAgICAgIFthY3Rpb25dPVwidXJsLmxvZ2luQWN0aW9uXCJcbiAgICAgIG1ldGhvZD1cInBvc3RcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgaWQ9XCJleGVjdXRpb25WYWx1ZVwiXG4gICAgICAgIG5hbWU9XCJhdXRoZW50aWNhdGlvbkV4ZWN1dGlvblwiXG4gICAgICAvPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICBpZD1cImlzU2V0UmV0cnlcIlxuICAgICAgICBuYW1lPVwiaXNTZXRSZXRyeVwiXG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgICA8aW5wdXRcbiAgICAgIHRhYkluZGV4PVwiNFwiXG4gICAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uUHJpbWFyeUNsYXNzJywgJ2tjQnV0dG9uQmxvY2tDbGFzcycsICdrY0J1dHRvbkxhcmdlQ2xhc3MnXVwiXG4gICAgICBuYW1lPVwidHJ5LWFnYWluXCJcbiAgICAgIGlkPVwia2MtdHJ5LWFnYWluXCJcbiAgICAgIFt2YWx1ZV09XCInZG9UcnlBZ2FpbicgfCBtc2dTdHJcIlxuICAgIC8+XG4gICAgQGlmIChpc0FwcEluaXRpYXRlZEFjdGlvbikge1xuICAgICAgPGZvcm1cbiAgICAgICAgW2FjdGlvbl09XCJ1cmwubG9naW5BY3Rpb25cIlxuICAgICAgICBba2NDbGFzc109XCIna2NGb3JtQ2xhc3MnXCJcbiAgICAgICAgaWQ9XCJrYy13ZWJhdXRobi1zZXR0aW5ncy1mb3JtXCJcbiAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICBba2NDbGFzc109XCJbJ2tjQnV0dG9uQ2xhc3MnLCAna2NCdXR0b25EZWZhdWx0Q2xhc3MnLCAna2NCdXR0b25CbG9ja0NsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICBpZD1cImNhbmNlbFdlYkF1dGhuQUlBXCJcbiAgICAgICAgICBuYW1lPVwiY2FuY2VsLWFpYVwiXG4gICAgICAgICAgdmFsdWU9XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdkb0NhbmNlbCcgfCBtc2dTdHIgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Zvcm0+XG4gICAgfVxuICA8L25nLWNvbnRhaW5lcj5cbjwva2MtbG9naW4tdGVtcGxhdGU+XG4iXX0=
@@ -1,8 +1,9 @@
1
- import { ClassKey } from "keycloakify/login/lib/kcClsx";
2
- import { KcContext } from "keycloakify/login/KcContext";
3
- import { ComponentReference } from "../../../login/classes/component-reference.class";
4
- import { MsgStrPipe } from "../../../login/pipes/msg-str.pipe";
5
- import { LoginResourceInjectorService } from "../../../login/services";
1
+ import { ClassKey } from 'keycloakify/login/lib/kcClsx';
2
+ import { KcContext } from 'keycloakify/login/KcContext';
3
+ import { ComponentReference } from '../../../login/classes/component-reference.class';
4
+ import { MsgStrPipe } from '../../../login/pipes/msg-str.pipe';
5
+ import { LoginResourceInjectorService } from '../../../login/services';
6
+ import * as i0 from "@angular/core";
6
7
  export declare class WebauthnRegisterComponent extends ComponentReference {
7
8
  kcContext: KcContext.WebauthnRegister;
8
9
  loginResourceInjectorService: LoginResourceInjectorService;
@@ -16,4 +17,6 @@ export declare class WebauthnRegisterComponent extends ComponentReference {
16
17
  displayMessage: boolean;
17
18
  authButtonId: string;
18
19
  constructor();
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<WebauthnRegisterComponent, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<WebauthnRegisterComponent, "kc-root", never, { "displayRequiredFields": { "alias": "displayRequiredFields"; "required": false; "isSignal": true; }; "documentTitle": { "alias": "documentTitle"; "required": false; "isSignal": true; }; "bodyClassName": { "alias": "bodyClassName"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
19
22
  }
@@ -0,0 +1,81 @@
1
+ import { ChangeDetectionStrategy, Component, forwardRef, inject, input } from '@angular/core';
2
+ import { CLASSES, KC_CONTEXT, USE_DEFAULT_CSS } from '../../../lib/public-api';
3
+ import { ComponentReference } from '../../../login/classes/component-reference.class';
4
+ import { LogoutOtherSessionsComponent } from '../../../login/components/logout-other-sessions/logout-other-sessions.component';
5
+ import { TemplateComponent } from '../../../login/containers/template.component';
6
+ import { KcClassDirective } from '../../../login/directives';
7
+ import { MsgStrPipe } from '../../../login/pipes/msg-str.pipe';
8
+ import { LoginResourceInjectorService } from '../../../login/services';
9
+ import * as i0 from "@angular/core";
10
+ export class WebauthnRegisterComponent extends ComponentReference {
11
+ constructor() {
12
+ super();
13
+ this.kcContext = inject(KC_CONTEXT);
14
+ this.loginResourceInjectorService = inject(LoginResourceInjectorService);
15
+ this.msgStr = inject(MsgStrPipe);
16
+ this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
17
+ this.classes = inject(CLASSES);
18
+ this.displayRequiredFields = input(false);
19
+ this.documentTitle = input();
20
+ this.bodyClassName = input();
21
+ this.displayInfo = false;
22
+ this.displayMessage = true;
23
+ this.authButtonId = 'authenticateWebAuthnButton';
24
+ const { url, challenge, userid, username, signatureAlgorithms, rpEntityName, rpId, attestationConveyancePreference, authenticatorAttachment, requireResidentKey, userVerificationRequirement, createTimeout, excludeCredentialIds } = this.kcContext;
25
+ const scripts = [
26
+ {
27
+ type: 'module',
28
+ id: 'WebAuthnRegisterScript',
29
+ textContent: `
30
+ import { registerByWebAuthn } from "${url.resourcesPath}/js/webauthnRegister.js";
31
+ const registerButton = document.getElementById('${this.authButtonId}');
32
+ registerButton.addEventListener("click", function() {
33
+ const input = {
34
+ challenge : '${challenge}',
35
+ userid : '${userid}',
36
+ username : '${username}',
37
+ signatureAlgorithms : ${JSON.stringify(signatureAlgorithms)},
38
+ rpEntityName : ${JSON.stringify(rpEntityName)},
39
+ rpId : ${JSON.stringify(rpId)},
40
+ attestationConveyancePreference : ${JSON.stringify(attestationConveyancePreference)},
41
+ authenticatorAttachment : ${JSON.stringify(authenticatorAttachment)},
42
+ requireResidentKey : ${JSON.stringify(requireResidentKey)},
43
+ userVerificationRequirement : ${JSON.stringify(userVerificationRequirement)},
44
+ createTimeout : ${createTimeout},
45
+ excludeCredentialIds : ${JSON.stringify(excludeCredentialIds)},
46
+ initLabel : ${JSON.stringify(this.msgStr.transform('webauthn-registration-init-label'))},
47
+ initLabelPrompt : ${JSON.stringify(this.msgStr.transform('webauthn-registration-init-label-prompt'))},
48
+ errmsg : ${JSON.stringify(this.msgStr.transform('webauthn-unsupported-browser-text'))}
49
+ };
50
+ registerByWebAuthn(input);
51
+ });
52
+ `
53
+ }
54
+ ];
55
+ this.loginResourceInjectorService.insertAdditionalScripts(scripts);
56
+ }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WebauthnRegisterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
58
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: WebauthnRegisterComponent, isStandalone: true, selector: "kc-root", inputs: { displayRequiredFields: { classPropertyName: "displayRequiredFields", publicName: "displayRequiredFields", isSignal: true, isRequired: false, transformFunction: null }, documentTitle: { classPropertyName: "documentTitle", publicName: "documentTitle", isSignal: true, isRequired: false, transformFunction: null }, bodyClassName: { classPropertyName: "bodyClassName", publicName: "bodyClassName", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
59
+ MsgStrPipe,
60
+ {
61
+ provide: ComponentReference,
62
+ useExisting: forwardRef(() => WebauthnRegisterComponent)
63
+ }
64
+ ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let isSetRetry = kcContext.isSetRetry;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n <span [kcClass]=\"'kcWebAuthnKeyIcon'\"></span>\n {{ 'webauthn-registration-title' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"register\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <input\n type=\"hidden\"\n id=\"clientDataJSON\"\n name=\"clientDataJSON\"\n />\n <input\n type=\"hidden\"\n id=\"attestationObject\"\n name=\"attestationObject\"\n />\n <input\n type=\"hidden\"\n id=\"publicKeyCredentialId\"\n name=\"publicKeyCredentialId\"\n />\n <input\n type=\"hidden\"\n id=\"authenticatorLabel\"\n name=\"authenticatorLabel\"\n />\n <input\n type=\"hidden\"\n id=\"transports\"\n name=\"transports\"\n />\n <input\n type=\"hidden\"\n id=\"error\"\n name=\"error\"\n />\n <kc-logout-other-sessions />\n </div>\n </form>\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [id]=\"authButtonId\"\n [value]=\"'doRegisterSecurityKey' | msgStr\"\n />\n @if (!isSetRetry && isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ 'doCancel' | msgStr }}\n </button>\n </form>\n }\n </ng-container>\n</kc-login-template>\n", dependencies: [{ kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "pipe", type: MsgStrPipe, name: "msgStr" }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "component", type: LogoutOtherSessionsComponent, selector: "kc-logout-other-sessions" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
65
+ }
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WebauthnRegisterComponent, decorators: [{
67
+ type: Component,
68
+ args: [{ standalone: true, imports: [
69
+ TemplateComponent,
70
+ MsgStrPipe,
71
+ KcClassDirective,
72
+ LogoutOtherSessionsComponent
73
+ ], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
74
+ MsgStrPipe,
75
+ {
76
+ provide: ComponentReference,
77
+ useExisting: forwardRef(() => WebauthnRegisterComponent)
78
+ }
79
+ ], template: "@let url = kcContext.url;\n@let isSetRetry = kcContext.isSetRetry;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n <span [kcClass]=\"'kcWebAuthnKeyIcon'\"></span>\n {{ 'webauthn-registration-title' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"register\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <input\n type=\"hidden\"\n id=\"clientDataJSON\"\n name=\"clientDataJSON\"\n />\n <input\n type=\"hidden\"\n id=\"attestationObject\"\n name=\"attestationObject\"\n />\n <input\n type=\"hidden\"\n id=\"publicKeyCredentialId\"\n name=\"publicKeyCredentialId\"\n />\n <input\n type=\"hidden\"\n id=\"authenticatorLabel\"\n name=\"authenticatorLabel\"\n />\n <input\n type=\"hidden\"\n id=\"transports\"\n name=\"transports\"\n />\n <input\n type=\"hidden\"\n id=\"error\"\n name=\"error\"\n />\n <kc-logout-other-sessions />\n </div>\n </form>\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [id]=\"authButtonId\"\n [value]=\"'doRegisterSecurityKey' | msgStr\"\n />\n @if (!isSetRetry && isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ 'doCancel' | msgStr }}\n </button>\n </form>\n }\n </ng-container>\n</kc-login-template>\n" }]
80
+ }], ctorParameters: () => [] });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViYXV0aG4tcmVnaXN0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tcmVnaXN0ZXIvd2ViYXV0aG4tcmVnaXN0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tcmVnaXN0ZXIvd2ViYXV0aG4tcmVnaXN0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsZUFBZSxFQUNsQixNQUFNLHFDQUFxQyxDQUFDO0FBSTdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZGQUE2RixDQUFDO0FBQzNJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFxQm5GLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxrQkFBa0I7SUFlN0Q7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQWZaLGNBQVMsR0FDTCxNQUFNLENBQTBELFVBQVUsQ0FBQyxDQUFDO1FBQ2hGLGlDQUE0QixHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3BFLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkIsb0JBQWUsR0FBRyxNQUFNLENBQVUsZUFBZSxDQUFDLENBQUM7UUFDbkQsWUFBTyxHQUFHLE1BQU0sQ0FBb0MsT0FBTyxDQUFDLENBQUM7UUFDdEUsMEJBQXFCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUUvQixpQkFBWSxHQUFHLDRCQUE0QixDQUFDO1FBSXhDLE1BQU0sRUFDRixHQUFHLEVBQ0gsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixJQUFJLEVBQ0osK0JBQStCLEVBQy9CLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLGFBQWEsRUFDYixvQkFBb0IsRUFDdkIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ25CLE1BQU0sT0FBTyxHQUFhO1lBQ3RCO2dCQUNJLElBQUksRUFBRSxRQUFRO2dCQUNkLEVBQUUsRUFBRSx3QkFBd0I7Z0JBQzVCLFdBQVcsRUFBRTtvREFDdUIsR0FBRyxDQUFDLGFBQWE7Z0VBQ0wsSUFBSSxDQUFDLFlBQVk7OztxQ0FHNUMsU0FBUztrQ0FDWixNQUFNO29DQUNKLFFBQVE7OENBQ0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQzt1Q0FDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7K0JBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDOzBEQUNPLElBQUksQ0FBQyxTQUFTLENBQUMsK0JBQStCLENBQUM7a0RBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUM7NkNBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUM7c0RBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQUM7d0NBQ3pELGFBQWE7K0NBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQztvQ0FDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDOzBDQUNuRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7aUNBQ3pGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsbUNBQW1DLENBQUMsQ0FBQzs7OztXQUloRzthQUNFO1NBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RSxDQUFDOzhHQS9EUSx5QkFBeUI7a0dBQXpCLHlCQUF5QiwwZ0JBUnZCO1lBQ1AsVUFBVTtZQUNWO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7YUFDM0Q7U0FDSixpREN2Q0wsMHlFQWtGQSw0Q0R6RFEsaUJBQWlCLCtKQUNqQixVQUFVLCtDQUNWLGdCQUFnQiwrRkFDaEIsNEJBQTRCOzsyRkFhdkIseUJBQXlCO2tCQW5CckMsU0FBUztpQ0FDTSxJQUFJLFdBQ1A7d0JBQ0wsaUJBQWlCO3dCQUNqQixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsNEJBQTRCO3FCQUMvQixZQUNTLFNBQVMsbUJBRUYsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUCxVQUFVO3dCQUNWOzRCQUNJLE9BQU8sRUFBRSxrQkFBa0I7NEJBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDO3lCQUMzRDtxQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDTEFTU0VTLFxuICAgIEtDX0NPTlRFWFQsXG4gICAgVVNFX0RFRkFVTFRfQ1NTXG59IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFNjcmlwdCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgQ2xhc3NLZXkgfSBmcm9tICdrZXljbG9ha2lmeS9sb2dpbi9saWIva2NDbHN4JztcbmltcG9ydCB7IEtjQ29udGV4dCB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL0tjQ29udGV4dCc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jbGFzc2VzL2NvbXBvbmVudC1yZWZlcmVuY2UuY2xhc3MnO1xuaW1wb3J0IHsgTG9nb3V0T3RoZXJTZXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NvbXBvbmVudHMvbG9nb3V0LW90aGVyLXNlc3Npb25zL2xvZ291dC1vdGhlci1zZXNzaW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb250YWluZXJzL3RlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBNc2dTdHJQaXBlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vcGlwZXMvbXNnLXN0ci5waXBlJztcbmltcG9ydCB7IExvZ2luUmVzb3VyY2VJbmplY3RvclNlcnZpY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgTXNnU3RyUGlwZSxcbiAgICAgICAgS2NDbGFzc0RpcmVjdGl2ZSxcbiAgICAgICAgTG9nb3V0T3RoZXJTZXNzaW9uc0NvbXBvbmVudFxuICAgIF0sXG4gICAgc2VsZWN0b3I6ICdrYy1yb290JyxcbiAgICB0ZW1wbGF0ZVVybDogJ3dlYmF1dGhuLXJlZ2lzdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgTXNnU3RyUGlwZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQ29tcG9uZW50UmVmZXJlbmNlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2ViYXV0aG5SZWdpc3RlckNvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgV2ViYXV0aG5SZWdpc3RlckNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudFJlZmVyZW5jZSB7XG4gICAga2NDb250ZXh0ID1cbiAgICAgICAgaW5qZWN0PEV4dHJhY3Q8S2NDb250ZXh0LCB7IHBhZ2VJZDogJ3dlYmF1dGhuLXJlZ2lzdGVyLmZ0bCcgfT4+KEtDX0NPTlRFWFQpO1xuICAgIGxvZ2luUmVzb3VyY2VJbmplY3RvclNlcnZpY2UgPSBpbmplY3QoTG9naW5SZXNvdXJjZUluamVjdG9yU2VydmljZSk7XG4gICAgbXNnU3RyID0gaW5qZWN0KE1zZ1N0clBpcGUpO1xuICAgIG92ZXJyaWRlIGRvVXNlRGVmYXVsdENzcyA9IGluamVjdDxib29sZWFuPihVU0VfREVGQVVMVF9DU1MpO1xuICAgIG92ZXJyaWRlIGNsYXNzZXMgPSBpbmplY3Q8UGFydGlhbDxSZWNvcmQ8Q2xhc3NLZXksIHN0cmluZz4+PihDTEFTU0VTKTtcbiAgICBkaXNwbGF5UmVxdWlyZWRGaWVsZHMgPSBpbnB1dChmYWxzZSk7XG4gICAgZG9jdW1lbnRUaXRsZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBib2R5Q2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIGRpc3BsYXlJbmZvOiBib29sZWFuID0gZmFsc2U7XG4gICAgZGlzcGxheU1lc3NhZ2U6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgYXV0aEJ1dHRvbklkID0gJ2F1dGhlbnRpY2F0ZVdlYkF1dGhuQnV0dG9uJztcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICBjaGFsbGVuZ2UsXG4gICAgICAgICAgICB1c2VyaWQsXG4gICAgICAgICAgICB1c2VybmFtZSxcbiAgICAgICAgICAgIHNpZ25hdHVyZUFsZ29yaXRobXMsXG4gICAgICAgICAgICBycEVudGl0eU5hbWUsXG4gICAgICAgICAgICBycElkLFxuICAgICAgICAgICAgYXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSxcbiAgICAgICAgICAgIGF1dGhlbnRpY2F0b3JBdHRhY2htZW50LFxuICAgICAgICAgICAgcmVxdWlyZVJlc2lkZW50S2V5LFxuICAgICAgICAgICAgdXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50LFxuICAgICAgICAgICAgY3JlYXRlVGltZW91dCxcbiAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsSWRzXG4gICAgICAgIH0gPSB0aGlzLmtjQ29udGV4dDtcbiAgICAgICAgY29uc3Qgc2NyaXB0czogU2NyaXB0W10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ21vZHVsZScsXG4gICAgICAgICAgICAgICAgaWQ6ICdXZWJBdXRoblJlZ2lzdGVyU2NyaXB0JyxcbiAgICAgICAgICAgICAgICB0ZXh0Q29udGVudDogYFxuICAgICAgICAgICAgICBpbXBvcnQgeyByZWdpc3RlckJ5V2ViQXV0aG4gfSBmcm9tIFwiJHt1cmwucmVzb3VyY2VzUGF0aH0vanMvd2ViYXV0aG5SZWdpc3Rlci5qc1wiO1xuICAgICAgICAgICAgICBjb25zdCByZWdpc3RlckJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCcke3RoaXMuYXV0aEJ1dHRvbklkfScpO1xuICAgICAgICAgICAgICByZWdpc3RlckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2UgOiAnJHtjaGFsbGVuZ2V9JyxcbiAgICAgICAgICAgICAgICAgICAgICB1c2VyaWQgOiAnJHt1c2VyaWR9JyxcbiAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZSA6ICcke3VzZXJuYW1lfScsXG4gICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlQWxnb3JpdGhtcyA6ICR7SlNPTi5zdHJpbmdpZnkoc2lnbmF0dXJlQWxnb3JpdGhtcyl9LFxuICAgICAgICAgICAgICAgICAgICAgIHJwRW50aXR5TmFtZSA6ICR7SlNPTi5zdHJpbmdpZnkocnBFbnRpdHlOYW1lKX0sXG4gICAgICAgICAgICAgICAgICAgICAgcnBJZCA6ICR7SlNPTi5zdHJpbmdpZnkocnBJZCl9LFxuICAgICAgICAgICAgICAgICAgICAgIGF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UgOiAke0pTT04uc3RyaW5naWZ5KGF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UpfSxcbiAgICAgICAgICAgICAgICAgICAgICBhdXRoZW50aWNhdG9yQXR0YWNobWVudCA6ICR7SlNPTi5zdHJpbmdpZnkoYXV0aGVudGljYXRvckF0dGFjaG1lbnQpfSxcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlUmVzaWRlbnRLZXkgOiAke0pTT04uc3RyaW5naWZ5KHJlcXVpcmVSZXNpZGVudEtleSl9LFxuICAgICAgICAgICAgICAgICAgICAgIHVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudCA6ICR7SlNPTi5zdHJpbmdpZnkodXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50KX0sXG4gICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGltZW91dCA6ICR7Y3JlYXRlVGltZW91dH0sXG4gICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxJZHMgOiAke0pTT04uc3RyaW5naWZ5KGV4Y2x1ZGVDcmVkZW50aWFsSWRzKX0sXG4gICAgICAgICAgICAgICAgICAgICAgaW5pdExhYmVsIDogJHtKU09OLnN0cmluZ2lmeSh0aGlzLm1zZ1N0ci50cmFuc2Zvcm0oJ3dlYmF1dGhuLXJlZ2lzdHJhdGlvbi1pbml0LWxhYmVsJykpfSxcbiAgICAgICAgICAgICAgICAgICAgICBpbml0TGFiZWxQcm9tcHQgOiAke0pTT04uc3RyaW5naWZ5KHRoaXMubXNnU3RyLnRyYW5zZm9ybSgnd2ViYXV0aG4tcmVnaXN0cmF0aW9uLWluaXQtbGFiZWwtcHJvbXB0JykpfSxcbiAgICAgICAgICAgICAgICAgICAgICBlcnJtc2cgOiAke0pTT04uc3RyaW5naWZ5KHRoaXMubXNnU3RyLnRyYW5zZm9ybSgnd2ViYXV0aG4tdW5zdXBwb3J0ZWQtYnJvd3Nlci10ZXh0JykpfVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyQnlXZWJBdXRobihpbnB1dCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIGBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5sb2dpblJlc291cmNlSW5qZWN0b3JTZXJ2aWNlLmluc2VydEFkZGl0aW9uYWxTY3JpcHRzKHNjcmlwdHMpO1xuICAgIH1cbn1cbiIsIkBsZXQgdXJsID0ga2NDb250ZXh0LnVybDtcbkBsZXQgaXNTZXRSZXRyeSA9IGtjQ29udGV4dC5pc1NldFJldHJ5O1xuQGxldCBpc0FwcEluaXRpYXRlZEFjdGlvbiA9IGtjQ29udGV4dC5pc0FwcEluaXRpYXRlZEFjdGlvbjtcblxuPGtjLWxvZ2luLXRlbXBsYXRlXG4gIFtkaXNwbGF5SW5mb109XCJkaXNwbGF5SW5mb1wiXG4gIFtib2R5Q2xhc3NOYW1lXT1cImJvZHlDbGFzc05hbWUoKVwiXG4gIFtkaXNwbGF5TWVzc2FnZV09XCJkaXNwbGF5TWVzc2FnZVwiXG4gIFtkaXNwbGF5UmVxdWlyZWRGaWVsZHNdPVwiZGlzcGxheVJlcXVpcmVkRmllbGRzKClcIlxuICBbZG9jdW1lbnRUaXRsZV09XCJkb2N1bWVudFRpdGxlKClcIlxuPlxuICA8bmctY29udGFpbmVyIGhlYWRlck5vZGU+XG4gICAgPHNwYW4gW2tjQ2xhc3NdPVwiJ2tjV2ViQXV0aG5LZXlJY29uJ1wiPjwvc3Bhbj5cbiAgICB7eyAnd2ViYXV0aG4tcmVnaXN0cmF0aW9uLXRpdGxlJyB8IG1zZ1N0ciB9fVxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciBjb250ZW50PlxuICAgIDxmb3JtXG4gICAgICBpZD1cInJlZ2lzdGVyXCJcbiAgICAgIFtrY0NsYXNzXT1cIidrY0Zvcm1DbGFzcydcIlxuICAgICAgW2FjdGlvbl09XCJ1cmwubG9naW5BY3Rpb25cIlxuICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgPlxuICAgICAgPGRpdiBba2NDbGFzc109XCIna2NGb3JtR3JvdXBDbGFzcydcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgaWQ9XCJjbGllbnREYXRhSlNPTlwiXG4gICAgICAgICAgbmFtZT1cImNsaWVudERhdGFKU09OXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgaWQ9XCJhdHRlc3RhdGlvbk9iamVjdFwiXG4gICAgICAgICAgbmFtZT1cImF0dGVzdGF0aW9uT2JqZWN0XCJcbiAgICAgICAgLz5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgaWQ9XCJwdWJsaWNLZXlDcmVkZW50aWFsSWRcIlxuICAgICAgICAgIG5hbWU9XCJwdWJsaWNLZXlDcmVkZW50aWFsSWRcIlxuICAgICAgICAvPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICBpZD1cImF1dGhlbnRpY2F0b3JMYWJlbFwiXG4gICAgICAgICAgbmFtZT1cImF1dGhlbnRpY2F0b3JMYWJlbFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgIGlkPVwidHJhbnNwb3J0c1wiXG4gICAgICAgICAgbmFtZT1cInRyYW5zcG9ydHNcIlxuICAgICAgICAvPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICBpZD1cImVycm9yXCJcbiAgICAgICAgICBuYW1lPVwiZXJyb3JcIlxuICAgICAgICAvPlxuICAgICAgICA8a2MtbG9nb3V0LW90aGVyLXNlc3Npb25zIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIFtrY0NsYXNzXT1cIlsna2NCdXR0b25DbGFzcycsICdrY0J1dHRvblByaW1hcnlDbGFzcycsICdrY0J1dHRvbkJsb2NrQ2xhc3MnLCAna2NCdXR0b25MYXJnZUNsYXNzJ11cIlxuICAgICAgW2lkXT1cImF1dGhCdXR0b25JZFwiXG4gICAgICBbdmFsdWVdPVwiJ2RvUmVnaXN0ZXJTZWN1cml0eUtleScgfCBtc2dTdHJcIlxuICAgIC8+XG4gICAgQGlmICghaXNTZXRSZXRyeSAmJiBpc0FwcEluaXRpYXRlZEFjdGlvbikge1xuICAgICAgPGZvcm1cbiAgICAgICAgW2FjdGlvbl09XCJ1cmwubG9naW5BY3Rpb25cIlxuICAgICAgICBba2NDbGFzc109XCIna2NGb3JtQ2xhc3MnXCJcbiAgICAgICAgaWQ9XCJrYy13ZWJhdXRobi1zZXR0aW5ncy1mb3JtXCJcbiAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICBba2NDbGFzc109XCJbJ2tjQnV0dG9uQ2xhc3MnLCAna2NCdXR0b25EZWZhdWx0Q2xhc3MnLCAna2NCdXR0b25CbG9ja0NsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICBpZD1cImNhbmNlbFdlYkF1dGhuQUlBXCJcbiAgICAgICAgICBuYW1lPVwiY2FuY2VsLWFpYVwiXG4gICAgICAgICAgdmFsdWU9XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdkb0NhbmNlbCcgfCBtc2dTdHIgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Zvcm0+XG4gICAgfVxuICA8L25nLWNvbnRhaW5lcj5cbjwva2MtbG9naW4tdGVtcGxhdGU+XG4iXX0=
@@ -1,5 +1,8 @@
1
- import { PipeTransform } from "@angular/core";
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
2
3
  export declare class AdvancedMsgStrPipe implements PipeTransform {
3
4
  #private;
4
5
  transform(value: string, ...args: (string | undefined)[]): string;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<AdvancedMsgStrPipe, never>;
7
+ static ɵpipe: i0.ɵɵPipeDeclaration<AdvancedMsgStrPipe, "advancedMsgStr", true>;
5
8
  }
@@ -0,0 +1,19 @@
1
+ import { inject, Pipe } from '@angular/core';
2
+ import { I18N } from '../../lib/public-api';
3
+ import * as i0 from "@angular/core";
4
+ export class AdvancedMsgStrPipe {
5
+ #i18n = inject(I18N);
6
+ transform(value, ...args) {
7
+ return this.#i18n.advancedMsgStr(value, ...args);
8
+ }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AdvancedMsgStrPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
10
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: AdvancedMsgStrPipe, isStandalone: true, name: "advancedMsgStr" }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AdvancedMsgStrPipe, decorators: [{
13
+ type: Pipe,
14
+ args: [{
15
+ name: 'advancedMsgStr',
16
+ standalone: true
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtbXNnLXN0ci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGlwZXMvYWR2YW5jZWQtbXNnLXN0ci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBTTNELE1BQU0sT0FBTyxrQkFBa0I7SUFDbEIsS0FBSyxHQUFHLE1BQU0sQ0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxTQUFTLENBQUMsS0FBYSxFQUFFLEdBQUcsSUFBNEI7UUFDcEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDOzhHQUpRLGtCQUFrQjs0R0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUo5QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxnQkFBZ0I7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSTE4TiB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi9wdWJsaWMtYXBpJztcbmltcG9ydCB7IEkxOG4gfSBmcm9tICcuLi9pMThuJztcbkBQaXBlKHtcbiAgICBuYW1lOiAnYWR2YW5jZWRNc2dTdHInLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQWR2YW5jZWRNc2dTdHJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcmVhZG9ubHkgI2kxOG4gPSBpbmplY3Q8STE4bj4oSTE4Tik7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcsIC4uLmFyZ3M6IChzdHJpbmcgfCB1bmRlZmluZWQpW10pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy4jaTE4bi5hZHZhbmNlZE1zZ1N0cih2YWx1ZSwgLi4uYXJncyk7XG4gICAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
- export * from "./advanced-msg-str.pipe";
2
- export * from "./input-type.pipe";
3
- export * from "./kc-sanitize.pipe";
4
- export * from "./msg-str.pipe";
5
- export * from "./to-array.pipe";
6
- export * from "./to-number.pipe";
1
+ export * from './advanced-msg-str.pipe';
2
+ export * from './input-type.pipe';
3
+ export * from './kc-sanitize.pipe';
4
+ export * from './msg-str.pipe';
5
+ export * from './to-array.pipe';
6
+ export * from './to-number.pipe';
@@ -0,0 +1,7 @@
1
+ export * from './advanced-msg-str.pipe';
2
+ export * from './input-type.pipe';
3
+ export * from './kc-sanitize.pipe';
4
+ export * from './msg-str.pipe';
5
+ export * from './to-array.pipe';
6
+ export * from './to-number.pipe';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZXljbG9ha2lmeS1hbmd1bGFyL3NyYy9sb2dpbi9waXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWR2YW5jZWQtbXNnLXN0ci5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtdHlwZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4va2Mtc2FuaXRpemUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL21zZy1zdHIucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3RvLWFycmF5LnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi90by1udW1iZXIucGlwZSc7XG4iXX0=
@@ -1,4 +1,7 @@
1
- import { PipeTransform } from "@angular/core";
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
2
3
  export declare class InputTypePipe implements PipeTransform {
3
4
  transform(inputType?: string): string;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputTypePipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<InputTypePipe, "inputType", true>;
4
7
  }
@@ -0,0 +1,20 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class InputTypePipe {
4
+ transform(inputType) {
5
+ if (inputType?.startsWith('html5-')) {
6
+ return inputType.slice(6);
7
+ }
8
+ return inputType ?? 'text';
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: InputTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
11
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: InputTypePipe, isStandalone: true, name: "inputType" }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: InputTypePipe, decorators: [{
14
+ type: Pipe,
15
+ args: [{
16
+ name: 'inputType',
17
+ standalone: true
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdHlwZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGlwZXMvaW5wdXQtdHlwZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8sYUFBYTtJQUN0QixTQUFTLENBQUMsU0FBa0I7UUFDeEIsSUFBSSxTQUFTLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFFRCxPQUFPLFNBQVMsSUFBSSxNQUFNLENBQUM7SUFDL0IsQ0FBQzs4R0FQUSxhQUFhOzRHQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBSnpCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICAgIG5hbWU6ICdpbnB1dFR5cGUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRUeXBlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShpbnB1dFR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoaW5wdXRUeXBlPy5zdGFydHNXaXRoKCdodG1sNS0nKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0VHlwZS5zbGljZSg2KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbnB1dFR5cGUgPz8gJ3RleHQnO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,7 +1,10 @@
1
- import { PipeTransform } from "@angular/core";
2
- import { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from "@angular/platform-browser";
1
+ import { PipeTransform } from '@angular/core';
2
+ import { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';
3
+ import * as i0 from "@angular/core";
3
4
  export declare class KcSanitizePipe implements PipeTransform {
4
5
  private sanitizer;
5
6
  constructor(sanitizer: DomSanitizer);
6
7
  transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<KcSanitizePipe, never>;
9
+ static ɵpipe: i0.ɵɵPipeDeclaration<KcSanitizePipe, "kcSanitize", true>;
7
10
  }
@@ -0,0 +1,34 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/platform-browser";
4
+ export class KcSanitizePipe {
5
+ constructor(sanitizer) {
6
+ this.sanitizer = sanitizer;
7
+ }
8
+ // TODO: Fix typing
9
+ transform(
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ value, type) {
12
+ switch (type) {
13
+ case 'html':
14
+ return this.sanitizer.bypassSecurityTrustHtml(value);
15
+ case 'style':
16
+ return this.sanitizer.bypassSecurityTrustStyle(value);
17
+ case 'script':
18
+ return this.sanitizer.bypassSecurityTrustScript(value);
19
+ case 'url':
20
+ return this.sanitizer.bypassSecurityTrustUrl(value);
21
+ case 'resourceUrl':
22
+ return this.sanitizer.bypassSecurityTrustResourceUrl(value);
23
+ default:
24
+ throw new Error(`Invalid safe type specified: ${type}`);
25
+ }
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KcSanitizePipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
28
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: KcSanitizePipe, isStandalone: true, name: "kcSanitize" }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KcSanitizePipe, decorators: [{
31
+ type: Pipe,
32
+ args: [{ name: 'kcSanitize', standalone: true }]
33
+ }], ctorParameters: () => [{ type: i1.DomSanitizer }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2Mtc2FuaXRpemUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2xvZ2luL3BpcGVzL2tjLXNhbml0aXplLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQVdwRCxNQUFNLE9BQU8sY0FBYztJQUN2QixZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUcsQ0FBQztJQUMvQyxtQkFBbUI7SUFFbkIsU0FBUztJQUNMLDhEQUE4RDtJQUM5RCxLQUFVLEVBQ1YsSUFBWTtRQUVaLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDWCxLQUFLLE1BQU07Z0JBQ1AsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pELEtBQUssT0FBTztnQkFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUQsS0FBSyxRQUFRO2dCQUNULE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRCxLQUFLLEtBQUs7Z0JBQ04sT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hELEtBQUssYUFBYTtnQkFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEU7Z0JBQ0ksTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNoRSxDQUFDO0lBQ0wsQ0FBQzs4R0F2QlEsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBEb21TYW5pdGl6ZXIsXG4gICAgU2FmZUh0bWwsXG4gICAgU2FmZVJlc291cmNlVXJsLFxuICAgIFNhZmVTY3JpcHQsXG4gICAgU2FmZVN0eWxlLFxuICAgIFNhZmVVcmxcbn0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBQaXBlKHsgbmFtZTogJ2tjU2FuaXRpemUnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgS2NTYW5pdGl6ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuICAgIC8vIFRPRE86IEZpeCB0eXBpbmdcblxuICAgIHRyYW5zZm9ybShcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgdmFsdWU6IGFueSxcbiAgICAgICAgdHlwZTogc3RyaW5nXG4gICAgKTogU2FmZUh0bWwgfCBTYWZlU3R5bGUgfCBTYWZlU2NyaXB0IHwgU2FmZVVybCB8IFNhZmVSZXNvdXJjZVVybCB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnaHRtbCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgJ3N0eWxlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgJ3NjcmlwdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQodmFsdWUpO1xuICAgICAgICAgICAgY2FzZSAndXJsJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh2YWx1ZSk7XG4gICAgICAgICAgICBjYXNlICdyZXNvdXJjZVVybCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh2YWx1ZSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzYWZlIHR5cGUgc3BlY2lmaWVkOiAke3R5cGV9YCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,6 +1,9 @@
1
- import { PipeTransform } from "@angular/core";
2
- import { MessageKey } from "keycloakify/login/i18n/messages_defaultSet/types";
1
+ import { PipeTransform } from '@angular/core';
2
+ import { MessageKey } from 'keycloakify/login/i18n/messages_defaultSet/types';
3
+ import * as i0 from "@angular/core";
3
4
  export declare class MsgStrPipe implements PipeTransform {
4
5
  #private;
5
6
  transform(value: MessageKey, ...args: (string | undefined)[]): string;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<MsgStrPipe, never>;
8
+ static ɵpipe: i0.ɵɵPipeDeclaration<MsgStrPipe, "msgStr", true>;
6
9
  }
@@ -0,0 +1,19 @@
1
+ import { inject, Pipe } from '@angular/core';
2
+ import { I18N } from '../../lib/public-api';
3
+ import * as i0 from "@angular/core";
4
+ export class MsgStrPipe {
5
+ #i18n = inject(I18N);
6
+ transform(value, ...args) {
7
+ return this.#i18n.msgStr(value, ...args);
8
+ }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: MsgStrPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
10
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: MsgStrPipe, isStandalone: true, name: "msgStr" }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: MsgStrPipe, decorators: [{
13
+ type: Pipe,
14
+ args: [{
15
+ name: 'msgStr',
16
+ standalone: true
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNnLXN0ci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGlwZXMvbXNnLXN0ci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBTzNELE1BQU0sT0FBTyxVQUFVO0lBQ1YsS0FBSyxHQUFHLE1BQU0sQ0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxTQUFTLENBQUMsS0FBaUIsRUFBRSxHQUFHLElBQTRCO1FBQ3hELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs4R0FKUSxVQUFVOzRHQUFWLFVBQVU7OzJGQUFWLFVBQVU7a0JBSnRCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJMThOIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbGliL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgSTE4biB9IGZyb20gJy4uL2kxOG4nO1xuaW1wb3J0IHsgTWVzc2FnZUtleSB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL2kxOG4vbWVzc2FnZXNfZGVmYXVsdFNldC90eXBlcyc7XG5AUGlwZSh7XG4gICAgbmFtZTogJ21zZ1N0cicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNc2dTdHJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcmVhZG9ubHkgI2kxOG4gPSBpbmplY3Q8STE4bj4oSTE4Tik7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBNZXNzYWdlS2V5LCAuLi5hcmdzOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2kxOG4ubXNnU3RyKHZhbHVlLCAuLi5hcmdzKTtcbiAgICB9XG59XG4iXX0=
@@ -1,4 +1,7 @@
1
- import { PipeTransform } from "@angular/core";
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
2
3
  export declare class ToArrayPipe implements PipeTransform {
3
4
  transform(value: string | string[], emptyWhenString?: boolean): string[];
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToArrayPipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<ToArrayPipe, "toArray", true>;
4
7
  }
@@ -0,0 +1,21 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ToArrayPipe {
4
+ transform(value, emptyWhenString = false) {
5
+ // if (!value) throw new Error('must pass a value');
6
+ if (value instanceof Array) {
7
+ return value;
8
+ }
9
+ return emptyWhenString ? [] : [value];
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: "toArray" }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ToArrayPipe, decorators: [{
15
+ type: Pipe,
16
+ args: [{
17
+ name: 'toArray',
18
+ standalone: true
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tYXJyYXkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2xvZ2luL3BpcGVzL3RvLWFycmF5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxXQUFXO0lBQ3BCLFNBQVMsQ0FBQyxLQUF3QixFQUFFLGVBQWUsR0FBRyxLQUFLO1FBQ3ZELG9EQUFvRDtRQUNwRCxJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUUsQ0FBQztZQUN6QixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBQ0QsT0FBTyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDOzhHQVBRLFdBQVc7NEdBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFKdkIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsU0FBUztvQkFDZixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAndG9BcnJheScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBUb0FycmF5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sIGVtcHR5V2hlblN0cmluZyA9IGZhbHNlKTogc3RyaW5nW10ge1xuICAgICAgICAvLyBpZiAoIXZhbHVlKSB0aHJvdyBuZXcgRXJyb3IoJ211c3QgcGFzcyBhIHZhbHVlJyk7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVtcHR5V2hlblN0cmluZyA/IFtdIDogW3ZhbHVlXTtcbiAgICB9XG59XG4iXX0=
@@ -1,4 +1,7 @@
1
- import { PipeTransform } from "@angular/core";
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
2
3
  export declare class ToNumberPipe implements PipeTransform {
3
4
  transform(value: string | number): number;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToNumberPipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<ToNumberPipe, "toNumber", true>;
4
7
  }
@@ -0,0 +1,20 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ToNumberPipe {
4
+ transform(value) {
5
+ const number = parseInt(`${value}`);
6
+ if (isNaN(number))
7
+ throw new Error('number is NaN');
8
+ return number;
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ToNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
11
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: ToNumberPipe, isStandalone: true, name: "toNumber" }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ToNumberPipe, decorators: [{
14
+ type: Pipe,
15
+ args: [{
16
+ name: 'toNumber',
17
+ standalone: true
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tbnVtYmVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZXljbG9ha2lmeS1hbmd1bGFyL3NyYy9sb2dpbi9waXBlcy90by1udW1iZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLFlBQVk7SUFDckIsU0FBUyxDQUFDLEtBQXNCO1FBQzVCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDcEMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDOzhHQUxRLFlBQVk7NEdBQVosWUFBWTs7MkZBQVosWUFBWTtrQkFKeEIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3RvTnVtYmVyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRvTnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgbnVtYmVyID0gcGFyc2VJbnQoYCR7dmFsdWV9YCk7XG4gICAgICAgIGlmIChpc05hTihudW1iZXIpKSB0aHJvdyBuZXcgRXJyb3IoJ251bWJlciBpcyBOYU4nKTtcbiAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
- export * from "./login-resource-injector.service";
2
- export * from "./user-profile-form.service";
1
+ export * from './login-resource-injector.service';
2
+ export * from './user-profile-form.service';
@@ -0,0 +1,3 @@
1
+ export * from './login-resource-injector.service';
2
+ export * from './user-profile-form.service';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZXljbG9ha2lmeS1hbmd1bGFyL3NyYy9sb2dpbi9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xvZ2luLXJlc291cmNlLWluamVjdG9yLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyLXByb2ZpbGUtZm9ybS5zZXJ2aWNlJztcbiJdfQ==
@@ -1,8 +1,11 @@
1
- import { Script } from "../../lib/public-api";
1
+ import { Script } from '../../lib/public-api';
2
+ import * as i0 from "@angular/core";
2
3
  export declare class LoginResourceInjectorService {
3
4
  private kcContext;
4
5
  private resourceInjectorService;
5
6
  injectResource(doUseDefaultCss?: boolean): import("rxjs").Observable<boolean>;
6
7
  insertAdditionalScripts(scripts: Script[]): void;
7
8
  private injectScripts;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<LoginResourceInjectorService, never>;
10
+ static ɵprov: i0.ɵɵInjectableDeclaration<LoginResourceInjectorService>;
8
11
  }
@@ -0,0 +1,68 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { KC_CONTEXT } from '../../lib/public-api';
3
+ import { ResourceInjectorService } from '../../lib/public-api';
4
+ import { catchError, forkJoin, of, switchMap } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ export class LoginResourceInjectorService {
7
+ constructor() {
8
+ this.kcContext = inject(KC_CONTEXT);
9
+ this.resourceInjectorService = inject(ResourceInjectorService);
10
+ }
11
+ injectResource(doUseDefaultCss = true) {
12
+ if (!doUseDefaultCss) {
13
+ this.injectScripts();
14
+ return of(true);
15
+ }
16
+ const stylesheets = [
17
+ `${this.kcContext.url.resourcesCommonPath}/node_modules/@patternfly/patternfly/patternfly.min.css`,
18
+ `${this.kcContext.url.resourcesCommonPath}/node_modules/patternfly/dist/css/patternfly.min.css`,
19
+ `${this.kcContext.url.resourcesCommonPath}/node_modules/patternfly/dist/css/patternfly-additions.min.css`,
20
+ `${this.kcContext.url.resourcesCommonPath}/lib/pficon/pficon.css`,
21
+ `${this.kcContext.url.resourcesPath}/css/login.css`
22
+ ];
23
+ return forkJoin(stylesheets.map(url => this.resourceInjectorService.createLink(url))).pipe(switchMap(() => {
24
+ this.injectScripts();
25
+ return of(true);
26
+ }), catchError(error => {
27
+ console.error('Error loading styles:', error);
28
+ return of(false);
29
+ }));
30
+ }
31
+ insertAdditionalScripts(scripts) {
32
+ scripts.map(script => this.resourceInjectorService.createScript(script));
33
+ }
34
+ injectScripts() {
35
+ const scripts = [
36
+ {
37
+ type: 'module',
38
+ id: `${this.kcContext.url.resourcesPath}/js/menu-button-links.js`,
39
+ src: `${this.kcContext.url.resourcesPath}/js/menu-button-links.js`
40
+ },
41
+ ...this.kcContext.scripts.map(script => ({
42
+ type: 'text/javascript',
43
+ src: script,
44
+ id: script
45
+ })),
46
+ {
47
+ type: 'module',
48
+ id: 'authenticationSession',
49
+ textContent: `
50
+ import { checkCookiesAndSetTimer } from "${this.kcContext.url.resourcesPath}/js/authChecker.js";
51
+
52
+ checkCookiesAndSetTimer(
53
+ "${this.kcContext.url.ssoLoginInOtherTabsUrl}"
54
+ );`
55
+ }
56
+ ];
57
+ this.insertAdditionalScripts(scripts);
58
+ }
59
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginResourceInjectorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
60
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginResourceInjectorService, providedIn: 'root' }); }
61
+ }
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: LoginResourceInjectorService, decorators: [{
63
+ type: Injectable,
64
+ args: [{
65
+ providedIn: 'root'
66
+ }]
67
+ }] });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tcmVzb3VyY2UtaW5qZWN0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2xvZ2luL3NlcnZpY2VzL2xvZ2luLXJlc291cmNlLWluamVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBVSxNQUFNLHFDQUFxQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSzNELE1BQU0sT0FBTyw0QkFBNEI7SUFIekM7UUFJWSxjQUFTLEdBQWMsTUFBTSxDQUFZLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELDRCQUF1QixHQUE0QixNQUFNLENBQzdELHVCQUF1QixDQUMxQixDQUFDO0tBMERMO0lBeERHLGNBQWMsQ0FBQyxlQUFlLEdBQUcsSUFBSTtRQUNqQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRztZQUNoQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG1CQUFtQix5REFBeUQ7WUFDbEcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsc0RBQXNEO1lBQy9GLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLGdFQUFnRTtZQUN6RyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG1CQUFtQix3QkFBd0I7WUFDakUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLGdCQUFnQjtTQUN0RCxDQUFDO1FBRUYsT0FBTyxRQUFRLENBQ1gsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDdkUsQ0FBQyxJQUFJLENBQ0YsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNYLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzlDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQsdUJBQXVCLENBQUMsT0FBaUI7UUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU8sYUFBYTtRQUNqQixNQUFNLE9BQU8sR0FBYTtZQUN0QjtnQkFDSSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLDBCQUEwQjtnQkFDakUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSwwQkFBMEI7YUFDckU7WUFDRCxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLEdBQUcsRUFBRSxNQUFNO2dCQUNYLEVBQUUsRUFBRSxNQUFNO2FBQ2IsQ0FBQyxDQUFDO1lBQ0g7Z0JBQ0ksSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsRUFBRSxFQUFFLHVCQUF1QjtnQkFDM0IsV0FBVyxFQUFFO21EQUNzQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhOzs7ZUFHcEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsc0JBQXNCO1dBQzdDO2FBQ0U7U0FDSixDQUFDO1FBQ0YsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7OEdBN0RRLDRCQUE0QjtrSEFBNUIsNEJBQTRCLGNBRnpCLE1BQU07OzJGQUVULDRCQUE0QjtrQkFIeEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEtDX0NPTlRFWFQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBSZXNvdXJjZUluamVjdG9yU2VydmljZSwgU2NyaXB0IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbGliL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgS2NDb250ZXh0IH0gZnJvbSAna2V5Y2xvYWtpZnkvbG9naW4vS2NDb250ZXh0JztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZvcmtKb2luLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTG9naW5SZXNvdXJjZUluamVjdG9yU2VydmljZSB7XG4gICAgcHJpdmF0ZSBrY0NvbnRleHQ6IEtjQ29udGV4dCA9IGluamVjdDxLY0NvbnRleHQ+KEtDX0NPTlRFWFQpO1xuICAgIHByaXZhdGUgcmVzb3VyY2VJbmplY3RvclNlcnZpY2U6IFJlc291cmNlSW5qZWN0b3JTZXJ2aWNlID0gaW5qZWN0KFxuICAgICAgICBSZXNvdXJjZUluamVjdG9yU2VydmljZVxuICAgICk7XG5cbiAgICBpbmplY3RSZXNvdXJjZShkb1VzZURlZmF1bHRDc3MgPSB0cnVlKSB7XG4gICAgICAgIGlmICghZG9Vc2VEZWZhdWx0Q3NzKSB7XG4gICAgICAgICAgICB0aGlzLmluamVjdFNjcmlwdHMoKTtcbiAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdHlsZXNoZWV0cyA9IFtcbiAgICAgICAgICAgIGAke3RoaXMua2NDb250ZXh0LnVybC5yZXNvdXJjZXNDb21tb25QYXRofS9ub2RlX21vZHVsZXMvQHBhdHRlcm5mbHkvcGF0dGVybmZseS9wYXR0ZXJuZmx5Lm1pbi5jc3NgLFxuICAgICAgICAgICAgYCR7dGhpcy5rY0NvbnRleHQudXJsLnJlc291cmNlc0NvbW1vblBhdGh9L25vZGVfbW9kdWxlcy9wYXR0ZXJuZmx5L2Rpc3QvY3NzL3BhdHRlcm5mbHkubWluLmNzc2AsXG4gICAgICAgICAgICBgJHt0aGlzLmtjQ29udGV4dC51cmwucmVzb3VyY2VzQ29tbW9uUGF0aH0vbm9kZV9tb2R1bGVzL3BhdHRlcm5mbHkvZGlzdC9jc3MvcGF0dGVybmZseS1hZGRpdGlvbnMubWluLmNzc2AsXG4gICAgICAgICAgICBgJHt0aGlzLmtjQ29udGV4dC51cmwucmVzb3VyY2VzQ29tbW9uUGF0aH0vbGliL3BmaWNvbi9wZmljb24uY3NzYCxcbiAgICAgICAgICAgIGAke3RoaXMua2NDb250ZXh0LnVybC5yZXNvdXJjZXNQYXRofS9jc3MvbG9naW4uY3NzYFxuICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiBmb3JrSm9pbihcbiAgICAgICAgICAgIHN0eWxlc2hlZXRzLm1hcCh1cmwgPT4gdGhpcy5yZXNvdXJjZUluamVjdG9yU2VydmljZS5jcmVhdGVMaW5rKHVybCkpXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmplY3RTY3JpcHRzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHN0eWxlczonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaW5zZXJ0QWRkaXRpb25hbFNjcmlwdHMoc2NyaXB0czogU2NyaXB0W10pIHtcbiAgICAgICAgc2NyaXB0cy5tYXAoc2NyaXB0ID0+IHRoaXMucmVzb3VyY2VJbmplY3RvclNlcnZpY2UuY3JlYXRlU2NyaXB0KHNjcmlwdCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5qZWN0U2NyaXB0cygpIHtcbiAgICAgICAgY29uc3Qgc2NyaXB0czogU2NyaXB0W10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ21vZHVsZScsXG4gICAgICAgICAgICAgICAgaWQ6IGAke3RoaXMua2NDb250ZXh0LnVybC5yZXNvdXJjZXNQYXRofS9qcy9tZW51LWJ1dHRvbi1saW5rcy5qc2AsXG4gICAgICAgICAgICAgICAgc3JjOiBgJHt0aGlzLmtjQ29udGV4dC51cmwucmVzb3VyY2VzUGF0aH0vanMvbWVudS1idXR0b24tbGlua3MuanNgXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLi4udGhpcy5rY0NvbnRleHQuc2NyaXB0cy5tYXAoc2NyaXB0ID0+ICh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQvamF2YXNjcmlwdCcsXG4gICAgICAgICAgICAgICAgc3JjOiBzY3JpcHQsXG4gICAgICAgICAgICAgICAgaWQ6IHNjcmlwdFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdtb2R1bGUnLFxuICAgICAgICAgICAgICAgIGlkOiAnYXV0aGVudGljYXRpb25TZXNzaW9uJyxcbiAgICAgICAgICAgICAgICB0ZXh0Q29udGVudDogYFxuICAgICAgICBpbXBvcnQgeyBjaGVja0Nvb2tpZXNBbmRTZXRUaW1lciB9IGZyb20gXCIke3RoaXMua2NDb250ZXh0LnVybC5yZXNvdXJjZXNQYXRofS9qcy9hdXRoQ2hlY2tlci5qc1wiO1xuICAgICAgICAgIFxuICAgICAgICBjaGVja0Nvb2tpZXNBbmRTZXRUaW1lcihcbiAgICAgICAgICAgIFwiJHt0aGlzLmtjQ29udGV4dC51cmwuc3NvTG9naW5Jbk90aGVyVGFic1VybH1cIlxuICAgICAgICApO2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5pbnNlcnRBZGRpdGlvbmFsU2NyaXB0cyhzY3JpcHRzKTtcbiAgICB9XG59XG4iXX0=