@po-ui/ng-templates 6.13.0 → 14.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -18
- package/esm2020/lib/components/components.module.mjs +84 -86
- package/esm2020/lib/components/index.mjs +12 -12
- package/esm2020/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-modal-content.enum.mjs +17 -17
- package/esm2020/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-type.enum.mjs +17 -17
- package/esm2020/lib/components/po-modal-password-recovery/index.mjs +8 -8
- package/esm2020/lib/components/po-modal-password-recovery/interfaces/po-modal-password-recovery.interface.mjs +2 -2
- package/esm2020/lib/components/po-modal-password-recovery/literals/i18n/po-modal-password-recovery-literals.mjs +119 -119
- package/esm2020/lib/components/po-modal-password-recovery/po-modal-password-recovery-base.component.mjs +172 -172
- package/esm2020/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.mjs +30 -30
- package/esm2020/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.mjs +433 -433
- package/esm2020/lib/components/po-modal-password-recovery/po-modal-password-recovery.module.mjs +29 -29
- package/esm2020/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.mjs +17 -17
- package/esm2020/lib/components/po-page-background/index.mjs +3 -3
- package/esm2020/lib/components/po-page-background/po-page-background.component.mjs +179 -179
- package/esm2020/lib/components/po-page-background/po-page-background.module.mjs +27 -27
- package/esm2020/lib/components/po-page-blocked-user/enums/po-page-blocked-user-reason.enum.mjs +17 -17
- package/esm2020/lib/components/po-page-blocked-user/index.mjs +8 -8
- package/esm2020/lib/components/po-page-blocked-user/interfaces/po-page-blocked-user-reason-params.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-blocked-user/literals/i18n/po-page-blocked-user-literals.mjs +78 -78
- package/esm2020/lib/components/po-page-blocked-user/po-page-blocked-user-base.component.mjs +170 -170
- package/esm2020/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.mjs +97 -97
- package/esm2020/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.mjs +100 -100
- package/esm2020/lib/components/po-page-blocked-user/po-page-blocked-user.component.mjs +104 -104
- package/esm2020/lib/components/po-page-blocked-user/po-page-blocked-user.module.mjs +29 -29
- package/esm2020/lib/components/po-page-change-password/index.mjs +7 -7
- package/esm2020/lib/components/po-page-change-password/interfaces/po-page-change-password-recovery.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-change-password/interfaces/po-page-change-password-requirement.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-change-password/interfaces/po-page-change-password.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-change-password/literals/i18n/po-page-change-password-literals.mjs +79 -79
- package/esm2020/lib/components/po-page-change-password/po-page-change-password-base.component.mjs +186 -186
- package/esm2020/lib/components/po-page-change-password/po-page-change-password.component.mjs +388 -388
- package/esm2020/lib/components/po-page-change-password/po-page-change-password.module.mjs +30 -30
- package/esm2020/lib/components/po-page-change-password/po-page-change-password.service.mjs +17 -17
- package/esm2020/lib/components/po-page-dynamic-detail/index.mjs +10 -10
- package/esm2020/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-actions.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-back.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-edit.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-remove.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-field.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-metadata.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-options.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-detail/po-page-dynamic-detail-actions.service.mjs +43 -43
- package/esm2020/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.mjs +461 -461
- package/esm2020/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.module.mjs +51 -53
- package/esm2020/lib/components/po-page-dynamic-edit/index.mjs +10 -10
- package/esm2020/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-actions.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-cancel.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save-new.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-field.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-metadata.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-options.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-edit/po-page-dynamic-edit-actions.service.mjs +43 -43
- package/esm2020/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.mjs +569 -569
- package/esm2020/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.module.mjs +57 -59
- package/esm2020/lib/components/po-page-dynamic-search/index.mjs +7 -7
- package/esm2020/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-base.component.mjs +134 -134
- package/esm2020/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-literals.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.mjs +74 -74
- package/esm2020/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.mjs +260 -260
- package/esm2020/lib/components/po-page-dynamic-search/po-page-dynamic-search-filters.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-search/po-page-dynamic-search-literals.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-search/po-page-dynamic-search-options.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.mjs +266 -266
- package/esm2020/lib/components/po-page-dynamic-search/po-page-dynamic-search.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-search/po-page-dynamic-search.module.mjs +52 -54
- package/esm2020/lib/components/po-page-dynamic-table/index.mjs +16 -16
- package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-actions.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-detail.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-duplicate.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-edit.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-new.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove-all.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-action.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-table-action.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-field.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-filters.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-metadata.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-options.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-dynamic-table/po-page-dynamic-list-base.component.mjs +146 -104
- package/esm2020/lib/components/po-page-dynamic-table/po-page-dynamic-table-actions.service.mjs +58 -58
- package/esm2020/lib/components/po-page-dynamic-table/po-page-dynamic-table-literals.mjs +63 -63
- package/esm2020/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.mjs +938 -929
- package/esm2020/lib/components/po-page-dynamic-table/po-page-dynamic-table.module.mjs +50 -52
- package/esm2020/lib/components/po-page-job-scheduler/index.mjs +4 -4
- package/esm2020/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler-internal.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.mjs +80 -80
- package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.mjs +368 -368
- package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler-internal.mjs +15 -15
- package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler-literals.mjs +195 -195
- package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler-lookup.service.mjs +21 -21
- package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.mjs +80 -80
- package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.mjs +194 -194
- package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.mjs +260 -266
- package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler.module.mjs +70 -72
- package/esm2020/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.mjs +206 -206
- package/esm2020/lib/components/po-page-login/enums/po-page-login-authentication-type.enum.mjs +15 -15
- package/esm2020/lib/components/po-page-login/index.mjs +8 -8
- package/esm2020/lib/components/po-page-login/interfaces/po-page-login-custom-field.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-login/interfaces/po-page-login-literals.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-login/interfaces/po-page-login-recovery.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-login/interfaces/po-page-login.interface.mjs +2 -2
- package/esm2020/lib/components/po-page-login/po-page-login-base.component.mjs +954 -954
- package/esm2020/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.mjs +135 -135
- package/esm2020/lib/components/po-page-login/po-page-login.component.mjs +467 -467
- package/esm2020/lib/components/po-page-login/po-page-login.module.mjs +31 -31
- package/esm2020/lib/components/po-page-login/po-page-login.service.mjs +31 -31
- package/esm2020/lib/index.mjs +4 -4
- package/esm2020/lib/po-templates.module.mjs +18 -18
- package/esm2020/lib/services/index.mjs +4 -4
- package/esm2020/lib/services/po-page-customization/index.mjs +4 -4
- package/esm2020/lib/services/po-page-customization/po-page-customization.module.mjs +24 -24
- package/esm2020/lib/services/po-page-customization/po-page-customization.service.mjs +85 -85
- package/esm2020/lib/services/po-page-customization/po-page-dynamic-options.interface.mjs +2 -2
- package/esm2020/lib/services/po-page-dynamic/index.mjs +3 -3
- package/esm2020/lib/services/po-page-dynamic/po-page-dynamic-literals.interface.mjs +2 -2
- package/esm2020/lib/services/po-page-dynamic/po-page-dynamic.module.mjs +24 -24
- package/esm2020/lib/services/po-page-dynamic/po-page-dynamic.service.mjs +102 -102
- package/esm2020/lib/services/services.module.mjs +18 -18
- package/esm2020/lib/utils/util.mjs +379 -379
- package/esm2020/po-ui-ng-templates.mjs +4 -4
- package/esm2020/public-api.mjs +2 -2
- package/fesm2015/po-ui-ng-templates.mjs +9328 -9295
- package/fesm2015/po-ui-ng-templates.mjs.map +1 -1
- package/fesm2020/po-ui-ng-templates.mjs +8962 -8929
- package/fesm2020/po-ui-ng-templates.mjs.map +1 -1
- package/{po-ui-ng-templates.d.ts → index.d.ts} +5 -5
- package/lib/components/components.module.d.ts +16 -16
- package/lib/components/index.d.ts +11 -11
- package/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-modal-content.enum.d.ts +15 -15
- package/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-type.enum.d.ts +15 -15
- package/lib/components/po-modal-password-recovery/index.d.ts +7 -7
- package/lib/components/po-modal-password-recovery/interfaces/po-modal-password-recovery.interface.d.ts +25 -25
- package/lib/components/po-modal-password-recovery/literals/i18n/po-modal-password-recovery-literals.d.ts +6 -6
- package/lib/components/po-modal-password-recovery/po-modal-password-recovery-base.component.d.ts +283 -283
- package/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.d.ts +14 -14
- package/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.d.ts +90 -90
- package/lib/components/po-modal-password-recovery/po-modal-password-recovery.module.d.ts +16 -16
- package/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.d.ts +13 -13
- package/lib/components/po-page-background/index.d.ts +2 -2
- package/lib/components/po-page-background/po-page-background.component.d.ts +54 -54
- package/lib/components/po-page-background/po-page-background.module.d.ts +16 -16
- package/lib/components/po-page-blocked-user/enums/po-page-blocked-user-reason.enum.d.ts +15 -15
- package/lib/components/po-page-blocked-user/index.d.ts +7 -7
- package/lib/components/po-page-blocked-user/interfaces/po-page-blocked-user-reason-params.interface.d.ts +15 -15
- package/lib/components/po-page-blocked-user/literals/i18n/po-page-blocked-user-literals.d.ts +72 -72
- package/lib/components/po-page-blocked-user/po-page-blocked-user-base.component.d.ts +146 -146
- package/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.d.ts +19 -19
- package/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.d.ts +26 -26
- package/lib/components/po-page-blocked-user/po-page-blocked-user.component.d.ts +43 -43
- package/lib/components/po-page-blocked-user/po-page-blocked-user.module.d.ts +18 -18
- package/lib/components/po-page-change-password/index.d.ts +6 -6
- package/lib/components/po-page-change-password/interfaces/po-page-change-password-recovery.interface.d.ts +30 -30
- package/lib/components/po-page-change-password/interfaces/po-page-change-password-requirement.interface.d.ts +17 -17
- package/lib/components/po-page-change-password/interfaces/po-page-change-password.interface.d.ts +13 -13
- package/lib/components/po-page-change-password/literals/i18n/po-page-change-password-literals.d.ts +6 -6
- package/lib/components/po-page-change-password/po-page-change-password-base.component.d.ts +233 -233
- package/lib/components/po-page-change-password/po-page-change-password.component.d.ts +93 -93
- package/lib/components/po-page-change-password/po-page-change-password.module.d.ts +17 -17
- package/lib/components/po-page-change-password/po-page-change-password.service.d.ts +10 -10
- package/lib/components/po-page-dynamic-detail/index.d.ts +9 -9
- package/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-actions.interface.d.ts +95 -95
- package/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-back.interface.d.ts +18 -18
- package/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-edit.interface.d.ts +18 -18
- package/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-remove.interface.d.ts +18 -18
- package/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-field.interface.d.ts +16 -16
- package/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-metadata.interface.d.ts +31 -31
- package/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-options.interface.d.ts +36 -36
- package/lib/components/po-page-dynamic-detail/po-page-dynamic-detail-actions.service.d.ts +18 -18
- package/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.d.ts +257 -257
- package/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.module.d.ts +17 -17
- package/lib/components/po-page-dynamic-edit/index.d.ts +9 -9
- package/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-actions.interface.d.ts +123 -123
- package/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-cancel.interface.d.ts +18 -18
- package/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save-new.interface.d.ts +44 -44
- package/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save.interface.d.ts +43 -43
- package/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-field.interface.d.ts +12 -12
- package/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-metadata.interface.d.ts +25 -25
- package/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-options.interface.d.ts +28 -28
- package/lib/components/po-page-dynamic-edit/po-page-dynamic-edit-actions.service.d.ts +18 -18
- package/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.d.ts +329 -329
- package/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.module.d.ts +17 -17
- package/lib/components/po-page-dynamic-search/index.d.ts +6 -6
- package/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-base.component.d.ts +48 -48
- package/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-literals.interface.d.ts +15 -15
- package/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.d.ts +29 -29
- package/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.d.ts +184 -184
- package/lib/components/po-page-dynamic-search/po-page-dynamic-search-filters.interface.d.ts +14 -14
- package/lib/components/po-page-dynamic-search/po-page-dynamic-search-literals.interface.d.ts +21 -21
- package/lib/components/po-page-dynamic-search/po-page-dynamic-search-options.interface.d.ts +59 -59
- package/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.d.ts +62 -62
- package/lib/components/po-page-dynamic-search/po-page-dynamic-search.interface.d.ts +29 -29
- package/lib/components/po-page-dynamic-search/po-page-dynamic-search.module.d.ts +18 -18
- package/lib/components/po-page-dynamic-table/index.d.ts +15 -15
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-actions.interface.d.ts +196 -196
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-detail.interface.d.ts +21 -21
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-duplicate.interface.d.ts +29 -29
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-edit.interface.d.ts +22 -22
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-new.interface.d.ts +18 -18
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove-all.interface.d.ts +39 -39
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove.interface.d.ts +18 -18
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-action.interface.d.ts +97 -97
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-table-action.interface.d.ts +106 -106
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-field.interface.d.ts +49 -49
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-filters.interface.d.ts +18 -18
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-metadata.interface.d.ts +31 -31
- package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-options.interface.d.ts +91 -91
- package/lib/components/po-page-dynamic-table/po-page-dynamic-list-base.component.d.ts +164 -130
- package/lib/components/po-page-dynamic-table/po-page-dynamic-table-actions.service.d.ts +26 -26
- package/lib/components/po-page-dynamic-table/po-page-dynamic-table-literals.d.ts +62 -62
- package/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.d.ts +386 -383
- package/lib/components/po-page-dynamic-table/po-page-dynamic-table.module.d.ts +19 -19
- package/lib/components/po-page-job-scheduler/index.d.ts +3 -3
- package/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler-internal.interface.d.ts +14 -14
- package/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler.interface.d.ts +48 -48
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.d.ts +176 -176
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.d.ts +52 -52
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-internal.d.ts +9 -9
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-literals.d.ts +194 -194
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-lookup.service.d.ts +16 -16
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.d.ts +14 -14
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.d.ts +36 -36
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.d.ts +116 -116
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler.module.d.ts +13 -13
- package/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.d.ts +32 -32
- package/lib/components/po-page-login/enums/po-page-login-authentication-type.enum.d.ts +13 -13
- package/lib/components/po-page-login/index.d.ts +7 -7
- package/lib/components/po-page-login/interfaces/po-page-login-custom-field.interface.d.ts +72 -72
- package/lib/components/po-page-login/interfaces/po-page-login-literals.interface.d.ts +59 -59
- package/lib/components/po-page-login/interfaces/po-page-login-recovery.interface.d.ts +30 -30
- package/lib/components/po-page-login/interfaces/po-page-login.interface.d.ts +15 -15
- package/lib/components/po-page-login/po-page-login-base.component.d.ts +663 -663
- package/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.d.ts +19 -19
- package/lib/components/po-page-login/po-page-login.component.d.ts +72 -72
- package/lib/components/po-page-login/po-page-login.module.d.ts +18 -18
- package/lib/components/po-page-login/po-page-login.service.d.ts +12 -12
- package/lib/index.d.ts +3 -3
- package/lib/po-templates.module.d.ts +8 -8
- package/lib/services/index.d.ts +3 -3
- package/lib/services/po-page-customization/index.d.ts +3 -3
- package/lib/services/po-page-customization/po-page-customization.module.d.ts +13 -13
- package/lib/services/po-page-customization/po-page-customization.service.d.ts +19 -19
- package/lib/services/po-page-customization/po-page-dynamic-options.interface.d.ts +8 -8
- package/lib/services/po-page-dynamic/index.d.ts +2 -2
- package/lib/services/po-page-dynamic/po-page-dynamic-literals.interface.d.ts +4 -4
- package/lib/services/po-page-dynamic/po-page-dynamic.module.d.ts +13 -13
- package/lib/services/po-page-dynamic/po-page-dynamic.service.d.ts +31 -31
- package/lib/services/services.module.d.ts +8 -8
- package/lib/utils/util.d.ts +170 -170
- package/package.json +15 -15
- package/po-ui-ng-templates-14.0.0-next.0.tgz +0 -0
- package/public-api.d.ts +1 -1
- package/schematics/README.md +14 -14
- package/schematics/collection.json +50 -50
- package/schematics/ng-add/index.d.ts +8 -8
- package/schematics/ng-add/index.js +60 -60
- package/schematics/ng-add/index.spec.d.ts +1 -1
- package/schematics/ng-add/index.spec.js +90 -90
- package/schematics/ng-add/index.spec.js.map +1 -1
- package/schematics/ng-add/schema.json +16 -7
- package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
- package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +14 -14
- package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-blocked-user/index.d.ts +4 -4
- package/schematics/ng-generate/po-page-blocked-user/index.js +12 -12
- package/schematics/ng-generate/po-page-blocked-user/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-blocked-user/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-blocked-user/index.spec.js.map +1 -1
- package/schematics/ng-generate/po-page-blocked-user/schema.d.ts +3 -3
- package/schematics/ng-generate/po-page-blocked-user/schema.js +2 -2
- package/schematics/ng-generate/po-page-blocked-user/schema.json +67 -67
- package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
- package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +14 -14
- package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-change-password/index.d.ts +4 -4
- package/schematics/ng-generate/po-page-change-password/index.js +12 -12
- package/schematics/ng-generate/po-page-change-password/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-change-password/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-change-password/index.spec.js.map +1 -1
- package/schematics/ng-generate/po-page-change-password/schema.d.ts +3 -3
- package/schematics/ng-generate/po-page-change-password/schema.js +2 -2
- package/schematics/ng-generate/po-page-change-password/schema.json +67 -67
- package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +5 -5
- package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
- package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +23 -23
- package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-dynamic-detail/index.d.ts +4 -4
- package/schematics/ng-generate/po-page-dynamic-detail/index.js +12 -12
- package/schematics/ng-generate/po-page-dynamic-detail/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-dynamic-detail/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-dynamic-detail/index.spec.js.map +1 -1
- package/schematics/ng-generate/po-page-dynamic-detail/schema.d.ts +3 -3
- package/schematics/ng-generate/po-page-dynamic-detail/schema.js +2 -2
- package/schematics/ng-generate/po-page-dynamic-detail/schema.json +67 -67
- package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +5 -5
- package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
- package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +23 -23
- package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-dynamic-edit/index.d.ts +4 -4
- package/schematics/ng-generate/po-page-dynamic-edit/index.js +12 -12
- package/schematics/ng-generate/po-page-dynamic-edit/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-dynamic-edit/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-dynamic-edit/index.spec.js.map +1 -1
- package/schematics/ng-generate/po-page-dynamic-edit/schema.d.ts +3 -3
- package/schematics/ng-generate/po-page-dynamic-edit/schema.js +2 -2
- package/schematics/ng-generate/po-page-dynamic-edit/schema.json +67 -67
- package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +5 -5
- package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
- package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +28 -28
- package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-dynamic-search/index.d.ts +4 -4
- package/schematics/ng-generate/po-page-dynamic-search/index.js +12 -12
- package/schematics/ng-generate/po-page-dynamic-search/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-dynamic-search/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-dynamic-search/index.spec.js.map +1 -1
- package/schematics/ng-generate/po-page-dynamic-search/schema.d.ts +3 -3
- package/schematics/ng-generate/po-page-dynamic-search/schema.js +2 -2
- package/schematics/ng-generate/po-page-dynamic-search/schema.json +67 -67
- package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +5 -5
- package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
- package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +21 -21
- package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-dynamic-table/index.d.ts +4 -4
- package/schematics/ng-generate/po-page-dynamic-table/index.js +12 -12
- package/schematics/ng-generate/po-page-dynamic-table/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-dynamic-table/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-dynamic-table/index.spec.js.map +1 -1
- package/schematics/ng-generate/po-page-dynamic-table/schema.d.ts +3 -3
- package/schematics/ng-generate/po-page-dynamic-table/schema.js +2 -2
- package/schematics/ng-generate/po-page-dynamic-table/schema.json +67 -67
- package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +3 -3
- package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
- package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +17 -17
- package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-job-scheduler/index.d.ts +4 -4
- package/schematics/ng-generate/po-page-job-scheduler/index.js +12 -12
- package/schematics/ng-generate/po-page-job-scheduler/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-job-scheduler/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-job-scheduler/index.spec.js.map +1 -1
- package/schematics/ng-generate/po-page-job-scheduler/schema.d.ts +3 -3
- package/schematics/ng-generate/po-page-job-scheduler/schema.js +2 -2
- package/schematics/ng-generate/po-page-job-scheduler/schema.json +67 -67
- package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
- package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +14 -14
- package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-login/index.d.ts +4 -4
- package/schematics/ng-generate/po-page-login/index.js +12 -12
- package/schematics/ng-generate/po-page-login/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-login/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-login/index.spec.js.map +1 -1
- package/schematics/ng-generate/po-page-login/schema.d.ts +3 -3
- package/schematics/ng-generate/po-page-login/schema.js +2 -2
- package/schematics/ng-generate/po-page-login/schema.json +67 -67
- package/po-ui-ng-templates-6.13.0.tgz +0 -0
|
@@ -1,467 +1,467 @@
|
|
|
1
|
-
import { NgForm } from '@angular/forms';
|
|
2
|
-
import { Component, ViewChild, ViewContainerRef } from '@angular/core';
|
|
3
|
-
import { isExternalLink } from '../../utils/util';
|
|
4
|
-
import { PoModalPasswordRecoveryComponent } from '../po-modal-password-recovery/po-modal-password-recovery.component';
|
|
5
|
-
import { PoModalPasswordRecoveryType } from '../po-modal-password-recovery/enums/po-modal-password-recovery-type.enum';
|
|
6
|
-
import { PoPageLoginBaseComponent, poPageLoginLiteralIn, poPageLoginLiteralsDefault } from './po-page-login-base.component';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/router";
|
|
9
|
-
import * as i2 from "@po-ui/ng-components";
|
|
10
|
-
import * as i3 from "./po-page-login.service";
|
|
11
|
-
import * as i4 from "
|
|
12
|
-
import * as i5 from "@angular/
|
|
13
|
-
import * as i6 from "
|
|
14
|
-
import * as i7 from "./po-page-login-popover/po-page-login-popover.component";
|
|
15
|
-
const _c0 = ["loginForm"];
|
|
16
|
-
const _c1 = ["pageLogin"];
|
|
17
|
-
function PoPageLoginComponent_po_tag_9_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
-
i0.ɵɵelement(0, "po-tag", 28);
|
|
19
|
-
} if (rf & 2) {
|
|
20
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
21
|
-
i0.ɵɵproperty("p-value", ctx_r1.environment);
|
|
22
|
-
} }
|
|
23
|
-
function PoPageLoginComponent_div_18_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
-
i0.ɵɵelement(0, "span", 31);
|
|
25
|
-
} if (rf & 2) {
|
|
26
|
-
const ctx_r13 = i0.ɵɵnextContext(2);
|
|
27
|
-
i0.ɵɵproperty("p-tooltip", ctx_r13.pageLoginLiterals.loginHint);
|
|
28
|
-
} }
|
|
29
|
-
function PoPageLoginComponent_div_18_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
-
i0.ɵɵelementStart(0, "div", 29);
|
|
31
|
-
i0.ɵɵtemplate(1, PoPageLoginComponent_div_18_span_1_Template, 1, 1, "span", 30);
|
|
32
|
-
i0.ɵɵelementEnd();
|
|
33
|
-
} if (rf & 2) {
|
|
34
|
-
const ctx_r3 = i0.ɵɵnextContext();
|
|
35
|
-
i0.ɵɵclassProp("po-page-login-info-icon-container-dynamic", !ctx_r3.pageLoginLiterals.loginHint && !ctx_r3.pageLoginLiterals.rememberUserHint);
|
|
36
|
-
i0.ɵɵadvance(1);
|
|
37
|
-
i0.ɵɵproperty("ngIf", ctx_r3.pageLoginLiterals.loginHint);
|
|
38
|
-
} }
|
|
39
|
-
function PoPageLoginComponent_div_20_Template(rf, ctx) { if (rf & 1) {
|
|
40
|
-
i0.ɵɵelementStart(0, "div", 32);
|
|
41
|
-
i0.ɵɵelement(1, "span", 33);
|
|
42
|
-
i0.ɵɵelementStart(2, "span", 34);
|
|
43
|
-
i0.ɵɵtext(3);
|
|
44
|
-
i0.ɵɵelementEnd()();
|
|
45
|
-
} if (rf & 2) {
|
|
46
|
-
const error_r14 = ctx.$implicit;
|
|
47
|
-
i0.ɵɵadvance(3);
|
|
48
|
-
i0.ɵɵtextInterpolate(error_r14);
|
|
49
|
-
} }
|
|
50
|
-
function PoPageLoginComponent_div_24_po_page_login_popover_1_Template(rf, ctx) { if (rf & 1) {
|
|
51
|
-
const _r17 = i0.ɵɵgetCurrentView();
|
|
52
|
-
i0.ɵɵelementStart(0, "po-page-login-popover", 37);
|
|
53
|
-
i0.ɵɵlistener("p-forgot-password", function PoPageLoginComponent_div_24_po_page_login_popover_1_Template_po_page_login_popover_p_forgot_password_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(2); return ctx_r16.openUrl($event); });
|
|
54
|
-
i0.ɵɵelementEnd();
|
|
55
|
-
} if (rf & 2) {
|
|
56
|
-
const ctx_r15 = i0.ɵɵnextContext(2);
|
|
57
|
-
i0.ɵɵproperty("p-literals", ctx_r15.pageLoginLiterals)("p-recovery", ctx_r15.recovery)("p-remaining-attempts", ctx_r15.exceededAttemptsWarning);
|
|
58
|
-
} }
|
|
59
|
-
function PoPageLoginComponent_div_24_Template(rf, ctx) { if (rf & 1) {
|
|
60
|
-
i0.ɵɵelementStart(0, "div", 35);
|
|
61
|
-
i0.ɵɵtemplate(1, PoPageLoginComponent_div_24_po_page_login_popover_1_Template, 1, 3, "po-page-login-popover", 36);
|
|
62
|
-
i0.ɵɵelementEnd();
|
|
63
|
-
} if (rf & 2) {
|
|
64
|
-
const ctx_r5 = i0.ɵɵnextContext();
|
|
65
|
-
i0.ɵɵadvance(1);
|
|
66
|
-
i0.ɵɵproperty("ngIf", ctx_r5.showExceededAttemptsWarning && ctx_r5.exceededAttemptsWarning);
|
|
67
|
-
} }
|
|
68
|
-
function PoPageLoginComponent_div_26_Template(rf, ctx) { if (rf & 1) {
|
|
69
|
-
i0.ɵɵelementStart(0, "div", 32);
|
|
70
|
-
i0.ɵɵelement(1, "span", 33);
|
|
71
|
-
i0.ɵɵelementStart(2, "span", 34);
|
|
72
|
-
i0.ɵɵtext(3);
|
|
73
|
-
i0.ɵɵelementEnd()();
|
|
74
|
-
} if (rf & 2) {
|
|
75
|
-
const error_r18 = ctx.$implicit;
|
|
76
|
-
i0.ɵɵadvance(3);
|
|
77
|
-
i0.ɵɵtextInterpolate(error_r18);
|
|
78
|
-
} }
|
|
79
|
-
function PoPageLoginComponent_po_input_27_Template(rf, ctx) { if (rf & 1) {
|
|
80
|
-
const _r20 = i0.ɵɵgetCurrentView();
|
|
81
|
-
i0.ɵɵelementStart(0, "po-input", 38);
|
|
82
|
-
i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_po_input_27_Template_po_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(); return ctx_r19.customFieldObject.value = $event; })("keyup.enter", function PoPageLoginComponent_po_input_27_Template_po_input_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r21 = i0.ɵɵnextContext(); const _r2 = i0.ɵɵreference(13); return _r2.valid && ctx_r21.onLoginSubmit(); });
|
|
83
|
-
i0.ɵɵelementEnd();
|
|
84
|
-
} if (rf & 2) {
|
|
85
|
-
const ctx_r7 = i0.ɵɵnextContext();
|
|
86
|
-
i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx_r7.pageLoginLiterals.loginHint && !ctx_r7.pageLoginLiterals.rememberUserHint);
|
|
87
|
-
i0.ɵɵproperty("ngModel", ctx_r7.customFieldObject.value)("p-error-pattern", ctx_r7.customFieldObject.errorPattern || ctx_r7.pageLoginLiterals.customFieldErrorPattern)("p-pattern", ctx_r7.customFieldObject.pattern)("p-placeholder", ctx_r7.customFieldObject.placeholder || ctx_r7.pageLoginLiterals.customFieldPlaceholder);
|
|
88
|
-
} }
|
|
89
|
-
function PoPageLoginComponent_po_combo_28_Template(rf, ctx) { if (rf & 1) {
|
|
90
|
-
const _r23 = i0.ɵɵgetCurrentView();
|
|
91
|
-
i0.ɵɵelementStart(0, "po-combo", 39);
|
|
92
|
-
i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_po_combo_28_Template_po_combo_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r22 = i0.ɵɵnextContext(); return ctx_r22.customFieldObject.value = $event; });
|
|
93
|
-
i0.ɵɵelementEnd();
|
|
94
|
-
} if (rf & 2) {
|
|
95
|
-
const ctx_r8 = i0.ɵɵnextContext();
|
|
96
|
-
i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx_r8.pageLoginLiterals.loginHint && !ctx_r8.pageLoginLiterals.rememberUserHint);
|
|
97
|
-
i0.ɵɵproperty("ngModel", ctx_r8.customFieldObject.value)("p-field-value", ctx_r8.customFieldObject.fieldValue)("p-filter-service", ctx_r8.customFieldObject.url)("p-placeholder", ctx_r8.customFieldObject.placeholder || ctx_r8.pageLoginLiterals.customFieldPlaceholder);
|
|
98
|
-
} }
|
|
99
|
-
function PoPageLoginComponent_po_select_29_Template(rf, ctx) { if (rf & 1) {
|
|
100
|
-
const _r25 = i0.ɵɵgetCurrentView();
|
|
101
|
-
i0.ɵɵelementStart(0, "po-select", 40);
|
|
102
|
-
i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_po_select_29_Template_po_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(); return ctx_r24.customFieldObject.value = $event; });
|
|
103
|
-
i0.ɵɵelementEnd();
|
|
104
|
-
} if (rf & 2) {
|
|
105
|
-
const ctx_r9 = i0.ɵɵnextContext();
|
|
106
|
-
i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx_r9.pageLoginLiterals.loginHint && !ctx_r9.pageLoginLiterals.rememberUserHint);
|
|
107
|
-
i0.ɵɵproperty("ngModel", ctx_r9.customFieldObject.value)("p-placeholder", ctx_r9.customFieldObject.placeholder || ctx_r9.pageLoginLiterals.customFieldPlaceholder)("p-options", ctx_r9.customFieldObject.options);
|
|
108
|
-
} }
|
|
109
|
-
function PoPageLoginComponent_div_31_div_2_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
110
|
-
i0.ɵɵelement(0, "span", 31);
|
|
111
|
-
} if (rf & 2) {
|
|
112
|
-
const ctx_r27 = i0.ɵɵnextContext(3);
|
|
113
|
-
i0.ɵɵproperty("p-tooltip", ctx_r27.pageLoginLiterals.rememberUserHint);
|
|
114
|
-
} }
|
|
115
|
-
function PoPageLoginComponent_div_31_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
116
|
-
i0.ɵɵelementStart(0, "div", 43);
|
|
117
|
-
i0.ɵɵtemplate(1, PoPageLoginComponent_div_31_div_2_span_1_Template, 1, 1, "span", 30);
|
|
118
|
-
i0.ɵɵelementEnd();
|
|
119
|
-
} if (rf & 2) {
|
|
120
|
-
const ctx_r26 = i0.ɵɵnextContext(2);
|
|
121
|
-
i0.ɵɵclassProp("po-page-login-info-icon-container-dynamic", !ctx_r26.pageLoginLiterals.rememberUserHint);
|
|
122
|
-
i0.ɵɵadvance(1);
|
|
123
|
-
i0.ɵɵproperty("ngIf", ctx_r26.pageLoginLiterals.rememberUserHint);
|
|
124
|
-
} }
|
|
125
|
-
function PoPageLoginComponent_div_31_Template(rf, ctx) { if (rf & 1) {
|
|
126
|
-
const _r29 = i0.ɵɵgetCurrentView();
|
|
127
|
-
i0.ɵɵelementStart(0, "div", 13)(1, "po-switch", 41);
|
|
128
|
-
i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_div_31_Template_po_switch_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(); return ctx_r28.rememberUser = $event; })("keyup.enter", function PoPageLoginComponent_div_31_Template_po_switch_keyup_enter_1_listener() { i0.ɵɵrestoreView(_r29); const ctx_r30 = i0.ɵɵnextContext(); const _r2 = i0.ɵɵreference(13); return _r2.valid && ctx_r30.onLoginSubmit(); });
|
|
129
|
-
i0.ɵɵelementEnd();
|
|
130
|
-
i0.ɵɵtemplate(2, PoPageLoginComponent_div_31_div_2_Template, 2, 3, "div", 42);
|
|
131
|
-
i0.ɵɵelementEnd();
|
|
132
|
-
} if (rf & 2) {
|
|
133
|
-
const ctx_r10 = i0.ɵɵnextContext();
|
|
134
|
-
i0.ɵɵadvance(1);
|
|
135
|
-
i0.ɵɵproperty("ngModel", ctx_r10.rememberUser)("p-label-off", ctx_r10.pageLoginLiterals.rememberUser)("p-label-on", ctx_r10.pageLoginLiterals.rememberUser);
|
|
136
|
-
i0.ɵɵadvance(1);
|
|
137
|
-
i0.ɵɵproperty("ngIf", ctx_r10.pageLoginLiterals.loginHint || ctx_r10.pageLoginLiterals.rememberUserHint);
|
|
138
|
-
} }
|
|
139
|
-
function PoPageLoginComponent_div_33_Template(rf, ctx) { if (rf & 1) {
|
|
140
|
-
const _r32 = i0.ɵɵgetCurrentView();
|
|
141
|
-
i0.ɵɵelementStart(0, "div", 44)(1, "a", 45);
|
|
142
|
-
i0.ɵɵlistener("click", function PoPageLoginComponent_div_33_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r32); const ctx_r31 = i0.ɵɵnextContext(); return ctx_r31.openUrl(ctx_r31.recovery); });
|
|
143
|
-
i0.ɵɵtext(2);
|
|
144
|
-
i0.ɵɵelementEnd()();
|
|
145
|
-
} if (rf & 2) {
|
|
146
|
-
const ctx_r11 = i0.ɵɵnextContext();
|
|
147
|
-
i0.ɵɵadvance(2);
|
|
148
|
-
i0.ɵɵtextInterpolate(ctx_r11.pageLoginLiterals.forgotPassword);
|
|
149
|
-
} }
|
|
150
|
-
function PoPageLoginComponent_div_34_Template(rf, ctx) { if (rf & 1) {
|
|
151
|
-
const _r34 = i0.ɵɵgetCurrentView();
|
|
152
|
-
i0.ɵɵelementStart(0, "div", 46)(1, "a", 45);
|
|
153
|
-
i0.ɵɵlistener("click", function PoPageLoginComponent_div_34_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(); return ctx_r33.openUrl(ctx_r33.registerUrl); });
|
|
154
|
-
i0.ɵɵtext(2);
|
|
155
|
-
i0.ɵɵelementEnd()();
|
|
156
|
-
} if (rf & 2) {
|
|
157
|
-
const ctx_r12 = i0.ɵɵnextContext();
|
|
158
|
-
i0.ɵɵadvance(2);
|
|
159
|
-
i0.ɵɵtextInterpolate(ctx_r12.pageLoginLiterals.registerUrl);
|
|
160
|
-
} }
|
|
161
|
-
/**
|
|
162
|
-
* @docsExtends PoPageLoginBaseComponent
|
|
163
|
-
*
|
|
164
|
-
* @example
|
|
165
|
-
*
|
|
166
|
-
* <example name="po-page-login-basic" title="PO Page Login Basic">
|
|
167
|
-
* <file name="sample-po-page-login-basic/sample-po-page-login-basic.component.html"> </file>
|
|
168
|
-
* <file name="sample-po-page-login-basic/sample-po-page-login-basic.component.ts"> </file>
|
|
169
|
-
* </example>
|
|
170
|
-
*
|
|
171
|
-
* <example name="po-page-login-labs" title="PO Page Login Labs">
|
|
172
|
-
* <file name="sample-po-page-login-labs/sample-po-page-login-labs.component.html"> </file>
|
|
173
|
-
* <file name="sample-po-page-login-labs/sample-po-page-login-labs.component.ts"> </file>
|
|
174
|
-
* </example>
|
|
175
|
-
*
|
|
176
|
-
* <example name="po-page-login-human-resources" title="PO Page Login - Human Resources">
|
|
177
|
-
* <file name="sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.html"> </file>
|
|
178
|
-
* <file name="sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.ts"> </file>
|
|
179
|
-
* <file name="sample-po-page-login-human-resources/sample-po-page-login-human-resources.module.ts"> </file>
|
|
180
|
-
* </example>
|
|
181
|
-
*
|
|
182
|
-
* <example name="po-page-login-automatic-service" title="PO Page Login - Automatic Service">
|
|
183
|
-
* <file name="sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.html"> </file>
|
|
184
|
-
* <file name="sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.ts"> </file>
|
|
185
|
-
* </example>
|
|
186
|
-
*/
|
|
187
|
-
export class PoPageLoginComponent extends PoPageLoginBaseComponent {
|
|
188
|
-
constructor(changeDetector, activatedRoute, poComponentInjector, differs, loginService, router, poLanguageService) {
|
|
189
|
-
super(loginService, router, poLanguageService);
|
|
190
|
-
this.changeDetector = changeDetector;
|
|
191
|
-
this.activatedRoute = activatedRoute;
|
|
192
|
-
this.poComponentInjector = poComponentInjector;
|
|
193
|
-
this.componentRef = null;
|
|
194
|
-
this.customPasswordError = { custom: false };
|
|
195
|
-
this.differ = differs.find([]).create(null);
|
|
196
|
-
}
|
|
197
|
-
ngAfterViewChecked() {
|
|
198
|
-
if (this.differ) {
|
|
199
|
-
this.validateArrayChanges(this.differ, [
|
|
200
|
-
{ array: this.loginErrors, callback: this.generateLoginError.bind(this) },
|
|
201
|
-
{ array: this.passwordErrors, callback: this.generatePasswordError.bind(this) }
|
|
202
|
-
]);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
ngOnInit() {
|
|
206
|
-
this.checkingForRouteMetadata(this.activatedRoute.snapshot.data);
|
|
207
|
-
this.selectedLanguage = this.initializeLanguage();
|
|
208
|
-
this.initialSelectLanguage = this.selectedLanguage;
|
|
209
|
-
}
|
|
210
|
-
activateSupport() {
|
|
211
|
-
switch (typeof this.support) {
|
|
212
|
-
case 'string': {
|
|
213
|
-
this.setUrlRedirect(this.support);
|
|
214
|
-
break;
|
|
215
|
-
}
|
|
216
|
-
case 'function': {
|
|
217
|
-
this.support();
|
|
218
|
-
break;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
changeLoginModel() {
|
|
223
|
-
if (this.authenticationUrl) {
|
|
224
|
-
this.loginErrors = [];
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
this.setLoginErrors(this.loginErrors);
|
|
228
|
-
this.loginChange.emit(this.login);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
changePasswordModel() {
|
|
232
|
-
if (this.authenticationUrl) {
|
|
233
|
-
this.passwordErrors = [];
|
|
234
|
-
}
|
|
235
|
-
else {
|
|
236
|
-
this.setPasswordErrors(this.passwordErrors);
|
|
237
|
-
this.passwordChange.emit(this.password);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
onSelectedLanguage(language) {
|
|
241
|
-
this.languageChange.emit(this.languagesList.find(languageItem => languageItem.language === language));
|
|
242
|
-
this.selectedLanguage = language;
|
|
243
|
-
}
|
|
244
|
-
openUrl(recovery) {
|
|
245
|
-
switch (typeof recovery) {
|
|
246
|
-
case 'string': {
|
|
247
|
-
this.setUrlRedirect(recovery);
|
|
248
|
-
break;
|
|
249
|
-
}
|
|
250
|
-
case 'function': {
|
|
251
|
-
recovery();
|
|
252
|
-
break;
|
|
253
|
-
}
|
|
254
|
-
case 'object': {
|
|
255
|
-
this.createModalPasswordRecoveryComponent(recovery);
|
|
256
|
-
break;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
concatenateLoginHintWithContactEmail(contactEmail) {
|
|
261
|
-
const defaultLoginHintLiteral = poPageLoginLiteralsDefault[this.language].loginHint;
|
|
262
|
-
const prepositionLiteral = poPageLoginLiteralIn[this.language];
|
|
263
|
-
return this.concatenateLiteral(contactEmail, 'loginHint', defaultLoginHintLiteral, prepositionLiteral);
|
|
264
|
-
}
|
|
265
|
-
setLoginErrors(errors) {
|
|
266
|
-
const control = this.loginForm.form.controls['login'];
|
|
267
|
-
this.setControlErrors('allLoginErrors', control, errors, this.pageLoginLiterals.loginErrorPattern);
|
|
268
|
-
}
|
|
269
|
-
setPasswordErrors(errors) {
|
|
270
|
-
const control = this.loginForm.form.controls['password'];
|
|
271
|
-
this.setControlErrors('allPasswordErrors', control, errors, this.pageLoginLiterals.passwordErrorPattern);
|
|
272
|
-
}
|
|
273
|
-
checkingForMetadataProperty(object, property) {
|
|
274
|
-
if (Object.prototype.hasOwnProperty.call(object, property)) {
|
|
275
|
-
return object[property];
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
checkingForRouteMetadata(data) {
|
|
279
|
-
if (Object.keys(data).length !== 0) {
|
|
280
|
-
this.authenticationUrl = this.checkingForMetadataProperty(data, 'serviceApi') || this.authenticationUrl;
|
|
281
|
-
this.authenticationType = this.checkingForMetadataProperty(data, 'authenticationType') || this.authenticationType;
|
|
282
|
-
this.environment = this.checkingForMetadataProperty(data, 'environment') || this.environment;
|
|
283
|
-
this.recovery = this.checkingForMetadataProperty(data, 'recovery') || this.recovery;
|
|
284
|
-
this.registerUrl = this.checkingForMetadataProperty(data, 'registerUrl') || this.registerUrl;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
concatenate(defaultLiteral, prefixLiteral, value) {
|
|
288
|
-
return `${defaultLiteral} ${prefixLiteral} ${value}`;
|
|
289
|
-
}
|
|
290
|
-
concatenateLiteral(value, literal, defaultLiteral, prepositionLiteral) {
|
|
291
|
-
return { [literal]: this.concatenate(defaultLiteral, prepositionLiteral, value) };
|
|
292
|
-
}
|
|
293
|
-
createModalPasswordRecoveryComponent(poPageLoginRecovery) {
|
|
294
|
-
if (this.componentRef) {
|
|
295
|
-
this.poComponentInjector.destroyComponentInApplication(this.componentRef);
|
|
296
|
-
}
|
|
297
|
-
this.componentRef = this.poComponentInjector.createComponentInApplication(PoModalPasswordRecoveryComponent);
|
|
298
|
-
this.componentRef.instance.urlRecovery = poPageLoginRecovery.url;
|
|
299
|
-
this.componentRef.instance.contactEmail = poPageLoginRecovery.contactMail;
|
|
300
|
-
this.componentRef.instance.phoneMask = poPageLoginRecovery.phoneMask;
|
|
301
|
-
this.componentRef.instance.type = poPageLoginRecovery.type || PoModalPasswordRecoveryType.Email;
|
|
302
|
-
this.componentRef.changeDetectorRef.detectChanges();
|
|
303
|
-
setTimeout(() => {
|
|
304
|
-
this.componentRef.instance.open();
|
|
305
|
-
});
|
|
306
|
-
}
|
|
307
|
-
generateLoginError() {
|
|
308
|
-
if (this.loginErrors && this.loginErrors.length) {
|
|
309
|
-
this.setLoginErrors(this.loginErrors);
|
|
310
|
-
}
|
|
311
|
-
else {
|
|
312
|
-
const control = this.loginForm.form.controls['login'];
|
|
313
|
-
if (control) {
|
|
314
|
-
this.resetControl(control);
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
generatePasswordError() {
|
|
319
|
-
if (this.passwordErrors && this.passwordErrors.length) {
|
|
320
|
-
this.setPasswordErrors(this.passwordErrors);
|
|
321
|
-
}
|
|
322
|
-
else {
|
|
323
|
-
const control = this.loginForm.form.controls['password'];
|
|
324
|
-
if (control) {
|
|
325
|
-
this.resetControl(control);
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
resetControl(control) {
|
|
330
|
-
control.markAsPristine();
|
|
331
|
-
control.markAsUntouched();
|
|
332
|
-
control.updateValueAndValidity();
|
|
333
|
-
}
|
|
334
|
-
setControlErrors(allErrors, control, errors, patternError) {
|
|
335
|
-
if (control) {
|
|
336
|
-
this[allErrors] = control.hasError('pattern') ? [...errors, ...[patternError]] : [...errors];
|
|
337
|
-
if (errors && errors.length && (control.valid || control.pristine)) {
|
|
338
|
-
control.markAsTouched();
|
|
339
|
-
control.markAsDirty();
|
|
340
|
-
control.setErrors(this.customPasswordError);
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
setUrlRedirect(url) {
|
|
345
|
-
isExternalLink(url) ? window.open(url, '_blank') : this.router.navigate([url]);
|
|
346
|
-
}
|
|
347
|
-
validateArrayChanges(differ, array) {
|
|
348
|
-
array.forEach(element => {
|
|
349
|
-
const changes = differ.diff(element.array);
|
|
350
|
-
if (changes) {
|
|
351
|
-
element.callback();
|
|
352
|
-
this.changeDetector.detectChanges();
|
|
353
|
-
}
|
|
354
|
-
});
|
|
355
|
-
}
|
|
356
|
-
initializeLanguage() {
|
|
357
|
-
const language = this.languagesList.find(languageItem => languageItem.language === this.language);
|
|
358
|
-
return language?.language || this.languagesList[0].language;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
PoPageLoginComponent.ɵfac = function PoPageLoginComponent_Factory(t) { return new (t || PoPageLoginComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.PoComponentInjectorService), i0.ɵɵdirectiveInject(i0.IterableDiffers), i0.ɵɵdirectiveInject(i3.PoPageLoginService), i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.PoLanguageService)); };
|
|
362
|
-
PoPageLoginComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoPageLoginComponent, selectors: [["po-page-login"]], viewQuery: function PoPageLoginComponent_Query(rf, ctx) { if (rf & 1) {
|
|
363
|
-
i0.ɵɵviewQuery(_c0, 7, NgForm);
|
|
364
|
-
i0.ɵɵviewQuery(_c1, 7, ViewContainerRef);
|
|
365
|
-
} if (rf & 2) {
|
|
366
|
-
let _t;
|
|
367
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loginForm = _t.first);
|
|
368
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pageLogin = _t.first);
|
|
369
|
-
} }, features: [i0.ɵɵInheritDefinitionFeature], decls: 35, vars: 39, consts: [[1, "po-page-login-support", 3, "hidden", "click"], [1, "po-icon", "po-icon-help"], [3, "p-show-select-language", "p-languages", "p-initial-language", "p-background", "p-highlight-info", "p-logo", "p-secondary-logo", "p-selected-language"], ["pageLogin", ""], [1, "po-page-login-header"], [1, "po-mb-md-4", "po-mb-sm-1"], [1, "po-page-login-header-product-name"], ["p-type", "warning", 3, "p-value", 4, "ngIf"], [1, "po-page-login-header-welcome", "po-mb-md-4", "po-mb-sm-2"], [1, "po-page-login-form"], ["loginForm", "ngForm"], [1, "po-row"], [1, "po-lg-12"], [1, "po-page-login-hint", "po-page-login-info-container"], ["name", "login", "p-auto-focus", "", "p-required", "", 1, "po-page-login-info-field", 3, "ngModel", "p-label", "p-pattern", "p-placeholder", "ngModelChange", "click", "keyup.enter", "p-change-model"], ["class", "po-page-login-info-icon-container", 3, "po-page-login-info-icon-container-dynamic", 4, "ngIf"], [1, "po-field-container-bottom", "po-field-container-error-container"], ["class", "po-field-container-bottom-text-error po-field-container-error-item", 4, "ngFor", "ngForOf"], [1, "po-page-login-password-container"], ["name", "password", "p-required", "", 1, "po-page-login-field-size", "po-page-login-password-item", 3, "ngModel", "p-label", "p-pattern", "p-placeholder", "ngModelChange", "click", "keyup.enter", "p-change-model"], ["class", "po-page-login-password-item po-page-login-password-popover-container", 4, "ngIf"], ["class", "po-page-login-field-size po-lg-12", "name", "customFieldInput", "p-required", "", 3, "po-page-login-field-size-dynamic", "ngModel", "p-error-pattern", "p-pattern", "p-placeholder", "ngModelChange", "keyup.enter", 4, "ngIf"], ["class", "po-page-login-field-size po-lg-12", "name", "customFieldCombo", "p-required", "", 3, "po-page-login-field-size-dynamic", "ngModel", "p-field-value", "p-filter-service", "p-placeholder", "ngModelChange", 4, "ngIf"], ["class", "po-page-login-field-size po-lg-12", "name", "customFieldSelect", "p-required", "", 3, "po-page-login-field-size-dynamic", "ngModel", "p-placeholder", "p-options", "ngModelChange", 4, "ngIf"], ["class", "po-page-login-hint po-page-login-info-container", 4, "ngIf"], ["p-kind", "primary", 1, "po-lg-12", "po-page-login-button", "po-page-login-field-size", 3, "p-disabled", "p-label", "p-loading", "p-click"], ["class", "po-page-login-recovery-link", 4, "ngIf"], ["class", "po-page-login-register-link", 4, "ngIf"], ["p-type", "warning", 3, "p-value"], [1, "po-page-login-info-icon-container"], ["class", "po-icon po-field-icon po-icon-info", "p-tooltip-position", "right", 3, "p-tooltip", 4, "ngIf"], ["p-tooltip-position", "right", 1, "po-icon", "po-field-icon", "po-icon-info", 3, "p-tooltip"], [1, "po-field-container-bottom-text-error", "po-field-container-error-item"], [1, "po-icon", "po-icon-exclamation"], [1, "po-field-container-error-text"], [1, "po-page-login-password-item", "po-page-login-password-popover-container"], [3, "p-literals", "p-recovery", "p-remaining-attempts", "p-forgot-password", 4, "ngIf"], [3, "p-literals", "p-recovery", "p-remaining-attempts", "p-forgot-password"], ["name", "customFieldInput", "p-required", "", 1, "po-page-login-field-size", "po-lg-12", 3, "ngModel", "p-error-pattern", "p-pattern", "p-placeholder", "ngModelChange", "keyup.enter"], ["name", "customFieldCombo", "p-required", "", 1, "po-page-login-field-size", "po-lg-12", 3, "ngModel", "p-field-value", "p-filter-service", "p-placeholder", "ngModelChange"], ["name", "customFieldSelect", "p-required", "", 1, "po-page-login-field-size", "po-lg-12", 3, "ngModel", "p-placeholder", "p-options", "ngModelChange"], ["name", "rememberUser", "p-label-position", "1", 1, "po-page-login-info-field", "po-lg-7", "po-offset-lg-5", "po-offset-xl-5", 3, "ngModel", "p-label-off", "p-label-on", "ngModelChange", "keyup.enter"], ["class", "po-page-login-info-icon-container po-page-login-info-icon-remember-user", 3, "po-page-login-info-icon-container-dynamic", 4, "ngIf"], [1, "po-page-login-info-icon-container", "po-page-login-info-icon-remember-user"], [1, "po-page-login-recovery-link"], [1, "po-font-text-large-bold", 3, "click"], [1, "po-page-login-register-link"]], template: function PoPageLoginComponent_Template(rf, ctx) { if (rf & 1) {
|
|
370
|
-
const _r35 = i0.ɵɵgetCurrentView();
|
|
371
|
-
i0.ɵɵelementStart(0, "button", 0);
|
|
372
|
-
i0.ɵɵlistener("click", function PoPageLoginComponent_Template_button_click_0_listener() { return ctx.activateSupport(); });
|
|
373
|
-
i0.ɵɵelement(1, "span", 1);
|
|
374
|
-
i0.ɵɵtext(2);
|
|
375
|
-
i0.ɵɵelementEnd();
|
|
376
|
-
i0.ɵɵelementStart(3, "po-page-background", 2, 3);
|
|
377
|
-
i0.ɵɵlistener("p-selected-language", function PoPageLoginComponent_Template_po_page_background_p_selected_language_3_listener($event) { return ctx.onSelectedLanguage($event); });
|
|
378
|
-
i0.ɵɵelementStart(5, "header", 4)(6, "h1", 5)(7, "div", 6);
|
|
379
|
-
i0.ɵɵtext(8);
|
|
380
|
-
i0.ɵɵelementEnd();
|
|
381
|
-
i0.ɵɵtemplate(9, PoPageLoginComponent_po_tag_9_Template, 1, 1, "po-tag", 7);
|
|
382
|
-
i0.ɵɵelementEnd();
|
|
383
|
-
i0.ɵɵelementStart(10, "div", 8);
|
|
384
|
-
i0.ɵɵtext(11);
|
|
385
|
-
i0.ɵɵelementEnd()();
|
|
386
|
-
i0.ɵɵelementStart(12, "form", 9, 10)(14, "div", 11)(15, "div", 12)(16, "div", 13)(17, "po-login", 14);
|
|
387
|
-
i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_Template_po_login_ngModelChange_17_listener($event) { return ctx.login = $event; })("click", function PoPageLoginComponent_Template_po_login_click_17_listener() { return ctx.closePopover(); })("keyup.enter", function PoPageLoginComponent_Template_po_login_keyup_enter_17_listener() { i0.ɵɵrestoreView(_r35); const _r2 = i0.ɵɵreference(13); return _r2.valid && ctx.onLoginSubmit(); })("p-change-model", function PoPageLoginComponent_Template_po_login_p_change_model_17_listener() { return ctx.changeLoginModel(); });
|
|
388
|
-
i0.ɵɵelementEnd();
|
|
389
|
-
i0.ɵɵtemplate(18, PoPageLoginComponent_div_18_Template, 2, 3, "div", 15);
|
|
390
|
-
i0.ɵɵelementEnd();
|
|
391
|
-
i0.ɵɵelementStart(19, "div", 16);
|
|
392
|
-
i0.ɵɵtemplate(20, PoPageLoginComponent_div_20_Template, 4, 1, "div", 17);
|
|
393
|
-
i0.ɵɵelementEnd()();
|
|
394
|
-
i0.ɵɵelementStart(21, "div", 12)(22, "div", 18)(23, "po-password", 19);
|
|
395
|
-
i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_Template_po_password_ngModelChange_23_listener($event) { return ctx.password = $event; })("click", function PoPageLoginComponent_Template_po_password_click_23_listener() { return ctx.closePopover(); })("keyup.enter", function PoPageLoginComponent_Template_po_password_keyup_enter_23_listener() { i0.ɵɵrestoreView(_r35); const _r2 = i0.ɵɵreference(13); return _r2.valid && ctx.onLoginSubmit(); })("p-change-model", function PoPageLoginComponent_Template_po_password_p_change_model_23_listener() { return ctx.changePasswordModel(); });
|
|
396
|
-
i0.ɵɵelementEnd();
|
|
397
|
-
i0.ɵɵtemplate(24, PoPageLoginComponent_div_24_Template, 2, 1, "div", 20);
|
|
398
|
-
i0.ɵɵelementEnd();
|
|
399
|
-
i0.ɵɵelementStart(25, "div", 16);
|
|
400
|
-
i0.ɵɵtemplate(26, PoPageLoginComponent_div_26_Template, 4, 1, "div", 17);
|
|
401
|
-
i0.ɵɵelementEnd()();
|
|
402
|
-
i0.ɵɵtemplate(27, PoPageLoginComponent_po_input_27_Template, 1, 6, "po-input", 21);
|
|
403
|
-
i0.ɵɵtemplate(28, PoPageLoginComponent_po_combo_28_Template, 1, 6, "po-combo", 22);
|
|
404
|
-
i0.ɵɵtemplate(29, PoPageLoginComponent_po_select_29_Template, 1, 5, "po-select", 23);
|
|
405
|
-
i0.ɵɵelementStart(30, "div", 12);
|
|
406
|
-
i0.ɵɵtemplate(31, PoPageLoginComponent_div_31_Template, 3, 4, "div", 24);
|
|
407
|
-
i0.ɵɵelementEnd();
|
|
408
|
-
i0.ɵɵelementStart(32, "po-button", 25);
|
|
409
|
-
i0.ɵɵlistener("p-click", function PoPageLoginComponent_Template_po_button_p_click_32_listener() { return ctx.onLoginSubmit(); });
|
|
410
|
-
i0.ɵɵelementEnd();
|
|
411
|
-
i0.ɵɵtemplate(33, PoPageLoginComponent_div_33_Template, 3, 1, "div", 26);
|
|
412
|
-
i0.ɵɵtemplate(34, PoPageLoginComponent_div_34_Template, 3, 1, "div", 27);
|
|
413
|
-
i0.ɵɵelementEnd()()();
|
|
414
|
-
} if (rf & 2) {
|
|
415
|
-
const _r2 = i0.ɵɵreference(13);
|
|
416
|
-
i0.ɵɵproperty("hidden", !ctx.support);
|
|
417
|
-
i0.ɵɵadvance(2);
|
|
418
|
-
i0.ɵɵtextInterpolate1(" ", ctx.pageLoginLiterals == null ? null : ctx.pageLoginLiterals.support, "\n");
|
|
419
|
-
i0.ɵɵadvance(1);
|
|
420
|
-
i0.ɵɵproperty("p-show-select-language", ctx.showLanguage)("p-languages", ctx.languagesList)("p-initial-language", ctx.initialSelectLanguage)("p-background", ctx.background)("p-highlight-info", ctx.pageLoginLiterals.highlightInfo)("p-logo", ctx.logo)("p-secondary-logo", ctx.secondaryLogo);
|
|
421
|
-
i0.ɵɵadvance(5);
|
|
422
|
-
i0.ɵɵtextInterpolate(ctx.productName);
|
|
423
|
-
i0.ɵɵadvance(1);
|
|
424
|
-
i0.ɵɵproperty("ngIf", ctx.environment);
|
|
425
|
-
i0.ɵɵadvance(2);
|
|
426
|
-
i0.ɵɵtextInterpolate(ctx.pageLoginLiterals.welcome);
|
|
427
|
-
i0.ɵɵadvance(6);
|
|
428
|
-
i0.ɵɵclassProp("po-page-login-info-field-dynamic", !ctx.pageLoginLiterals.loginHint && !ctx.pageLoginLiterals.rememberUserHint);
|
|
429
|
-
i0.ɵɵproperty("ngModel", ctx.login)("p-label", ctx.pageLoginLiterals.loginLabel)("p-pattern", ctx.loginPattern)("p-placeholder", ctx.pageLoginLiterals.loginPlaceholder);
|
|
430
|
-
i0.ɵɵadvance(1);
|
|
431
|
-
i0.ɵɵproperty("ngIf", ctx.pageLoginLiterals.loginHint || ctx.pageLoginLiterals.rememberUserHint);
|
|
432
|
-
i0.ɵɵadvance(2);
|
|
433
|
-
i0.ɵɵproperty("ngForOf", ctx.allLoginErrors);
|
|
434
|
-
i0.ɵɵadvance(3);
|
|
435
|
-
i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx.pageLoginLiterals.loginHint && !ctx.pageLoginLiterals.rememberUserHint);
|
|
436
|
-
i0.ɵɵproperty("ngModel", ctx.password)("p-label", ctx.pageLoginLiterals.passwordLabel)("p-pattern", ctx.passwordPattern)("p-placeholder", ctx.pageLoginLiterals.passwordPlaceholder);
|
|
437
|
-
i0.ɵɵadvance(1);
|
|
438
|
-
i0.ɵɵproperty("ngIf", ctx.pageLoginLiterals.loginHint || ctx.pageLoginLiterals.rememberUserHint);
|
|
439
|
-
i0.ɵɵadvance(2);
|
|
440
|
-
i0.ɵɵproperty("ngForOf", ctx.allPasswordErrors);
|
|
441
|
-
i0.ɵɵadvance(1);
|
|
442
|
-
i0.ɵɵproperty("ngIf", ctx.customField && ctx.customFieldType === "input");
|
|
443
|
-
i0.ɵɵadvance(1);
|
|
444
|
-
i0.ɵɵproperty("ngIf", ctx.customField && ctx.customFieldType === "combo");
|
|
445
|
-
i0.ɵɵadvance(1);
|
|
446
|
-
i0.ɵɵproperty("ngIf", ctx.customField && ctx.customFieldType === "select");
|
|
447
|
-
i0.ɵɵadvance(2);
|
|
448
|
-
i0.ɵɵproperty("ngIf", !ctx.hideRememberUser);
|
|
449
|
-
i0.ɵɵadvance(1);
|
|
450
|
-
i0.ɵɵclassProp("po-page-login-button-dynamic", !ctx.pageLoginLiterals.loginHint && !ctx.pageLoginLiterals.rememberUserHint);
|
|
451
|
-
i0.ɵɵproperty("p-disabled", _r2.invalid)("p-label", ctx.loading ? ctx.pageLoginLiterals.submittedLabel : ctx.pageLoginLiterals.submitLabel)("p-loading", ctx.loading);
|
|
452
|
-
i0.ɵɵadvance(1);
|
|
453
|
-
i0.ɵɵproperty("ngIf", ctx.recovery);
|
|
454
|
-
i0.ɵɵadvance(1);
|
|
455
|
-
i0.ɵɵproperty("ngIf", ctx.registerUrl);
|
|
456
|
-
} },
|
|
457
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoPageLoginComponent, [{
|
|
458
|
-
type: Component,
|
|
459
|
-
args: [{ selector: 'po-page-login', template: "<button class=\"po-page-login-support\" (click)=\"activateSupport()\" [hidden]=\"!support\">\n <span class=\"po-icon po-icon-help\"></span>\n {{ pageLoginLiterals?.support }}\n</button>\n\n<po-page-background\n #pageLogin\n [p-show-select-language]=\"showLanguage\"\n [p-languages]=\"languagesList\"\n [p-initial-language]=\"initialSelectLanguage\"\n [p-background]=\"background\"\n [p-highlight-info]=\"pageLoginLiterals.highlightInfo\"\n [p-logo]=\"logo\"\n [p-secondary-logo]=\"secondaryLogo\"\n (p-selected-language)=\"onSelectedLanguage($event)\"\n>\n <header class=\"po-page-login-header\">\n <h1 class=\"po-mb-md-4 po-mb-sm-1\">\n <div class=\"po-page-login-header-product-name\">{{ productName }}</div>\n <po-tag *ngIf=\"environment\" p-type=\"warning\" [p-value]=\"environment\"> </po-tag>\n </h1>\n <div class=\"po-page-login-header-welcome po-mb-md-4 po-mb-sm-2\">{{ pageLoginLiterals.welcome }}</div>\n </header>\n\n <form #loginForm=\"ngForm\" class=\"po-page-login-form\">\n <div class=\"po-row\">\n <div class=\"po-lg-12\">\n <div class=\"po-page-login-hint po-page-login-info-container\">\n <po-login\n class=\"po-page-login-info-field\"\n [class.po-page-login-info-field-dynamic]=\"\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\n \"\n name=\"login\"\n [(ngModel)]=\"login\"\n p-auto-focus\n p-required\n [p-label]=\"pageLoginLiterals.loginLabel\"\n [p-pattern]=\"loginPattern\"\n [p-placeholder]=\"pageLoginLiterals.loginPlaceholder\"\n (click)=\"closePopover()\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n (p-change-model)=\"changeLoginModel()\"\n >\n </po-login>\n\n <div\n *ngIf=\"pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-info-icon-container\"\n [class.po-page-login-info-icon-container-dynamic]=\"\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\n \"\n >\n <span\n *ngIf=\"pageLoginLiterals.loginHint\"\n class=\"po-icon po-field-icon po-icon-info\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"pageLoginLiterals.loginHint\"\n >\n </span>\n </div>\n </div>\n\n <div class=\"po-field-container-bottom po-field-container-error-container\">\n <div\n *ngFor=\"let error of allLoginErrors\"\n class=\"po-field-container-bottom-text-error po-field-container-error-item\"\n >\n <span class=\"po-icon po-icon-exclamation\"></span>\n <span class=\"po-field-container-error-text\">{{ error }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"po-lg-12\">\n <div class=\"po-page-login-password-container\">\n <po-password\n class=\"po-page-login-field-size po-page-login-password-item\"\n [class.po-page-login-field-size-dynamic]=\"\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\n \"\n name=\"password\"\n [(ngModel)]=\"password\"\n p-required\n [p-label]=\"pageLoginLiterals.passwordLabel\"\n [p-pattern]=\"passwordPattern\"\n [p-placeholder]=\"pageLoginLiterals.passwordPlaceholder\"\n (click)=\"closePopover()\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n (p-change-model)=\"changePasswordModel()\"\n >\n </po-password>\n <div\n *ngIf=\"pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-password-item po-page-login-password-popover-container\"\n >\n <po-page-login-popover\n *ngIf=\"showExceededAttemptsWarning && exceededAttemptsWarning\"\n [p-literals]=\"pageLoginLiterals\"\n [p-recovery]=\"recovery\"\n [p-remaining-attempts]=\"exceededAttemptsWarning\"\n (p-forgot-password)=\"openUrl($event)\"\n >\n </po-page-login-popover>\n </div>\n </div>\n <div class=\"po-field-container-bottom po-field-container-error-container\">\n <div\n *ngFor=\"let error of allPasswordErrors\"\n class=\"po-field-container-bottom-text-error po-field-container-error-item\"\n >\n <span class=\"po-icon po-icon-exclamation\"></span>\n <span class=\"po-field-container-error-text\">{{ error }}</span>\n </div>\n </div>\n </div>\n\n <po-input\n *ngIf=\"customField && customFieldType === 'input'\"\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-field-size po-lg-12\"\n name=\"customFieldInput\"\n [(ngModel)]=\"customFieldObject.value\"\n p-required\n [p-error-pattern]=\"customFieldObject.errorPattern || pageLoginLiterals.customFieldErrorPattern\"\n [p-pattern]=\"customFieldObject.pattern\"\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n >\n </po-input>\n\n <po-combo\n *ngIf=\"customField && customFieldType === 'combo'\"\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-field-size po-lg-12\"\n name=\"customFieldCombo\"\n [(ngModel)]=\"customFieldObject.value\"\n p-required\n [p-field-value]=\"customFieldObject.fieldValue\"\n [p-filter-service]=\"customFieldObject.url\"\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\n >\n </po-combo>\n\n <po-select\n *ngIf=\"customField && customFieldType === 'select'\"\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-field-size po-lg-12\"\n name=\"customFieldSelect\"\n [(ngModel)]=\"customFieldObject.value\"\n p-required\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\n [p-options]=\"customFieldObject.options\"\n >\n </po-select>\n\n <div class=\"po-lg-12\">\n <div *ngIf=\"!hideRememberUser\" class=\"po-page-login-hint po-page-login-info-container\">\n <po-switch\n class=\"po-page-login-info-field po-lg-7 po-offset-lg-5 po-offset-xl-5\"\n name=\"rememberUser\"\n [(ngModel)]=\"rememberUser\"\n p-label-position=\"1\"\n [p-label-off]=\"pageLoginLiterals.rememberUser\"\n [p-label-on]=\"pageLoginLiterals.rememberUser\"\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\n >\n </po-switch>\n\n <div\n *ngIf=\"pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint\"\n class=\"po-page-login-info-icon-container po-page-login-info-icon-remember-user\"\n [class.po-page-login-info-icon-container-dynamic]=\"!pageLoginLiterals.rememberUserHint\"\n >\n <span\n *ngIf=\"pageLoginLiterals.rememberUserHint\"\n class=\"po-icon po-field-icon po-icon-info\"\n p-tooltip-position=\"right\"\n [p-tooltip]=\"pageLoginLiterals.rememberUserHint\"\n >\n </span>\n </div>\n </div>\n </div>\n\n <po-button\n [class.po-page-login-button-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\n class=\"po-lg-12 po-page-login-button po-page-login-field-size\"\n p-kind=\"primary\"\n [p-disabled]=\"loginForm.invalid\"\n [p-label]=\"loading ? pageLoginLiterals.submittedLabel : pageLoginLiterals.submitLabel\"\n [p-loading]=\"loading\"\n (p-click)=\"onLoginSubmit()\"\n >\n </po-button>\n\n <div *ngIf=\"recovery\" class=\"po-page-login-recovery-link\">\n <a class=\"po-font-text-large-bold\" (click)=\"openUrl(recovery)\">{{ pageLoginLiterals.forgotPassword }}</a>\n </div>\n\n <div *ngIf=\"registerUrl\" class=\"po-page-login-register-link\">\n <a class=\"po-font-text-large-bold\" (click)=\"openUrl(registerUrl)\">{{ pageLoginLiterals.registerUrl }}</a>\n </div>\n </div>\n </form>\n</po-page-background>\n" }]
|
|
460
|
-
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ActivatedRoute }, { type: i2.PoComponentInjectorService }, { type: i0.IterableDiffers }, { type: i3.PoPageLoginService }, { type: i1.Router }, { type: i2.PoLanguageService }]; }, { loginForm: [{
|
|
461
|
-
type: ViewChild,
|
|
462
|
-
args: ['loginForm', { read: NgForm, static: true }]
|
|
463
|
-
}], pageLogin: [{
|
|
464
|
-
type: ViewChild,
|
|
465
|
-
args: ['pageLogin', { read: ViewContainerRef, static: true }]
|
|
466
|
-
}] }); })();
|
|
467
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtbG9naW4vcG8tcGFnZS1sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtbG9naW4vcG8tcGFnZS1sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFHTCxTQUFTLEVBSVQsU0FBUyxFQUNULGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHbEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDdEgsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDdkgsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzNCLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7OztJQ0xsQyw2QkFBK0U7OztJQUFsQyw0Q0FBdUI7OztJQWtDOUQsMkJBTU87OztJQUZMLCtEQUF5Qzs7O0lBWDdDLCtCQU1DO0lBQ0MsK0VBTU87SUFDVCxpQkFBTTs7O0lBWEosOElBRUM7SUFHRSxlQUFpQztJQUFqQyx5REFBaUM7OztJQVV0QywrQkFHQztJQUNDLDJCQUFpRDtJQUNqRCxnQ0FBNEM7SUFBQSxZQUFXO0lBQUEsaUJBQU8sRUFBQTs7O0lBQWxCLGVBQVc7SUFBWCwrQkFBVzs7OztJQTJCdkQsaURBTUM7SUFEQywwT0FBcUIsdUJBQWUsSUFBQztJQUV2QyxpQkFBd0I7OztJQUx0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cUNBQWlCO1FBQ3ZELGVBQWlCO1FBQWpCLHNDQUFpQjtRQUVvQyxlQUErQjtRQUEvQixtREFBK0I7UUFTdkYsZUFFQztRQUZELCtIQUVDO1FBRUQsbUNBQW1CLDZDQUFBLCtCQUFBLHlEQUFBO1FBYWxCLGVBQXVFO1FBQXZFLGdHQUF1RTtRQWtCdEQsZUFBaUI7UUFBakIsNENBQWlCO1FBYW5DLGVBRUM7UUFGRCwrSEFFQztRQUVELHNDQUFzQixnREFBQSxrQ0FBQSw0REFBQTtRQVdyQixlQUF1RTtRQUF2RSxnR0FBdUU7UUFldEQsZUFBb0I7UUFBcEIsK0NBQW9CO1FBVXpDLGVBQWdEO1FBQWhELHlFQUFnRDtRQWNoRCxlQUFnRDtRQUFoRCx5RUFBZ0Q7UUFhaEQsZUFBaUQ7UUFBakQsMEVBQWlEO1FBWTVDLGVBQXVCO1FBQXZCLDRDQUF1QjtRQTZCN0IsZUFBMEc7UUFBMUcsMkhBQTBHO1FBRzFHLHdDQUFnQyxtR0FBQSwwQkFBQTtRQU81QixlQUFjO1FBQWQsbUNBQWM7UUFJZCxlQUFpQjtRQUFqQixzQ0FBaUI7O3VGRDdJaEIsb0JBQW9CO2NBSmhDLFNBQVM7MkJBQ0UsZUFBZTs4UEFJK0IsU0FBUztrQkFBaEUsU0FBUzttQkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDWSxTQUFTO2tCQUExRSxTQUFTO21CQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IGlzRXh0ZXJuYWxMaW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb0NvbXBvbmVudEluamVjdG9yU2VydmljZSB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcblxuaW1wb3J0IHsgUG9Nb2RhbFBhc3N3b3JkUmVjb3ZlcnlDb21wb25lbnQgfSBmcm9tICcuLi9wby1tb2RhbC1wYXNzd29yZC1yZWNvdmVyeS9wby1tb2RhbC1wYXNzd29yZC1yZWNvdmVyeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9Nb2RhbFBhc3N3b3JkUmVjb3ZlcnlUeXBlIH0gZnJvbSAnLi4vcG8tbW9kYWwtcGFzc3dvcmQtcmVjb3ZlcnkvZW51bXMvcG8tbW9kYWwtcGFzc3dvcmQtcmVjb3ZlcnktdHlwZS5lbnVtJztcbmltcG9ydCB7XG4gIFBvUGFnZUxvZ2luQmFzZUNvbXBvbmVudCxcbiAgcG9QYWdlTG9naW5MaXRlcmFsSW4sXG4gIHBvUGFnZUxvZ2luTGl0ZXJhbHNEZWZhdWx0XG59IGZyb20gJy4vcG8tcGFnZS1sb2dpbi1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1BhZ2VMb2dpblJlY292ZXJ5IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtbG9naW4tcmVjb3ZlcnkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUxvZ2luU2VydmljZSB9IGZyb20gJy4vcG8tcGFnZS1sb2dpbi5zZXJ2aWNlJztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9QYWdlTG9naW5CYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tcGFnZS1sb2dpbi1iYXNpY1wiIHRpdGxlPVwiUE8gUGFnZSBMb2dpbiBCYXNpY1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1iYXNpYy9zYW1wbGUtcG8tcGFnZS1sb2dpbi1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWJhc2ljL3NhbXBsZS1wby1wYWdlLWxvZ2luLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtbG9naW4tbGFic1wiIHRpdGxlPVwiUE8gUGFnZSBMb2dpbiBMYWJzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWxhYnMvc2FtcGxlLXBvLXBhZ2UtbG9naW4tbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWxhYnMvc2FtcGxlLXBvLXBhZ2UtbG9naW4tbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1wYWdlLWxvZ2luLWh1bWFuLXJlc291cmNlc1wiIHRpdGxlPVwiUE8gUGFnZSBMb2dpbiAtIEh1bWFuIFJlc291cmNlc1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1odW1hbi1yZXNvdXJjZXMvc2FtcGxlLXBvLXBhZ2UtbG9naW4taHVtYW4tcmVzb3VyY2VzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtbG9naW4taHVtYW4tcmVzb3VyY2VzL3NhbXBsZS1wby1wYWdlLWxvZ2luLWh1bWFuLXJlc291cmNlcy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1odW1hbi1yZXNvdXJjZXMvc2FtcGxlLXBvLXBhZ2UtbG9naW4taHVtYW4tcmVzb3VyY2VzLm1vZHVsZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtbG9naW4tYXV0b21hdGljLXNlcnZpY2VcIiB0aXRsZT1cIlBPIFBhZ2UgTG9naW4gLSBBdXRvbWF0aWMgU2VydmljZVwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1hdXRvbWF0aWMtc2VydmljZS9zYW1wbGUtcG8tcGFnZS1sb2dpbi1hdXRvbWF0aWMtc2VydmljZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWF1dG9tYXRpYy1zZXJ2aWNlL3NhbXBsZS1wby1wYWdlLWxvZ2luLWF1dG9tYXRpYy1zZXJ2aWNlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tcGFnZS1sb2dpbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1wYWdlLWxvZ2luLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQb1BhZ2VMb2dpbkNvbXBvbmVudCBleHRlbmRzIFBvUGFnZUxvZ2luQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2xvZ2luRm9ybScsIHsgcmVhZDogTmdGb3JtLCBzdGF0aWM6IHRydWUgfSkgbG9naW5Gb3JtOiBOZ0Zvcm07XG4gIEBWaWV3Q2hpbGQoJ3BhZ2VMb2dpbicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHBhZ2VMb2dpbjogVmlld0NvbnRhaW5lclJlZjtcblxuICBpbml0aWFsU2VsZWN0TGFuZ3VhZ2U6IHN0cmluZztcblxuICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4gPSBudWxsO1xuICBwcml2YXRlIGRpZmZlcjogYW55O1xuICBwcml2YXRlIHJlYWRvbmx5IGN1c3RvbVBhc3N3b3JkRXJyb3IgPSB7IGN1c3RvbTogZmFsc2UgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcG9Db21wb25lbnRJbmplY3RvcjogUG9Db21wb25lbnRJbmplY3RvclNlcnZpY2UsXG4gICAgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgIGxvZ2luU2VydmljZTogUG9QYWdlTG9naW5TZXJ2aWNlLFxuICAgIHJvdXRlcjogUm91dGVyLFxuICAgIHBvTGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxuICApIHtcbiAgICBzdXBlcihsb2dpblNlcnZpY2UsIHJvdXRlciwgcG9MYW5ndWFnZVNlcnZpY2UpO1xuICAgIHRoaXMuZGlmZmVyID0gZGlmZmVycy5maW5kKFtdKS5jcmVhdGUobnVsbCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgaWYgKHRoaXMuZGlmZmVyKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlQXJyYXlDaGFuZ2VzKHRoaXMuZGlmZmVyLCBbXG4gICAgICAgIHsgYXJyYXk6IHRoaXMubG9naW5FcnJvcnMsIGNhbGxiYWNrOiB0aGlzLmdlbmVyYXRlTG9naW5FcnJvci5iaW5kKHRoaXMpIH0sXG4gICAgICAgIHsgYXJyYXk6IHRoaXMucGFzc3dvcmRFcnJvcnMsIGNhbGxiYWNrOiB0aGlzLmdlbmVyYXRlUGFzc3dvcmRFcnJvci5iaW5kKHRoaXMpIH1cbiAgICAgIF0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2hlY2tpbmdGb3JSb3V0ZU1ldGFkYXRhKHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZGF0YSk7XG4gICAgdGhpcy5zZWxlY3RlZExhbmd1YWdlID0gdGhpcy5pbml0aWFsaXplTGFuZ3VhZ2UoKTtcbiAgICB0aGlzLmluaXRpYWxTZWxlY3RMYW5ndWFnZSA9IHRoaXMuc2VsZWN0ZWRMYW5ndWFnZTtcbiAgfVxuXG4gIGFjdGl2YXRlU3VwcG9ydCgpIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiB0aGlzLnN1cHBvcnQpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6IHtcbiAgICAgICAgdGhpcy5zZXRVcmxSZWRpcmVjdCh0aGlzLnN1cHBvcnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2Z1bmN0aW9uJzoge1xuICAgICAgICB0aGlzLnN1cHBvcnQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlTG9naW5Nb2RlbCgpIHtcbiAgICBpZiAodGhpcy5hdXRoZW50aWNhdGlvblVybCkge1xuICAgICAgdGhpcy5sb2dpbkVycm9ycyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldExvZ2luRXJyb3JzKHRoaXMubG9naW5FcnJvcnMpO1xuICAgICAgdGhpcy5sb2dpbkNoYW5nZS5lbWl0KHRoaXMubG9naW4pO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVBhc3N3b3JkTW9kZWwoKSB7XG4gICAgaWYgKHRoaXMuYXV0aGVudGljYXRpb25VcmwpIHtcbiAgICAgIHRoaXMucGFzc3dvcmRFcnJvcnMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRQYXNzd29yZEVycm9ycyh0aGlzLnBhc3N3b3JkRXJyb3JzKTtcbiAgICAgIHRoaXMucGFzc3dvcmRDaGFuZ2UuZW1pdCh0aGlzLnBhc3N3b3JkKTtcbiAgICB9XG4gIH1cblxuICBvblNlbGVjdGVkTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgIHRoaXMubGFuZ3VhZ2VDaGFuZ2UuZW1pdCh0aGlzLmxhbmd1YWdlc0xpc3QuZmluZChsYW5ndWFnZUl0ZW0gPT4gbGFuZ3VhZ2VJdGVtLmxhbmd1YWdlID09PSBsYW5ndWFnZSkpO1xuICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSA9IGxhbmd1YWdlO1xuICB9XG5cbiAgb3BlblVybChyZWNvdmVyeTogYW55KTogdm9pZCB7XG4gICAgc3dpdGNoICh0eXBlb2YgcmVjb3ZlcnkpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6IHtcbiAgICAgICAgdGhpcy5zZXRVcmxSZWRpcmVjdChyZWNvdmVyeSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnZnVuY3Rpb24nOiB7XG4gICAgICAgIHJlY292ZXJ5KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnb2JqZWN0Jzoge1xuICAgICAgICB0aGlzLmNyZWF0ZU1vZGFsUGFzc3dvcmRSZWNvdmVyeUNvbXBvbmVudChyZWNvdmVyeSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjb25jYXRlbmF0ZUxvZ2luSGludFdpdGhDb250YWN0RW1haWwoY29udGFjdEVtYWlsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkZWZhdWx0TG9naW5IaW50TGl0ZXJhbCA9IHBvUGFnZUxvZ2luTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLmxvZ2luSGludDtcbiAgICBjb25zdCBwcmVwb3NpdGlvbkxpdGVyYWwgPSBwb1BhZ2VMb2dpbkxpdGVyYWxJblt0aGlzLmxhbmd1YWdlXTtcblxuICAgIHJldHVybiB0aGlzLmNvbmNhdGVuYXRlTGl0ZXJhbChjb250YWN0RW1haWwsICdsb2dpbkhpbnQnLCBkZWZhdWx0TG9naW5IaW50TGl0ZXJhbCwgcHJlcG9zaXRpb25MaXRlcmFsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRMb2dpbkVycm9ycyhlcnJvcnM6IEFycmF5PHN0cmluZz4pIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5sb2dpbkZvcm0uZm9ybS5jb250cm9sc1snbG9naW4nXTtcbiAgICB0aGlzLnNldENvbnRyb2xFcnJvcnMoJ2FsbExvZ2luRXJyb3JzJywgY29udHJvbCwgZXJyb3JzLCB0aGlzLnBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luRXJyb3JQYXR0ZXJuKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRQYXNzd29yZEVycm9ycyhlcnJvcnM6IEFycmF5PHN0cmluZz4pIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5sb2dpbkZvcm0uZm9ybS5jb250cm9sc1sncGFzc3dvcmQnXTtcbiAgICB0aGlzLnNldENvbnRyb2xFcnJvcnMoJ2FsbFBhc3N3b3JkRXJyb3JzJywgY29udHJvbCwgZXJyb3JzLCB0aGlzLnBhZ2VMb2dpbkxpdGVyYWxzLnBhc3N3b3JkRXJyb3JQYXR0ZXJuKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tpbmdGb3JNZXRhZGF0YVByb3BlcnR5KG9iamVjdCwgcHJvcGVydHkpIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpKSB7XG4gICAgICByZXR1cm4gb2JqZWN0W3Byb3BlcnR5XTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNraW5nRm9yUm91dGVNZXRhZGF0YShkYXRhKSB7XG4gICAgaWYgKE9iamVjdC5rZXlzKGRhdGEpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5hdXRoZW50aWNhdGlvblVybCA9IHRoaXMuY2hlY2tpbmdGb3JNZXRhZGF0YVByb3BlcnR5KGRhdGEsICdzZXJ2aWNlQXBpJykgfHwgdGhpcy5hdXRoZW50aWNhdGlvblVybDtcbiAgICAgIHRoaXMuYXV0aGVudGljYXRpb25UeXBlID0gdGhpcy5jaGVja2luZ0Zvck1ldGFkYXRhUHJvcGVydHkoZGF0YSwgJ2F1dGhlbnRpY2F0aW9uVHlwZScpIHx8IHRoaXMuYXV0aGVudGljYXRpb25UeXBlO1xuICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IHRoaXMuY2hlY2tpbmdGb3JNZXRhZGF0YVByb3BlcnR5KGRhdGEsICdlbnZpcm9ubWVudCcpIHx8IHRoaXMuZW52aXJvbm1lbnQ7XG4gICAgICB0aGlzLnJlY292ZXJ5ID0gdGhpcy5jaGVja2luZ0Zvck1ldGFkYXRhUHJvcGVydHkoZGF0YSwgJ3JlY292ZXJ5JykgfHwgdGhpcy5yZWNvdmVyeTtcbiAgICAgIHRoaXMucmVnaXN0ZXJVcmwgPSB0aGlzLmNoZWNraW5nRm9yTWV0YWRhdGFQcm9wZXJ0eShkYXRhLCAncmVnaXN0ZXJVcmwnKSB8fCB0aGlzLnJlZ2lzdGVyVXJsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uY2F0ZW5hdGUoZGVmYXVsdExpdGVyYWw6IHN0cmluZywgcHJlZml4TGl0ZXJhbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGAke2RlZmF1bHRMaXRlcmFsfSAke3ByZWZpeExpdGVyYWx9ICR7dmFsdWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgY29uY2F0ZW5hdGVMaXRlcmFsKHZhbHVlOiBzdHJpbmcsIGxpdGVyYWw6IHN0cmluZywgZGVmYXVsdExpdGVyYWw6IHN0cmluZywgcHJlcG9zaXRpb25MaXRlcmFsOiBzdHJpbmcpIHtcbiAgICByZXR1cm4geyBbbGl0ZXJhbF06IHRoaXMuY29uY2F0ZW5hdGUoZGVmYXVsdExpdGVyYWwsIHByZXBvc2l0aW9uTGl0ZXJhbCwgdmFsdWUpIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1vZGFsUGFzc3dvcmRSZWNvdmVyeUNvbXBvbmVudChwb1BhZ2VMb2dpblJlY292ZXJ5OiBQb1BhZ2VMb2dpblJlY292ZXJ5KSB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLnBvQ29tcG9uZW50SW5qZWN0b3IuZGVzdHJveUNvbXBvbmVudEluQXBwbGljYXRpb24odGhpcy5jb21wb25lbnRSZWYpO1xuICAgIH1cblxuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5wb0NvbXBvbmVudEluamVjdG9yLmNyZWF0ZUNvbXBvbmVudEluQXBwbGljYXRpb24oUG9Nb2RhbFBhc3N3b3JkUmVjb3ZlcnlDb21wb25lbnQpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnVybFJlY292ZXJ5ID0gcG9QYWdlTG9naW5SZWNvdmVyeS51cmw7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuY29udGFjdEVtYWlsID0gcG9QYWdlTG9naW5SZWNvdmVyeS5jb250YWN0TWFpbDtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5waG9uZU1hc2sgPSBwb1BhZ2VMb2dpblJlY292ZXJ5LnBob25lTWFzaztcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS50eXBlID0gcG9QYWdlTG9naW5SZWNvdmVyeS50eXBlIHx8IFBvTW9kYWxQYXNzd29yZFJlY292ZXJ5VHlwZS5FbWFpbDtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5vcGVuKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlTG9naW5FcnJvcigpIHtcbiAgICBpZiAodGhpcy5sb2dpbkVycm9ycyAmJiB0aGlzLmxvZ2luRXJyb3JzLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZXRMb2dpbkVycm9ycyh0aGlzLmxvZ2luRXJyb3JzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMubG9naW5Gb3JtLmZvcm0uY29udHJvbHNbJ2xvZ2luJ107XG4gICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICB0aGlzLnJlc2V0Q29udHJvbChjb250cm9sKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlUGFzc3dvcmRFcnJvcigpIHtcbiAgICBpZiAodGhpcy5wYXNzd29yZEVycm9ycyAmJiB0aGlzLnBhc3N3b3JkRXJyb3JzLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZXRQYXNzd29yZEVycm9ycyh0aGlzLnBhc3N3b3JkRXJyb3JzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMubG9naW5Gb3JtLmZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ107XG5cbiAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgIHRoaXMucmVzZXRDb250cm9sKGNvbnRyb2wpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRDb250cm9sKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGNvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcbiAgICBjb250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb250cm9sRXJyb3JzKGFsbEVycm9yczogc3RyaW5nLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGVycm9yczogQXJyYXk8c3RyaW5nPiwgcGF0dGVybkVycm9yOiBzdHJpbmcpIHtcbiAgICBpZiAoY29udHJvbCkge1xuICAgICAgdGhpc1thbGxFcnJvcnNdID0gY29udHJvbC5oYXNFcnJvcigncGF0dGVybicpID8gWy4uLmVycm9ycywgLi4uW3BhdHRlcm5FcnJvcl1dIDogWy4uLmVycm9yc107XG5cbiAgICAgIGlmIChlcnJvcnMgJiYgZXJyb3JzLmxlbmd0aCAmJiAoY29udHJvbC52YWxpZCB8fCBjb250cm9sLnByaXN0aW5lKSkge1xuICAgICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICBjb250cm9sLnNldEVycm9ycyh0aGlzLmN1c3RvbVBhc3N3b3JkRXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VXJsUmVkaXJlY3QodXJsKSB7XG4gICAgaXNFeHRlcm5hbExpbmsodXJsKSA/IHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpIDogdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3VybF0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUFycmF5Q2hhbmdlcyhkaWZmZXI6IGFueSwgYXJyYXk6IEFycmF5PHsgYXJyYXk6IEFycmF5PGFueT47IGNhbGxiYWNrOiBhbnkgfT4pIHtcbiAgICBhcnJheS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgY29uc3QgY2hhbmdlcyA9IGRpZmZlci5kaWZmKGVsZW1lbnQuYXJyYXkpO1xuICAgICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgICAgZWxlbWVudC5jYWxsYmFjaygpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxhbmd1YWdlKCkge1xuICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy5sYW5ndWFnZXNMaXN0LmZpbmQobGFuZ3VhZ2VJdGVtID0+IGxhbmd1YWdlSXRlbS5sYW5ndWFnZSA9PT0gdGhpcy5sYW5ndWFnZSk7XG4gICAgcmV0dXJuIGxhbmd1YWdlPy5sYW5ndWFnZSB8fCB0aGlzLmxhbmd1YWdlc0xpc3RbMF0ubGFuZ3VhZ2U7XG4gIH1cbn1cbiIsIjxidXR0b24gY2xhc3M9XCJwby1wYWdlLWxvZ2luLXN1cHBvcnRcIiAoY2xpY2spPVwiYWN0aXZhdGVTdXBwb3J0KClcIiBbaGlkZGVuXT1cIiFzdXBwb3J0XCI+XG4gIDxzcGFuIGNsYXNzPVwicG8taWNvbiBwby1pY29uLWhlbHBcIj48L3NwYW4+XG4gIHt7IHBhZ2VMb2dpbkxpdGVyYWxzPy5zdXBwb3J0IH19XG48L2J1dHRvbj5cblxuPHBvLXBhZ2UtYmFja2dyb3VuZFxuICAjcGFnZUxvZ2luXG4gIFtwLXNob3ctc2VsZWN0LWxhbmd1YWdlXT1cInNob3dMYW5ndWFnZVwiXG4gIFtwLWxhbmd1YWdlc109XCJsYW5ndWFnZXNMaXN0XCJcbiAgW3AtaW5pdGlhbC1sYW5ndWFnZV09XCJpbml0aWFsU2VsZWN0TGFuZ3VhZ2VcIlxuICBbcC1iYWNrZ3JvdW5kXT1cImJhY2tncm91bmRcIlxuICBbcC1oaWdobGlnaHQtaW5mb109XCJwYWdlTG9naW5MaXRlcmFscy5oaWdobGlnaHRJbmZvXCJcbiAgW3AtbG9nb109XCJsb2dvXCJcbiAgW3Atc2Vjb25kYXJ5LWxvZ29dPVwic2Vjb25kYXJ5TG9nb1wiXG4gIChwLXNlbGVjdGVkLWxhbmd1YWdlKT1cIm9uU2VsZWN0ZWRMYW5ndWFnZSgkZXZlbnQpXCJcbj5cbiAgPGhlYWRlciBjbGFzcz1cInBvLXBhZ2UtbG9naW4taGVhZGVyXCI+XG4gICAgPGgxIGNsYXNzPVwicG8tbWItbWQtNCBwby1tYi1zbS0xXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicG8tcGFnZS1sb2dpbi1oZWFkZXItcHJvZHVjdC1uYW1lXCI+e3sgcHJvZHVjdE5hbWUgfX08L2Rpdj5cbiAgICAgIDxwby10YWcgKm5nSWY9XCJlbnZpcm9ubWVudFwiIHAtdHlwZT1cIndhcm5pbmdcIiBbcC12YWx1ZV09XCJlbnZpcm9ubWVudFwiPiA8L3BvLXRhZz5cbiAgICA8L2gxPlxuICAgIDxkaXYgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWhlYWRlci13ZWxjb21lIHBvLW1iLW1kLTQgcG8tbWItc20tMlwiPnt7IHBhZ2VMb2dpbkxpdGVyYWxzLndlbGNvbWUgfX08L2Rpdj5cbiAgPC9oZWFkZXI+XG5cbiAgPGZvcm0gI2xvZ2luRm9ybT1cIm5nRm9ybVwiIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1mb3JtXCI+XG4gICAgPGRpdiBjbGFzcz1cInBvLXJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInBvLWxnLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWhpbnQgcG8tcGFnZS1sb2dpbi1pbmZvLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxwby1sb2dpblxuICAgICAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWluZm8tZmllbGRcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXBhZ2UtbG9naW4taW5mby1maWVsZC1keW5hbWljXT1cIlxuICAgICAgICAgICAgICAhcGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50ICYmICFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgbmFtZT1cImxvZ2luXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibG9naW5cIlxuICAgICAgICAgICAgcC1hdXRvLWZvY3VzXG4gICAgICAgICAgICBwLXJlcXVpcmVkXG4gICAgICAgICAgICBbcC1sYWJlbF09XCJwYWdlTG9naW5MaXRlcmFscy5sb2dpbkxhYmVsXCJcbiAgICAgICAgICAgIFtwLXBhdHRlcm5dPVwibG9naW5QYXR0ZXJuXCJcbiAgICAgICAgICAgIFtwLXBsYWNlaG9sZGVyXT1cInBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlUG9wb3ZlcigpXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJsb2dpbkZvcm0udmFsaWQgJiYgb25Mb2dpblN1Ym1pdCgpXCJcbiAgICAgICAgICAgIChwLWNoYW5nZS1tb2RlbCk9XCJjaGFuZ2VMb2dpbk1vZGVsKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3BvLWxvZ2luPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgfHwgcGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXBhZ2UtbG9naW4taW5mby1pY29uLWNvbnRhaW5lclwiXG4gICAgICAgICAgICBbY2xhc3MucG8tcGFnZS1sb2dpbi1pbmZvLWljb24tY29udGFpbmVyLWR5bmFtaWNdPVwiXG4gICAgICAgICAgICAgICFwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgJiYgIXBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLWljb24gcG8tZmllbGQtaWNvbiBwby1pY29uLWluZm9cIlxuICAgICAgICAgICAgICBwLXRvb2x0aXAtcG9zaXRpb249XCJyaWdodFwiXG4gICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwicGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20gcG8tZmllbGQtY29udGFpbmVyLWVycm9yLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBlcnJvciBvZiBhbGxMb2dpbkVycm9yc1wiXG4gICAgICAgICAgICBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20tdGV4dC1lcnJvciBwby1maWVsZC1jb250YWluZXItZXJyb3ItaXRlbVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwby1pY29uIHBvLWljb24tZXhjbGFtYXRpb25cIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1lcnJvci10ZXh0XCI+e3sgZXJyb3IgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwby1sZy0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG8tcGFnZS1sb2dpbi1wYXNzd29yZC1jb250YWluZXJcIj5cbiAgICAgICAgICA8cG8tcGFzc3dvcmRcbiAgICAgICAgICAgIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1maWVsZC1zaXplIHBvLXBhZ2UtbG9naW4tcGFzc3dvcmQtaXRlbVwiXG4gICAgICAgICAgICBbY2xhc3MucG8tcGFnZS1sb2dpbi1maWVsZC1zaXplLWR5bmFtaWNdPVwiXG4gICAgICAgICAgICAgICFwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgJiYgIXBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYXNzd29yZFwiXG4gICAgICAgICAgICBwLXJlcXVpcmVkXG4gICAgICAgICAgICBbcC1sYWJlbF09XCJwYWdlTG9naW5MaXRlcmFscy5wYXNzd29yZExhYmVsXCJcbiAgICAgICAgICAgIFtwLXBhdHRlcm5dPVwicGFzc3dvcmRQYXR0ZXJuXCJcbiAgICAgICAgICAgIFtwLXBsYWNlaG9sZGVyXT1cInBhZ2VMb2dpbkxpdGVyYWxzLnBhc3N3b3JkUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlUG9wb3ZlcigpXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJsb2dpbkZvcm0udmFsaWQgJiYgb25Mb2dpblN1Ym1pdCgpXCJcbiAgICAgICAgICAgIChwLWNoYW5nZS1tb2RlbCk9XCJjaGFuZ2VQYXNzd29yZE1vZGVsKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3BvLXBhc3N3b3JkPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwicGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50IHx8IHBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLXBhc3N3b3JkLWl0ZW0gcG8tcGFnZS1sb2dpbi1wYXNzd29yZC1wb3BvdmVyLWNvbnRhaW5lclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHBvLXBhZ2UtbG9naW4tcG9wb3ZlclxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dFeGNlZWRlZEF0dGVtcHRzV2FybmluZyAmJiBleGNlZWRlZEF0dGVtcHRzV2FybmluZ1wiXG4gICAgICAgICAgICAgIFtwLWxpdGVyYWxzXT1cInBhZ2VMb2dpbkxpdGVyYWxzXCJcbiAgICAgICAgICAgICAgW3AtcmVjb3ZlcnldPVwicmVjb3ZlcnlcIlxuICAgICAgICAgICAgICBbcC1yZW1haW5pbmctYXR0ZW1wdHNdPVwiZXhjZWVkZWRBdHRlbXB0c1dhcm5pbmdcIlxuICAgICAgICAgICAgICAocC1mb3Jnb3QtcGFzc3dvcmQpPVwib3BlblVybCgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvcG8tcGFnZS1sb2dpbi1wb3BvdmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20gcG8tZmllbGQtY29udGFpbmVyLWVycm9yLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBlcnJvciBvZiBhbGxQYXNzd29yZEVycm9yc1wiXG4gICAgICAgICAgICBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20tdGV4dC1lcnJvciBwby1maWVsZC1jb250YWluZXItZXJyb3ItaXRlbVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwby1pY29uIHBvLWljb24tZXhjbGFtYXRpb25cIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1lcnJvci10ZXh0XCI+e3sgZXJyb3IgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxwby1pbnB1dFxuICAgICAgICAqbmdJZj1cImN1c3RvbUZpZWxkICYmIGN1c3RvbUZpZWxkVHlwZSA9PT0gJ2lucHV0J1wiXG4gICAgICAgIFtjbGFzcy5wby1wYWdlLWxvZ2luLWZpZWxkLXNpemUtZHluYW1pY109XCIhcGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50ICYmICFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcbiAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWZpZWxkLXNpemUgcG8tbGctMTJcIlxuICAgICAgICBuYW1lPVwiY3VzdG9tRmllbGRJbnB1dFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiY3VzdG9tRmllbGRPYmplY3QudmFsdWVcIlxuICAgICAgICBwLXJlcXVpcmVkXG4gICAgICAgIFtwLWVycm9yLXBhdHRlcm5dPVwiY3VzdG9tRmllbGRPYmplY3QuZXJyb3JQYXR0ZXJuIHx8IHBhZ2VMb2dpbkxpdGVyYWxzLmN1c3RvbUZpZWxkRXJyb3JQYXR0ZXJuXCJcbiAgICAgICAgW3AtcGF0dGVybl09XCJjdXN0b21GaWVsZE9iamVjdC5wYXR0ZXJuXCJcbiAgICAgICAgW3AtcGxhY2Vob2xkZXJdPVwiY3VzdG9tRmllbGRPYmplY3QucGxhY2Vob2xkZXIgfHwgcGFnZUxvZ2luTGl0ZXJhbHMuY3VzdG9tRmllbGRQbGFjZWhvbGRlclwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJsb2dpbkZvcm0udmFsaWQgJiYgb25Mb2dpblN1Ym1pdCgpXCJcbiAgICAgID5cbiAgICAgIDwvcG8taW5wdXQ+XG5cbiAgICAgIDxwby1jb21ib1xuICAgICAgICAqbmdJZj1cImN1c3RvbUZpZWxkICYmIGN1c3RvbUZpZWxkVHlwZSA9PT0gJ2NvbWJvJ1wiXG4gICAgICAgIFtjbGFzcy5wby1wYWdlLWxvZ2luLWZpZWxkLXNpemUtZHluYW1pY109XCIhcGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50ICYmICFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcbiAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWZpZWxkLXNpemUgcG8tbGctMTJcIlxuICAgICAgICBuYW1lPVwiY3VzdG9tRmllbGRDb21ib1wiXG4gICAgICAgIFsobmdNb2RlbCldPVwiY3VzdG9tRmllbGRPYmplY3QudmFsdWVcIlxuICAgICAgICBwLXJlcXVpcmVkXG4gICAgICAgIFtwLWZpZWxkLXZhbHVlXT1cImN1c3RvbUZpZWxkT2JqZWN0LmZpZWxkVmFsdWVcIlxuICAgICAgICBbcC1maWx0ZXItc2VydmljZV09XCJjdXN0b21GaWVsZE9iamVjdC51cmxcIlxuICAgICAgICBbcC1wbGFjZWhvbGRlcl09XCJjdXN0b21GaWVsZE9iamVjdC5wbGFjZWhvbGRlciB8fCBwYWdlTG9naW5MaXRlcmFscy5jdXN0b21GaWVsZFBsYWNlaG9sZGVyXCJcbiAgICAgID5cbiAgICAgIDwvcG8tY29tYm8+XG5cbiAgICAgIDxwby1zZWxlY3RcbiAgICAgICAgKm5nSWY9XCJjdXN0b21GaWVsZCAmJiBjdXN0b21GaWVsZFR5cGUgPT09ICdzZWxlY3QnXCJcbiAgICAgICAgW2NsYXNzLnBvLXBhZ2UtbG9naW4tZmllbGQtc2l6ZS1keW5hbWljXT1cIiFwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgJiYgIXBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxuICAgICAgICBjbGFzcz1cInBvLXBhZ2UtbG9naW4tZmllbGQtc2l6ZSBwby1sZy0xMlwiXG4gICAgICAgIG5hbWU9XCJjdXN0b21GaWVsZFNlbGVjdFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiY3VzdG9tRmllbGRPYmplY3QudmFsdWVcIlxuICAgICAgICBwLXJlcXVpcmVkXG4gICAgICAgIFtwLXBsYWNlaG9sZGVyXT1cImN1c3RvbUZpZWxkT2JqZWN0LnBsYWNlaG9sZGVyIHx8IHBhZ2VMb2dpbkxpdGVyYWxzLmN1c3RvbUZpZWxkUGxhY2Vob2xkZXJcIlxuICAgICAgICBbcC1vcHRpb25zXT1cImN1c3RvbUZpZWxkT2JqZWN0Lm9wdGlvbnNcIlxuICAgICAgPlxuICAgICAgPC9wby1zZWxlY3Q+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwby1sZy0xMlwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhpZGVSZW1lbWJlclVzZXJcIiBjbGFzcz1cInBvLXBhZ2UtbG9naW4taGludCBwby1wYWdlLWxvZ2luLWluZm8tY29udGFpbmVyXCI+XG4gICAgICAgICAgPHBvLXN3aXRjaFxuICAgICAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWluZm8tZmllbGQgcG8tbGctNyBwby1vZmZzZXQtbGctNSBwby1vZmZzZXQteGwtNVwiXG4gICAgICAgICAgICBuYW1lPVwicmVtZW1iZXJVc2VyXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicmVtZW1iZXJVc2VyXCJcbiAgICAgICAgICAgIHAtbGFiZWwtcG9zaXRpb249XCIxXCJcbiAgICAgICAgICAgIFtwLWxhYmVsLW9mZl09XCJwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJcIlxuICAgICAgICAgICAgW3AtbGFiZWwtb25dPVwicGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VyXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJsb2dpbkZvcm0udmFsaWQgJiYgb25Mb2dpblN1Ym1pdCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9wby1zd2l0Y2g+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCB8fCBwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1pbmZvLWljb24tY29udGFpbmVyIHBvLXBhZ2UtbG9naW4taW5mby1pY29uLXJlbWVtYmVyLXVzZXJcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXBhZ2UtbG9naW4taW5mby1pY29uLWNvbnRhaW5lci1keW5hbWljXT1cIiFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdJZj1cInBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLWljb24gcG8tZmllbGQtaWNvbiBwby1pY29uLWluZm9cIlxuICAgICAgICAgICAgICBwLXRvb2x0aXAtcG9zaXRpb249XCJyaWdodFwiXG4gICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwicGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxwby1idXR0b25cbiAgICAgICAgW2NsYXNzLnBvLXBhZ2UtbG9naW4tYnV0dG9uLWR5bmFtaWNdPVwiIXBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCAmJiAhcGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFwiXG4gICAgICAgIGNsYXNzPVwicG8tbGctMTIgcG8tcGFnZS1sb2dpbi1idXR0b24gcG8tcGFnZS1sb2dpbi1maWVsZC1zaXplXCJcbiAgICAgICAgcC1raW5kPVwicHJpbWFyeVwiXG4gICAgICAgIFtwLWRpc2FibGVkXT1cImxvZ2luRm9ybS5pbnZhbGlkXCJcbiAgICAgICAgW3AtbGFiZWxdPVwibG9hZGluZyA/IHBhZ2VMb2dpbkxpdGVyYWxzLnN1Ym1pdHRlZExhYmVsIDogcGFnZUxvZ2luTGl0ZXJhbHMuc3VibWl0TGFiZWxcIlxuICAgICAgICBbcC1sb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgICAocC1jbGljayk9XCJvbkxvZ2luU3VibWl0KClcIlxuICAgICAgPlxuICAgICAgPC9wby1idXR0b24+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJyZWNvdmVyeVwiIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1yZWNvdmVyeS1saW5rXCI+XG4gICAgICAgIDxhIGNsYXNzPVwicG8tZm9udC10ZXh0LWxhcmdlLWJvbGRcIiAoY2xpY2spPVwib3BlblVybChyZWNvdmVyeSlcIj57eyBwYWdlTG9naW5MaXRlcmFscy5mb3Jnb3RQYXNzd29yZCB9fTwvYT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwicmVnaXN0ZXJVcmxcIiBjbGFzcz1cInBvLXBhZ2UtbG9naW4tcmVnaXN0ZXItbGlua1wiPlxuICAgICAgICA8YSBjbGFzcz1cInBvLWZvbnQtdGV4dC1sYXJnZS1ib2xkXCIgKGNsaWNrKT1cIm9wZW5VcmwocmVnaXN0ZXJVcmwpXCI+e3sgcGFnZUxvZ2luTGl0ZXJhbHMucmVnaXN0ZXJVcmwgfX08L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9wby1wYWdlLWJhY2tncm91bmQ+XG4iXX0=
|
|
1
|
+
import { NgForm } from '@angular/forms';
|
|
2
|
+
import { Component, ViewChild, ViewContainerRef } from '@angular/core';
|
|
3
|
+
import { isExternalLink } from '../../utils/util';
|
|
4
|
+
import { PoModalPasswordRecoveryComponent } from '../po-modal-password-recovery/po-modal-password-recovery.component';
|
|
5
|
+
import { PoModalPasswordRecoveryType } from '../po-modal-password-recovery/enums/po-modal-password-recovery-type.enum';
|
|
6
|
+
import { PoPageLoginBaseComponent, poPageLoginLiteralIn, poPageLoginLiteralsDefault } from './po-page-login-base.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/router";
|
|
9
|
+
import * as i2 from "@po-ui/ng-components";
|
|
10
|
+
import * as i3 from "./po-page-login.service";
|
|
11
|
+
import * as i4 from "@angular/common";
|
|
12
|
+
import * as i5 from "@angular/forms";
|
|
13
|
+
import * as i6 from "../po-page-background/po-page-background.component";
|
|
14
|
+
import * as i7 from "./po-page-login-popover/po-page-login-popover.component";
|
|
15
|
+
const _c0 = ["loginForm"];
|
|
16
|
+
const _c1 = ["pageLogin"];
|
|
17
|
+
function PoPageLoginComponent_po_tag_9_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
+
i0.ɵɵelement(0, "po-tag", 28);
|
|
19
|
+
} if (rf & 2) {
|
|
20
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
21
|
+
i0.ɵɵproperty("p-value", ctx_r1.environment);
|
|
22
|
+
} }
|
|
23
|
+
function PoPageLoginComponent_div_18_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
+
i0.ɵɵelement(0, "span", 31);
|
|
25
|
+
} if (rf & 2) {
|
|
26
|
+
const ctx_r13 = i0.ɵɵnextContext(2);
|
|
27
|
+
i0.ɵɵproperty("p-tooltip", ctx_r13.pageLoginLiterals.loginHint);
|
|
28
|
+
} }
|
|
29
|
+
function PoPageLoginComponent_div_18_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
+
i0.ɵɵelementStart(0, "div", 29);
|
|
31
|
+
i0.ɵɵtemplate(1, PoPageLoginComponent_div_18_span_1_Template, 1, 1, "span", 30);
|
|
32
|
+
i0.ɵɵelementEnd();
|
|
33
|
+
} if (rf & 2) {
|
|
34
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
35
|
+
i0.ɵɵclassProp("po-page-login-info-icon-container-dynamic", !ctx_r3.pageLoginLiterals.loginHint && !ctx_r3.pageLoginLiterals.rememberUserHint);
|
|
36
|
+
i0.ɵɵadvance(1);
|
|
37
|
+
i0.ɵɵproperty("ngIf", ctx_r3.pageLoginLiterals.loginHint);
|
|
38
|
+
} }
|
|
39
|
+
function PoPageLoginComponent_div_20_Template(rf, ctx) { if (rf & 1) {
|
|
40
|
+
i0.ɵɵelementStart(0, "div", 32);
|
|
41
|
+
i0.ɵɵelement(1, "span", 33);
|
|
42
|
+
i0.ɵɵelementStart(2, "span", 34);
|
|
43
|
+
i0.ɵɵtext(3);
|
|
44
|
+
i0.ɵɵelementEnd()();
|
|
45
|
+
} if (rf & 2) {
|
|
46
|
+
const error_r14 = ctx.$implicit;
|
|
47
|
+
i0.ɵɵadvance(3);
|
|
48
|
+
i0.ɵɵtextInterpolate(error_r14);
|
|
49
|
+
} }
|
|
50
|
+
function PoPageLoginComponent_div_24_po_page_login_popover_1_Template(rf, ctx) { if (rf & 1) {
|
|
51
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
52
|
+
i0.ɵɵelementStart(0, "po-page-login-popover", 37);
|
|
53
|
+
i0.ɵɵlistener("p-forgot-password", function PoPageLoginComponent_div_24_po_page_login_popover_1_Template_po_page_login_popover_p_forgot_password_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r16.openUrl($event)); });
|
|
54
|
+
i0.ɵɵelementEnd();
|
|
55
|
+
} if (rf & 2) {
|
|
56
|
+
const ctx_r15 = i0.ɵɵnextContext(2);
|
|
57
|
+
i0.ɵɵproperty("p-literals", ctx_r15.pageLoginLiterals)("p-recovery", ctx_r15.recovery)("p-remaining-attempts", ctx_r15.exceededAttemptsWarning);
|
|
58
|
+
} }
|
|
59
|
+
function PoPageLoginComponent_div_24_Template(rf, ctx) { if (rf & 1) {
|
|
60
|
+
i0.ɵɵelementStart(0, "div", 35);
|
|
61
|
+
i0.ɵɵtemplate(1, PoPageLoginComponent_div_24_po_page_login_popover_1_Template, 1, 3, "po-page-login-popover", 36);
|
|
62
|
+
i0.ɵɵelementEnd();
|
|
63
|
+
} if (rf & 2) {
|
|
64
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
65
|
+
i0.ɵɵadvance(1);
|
|
66
|
+
i0.ɵɵproperty("ngIf", ctx_r5.showExceededAttemptsWarning && ctx_r5.exceededAttemptsWarning);
|
|
67
|
+
} }
|
|
68
|
+
function PoPageLoginComponent_div_26_Template(rf, ctx) { if (rf & 1) {
|
|
69
|
+
i0.ɵɵelementStart(0, "div", 32);
|
|
70
|
+
i0.ɵɵelement(1, "span", 33);
|
|
71
|
+
i0.ɵɵelementStart(2, "span", 34);
|
|
72
|
+
i0.ɵɵtext(3);
|
|
73
|
+
i0.ɵɵelementEnd()();
|
|
74
|
+
} if (rf & 2) {
|
|
75
|
+
const error_r18 = ctx.$implicit;
|
|
76
|
+
i0.ɵɵadvance(3);
|
|
77
|
+
i0.ɵɵtextInterpolate(error_r18);
|
|
78
|
+
} }
|
|
79
|
+
function PoPageLoginComponent_po_input_27_Template(rf, ctx) { if (rf & 1) {
|
|
80
|
+
const _r20 = i0.ɵɵgetCurrentView();
|
|
81
|
+
i0.ɵɵelementStart(0, "po-input", 38);
|
|
82
|
+
i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_po_input_27_Template_po_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r19.customFieldObject.value = $event); })("keyup.enter", function PoPageLoginComponent_po_input_27_Template_po_input_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r21 = i0.ɵɵnextContext(); const _r2 = i0.ɵɵreference(13); return i0.ɵɵresetView(_r2.valid && ctx_r21.onLoginSubmit()); });
|
|
83
|
+
i0.ɵɵelementEnd();
|
|
84
|
+
} if (rf & 2) {
|
|
85
|
+
const ctx_r7 = i0.ɵɵnextContext();
|
|
86
|
+
i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx_r7.pageLoginLiterals.loginHint && !ctx_r7.pageLoginLiterals.rememberUserHint);
|
|
87
|
+
i0.ɵɵproperty("ngModel", ctx_r7.customFieldObject.value)("p-error-pattern", ctx_r7.customFieldObject.errorPattern || ctx_r7.pageLoginLiterals.customFieldErrorPattern)("p-pattern", ctx_r7.customFieldObject.pattern)("p-placeholder", ctx_r7.customFieldObject.placeholder || ctx_r7.pageLoginLiterals.customFieldPlaceholder);
|
|
88
|
+
} }
|
|
89
|
+
function PoPageLoginComponent_po_combo_28_Template(rf, ctx) { if (rf & 1) {
|
|
90
|
+
const _r23 = i0.ɵɵgetCurrentView();
|
|
91
|
+
i0.ɵɵelementStart(0, "po-combo", 39);
|
|
92
|
+
i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_po_combo_28_Template_po_combo_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r22 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r22.customFieldObject.value = $event); });
|
|
93
|
+
i0.ɵɵelementEnd();
|
|
94
|
+
} if (rf & 2) {
|
|
95
|
+
const ctx_r8 = i0.ɵɵnextContext();
|
|
96
|
+
i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx_r8.pageLoginLiterals.loginHint && !ctx_r8.pageLoginLiterals.rememberUserHint);
|
|
97
|
+
i0.ɵɵproperty("ngModel", ctx_r8.customFieldObject.value)("p-field-value", ctx_r8.customFieldObject.fieldValue)("p-filter-service", ctx_r8.customFieldObject.url)("p-placeholder", ctx_r8.customFieldObject.placeholder || ctx_r8.pageLoginLiterals.customFieldPlaceholder);
|
|
98
|
+
} }
|
|
99
|
+
function PoPageLoginComponent_po_select_29_Template(rf, ctx) { if (rf & 1) {
|
|
100
|
+
const _r25 = i0.ɵɵgetCurrentView();
|
|
101
|
+
i0.ɵɵelementStart(0, "po-select", 40);
|
|
102
|
+
i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_po_select_29_Template_po_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r24.customFieldObject.value = $event); });
|
|
103
|
+
i0.ɵɵelementEnd();
|
|
104
|
+
} if (rf & 2) {
|
|
105
|
+
const ctx_r9 = i0.ɵɵnextContext();
|
|
106
|
+
i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx_r9.pageLoginLiterals.loginHint && !ctx_r9.pageLoginLiterals.rememberUserHint);
|
|
107
|
+
i0.ɵɵproperty("ngModel", ctx_r9.customFieldObject.value)("p-placeholder", ctx_r9.customFieldObject.placeholder || ctx_r9.pageLoginLiterals.customFieldPlaceholder)("p-options", ctx_r9.customFieldObject.options);
|
|
108
|
+
} }
|
|
109
|
+
function PoPageLoginComponent_div_31_div_2_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
110
|
+
i0.ɵɵelement(0, "span", 31);
|
|
111
|
+
} if (rf & 2) {
|
|
112
|
+
const ctx_r27 = i0.ɵɵnextContext(3);
|
|
113
|
+
i0.ɵɵproperty("p-tooltip", ctx_r27.pageLoginLiterals.rememberUserHint);
|
|
114
|
+
} }
|
|
115
|
+
function PoPageLoginComponent_div_31_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
116
|
+
i0.ɵɵelementStart(0, "div", 43);
|
|
117
|
+
i0.ɵɵtemplate(1, PoPageLoginComponent_div_31_div_2_span_1_Template, 1, 1, "span", 30);
|
|
118
|
+
i0.ɵɵelementEnd();
|
|
119
|
+
} if (rf & 2) {
|
|
120
|
+
const ctx_r26 = i0.ɵɵnextContext(2);
|
|
121
|
+
i0.ɵɵclassProp("po-page-login-info-icon-container-dynamic", !ctx_r26.pageLoginLiterals.rememberUserHint);
|
|
122
|
+
i0.ɵɵadvance(1);
|
|
123
|
+
i0.ɵɵproperty("ngIf", ctx_r26.pageLoginLiterals.rememberUserHint);
|
|
124
|
+
} }
|
|
125
|
+
function PoPageLoginComponent_div_31_Template(rf, ctx) { if (rf & 1) {
|
|
126
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
127
|
+
i0.ɵɵelementStart(0, "div", 13)(1, "po-switch", 41);
|
|
128
|
+
i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_div_31_Template_po_switch_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r28.rememberUser = $event); })("keyup.enter", function PoPageLoginComponent_div_31_Template_po_switch_keyup_enter_1_listener() { i0.ɵɵrestoreView(_r29); const ctx_r30 = i0.ɵɵnextContext(); const _r2 = i0.ɵɵreference(13); return i0.ɵɵresetView(_r2.valid && ctx_r30.onLoginSubmit()); });
|
|
129
|
+
i0.ɵɵelementEnd();
|
|
130
|
+
i0.ɵɵtemplate(2, PoPageLoginComponent_div_31_div_2_Template, 2, 3, "div", 42);
|
|
131
|
+
i0.ɵɵelementEnd();
|
|
132
|
+
} if (rf & 2) {
|
|
133
|
+
const ctx_r10 = i0.ɵɵnextContext();
|
|
134
|
+
i0.ɵɵadvance(1);
|
|
135
|
+
i0.ɵɵproperty("ngModel", ctx_r10.rememberUser)("p-label-off", ctx_r10.pageLoginLiterals.rememberUser)("p-label-on", ctx_r10.pageLoginLiterals.rememberUser);
|
|
136
|
+
i0.ɵɵadvance(1);
|
|
137
|
+
i0.ɵɵproperty("ngIf", ctx_r10.pageLoginLiterals.loginHint || ctx_r10.pageLoginLiterals.rememberUserHint);
|
|
138
|
+
} }
|
|
139
|
+
function PoPageLoginComponent_div_33_Template(rf, ctx) { if (rf & 1) {
|
|
140
|
+
const _r32 = i0.ɵɵgetCurrentView();
|
|
141
|
+
i0.ɵɵelementStart(0, "div", 44)(1, "a", 45);
|
|
142
|
+
i0.ɵɵlistener("click", function PoPageLoginComponent_div_33_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r32); const ctx_r31 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r31.openUrl(ctx_r31.recovery)); });
|
|
143
|
+
i0.ɵɵtext(2);
|
|
144
|
+
i0.ɵɵelementEnd()();
|
|
145
|
+
} if (rf & 2) {
|
|
146
|
+
const ctx_r11 = i0.ɵɵnextContext();
|
|
147
|
+
i0.ɵɵadvance(2);
|
|
148
|
+
i0.ɵɵtextInterpolate(ctx_r11.pageLoginLiterals.forgotPassword);
|
|
149
|
+
} }
|
|
150
|
+
function PoPageLoginComponent_div_34_Template(rf, ctx) { if (rf & 1) {
|
|
151
|
+
const _r34 = i0.ɵɵgetCurrentView();
|
|
152
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "a", 45);
|
|
153
|
+
i0.ɵɵlistener("click", function PoPageLoginComponent_div_34_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r33.openUrl(ctx_r33.registerUrl)); });
|
|
154
|
+
i0.ɵɵtext(2);
|
|
155
|
+
i0.ɵɵelementEnd()();
|
|
156
|
+
} if (rf & 2) {
|
|
157
|
+
const ctx_r12 = i0.ɵɵnextContext();
|
|
158
|
+
i0.ɵɵadvance(2);
|
|
159
|
+
i0.ɵɵtextInterpolate(ctx_r12.pageLoginLiterals.registerUrl);
|
|
160
|
+
} }
|
|
161
|
+
/**
|
|
162
|
+
* @docsExtends PoPageLoginBaseComponent
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
*
|
|
166
|
+
* <example name="po-page-login-basic" title="PO Page Login Basic">
|
|
167
|
+
* <file name="sample-po-page-login-basic/sample-po-page-login-basic.component.html"> </file>
|
|
168
|
+
* <file name="sample-po-page-login-basic/sample-po-page-login-basic.component.ts"> </file>
|
|
169
|
+
* </example>
|
|
170
|
+
*
|
|
171
|
+
* <example name="po-page-login-labs" title="PO Page Login Labs">
|
|
172
|
+
* <file name="sample-po-page-login-labs/sample-po-page-login-labs.component.html"> </file>
|
|
173
|
+
* <file name="sample-po-page-login-labs/sample-po-page-login-labs.component.ts"> </file>
|
|
174
|
+
* </example>
|
|
175
|
+
*
|
|
176
|
+
* <example name="po-page-login-human-resources" title="PO Page Login - Human Resources">
|
|
177
|
+
* <file name="sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.html"> </file>
|
|
178
|
+
* <file name="sample-po-page-login-human-resources/sample-po-page-login-human-resources.component.ts"> </file>
|
|
179
|
+
* <file name="sample-po-page-login-human-resources/sample-po-page-login-human-resources.module.ts"> </file>
|
|
180
|
+
* </example>
|
|
181
|
+
*
|
|
182
|
+
* <example name="po-page-login-automatic-service" title="PO Page Login - Automatic Service">
|
|
183
|
+
* <file name="sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.html"> </file>
|
|
184
|
+
* <file name="sample-po-page-login-automatic-service/sample-po-page-login-automatic-service.component.ts"> </file>
|
|
185
|
+
* </example>
|
|
186
|
+
*/
|
|
187
|
+
export class PoPageLoginComponent extends PoPageLoginBaseComponent {
|
|
188
|
+
constructor(changeDetector, activatedRoute, poComponentInjector, differs, loginService, router, poLanguageService) {
|
|
189
|
+
super(loginService, router, poLanguageService);
|
|
190
|
+
this.changeDetector = changeDetector;
|
|
191
|
+
this.activatedRoute = activatedRoute;
|
|
192
|
+
this.poComponentInjector = poComponentInjector;
|
|
193
|
+
this.componentRef = null;
|
|
194
|
+
this.customPasswordError = { custom: false };
|
|
195
|
+
this.differ = differs.find([]).create(null);
|
|
196
|
+
}
|
|
197
|
+
ngAfterViewChecked() {
|
|
198
|
+
if (this.differ) {
|
|
199
|
+
this.validateArrayChanges(this.differ, [
|
|
200
|
+
{ array: this.loginErrors, callback: this.generateLoginError.bind(this) },
|
|
201
|
+
{ array: this.passwordErrors, callback: this.generatePasswordError.bind(this) }
|
|
202
|
+
]);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
ngOnInit() {
|
|
206
|
+
this.checkingForRouteMetadata(this.activatedRoute.snapshot.data);
|
|
207
|
+
this.selectedLanguage = this.initializeLanguage();
|
|
208
|
+
this.initialSelectLanguage = this.selectedLanguage;
|
|
209
|
+
}
|
|
210
|
+
activateSupport() {
|
|
211
|
+
switch (typeof this.support) {
|
|
212
|
+
case 'string': {
|
|
213
|
+
this.setUrlRedirect(this.support);
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
case 'function': {
|
|
217
|
+
this.support();
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
changeLoginModel() {
|
|
223
|
+
if (this.authenticationUrl) {
|
|
224
|
+
this.loginErrors = [];
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
this.setLoginErrors(this.loginErrors);
|
|
228
|
+
this.loginChange.emit(this.login);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
changePasswordModel() {
|
|
232
|
+
if (this.authenticationUrl) {
|
|
233
|
+
this.passwordErrors = [];
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
this.setPasswordErrors(this.passwordErrors);
|
|
237
|
+
this.passwordChange.emit(this.password);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
onSelectedLanguage(language) {
|
|
241
|
+
this.languageChange.emit(this.languagesList.find(languageItem => languageItem.language === language));
|
|
242
|
+
this.selectedLanguage = language;
|
|
243
|
+
}
|
|
244
|
+
openUrl(recovery) {
|
|
245
|
+
switch (typeof recovery) {
|
|
246
|
+
case 'string': {
|
|
247
|
+
this.setUrlRedirect(recovery);
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
case 'function': {
|
|
251
|
+
recovery();
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
case 'object': {
|
|
255
|
+
this.createModalPasswordRecoveryComponent(recovery);
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
concatenateLoginHintWithContactEmail(contactEmail) {
|
|
261
|
+
const defaultLoginHintLiteral = poPageLoginLiteralsDefault[this.language].loginHint;
|
|
262
|
+
const prepositionLiteral = poPageLoginLiteralIn[this.language];
|
|
263
|
+
return this.concatenateLiteral(contactEmail, 'loginHint', defaultLoginHintLiteral, prepositionLiteral);
|
|
264
|
+
}
|
|
265
|
+
setLoginErrors(errors) {
|
|
266
|
+
const control = this.loginForm.form.controls['login'];
|
|
267
|
+
this.setControlErrors('allLoginErrors', control, errors, this.pageLoginLiterals.loginErrorPattern);
|
|
268
|
+
}
|
|
269
|
+
setPasswordErrors(errors) {
|
|
270
|
+
const control = this.loginForm.form.controls['password'];
|
|
271
|
+
this.setControlErrors('allPasswordErrors', control, errors, this.pageLoginLiterals.passwordErrorPattern);
|
|
272
|
+
}
|
|
273
|
+
checkingForMetadataProperty(object, property) {
|
|
274
|
+
if (Object.prototype.hasOwnProperty.call(object, property)) {
|
|
275
|
+
return object[property];
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
checkingForRouteMetadata(data) {
|
|
279
|
+
if (Object.keys(data).length !== 0) {
|
|
280
|
+
this.authenticationUrl = this.checkingForMetadataProperty(data, 'serviceApi') || this.authenticationUrl;
|
|
281
|
+
this.authenticationType = this.checkingForMetadataProperty(data, 'authenticationType') || this.authenticationType;
|
|
282
|
+
this.environment = this.checkingForMetadataProperty(data, 'environment') || this.environment;
|
|
283
|
+
this.recovery = this.checkingForMetadataProperty(data, 'recovery') || this.recovery;
|
|
284
|
+
this.registerUrl = this.checkingForMetadataProperty(data, 'registerUrl') || this.registerUrl;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
concatenate(defaultLiteral, prefixLiteral, value) {
|
|
288
|
+
return `${defaultLiteral} ${prefixLiteral} ${value}`;
|
|
289
|
+
}
|
|
290
|
+
concatenateLiteral(value, literal, defaultLiteral, prepositionLiteral) {
|
|
291
|
+
return { [literal]: this.concatenate(defaultLiteral, prepositionLiteral, value) };
|
|
292
|
+
}
|
|
293
|
+
createModalPasswordRecoveryComponent(poPageLoginRecovery) {
|
|
294
|
+
if (this.componentRef) {
|
|
295
|
+
this.poComponentInjector.destroyComponentInApplication(this.componentRef);
|
|
296
|
+
}
|
|
297
|
+
this.componentRef = this.poComponentInjector.createComponentInApplication(PoModalPasswordRecoveryComponent);
|
|
298
|
+
this.componentRef.instance.urlRecovery = poPageLoginRecovery.url;
|
|
299
|
+
this.componentRef.instance.contactEmail = poPageLoginRecovery.contactMail;
|
|
300
|
+
this.componentRef.instance.phoneMask = poPageLoginRecovery.phoneMask;
|
|
301
|
+
this.componentRef.instance.type = poPageLoginRecovery.type || PoModalPasswordRecoveryType.Email;
|
|
302
|
+
this.componentRef.changeDetectorRef.detectChanges();
|
|
303
|
+
setTimeout(() => {
|
|
304
|
+
this.componentRef.instance.open();
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
generateLoginError() {
|
|
308
|
+
if (this.loginErrors && this.loginErrors.length) {
|
|
309
|
+
this.setLoginErrors(this.loginErrors);
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
const control = this.loginForm.form.controls['login'];
|
|
313
|
+
if (control) {
|
|
314
|
+
this.resetControl(control);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
generatePasswordError() {
|
|
319
|
+
if (this.passwordErrors && this.passwordErrors.length) {
|
|
320
|
+
this.setPasswordErrors(this.passwordErrors);
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
const control = this.loginForm.form.controls['password'];
|
|
324
|
+
if (control) {
|
|
325
|
+
this.resetControl(control);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
resetControl(control) {
|
|
330
|
+
control.markAsPristine();
|
|
331
|
+
control.markAsUntouched();
|
|
332
|
+
control.updateValueAndValidity();
|
|
333
|
+
}
|
|
334
|
+
setControlErrors(allErrors, control, errors, patternError) {
|
|
335
|
+
if (control) {
|
|
336
|
+
this[allErrors] = control.hasError('pattern') ? [...errors, ...[patternError]] : [...errors];
|
|
337
|
+
if (errors && errors.length && (control.valid || control.pristine)) {
|
|
338
|
+
control.markAsTouched();
|
|
339
|
+
control.markAsDirty();
|
|
340
|
+
control.setErrors(this.customPasswordError);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
setUrlRedirect(url) {
|
|
345
|
+
isExternalLink(url) ? window.open(url, '_blank') : this.router.navigate([url]);
|
|
346
|
+
}
|
|
347
|
+
validateArrayChanges(differ, array) {
|
|
348
|
+
array.forEach(element => {
|
|
349
|
+
const changes = differ.diff(element.array);
|
|
350
|
+
if (changes) {
|
|
351
|
+
element.callback();
|
|
352
|
+
this.changeDetector.detectChanges();
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
initializeLanguage() {
|
|
357
|
+
const language = this.languagesList.find(languageItem => languageItem.language === this.language);
|
|
358
|
+
return language?.language || this.languagesList[0].language;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
PoPageLoginComponent.ɵfac = function PoPageLoginComponent_Factory(t) { return new (t || PoPageLoginComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.PoComponentInjectorService), i0.ɵɵdirectiveInject(i0.IterableDiffers), i0.ɵɵdirectiveInject(i3.PoPageLoginService), i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.PoLanguageService)); };
|
|
362
|
+
PoPageLoginComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoPageLoginComponent, selectors: [["po-page-login"]], viewQuery: function PoPageLoginComponent_Query(rf, ctx) { if (rf & 1) {
|
|
363
|
+
i0.ɵɵviewQuery(_c0, 7, NgForm);
|
|
364
|
+
i0.ɵɵviewQuery(_c1, 7, ViewContainerRef);
|
|
365
|
+
} if (rf & 2) {
|
|
366
|
+
let _t;
|
|
367
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loginForm = _t.first);
|
|
368
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pageLogin = _t.first);
|
|
369
|
+
} }, features: [i0.ɵɵInheritDefinitionFeature], decls: 35, vars: 39, consts: [[1, "po-page-login-support", 3, "hidden", "click"], [1, "po-icon", "po-icon-help"], [3, "p-show-select-language", "p-languages", "p-initial-language", "p-background", "p-highlight-info", "p-logo", "p-secondary-logo", "p-selected-language"], ["pageLogin", ""], [1, "po-page-login-header"], [1, "po-mb-md-4", "po-mb-sm-1"], [1, "po-page-login-header-product-name"], ["p-type", "warning", 3, "p-value", 4, "ngIf"], [1, "po-page-login-header-welcome", "po-mb-md-4", "po-mb-sm-2"], [1, "po-page-login-form"], ["loginForm", "ngForm"], [1, "po-row"], [1, "po-lg-12"], [1, "po-page-login-hint", "po-page-login-info-container"], ["name", "login", "p-auto-focus", "", "p-required", "", 1, "po-page-login-info-field", 3, "ngModel", "p-label", "p-pattern", "p-placeholder", "ngModelChange", "click", "keyup.enter", "p-change-model"], ["class", "po-page-login-info-icon-container", 3, "po-page-login-info-icon-container-dynamic", 4, "ngIf"], [1, "po-field-container-bottom", "po-field-container-error-container"], ["class", "po-field-container-bottom-text-error po-field-container-error-item", 4, "ngFor", "ngForOf"], [1, "po-page-login-password-container"], ["name", "password", "p-required", "", 1, "po-page-login-field-size", "po-page-login-password-item", 3, "ngModel", "p-label", "p-pattern", "p-placeholder", "ngModelChange", "click", "keyup.enter", "p-change-model"], ["class", "po-page-login-password-item po-page-login-password-popover-container", 4, "ngIf"], ["class", "po-page-login-field-size po-lg-12", "name", "customFieldInput", "p-required", "", 3, "po-page-login-field-size-dynamic", "ngModel", "p-error-pattern", "p-pattern", "p-placeholder", "ngModelChange", "keyup.enter", 4, "ngIf"], ["class", "po-page-login-field-size po-lg-12", "name", "customFieldCombo", "p-required", "", 3, "po-page-login-field-size-dynamic", "ngModel", "p-field-value", "p-filter-service", "p-placeholder", "ngModelChange", 4, "ngIf"], ["class", "po-page-login-field-size po-lg-12", "name", "customFieldSelect", "p-required", "", 3, "po-page-login-field-size-dynamic", "ngModel", "p-placeholder", "p-options", "ngModelChange", 4, "ngIf"], ["class", "po-page-login-hint po-page-login-info-container", 4, "ngIf"], ["p-kind", "primary", 1, "po-lg-12", "po-page-login-button", "po-page-login-field-size", 3, "p-disabled", "p-label", "p-loading", "p-click"], ["class", "po-page-login-recovery-link", 4, "ngIf"], ["class", "po-page-login-register-link", 4, "ngIf"], ["p-type", "warning", 3, "p-value"], [1, "po-page-login-info-icon-container"], ["class", "po-icon po-field-icon po-icon-info", "p-tooltip-position", "right", 3, "p-tooltip", 4, "ngIf"], ["p-tooltip-position", "right", 1, "po-icon", "po-field-icon", "po-icon-info", 3, "p-tooltip"], [1, "po-field-container-bottom-text-error", "po-field-container-error-item"], [1, "po-icon", "po-icon-exclamation"], [1, "po-field-container-error-text"], [1, "po-page-login-password-item", "po-page-login-password-popover-container"], [3, "p-literals", "p-recovery", "p-remaining-attempts", "p-forgot-password", 4, "ngIf"], [3, "p-literals", "p-recovery", "p-remaining-attempts", "p-forgot-password"], ["name", "customFieldInput", "p-required", "", 1, "po-page-login-field-size", "po-lg-12", 3, "ngModel", "p-error-pattern", "p-pattern", "p-placeholder", "ngModelChange", "keyup.enter"], ["name", "customFieldCombo", "p-required", "", 1, "po-page-login-field-size", "po-lg-12", 3, "ngModel", "p-field-value", "p-filter-service", "p-placeholder", "ngModelChange"], ["name", "customFieldSelect", "p-required", "", 1, "po-page-login-field-size", "po-lg-12", 3, "ngModel", "p-placeholder", "p-options", "ngModelChange"], ["name", "rememberUser", "p-label-position", "1", 1, "po-page-login-info-field", "po-lg-7", "po-offset-lg-5", "po-offset-xl-5", 3, "ngModel", "p-label-off", "p-label-on", "ngModelChange", "keyup.enter"], ["class", "po-page-login-info-icon-container po-page-login-info-icon-remember-user", 3, "po-page-login-info-icon-container-dynamic", 4, "ngIf"], [1, "po-page-login-info-icon-container", "po-page-login-info-icon-remember-user"], [1, "po-page-login-recovery-link"], [1, "po-font-text-large-bold", 3, "click"], [1, "po-page-login-register-link"]], template: function PoPageLoginComponent_Template(rf, ctx) { if (rf & 1) {
|
|
370
|
+
const _r35 = i0.ɵɵgetCurrentView();
|
|
371
|
+
i0.ɵɵelementStart(0, "button", 0);
|
|
372
|
+
i0.ɵɵlistener("click", function PoPageLoginComponent_Template_button_click_0_listener() { return ctx.activateSupport(); });
|
|
373
|
+
i0.ɵɵelement(1, "span", 1);
|
|
374
|
+
i0.ɵɵtext(2);
|
|
375
|
+
i0.ɵɵelementEnd();
|
|
376
|
+
i0.ɵɵelementStart(3, "po-page-background", 2, 3);
|
|
377
|
+
i0.ɵɵlistener("p-selected-language", function PoPageLoginComponent_Template_po_page_background_p_selected_language_3_listener($event) { return ctx.onSelectedLanguage($event); });
|
|
378
|
+
i0.ɵɵelementStart(5, "header", 4)(6, "h1", 5)(7, "div", 6);
|
|
379
|
+
i0.ɵɵtext(8);
|
|
380
|
+
i0.ɵɵelementEnd();
|
|
381
|
+
i0.ɵɵtemplate(9, PoPageLoginComponent_po_tag_9_Template, 1, 1, "po-tag", 7);
|
|
382
|
+
i0.ɵɵelementEnd();
|
|
383
|
+
i0.ɵɵelementStart(10, "div", 8);
|
|
384
|
+
i0.ɵɵtext(11);
|
|
385
|
+
i0.ɵɵelementEnd()();
|
|
386
|
+
i0.ɵɵelementStart(12, "form", 9, 10)(14, "div", 11)(15, "div", 12)(16, "div", 13)(17, "po-login", 14);
|
|
387
|
+
i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_Template_po_login_ngModelChange_17_listener($event) { return ctx.login = $event; })("click", function PoPageLoginComponent_Template_po_login_click_17_listener() { return ctx.closePopover(); })("keyup.enter", function PoPageLoginComponent_Template_po_login_keyup_enter_17_listener() { i0.ɵɵrestoreView(_r35); const _r2 = i0.ɵɵreference(13); return i0.ɵɵresetView(_r2.valid && ctx.onLoginSubmit()); })("p-change-model", function PoPageLoginComponent_Template_po_login_p_change_model_17_listener() { return ctx.changeLoginModel(); });
|
|
388
|
+
i0.ɵɵelementEnd();
|
|
389
|
+
i0.ɵɵtemplate(18, PoPageLoginComponent_div_18_Template, 2, 3, "div", 15);
|
|
390
|
+
i0.ɵɵelementEnd();
|
|
391
|
+
i0.ɵɵelementStart(19, "div", 16);
|
|
392
|
+
i0.ɵɵtemplate(20, PoPageLoginComponent_div_20_Template, 4, 1, "div", 17);
|
|
393
|
+
i0.ɵɵelementEnd()();
|
|
394
|
+
i0.ɵɵelementStart(21, "div", 12)(22, "div", 18)(23, "po-password", 19);
|
|
395
|
+
i0.ɵɵlistener("ngModelChange", function PoPageLoginComponent_Template_po_password_ngModelChange_23_listener($event) { return ctx.password = $event; })("click", function PoPageLoginComponent_Template_po_password_click_23_listener() { return ctx.closePopover(); })("keyup.enter", function PoPageLoginComponent_Template_po_password_keyup_enter_23_listener() { i0.ɵɵrestoreView(_r35); const _r2 = i0.ɵɵreference(13); return i0.ɵɵresetView(_r2.valid && ctx.onLoginSubmit()); })("p-change-model", function PoPageLoginComponent_Template_po_password_p_change_model_23_listener() { return ctx.changePasswordModel(); });
|
|
396
|
+
i0.ɵɵelementEnd();
|
|
397
|
+
i0.ɵɵtemplate(24, PoPageLoginComponent_div_24_Template, 2, 1, "div", 20);
|
|
398
|
+
i0.ɵɵelementEnd();
|
|
399
|
+
i0.ɵɵelementStart(25, "div", 16);
|
|
400
|
+
i0.ɵɵtemplate(26, PoPageLoginComponent_div_26_Template, 4, 1, "div", 17);
|
|
401
|
+
i0.ɵɵelementEnd()();
|
|
402
|
+
i0.ɵɵtemplate(27, PoPageLoginComponent_po_input_27_Template, 1, 6, "po-input", 21);
|
|
403
|
+
i0.ɵɵtemplate(28, PoPageLoginComponent_po_combo_28_Template, 1, 6, "po-combo", 22);
|
|
404
|
+
i0.ɵɵtemplate(29, PoPageLoginComponent_po_select_29_Template, 1, 5, "po-select", 23);
|
|
405
|
+
i0.ɵɵelementStart(30, "div", 12);
|
|
406
|
+
i0.ɵɵtemplate(31, PoPageLoginComponent_div_31_Template, 3, 4, "div", 24);
|
|
407
|
+
i0.ɵɵelementEnd();
|
|
408
|
+
i0.ɵɵelementStart(32, "po-button", 25);
|
|
409
|
+
i0.ɵɵlistener("p-click", function PoPageLoginComponent_Template_po_button_p_click_32_listener() { return ctx.onLoginSubmit(); });
|
|
410
|
+
i0.ɵɵelementEnd();
|
|
411
|
+
i0.ɵɵtemplate(33, PoPageLoginComponent_div_33_Template, 3, 1, "div", 26);
|
|
412
|
+
i0.ɵɵtemplate(34, PoPageLoginComponent_div_34_Template, 3, 1, "div", 27);
|
|
413
|
+
i0.ɵɵelementEnd()()();
|
|
414
|
+
} if (rf & 2) {
|
|
415
|
+
const _r2 = i0.ɵɵreference(13);
|
|
416
|
+
i0.ɵɵproperty("hidden", !ctx.support);
|
|
417
|
+
i0.ɵɵadvance(2);
|
|
418
|
+
i0.ɵɵtextInterpolate1(" ", ctx.pageLoginLiterals == null ? null : ctx.pageLoginLiterals.support, "\n");
|
|
419
|
+
i0.ɵɵadvance(1);
|
|
420
|
+
i0.ɵɵproperty("p-show-select-language", ctx.showLanguage)("p-languages", ctx.languagesList)("p-initial-language", ctx.initialSelectLanguage)("p-background", ctx.background)("p-highlight-info", ctx.pageLoginLiterals.highlightInfo)("p-logo", ctx.logo)("p-secondary-logo", ctx.secondaryLogo);
|
|
421
|
+
i0.ɵɵadvance(5);
|
|
422
|
+
i0.ɵɵtextInterpolate(ctx.productName);
|
|
423
|
+
i0.ɵɵadvance(1);
|
|
424
|
+
i0.ɵɵproperty("ngIf", ctx.environment);
|
|
425
|
+
i0.ɵɵadvance(2);
|
|
426
|
+
i0.ɵɵtextInterpolate(ctx.pageLoginLiterals.welcome);
|
|
427
|
+
i0.ɵɵadvance(6);
|
|
428
|
+
i0.ɵɵclassProp("po-page-login-info-field-dynamic", !ctx.pageLoginLiterals.loginHint && !ctx.pageLoginLiterals.rememberUserHint);
|
|
429
|
+
i0.ɵɵproperty("ngModel", ctx.login)("p-label", ctx.pageLoginLiterals.loginLabel)("p-pattern", ctx.loginPattern)("p-placeholder", ctx.pageLoginLiterals.loginPlaceholder);
|
|
430
|
+
i0.ɵɵadvance(1);
|
|
431
|
+
i0.ɵɵproperty("ngIf", ctx.pageLoginLiterals.loginHint || ctx.pageLoginLiterals.rememberUserHint);
|
|
432
|
+
i0.ɵɵadvance(2);
|
|
433
|
+
i0.ɵɵproperty("ngForOf", ctx.allLoginErrors);
|
|
434
|
+
i0.ɵɵadvance(3);
|
|
435
|
+
i0.ɵɵclassProp("po-page-login-field-size-dynamic", !ctx.pageLoginLiterals.loginHint && !ctx.pageLoginLiterals.rememberUserHint);
|
|
436
|
+
i0.ɵɵproperty("ngModel", ctx.password)("p-label", ctx.pageLoginLiterals.passwordLabel)("p-pattern", ctx.passwordPattern)("p-placeholder", ctx.pageLoginLiterals.passwordPlaceholder);
|
|
437
|
+
i0.ɵɵadvance(1);
|
|
438
|
+
i0.ɵɵproperty("ngIf", ctx.pageLoginLiterals.loginHint || ctx.pageLoginLiterals.rememberUserHint);
|
|
439
|
+
i0.ɵɵadvance(2);
|
|
440
|
+
i0.ɵɵproperty("ngForOf", ctx.allPasswordErrors);
|
|
441
|
+
i0.ɵɵadvance(1);
|
|
442
|
+
i0.ɵɵproperty("ngIf", ctx.customField && ctx.customFieldType === "input");
|
|
443
|
+
i0.ɵɵadvance(1);
|
|
444
|
+
i0.ɵɵproperty("ngIf", ctx.customField && ctx.customFieldType === "combo");
|
|
445
|
+
i0.ɵɵadvance(1);
|
|
446
|
+
i0.ɵɵproperty("ngIf", ctx.customField && ctx.customFieldType === "select");
|
|
447
|
+
i0.ɵɵadvance(2);
|
|
448
|
+
i0.ɵɵproperty("ngIf", !ctx.hideRememberUser);
|
|
449
|
+
i0.ɵɵadvance(1);
|
|
450
|
+
i0.ɵɵclassProp("po-page-login-button-dynamic", !ctx.pageLoginLiterals.loginHint && !ctx.pageLoginLiterals.rememberUserHint);
|
|
451
|
+
i0.ɵɵproperty("p-disabled", _r2.invalid)("p-label", ctx.loading ? ctx.pageLoginLiterals.submittedLabel : ctx.pageLoginLiterals.submitLabel)("p-loading", ctx.loading);
|
|
452
|
+
i0.ɵɵadvance(1);
|
|
453
|
+
i0.ɵɵproperty("ngIf", ctx.recovery);
|
|
454
|
+
i0.ɵɵadvance(1);
|
|
455
|
+
i0.ɵɵproperty("ngIf", ctx.registerUrl);
|
|
456
|
+
} }, dependencies: [i4.NgForOf, i4.NgIf, i5.ɵNgNoValidate, i5.NgControlStatus, i5.NgControlStatusGroup, i5.NgModel, i5.NgForm, i6.PoPageBackgroundComponent, i2.PoButtonComponent, i2.PoComboComponent, i2.PoInputComponent, i2.PoLoginComponent, i2.PoPasswordComponent, i2.PoSelectComponent, i2.PoSwitchComponent, i2.PoTagComponent, i2.PoTooltipDirective, i7.PoPageLoginPopoverComponent], encapsulation: 2 });
|
|
457
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoPageLoginComponent, [{
|
|
458
|
+
type: Component,
|
|
459
|
+
args: [{ selector: 'po-page-login', template: "<button class=\"po-page-login-support\" (click)=\"activateSupport()\" [hidden]=\"!support\">\r\n <span class=\"po-icon po-icon-help\"></span>\r\n {{ pageLoginLiterals?.support }}\r\n</button>\r\n\r\n<po-page-background\r\n #pageLogin\r\n [p-show-select-language]=\"showLanguage\"\r\n [p-languages]=\"languagesList\"\r\n [p-initial-language]=\"initialSelectLanguage\"\r\n [p-background]=\"background\"\r\n [p-highlight-info]=\"pageLoginLiterals.highlightInfo\"\r\n [p-logo]=\"logo\"\r\n [p-secondary-logo]=\"secondaryLogo\"\r\n (p-selected-language)=\"onSelectedLanguage($event)\"\r\n>\r\n <header class=\"po-page-login-header\">\r\n <h1 class=\"po-mb-md-4 po-mb-sm-1\">\r\n <div class=\"po-page-login-header-product-name\">{{ productName }}</div>\r\n <po-tag *ngIf=\"environment\" p-type=\"warning\" [p-value]=\"environment\"> </po-tag>\r\n </h1>\r\n <div class=\"po-page-login-header-welcome po-mb-md-4 po-mb-sm-2\">{{ pageLoginLiterals.welcome }}</div>\r\n </header>\r\n\r\n <form #loginForm=\"ngForm\" class=\"po-page-login-form\">\r\n <div class=\"po-row\">\r\n <div class=\"po-lg-12\">\r\n <div class=\"po-page-login-hint po-page-login-info-container\">\r\n <po-login\r\n class=\"po-page-login-info-field\"\r\n [class.po-page-login-info-field-dynamic]=\"\r\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\r\n \"\r\n name=\"login\"\r\n [(ngModel)]=\"login\"\r\n p-auto-focus\r\n p-required\r\n [p-label]=\"pageLoginLiterals.loginLabel\"\r\n [p-pattern]=\"loginPattern\"\r\n [p-placeholder]=\"pageLoginLiterals.loginPlaceholder\"\r\n (click)=\"closePopover()\"\r\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\r\n (p-change-model)=\"changeLoginModel()\"\r\n >\r\n </po-login>\r\n\r\n <div\r\n *ngIf=\"pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint\"\r\n class=\"po-page-login-info-icon-container\"\r\n [class.po-page-login-info-icon-container-dynamic]=\"\r\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\r\n \"\r\n >\r\n <span\r\n *ngIf=\"pageLoginLiterals.loginHint\"\r\n class=\"po-icon po-field-icon po-icon-info\"\r\n p-tooltip-position=\"right\"\r\n [p-tooltip]=\"pageLoginLiterals.loginHint\"\r\n >\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"po-field-container-bottom po-field-container-error-container\">\r\n <div\r\n *ngFor=\"let error of allLoginErrors\"\r\n class=\"po-field-container-bottom-text-error po-field-container-error-item\"\r\n >\r\n <span class=\"po-icon po-icon-exclamation\"></span>\r\n <span class=\"po-field-container-error-text\">{{ error }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"po-lg-12\">\r\n <div class=\"po-page-login-password-container\">\r\n <po-password\r\n class=\"po-page-login-field-size po-page-login-password-item\"\r\n [class.po-page-login-field-size-dynamic]=\"\r\n !pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\r\n \"\r\n name=\"password\"\r\n [(ngModel)]=\"password\"\r\n p-required\r\n [p-label]=\"pageLoginLiterals.passwordLabel\"\r\n [p-pattern]=\"passwordPattern\"\r\n [p-placeholder]=\"pageLoginLiterals.passwordPlaceholder\"\r\n (click)=\"closePopover()\"\r\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\r\n (p-change-model)=\"changePasswordModel()\"\r\n >\r\n </po-password>\r\n <div\r\n *ngIf=\"pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint\"\r\n class=\"po-page-login-password-item po-page-login-password-popover-container\"\r\n >\r\n <po-page-login-popover\r\n *ngIf=\"showExceededAttemptsWarning && exceededAttemptsWarning\"\r\n [p-literals]=\"pageLoginLiterals\"\r\n [p-recovery]=\"recovery\"\r\n [p-remaining-attempts]=\"exceededAttemptsWarning\"\r\n (p-forgot-password)=\"openUrl($event)\"\r\n >\r\n </po-page-login-popover>\r\n </div>\r\n </div>\r\n <div class=\"po-field-container-bottom po-field-container-error-container\">\r\n <div\r\n *ngFor=\"let error of allPasswordErrors\"\r\n class=\"po-field-container-bottom-text-error po-field-container-error-item\"\r\n >\r\n <span class=\"po-icon po-icon-exclamation\"></span>\r\n <span class=\"po-field-container-error-text\">{{ error }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <po-input\r\n *ngIf=\"customField && customFieldType === 'input'\"\r\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\r\n class=\"po-page-login-field-size po-lg-12\"\r\n name=\"customFieldInput\"\r\n [(ngModel)]=\"customFieldObject.value\"\r\n p-required\r\n [p-error-pattern]=\"customFieldObject.errorPattern || pageLoginLiterals.customFieldErrorPattern\"\r\n [p-pattern]=\"customFieldObject.pattern\"\r\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\r\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\r\n >\r\n </po-input>\r\n\r\n <po-combo\r\n *ngIf=\"customField && customFieldType === 'combo'\"\r\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\r\n class=\"po-page-login-field-size po-lg-12\"\r\n name=\"customFieldCombo\"\r\n [(ngModel)]=\"customFieldObject.value\"\r\n p-required\r\n [p-field-value]=\"customFieldObject.fieldValue\"\r\n [p-filter-service]=\"customFieldObject.url\"\r\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\r\n >\r\n </po-combo>\r\n\r\n <po-select\r\n *ngIf=\"customField && customFieldType === 'select'\"\r\n [class.po-page-login-field-size-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\r\n class=\"po-page-login-field-size po-lg-12\"\r\n name=\"customFieldSelect\"\r\n [(ngModel)]=\"customFieldObject.value\"\r\n p-required\r\n [p-placeholder]=\"customFieldObject.placeholder || pageLoginLiterals.customFieldPlaceholder\"\r\n [p-options]=\"customFieldObject.options\"\r\n >\r\n </po-select>\r\n\r\n <div class=\"po-lg-12\">\r\n <div *ngIf=\"!hideRememberUser\" class=\"po-page-login-hint po-page-login-info-container\">\r\n <po-switch\r\n class=\"po-page-login-info-field po-lg-7 po-offset-lg-5 po-offset-xl-5\"\r\n name=\"rememberUser\"\r\n [(ngModel)]=\"rememberUser\"\r\n p-label-position=\"1\"\r\n [p-label-off]=\"pageLoginLiterals.rememberUser\"\r\n [p-label-on]=\"pageLoginLiterals.rememberUser\"\r\n (keyup.enter)=\"loginForm.valid && onLoginSubmit()\"\r\n >\r\n </po-switch>\r\n\r\n <div\r\n *ngIf=\"pageLoginLiterals.loginHint || pageLoginLiterals.rememberUserHint\"\r\n class=\"po-page-login-info-icon-container po-page-login-info-icon-remember-user\"\r\n [class.po-page-login-info-icon-container-dynamic]=\"!pageLoginLiterals.rememberUserHint\"\r\n >\r\n <span\r\n *ngIf=\"pageLoginLiterals.rememberUserHint\"\r\n class=\"po-icon po-field-icon po-icon-info\"\r\n p-tooltip-position=\"right\"\r\n [p-tooltip]=\"pageLoginLiterals.rememberUserHint\"\r\n >\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <po-button\r\n [class.po-page-login-button-dynamic]=\"!pageLoginLiterals.loginHint && !pageLoginLiterals.rememberUserHint\"\r\n class=\"po-lg-12 po-page-login-button po-page-login-field-size\"\r\n p-kind=\"primary\"\r\n [p-disabled]=\"loginForm.invalid\"\r\n [p-label]=\"loading ? pageLoginLiterals.submittedLabel : pageLoginLiterals.submitLabel\"\r\n [p-loading]=\"loading\"\r\n (p-click)=\"onLoginSubmit()\"\r\n >\r\n </po-button>\r\n\r\n <div *ngIf=\"recovery\" class=\"po-page-login-recovery-link\">\r\n <a class=\"po-font-text-large-bold\" (click)=\"openUrl(recovery)\">{{ pageLoginLiterals.forgotPassword }}</a>\r\n </div>\r\n\r\n <div *ngIf=\"registerUrl\" class=\"po-page-login-register-link\">\r\n <a class=\"po-font-text-large-bold\" (click)=\"openUrl(registerUrl)\">{{ pageLoginLiterals.registerUrl }}</a>\r\n </div>\r\n </div>\r\n </form>\r\n</po-page-background>\r\n" }]
|
|
460
|
+
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ActivatedRoute }, { type: i2.PoComponentInjectorService }, { type: i0.IterableDiffers }, { type: i3.PoPageLoginService }, { type: i1.Router }, { type: i2.PoLanguageService }]; }, { loginForm: [{
|
|
461
|
+
type: ViewChild,
|
|
462
|
+
args: ['loginForm', { read: NgForm, static: true }]
|
|
463
|
+
}], pageLogin: [{
|
|
464
|
+
type: ViewChild,
|
|
465
|
+
args: ['pageLogin', { read: ViewContainerRef, static: true }]
|
|
466
|
+
}] }); })();
|
|
467
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtbG9naW4vcG8tcGFnZS1sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtbG9naW4vcG8tcGFnZS1sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFHTCxTQUFTLEVBSVQsU0FBUyxFQUNULGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHbEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDdEgsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDdkgsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzNCLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7OztJQ0xsQyw2QkFBK0U7OztJQUFsQyw0Q0FBdUI7OztJQWtDOUQsMkJBTU87OztJQUZMLCtEQUF5Qzs7O0lBWDdDLCtCQU1DO0lBQ0MsK0VBTU87SUFDVCxpQkFBTTs7O0lBWEosOElBRUM7SUFHRSxlQUFpQztJQUFqQyx5REFBaUM7OztJQVV0QywrQkFHQztJQUNDLDJCQUFpRDtJQUNqRCxnQ0FBNEM7SUFBQSxZQUFXO0lBQUEsaUJBQU8sRUFBQTs7O0lBQWxCLGVBQVc7SUFBWCwrQkFBVzs7OztJQTJCdkQsaURBTUM7SUFEQywwT0FBcUIsZUFBQSx1QkFBZSxDQUFBLElBQUM7SUFFdkMsaUJB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OztRQTNNd0QscUNBQW1CO1FBRW5GLGVBQ0Y7UUFERSxzR0FDRjtRQUlFLGVBQXVDO1FBQXZDLHlEQUF1QyxrQ0FBQSxpREFBQSxnQ0FBQSx5REFBQSxvQkFBQSx1Q0FBQTtRQVdZLGVBQWlCO1FBQWpCLHFDQUFpQjtRQUN2RCxlQUFpQjtRQUFqQixzQ0FBaUI7UUFFb0MsZUFBK0I7UUFBL0IsbURBQStCO1FBU3ZGLGVBRUM7UUFGRCwrSEFFQztRQUVELG1DQUFtQiw2Q0FBQSwrQkFBQSx5REFBQTtRQWFsQixlQUF1RTtRQUF2RSxnR0FBdUU7UUFrQnRELGVBQWlCO1FBQWpCLDRDQUFpQjtRQWFuQyxlQUVDO1FBRkQsK0hBRUM7UUFFRCxzQ0FBc0IsZ0RBQUEsa0NBQUEsNERBQUE7UUFXckIsZUFBdUU7UUFBdkUsZ0dBQXVFO1FBZXRELGVBQW9CO1FBQXBCLCtDQUFvQjtRQVV6QyxlQUFnRDtRQUFoRCx5RUFBZ0Q7UUFjaEQsZUFBZ0Q7UUFBaEQseUVBQWdEO1FBYWhELGVBQWlEO1FBQWpELDBFQUFpRDtRQVk1QyxlQUF1QjtRQUF2Qiw0Q0FBdUI7UUE2QjdCLGVBQTBHO1FBQTFHLDJIQUEwRztRQUcxRyx3Q0FBZ0MsbUdBQUEsMEJBQUE7UUFPNUIsZUFBYztRQUFkLG1DQUFjO1FBSWQsZUFBaUI7UUFBakIsc0NBQWlCOzt1RkQ3SWhCLG9CQUFvQjtjQUpoQyxTQUFTOzJCQUNFLGVBQWU7OFBBSStCLFNBQVM7a0JBQWhFLFNBQVM7bUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ1ksU0FBUztrQkFBMUUsU0FBUzttQkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdDaGVja2VkLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb21wb25lbnRSZWYsXHJcbiAgSXRlcmFibGVEaWZmZXJzLFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XHJcblxyXG5pbXBvcnQgeyBpc0V4dGVybmFsTGluayB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xyXG5pbXBvcnQgeyBQb0NvbXBvbmVudEluamVjdG9yU2VydmljZSB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcclxuXHJcbmltcG9ydCB7IFBvTW9kYWxQYXNzd29yZFJlY292ZXJ5Q29tcG9uZW50IH0gZnJvbSAnLi4vcG8tbW9kYWwtcGFzc3dvcmQtcmVjb3ZlcnkvcG8tbW9kYWwtcGFzc3dvcmQtcmVjb3ZlcnkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUG9Nb2RhbFBhc3N3b3JkUmVjb3ZlcnlUeXBlIH0gZnJvbSAnLi4vcG8tbW9kYWwtcGFzc3dvcmQtcmVjb3ZlcnkvZW51bXMvcG8tbW9kYWwtcGFzc3dvcmQtcmVjb3ZlcnktdHlwZS5lbnVtJztcclxuaW1wb3J0IHtcclxuICBQb1BhZ2VMb2dpbkJhc2VDb21wb25lbnQsXHJcbiAgcG9QYWdlTG9naW5MaXRlcmFsSW4sXHJcbiAgcG9QYWdlTG9naW5MaXRlcmFsc0RlZmF1bHRcclxufSBmcm9tICcuL3BvLXBhZ2UtbG9naW4tYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQb1BhZ2VMb2dpblJlY292ZXJ5IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtbG9naW4tcmVjb3ZlcnkuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUG9QYWdlTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9wby1wYWdlLWxvZ2luLnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIEBkb2NzRXh0ZW5kcyBQb1BhZ2VMb2dpbkJhc2VDb21wb25lbnRcclxuICpcclxuICogQGV4YW1wbGVcclxuICpcclxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtbG9naW4tYmFzaWNcIiB0aXRsZT1cIlBPIFBhZ2UgTG9naW4gQmFzaWNcIj5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1iYXNpYy9zYW1wbGUtcG8tcGFnZS1sb2dpbi1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XHJcbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXBhZ2UtbG9naW4tYmFzaWMvc2FtcGxlLXBvLXBhZ2UtbG9naW4tYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cclxuICogPC9leGFtcGxlPlxyXG4gKlxyXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tcGFnZS1sb2dpbi1sYWJzXCIgdGl0bGU9XCJQTyBQYWdlIExvZ2luIExhYnNcIj5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1sYWJzL3NhbXBsZS1wby1wYWdlLWxvZ2luLWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWxhYnMvc2FtcGxlLXBvLXBhZ2UtbG9naW4tbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxyXG4gKiA8L2V4YW1wbGU+XHJcbiAqXHJcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1wYWdlLWxvZ2luLWh1bWFuLXJlc291cmNlc1wiIHRpdGxlPVwiUE8gUGFnZSBMb2dpbiAtIEh1bWFuIFJlc291cmNlc1wiPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWh1bWFuLXJlc291cmNlcy9zYW1wbGUtcG8tcGFnZS1sb2dpbi1odW1hbi1yZXNvdXJjZXMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWh1bWFuLXJlc291cmNlcy9zYW1wbGUtcG8tcGFnZS1sb2dpbi1odW1hbi1yZXNvdXJjZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1odW1hbi1yZXNvdXJjZXMvc2FtcGxlLXBvLXBhZ2UtbG9naW4taHVtYW4tcmVzb3VyY2VzLm1vZHVsZS50c1wiPiA8L2ZpbGU+XHJcbiAqIDwvZXhhbXBsZT5cclxuICpcclxuICogPGV4YW1wbGUgbmFtZT1cInBvLXBhZ2UtbG9naW4tYXV0b21hdGljLXNlcnZpY2VcIiB0aXRsZT1cIlBPIFBhZ2UgTG9naW4gLSBBdXRvbWF0aWMgU2VydmljZVwiPlxyXG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1wYWdlLWxvZ2luLWF1dG9tYXRpYy1zZXJ2aWNlL3NhbXBsZS1wby1wYWdlLWxvZ2luLWF1dG9tYXRpYy1zZXJ2aWNlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cclxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tcGFnZS1sb2dpbi1hdXRvbWF0aWMtc2VydmljZS9zYW1wbGUtcG8tcGFnZS1sb2dpbi1hdXRvbWF0aWMtc2VydmljZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxyXG4gKiA8L2V4YW1wbGU+XHJcbiAqL1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwby1wYWdlLWxvZ2luJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcG8tcGFnZS1sb2dpbi5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFBvUGFnZUxvZ2luQ29tcG9uZW50IGV4dGVuZHMgUG9QYWdlTG9naW5CYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdsb2dpbkZvcm0nLCB7IHJlYWQ6IE5nRm9ybSwgc3RhdGljOiB0cnVlIH0pIGxvZ2luRm9ybTogTmdGb3JtO1xyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2VMb2dpbicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHBhZ2VMb2dpbjogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgaW5pdGlhbFNlbGVjdExhbmd1YWdlOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PiA9IG51bGw7XHJcbiAgcHJpdmF0ZSBkaWZmZXI6IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGN1c3RvbVBhc3N3b3JkRXJyb3IgPSB7IGN1c3RvbTogZmFsc2UgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHBvQ29tcG9uZW50SW5qZWN0b3I6IFBvQ29tcG9uZW50SW5qZWN0b3JTZXJ2aWNlLFxyXG4gICAgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxyXG4gICAgbG9naW5TZXJ2aWNlOiBQb1BhZ2VMb2dpblNlcnZpY2UsXHJcbiAgICByb3V0ZXI6IFJvdXRlcixcclxuICAgIHBvTGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIobG9naW5TZXJ2aWNlLCByb3V0ZXIsIHBvTGFuZ3VhZ2VTZXJ2aWNlKTtcclxuICAgIHRoaXMuZGlmZmVyID0gZGlmZmVycy5maW5kKFtdKS5jcmVhdGUobnVsbCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICBpZiAodGhpcy5kaWZmZXIpIHtcclxuICAgICAgdGhpcy52YWxpZGF0ZUFycmF5Q2hhbmdlcyh0aGlzLmRpZmZlciwgW1xyXG4gICAgICAgIHsgYXJyYXk6IHRoaXMubG9naW5FcnJvcnMsIGNhbGxiYWNrOiB0aGlzLmdlbmVyYXRlTG9naW5FcnJvci5iaW5kKHRoaXMpIH0sXHJcbiAgICAgICAgeyBhcnJheTogdGhpcy5wYXNzd29yZEVycm9ycywgY2FsbGJhY2s6IHRoaXMuZ2VuZXJhdGVQYXNzd29yZEVycm9yLmJpbmQodGhpcykgfVxyXG4gICAgICBdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jaGVja2luZ0ZvclJvdXRlTWV0YWRhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSA9IHRoaXMuaW5pdGlhbGl6ZUxhbmd1YWdlKCk7XHJcbiAgICB0aGlzLmluaXRpYWxTZWxlY3RMYW5ndWFnZSA9IHRoaXMuc2VsZWN0ZWRMYW5ndWFnZTtcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlU3VwcG9ydCgpIHtcclxuICAgIHN3aXRjaCAodHlwZW9mIHRoaXMuc3VwcG9ydCkge1xyXG4gICAgICBjYXNlICdzdHJpbmcnOiB7XHJcbiAgICAgICAgdGhpcy5zZXRVcmxSZWRpcmVjdCh0aGlzLnN1cHBvcnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ2Z1bmN0aW9uJzoge1xyXG4gICAgICAgIHRoaXMuc3VwcG9ydCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VMb2dpbk1vZGVsKCkge1xyXG4gICAgaWYgKHRoaXMuYXV0aGVudGljYXRpb25VcmwpIHtcclxuICAgICAgdGhpcy5sb2dpbkVycm9ycyA9IFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRMb2dpbkVycm9ycyh0aGlzLmxvZ2luRXJyb3JzKTtcclxuICAgICAgdGhpcy5sb2dpbkNoYW5nZS5lbWl0KHRoaXMubG9naW4pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFzc3dvcmRNb2RlbCgpIHtcclxuICAgIGlmICh0aGlzLmF1dGhlbnRpY2F0aW9uVXJsKSB7XHJcbiAgICAgIHRoaXMucGFzc3dvcmRFcnJvcnMgPSBbXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0UGFzc3dvcmRFcnJvcnModGhpcy5wYXNzd29yZEVycm9ycyk7XHJcbiAgICAgIHRoaXMucGFzc3dvcmRDaGFuZ2UuZW1pdCh0aGlzLnBhc3N3b3JkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmxhbmd1YWdlQ2hhbmdlLmVtaXQodGhpcy5sYW5ndWFnZXNMaXN0LmZpbmQobGFuZ3VhZ2VJdGVtID0+IGxhbmd1YWdlSXRlbS5sYW5ndWFnZSA9PT0gbGFuZ3VhZ2UpKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSA9IGxhbmd1YWdlO1xyXG4gIH1cclxuXHJcbiAgb3BlblVybChyZWNvdmVyeTogYW55KTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKHR5cGVvZiByZWNvdmVyeSkge1xyXG4gICAgICBjYXNlICdzdHJpbmcnOiB7XHJcbiAgICAgICAgdGhpcy5zZXRVcmxSZWRpcmVjdChyZWNvdmVyeSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnZnVuY3Rpb24nOiB7XHJcbiAgICAgICAgcmVjb3ZlcnkoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdvYmplY3QnOiB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVNb2RhbFBhc3N3b3JkUmVjb3ZlcnlDb21wb25lbnQocmVjb3ZlcnkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY29uY2F0ZW5hdGVMb2dpbkhpbnRXaXRoQ29udGFjdEVtYWlsKGNvbnRhY3RFbWFpbDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkZWZhdWx0TG9naW5IaW50TGl0ZXJhbCA9IHBvUGFnZUxvZ2luTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLmxvZ2luSGludDtcclxuICAgIGNvbnN0IHByZXBvc2l0aW9uTGl0ZXJhbCA9IHBvUGFnZUxvZ2luTGl0ZXJhbEluW3RoaXMubGFuZ3VhZ2VdO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmNvbmNhdGVuYXRlTGl0ZXJhbChjb250YWN0RW1haWwsICdsb2dpbkhpbnQnLCBkZWZhdWx0TG9naW5IaW50TGl0ZXJhbCwgcHJlcG9zaXRpb25MaXRlcmFsKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzZXRMb2dpbkVycm9ycyhlcnJvcnM6IEFycmF5PHN0cmluZz4pIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmxvZ2luRm9ybS5mb3JtLmNvbnRyb2xzWydsb2dpbiddO1xyXG4gICAgdGhpcy5zZXRDb250cm9sRXJyb3JzKCdhbGxMb2dpbkVycm9ycycsIGNvbnRyb2wsIGVycm9ycywgdGhpcy5wYWdlTG9naW5MaXRlcmFscy5sb2dpbkVycm9yUGF0dGVybik7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2V0UGFzc3dvcmRFcnJvcnMoZXJyb3JzOiBBcnJheTxzdHJpbmc+KSB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5sb2dpbkZvcm0uZm9ybS5jb250cm9sc1sncGFzc3dvcmQnXTtcclxuICAgIHRoaXMuc2V0Q29udHJvbEVycm9ycygnYWxsUGFzc3dvcmRFcnJvcnMnLCBjb250cm9sLCBlcnJvcnMsIHRoaXMucGFnZUxvZ2luTGl0ZXJhbHMucGFzc3dvcmRFcnJvclBhdHRlcm4pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja2luZ0Zvck1ldGFkYXRhUHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eSkge1xyXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KSkge1xyXG4gICAgICByZXR1cm4gb2JqZWN0W3Byb3BlcnR5XTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tpbmdGb3JSb3V0ZU1ldGFkYXRhKGRhdGEpIHtcclxuICAgIGlmIChPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGggIT09IDApIHtcclxuICAgICAgdGhpcy5hdXRoZW50aWNhdGlvblVybCA9IHRoaXMuY2hlY2tpbmdGb3JNZXRhZGF0YVByb3BlcnR5KGRhdGEsICdzZXJ2aWNlQXBpJykgfHwgdGhpcy5hdXRoZW50aWNhdGlvblVybDtcclxuICAgICAgdGhpcy5hdXRoZW50aWNhdGlvblR5cGUgPSB0aGlzLmNoZWNraW5nRm9yTWV0YWRhdGFQcm9wZXJ0eShkYXRhLCAnYXV0aGVudGljYXRpb25UeXBlJykgfHwgdGhpcy5hdXRoZW50aWNhdGlvblR5cGU7XHJcbiAgICAgIHRoaXMuZW52aXJvbm1lbnQgPSB0aGlzLmNoZWNraW5nRm9yTWV0YWRhdGFQcm9wZXJ0eShkYXRhLCAnZW52aXJvbm1lbnQnKSB8fCB0aGlzLmVudmlyb25tZW50O1xyXG4gICAgICB0aGlzLnJlY292ZXJ5ID0gdGhpcy5jaGVja2luZ0Zvck1ldGFkYXRhUHJvcGVydHkoZGF0YSwgJ3JlY292ZXJ5JykgfHwgdGhpcy5yZWNvdmVyeTtcclxuICAgICAgdGhpcy5yZWdpc3RlclVybCA9IHRoaXMuY2hlY2tpbmdGb3JNZXRhZGF0YVByb3BlcnR5KGRhdGEsICdyZWdpc3RlclVybCcpIHx8IHRoaXMucmVnaXN0ZXJVcmw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbmNhdGVuYXRlKGRlZmF1bHRMaXRlcmFsOiBzdHJpbmcsIHByZWZpeExpdGVyYWw6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGAke2RlZmF1bHRMaXRlcmFsfSAke3ByZWZpeExpdGVyYWx9ICR7dmFsdWV9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uY2F0ZW5hdGVMaXRlcmFsKHZhbHVlOiBzdHJpbmcsIGxpdGVyYWw6IHN0cmluZywgZGVmYXVsdExpdGVyYWw6IHN0cmluZywgcHJlcG9zaXRpb25MaXRlcmFsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB7IFtsaXRlcmFsXTogdGhpcy5jb25jYXRlbmF0ZShkZWZhdWx0TGl0ZXJhbCwgcHJlcG9zaXRpb25MaXRlcmFsLCB2YWx1ZSkgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTW9kYWxQYXNzd29yZFJlY292ZXJ5Q29tcG9uZW50KHBvUGFnZUxvZ2luUmVjb3Zlcnk6IFBvUGFnZUxvZ2luUmVjb3ZlcnkpIHtcclxuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xyXG4gICAgICB0aGlzLnBvQ29tcG9uZW50SW5qZWN0b3IuZGVzdHJveUNvbXBvbmVudEluQXBwbGljYXRpb24odGhpcy5jb21wb25lbnRSZWYpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5wb0NvbXBvbmVudEluamVjdG9yLmNyZWF0ZUNvbXBvbmVudEluQXBwbGljYXRpb24oUG9Nb2RhbFBhc3N3b3JkUmVjb3ZlcnlDb21wb25lbnQpO1xyXG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudXJsUmVjb3ZlcnkgPSBwb1BhZ2VMb2dpblJlY292ZXJ5LnVybDtcclxuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmNvbnRhY3RFbWFpbCA9IHBvUGFnZUxvZ2luUmVjb3ZlcnkuY29udGFjdE1haWw7XHJcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5waG9uZU1hc2sgPSBwb1BhZ2VMb2dpblJlY292ZXJ5LnBob25lTWFzaztcclxuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnR5cGUgPSBwb1BhZ2VMb2dpblJlY292ZXJ5LnR5cGUgfHwgUG9Nb2RhbFBhc3N3b3JkUmVjb3ZlcnlUeXBlLkVtYWlsO1xyXG4gICAgdGhpcy5jb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm9wZW4oKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUxvZ2luRXJyb3IoKSB7XHJcbiAgICBpZiAodGhpcy5sb2dpbkVycm9ycyAmJiB0aGlzLmxvZ2luRXJyb3JzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnNldExvZ2luRXJyb3JzKHRoaXMubG9naW5FcnJvcnMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMubG9naW5Gb3JtLmZvcm0uY29udHJvbHNbJ2xvZ2luJ107XHJcbiAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldENvbnRyb2woY29udHJvbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVQYXNzd29yZEVycm9yKCkge1xyXG4gICAgaWYgKHRoaXMucGFzc3dvcmRFcnJvcnMgJiYgdGhpcy5wYXNzd29yZEVycm9ycy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5zZXRQYXNzd29yZEVycm9ycyh0aGlzLnBhc3N3b3JkRXJyb3JzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmxvZ2luRm9ybS5mb3JtLmNvbnRyb2xzWydwYXNzd29yZCddO1xyXG5cclxuICAgICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgICB0aGlzLnJlc2V0Q29udHJvbChjb250cm9sKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNldENvbnRyb2woY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XHJcbiAgICBjb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICBjb250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xyXG4gICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENvbnRyb2xFcnJvcnMoYWxsRXJyb3JzOiBzdHJpbmcsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgZXJyb3JzOiBBcnJheTxzdHJpbmc+LCBwYXR0ZXJuRXJyb3I6IHN0cmluZykge1xyXG4gICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgdGhpc1thbGxFcnJvcnNdID0gY29udHJvbC5oYXNFcnJvcigncGF0dGVybicpID8gWy4uLmVycm9ycywgLi4uW3BhdHRlcm5FcnJvcl1dIDogWy4uLmVycm9yc107XHJcblxyXG4gICAgICBpZiAoZXJyb3JzICYmIGVycm9ycy5sZW5ndGggJiYgKGNvbnRyb2wudmFsaWQgfHwgY29udHJvbC5wcmlzdGluZSkpIHtcclxuICAgICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgICBjb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgY29udHJvbC5zZXRFcnJvcnModGhpcy5jdXN0b21QYXNzd29yZEVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVcmxSZWRpcmVjdCh1cmwpIHtcclxuICAgIGlzRXh0ZXJuYWxMaW5rKHVybCkgPyB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKSA6IHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVBcnJheUNoYW5nZXMoZGlmZmVyOiBhbnksIGFycmF5OiBBcnJheTx7IGFycmF5OiBBcnJheTxhbnk+OyBjYWxsYmFjazogYW55IH0+KSB7XHJcbiAgICBhcnJheS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBjb25zdCBjaGFuZ2VzID0gZGlmZmVyLmRpZmYoZWxlbWVudC5hcnJheSk7XHJcbiAgICAgIGlmIChjaGFuZ2VzKSB7XHJcbiAgICAgICAgZWxlbWVudC5jYWxsYmFjaygpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxhbmd1YWdlKCkge1xyXG4gICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLmxhbmd1YWdlc0xpc3QuZmluZChsYW5ndWFnZUl0ZW0gPT4gbGFuZ3VhZ2VJdGVtLmxhbmd1YWdlID09PSB0aGlzLmxhbmd1YWdlKTtcclxuICAgIHJldHVybiBsYW5ndWFnZT8ubGFuZ3VhZ2UgfHwgdGhpcy5sYW5ndWFnZXNMaXN0WzBdLmxhbmd1YWdlO1xyXG4gIH1cclxufVxyXG4iLCI8YnV0dG9uIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1zdXBwb3J0XCIgKGNsaWNrKT1cImFjdGl2YXRlU3VwcG9ydCgpXCIgW2hpZGRlbl09XCIhc3VwcG9ydFwiPlxyXG4gIDxzcGFuIGNsYXNzPVwicG8taWNvbiBwby1pY29uLWhlbHBcIj48L3NwYW4+XHJcbiAge3sgcGFnZUxvZ2luTGl0ZXJhbHM/LnN1cHBvcnQgfX1cclxuPC9idXR0b24+XHJcblxyXG48cG8tcGFnZS1iYWNrZ3JvdW5kXHJcbiAgI3BhZ2VMb2dpblxyXG4gIFtwLXNob3ctc2VsZWN0LWxhbmd1YWdlXT1cInNob3dMYW5ndWFnZVwiXHJcbiAgW3AtbGFuZ3VhZ2VzXT1cImxhbmd1YWdlc0xpc3RcIlxyXG4gIFtwLWluaXRpYWwtbGFuZ3VhZ2VdPVwiaW5pdGlhbFNlbGVjdExhbmd1YWdlXCJcclxuICBbcC1iYWNrZ3JvdW5kXT1cImJhY2tncm91bmRcIlxyXG4gIFtwLWhpZ2hsaWdodC1pbmZvXT1cInBhZ2VMb2dpbkxpdGVyYWxzLmhpZ2hsaWdodEluZm9cIlxyXG4gIFtwLWxvZ29dPVwibG9nb1wiXHJcbiAgW3Atc2Vjb25kYXJ5LWxvZ29dPVwic2Vjb25kYXJ5TG9nb1wiXHJcbiAgKHAtc2VsZWN0ZWQtbGFuZ3VhZ2UpPVwib25TZWxlY3RlZExhbmd1YWdlKCRldmVudClcIlxyXG4+XHJcbiAgPGhlYWRlciBjbGFzcz1cInBvLXBhZ2UtbG9naW4taGVhZGVyXCI+XHJcbiAgICA8aDEgY2xhc3M9XCJwby1tYi1tZC00IHBvLW1iLXNtLTFcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBvLXBhZ2UtbG9naW4taGVhZGVyLXByb2R1Y3QtbmFtZVwiPnt7IHByb2R1Y3ROYW1lIH19PC9kaXY+XHJcbiAgICAgIDxwby10YWcgKm5nSWY9XCJlbnZpcm9ubWVudFwiIHAtdHlwZT1cIndhcm5pbmdcIiBbcC12YWx1ZV09XCJlbnZpcm9ubWVudFwiPiA8L3BvLXRhZz5cclxuICAgIDwvaDE+XHJcbiAgICA8ZGl2IGNsYXNzPVwicG8tcGFnZS1sb2dpbi1oZWFkZXItd2VsY29tZSBwby1tYi1tZC00IHBvLW1iLXNtLTJcIj57eyBwYWdlTG9naW5MaXRlcmFscy53ZWxjb21lIH19PC9kaXY+XHJcbiAgPC9oZWFkZXI+XHJcblxyXG4gIDxmb3JtICNsb2dpbkZvcm09XCJuZ0Zvcm1cIiBjbGFzcz1cInBvLXBhZ2UtbG9naW4tZm9ybVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInBvLXJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicG8tbGctMTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicG8tcGFnZS1sb2dpbi1oaW50IHBvLXBhZ2UtbG9naW4taW5mby1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxwby1sb2dpblxyXG4gICAgICAgICAgICBjbGFzcz1cInBvLXBhZ2UtbG9naW4taW5mby1maWVsZFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5wby1wYWdlLWxvZ2luLWluZm8tZmllbGQtZHluYW1pY109XCJcclxuICAgICAgICAgICAgICAhcGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50ICYmICFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIG5hbWU9XCJsb2dpblwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibG9naW5cIlxyXG4gICAgICAgICAgICBwLWF1dG8tZm9jdXNcclxuICAgICAgICAgICAgcC1yZXF1aXJlZFxyXG4gICAgICAgICAgICBbcC1sYWJlbF09XCJwYWdlTG9naW5MaXRlcmFscy5sb2dpbkxhYmVsXCJcclxuICAgICAgICAgICAgW3AtcGF0dGVybl09XCJsb2dpblBhdHRlcm5cIlxyXG4gICAgICAgICAgICBbcC1wbGFjZWhvbGRlcl09XCJwYWdlTG9naW5MaXRlcmFscy5sb2dpblBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlUG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImxvZ2luRm9ybS52YWxpZCAmJiBvbkxvZ2luU3VibWl0KClcIlxyXG4gICAgICAgICAgICAocC1jaGFuZ2UtbW9kZWwpPVwiY2hhbmdlTG9naW5Nb2RlbCgpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwvcG8tbG9naW4+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cInBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCB8fCBwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWluZm8taWNvbi1jb250YWluZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3MucG8tcGFnZS1sb2dpbi1pbmZvLWljb24tY29udGFpbmVyLWR5bmFtaWNdPVwiXHJcbiAgICAgICAgICAgICAgIXBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCAmJiAhcGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInBvLWljb24gcG8tZmllbGQtaWNvbiBwby1pY29uLWluZm9cIlxyXG4gICAgICAgICAgICAgIHAtdG9vbHRpcC1wb3NpdGlvbj1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICBbcC10b29sdGlwXT1cInBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItYm90dG9tIHBvLWZpZWxkLWNvbnRhaW5lci1lcnJvci1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGVycm9yIG9mIGFsbExvZ2luRXJyb3JzXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItYm90dG9tLXRleHQtZXJyb3IgcG8tZmllbGQtY29udGFpbmVyLWVycm9yLWl0ZW1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBvLWljb24gcG8taWNvbi1leGNsYW1hdGlvblwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItZXJyb3ItdGV4dFwiPnt7IGVycm9yIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInBvLWxnLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBvLXBhZ2UtbG9naW4tcGFzc3dvcmQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8cG8tcGFzc3dvcmRcclxuICAgICAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWZpZWxkLXNpemUgcG8tcGFnZS1sb2dpbi1wYXNzd29yZC1pdGVtXCJcclxuICAgICAgICAgICAgW2NsYXNzLnBvLXBhZ2UtbG9naW4tZmllbGQtc2l6ZS1keW5hbWljXT1cIlxyXG4gICAgICAgICAgICAgICFwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgJiYgIXBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYXNzd29yZFwiXHJcbiAgICAgICAgICAgIHAtcmVxdWlyZWRcclxuICAgICAgICAgICAgW3AtbGFiZWxdPVwicGFnZUxvZ2luTGl0ZXJhbHMucGFzc3dvcmRMYWJlbFwiXHJcbiAgICAgICAgICAgIFtwLXBhdHRlcm5dPVwicGFzc3dvcmRQYXR0ZXJuXCJcclxuICAgICAgICAgICAgW3AtcGxhY2Vob2xkZXJdPVwicGFnZUxvZ2luTGl0ZXJhbHMucGFzc3dvcmRQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJsb2dpbkZvcm0udmFsaWQgJiYgb25Mb2dpblN1Ym1pdCgpXCJcclxuICAgICAgICAgICAgKHAtY2hhbmdlLW1vZGVsKT1cImNoYW5nZVBhc3N3b3JkTW9kZWwoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8L3BvLXBhc3N3b3JkPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cInBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCB8fCBwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLXBhc3N3b3JkLWl0ZW0gcG8tcGFnZS1sb2dpbi1wYXNzd29yZC1wb3BvdmVyLWNvbnRhaW5lclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxwby1wYWdlLWxvZ2luLXBvcG92ZXJcclxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dFeGNlZWRlZEF0dGVtcHRzV2FybmluZyAmJiBleGNlZWRlZEF0dGVtcHRzV2FybmluZ1wiXHJcbiAgICAgICAgICAgICAgW3AtbGl0ZXJhbHNdPVwicGFnZUxvZ2luTGl0ZXJhbHNcIlxyXG4gICAgICAgICAgICAgIFtwLXJlY292ZXJ5XT1cInJlY292ZXJ5XCJcclxuICAgICAgICAgICAgICBbcC1yZW1haW5pbmctYXR0ZW1wdHNdPVwiZXhjZWVkZWRBdHRlbXB0c1dhcm5pbmdcIlxyXG4gICAgICAgICAgICAgIChwLWZvcmdvdC1wYXNzd29yZCk9XCJvcGVuVXJsKCRldmVudClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvcG8tcGFnZS1sb2dpbi1wb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20gcG8tZmllbGQtY29udGFpbmVyLWVycm9yLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgYWxsUGFzc3dvcmRFcnJvcnNcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20tdGV4dC1lcnJvciBwby1maWVsZC1jb250YWluZXItZXJyb3ItaXRlbVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicG8taWNvbiBwby1pY29uLWV4Y2xhbWF0aW9uXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1lcnJvci10ZXh0XCI+e3sgZXJyb3IgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8cG8taW5wdXRcclxuICAgICAgICAqbmdJZj1cImN1c3RvbUZpZWxkICYmIGN1c3RvbUZpZWxkVHlwZSA9PT0gJ2lucHV0J1wiXHJcbiAgICAgICAgW2NsYXNzLnBvLXBhZ2UtbG9naW4tZmllbGQtc2l6ZS1keW5hbWljXT1cIiFwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgJiYgIXBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxyXG4gICAgICAgIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1maWVsZC1zaXplIHBvLWxnLTEyXCJcclxuICAgICAgICBuYW1lPVwiY3VzdG9tRmllbGRJbnB1dFwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjdXN0b21GaWVsZE9iamVjdC52YWx1ZVwiXHJcbiAgICAgICAgcC1yZXF1aXJlZFxyXG4gICAgICAgIFtwLWVycm9yLXBhdHRlcm5dPVwiY3VzdG9tRmllbGRPYmplY3QuZXJyb3JQYXR0ZXJuIHx8IHBhZ2VMb2dpbkxpdGVyYWxzLmN1c3RvbUZpZWxkRXJyb3JQYXR0ZXJuXCJcclxuICAgICAgICBbcC1wYXR0ZXJuXT1cImN1c3RvbUZpZWxkT2JqZWN0LnBhdHRlcm5cIlxyXG4gICAgICAgIFtwLXBsYWNlaG9sZGVyXT1cImN1c3RvbUZpZWxkT2JqZWN0LnBsYWNlaG9sZGVyIHx8IHBhZ2VMb2dpbkxpdGVyYWxzLmN1c3RvbUZpZWxkUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJsb2dpbkZvcm0udmFsaWQgJiYgb25Mb2dpblN1Ym1pdCgpXCJcclxuICAgICAgPlxyXG4gICAgICA8L3BvLWlucHV0PlxyXG5cclxuICAgICAgPHBvLWNvbWJvXHJcbiAgICAgICAgKm5nSWY9XCJjdXN0b21GaWVsZCAmJiBjdXN0b21GaWVsZFR5cGUgPT09ICdjb21ibydcIlxyXG4gICAgICAgIFtjbGFzcy5wby1wYWdlLWxvZ2luLWZpZWxkLXNpemUtZHluYW1pY109XCIhcGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50ICYmICFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcclxuICAgICAgICBjbGFzcz1cInBvLXBhZ2UtbG9naW4tZmllbGQtc2l6ZSBwby1sZy0xMlwiXHJcbiAgICAgICAgbmFtZT1cImN1c3RvbUZpZWxkQ29tYm9cIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiY3VzdG9tRmllbGRPYmplY3QudmFsdWVcIlxyXG4gICAgICAgIHAtcmVxdWlyZWRcclxuICAgICAgICBbcC1maWVsZC12YWx1ZV09XCJjdXN0b21GaWVsZE9iamVjdC5maWVsZFZhbHVlXCJcclxuICAgICAgICBbcC1maWx0ZXItc2VydmljZV09XCJjdXN0b21GaWVsZE9iamVjdC51cmxcIlxyXG4gICAgICAgIFtwLXBsYWNlaG9sZGVyXT1cImN1c3RvbUZpZWxkT2JqZWN0LnBsYWNlaG9sZGVyIHx8IHBhZ2VMb2dpbkxpdGVyYWxzLmN1c3RvbUZpZWxkUGxhY2Vob2xkZXJcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvcG8tY29tYm8+XHJcblxyXG4gICAgICA8cG8tc2VsZWN0XHJcbiAgICAgICAgKm5nSWY9XCJjdXN0b21GaWVsZCAmJiBjdXN0b21GaWVsZFR5cGUgPT09ICdzZWxlY3QnXCJcclxuICAgICAgICBbY2xhc3MucG8tcGFnZS1sb2dpbi1maWVsZC1zaXplLWR5bmFtaWNdPVwiIXBhZ2VMb2dpbkxpdGVyYWxzLmxvZ2luSGludCAmJiAhcGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFwiXHJcbiAgICAgICAgY2xhc3M9XCJwby1wYWdlLWxvZ2luLWZpZWxkLXNpemUgcG8tbGctMTJcIlxyXG4gICAgICAgIG5hbWU9XCJjdXN0b21GaWVsZFNlbGVjdFwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjdXN0b21GaWVsZE9iamVjdC52YWx1ZVwiXHJcbiAgICAgICAgcC1yZXF1aXJlZFxyXG4gICAgICAgIFtwLXBsYWNlaG9sZGVyXT1cImN1c3RvbUZpZWxkT2JqZWN0LnBsYWNlaG9sZGVyIHx8IHBhZ2VMb2dpbkxpdGVyYWxzLmN1c3RvbUZpZWxkUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFtwLW9wdGlvbnNdPVwiY3VzdG9tRmllbGRPYmplY3Qub3B0aW9uc1wiXHJcbiAgICAgID5cclxuICAgICAgPC9wby1zZWxlY3Q+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicG8tbGctMTJcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhpZGVSZW1lbWJlclVzZXJcIiBjbGFzcz1cInBvLXBhZ2UtbG9naW4taGludCBwby1wYWdlLWxvZ2luLWluZm8tY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8cG8tc3dpdGNoXHJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1pbmZvLWZpZWxkIHBvLWxnLTcgcG8tb2Zmc2V0LWxnLTUgcG8tb2Zmc2V0LXhsLTVcIlxyXG4gICAgICAgICAgICBuYW1lPVwicmVtZW1iZXJVc2VyXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyZW1lbWJlclVzZXJcIlxyXG4gICAgICAgICAgICBwLWxhYmVsLXBvc2l0aW9uPVwiMVwiXHJcbiAgICAgICAgICAgIFtwLWxhYmVsLW9mZl09XCJwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJcIlxyXG4gICAgICAgICAgICBbcC1sYWJlbC1vbl09XCJwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJcIlxyXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwibG9naW5Gb3JtLnZhbGlkICYmIG9uTG9naW5TdWJtaXQoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8L3BvLXN3aXRjaD5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwicGFnZUxvZ2luTGl0ZXJhbHMubG9naW5IaW50IHx8IHBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInBvLXBhZ2UtbG9naW4taW5mby1pY29uLWNvbnRhaW5lciBwby1wYWdlLWxvZ2luLWluZm8taWNvbi1yZW1lbWJlci11c2VyXCJcclxuICAgICAgICAgICAgW2NsYXNzLnBvLXBhZ2UtbG9naW4taW5mby1pY29uLWNvbnRhaW5lci1keW5hbWljXT1cIiFwYWdlTG9naW5MaXRlcmFscy5yZW1lbWJlclVzZXJIaW50XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAqbmdJZj1cInBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicG8taWNvbiBwby1maWVsZC1pY29uIHBvLWljb24taW5mb1wiXHJcbiAgICAgICAgICAgICAgcC10b29sdGlwLXBvc2l0aW9uPVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwicGFnZUxvZ2luTGl0ZXJhbHMucmVtZW1iZXJVc2VySGludFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPHBvLWJ1dHRvblxyXG4gICAgICAgIFtjbGFzcy5wby1wYWdlLWxvZ2luLWJ1dHRvbi1keW5hbWljXT1cIiFwYWdlTG9naW5MaXRlcmFscy5sb2dpbkhpbnQgJiYgIXBhZ2VMb2dpbkxpdGVyYWxzLnJlbWVtYmVyVXNlckhpbnRcIlxyXG4gICAgICAgIGNsYXNzPVwicG8tbGctMTIgcG8tcGFnZS1sb2dpbi1idXR0b24gcG8tcGFnZS1sb2dpbi1maWVsZC1zaXplXCJcclxuICAgICAgICBwLWtpbmQ9XCJwcmltYXJ5XCJcclxuICAgICAgICBbcC1kaXNhYmxlZF09XCJsb2dpbkZvcm0uaW52YWxpZFwiXHJcbiAgICAgICAgW3AtbGFiZWxdPVwibG9hZGluZyA/IHBhZ2VMb2dpbkxpdGVyYWxzLnN1Ym1pdHRlZExhYmVsIDogcGFnZUxvZ2luTGl0ZXJhbHMuc3VibWl0TGFiZWxcIlxyXG4gICAgICAgIFtwLWxvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICAgICAgKHAtY2xpY2spPVwib25Mb2dpblN1Ym1pdCgpXCJcclxuICAgICAgPlxyXG4gICAgICA8L3BvLWJ1dHRvbj5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCJyZWNvdmVyeVwiIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1yZWNvdmVyeS1saW5rXCI+XHJcbiAgICAgICAgPGEgY2xhc3M9XCJwby1mb250LXRleHQtbGFyZ2UtYm9sZFwiIChjbGljayk9XCJvcGVuVXJsKHJlY292ZXJ5KVwiPnt7IHBhZ2VMb2dpbkxpdGVyYWxzLmZvcmdvdFBhc3N3b3JkIH19PC9hPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCJyZWdpc3RlclVybFwiIGNsYXNzPVwicG8tcGFnZS1sb2dpbi1yZWdpc3Rlci1saW5rXCI+XHJcbiAgICAgICAgPGEgY2xhc3M9XCJwby1mb250LXRleHQtbGFyZ2UtYm9sZFwiIChjbGljayk9XCJvcGVuVXJsKHJlZ2lzdGVyVXJsKVwiPnt7IHBhZ2VMb2dpbkxpdGVyYWxzLnJlZ2lzdGVyVXJsIH19PC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZm9ybT5cclxuPC9wby1wYWdlLWJhY2tncm91bmQ+XHJcbiJdfQ==
|