{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./jslib/common/src/abstractions/i18n.service.ts","webpack:///./jslib/common/src/abstractions/platformUtils.service.ts","webpack:///./jslib/common/src/abstractions/api.service.ts","webpack:///./jslib/common/src/abstractions/user.service.ts","webpack:///./jslib/angular/src/pipes/i18n.pipe.ts","webpack:///./jslib/common/src/abstractions/messaging.service.ts","webpack:///./jslib/common/src/abstractions/crypto.service.ts","webpack:///./jslib/angular/src/directives/a11y-title.directive.ts","webpack:///./jslib/angular/src/directives/api-action.directive.ts","webpack:///./jslib/common/src/abstractions/cipher.service.ts","webpack:///./jslib/common/src/models/response/baseResponse.ts","webpack:///./jslib/angular/src/components/callout.component.ts","webpack:///./jslib/angular/src/components/callout.component.html","webpack:///./jslib/common/src/importers/baseImporter.ts","webpack:///./jslib/common/src/models/domain/importResult.ts","webpack:///./jslib/common/src/misc/utils.ts","webpack:///./jslib/common/src/abstractions/policy.service.ts","webpack:///./jslib/common/src/abstractions/passwordGeneration.service.ts","webpack:///./jslib/common/src/abstractions/state.service.ts","webpack:///./jslib/angular/src/directives/stop-click.directive.ts","webpack:///./jslib/common/src/enums/cipherType.ts","webpack:///./jslib/common/src/abstractions/storage.service.ts","webpack:///./jslib/common/src/abstractions/collection.service.ts","webpack:///./jslib/angular/src/directives/input-verbatim.directive.ts","webpack:///./jslib/common/src/abstractions/folder.service.ts","webpack:///./jslib/angular/src/directives/stop-prop.directive.ts","webpack:///./jslib/common/src/abstractions/environment.service.ts","webpack:///./jslib/common/src/abstractions/auth.service.ts","webpack:///./jslib/common/src/abstractions/sync.service.ts","webpack:///./jslib/angular/src/directives/autofocus.directive.ts","webpack:///./jslib/common/src/services/constants.service.ts","webpack:///./jslib/common/src/abstractions/event.service.ts","webpack:///./jslib/common/src/abstractions/search.service.ts","webpack:///./jslib/common/src/models/request/passwordVerificationRequest.ts","webpack:///./jslib/common/src/models/domain/domainBase.ts","webpack:///./src/app/modal.component.ts","webpack:///./jslib/common/src/abstractions/vaultTimeout.service.ts","webpack:///./jslib/common/src/models/domain/encString.ts","webpack:///./jslib/common/src/abstractions/audit.service.ts","webpack:///./jslib/common/src/models/view/cardView.ts","webpack:///./jslib/common/src/abstractions/cryptoFunction.service.ts","webpack:///./jslib/common/src/models/view/secureNoteView.ts","webpack:///./jslib/common/src/enums/secureNoteType.ts","webpack:///./jslib/common/src/abstractions/token.service.ts","webpack:///./jslib/angular/src/components/icon.component.ts","webpack:///./jslib/angular/src/components/icon.component.html","webpack:///./jslib/angular/src/services/broadcaster.service.ts","webpack:///./jslib/common/src/enums/twoFactorProviderType.ts","webpack:///./src/app/components/avatar.component.ts","webpack:///./jslib/common/src/enums/policyType.ts","webpack:///./jslib/common/src/abstractions/totp.service.ts","webpack:///./src/app/settings/payment.component.ts","webpack:///./src/app/settings/payment.component.html","webpack:///./jslib/common/src/enums/fieldType.ts","webpack:///./jslib/common/src/models/view/cipherView.ts","webpack:///./jslib/common/src/models/view/folderView.ts","webpack:///./jslib/common/src/models/domain/collection.ts","webpack:///./jslib/common/src/enums/organizationUserStatusType.ts","webpack:///./jslib/common/src/abstractions/export.service.ts","webpack:///./src/app/settings/tax-info.component.ts","webpack:///./src/app/settings/tax-info.component.html","webpack:///./jslib/common/src/models/view/identityView.ts","webpack:///./jslib/common/src/models/view/loginView.ts","webpack:///./jslib/common/src/abstractions/send.service.ts","webpack:///./jslib/common/src/models/data/collectionData.ts","webpack:///./jslib/common/src/models/view/collectionView.ts","webpack:///./jslib/common/src/models/data/cipherData.ts","webpack:///./jslib/common/src/enums/sendType.ts","webpack:///./src/app/settings/two-factor-verify.component.ts","webpack:///./src/app/settings/two-factor-verify.component.html","webpack:///./jslib/common/src/models/domain/cipher.ts","webpack:///./jslib/common/src/enums/cipherRepromptType.ts","webpack:///./jslib/common/src/abstractions/passwordReprompt.service.ts","webpack:///./src/app/components/password-strength.component.ts","webpack:///./src/app/components/password-strength.component.html","webpack:///./jslib/angular/src/pipes/search.pipe.ts","webpack:///./jslib/common/src/enums/eventType.ts","webpack:///./jslib/common/src/models/view/fieldView.ts","webpack:///./jslib/common/src/models/request/cipherRequest.ts","webpack:///./jslib/common/src/models/response/errorResponse.ts","webpack:///./jslib/angular/src/services/validation.service.ts","webpack:///./src/app/services/router.service.ts","webpack:///./jslib/common/src/enums/kdfType.ts","webpack:///./jslib/common/src/enums/organizationUserType.ts","webpack:///./src/app/services/event.service.ts","webpack:///./jslib/common/src/models/domain/symmetricCryptoKey.ts","webpack:///./jslib/common/src/enums/paymentMethodType.ts","webpack:///./src/app/settings/two-factor-base.component.ts","webpack:///./src/app/tools/cipher-report.component.ts","webpack:///./jslib/common/src/models/view/loginUriView.ts","webpack:///./jslib/common/src/enums/uriMatchType.ts","webpack:///./src/app/vault/add-edit.component.ts","webpack:///./src/app/vault/add-edit.component.html","webpack:///./jslib/common/src/abstractions/import.service.ts","webpack:///./jslib/common/src/models/response/cipherResponse.ts","webpack:///./src/app/vault/ciphers.component.ts","webpack:///./src/app/vault/ciphers.component.html","webpack:///./jslib/common/src/enums/encryptionType.ts","webpack:///./jslib/common/src/enums/hashPurpose.ts","webpack:///./jslib/common/src/models/request/keysRequest.ts","webpack:///./jslib/common/src/models/data/policyData.ts","webpack:///./jslib/common/src/services/auth.service.ts","webpack:///./jslib/common/src/models/request/selectionReadOnlyRequest.ts","webpack:///./jslib/common/src/enums/deviceType.ts","webpack:///./jslib/common/src/abstractions/settings.service.ts","webpack:///./jslib/common/src/enums/planType.ts","webpack:///./src/app/settings/organization-plans.component.ts","webpack:///./src/app/settings/organization-plans.component.html","webpack:///./jslib/common/src/models/domain/card.ts","webpack:///./jslib/common/src/models/domain/field.ts","webpack:///./jslib/common/src/models/domain/identity.ts","webpack:///./jslib/common/src/models/domain/login.ts","webpack:///./jslib/common/src/models/domain/loginUri.ts","webpack:///./jslib/common/src/models/domain/secureNote.ts","webpack:///./jslib/angular/src/directives/true-false-value.directive.ts","webpack:///./jslib/common/src/models/response/selectionReadOnlyResponse.ts","webpack:///./jslib/common/src/models/response/profileResponse.ts","webpack:///./src/app/vault/groupings.component.ts","webpack:///./src/app/vault/groupings.component.html","webpack:///./jslib/common/src/models/domain/organization.ts","webpack:///./jslib/common/src/models/view/sendFileView.ts","webpack:///./jslib/common/src/models/view/sendTextView.ts","webpack:///./src/app/settings/organizations.component.ts","webpack:///./src/app/settings/organizations.component.html","webpack:///./src/app/layouts/navbar.component.ts","webpack:///./src/app/layouts/navbar.component.html","webpack:///./src/app/layouts/footer.component.ts","webpack:///./src/app/layouts/footer.component.html","webpack:///./jslib/common/src/models/request/organizationUserResetPasswordEnrollmentRequest.ts","webpack:///./jslib/common/src/models/domain/policy.ts","webpack:///./jslib/angular/src/components/change-password.component.ts","webpack:///./src/app/organizations/manage/entity-users.component.ts","webpack:///./src/app/organizations/manage/entity-users.component.html","webpack:///./jslib/common/src/models/request/organizationKeysRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserBulkRequest.ts","webpack:///./src/app/organizations/manage/entity-events.component.ts","webpack:///./src/app/organizations/manage/entity-events.component.html","webpack:///./jslib/common/src/models/api/permissionsApi.ts","webpack:///./src/app/settings/api-key.component.ts","webpack:///./src/app/settings/api-key.component.html","webpack:///./src/app/settings/purge-vault.component.ts","webpack:///./src/app/settings/purge-vault.component.html","webpack:///./src/app/settings/user-billing.component.ts","webpack:///./src/app/settings/user-billing.component.html","webpack:///./src/app/settings/add-credit.component.ts","webpack:///./src/app/settings/add-credit.component.html","webpack:///./src/app/settings/adjust-payment.component.ts","webpack:///./src/app/settings/adjust-payment.component.html","webpack:///./src/app/settings/update-license.component.ts","webpack:///./src/app/settings/update-license.component.html","webpack:///./jslib/common/src/enums/productType.ts","webpack:///./src/app/settings/adjust-storage.component.ts","webpack:///./src/app/settings/adjust-storage.component.html","webpack:///./src/app/settings/two-factor-duo.component.ts","webpack:///./src/app/settings/two-factor-duo.component.html","webpack:///./src/app/settings/two-factor-setup.component.ts","webpack:///./src/app/settings/two-factor-setup.component.html","webpack:///./src/app/tools/export.component.ts","webpack:///./src/app/tools/export.component.html","webpack:///./src/app/tools/exposed-passwords-report.component.ts","webpack:///./src/app/tools/exposed-passwords-report.component.html","webpack:///./src/app/organizations/vault/add-edit.component.ts","webpack:///./jslib/common/src/models/data/attachmentData.ts","webpack:///./jslib/common/src/models/data/cardData.ts","webpack:///./jslib/common/src/models/data/fieldData.ts","webpack:///./jslib/common/src/models/data/identityData.ts","webpack:///./jslib/common/src/models/data/loginData.ts","webpack:///./jslib/common/src/models/data/loginUriData.ts","webpack:///./jslib/common/src/models/data/secureNoteData.ts","webpack:///./jslib/common/src/models/domain/attachment.ts","webpack:///./jslib/common/src/models/view/passwordHistoryView.ts","webpack:///./src/app/tools/import.component.ts","webpack:///./src/app/tools/import.component.html","webpack:///./src/app/tools/inactive-two-factor-report.component.ts","webpack:///./src/app/tools/inactive-two-factor-report.component.html","webpack:///./src/app/tools/reused-passwords-report.component.ts","webpack:///./src/app/tools/reused-passwords-report.component.html","webpack:///./src/app/tools/unsecured-websites-report.component.ts","webpack:///./src/app/tools/unsecured-websites-report.component.html","webpack:///./src/app/tools/weak-passwords-report.component.ts","webpack:///./src/app/tools/weak-passwords-report.component.html","webpack:///./src/app/vault/attachments.component.ts","webpack:///./src/app/vault/attachments.component.html","webpack:///./jslib/common/src/models/response/attachmentResponse.ts","webpack:///./jslib/common/src/models/response/collectionResponse.ts","webpack:///./jslib/common/src/models/response/domainsResponse.ts","webpack:///./jslib/common/src/models/response/folderResponse.ts","webpack:///./jslib/common/src/models/response/sendResponse.ts","webpack:///./jslib/common/src/models/api/sendFileApi.ts","webpack:///./jslib/common/src/models/api/sendTextApi.ts","webpack:///./src/app/organizations/vault/ciphers.component.ts","webpack:///./src/app/vault/collections.component.ts","webpack:///./src/app/vault/collections.component.html","webpack:///./src/app/organizations/vault/groupings.component.ts","webpack:///./src/app/vault/bulk-actions.component.ts","webpack:///./src/app/vault/bulk-actions.component.html","webpack:///./jslib/common/src/models/domain/sendFile.ts","webpack:///./jslib/common/src/models/domain/sendText.ts","webpack:///./jslib/common/src/models/request/cipherWithIdRequest.ts","webpack:///./jslib/common/src/models/request/folderRequest.ts","webpack:///./jslib/angular/src/directives/select-copy.directive.ts","webpack:///./jslib/angular/src/pipes/color-password.pipe.ts","webpack:///./jslib/common/src/models/data/folderData.ts","webpack:///./jslib/common/src/models/domain/folder.ts","webpack:///./jslib/common/src/abstractions/notifications.service.ts","webpack:///./$_lazy_route_resource lazy namespace object","webpack:///./src/app/layouts/frontend-layout.component.ts","webpack:///./src/app/layouts/frontend-layout.component.html","webpack:///./src/app/layouts/organization-layout.component.ts","webpack:///./src/app/layouts/organization-layout.component.html","webpack:///./src/app/layouts/user-layout.component.ts","webpack:///./src/app/layouts/user-layout.component.html","webpack:///./src/app/accounts/accept-emergency.component.ts","webpack:///./src/app/accounts/accept-emergency.component.html","webpack:///./src/app/accounts/accept-organization.component.ts","webpack:///./src/app/accounts/accept-organization.component.html","webpack:///./src/app/accounts/hint.component.ts","webpack:///./src/app/accounts/hint.component.html","webpack:///./src/app/accounts/lock.component.ts","webpack:///./src/app/accounts/lock.component.html","webpack:///./src/app/accounts/login.component.ts","webpack:///./src/app/accounts/login.component.html","webpack:///./src/app/accounts/recover-delete.component.ts","webpack:///./src/app/accounts/recover-delete.component.html","webpack:///./src/app/accounts/recover-two-factor.component.ts","webpack:///./src/app/accounts/recover-two-factor.component.html","webpack:///./src/app/accounts/register.component.ts","webpack:///./src/app/accounts/register.component.html","webpack:///./src/app/accounts/set-password.component.ts","webpack:///./src/app/accounts/set-password.component.html","webpack:///./src/app/accounts/sso.component.ts","webpack:///./src/app/accounts/sso.component.html","webpack:///./jslib/angular/src/components/sso.component.ts","webpack:///./src/app/accounts/two-factor.component.ts","webpack:///./src/app/accounts/two-factor.component.html","webpack:///./src/app/accounts/two-factor-options.component.ts","webpack:///./src/app/accounts/two-factor-options.component.html","webpack:///./jslib/common/src/models/request/twoFactorEmailRequest.ts","webpack:///./jslib/common/src/models/domain/authResult.ts","webpack:///./src/app/accounts/verify-email-token.component.ts","webpack:///./src/app/accounts/verify-email-token.component.html","webpack:///./src/app/accounts/verify-recover-delete.component.ts","webpack:///./src/app/accounts/verify-recover-delete.component.html","webpack:///./src/app/organizations/manage/collections.component.ts","webpack:///./src/app/organizations/manage/collections.component.html","webpack:///./src/app/organizations/manage/collection-add-edit.component.ts","webpack:///./src/app/organizations/manage/collection-add-edit.component.html","webpack:///./jslib/common/src/models/request/collectionRequest.ts","webpack:///./src/app/organizations/manage/events.component.ts","webpack:///./src/app/organizations/manage/events.component.html","webpack:///./src/app/organizations/manage/groups.component.ts","webpack:///./src/app/organizations/manage/groups.component.html","webpack:///./src/app/organizations/manage/group-add-edit.component.ts","webpack:///./src/app/organizations/manage/group-add-edit.component.html","webpack:///./src/app/organizations/manage/manage.component.ts","webpack:///./src/app/organizations/manage/manage.component.html","webpack:///./src/app/organizations/manage/people.component.ts","webpack:///./src/app/organizations/manage/people.component.html","webpack:///./src/app/organizations/manage/bulk/bulk-confirm.component.ts","webpack:///./src/app/organizations/manage/bulk/bulk-confirm.component.html","webpack:///./src/app/organizations/manage/bulk/bulk-remove.component.ts","webpack:///./src/app/organizations/manage/bulk/bulk-remove.component.html","webpack:///./src/app/organizations/manage/bulk/bulk-status.component.ts","webpack:///./src/app/organizations/manage/bulk/bulk-status.component.html","webpack:///./src/app/organizations/manage/reset-password.component.ts","webpack:///./src/app/organizations/manage/reset-password.component.html","webpack:///./src/app/organizations/manage/user-add-edit.component.ts","webpack:///./src/app/organizations/manage/user-add-edit.component.html","webpack:///./src/app/organizations/manage/user-confirm.component.ts","webpack:///./src/app/organizations/manage/user-confirm.component.html","webpack:///./src/app/organizations/manage/user-groups.component.ts","webpack:///./src/app/organizations/manage/user-groups.component.html","webpack:///./src/app/organizations/manage/policies.component.ts","webpack:///./src/app/organizations/manage/policies.component.html","webpack:///./jslib/common/src/abstractions/index.ts","webpack:///./src/app/organizations/manage/policy-edit.component.ts","webpack:///./src/app/organizations/manage/policy-edit.component.html","webpack:///./src/app/organizations/settings/account.component.ts","webpack:///./src/app/organizations/settings/account.component.html","webpack:///./jslib/common/src/models/request/organizationTaxInfoUpdateRequest.ts","webpack:///./jslib/common/src/models/request/taxInfoUpdateRequest.ts","webpack:///./src/app/organizations/settings/delete-organization.component.ts","webpack:///./src/app/organizations/settings/delete-organization.component.html","webpack:///./src/app/organizations/settings/organization-billing.component.ts","webpack:///./src/services/webConstants.ts","webpack:///./src/app/organizations/settings/organization-subscription.component.ts","webpack:///./src/app/organizations/settings/organization-subscription.component.html","webpack:///./src/app/organizations/settings/change-plan.component.ts","webpack:///./src/app/organizations/settings/change-plan.component.html","webpack:///./src/app/organizations/settings/download-license.component.ts","webpack:///./src/app/organizations/settings/download-license.component.html","webpack:///./src/app/organizations/settings/adjust-seats.component.ts","webpack:///./src/app/organizations/settings/adjust-seats.component.html","webpack:///./src/app/organizations/settings/settings.component.ts","webpack:///./src/app/organizations/settings/settings.component.html","webpack:///./src/app/organizations/settings/two-factor-setup.component.ts","webpack:///./src/app/settings/two-factor-authenticator.component.ts","webpack:///./src/app/settings/two-factor-authenticator.component.html","webpack:///./src/app/settings/two-factor-email.component.ts","webpack:///./src/app/settings/two-factor-email.component.html","webpack:///./src/app/settings/two-factor-recovery.component.ts","webpack:///./src/app/settings/two-factor-recovery.component.html","webpack:///./src/app/settings/two-factor-webauthn.component.ts","webpack:///./src/app/settings/two-factor-webauthn.component.html","webpack:///./src/app/settings/two-factor-yubikey.component.ts","webpack:///./src/app/settings/two-factor-yubikey.component.html","webpack:///./src/app/organizations/tools/export.component.ts","webpack:///./src/app/organizations/tools/exposed-passwords-report.component.ts","webpack:///./jslib/common/src/models/data/passwordHistoryData.ts","webpack:///./jslib/common/src/models/view/attachmentView.ts","webpack:///./jslib/common/src/models/domain/password.ts","webpack:///./jslib/common/src/models/request/cipherCreateRequest.ts","webpack:///./jslib/common/src/models/api/cardApi.ts","webpack:///./jslib/common/src/models/api/fieldApi.ts","webpack:///./jslib/common/src/models/api/identityApi.ts","webpack:///./jslib/common/src/models/api/loginApi.ts","webpack:///./jslib/common/src/models/api/loginUriApi.ts","webpack:///./jslib/common/src/models/api/secureNoteApi.ts","webpack:///./jslib/angular/src/directives/fallback-src.directive.ts","webpack:///./src/app/organizations/tools/import.component.ts","webpack:///./src/app/organizations/tools/inactive-two-factor-report.component.ts","webpack:///./src/app/organizations/tools/reused-passwords-report.component.ts","webpack:///./src/app/organizations/tools/tools.component.ts","webpack:///./src/app/organizations/tools/tools.component.html","webpack:///./src/app/organizations/tools/unsecured-websites-report.component.ts","webpack:///./src/app/organizations/tools/weak-passwords-report.component.ts","webpack:///./src/app/organizations/vault/vault.component.ts","webpack:///./src/app/organizations/vault/vault.component.html","webpack:///./src/app/organizations/vault/attachments.component.ts","webpack:///./jslib/angular/src/components/attachments.component.ts","webpack:///./jslib/common/src/models/response/globalDomainResponse.ts","webpack:///./jslib/common/src/models/response/identityTokenResponse.ts","webpack:///./jslib/common/src/models/response/identityTwoFactorResponse.ts","webpack:///./jslib/common/src/models/response/keysResponse.ts","webpack:///./jslib/common/src/models/response/listResponse.ts","webpack:///./jslib/common/src/models/response/profileOrganizationResponse.ts","webpack:///./jslib/common/src/models/response/syncResponse.ts","webpack:///./jslib/common/src/models/response/policyResponse.ts","webpack:///./src/app/organizations/vault/collections.component.ts","webpack:///./jslib/common/src/models/request/cipherCollectionsRequest.ts","webpack:///./src/app/vault/bulk-delete.component.ts","webpack:///./src/app/vault/bulk-delete.component.html","webpack:///./jslib/common/src/models/request/cipherBulkDeleteRequest.ts","webpack:///./src/app/vault/bulk-move.component.ts","webpack:///./src/app/vault/bulk-move.component.html","webpack:///./src/app/vault/bulk-restore.component.ts","webpack:///./src/app/vault/bulk-restore.component.html","webpack:///./src/app/vault/bulk-share.component.ts","webpack:///./src/app/vault/bulk-share.component.html","webpack:///./src/app/send/access.component.ts","webpack:///./src/app/send/access.component.html","webpack:///./src/app/send/send.component.ts","webpack:///./src/app/send/send.component.html","webpack:///./src/app/send/add-edit.component.ts","webpack:///./src/app/send/add-edit.component.html","webpack:///./jslib/common/src/models/view/sendView.ts","webpack:///./src/app/settings/account.component.ts","webpack:///./src/app/settings/account.component.html","webpack:///./src/app/settings/deauthorize-sessions.component.ts","webpack:///./src/app/settings/deauthorize-sessions.component.html","webpack:///./src/app/settings/delete-account.component.ts","webpack:///./src/app/settings/delete-account.component.html","webpack:///./src/app/settings/profile.component.ts","webpack:///./src/app/settings/profile.component.html","webpack:///./src/app/settings/change-email.component.ts","webpack:///./src/app/settings/change-email.component.html","webpack:///./jslib/common/src/models/request/emailTokenRequest.ts","webpack:///./src/app/settings/change-password.component.ts","webpack:///./src/app/settings/change-password.component.html","webpack:///./jslib/common/src/enums/emergencyAccessStatusType.ts","webpack:///./jslib/common/src/models/request/emergencyAccessUpdateRequest.ts","webpack:///./jslib/common/src/models/request/folderWithIdRequest.ts","webpack:///./jslib/common/src/models/request/passwordRequest.ts","webpack:///./jslib/common/src/models/request/updateKeyRequest.ts","webpack:///./src/app/settings/change-kdf.component.ts","webpack:///./src/app/settings/change-kdf.component.html","webpack:///./src/app/settings/create-organization.component.ts","webpack:///./src/app/settings/create-organization.component.html","webpack:///./src/app/settings/domain-rules.component.ts","webpack:///./src/app/settings/domain-rules.component.html","webpack:///./src/app/settings/options.component.ts","webpack:///./src/app/settings/options.component.html","webpack:///./src/app/settings/link-sso.component.ts","webpack:///./src/app/settings/link-sso.component.html","webpack:///./src/app/settings/premium.component.ts","webpack:///./src/app/settings/premium.component.html","webpack:///./src/app/settings/settings.component.ts","webpack:///./src/app/settings/settings.component.html","webpack:///./src/app/settings/user-subscription.component.ts","webpack:///./src/app/settings/user-subscription.component.html","webpack:///./src/app/tools/breach-report.component.ts","webpack:///./src/app/tools/breach-report.component.html","webpack:///./src/app/tools/password-generator.component.ts","webpack:///./src/app/tools/password-generator.component.html","webpack:///./src/app/tools/password-generator-history.component.ts","webpack:///./src/app/tools/password-generator-history.component.html","webpack:///./src/app/tools/tools.component.ts","webpack:///./src/app/tools/tools.component.html","webpack:///./src/app/vault/vault.component.ts","webpack:///./src/app/vault/vault.component.html","webpack:///./src/app/settings/update-key.component.ts","webpack:///./src/app/settings/update-key.component.html","webpack:///./src/app/vault/folder-add-edit.component.ts","webpack:///./src/app/vault/folder-add-edit.component.html","webpack:///./src/app/vault/share.component.ts","webpack:///./src/app/vault/share.component.html","webpack:///./src/app/vault/send-info.component.ts","webpack:///./src/app/vault/send-info.component.html","webpack:///./src/app/settings/verify-email.component.ts","webpack:///./src/app/settings/verify-email.component.html","webpack:///./src/app/services/organization-guard.service.ts","webpack:///./src/app/services/organization-type-guard.service.ts","webpack:///./jslib/common/src/enums/permissions.ts","webpack:///./jslib/angular/src/services/auth-guard.service.ts","webpack:///./jslib/angular/src/services/lock-guard.service.ts","webpack:///./jslib/angular/src/services/unauth-guard.service.ts","webpack:///./src/app/settings/emergency-access-view.component.ts","webpack:///./src/app/settings/emergency-access-view.component.html","webpack:///./jslib/common/src/models/domain/encryptedObject.ts","webpack:///./jslib/common/src/models/domain/environmentUrls.ts","webpack:///./jslib/common/src/models/domain/generatedPasswordHistory.ts","webpack:///./src/app/settings/emergency-access-attachments.component.ts","webpack:///./src/app/settings/emergency-add-edit.component.ts","webpack:///./src/app/settings/emergency-access.component.ts","webpack:///./src/app/settings/emergency-access.component.html","webpack:///./jslib/common/src/enums/emergencyAccessType.ts","webpack:///./jslib/common/src/models/response/emergencyAccessResponse.ts","webpack:///./src/app/settings/emergency-access-add-edit.component.ts","webpack:///./src/app/settings/emergency-access-add-edit.component.html","webpack:///./src/app/settings/emergency-access-confirm.component.ts","webpack:///./src/app/settings/emergency-access-confirm.component.html","webpack:///./src/app/settings/emergency-access-takeover.component.ts","webpack:///./src/app/settings/emergency-access-takeover.component.html","webpack:///./jslib/common/src/services/api.service.ts","webpack:///./jslib/common/src/models/response/organizationResponse.ts","webpack:///./jslib/common/src/models/response/planResponse.ts","webpack:///./jslib/common/src/models/response/subscriptionResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorWebAuthnResponse.ts","webpack:///./jslib/common/src/services/appId.service.ts","webpack:///./jslib/common/src/services/audit.service.ts","webpack:///./jslib/common/src/services/cipher.service.ts","webpack:///./jslib/common/src/misc/sequentialize.ts","webpack:///./jslib/common/src/services/collection.service.ts","webpack:///./jslib/common/src/misc/serviceUtils.ts","webpack:///./jslib/common/src/services/container.service.ts","webpack:///./jslib/common/src/services/crypto.service.ts","webpack:///./jslib/common/src/misc/wordlist.ts","webpack:///./jslib/common/src/services/environment.service.ts","webpack:///./jslib/common/src/services/folder.service.ts","webpack:///./jslib/common/src/services/i18n.service.ts","webpack:///./jslib/common/src/services/passwordGeneration.service.ts","webpack:///./jslib/common/src/services/settings.service.ts","webpack:///./jslib/common/src/services/state.service.ts","webpack:///./jslib/common/src/services/sync.service.ts","webpack:///./jslib/common/src/models/data/sendData.ts","webpack:///./jslib/common/src/services/token.service.ts","webpack:///./jslib/common/src/services/totp.service.ts","webpack:///./jslib/common/src/services/user.service.ts","webpack:///./jslib/common/src/services/vaultTimeout.service.ts","webpack:///./jslib/common/src/services/consoleLog.service.ts","webpack:///./jslib/common/src/enums/logLevelType.ts","webpack:///./jslib/common/src/models/export/cipherWithIds.ts","webpack:///./jslib/common/src/models/export/collectionWithId.ts","webpack:///./jslib/common/src/models/export/folderWithId.ts","webpack:///./jslib/common/src/importers/onepasswordImporters/onepasswordCsvImporter.ts","webpack:///./jslib/common/src/models/view/index.ts","webpack:///./jslib/common/src/enums/notificationType.ts","webpack:///./src/app/main.ts","webpack:///./src/scss/styles.scss?580e","webpack:///./src/app/app.module.ts","webpack:///./src/app/app-routing.module.ts","webpack:///./jslib/common/src/services/broadcaster.service.ts","webpack:///./jslib/common/src/misc/tldjs.noop.ts","webpack:///./jslib/common/src/models/request/emergencyAccessAcceptRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserAcceptRequest.ts","webpack:///./jslib/angular/src/components/hint.component.ts","webpack:///./jslib/common/src/models/request/passwordHintRequest.ts","webpack:///./jslib/angular/src/components/lock.component.ts","webpack:///./jslib/angular/src/components/login.component.ts","webpack:///./jslib/common/src/models/request/deleteRecoverRequest.ts","webpack:///./jslib/common/src/models/request/twoFactorRecoveryRequest.ts","webpack:///./jslib/angular/src/components/register.component.ts","webpack:///./jslib/common/src/models/request/registerRequest.ts","webpack:///./jslib/common/src/models/request/referenceEventRequest.ts","webpack:///./jslib/angular/src/components/set-password.component.ts","webpack:///./jslib/common/src/models/request/setPasswordRequest.ts","webpack:///./jslib/angular/src/components/two-factor-options.component.ts","webpack:///./jslib/angular/src/components/modal.component.ts","webpack:///./jslib/angular/src/components/two-factor.component.ts","webpack:///./jslib/common/src/models/request/deviceRequest.ts","webpack:///./jslib/common/src/models/request/preloginRequest.ts","webpack:///./jslib/common/src/models/request/tokenRequest.ts","webpack:///./jslib/common/src/misc/webauthn.ts","webpack:///./jslib/common/src/models/request/verifyEmailRequest.ts","webpack:///./jslib/common/src/models/request/verifyDeleteRecoverRequest.ts","webpack:///./jslib/common/src/models/view/eventView.ts","webpack:///./jslib/common/src/models/request/groupRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserConfirmRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserBulkConfirmRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserResetPasswordRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserInviteRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserUpdateRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserUpdateGroupsRequest.ts","webpack:///./jslib/common/src/abstractions/appId.service.ts","webpack:///./jslib/common/src/abstractions/log.service.ts","webpack:///./jslib/common/src/models/request/policyRequest.ts","webpack:///./jslib/common/src/models/request/organizationUpdateRequest.ts","webpack:///./jslib/common/src/enums/transactionType.ts","webpack:///./jslib/common/src/models/request/verifyBankRequest.ts","webpack:///./jslib/common/src/models/request/bitPayInvoiceRequest.ts","webpack:///./jslib/common/src/models/request/paymentRequest.ts","webpack:///./jslib/common/src/models/request/organizationCreateRequest.ts","webpack:///./jslib/common/src/models/request/organizationUpgradeRequest.ts","webpack:///./jslib/common/src/models/request/seatRequest.ts","webpack:///./jslib/common/src/models/request/storageRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorDuoRequest.ts","webpack:///./jslib/common/src/models/request/twoFactorProviderRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorAuthenticatorRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorEmailRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorWebAuthnDeleteRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorWebAuthnRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorYubioOtpRequest.ts","webpack:///./jslib/angular/src/components/export.component.ts","webpack:///./jslib/common/src/models/request/attachmentRequest.ts","webpack:///./jslib/angular/src/components/add-edit.component.ts","webpack:///./jslib/common/src/models/response/index.ts","webpack:///./jslib/common/src/models/response/passwordHistoryResponse.ts","webpack:///./jslib/common/src/models/response/deviceResponse.ts","webpack:///./jslib/angular/src/components/ciphers.component.ts","webpack:///./jslib/angular/src/components/collections.component.ts","webpack:///./jslib/angular/src/components/groupings.component.ts","webpack:///./jslib/common/src/models/domain/sendAccess.ts","webpack:///./jslib/common/src/models/view/sendAccessView.ts","webpack:///./jslib/common/src/models/request/sendAccessRequest.ts","webpack:///./jslib/angular/src/components/send/send.component.ts","webpack:///./jslib/angular/src/components/send/add-edit.component.ts","webpack:///./jslib/common/src/models/request/updateProfileRequest.ts","webpack:///./jslib/common/src/models/request/emailRequest.ts","webpack:///./jslib/common/src/models/request/kdfRequest.ts","webpack:///./jslib/common/src/models/request/updateDomainsRequest.ts","webpack:///./jslib/angular/src/components/password-generator.component.ts","webpack:///./jslib/angular/src/components/password-generator-history.component.ts","webpack:///./jslib/angular/src/components/folder-add-edit.component.ts","webpack:///./jslib/angular/src/components/share.component.ts","webpack:///./jslib/common/src/models/data/index.ts","webpack:///./jslib/common/src/models/domain/index.ts","webpack:///./jslib/common/src/models/request/emergencyAccessConfirmRequest.ts","webpack:///./jslib/common/src/models/request/emergencyAccessInviteRequest.ts","webpack:///./jslib/common/src/models/request/emergencyAccessPasswordRequest.ts","webpack:///./src/app/services/services.module.ts","webpack:///./src/services/broadcasterMessaging.service.ts","webpack:///./src/services/htmlStorage.service.ts","webpack:///./jslib/common/src/services/index.ts","webpack:///./jslib/common/src/models/response/apiKeyResponse.ts","webpack:///./jslib/common/src/models/response/attachmentUploadDataResponse.ts","webpack:///./jslib/common/src/models/response/billingResponse.ts","webpack:///./jslib/common/src/models/response/breachAccountResponse.ts","webpack:///./jslib/common/src/models/response/eventResponse.ts","webpack:///./jslib/common/src/models/response/groupResponse.ts","webpack:///./jslib/common/src/models/response/organizationKeysResponse.ts","webpack:///./jslib/common/src/models/response/organizationSubscriptionResponse.ts","webpack:///./jslib/common/src/models/response/organizationUserBulkPublicKeyResponse.ts","webpack:///./jslib/common/src/models/response/organizationUserBulkResponse.ts","webpack:///./jslib/common/src/models/response/organizationUserResponse.ts","webpack:///./jslib/common/src/models/response/paymentResponse.ts","webpack:///./jslib/common/src/models/response/preloginResponse.ts","webpack:///./jslib/common/src/models/response/sendAccessResponse.ts","webpack:///./jslib/common/src/models/response/sendFileDownloadDataResponse.ts","webpack:///./jslib/common/src/models/response/sendFileUploadDataResponse.ts","webpack:///./jslib/common/src/models/response/taxInfoResponse.ts","webpack:///./jslib/common/src/models/response/taxRateResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorAuthenticatorResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorDuoResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorEmailResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorProviderResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorRescoverResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorYubiKeyResponse.ts","webpack:///./jslib/common/src/models/response/userKeyResponse.ts","webpack:///./jslib/common/src/misc/throttle.ts","webpack:///./jslib/common/src/models/request/cipherBulkMoveRequest.ts","webpack:///./jslib/common/src/models/request/cipherBulkRestoreRequest.ts","webpack:///./jslib/common/src/models/request/cipherBulkShareRequest.ts","webpack:///./jslib/common/src/models/request/cipherShareRequest.ts","webpack:///./jslib/common/src/models/domain/sortedCiphersCache.ts","webpack:///./jslib/common/src/models/domain/treeNode.ts","webpack:///./jslib/common/src/models/domain/encArrayBuffer.ts","webpack:///./jslib/common/src/models/domain/passwordGeneratorPolicyOptions.ts","webpack:///./jslib/common/src/models/data/organizationData.ts","webpack:///./jslib/common/src/models/data/sendFileData.ts","webpack:///./jslib/common/src/models/data/sendTextData.ts","webpack:///./src/services/i18n.service.ts","webpack:///./src/services/memoryStorage.service.ts","webpack:///./src/services/webPlatformUtils.service.ts","webpack:///./jslib/common/src/services/event.service.ts","webpack:///./jslib/common/src/models/data/eventData.ts","webpack:///./jslib/common/src/models/request/eventRequest.ts","webpack:///./jslib/common/src/services/export.service.ts","webpack:///./jslib/common/src/models/export/cipher.ts","webpack:///./jslib/common/src/models/export/card.ts","webpack:///./jslib/common/src/models/export/field.ts","webpack:///./jslib/common/src/models/export/identity.ts","webpack:///./jslib/common/src/models/export/login.ts","webpack:///./jslib/common/src/models/export/loginUri.ts","webpack:///./jslib/common/src/models/export/secureNote.ts","webpack:///./jslib/common/src/models/export/collection.ts","webpack:///./jslib/common/src/models/export/event.ts","webpack:///./jslib/common/src/models/export/folder.ts","webpack:///./jslib/common/src/services/fileUpload.service.ts","webpack:///./jslib/common/src/enums/fileUploadType.ts","webpack:///./jslib/common/src/services/azureFileUpload.service.ts","webpack:///./jslib/common/src/services/bitwardenFileUpload.service.ts","webpack:///./jslib/common/src/services/import.service.ts","webpack:///./jslib/common/src/models/request/importCiphersRequest.ts","webpack:///./jslib/common/src/models/request/importOrganizationCiphersRequest.ts","webpack:///./jslib/common/src/models/request/kvpRequest.ts","webpack:///./jslib/common/src/importers/ascendoCsvImporter.ts","webpack:///./jslib/common/src/importers/avastCsvImporter.ts","webpack:///./jslib/common/src/importers/avastJsonImporter.ts","webpack:///./jslib/common/src/importers/aviraCsvImporter.ts","webpack:///./jslib/common/src/importers/bitwardenCsvImporter.ts","webpack:///./jslib/common/src/importers/bitwardenJsonImporter.ts","webpack:///./jslib/common/src/importers/blackBerryCsvImporter.ts","webpack:///./jslib/common/src/importers/blurCsvImporter.ts","webpack:///./jslib/common/src/importers/buttercupCsvImporter.ts","webpack:///./jslib/common/src/importers/chromeCsvImporter.ts","webpack:///./jslib/common/src/importers/clipperzHtmlImporter.ts","webpack:///./jslib/common/src/importers/codebookCsvImporter.ts","webpack:///./jslib/common/src/importers/dashlaneJsonImporter.ts","webpack:///./jslib/common/src/importers/encryptrCsvImporter.ts","webpack:///./jslib/common/src/importers/enpassCsvImporter.ts","webpack:///./jslib/common/src/importers/enpassJsonImporter.ts","webpack:///./jslib/common/src/importers/firefoxCsvImporter.ts","webpack:///./jslib/common/src/importers/fsecureFskImporter.ts","webpack:///./jslib/common/src/importers/gnomeJsonImporter.ts","webpack:///./jslib/common/src/importers/kasperskyTxtImporter.ts","webpack:///./jslib/common/src/importers/keepass2XmlImporter.ts","webpack:///./jslib/common/src/importers/keepassxCsvImporter.ts","webpack:///./jslib/common/src/importers/keeperCsvImporter.ts","webpack:///./jslib/common/src/importers/lastpassCsvImporter.ts","webpack:///./jslib/common/src/importers/logMeOnceCsvImporter.ts","webpack:///./jslib/common/src/importers/meldiumCsvImporter.ts","webpack:///./jslib/common/src/importers/msecureCsvImporter.ts","webpack:///./jslib/common/src/importers/mykiCsvImporter.ts","webpack:///./jslib/common/src/importers/nordpassCsvImporter.ts","webpack:///./jslib/common/src/importers/onepasswordImporters/onepassword1PifImporter.ts","webpack:///./jslib/common/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts","webpack:///./jslib/common/src/importers/onepasswordImporters/cipherImportContext.ts","webpack:///./jslib/common/src/models/view/view.ts","webpack:///./jslib/common/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts","webpack:///./jslib/common/src/importers/padlockCsvImporter.ts","webpack:///./jslib/common/src/importers/passkeepCsvImporter.ts","webpack:///./jslib/common/src/importers/passmanJsonImporter.ts","webpack:///./jslib/common/src/importers/passpackCsvImporter.ts","webpack:///./jslib/common/src/importers/passwordAgentCsvImporter.ts","webpack:///./jslib/common/src/importers/passwordBossJsonImporter.ts","webpack:///./jslib/common/src/importers/passwordDragonXmlImporter.ts","webpack:///./jslib/common/src/importers/passwordSafeXmlImporter.ts","webpack:///./jslib/common/src/importers/passwordWalletTxtImporter.ts","webpack:///./jslib/common/src/importers/rememBearCsvImporter.ts","webpack:///./jslib/common/src/importers/roboformCsvImporter.ts","webpack:///./jslib/common/src/importers/safeInCloudXmlImporter.ts","webpack:///./jslib/common/src/enums/index.ts","webpack:///./jslib/common/src/importers/saferpassCsvImport.ts","webpack:///./jslib/common/src/importers/secureSafeCsvImporter.ts","webpack:///./jslib/common/src/importers/splashIdCsvImporter.ts","webpack:///./jslib/common/src/importers/stickyPasswordXmlImporter.ts","webpack:///./jslib/common/src/importers/truekeyCsvImporter.ts","webpack:///./jslib/common/src/importers/upmCsvImporter.ts","webpack:///./jslib/common/src/importers/yotiCsvImporter.ts","webpack:///./jslib/common/src/importers/zohoVaultCsvImporter.ts","webpack:///./jslib/common/src/services/notifications.service.ts","webpack:///./jslib/common/src/models/response/notificationResponse.ts","webpack:///./jslib/common/src/services/passwordReprompt.service.ts","webpack:///./jslib/common/src/services/policy.service.ts","webpack:///./jslib/common/src/models/domain/masterPasswordPolicyOptions.ts","webpack:///./jslib/common/src/models/domain/resetPasswordPolicyOptions.ts","webpack:///./jslib/common/src/services/search.service.ts","webpack:///./jslib/common/src/services/send.service.ts","webpack:///./jslib/common/src/models/request/sendRequest.ts","webpack:///./jslib/common/src/models/domain/send.ts","webpack:///./jslib/common/src/services/webCryptoFunction.service.ts","webpack:///./jslib/common/src/models/domain/decryptParameters.ts","webpack:///./jslib/common/src/abstractions/fileUpload.service.ts","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.component.html","webpack:///./jslib/angular/src/directives/blur-click.directive.ts","webpack:///./jslib/angular/src/directives/box-row.directive.ts","webpack:///./jslib/angular/src/pipes/search-ciphers.pipe.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","I18nService","PlatformUtilsService","ApiService","UserService","i18nService","transform","id","p1","p2","p3","this","I18nPipe","Pipe","MessagingService","CryptoService","el","renderer","title","ngOnInit","nativeElement","hasAttribute","setAttribute","A11yTitleDirective","Directive","selector","appA11yTitle","Input","validationService","ngOnChanges","changes","appApiAction","then","loading","response","e","showError","ApiActionDirective","CipherService","getResponseProperty","propertyName","exactName","Error","undefined","otherCasePropertyName","charAt","toUpperCase","toLowerCase","BaseResponse","type","calloutStyle","icon","CalloutComponent","Component","templateUrl","clickable","organizationId","logService","ConsoleLogService","newLineRegex","passwordFieldNames","usernameFieldNames","notesFieldNames","uriFieldNames","parseCsvOptions","encoding","skipEmptyLines","parseXml","doc","DOMParser","parseFromString","querySelector","parseCsv","header","options","parseOptions","assign","splitNewLine","join","trim","papa","parse","errors","forEach","row","warning","message","parseSingleRowCsv","rowData","isNullOrWhitespace","parsedRow","makeUriArray","uri","loginUri","LoginUriView","fixUri","match","u","indexOf","substring","nameFromUrl","url","hostname","Utils","getHostname","startsWith","replace","str","getValueOrDefault","defaultValue","split","getCardBrand","cardNum","re","RegExp","test","setCardExpiration","cipher","expiration","parts","month","year","substr","card","expMonth","expYear","moveFoldersToCollections","folderRelationships","collectionRelationships","collections","folders","map","f","collection","CollectionView","querySelectorDirectChild","parentEl","query","els","querySelectorAllDirectChild","Array","from","querySelectorAll","filter","parentNode","initLoginCipher","CipherView","favorite","notes","fields","login","LoginView","CipherType","Login","cleanupCipher","processKvp","FieldType","Text","search","field","FieldView","processFolder","folderName","folderIndex","hasFolder","addFolder","FolderView","ciphers","convertToNoteIfNeeded","username","password","uris","SecureNote","secureNote","SecureNoteView","SecureNoteType","Generic","BaseImporter","success","ImportResult","nodeURL","init","inited","isNode","process","release","isBrowser","isNativeScript","isMobileBrowser","isMobile","isAppleMobileBrowser","isAppleMobile","global","fromB64ToArray","Uint8Array","Buffer","binaryString","atob","bytes","charCodeAt","fromUrlB64ToArray","fromUrlB64ToB64","fromHexToArray","parseInt","fromUtf8ToArray","strUtf8","unescape","encodeURIComponent","arr","fromByteStringToArray","fromBufferToB64","buffer","toString","binary","byteLength","String","fromCharCode","btoa","fromBufferToUrlB64","fromB64toUrlB64","b64Str","fromBufferToUtf8","encodedString","decodeURIComponent","escape","fromBufferToByteString","fromBufferToHex","x","urlB64Str","output","fromUrlB64ToUtf8","fromB64ToUtf8","fromUtf8ToB64","utfStr","newGuid","Math","random","isGuid","uriString","getUrl","getHost","host","getDomain","httpUrl","tldEndingRegex","getUrlObject","validIpAddress","urlDomain","tldjs","domain","getQueryParams","Map","pair","set","getSortFunction","prop","a","b","collator","compare","localeCompare","nameOf","target","source","ipString","win","mobile","navigator","userAgent","vendor","opera","URL","hasProtocol","anchor","document","createElement","href","PolicyService","PasswordGenerationService","StateService","onClick","$event","preventDefault","StopClickDirective","HostListener","StorageService","CollectionService","condition","disableComplete","InputVerbatimDirective","appInputVerbatim","FolderService","stopPropagation","StopPropDirective","EnvironmentService","AuthService","SyncService","autofocus","focus","AutofocusDirective","appAutofocus","environmentUrlsKey","ConstantsService","disableGaKey","disableAddLoginNotificationKey","disableContextMenuItemKey","disableFaviconKey","disableBadgeCounterKey","disableAutoTotpCopyKey","enableAutoFillOnPageLoadKey","autoFillOnPageLoadDefaultKey","vaultTimeoutKey","vaultTimeoutActionKey","lastActiveKey","neverDomainsKey","installedVersionKey","localeKey","themeKey","collapsedGroupingsKey","autoConfirmFingerprints","dontShowCardsCurrentTab","dontShowIdentitiesCurrentTab","defaultUriMatch","pinProtectedKey","protectedPin","clearClipboardKey","eventCollectionKey","ssoCodeVerifierKey","ssoStateKey","biometricUnlockKey","biometricText","biometricAwaitingAcceptance","biometricFingerprintValidated","disableChangedPasswordNotificationKey","EventService","indexedEntityId","SearchService","PasswordVerificationRequest","buildDomainModel","dataObj","alreadyEncrypted","notEncList","objProp","EncString","buildDataModel","notEncStringList","encryptedString","decryptObj","viewModel","orgId","promises","self","theProp","Promise","resolve","mapProp","decrypt","val","all","componentFactoryResolver","messagingService","ngOnDestroy","show","parentContainer","fade","setComponentParameters","factory","resolveComponentFactory","componentRef","container","createComponent","instance","modals","jq","modal","on","onShow","emit","send","onShown","find","onClose","onClosed","clear","close","ModalComponent","template","VaultTimeoutService","encryptedStringOrType","iv","mac","encType","encryptionType","headerPieces","encPieces","EncryptionType","AesCbc128_HmacSha256_B64","AesCbc256_B64","AesCbc256_HmacSha256_B64","Rsa2048_OaepSha256_B64","Rsa2048_OaepSha1_B64","decryptedValue","containerService","bitwardenContainerService","cryptoService","getCryptoService","getOrgKey","decryptToUtf8","AuditService","cardholderName","code","_brand","_number","_subTitle","repeat","number","brand","count","exp","formatYear","CardView","CryptoFunctionService","TokenService","IconMap","environmentService","stateService","iconsUrl","baseUrl","imageEnabled","load","setLoginIcon","Card","Identity","hostnameUri","isWebsite","image","fallbackImage","IconComponent","BroadcasterService","Injectable","TwoFactorProviderType","PolicyType","TotpService","StripeElementStyle","base","color","fontFamily","fontSize","fontSmoothing","invalid","StripeElementClasses","empty","platformUtilsService","apiService","showMethods","showOptions","method","PaymentMethodType","hideBank","hidePaypal","hideCredit","bank","routing_number","account_number","account_holder_name","account_holder_type","currency","country","paymentMethodType","btInstance","stripe","stripeElements","stripeCardNumberElement","stripeCardExpiryElement","stripeCardCvcElement","stripeScript","src","async","onload","Stripe","WebConstants","stripeLiveKey","elements","setStripeElement","btScript","PayPal","BankAccount","Credit","head","appendChild","removeChild","setTimeout","body","btStylesheet","changeMethod","braintree","dropin","authorization","isDev","btSandboxKey","btProductionKey","paymentOptionPriority","paypal","flow","buttonStyle","label","size","shape","createErr","console","error","createPaymentToken","reject","requestPaymentMethod","payload","nonce","catch","err","postSetupPayment","clientSecret","handleCardSetup","setupIntent","status","payment_method","createToken","token","handleStripeCardPayment","successCallback","paymentIntent","style","classes","placeholder","mount","PaymentComponent","folderId","organizationUseTotp","edit","viewPassword","identity","IdentityView","attachments","passwordHistory","collectionIds","revisionDate","deletedDate","reprompt","CipherRepromptType","None","localData","subTitle","hasAttachments","passwordRevisionDate","obj","externalId","readOnly","hidePasswords","Collection","OrganizationUserStatusType","ExportService","route","onCountryChanged","EventEmitter","taxInfo","taxId","line1","line2","city","state","postalCode","includeTaxId","pristine","parent","params","subscribe","getOrganizationTaxInfo","getTaxInfo","getTaxRates","taxRates","localTaxRate","rate","getTaxInfoRequest","request","OrganizationTaxInfoUpdateRequest","TaxInfoUpdateRequest","submitTaxInfo","hasChanged","putOrganizationTaxInfo","putTaxInfo","changeCountry","TaxInfoComponent","Output","middleName","address1","address2","address3","company","email","phone","ssn","passportNumber","licenseNumber","_firstName","_lastName","firstName","lastName","address","addressPart2","totp","autofillOnPageLoad","hasUris","some","canLaunch","launchUri","SendService","CollectionData","userId","LoginData","SecureNoteData","CardData","IdentityData","FieldData","AttachmentData","ph","PasswordHistoryData","CipherData","SendType","toasterService","onAuthed","submit","masterPassword","popAsync","hashPassword","masterPasswordHash","formPromise","getTwoFactorRecover","Duo","OrganizationDuo","getTwoFactorOrganizationDuo","getTwoFactorDuo","Email","getTwoFactorEmail","WebAuthn","getTwoFactorWebAuthn","Authenticator","getTwoFactorAuthenticator","Yubikey","getTwoFactorYubiKey","TwoFactorVerifyComponent","Date","Attachment","Field","Password","encKey","model","reduce","promise","attachment","decAttachment","decField","decPh","toCipherData","toISOString","toLoginData","toSecureNoteData","toCardData","toIdentityData","toFieldData","toAttachmentData","toPasswordHistoryData","Cipher","PasswordRepromptService","showText","scoreWidth","score","text","PasswordStrengthComponent","items","searchText","prop1","prop2","prop3","SearchPipe","EventType","newField","showValue","lastKnownRevisionDate","LoginApi","LoginUriApi","SecureNoteApi","CardApi","IdentityApi","FieldApi","lastUsedDate","attachments2","fileName","attachmentRequest","AttachmentRequest","CipherRequest","identityResponse","errorModel","responseErrorModel","validationErrors","statusCode","getSingleMessage","getAllMessages","messages","item","prefix","lastSep","lastIndexOf","ErrorResponse","defaultErrorMessage","concat","showToast","timeout","ValidationService","router","activatedRoute","titleService","previousUrl","currentUrl","events","event","NavigationEnd","titleId","rawTitle","child","firstChild","snapshot","newTitle","setTitle","getPreviousUrl","setPreviousUrl","RouterService","KdfType","OrganizationUserType","policyService","getDefaultDateFilters","end","getFullYear","getMonth","getDate","setDate","start","toDateTimeLocalString","formatDateFilters","filterStart","filterEnd","isNaN","getTime","getEventInfo","ev","EventOptions","appInfo","getAppInfo","deviceType","getEventMessage","humanReadableMessage","appIcon","appName","msg","humanReadableMsg","User_LoggedIn","User_ChangedPassword","User_Updated2fa","User_Disabled2fa","User_Recovered2fa","User_FailedLogIn","User_FailedLogIn2fa","User_ClientExportedVault","Cipher_Created","Cipher_Updated","Cipher_Deleted","Cipher_SoftDeleted","Cipher_Restored","Cipher_AttachmentCreated","Cipher_AttachmentDeleted","Cipher_Shared","Cipher_ClientViewed","Cipher_ClientToggledPasswordVisible","Cipher_ClientToggledHiddenFieldVisible","Cipher_ClientToggledCardCodeVisible","Cipher_ClientCopiedHiddenField","Cipher_ClientCopiedPassword","Cipher_ClientCopiedCardCode","Cipher_ClientAutofilled","Cipher_UpdatedCollections","Collection_Created","Collection_Updated","Collection_Deleted","Group_Created","Group_Updated","Group_Deleted","OrganizationUser_Invited","OrganizationUser_Confirmed","OrganizationUser_Updated","OrganizationUser_Removed","OrganizationUser_UpdatedGroups","OrganizationUser_UnlinkedSso","OrganizationUser_ResetPassword_Enroll","OrganizationUser_ResetPassword_Withdraw","OrganizationUser_AdminResetPassword","Organization_Updated","Organization_PurgedVault","Policy_Updated","formatCipherId","getShortId","cipherId","formatCollectionId","collectionId","formatGroupId","groupId","formatOrgUserId","organizationUserId","formatPolicyId","getAll","policies","policy","policyId","DeviceType","Android","iOS","UWP","ChromeExtension","FirefoxExtension","OperaExtension","EdgeExtension","VivaldiExtension","SafariExtension","WindowsDesktop","MacOsDesktop","LinuxDesktop","ChromeBrowser","FirefoxBrowser","OperaBrowser","SafariBrowser","VivaldiBrowser","EdgeBrowser","IEBrowser","UnknownBrowser","shortId","cipherInfo","makeAnchor","outerHTML","innerHTML","date","pad","getHours","getMinutes","num","norm","floor","abs","EventInfo","macKey","keyB64","encKeyB64","macKeyB64","SymmetricCryptoKey","onUpdated","twoFactorProviderType","enabled","authed","auth","authResponse","enable","enableFunction","disable","showDialog","TwoFactorProviderRequest","putTwoFactorOrganizationDisable","putTwoFactorDisable","TwoFactorBaseComponent","userService","requiresPaid","hasLoaded","setCiphers","selectCipher","childComponent","cipherAddEditModalRef","organization","AddEditComponent","onSavedCipher","onDeletedCipher","onRestoredCipher","checkAccess","useTotp","canAccessPremium","accessPremium","CipherReportComponent","ViewContainerRef","ViewChild","read","static","CanLaunchWhitelist","_uri","_domain","_hostname","_host","_canLaunch","UriMatchType","RegularExpression","cipherService","folderService","auditService","collectionService","totpService","passwordGenerationService","eventService","showRevisionDate","hasPasswordHistory","viewingPasswordHistory","viewOnly","passwordRevisionDisplayDate","cleanUp","totpUpdateCode","getTimeInterval","totpTick","totpInterval","setInterval","toggleFavorite","launch","copy","typeI18nKey","aType","copyToClipboard","editMode","collect","generatePassword","confirmed","getOptions","premiumRequired","upgradeOrganization","viewHistory","clearInterval","getCode","totpCode","half","totpCodeFormatted","allowOwnershipAssignment","cloneMode","ownershipOptions","allowPersonal","intervalSeconds","epoch","round","mod","totpSec","totpDash","totpLow","ImportService","AttachmentResponse","h","PasswordHistoryResponse","CipherResponse","searchService","passwordRepromptService","showAddNew","onAttachmentsClicked","onShareClicked","onCollectionsClicked","onCloneClicked","cipherType","userHasPremiumAccess","pageSize","selectAll","repromptCipher","share","clone","delete","actionPromise","permanent","isDeleted","deleteCipher","refresh","restore","restoreWithServer","protectedFields","includes","displayTotpCopyButton","select","selectCount","checkCipher","checked","getSelected","getSelectedIds","hasTotp","deleteWithServer","softDeleteWithServer","showFixOldAttachments","hasOldAttachments","showPasswordPrompt","CiphersComponent","HashPurpose","publicKey","encryptedPrivateKey","KeysRequest","PolicyData","TwoFactorProviders","description","priority","sort","premium","tokenService","appIdService","vaultTimeoutService","setCryptoKeys","selectedTwoFactorProviderType","logIn","makePreloginKey","hashedPassword","LocalAuthorization","localHashedPassword","logInHelper","logInSso","codeVerifier","redirectUrl","logInApiKey","clientId","logInTwoFactor","twoFactorProvider","twoFactorToken","remember","localMasterPasswordHash","ssoRedirectUrl","logInComplete","logInSsoComplete","logInApiKeyComplete","logOut","callback","getSupportedTwoFactorProviders","providers","twoFactorProvidersData","has","supportsDuo","supportsWebAuthn","getDefaultTwoFactorProvider","webAuthnSupported","providerType","providerPriority","provider","kdf","kdfIterations","postPrelogin","PreloginRequest","preloginResponse","makeKey","authingWithApiKey","authingWithSso","authingWithPassword","getTwoFactorToken","storedTwoFactorToken","getAppId","appId","deviceRequest","DeviceRequest","emailPassword","codeCodeVerifier","clientIdClientSecret","TokenRequest","Remember","postIdentityToken","clearState","AuthResult","twoFactor","accessToken","twoFactorResponse","twoFactorProviders2","twoFactorProviders","tokenResponse","resetMasterPassword","setTwoFactorToken","setTokens","refreshToken","setInformation","getUserId","getEmail","setKey","setKeyHash","setEncKey","privateKey","makeKeyPair","keyPair","postAccountKeys","setEncPrivateKey","biometricLocked","SelectionReadOnlyRequest","SettingsService","PlanType","syncService","showFree","showCancel","product","ProductType","Free","plan","onSuccess","onCanceled","selfHosted","ownedBusiness","premiumAccessAddon","additionalStorage","additionalSeats","productTypes","singleOrgPolicyBlock","freeTrial","isSelfHost","getPlans","plans","Enterprise","Teams","selectedPlan","isAnnual","validPlans","Custom","canBeUsedByBusiness","legacyYear","disabled","additionalStoragePriceMonthly","additionalStoragePricePerGb","seatPriceMonthly","seatPrice","additionalStorageTotal","hasAdditionalStorageOption","seatTotal","hasAdditionalSeatsOption","subTotal","basePrice","hasPremiumAccessOption","premiumAccessOptionPrice","taxComponent","taxRate","subtotal","taxCharges","changedProduct","selectablePlans","baseSeats","trialPeriodDays","changedOwnedBusiness","TeamsAnnually","changedCountry","paymentComponent","cancel","SingleOrg","getAllOrganizations","orgs","org","Owner","Admin","Invited","files","createOrganization","fileEl","getElementById","doSubmit","tokenResult","makeShareKey","shareKey","encrypt","collectionCt","orgKeys","fd","FormData","append","postOrganizationLicense","OrganizationKeysRequest","postOrganizationKeys","OrganizationCreateRequest","collectionName","billingEmail","keys","planType","paymentToken","businessName","additionalStorageGb","billingAddressPostalCode","billingAddressCountry","taxIdNumber","billingAddressLine1","billingAddressLine2","billingAddressCity","billingAddressState","postOrganization","OrganizationUpgradeRequest","getOrganization","hasPublicAndPrivateKeys","orgShareKey","postOrganizationUpgrade","paymentIntentClientSecret","refreshIdentityToken","fullSync","navigate","OrganizationPlansComponent","LoginUri","view","toLoginUriData","LoginUriData","elementRef","trueValue","falseValue","propagateChange","_","onHostChange","writeValue","setProperty","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","TrueFalseValueDirective","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","SelectionReadOnlyResponse","organizations","emailVerified","masterPasswordHint","culture","twoFactorEnabled","securityStamp","ProfileOrganizationResponse","ProfileResponse","storageService","onSearchTextChanged","searchPlaceholder","searchTextChanged","GroupingsComponent","selectType","usePolicies","useGroups","useDirectory","useEvents","use2fa","useApi","useBusinessPortal","useSso","useResetPassword","selfHost","usersGetPremium","seats","maxCollections","maxStorageGb","ssoBound","identifier","permissions","resetPasswordEnrolled","Confirmed","Manager","isAdmin","accessBusinessPortal","accessEventLogs","accessImportExport","accessReports","manageAllCollections","isManager","manageAssignedCollections","manageGroups","manageSso","managePolicies","manageUsers","manageResetPassword","Organization","sizeName","SendFileView","hidden","SendTextView","vault","loaded","ResetPassword","allowEnrollmentChanges","showEnrolledStatus","unlinkSso","deleteSsoUser","leave","postLeaveOrganization","toggleResetPasswordEnrollment","keyString","toastStringRef","getOrganizationKeys","getEncKey","rsaEncrypt","encryptedKey","OrganizationUserResetPasswordEnrollmentRequest","resetPasswordKey","putOrganizationUserResetPasswordEnrollment","OrganizationsComponent","getName","lock","NavbarComponent","getApplicationVersion","version","FooterComponent","Policy","getMasterPasswordPolicyOptions","enforcedPolicyOptions","getPasswordScoreAlertDisplay","minComplexity","strongPassword","setupSubmitActions","getKdf","getKdfIterations","makeEncKey","remakeEncKey","performSubmitActions","masterPasswordRetype","strengthResult","passwordStrength","getPasswordStrengthUserInput","evaluateMasterPassword","updatePasswordStrength","masterPasswordStrengthTimeout","clearTimeout","masterPasswordScore","userInput","atPosition","ChangePasswordComponent","onEditedUsers","organizationUserType","organizationUserStatusType","showSelected","selectedCount","allUsers","loadUsers","getOrganizationUsers","users","entity","getGroupUsers","entityId","user","getCollectionUsers","accessAll","check","selectedChanged","filterSelected","selections","putGroupUsers","putCollectionUsers","EntityUsersComponent","entityName","ids","OrganizationUserBulkRequest","showUser","orgUsersUserIdMap","orgUsersIdMap","defaultDates","loadEvents","clearExisting","refreshPromise","morePromise","dates","getEventsOrganizationUser","continuationToken","getEventsCipher","actingUserId","eventInfo","userName","userEmail","ip","ipAddress","EntityEventsComponent","manageCiphers","PermissionsApi","postKey","apiKey","keyType","ApiKeyComponent","postPurgeCiphers","PurgeVaultComponent","firstLoaded","showAdjustPayment","showAddCredit","transactionType","TransactionType","getOrganizationBilling","billing","getUserBilling","verifyBank","VerifyBankRequest","amount1","verifyAmount1","amount2","verifyAmount2","verifyBankPromise","postOrganizationVerifyBank","addCredit","paymentSourceInApp","closeAddCredit","changePayment","closePayment","balance","paymentSource","AppleInApp","GoogleInApp","invoices","transactions","UserBillingComponent","onAdded","ppButtonFormAction","buttonActionProduction","ppButtonBusinessId","businessIdProduction","ppLoading","buttonActionSandbox","businessIdSandbox","creditAmount","ppButtonCustomField","subject","returnUrl","location","ppButtonFormRef","BitPay","req","BitPayInvoiceRequest","credit","amount","creditAmountNumber","postBitPayInvoice","bitPayUrl","formatAmount","floatAmount","parseFloat","toFixed","AddCreditComponent","ElementRef","onAdjusted","PaymentRequest","taxInfoComponent","postAccountPayment","postOrganizationPayment","AdjustPaymentComponent","currentType","updatePromise","postAccountLicense","postOrganizationLicenseUpdate","UpdateLicenseComponent","storageGbPrice","add","interval","storageAdjustment","StorageRequest","storageGbAdjustment","action","postAccountStorage","postOrganizationStorage","relativeTo","AdjustStorageComponent","processResponse","UpdateTwoFactorDuoRequest","integrationKey","ikey","secretKey","skey","putTwoFactorOrganizationDuo","putTwoFactorDuo","TwoFactorDuoComponent","showPolicyWarning","filterProvider","getTwoFactorProviders","evaluatePolicies","manage","openModal","authenticatorModalRef","TwoFactorAuthenticatorComponent","updateStatus","yubikeyModalRef","TwoFactorYubiKeyComponent","duoModalRef","emailModalRef","TwoFactorEmailComponent","webAuthnModalRef","TwoFactorWebAuthnComponent","recoveryCode","recoveryModalRef","TwoFactorRecoveryComponent","ref","TwoFactorAuthentication","TwoFactorSetupComponent","exportService","saved","ExportComponent","exposedPasswordMap","getAllCiphers","allCiphers","exposedPasswordCiphers","passwordLeaked","exposedCount","getAllDecrypted","canManageCipher","ExposedPasswordsReportComponent","originalCipher","canManageAllCollections","loadCollections","loadCipher","getCipherAdmin","encryptCipher","saveCipher","putCipherAdmin","CipherCreateRequest","postCipherAdmin","deleteCipherAdmin","putDeleteCipherAdmin","AttachmentView","orgKey","decryptToBytes","decValue","PasswordHistoryView","importService","format","successNavigate","setImportOptions","importOptions","importer","getImporter","fileContents","getFileContents","content","import","getFormatInstructionTitle","results","featuredImportOptions","regularImportOptions","fire","heightAuto","buttonsStyling","iconHtml","input","inputValue","inputAttributes","titleText","showConfirmButton","confirmButtonText","onOpen","popupEl","scrollTo","file","reader","FileReader","readAsText","evt","pre","textContent","onerror","ImportComponent","services","cipherDocs","load2fa","fetch","Request","json","categoryName","responseJson","serviceName","category","service","InactiveTwoFactorReportComponent","ciphersWithPasswords","passwordUseMap","reusedPasswordCiphers","ReusedPasswordsReportComponent","unsecuredCiphers","UnsecuredWebsitesReportComponent","passwordStrengthMap","passwordStrengthCache","weakPasswordCiphers","isUserNameNotEmpty","getCacheKey","hasUserName","cacheKey","scoreKey","WeakPasswordsReportComponent","reupload","reuploadCipherAttachment","AttachmentsComponent","CollectionResponse","CollectionDetailsResponse","groups","g","CollectionGroupDetailsResponse","globalEquivalentDomains","equivalentDomains","GlobalDomainResponse","DomainsResponse","FolderResponse","accessId","maxAccessCount","accessCount","expirationDate","deletionDate","hideEmail","SendTextApi","SendFileApi","SendResponse","onEventsClicked","accessEvents","getAllFromApiForOrganization","indexCiphers","applyFilter","deleted","CollectionsComponent","getCollections","collectionDomains","decryptMany","unassignedCollection","getAllNested","nestedCollections","collapse","grouping","isCollapsed","bulkDelete","promptPassword","selectedIds","ciphersComponent","bulkDeleteModalRef","BulkDeleteComponent","cipherIds","onDeleted","bulkRestore","bulkRestoreModalRef","BulkRestoreComponent","onRestored","bulkShare","selectedCiphers","bulkShareModalRef","BulkShareComponent","onShared","bulkMove","bulkMoveModalRef","BulkMoveComponent","onMoved","notProtected","BulkActionsComponent","SendFile","SendText","CipherWithIdRequest","folder","FolderRequest","onCopy","copyText","selection","getSelection","rangeCount","getRangeAt","stringEndPos","newLinePos","SelectCopyDirective","regexpEmojiPresentation","passwordArray","colorizedPassword","character","isSpecial","ColorPasswordPipe","FolderData","Folder","NotificationsService","webpackEmptyAsyncContext","classList","remove","FrontendLayoutComponent","BroadcasterSubscriptionId","broadcasterService","ngZone","businessUrl","enterpriseUrl","run","command","unsubscribe","goToBusinessPortal","businessTokenPromise","getEnterprisePortalSignInToken","showManageTab","showToolsTab","isOwner","canManageUsers","canManageAssignedCollections","canManageGroups","canManagePolicies","canAccessEventLogs","canAccessImportExport","canAccessReports","canAccessBusinessPortal","OrganizationLayoutComponent","UserLayoutComponent","fired","queryParams","qParams","errorMessage","isAuthenticated","EmergencyAccessAcceptRequest","postEmergencyAccessAccept","toast","save","AcceptEmergencyComponent","OrganizationUserAcceptRequest","performResetPasswordAutoEnroll","postOrganizationUserAccept","resetRequest","orgName","organizationName","policyList","getPoliciesByToken","mapPoliciesFromToken","getResetPasswordPolicyOptions","autoEnrollEnabled","AcceptOrganizationComponent","HintComponent","routerService","onSuccessfulSubmit","successRoute","LockComponent","togglePassword","authService","cryptoFunctionService","showResetPasswordAutoEnrollWarning","onSuccessfulLoginNavigate","goAfterLogIn","queryParamsSub","invite","orgInvite","emergencyInvite","loginRedirect","LoginComponent","DeleteRecoverRequest","postAccountRecoverDelete","RecoverDeleteComponent","TwoFactorRecoveryRequest","postTwoFactorRecover","RecoverTwoFactorComponent","showCreateOrgMessage","layout","referenceData","ReferenceEventRequest","reference","cookie","pop","policiesData","RegisterComponent","SetPasswordComponent","IdentifierStorageKey","redirectUri","origin","storedIdentifier","SsoComponent","loggingIn","twoFactorRoute","changePasswordRoute","checkState","getOrgIdentiferFromState","codeChallenge","returnUri","includeUserIdentifier","initiateSsoFormPromise","preValidate","buildAuthorizeUrl","authorizeUrl","sameWindow","preValidateSso","passwordOptions","uppercase","lowercase","numbers","special","hash","codeVerifierHash","identityBaseUrl","getSsoUserIdentifier","userIdentifier","orgIdFromState","onSuccessfulLoginTwoFactorNavigate","sso","onSuccessfulLoginChangePasswordNavigate","disableFavicon","onSuccessfulLogin","stateSplit","checkStateSplit","anotherMethod","twoFactorOptionsModal","TwoFactorOptionsComponent","onProviderSelected","selectedProviderType","onRecoverSelected","TwoFactorComponent","recover","TwoFactorEmailRequest","postAccountVerifyEmailToken","VerifyEmailRequest","VerifyEmailTokenComponent","VerifyDeleteRecoverRequest","postAccountRecoverDeleteToken","VerifyRecoverDeleteComponent","didScroll","pagedCollectionsCount","getUserCollections","resetPaging","loadMore","pagedLength","pagedCollections","pagedSize","addEditModalRef","CollectionAddEditComponent","onSavedCollection","onDeletedCollection","removeCollection","deleteCollection","usersModalRef","isSearching","isSearchable","isPaging","searching","index","accessGroups","getGroups","groupsResponse","getCollectionDetails","group","CollectionRequest","putCollection","postCollection","deletePromise","dirtyDates","exportEvents","appApiPromiseUnfulfilled","parseDates","exportPromise","export","loadAndParseEvents","getEventExport","getFileName","saveFile","startDate","endDate","getEventsOrganization","EventView","EventsComponent","pagedGroupsCount","pagedGroups","GroupAddEditComponent","onSavedGroup","onDeletedGroup","removeGroup","deleteGroup","GroupsComponent","access","getGroupDetails","GroupRequest","putGroup","postGroup","accessPolicies","ManageComponent","searchPipe","statusMap","canResetPassword","orgUseResetPassword","orgHasKeys","orgResetPasswordPolicyEnabled","callingUserType","pagedUsersCount","canManageUsersPassword","viewEvents","allowResetPassword","orgUser","callingUserHasPermission","pagedUsers","Accepted","confirmedCount","acceptedCount","UserAddEditComponent","onSavedUser","onDeletedUser","removeUser","groupsModalRef","UserGroupsComponent","deleteOrganizationUser","reinvite","postOrganizationUserReinvite","bulkRemove","bulkRemoveModalRef","BulkRemoveComponent","getCheckedUsers","bulkReinvite","filteredUsers","postManyOrganizationUserReinvite","showBulkStatus","bulkConfirm","bulkConfirmModalRef","BulkConfirmComponent","confirm","confirmUser","doConfirmation","mapIndex","updateUser","autoConfirm","confirmModalRef","UserConfirmComponent","onConfirmedUser","getUserPublicKey","publicKeyResponse","log","getFingerprint","eventsModalRef","resetPassword","resetPasswordModalRef","ResetPasswordComponent","onPasswordReset","checkUser","successfullMessage","bulkStatusModalRef","BulkStatusComponent","OrganizationUserConfirmRequest","postOrganizationUserConfirm","PeopleComponent","publicKeys","fingerprints","statuses","done","excludedUsers","postOrganizationUsersPublicKey","entry","fingerprint","userIdsWithKeys","OrganizationUserBulkConfirmRequest","postOrganizationUserBulkConfirm","deleteManyOrganizationUsers","newPassword","showPassword","getOrganizationUserResetPasswordDetails","kdfType","orgSymKey","decPrivateKey","rsaDecrypt","userEncKey","newKey","newPasswordHash","newEncKey","OrganizationUserResetPasswordRequest","newMasterPasswordHash","putOrganizationUserResetPassword","newPasswordStrengthTimeout","User","showCustom","getOrganizationUser","setRequestPermissions","clearPermissions","handleDependentPermissions","OrganizationUserUpdateRequest","putOrganizationUser","OrganizationUserInviteRequest","emails","postOrganizationUserInvite","dontAskAgain","getOrganizationUserGroups","userGroups","ug","OrganizationUserUpdateGroupsRequest","groupIds","putOrganizationUserGroups","userCanAccessBusinessPortal","policiesEnabledMap","display","MasterPassword","PasswordGenerator","RequireSso","PersonalOwnership","DisableSend","SendOptions","policyIdFromEvents","orgPolicies","orgPolicy","getPolicies","op","editModalRef","PolicyEditComponent","onSavedPolicy","goToEnterprisePortal","enterpriseTokenPromise","PoliciesComponent","AppIdService","LogService","policyType","masterPassMinComplexity","passwordScores","defaultTypes","getPolicy","passGenDefaultType","defaultType","passGenMinLength","minLength","passGenUseUpper","useUpper","passGenUseLower","useLower","passGenUseNumbers","useNumbers","passGenUseSpecial","useSpecial","passGenMinNumbers","minNumbers","passGenMinSpecial","minSpecial","passGenMinNumberWords","minNumberWords","passGenCapitalize","capitalize","passGenIncludeNumber","includeNumber","masterPassMinLength","masterPassRequireUpper","requireUpper","masterPassRequireLower","requireLower","masterPassRequireNumbers","requireNumbers","masterPassRequireSpecial","requireSpecial","sendDisableHideEmail","disableHideEmail","resetPasswordAutoEnroll","PolicyRequest","putPolicy","canUseApi","OrganizationUpdateRequest","putOrganization","taxFormPromise","deleteOrganization","deleteModalRef","DeleteOrganizationComponent","purgeVault","purgeModalRef","viewApiKey","apiKeyModalRef","postOrganizationApiKey","scope","grantType","apiKeyTitle","apiKeyWarning","apiKeyDescription","rotateApiKey","rotateApiKeyModalRef","isRotation","postOrganizationRotateApiKey","AccountComponent","OrganizationBillingComponent","stripeTestKey","adjustSeatsAdd","showAdjustSeats","adjustStorageAdd","showAdjustStorage","showUpdateLicense","showDownloadLicense","showChangePlan","getOrganizationSubscription","sub","reinstate","reinstatePromise","postOrganizationReinstate","cancelPromise","postOrganizationCancel","changePlan","subscription","closeChangePlan","changed","downloadLicense","closeDownloadLicense","updateLicense","closeUpdateLicense","updated","adjustSeats","closeSeats","adjustStorage","closeStorage","cancelled","cancelAtEndDate","upcomingInvoice","storageGb","storagePercentage","OrganizationSubscriptionComponent","onChanged","defaultUpgradePlan","FamiliesAnnually","defaultUpgradeProduct","Families","ChangePlanComponent","onDownloaded","installationId","getOrganizationLicense","license","licenseString","JSON","stringify","DownloadLicenseComponent","seatAdjustment","SeatRequest","postOrganizationSeat","AdjustSeatsComponent","access2fa","SettingsComponent","duoComp","getTwoFactorOrganizationProviders","qrScript","UpdateTwoFactorAuthenticatorRequest","putTwoFactorAuthenticator","QRious","element","sendEmail","emailPromise","postTwoFactorEmailSetup","sentEmail","UpdateTwoFactorEmailRequest","putTwoFactorEmail","print","w","open","write","onafterprint","formatString","keyIdAvailable","keysConfiguredCount","webAuthnResponse","UpdateTwoFactorWebAuthnRequest","deviceResponse","putTwoFactorWebAuthn","removePromise","UpdateTwoFactorWebAuthnDeleteRequest","deleteTwoFactorWebAuthn","readKey","challengePromise","getTwoFactorWebAuthnChallenge","challenge","readDevice","webAuthnChallenge","resetWebAuthn","credentials","webAuthnListening","webAuthnError","listening","k","configured","migrated","nfc","UpdateTwoFactorYubioOtpRequest","key1","key2","key3","key4","key5","putTwoFactorYubiKey","disablePromise","existingKey","padRight","max","getExportData","getOrganizationExport","collectEvent","manageableCiphers","onError","appFallbackSrc","FallbackSrcDirective","ToolsComponent","changeDetectorRef","trashCleanupWarning","groupingsComponent","successfully","detectChanges","selectedAll","reload","selectedTrash","filterDeleted","selectedType","filterCipherType","selectedCollectionId","filterCollection","clearGroupingFilters","clearFilters","go","filterSearchText","editCipherAttachments","attachmentsModalRef","madeAttachmentChanges","onUploadedAttachment","onDeletedAttachment","editCipherCollections","collectionsModalRef","onSavedCollections","addCipher","component","editCipher","cloneCipher","replaceUrl","VaultComponent","saveCipherAttachment","saveAttachmentWithServer","cipherDomain","deleteCipherAttachment","attachmentId","deleteCipherAttachmentAdmin","onReuploadedAttachment","deletePromises","reuploadPromises","emergencyAccessId","hasUpdatedKey","download","downloading","canAccessAttachments","getAttachmentData","attachmentDownloadResponse","cache","arrayBuffer","buf","decryptFromBytes","decBuf","hasEncKey","admin","saveAttachmentRawWithServer","foundAttachment","a2","deleteAttachmentWithServer","Window","domains","excluded","access_token","expiresIn","expires_in","refresh_token","tokenType","token_type","IdentityTokenResponse","IdentityTwoFactorResponse","KeysResponse","dr","ListResponse","sends","profile","PolicyResponse","SyncResponse","allowSelectNone","loadCipherCollections","saveCollections","CipherCollectionsRequest","putCipherCollectionsAdmin","deleteCiphers","deleteCiphersAdmin","deleteManyWithServer","softDeleteManyWithServer","deleteRequest","CipherBulkDeleteRequest","deleteManyCiphersAdmin","putDeleteManyCiphersAdmin","moveManyWithServer","restoreManyWithServer","nonShareableCount","shareableCiphers","writeableCollections","allCollections","filterCollections","checkedCollectionIds","shareManyWithServer","sendType","passwordRequired","unavailable","maskedText","creatorIdentifier","sendId","decKey","getSendFileDownloadData","accessRequest","downloadData","toggleText","keyArray","SendAccessRequest","pbkdf2","passwordHash","sendResponse","postSendAccess","sendAccess","SendAccess","makeSendKey","AccessComponent","sendService","addSend","disableSend","editSend","sendAddEditModalRef","onSavedSend","onDeletedSend","SendComponent","datePipe","copyLinkToClipboard","link","SendView","deauthorizeSessions","deauthModalRef","DeauthorizeSessionsComponent","deleteAccount","DeleteAccountComponent","viewUserApiKey","viewUserApiKeyModalRef","postUserApiKey","rotateUserApiKey","rotateUserApiKeyModalRef","postUserRotateApiKey","postSecurityStamp","getProfile","UpdateProfileRequest","putProfile","ProfileComponent","tokenSent","newEmail","EmailTokenRequest","postEmailToken","EmailRequest","postEmail","reset","ChangeEmailComponent","rotateEncKey","rotateEncKeyClicked","currentMasterPassword","PasswordRequest","postPassword","updateKey","getPrivateKey","encPrivateKey","UpdateKeyRequest","FolderWithIdRequest","postAccountKey","updateEmergencyAccesses","updateAllResetPasswordKeys","getEmergencyAccessTrusted","emergencyAccess","allowedStatuses","EmergencyAccessStatusType","RecoveryInitiated","RecoveryApproved","filteredAccesses","details","granteeId","updateRequest","EmergencyAccessUpdateRequest","waitTimeDays","keyEncrypted","putEmergencyAccess","PBKDF2_SHA256","kdfOptions","KdfRequest","postAccountKdf","ChangeKdfComponent","orgPlansComponent","EnterpriseAnnually","CreateOrganizationComponent","custom","getSettingsDomains","toggleExcluded","globalDomain","customize","UpdateDomainsRequest","excludedGlobalEquivalentDomains","d2","putSettingsDomains","indexTrackBy","DomainRulesComponent","vaultTimeout","vaultTimeoutAction","vaultTimeouts","localeOptions","supportedTranslationLocales","locale","localeNames","disableIcons","enableGravatars","enableFullWidth","startingLocale","setVaultTimeoutOptions","vaultTimeoutActionChanged","newValue","OptionsComponent","ngAfterContentInit","LinkSsoComponent","premiumPrice","getPremium","getEmailVerified","finalizePremium","postPremium","paymentResponse","PremiumComponent","getUserSubscription","usingInAppPurchase","postReinstatePremium","postCancelPremium","UserSubscriptionComponent","breachedAccounts","checkedUsername","BreachReportComponent","history","historyModalRef","PasswordGeneratorHistoryComponent","lengthChanged","minNumberChanged","minSpecialChanged","PasswordGeneratorComponent","saveOptions","regenerate","favorites","showVerifyEmail","showBrowserOutdated","showUpdateKey","showPremiumCallout","organizationsComponent","selectedFavorites","filterFavorites","selectedFolder","selectedFolderId","filterFolder","shareCipher","shareModalRef","ShareComponent","onSharedCipher","folderAddEditModalRef","FolderAddEditComponent","onSavedFolder","loadFolders","editFolder","onDeletedFolder","updateKeyModalRef","UpdateKeyComponent","makeRequest","getKey","SendInfoComponent","postAccountVerifyEmail","VerifyEmailComponent","canActivate","OrganizationGuardService","Permissions","AccessBusinessPortal","AccessEventLogs","AccessImportExport","AccessReports","ManageAllCollections","ManageAssignedCollections","ManageGroups","ManageOrganization","ManagePolicies","ManageUsers","ManageUsersPassword","OrganizationTypeGuardService","routerState","isLocked","promptBiometric","AuthGuardService","homepage","LockGuardService","UnauthGuardService","EmergencyAddEditComponent","postEmergencyAccessView","viewAttachments","EmergencyAccessAttachmentsComponent","decCiphers","oldKeyBuffer","oldEncKey","cipherResponse","cipherData","getLocaleSortingFunction","EmergencyAccessViewComponent","EncryptedObject","EnvironmentUrls","GeneratedPasswordHistory","emergencyAccessType","EmergencyAccessType","emergencyAccessStatusType","isOrganizationOwner","trustedContacts","getEmergencyAccessGranted","grantedContacts","EmergencyAccessAddEditComponent","onSaved","contact","postEmergencyAccessReinvite","EmergencyAccessConfirmComponent","onConfirmed","deleteEmergencyAccess","EmergencyAccessGranteeDetailsResponse","removeGrantee","removeGrantor","requestAccess","postEmergencyAccessInitiate","approve","View","postEmergencyAccessApprove","postEmergencyAccessReject","takeover","EmergencyAccessTakeoverComponent","takeoverModalRef","onDone","EmergencyAccessConfirmRequest","postEmergencyAccessConfirm","EmergencyAccessComponent","creationDate","grantorId","EmergencyAccessGrantorDetailsResponse","EmergencyAccessTakeoverResponse","EmergencyAccessViewResponse","waitTimes","getEmergencyAccess","waitTime","EmergencyAccessInviteRequest","postEmergencyAccessInvite","getEmergencyGrantorPolicies","policyResponse","postEmergencyAccessTakeover","takeoverResponse","EmergencyAccessPasswordRequest","postEmergencyAccessPassword","logoutCallback","customUserAgent","urlsSet","isWebClient","isDesktopClient","usingBaseUrl","device","getDevice","setUrls","urls","apiBaseUrl","eventsBaseUrl","api","headers","Headers","alterIdentityTokenHeaders","qsStringify","toIdentityToken","identityClientId","getCredentials","isJsonResponse","TwoFactorProviders2","clearTwoFactorToken","doRefreshToken","BillingResponse","SubscriptionResponse","TaxInfoResponse","PreloginResponse","setPassword","getAccountRevisionDate","postPasswordHint","postRegister","PaymentResponse","postIapCheck","postAccountVerifyPassword","ApiKeyResponse","getFolder","postFolder","putFolder","deleteFolder","getSend","apiUrl","addSendIdHeader","SendAccessResponse","SendFileDownloadDataResponse","getSends","postSend","postFileTypeSend","SendFileUploadDataResponse","renewSendFileUploadUrl","fileId","postSendFile","postSendFileLegacy","putSend","putSendRemovePassword","deleteSend","getCipher","getCiphersOrganization","postCipher","postCipherCreate","putCipher","deleteManyCiphers","putMoveCiphers","putShareCipher","putShareCiphers","putCipherCollections","path","postImportCiphers","postImportOrganizationCiphers","putDeleteCipher","putDeleteManyCiphers","putRestoreCipher","putRestoreCipherAdmin","putRestoreManyCiphers","postCipherAttachment","AttachmentUploadDataResponse","postCipherAttachmentLegacy","postCipherAttachmentAdminLegacy","postShareCipherAttachment","renewAttachmentUploadUrl","postAttachmentFile","deleteCollectionUser","GroupDetailsResponse","GroupResponse","deleteGroupUser","OrganizationUserDetailsResponse","OrganizationUserUserDetailsResponse","OrganizationUserResetPasswordDetailsReponse","OrganizationUserBulkResponse","OrganizationUserBulkPublicKeyResponse","PlanResponse","postImportDirectory","postPublicImportDirectory","TaxRateResponse","getSync","TwoFactorProviderResponse","TwoFactorAuthenticatorResponse","TwoFactorEmailResponse","TwoFactorDuoResponse","TwoFactorYubiKeyResponse","TwoFactorWebAuthnResponse","ChallengeResponse","TwoFactorRecoverResponse","rawId","extensions","getClientExtensionResults","AttestationObject","attestationObject","clientDataJson","clientDataJSON","postTwoFactorEmail","OrganizationResponse","OrganizationSubscriptionResponse","OrganizationKeysResponse","getEvents","addEventParameters","EventResponse","postEventsCollect","getActiveBearerToken","authHeader","UserKeyResponse","getHibpBreach","BreachAccountResponse","getToken","tokenNeedsRefresh","nativeFetch","handleError","getRefreshToken","decodedToken","decodeToken","grant_type","client_id","hasResponse","alterHeaders","requestInit","tokenError","isTextResponse","Message","typeHeader","businessAddress1","businessAddress2","businessAddress3","businessCountry","businessTaxNumber","nameLocalizationKey","descriptionLocalizationKey","baseStorageGb","maxUsers","maxAdditionalSeats","maxAdditionalStorage","hasSelfHost","hasPolicies","hasGroups","hasDirectory","hasEvents","has2fa","hasApi","hasSso","hasResetPassword","upgradeSortOrder","displaySortOrder","stripePlanId","stripeSeatPlanId","stripeStoragePlanId","stripePremiumAccessPlanId","storageName","BillingSubscriptionResponse","BillingSubscriptionUpcomingInvoiceResponse","trialEndDate","periodStartDate","periodEndDate","cancelledDate","BillingSubscriptionItemResponse","quantity","KeyResponse","attestation","authenticatorSelection","excludeCredentials","pubKeyCredParams","rp","makeAndGetAppId","getAnonymousAppId","existingId","guid","hashBytes","hashStart","hashEnding","leakedHashes","v","throttle","Keys","DomainMatchBlacklist","Set","settingsService","fileUploadService","sortedCiphersCache","SortedCiphersCache","sortCiphersByLastUsed","_decryptedCipherCache","clearIndex","clearCache","decryptedCipherCache","existingCipher","hasFields","existingHiddenFields","Hidden","ef","matchedField","encryptObjProperty","encryptCipherData","encryptFields","encryptPasswordHistories","encryptAttachments","attachmentsModel","encAttachments","fieldsModel","encFields","encryptField","encField","fieldModel","Boolean","phModels","encPhs","encryptPasswordHistory","encPh","phModel","hasKey","getAllDecryptedForGrouping","groupingId","getAllDecryptedForUrl","includeOtherTypes","defaultMatch","eqDomainsPromise","getEquivalentDomains","eqDomains","matches","eqDomain","matchingDomains","Domain","domainUrlHost","Host","urlHost","Exact","StartsWith","Never","getLastUsedForUrl","getCipherForUrl","getLastLaunchedForUrl","getNextCipherForUrl","updateLastUsedIndexForUrl","updateLastUsedIndex","updateLastUsedDate","ciphersLocalData","cached","updateLastLaunchedDate","lastLaunched","saveNeverDomain","saveWithServer","upsert","shareWithServer","attachmentPromises","shareAttachmentWithServer","encCipher","CipherShareRequest","encCiphers","CipherBulkShareRequest","unencryptedFile","readAsArrayBuffer","cData","filename","encFileName","dataEncKey","encryptToBytes","encData","fileSize","adminRequest","uploadDataResponse","cipherMiniResponse","uploadCipherAttachment","legacyServerAttachmentFileUpload","blob","Blob","filepath","contentType","saveCollectionsWithServer","CipherBulkMoveRequest","deleteAttachment","aLastUsed","bLastUsed","bothNotNull","sortCiphersByLastUsedThenName","aName","bName","softDelete","setDeletedDate","clearDeletedDate","constructor","CipherBulkRestoreRequest","restores","attachmentView","attachmentResponse","theObj","modelProp","lastUsed","isCached","addCiphers","getLastLaunched","getLastUsed","getNext","sequentialize","propertyKey","descriptor","originalMethod","caches","getCache","argsCacheKey","args","onFinally","decryptedCollectionCache","decCollections","nodes","collectionCopy","ServiceUtils","nestedTraverse","getNested","getTreeNodeObject","nodeTree","partIndex","delimiter","partName","node","TreeNode","children","newPartName","attachToWindow","attachToGlobal","ContainerService","encOrgKeys","keyHash","secureStorageService","platformUtilService","storeKey","setOrgKeys","keySuffix","getKeyFromStorage","symmetricKey","retrieveKeyFromStorage","validateKey","getKeyHash","compareAndUpdateKeyHash","storedKeyHash","localKeyHash","ServerAuthorization","serverKeyHash","encKeyCipher","decEncKey","stretchKey","getPublicKey","rsaExtractPublicKey","keyFingerprint","hkdfExpand","userFingerprint","hashPhrase","getOrgKeys","hasKeyInMemory","hasKeyStored","clearKey","clearSecretStorage","legacyEtmKey","clearStoredKey","clearKeyHash","clearEncKey","memoryOnly","clearKeyPair","clearOrgKeys","clearPinProtectedKey","clearKeys","toggleKey","salt","makeKeyFromPin","pin","protectedKeyCs","makePinKey","pinKey","randomBytes","rsaGenerateKeyPair","publicB64","privateEnc","keyMaterial","hkdf","sendKey","hashPurpose","iterations","getKeyForEncryption","theKey","buildEncKey","plainValue","plainBuf","aesEncrypt","encObj","encValue","macLen","encBytes","EncArrayBuffer","privateKeyValue","Rsa2048_OaepSha256_HmacSha256_B64","Rsa2048_OaepSha1_HmacSha256_B64","alg","encString","aesDecryptToBytes","decipher","aesDecryptToUtf8","encBuf","ctBytes","ivBytes","macBytes","randomNumber","min","rval","range","bitsNeeded","ceil","log2","bytesNeeded","mask","pow","byteArray","shouldStoreKey","biometricUnlock","supportsSecureStorage","macData","hmac","keyForEnc","resolveLegacyKey","fastParams","aesDecryptFastParameters","hmacFast","computedMac","compareFast","aesDecryptFast","aesDecrypt","minimumEntropy","entropyPerWord","EEFLongWordList","numWords","hashArr","entropyAvailable","phrase","hashNumber","bigInt","fromArray","remainder","divide","encKeyEnc","notificationsService","getWebVaultUrl","webVaultUrl","setUrlsFromStorage","urlsObj","icons","notifications","webVault","enterprise","envUrls","identityUrl","notificationsUrl","eventsUrl","formatUrl","decryptedFolderCache","decFolders","noneFolder","folderCopy","cId","updates","systemLanguage","localesDirectory","getLocalesJson","defaultMessages","localeMessages","translationLocale","Intl","Collator","numeric","sensitivity","loadMessages","translate","messagesObj","formattedLocale","locales","placeholders","placeProp","replaceToken","replaceContent","DefaultOptions","ambiguous","minNumber","minUppercase","minLowercase","wordSeparator","generatePassphrase","sanitizePasswordLength","positions","shuffleArray","allCharSet","lowercaseCharSet","uppercaseCharSet","numberCharSet","specialCharSet","positionChars","randomCharIndex","listLength","wordList","wordIndex","appendRandomNumberToRandomWord","optionsCache","enforcePasswordGeneratorPoliciesOnOptions","enforcedOptions","getPasswordGeneratorPolicyOptions","useUppercase","useLowercase","numberCount","specialCount","PasswordGeneratorPolicyOptions","currentPolicy","getHistory","encrypted","decryptHistory","addHistory","currentHistory","matchesPrevious","unshift","now","encryptHistory","newHistory","userInputs","globalUserInputs","finalUserInputs","zxcvbn","normalizeOptions","decrypted","array","forGeneration","minUppercaseCalc","minLowercaseCalc","minNumberCalc","minSpecialCalc","settingsCache","getSettingsKey","setEquivalentDomains","setSettingsKey","getSettings","settings","purge","syncInProgress","getLastSync","lastSync","setLastSync","toJSON","forceSync","allowThrowOnError","syncStarted","syncCompleted","needsSync","needsSyncing","syncProfile","syncFolders","syncCollections","syncCiphers","syncSends","syncSettings","syncPolicies","syncUpsertFolder","notification","isEdit","localFolder","remoteFolder","syncDeleteFolder","syncUpsertCipher","shouldUpdate","localCipher","checkCollections","remoteCipher","syncDeleteCipher","syncUpsertSend","localSend","remoteSend","SendData","syncDeleteSend","getSecurityStamp","stamp","setSecurityStamp","setEmailVerified","OrganizationData","replaceOrganizations","SendTextData","File","SendFileData","setToken","setRefreshToken","skipTokenStorage","toggleTokens","clearToken","decoded","getTokenExpirationDate","setUTCSeconds","tokenSecondsRemaining","offsetSeconds","msRemaining","valueOf","minutes","email_verified","getIssuer","iss","B32Chars","SteamChars","period","digits","keyB32","isOtpAuth","isSteamAuth","digitParams","periodParam","algParam","timeHex","leftPad","decToHex","timeBytes","keyBytes","b32ToBytes","sign","offset","otp","fullCode","trunc","isAutoCopyEnabled","b32ToHex","cleanedInput","bits","hex","byteIndex","chunk","signature","clearOrganizations","lockedCallback","loggedOutCallback","everBeenUnlocked","checkOnInterval","startCheck","checkVaultTimeout","isViewOpen","lockTimeout","lastActive","vaultTimeoutSeconds","allowSoftLock","isPinLockSet","isBiometricLockSet","timersMap","debug","LogLevelType","Debug","info","Info","Warning","level","warn","time","hrtime","timeEnd","elapsed","build","CipherWithIds","CollectionWithId","FolderWithId","IgnoredProperties","loginPropertyParsers","setLoginUsername","setLoginPassword","setLoginUris","creditCardPropertyParsers","setCreditCardNumber","setCreditCardVerification","setCreditCardCardholderName","setCreditCardExpiry","identityPropertyParsers","setIdentityFirstName","setIdentityInitial","setIdentityLastName","setIdentityUserName","setIdentityEmail","setIdentityPhone","setIdentityCompany","quoteChar","escapeChar","getProp","setNotes","setCipherType","altUsername","context","CipherImportContext","setKnownLoginValue","setKnownCreditCardValue","setKnownIdentityValue","setUnknownValue","entries","agg","getPropByRegexp","regexp","matchingKeys","getPropIncluding","includesMap","importRecord","func","lowerProperty","readableDate","toUTCString","OnePasswordCsvImporter","NotificationType","enableProdMode","platformBrowser","bootstrapModule","preserveWhitespaces","registerLocaleData","AppModule","AppComponent","DatePipe","BrowserModule","BrowserAnimationsModule","FormsModule","AppRoutingModule","ServicesModule","ToasterModule","forRoot","InfiniteScrollModule","DragDropModule","AvatarComponent","BlurClickDirective","BoxRowDirective","SearchCiphersPipe","NgModule","imports","declarations","entryComponents","bootstrap","routes","pathMatch","redirectTo","RouterModule","useHash","paramsInheritanceStrategy","subscribers","messageCallback","PasswordHintRequest","pinLock","webVaultHostname","invalidPinAttempts","pinSet","supportsBiometric","biometricLock","vaultUrl","failed","decPin","setKeyAndContinue","passwordValid","unlockBiometric","doContinue","rememberEmail","launchSsoBrowser","ssoRedirectUri","ssoCodeVerifier","webUrl","confirmMasterPassword","hint","showTerms","acceptPolicies","crypto","subtle","useLowerKdf","isIE","RegisterRequest","confirmField","syncLoading","SetPasswordRequest","orgIdentifier","onSuccessfulChangePassword","choose","backdrop","className","addEventListener","webAuthnReady","webAuthnNewTab","webAuthn","twoFactorEmail","loginRoute","authing","needsLock","cleanupWebAuthn","providerData","authWebAuthn","DuoWebSDK","iframe","sig_request","Signature","submit_callback","sig","stop","doToast","cleanup","getDeviceString","pushToken","codes","client_secret","code_verifier","redirect_uri","deviceIdentifier","deviceName","twoFactorRemember","errorCallback","infoCallback","parseFunction","parseMessage","connectorLink","URLSearchParams","base64Encode","btnText","allow","sendMessage","contentWindow","postMessage","removeEventListener","validMessage","warningDialog","downloadFile","encryptedFormat","getExport","extension","csv","onCancelled","onEditAttachments","onShareCipher","onEditCollections","onGeneratePassword","showCardNumber","showCardCode","fieldType","addFieldType","currentDate","typeOptions","cardBrandOptions","cardExpMonthOptions","identityTitleOptions","addFieldTypeOptions","uriMatchOptions","autofillOnPageLoadOptions","myEmail","addEditCipherInfo","organizationChanged","previousCipherId","addUri","removeUri","addField","removeField","trackByFunction","editCollections","restorePromise","restoreCipher","toggleCardNumber","Cipher_ClientToggledCardNumberVisible","toggleCardCode","toggleFieldValue","toggleUriOptions","loginUriMatchChanged","drop","moveItemInArray","previousIndex","currentIndex","checkPassword","checkPasswordPromise","repromptChanged","DeviceResponse","activeCipherId","onCipherClicked","onCipherRightClicked","onAddCipher","onAddCipherOptions","pagedCiphers","searchPending","searchTimeout","pagedCiphersCount","refreshing","indexedCiphers","deletedFilter","searchCiphers","rightClickCipher","addCipherOptions","selectedCollectionIds","showFolders","showCollections","showFavorites","showTrash","onAllClicked","onFavoritesClicked","onTrashClicked","onCipherTypeClicked","onFolderClicked","onAddFolder","onEditFolder","onCollectionClicked","setLoaded","collapsedGroupings","nestedFolders","clearSelections","selectFavorites","selectTrash","selectFolder","selectCollection","idPrefix","SendAccessView","expired","filteredSends","hasSearched","onSuccessfulLoad","applyTextSearch","removePassword","removePasswordWithServer","onSuccessfulRemovePassword","onSuccessfulDelete","sendLinkBaseUrl","urlB64Key","searchSends","DateField","copyLink","deletionDateSelect","expirationDateSelect","alertShown","deletionDateOptions","expirationDateOptions","isSafari","isFirefox","nullOrWhiteSpaceCount","expirationDateFallback","expirationTimeFallback","formatDateFallbacks","deletionDateFallback","deletionTimeFallback","disableSendPolicies","sendOptionsPolicies","loadSend","hasPassword","isDateTimeLocalSupported","dateToString","deletionDateParts","dateToSplitString","safariDeletionTime","expirationDateParts","safariExpirationTime","safariDeletionTimeOptions","safariTimeOptions","DeletionDate","safariExpirationTimeOptions","ExpriationDate","deletionDateTimeFallback","expirationDateTimeFallback","setHours","encryptSend","encSend","copySuccess","clearExpiration","typeChanged","toggleOptions","expirationDateFallbackChanged","sendData","dateString","togglePasswordVisible","strarray","noon","midnight","ams","pms","hour","midnightOption","standard","military","noonOption","amOption","pmOption","validTimes","previousValue","showSelect","onSelected","avoidAmbiguous","optionsResponse","sliderChanged","sliderInput","copyOptions","cipherView","language","BroadcasterMessagingService","consoleLogService","WebPlatformUtilsService","HtmlStorageService","MemoryStorageService","WebCryptoFunctionService","FileUploadService","eventLoggingService","initFactory","htmlEl","documentElement","theme","useValue","APP_INITIALIZER","useFactory","deps","LOCALE_ID","subscriber","arg","localStorageKeys","localStorageStartsWithKeys","memoryStorageStartsWithKeys","memoryStorage","isLocalStorage","localStorage","getItem","isMemoryStorage","sessionStorage","setItem","removeItem","swKey","fileUploadType","BillingSourceResponse","BillingTransactionResponse","BillingInvoiceResponse","cardBrand","needsVerification","pdfUrl","paid","createdDate","refunded","partiallyRefunded","refundedAmount","addedDate","breachDate","dataClasses","isActive","isVerified","logoPath","modifiedDate","pwnCount","OrganizationUserResponse","userProfile","taxIdType","limit","throttleKey","allThrottles","getThrottles","throttles","argsThrottleKey","queue","exec","comparator","sortedCiphersByUrl","timeouts","Ciphers","resetTimer","lastUsedIndex","y","getNextIndex","inEffect","filePath","store","browserCache","chrome","isChrome","isEdge","isOpera","isVivaldi","isMacAppStore","rel","click","blobData","blobOptions","fileNameLower","doDownload","endsWith","msSaveOrOpenBlob","msSaveBlob","createObjectURL","position","confirmText","cancelText","bodyIsHtml","iconClasses","bootstrapModal","removeAttribute","iconHtmlStr","html","showCancelButton","cancelButtonText","showPasswordDialog","passwordValidation","autocapitalize","autocorrect","inputValidator","isConfirmed","clipboardData","setData","queryCommandSupported","textarea","copyEl","contains","execCommand","readFromClipboard","authenticateBiometric","getDefaultSystemTheme","onDefaultSystemThemeChange","uploadEvents","eventType","uploadImmediately","orgIds","eventCollection","EventData","EventRequest","clearEvents","getEncryptedExport","getDecryptedExport","getOrganizationEncryptedExport","getOrganizationDecryptedExport","unparse","Event","padNumber","getSeconds","buildCommonCipher","encKeyValidation","jsonDoc","encKeyValidation_DO_NOT_EDIT","collectionPromises","decCol","cipherPromises","decCipher","width","padCharacter","numString","login_uri","login_username","login_password","login_totp","toView","values","toDomain","azureFileUploadService","AzureFileUploadService","bitwardenFileUploadService","BitwardenFileUploadService","uploadSendFile","uploadData","encryptedFileData","FileUploadType","Direct","Azure","upload","renewalCallback","encryptedFileName","azureUploadBlob","azureUploadBlocks","urlObject","searchParams","blobResponse","blockSize","getMaxBlockSize","blockIndex","numBlocks","blocksStaged","renewUrlIfNecessary","blockUrl","blockId","encodedBlockId","blockData","blockHeaders","blockRequest","blockResponse","blockListUrl","blockListXml","expiry","setTime","utfBlockId","blockIdList","xml","Version","day","Number","compareTo","apiCall","getImportOptions","importResult","halfway","last","badData","postImport","errorResponse","handleServerError","getImporterInstance","BitwardenCsvImporter","BitwardenJsonImporter","LastPassCsvImporter","KeePassXCsvImporter","AviraCsvImporter","BlurCsvImporter","SafeInCloudXmlImporter","PadlockCsvImporter","KeePass2XmlImporter","ChromeCsvImporter","FirefoxCsvImporter","UpmCsvImporter","SaferPassCsvImporter","MeldiumCsvImporter","OnePassword1PifImporter","OnePasswordWinCsvImporter","OnePasswordMacCsvImporter","KeeperCsvImporter","PasswordDragonXmlImporter","EnpassCsvImporter","EnpassJsonImporter","PasswordSafeXmlImporter","DashlaneJsonImporter","MSecureCsvImporter","StickyPasswordXmlImporter","TrueKeyCsvImporter","ClipperzHtmlImporter","RoboFormCsvImporter","AscendoCsvImporter","PasswordBossJsonImporter","ZohoVaultCsvImporter","SplashIdCsvImporter","PassKeepCsvImporter","GnomeJsonImporter","PasswordAgentCsvImporter","PasspackCsvImporter","PassmanJsonImporter","AvastCsvImporter","AvastJsonImporter","FSecureFskImporter","KasperskyTxtImporter","RememBearCsvImporter","PasswordWalletTxtImporter","MykiCsvImporter","SecureSafeCsvImporter","LogMeOnceCsvImporter","BlackBerryCsvImporter","ButtercupCsvImporter","CodebookCsvImporter","EncryptrCsvImporter","YotiCsvImporter","NordPassCsvImporter","ImportCiphersRequest","KvpRequest","ImportOrganizationCiphersRequest","itemType","fieldLower","web","logins","custName","note","pwd","loginName","cards","holderName","cardNumber","cvv","website","secondary_username","col","addCollection","collectionIndex","delimPosition","parseEncrypted","parseDecrypted","groupingsMap","fav","extra","OfficialProps","processingCustomFields","currentVersion","actionType","labelLower","Category","Favorite","Entry","Note","Username","TOTP","Website","Phone","PIN","Account","HandledResults","ADDRESS","processAddress","AUTHENTIFIANT","processAuth","BANKSTATEMENT","processNote","IDCARD","PAYMENTMEANS_CREDITCARD","processCard","IDENTITY","processIdentity","credential","secondaryLogin","fullName","nameParts","pseudo","addressName","addressFull","zipcode","owner","nameProperty","Label","Notes","CVV","Expiry","expParts","firstRow","containsField","fieldValue","fieldName","fieldNameLower","foldersMap","foldersIndexMap","folderTree","buildFolderTree","flattenFolderTree","template_type","processLogin","sensitive","uuid","parent_uuid","titlePrefix","tree","creditNumber","creditCvv","creditExpiry","keyRing","display_name","secret","attributes","attr","username_value","NotesHeader","ApplicationsHeader","WebsitesHeader","Delimiter","notesData","applicationsData","websitesData","workingData","parseDataCategory","applications","websites","nameKey","itemComment","itemCommentKey","colonIndex","rootGroup","traverse","isRootNode","groupPrefixName","groupName","nameEl","cipherIndex","entryString","valueEl","keyEl","attrs","ProtectInMemory","Title","Group","buildBaseCipher","parseSecureNote","parseCard","parseIdentity","ccnum","cardCipher","profilename","firstname","lastname","ccname","cccsc","ccexp","ccexpParts","middlename","zip","extraParts","processedNote","typeParts","mappedData","parseSecureNoteMapping","monthString","processingNotes","extraPart","DisplayName","UserName","Url","nickname","additionalInfo","twoFactAuthToken","cardName","exp_month","exp_year","firstAddressLine","secondAddressLine","zipCode","record","recordType","evaluateType","cardholdername","cardnumber","cvc","expirydate","processName","full_name","phone_number","line","trashed","processStandardItem","processWinOpVaultItem","overview","URLs","parsePasswordHistory","notesPlain","parseFields","sections","section","openContents","faveIndex","typeName","secureContents","maxSize","designationKey","valueKey","fieldDesignation","street","setIdentityAddress","expSplit","tags","tag","getValue","custom_fields","customField","field_type","tagsJson","Tags","tagJson","__parsed_extra","fieldsJson","extraFields","fieldJson","newVersion","altFormat","login_url","identifiers","valObj","expDate","cf","records","categoryText","accountName","tagName","passwordSafe","notesDelimiter","getAttribute","groupText","trash","cardholder","verification","expiryMonth","expMonthNumber","expiryYear","expYearNumber","Name","Pwd","Rf_fields","labelEl","cardEl","labelIdEl","labelId","fieldEl","notesEl","candidates","choice","Comment","parseFieldsToNotes","startIndex","loginNodes","loginNode","accountId","usernameText","passwordText","linkText","notesText","accountLogin","account","parentElement","buildGroupText","PropertiesToIgnore","memo","kind","expiryDate","document_content","ChamberName","parseData","SecretData","CustomData","connected","inactive","reconnectTimer","signalrConnection","off","signalR","HubConnectionBuilder","withUrl","accessTokenFactory","skipNegotiation","transport","HttpTransportType","WebSockets","withHubProtocol","signalRMsgPack","MessagePackHubProtocol","processNotification","NotificationResponse","onclose","reconnect","isAuthedAndUnlocked","updateConnection","sync","reconnectFromActivity","disconnectFromInactivity","contextId","payloadUserId","UserId","myUserId","SyncCipherCreate","SyncCipherUpdate","SyncCipherDelete","SyncLoginDelete","SyncFolderCreate","SyncFolderUpdate","SyncFolderDelete","SyncVault","SyncCiphers","SyncSettings","SyncOrgKeys","LogOut","SyncSendCreate","SyncSendUpdate","SyncSendDelete","SyncCipherNotification","SyncFolderNotification","UserNotification","SyncSendNotification","passwordValidator","policyCache","MasterPasswordPolicyOptions","toLocaleLowerCase","toLocaleUpperCase","resetPasswordPolicyOptions","ResetPasswordPolicyOptions","policiesResponse","indexing","searchableMinLength","builder","lunr","Builder","boost","extractor","uriExtractor","fieldExtractor","attachmentExtractor","isArray","every","getIndexForSearch","searchCiphersBasic","ciphersMap","searchResults","Query","wildcard","LEADING","TRAILING","q","tokenizer","term","joined","protocolIndex","queryIndex","decryptedSendCache","fileData","Send","cryptoKey","ArrayBuffer","encryptFileData","parseFile","decSends","SendRequest","legacyServerSendFileUpload","encFileData","fileLength","ua","isOldSafari","algorithm","forgeLen","passwordBytes","toByteString","saltBytes","derivedKeyBytes","forge","wcLen","passwordBuf","toBuf","saltBuf","pbkdf2Params","toWebCryptoAlgorithm","importKey","impKey","deriveBits","ikm","outputByteSize","infoBuf","hkdfParams","prk","hashLen","infoArr","runningOkmLength","previousT","okm","md","md5","sha1","valueBytes","update","digest","valueBuf","signingAlgorithm","mac1","mac2","arr1","arr2","getBytes","rand","Uint32Array","util","createBuffer","putInt32","DecryptParameters","meta","encKeyByteString","macKeyByteString","decode64","parameters","dataBuffer","createDecipher","finish","rsaParams","impPrivateKey","exportKey","jwkPrivateKey","jwkPublicKeyParams","kty","ext","impPublicKey","modulusLength","publicExponent","generateKey","getRandomValues","encodeUtf8","sanitizer","toasterConfig","ToasterConfig","showCloseButton","mouseoverTimerStop","animation","lastActivity","idleTimer","isIdle","runOutsideAngular","onmousemove","recordActivity","onmousedown","ontouchstart","onclick","onscroll","onkeypress","setFullWidth","idleStateChanged","sanitize","SecurityContext","HTML","bodyOutputType","BodyOutputType","TrustedHtml","trustedHtml","blur","elRef","formEls","formEl","inputEl"],"mappings":"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,KACGO,EAAYH,EAAW99D,IAAI,EAAAy9D,gBAAgBh8F,QACjDq8F,EAAaA,EAAWI,OAAO,EAAAT,gBAAgBh8F,QAC/Co8F,EAAO97F,KAAK,EAAA07F,gBAAgBQ,IAEhC,MAAO,CAAP,EAAOJ,UAGG,YAAApD,YAAd,SAA0Bp2F,EAAyBqpB,G,yGAE3CywE,EAAuB,KACA,KAAvB95F,EAAIA,IAAI+N,WAAR,MACe,GAAM3M,KAAKyyF,WAAW7zF,I,OACzB,OADNs5D,EAAS,SACH,GAAMl4D,KAAK2nC,QAAQ1f,EAAQiwC,I,cAAvCwgC,EAAY,S,oBACkB,KAAvB95F,EAAIA,IAAI+N,WAAR,MACK,GAAM3M,KAAK2nC,QAAQ1f,EAAQrpB,I,cAAvC85F,EAAY,S,aAEZ,MAAM,IAAI32F,MAAM,qB,OAEpB,MAAO,CAAC,EAAD,CAAC,IAAI,EAAAgzB,mBAAmB9M,GAASywE,YAhpB5C,GADC,EAAAhJ,eAAc,WAAM,qB,iDACA,EAAA36D,qB,8DA4ErB,GADC,EAAA26D,eAAc,WAAM,sB,mHAukBzB,EAxwBA,GAAa,EAAAtvF,iB,uGClCA,EAAA43F,gBAAkB,CAC3B,SACA,UACA,YACA,QACA,UACA,UACA,SACA,OACA,WACA,WACA,WACA,UACA,UACA,SACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,SACA,SACA,UACA,YACA,YACA,UACA,WACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,WACA,UACA,OACA,UACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,WACA,WACA,UACA,OACA,UACA,YACA,WACA,WACA,UACA,YACA,OACA,SACA,WACA,YACA,YACA,YACA,YACA,SACA,QACA,YACA,WACA,SACA,UACA,SACA,SACA,WACA,QACA,SACA,YACA,YACA,YACA,YACA,YACA,OACA,UACA,SACA,SACA,QACA,YACA,SACA,QACA,UACA,QACA,WACA,UACA,YACA,QACA,YACA,YACA,SACA,WACA,YACA,UACA,QACA,OACA,OACA,OACA,MACA,OACA,YACA,QACA,YACA,QACA,UACA,UACA,YACA,QACA,QACA,YACA,WACA,SACA,QACA,QACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,QACA,QACA,YACA,QACA,WACA,UACA,WACA,WACA,OACA,WACA,SACA,SACA,WACA,QACA,YACA,QACA,WACA,YACA,YACA,WACA,YACA,YACA,SACA,YACA,YACA,SACA,UACA,UACA,WACA,OACA,QACA,QACA,QACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,SACA,WACA,SACA,YACA,SACA,UACA,WACA,YACA,UACA,YACA,UACA,SACA,UACA,UACA,UACA,SACA,SACA,WACA,OACA,YACA,UACA,QACA,SACA,SACA,SACA,UACA,UACA,YACA,YACA,UACA,SACA,UACA,YACA,YACA,WACA,QACA,YACA,QACA,QACA,WACA,YACA,WACA,WACA,UACA,WACA,UACA,YACA,UACA,YACA,WACA,WACA,WACA,SACA,UACA,YACA,WACA,SACA,WACA,WACA,YACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,SACA,UACA,QACA,QACA,UACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,WACA,QACA,SACA,UACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,QACA,YACA,YACA,UACA,QACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,WACA,QACA,OACA,WACA,YACA,YACA,WACA,OACA,QACA,WACA,WACA,QACA,QACA,YACA,UACA,WACA,QACA,SACA,UACA,SACA,UACA,UACA,UACA,SACA,UACA,OACA,QACA,QACA,SACA,UACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,QACA,MACA,SACA,YACA,SACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,YACA,SACA,WACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,YACA,SACA,WACA,QACA,OACA,WACA,OACA,SACA,YACA,UACA,SACA,SACA,UACA,YACA,WACA,YACA,YACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,UACA,WACA,QACA,WACA,YACA,SACA,YACA,SACA,SACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,UACA,WACA,QACA,WACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,UACA,SACA,QACA,OACA,OACA,SACA,WACA,SACA,SACA,WACA,YACA,YACA,WACA,SACA,SACA,YACA,WACA,WACA,UACA,YACA,WACA,WACA,YACA,UACA,UACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,YACA,SACA,WACA,WACA,YACA,WACA,QACA,WACA,YACA,SACA,QACA,UACA,QACA,UACA,SACA,WACA,QACA,SACA,UACA,SACA,SACA,YACA,UACA,QACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,QACA,WACA,SACA,SACA,SACA,WACA,QACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,SACA,YACA,UACA,SACA,WACA,SACA,UACA,SACA,UACA,QACA,WACA,UACA,WACA,SACA,UACA,SACA,OACA,YACA,UACA,YACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,OACA,YACA,SACA,QACA,QACA,QACA,SACA,SACA,QACA,OACA,QACA,OACA,YACA,WACA,YACA,UACA,UACA,SACA,SACA,UACA,UACA,UACA,QACA,OACA,QACA,UACA,YACA,YACA,QACA,YACA,YACA,QACA,WACA,YACA,SACA,UACA,SACA,QACA,QACA,UACA,QACA,QACA,WACA,QACA,QACA,UACA,UACA,WACA,SACA,OACA,WACA,QACA,WACA,UACA,WACA,OACA,OACA,WACA,WACA,UACA,OACA,SACA,UACA,QACA,SACA,YACA,QACA,QACA,UACA,SACA,QACA,QACA,WACA,UACA,WACA,WACA,OACA,SACA,UACA,SACA,SACA,UACA,UACA,YACA,OACA,SACA,SACA,QACA,OACA,MACA,UACA,OACA,UACA,SACA,UACA,WACA,QACA,WACA,WACA,WACA,QACA,UACA,SACA,SACA,QACA,OACA,YACA,YACA,OACA,YACA,SACA,QACA,SACA,UACA,WACA,UACA,QACA,QACA,QACA,SACA,UACA,WACA,YACA,OACA,YACA,WACA,SACA,QACA,OACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,YACA,YACA,SACA,SACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,YACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,QACA,QACA,QACA,QACA,UACA,UACA,SACA,YACA,OACA,QACA,QACA,UACA,UACA,YACA,UACA,UACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,WACA,QACA,QACA,UACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,QACA,QACA,WACA,QACA,YACA,SACA,WACA,SACA,YACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,QACA,SACA,UACA,SACA,SACA,UACA,UACA,QACA,OACA,QACA,YACA,SACA,OACA,UACA,YACA,YACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,WACA,QACA,QACA,SACA,SACA,SACA,UACA,YACA,WACA,QACA,OACA,SACA,OACA,SACA,UACA,OACA,WACA,OACA,SACA,UACA,SACA,YACA,QACA,UACA,QACA,SACA,QACA,SACA,SACA,QACA,QACA,WACA,UACA,OACA,UACA,OACA,WACA,WACA,UACA,YACA,WACA,UACA,YACA,OACA,UACA,UACA,UACA,YACA,QACA,SACA,WACA,SACA,WACA,UACA,WACA,SACA,QACA,SACA,SACA,UACA,SACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,SACA,SACA,QACA,YACA,SACA,UACA,SACA,UACA,UACA,WACA,OACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,UACA,YACA,UACA,YACA,UACA,UACA,QACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,YACA,YACA,YACA,WACA,SACA,YACA,QACA,SACA,UACA,UACA,WACA,UACA,YACA,WACA,YACA,QACA,YACA,YACA,UACA,UACA,UACA,SACA,YACA,QACA,SACA,WACA,SACA,UACA,YACA,YACA,QACA,UACA,UACA,UACA,OACA,OACA,SACA,SACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,WACA,SACA,UACA,WACA,WACA,UACA,YACA,WACA,UACA,SACA,SACA,SACA,UACA,YACA,SACA,QACA,UACA,YACA,SACA,SACA,YACA,QACA,UACA,YACA,UACA,WACA,WACA,UACA,SACA,SACA,QACA,SACA,YACA,WACA,WACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,WACA,QACA,QACA,UACA,YACA,UACA,YACA,WACA,SACA,SACA,UACA,QACA,QACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,WACA,UACA,WACA,UACA,UACA,QACA,UACA,UACA,WACA,QACA,UACA,SACA,WACA,WACA,WACA,UACA,WACA,SACA,WACA,UACA,QACA,QACA,SACA,SACA,OACA,YACA,UACA,QACA,YACA,SACA,QACA,QACA,UACA,QACA,WACA,SACA,UACA,QACA,QACA,YACA,YACA,YACA,WACA,YACA,YACA,QACA,QACA,QACA,OACA,WACA,SACA,WACA,WACA,QACA,WACA,WACA,SACA,YACA,UACA,QACA,UACA,WACA,SACA,OACA,SACA,UACA,WACA,SACA,SACA,QACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,UACA,SACA,SACA,OACA,QACA,QACA,OACA,QACA,WACA,SACA,SACA,QACA,YACA,QACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,OACA,OACA,QACA,QACA,QACA,UACA,QACA,SACA,YACA,WACA,QACA,SACA,UACA,SACA,UACA,WACA,QACA,SACA,WACA,OACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,UACA,UACA,WACA,QACA,SACA,UACA,WACA,YACA,QACA,WACA,SACA,SACA,YACA,SACA,UACA,QACA,YACA,UACA,UACA,WACA,YACA,YACA,OACA,WACA,SACA,UACA,SACA,QACA,UACA,MACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,OACA,OACA,OACA,OACA,WACA,WACA,UACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,SACA,WACA,OACA,OACA,OACA,UACA,QACA,QACA,SACA,QACA,WACA,UACA,UACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,YACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,QACA,YACA,UACA,WACA,WACA,SACA,WACA,YACA,YACA,UACA,YACA,YACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,YACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,UACA,YACA,OACA,SACA,SACA,UACA,SACA,UACA,SACA,OACA,QACA,OACA,WACA,YACA,UACA,SACA,SACA,SACA,YACA,YACA,WACA,WACA,YACA,QACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,OACA,UACA,SACA,QACA,QACA,QACA,YACA,YACA,WACA,YACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,SACA,WACA,OACA,WACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,YACA,SACA,QACA,YACA,QACA,UACA,UACA,QACA,QACA,QACA,UACA,WACA,WACA,WACA,WACA,SACA,SACA,UACA,YACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,SACA,WACA,WACA,WACA,WACA,WACA,SACA,QACA,QACA,SACA,QACA,QACA,WACA,UACA,WACA,YACA,UACA,WACA,UACA,WACA,OACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,UACA,UACA,UACA,WACA,UACA,YACA,SACA,WACA,UACA,QACA,QACA,QACA,QACA,OACA,QACA,SACA,UACA,UACA,QACA,QACA,UACA,UACA,YACA,UACA,YACA,UACA,QACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,UACA,UACA,WACA,QACA,OACA,SACA,UACA,UACA,YACA,OACA,UACA,UACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,YACA,WACA,UACA,YACA,UACA,QACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,SACA,SACA,SACA,YACA,UACA,QACA,QACA,QACA,UACA,SACA,UACA,SACA,SACA,YACA,QACA,QACA,QACA,OACA,SACA,UACA,YACA,UACA,YACA,WACA,YACA,UACA,MACA,QACA,SACA,UACA,UACA,WACA,SACA,YACA,YACA,MACA,MACA,WACA,SACA,QACA,WACA,SACA,QACA,QACA,WACA,QACA,UACA,YACA,SACA,WACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,WACA,YACA,UACA,WACA,WACA,UACA,OACA,OACA,YACA,OACA,YACA,OACA,WACA,SACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,WACA,SACA,YACA,WACA,SACA,UACA,YACA,QACA,OACA,YACA,SACA,WACA,QACA,UACA,WACA,SACA,QACA,SACA,SACA,QACA,QACA,YACA,QACA,WACA,SACA,WACA,YACA,WACA,UACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,WACA,OACA,WACA,UACA,SACA,YACA,YACA,YACA,QACA,WACA,SACA,WACA,YACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,SACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,SACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,QACA,WACA,UACA,UACA,SACA,SACA,OACA,WACA,YACA,WACA,SACA,YACA,QACA,WACA,QACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,QACA,SACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,SACA,QACA,SACA,QACA,UACA,SACA,UACA,UACA,OACA,YACA,YACA,WACA,YACA,SACA,UACA,YACA,WACA,SACA,SACA,SACA,WACA,YACA,YACA,UACA,UACA,QACA,WACA,SACA,SACA,WACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,WACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,QACA,UACA,WACA,UACA,UACA,YACA,WACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,OACA,WACA,SACA,YACA,QACA,OACA,SACA,UACA,YACA,WACA,YACA,WACA,WACA,YACA,YACA,MACA,WACA,YACA,WACA,OACA,SACA,OACA,WACA,QACA,SACA,SACA,UACA,SACA,QACA,UACA,SACA,YACA,QACA,QACA,SACA,SACA,UACA,UACA,UACA,SACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,SACA,WACA,WACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,WACA,OACA,YACA,UACA,OACA,UACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,QACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,WACA,SACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,QACA,SACA,SACA,OACA,WACA,WACA,QACA,QACA,QACA,QACA,OACA,SACA,YACA,SACA,QACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,QACA,QACA,SACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,UACA,QACA,OACA,YACA,SACA,SACA,OACA,SACA,WACA,SACA,OACA,OACA,QACA,OACA,OACA,WACA,YACA,YACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,YACA,QACA,UACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,SACA,QACA,OACA,UACA,QACA,QACA,QACA,UACA,WACA,YACA,WACA,WACA,SACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,QACA,QACA,QACA,YACA,UACA,WACA,UACA,UACA,UACA,QACA,QACA,WACA,SACA,OACA,MACA,SACA,YACA,UACA,WACA,UACA,WACA,WACA,QACA,OACA,OACA,SACA,SACA,MACA,OACA,SACA,WACA,OACA,UACA,WACA,WACA,MACA,OACA,SACA,YACA,YACA,UACA,UACA,WACA,SACA,SACA,OACA,OACA,UACA,OACA,QACA,QACA,QACA,UACA,UACA,WACA,UACA,YACA,UACA,WACA,UACA,WACA,WACA,OACA,QACA,UACA,UACA,UACA,SACA,UACA,QACA,UACA,UACA,WACA,WACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,SACA,UACA,QACA,UACA,SACA,WACA,SACA,YACA,YACA,SACA,WACA,UACA,QACA,SACA,SACA,OACA,OACA,QACA,QACA,QACA,YACA,OACA,SACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,YACA,OACA,WACA,SACA,OACA,UACA,SACA,WACA,YACA,WACA,MACA,YACA,UACA,YACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,UACA,SACA,QACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,SACA,MACA,WACA,WACA,YACA,QACA,UACA,SACA,MACA,UACA,WACA,MACA,YACA,QACA,YACA,WACA,YACA,QACA,UACA,QACA,QACA,UACA,SACA,UACA,YACA,YACA,QACA,WACA,UACA,SACA,SACA,WACA,SACA,YACA,QACA,UACA,YACA,WACA,OACA,QACA,WACA,UACA,WACA,UACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,UACA,UACA,YACA,QACA,MACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,SACA,SACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,YACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,UACA,SACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,SACA,SACA,SACA,UACA,UACA,SACA,SACA,YACA,WACA,YACA,WACA,SACA,UACA,SACA,SACA,YACA,SACA,SACA,WACA,UACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,WACA,QACA,OACA,SACA,OACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,WACA,UACA,QACA,SACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,WACA,SACA,SACA,UACA,YACA,SACA,SACA,UACA,QACA,QACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,SACA,WACA,WACA,YACA,YACA,WACA,UACA,UACA,WACA,UACA,QACA,YACA,SACA,YACA,WACA,UACA,QACA,WACA,YACA,YACA,UACA,UACA,OACA,YACA,YACA,YACA,WACA,WACA,QACA,WACA,UACA,OACA,QACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,SACA,UACA,SACA,QACA,WACA,OACA,SACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,YACA,YACA,YACA,QACA,SACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,YACA,SACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,SACA,WACA,SACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,OACA,SACA,UACA,SACA,OACA,QACA,UACA,OACA,WACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,UACA,OACA,UACA,YACA,YACA,UACA,UACA,WACA,SACA,UACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,MACA,QACA,UACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,WACA,WACA,WACA,WACA,QACA,QACA,UACA,SACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,SACA,SACA,WACA,UACA,YACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,WACA,YACA,UACA,UACA,QACA,WACA,QACA,UACA,SACA,WACA,SACA,SACA,SACA,UACA,OACA,SACA,QACA,WACA,SACA,WACA,WACA,UACA,UACA,YACA,QACA,WACA,QACA,UACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,MACA,OACA,UACA,UACA,WACA,WACA,YACA,YACA,QACA,UACA,QACA,QACA,YACA,UACA,WACA,WACA,OACA,UACA,YACA,YACA,YACA,WACA,WACA,SACA,QACA,UACA,WACA,SACA,WACA,UACA,YACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,OACA,UACA,SACA,QACA,QACA,SACA,SACA,QACA,QACA,OACA,QACA,QACA,QACA,WACA,OACA,SACA,UACA,QACA,WACA,UACA,UACA,QACA,SACA,UACA,WACA,OACA,MACA,MACA,OACA,QACA,OACA,WACA,SACA,WACA,SACA,WACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,YACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,MACA,QACA,WACA,WACA,UACA,YACA,WACA,YACA,WACA,QACA,QACA,UACA,UACA,YACA,SACA,UACA,QACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,SACA,YACA,WACA,YACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,WACA,SACA,YACA,WACA,QACA,UACA,UACA,WACA,SACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,QACA,SACA,UACA,QACA,UACA,YACA,SACA,OACA,QACA,YACA,UACA,WACA,WACA,YACA,SACA,QACA,QACA,SACA,WACA,YACA,WACA,QACA,YACA,SACA,MACA,QACA,MACA,YACA,UACA,QACA,OACA,YACA,WACA,UACA,SACA,SACA,UACA,YACA,SACA,YACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,MACA,SACA,UACA,SACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,MACA,WACA,YACA,SACA,UACA,WACA,QACA,OACA,OACA,SACA,OACA,QACA,OACA,SACA,MACA,SACA,UACA,WACA,WACA,QACA,UACA,YACA,SACA,QACA,YACA,WACA,YACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,YACA,WACA,YACA,UACA,YACA,UACA,UACA,UACA,QACA,QACA,YACA,SACA,UACA,YACA,QACA,OACA,WACA,YACA,WACA,SACA,WACA,SACA,SACA,SACA,QACA,UACA,SACA,WACA,QACA,QACA,SACA,QACA,UACA,UACA,UACA,QACA,YACA,SACA,YACA,UACA,SACA,WACA,YACA,QACA,UACA,QACA,WACA,UACA,WACA,UACA,SACA,UACA,UACA,UACA,UACA,SACA,UACA,SACA,UACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,QACA,QACA,QACA,UACA,WACA,UACA,OACA,SACA,YACA,UACA,SACA,OACA,OACA,WACA,OACA,UACA,QACA,WACA,WACA,YACA,OACA,UACA,QACA,UACA,OACA,OACA,OACA,QACA,WACA,YACA,QACA,SACA,OACA,SACA,OACA,SACA,WACA,OACA,UACA,SACA,SACA,SACA,OACA,OACA,OACA,WACA,YACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,UACA,WACA,QACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,SACA,UACA,QACA,WACA,QACA,QACA,UACA,YACA,QACA,QACA,YACA,UACA,UACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,QACA,OACA,UACA,WACA,WACA,YACA,SACA,QACA,UACA,WACA,OACA,YACA,OACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,OACA,UACA,OACA,WACA,SACA,QACA,QACA,SACA,WACA,SACA,QACA,SACA,UACA,QACA,QACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,UACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,OACA,WACA,QACA,OACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,OACA,OACA,QACA,QACA,UACA,OACA,SACA,MACA,UACA,WACA,YACA,WACA,UACA,WACA,SACA,SACA,UACA,UACA,MACA,UACA,QACA,OACA,UACA,OACA,SACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,YACA,SACA,QACA,YACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,WACA,QACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,UACA,QACA,UACA,OACA,SACA,QACA,UACA,YACA,QACA,SACA,YACA,WACA,UACA,WACA,YACA,OACA,UACA,SACA,QACA,QACA,SACA,WACA,SACA,WACA,SACA,OACA,WACA,WACA,YACA,YACA,YACA,SACA,SACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,UACA,WACA,OACA,OACA,QACA,UACA,YACA,UACA,QACA,UACA,YACA,QACA,SACA,SACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,QACA,WACA,QACA,SACA,SACA,YACA,QACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,YACA,WACA,WACA,UACA,WACA,SACA,SACA,WACA,OACA,MACA,OACA,OACA,OACA,QACA,SACA,WACA,SACA,QACA,YACA,WACA,UACA,SACA,YACA,WACA,YACA,WACA,WACA,SACA,SACA,YACA,YACA,SACA,WACA,SACA,OACA,SACA,UACA,WACA,WACA,SACA,SACA,SACA,UACA,SACA,YACA,UACA,QACA,OACA,UACA,OACA,SACA,YACA,MACA,SACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,MACA,UACA,QACA,OACA,OACA,MACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,QACA,OACA,QACA,WACA,SACA,SACA,YACA,WACA,WACA,QACA,YACA,WACA,UACA,WACA,UACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,SACA,YACA,UACA,WACA,YACA,YACA,WACA,SACA,UACA,YACA,YACA,WACA,UACA,YACA,YACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,SACA,SACA,MACA,OACA,SACA,OACA,QACA,MACA,OACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,WACA,YACA,YACA,UACA,QACA,UACA,YACA,UACA,OACA,YACA,SACA,QACA,MACA,MACA,SACA,SACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,MACA,UACA,UACA,SACA,UACA,UACA,WACA,QACA,OACA,QACA,UACA,UACA,OACA,UACA,YACA,OACA,OACA,YACA,UACA,QACA,SACA,SACA,MACA,QACA,SACA,QACA,SACA,WACA,OACA,UACA,UACA,MACA,SACA,YACA,SACA,UACA,OACA,UACA,WACA,WACA,YACA,QACA,OACA,MACA,SACA,WACA,YACA,SACA,UACA,WACA,YACA,WACA,QACA,YACA,WACA,YACA,OACA,SACA,WACA,UACA,QACA,YACA,QACA,UACA,UACA,OACA,SACA,QACA,OACA,WACA,WACA,OACA,SACA,UACA,SACA,UACA,WACA,SACA,QACA,OACA,UACA,YACA,UACA,SACA,WACA,WACA,QACA,WACA,UACA,SACA,QACA,QACA,SACA,WACA,OACA,MACA,OACA,SACA,OACA,WACA,WACA,SACA,OACA,OACA,WACA,WACA,YACA,WACA,OACA,SACA,SACA,WACA,SACA,WACA,UACA,UACA,UACA,OACA,UACA,UACA,YACA,WACA,SACA,UACA,UACA,OACA,SACA,QACA,OACA,UACA,WACA,OACA,QACA,WACA,QACA,QACA,QACA,SACA,UACA,QACA,OACA,UACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,UACA,WACA,SACA,UACA,SACA,OACA,OACA,QACA,SACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,QACA,UACA,SACA,QACA,SACA,UACA,SACA,OACA,QACA,OACA,OACA,QACA,OACA,QACA,OACA,SACA,WACA,UACA,SACA,WACA,SACA,UACA,UACA,SACA,WACA,SACA,WACA,SACA,WACA,OACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,OACA,UACA,SACA,YACA,UACA,QACA,OACA,SACA,OACA,OACA,UACA,SACA,UACA,YACA,WACA,SACA,UACA,QACA,WACA,SACA,WACA,YACA,YACA,SACA,UACA,YACA,UACA,UACA,WACA,MACA,OACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,SACA,QACA,QACA,OACA,OACA,UACA,YACA,QACA,QACA,UACA,WACA,OACA,QACA,WACA,WACA,SACA,SACA,WACA,UACA,OACA,OACA,MACA,UACA,UACA,SACA,OACA,OACA,WACA,YACA,SACA,SACA,SACA,UACA,QACA,SACA,QACA,YACA,UACA,SACA,SACA,YACA,YACA,QACA,UACA,YACA,WACA,YACA,YACA,SACA,WACA,UACA,SACA,YACA,WACA,YACA,UACA,UACA,SACA,QACA,WACA,WACA,YACA,YACA,OACA,QACA,OACA,YACA,OACA,SACA,WACA,SACA,YACA,UACA,YACA,WACA,QACA,YACA,SACA,QACA,YACA,WACA,WACA,SACA,WACA,WACA,QACA,OACA,UACA,YACA,WACA,UACA,SACA,UACA,WACA,QACA,YACA,WACA,YACA,YACA,YACA,UACA,YACA,WACA,WACA,SACA,WACA,UACA,YACA,WACA,WACA,QACA,YACA,SACA,YACA,OACA,OACA,SACA,UACA,YACA,UACA,WACA,UACA,WACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,YACA,UACA,UACA,UACA,YACA,WACA,YACA,SACA,UACA,UACA,YACA,QACA,UACA,SACA,UACA,QACA,WACA,SACA,SACA,SACA,OACA,MACA,WACA,YACA,UACA,UACA,WACA,QACA,QACA,YACA,YACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,YACA,SACA,UACA,SACA,QACA,YACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,UACA,WACA,SACA,UACA,UACA,UACA,YACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,OACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,WACA,WACA,WACA,QACA,WACA,WACA,UACA,QACA,SACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,QACA,SACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,YACA,WACA,QACA,WACA,OACA,YACA,WACA,WACA,UACA,MACA,YACA,SACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,YACA,YACA,YACA,WACA,MACA,SACA,WACA,UACA,YACA,WACA,WACA,WACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,OACA,WACA,YACA,SACA,WACA,YACA,SACA,YACA,QACA,QACA,YACA,WACA,UACA,WACA,UACA,WACA,QACA,YACA,YACA,QACA,QACA,UACA,OACA,QACA,SACA,QACA,SACA,OACA,OACA,MACA,MACA,WACA,QACA,OACA,SACA,UACA,WACA,WACA,YACA,YACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,WACA,UACA,YACA,SACA,QACA,YACA,QACA,YACA,WACA,SACA,UACA,YACA,WACA,QACA,QACA,SACA,YACA,QACA,UACA,UACA,SACA,YACA,QACA,UACA,SACA,WACA,OACA,YACA,YACA,SACA,OACA,SACA,SACA,SACA,UACA,YACA,UACA,OACA,QACA,MACA,OACA,OACA,SACA,QACA,YACA,OACA,SACA,SACA,UACA,QACA,SACA,UACA,YACA,WACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,WACA,SACA,WACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,UACA,OACA,SACA,OACA,UACA,QACA,OACA,MACA,YACA,SACA,WACA,WACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,QACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,QACA,UACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,SACA,WACA,WACA,YACA,QACA,SACA,QACA,MACA,MACA,QACA,MACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,YACA,OACA,UACA,YACA,YACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,SACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,SACA,QACA,SACA,UACA,SACA,UACA,UACA,OACA,MACA,OACA,WACA,OACA,MACA,QACA,WACA,QACA,OACA,UACA,WACA,OACA,WACA,UACA,WACA,UACA,QACA,SACA,WACA,OACA,WACA,QACA,UACA,YACA,UACA,OACA,SACA,OACA,OACA,OACA,OACA,UACA,OACA,OACA,WACA,UACA,YACA,YACA,YACA,WACA,QACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,MACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,QACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,YACA,UACA,UACA,SACA,UACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,OACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,UACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,MACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,SACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,QACA,SACA,UACA,SACA,YACA,OACA,WACA,YACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,QACA,WACA,OACA,YACA,QACA,UACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,SACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,YACA,SACA,SACA,QACA,UACA,UACA,SACA,WACA,SACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,WACA,QACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,YACA,SACA,WACA,YACA,OACA,WACA,UACA,QACA,YACA,UACA,SACA,YACA,YACA,SACA,WACA,QACA,YACA,WACA,SACA,SACA,UACA,UACA,WACA,SACA,QACA,QACA,SACA,UACA,WACA,UACA,SACA,SACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,UACA,SACA,OACA,SACA,WACA,UACA,SACA,UACA,UACA,YACA,WACA,UACA,YACA,QACA,SACA,UACA,WACA,YACA,MACA,WACA,UACA,QACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,QACA,OACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,YACA,SACA,YACA,QACA,SACA,WACA,QACA,YACA,SACA,YACA,YACA,QACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,UACA,UACA,WACA,QACA,UACA,QACA,SACA,UACA,UACA,SACA,WACA,UACA,WACA,WACA,UACA,WACA,YACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,UACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,YACA,WACA,QACA,WACA,QACA,SACA,YACA,SACA,WACA,YACA,UACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,UACA,WACA,SACA,OACA,YACA,UACA,QACA,MACA,OACA,OACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,SACA,QACA,SACA,WACA,QACA,OACA,YACA,UACA,YACA,UACA,SACA,OACA,OACA,UACA,OACA,SACA,SACA,QACA,WACA,WACA,UACA,WACA,YACA,OACA,SACA,WACA,WACA,SACA,YACA,WACA,UACA,SACA,WACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,UACA,WACA,SACA,SACA,UACA,YACA,UACA,UACA,QACA,SACA,WACA,QACA,UACA,OACA,WACA,YACA,UACA,QACA,SACA,MACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,YACA,UACA,SACA,WACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,SACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,UACA,SACA,YACA,YACA,YACA,SACA,UACA,YACA,UACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,UACA,SACA,UACA,UACA,YACA,UACA,UACA,WACA,SACA,YACA,WACA,QACA,SACA,YACA,UACA,UACA,SACA,QACA,WACA,QACA,QACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,YACA,WACA,WACA,YACA,QACA,UACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,QACA,QACA,YACA,SACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,UACA,YACA,WACA,SACA,YACA,YACA,WACA,WACA,QACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,QACA,YACA,QACA,UACA,MACA,UACA,SACA,YACA,SACA,SACA,MACA,OACA,YACA,OACA,UACA,QACA,YACA,OACA,SACA,SACA,QACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,SACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,QACA,UACA,WACA,SACA,SACA,UACA,SACA,SACA,WACA,YACA,OACA,QACA,YACA,WACA,UACA,WACA,WACA,YACA,SACA,YACA,UACA,WACA,UACA,SACA,QACA,UACA,OACA,SACA,WACA,UACA,YACA,SACA,QACA,WACA,QACA,WACA,QACA,UACA,YACA,YACA,UACA,UACA,QACA,UACA,UACA,SACA,YACA,YACA,WACA,UACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,QACA,QACA,QACA,UACA,YACA,QACA,OACA,SACA,YACA,WACA,YACA,QACA,QACA,OACA,SACA,SACA,OACA,SACA,QACA,SACA,WACA,YACA,WACA,YACA,WACA,QACA,SACA,SACA,OACA,OACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,UACA,SACA,OACA,SACA,QACA,SACA,WACA,OACA,SACA,QACA,YACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,QACA,OACA,SACA,SACA,OACA,UACA,SACA,QACA,SACA,SACA,UACA,YACA,WACA,QACA,YACA,WACA,WACA,UACA,WACA,OACA,YACA,WACA,UACA,YACA,YACA,YACA,WACA,SACA,WACA,WACA,WACA,UACA,YACA,SACA,QACA,UACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,SACA,SACA,YACA,SACA,SACA,SACA,SACA,YACA,YACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,UACA,WACA,WACA,WACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,YACA,UACA,UACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,UACA,SACA,WACA,YACA,SACA,SACA,UACA,UACA,SACA,SACA,SACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,UACA,WACA,WACA,QACA,QACA,UACA,UACA,YACA,WACA,WACA,WACA,UACA,QACA,UACA,YACA,UACA,SACA,SACA,SACA,WACA,SACA,YACA,OACA,SACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,QACA,UACA,YACA,SACA,UACA,SACA,YACA,UACA,UACA,UACA,WACA,SACA,WACA,YACA,YACA,WACA,YACA,YACA,UACA,UACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,WACA,UACA,SACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,UACA,SACA,UACA,QACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,YACA,OACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,UACA,WACA,SACA,SACA,WACA,YACA,YACA,SACA,WACA,YACA,SACA,YACA,YACA,UACA,UACA,UACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,SACA,UACA,UACA,WACA,QACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,SACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,UACA,UACA,WACA,SACA,OACA,SACA,UACA,OACA,UACA,QACA,QACA,UACA,SACA,OACA,OACA,QACA,UACA,OACA,UACA,WACA,WACA,UACA,SACA,WACA,UACA,OACA,SACA,OACA,UACA,UACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,UACA,QACA,UACA,OACA,QACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,QACA,QACA,QACA,OACA,OACA,SACA,SACA,OACA,SACA,UACA,UACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,UACA,QACA,SACA,QACA,SACA,SACA,UACA,SACA,UACA,OACA,SACA,SACA,MACA,SACA,OACA,SACA,WACA,UACA,QACA,YACA,UACA,SACA,UACA,QACA,OACA,SACA,UACA,QACA,OACA,OACA,OACA,MACA,UACA,WACA,YACA,SACA,YACA,SACA,YACA,UACA,WACA,QACA,UACA,SACA,YACA,YACA,SACA,WACA,UACA,OACA,OACA,UACA,QACA,OACA,QACA,OACA,QACA,SACA,WACA,SACA,SACA,QACA,SACA,QACA,OACA,WACA,SACA,UACA,YACA,YACA,OACA,SACA,WACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,UACA,SACA,WACA,UACA,UACA,YACA,UACA,YACA,YACA,WACA,QACA,WACA,YACA,OACA,QACA,UACA,YACA,QACA,UACA,YACA,UACA,OACA,YACA,QACA,UACA,WACA,QACA,YACA,YACA,UACA,WACA,WACA,YACA,QACA,QACA,SACA,UACA,QACA,UACA,SACA,QACA,YACA,MACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,WACA,OACA,UACA,UACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,QACA,UACA,YACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,QACA,QACA,WACA,QACA,QACA,UACA,QACA,SACA,YACA,YACA,SACA,YACA,SACA,UACA,QACA,WACA,SACA,YACA,UACA,WACA,WACA,SACA,WACA,WACA,WACA,YACA,YACA,QACA,UACA,UACA,SACA,WACA,SACA,WACA,YACA,SACA,SACA,UACA,YACA,WACA,WACA,UACA,UACA,WACA,QACA,QACA,WACA,YACA,SACA,UACA,WACA,YACA,YACA,SACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,QACA,SACA,WACA,WACA,WACA,SACA,WACA,UACA,UACA,UACA,SACA,WACA,YACA,YACA,WACA,OACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,UACA,OACA,SACA,WACA,YACA,YACA,YACA,YACA,WACA,QACA,YACA,SACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,UACA,WACA,QACA,UACA,UACA,SACA,WACA,UACA,UACA,SACA,WACA,QACA,YACA,YACA,UACA,UACA,WACA,SACA,QACA,SACA,UACA,YACA,UACA,SACA,QACA,QACA,WACA,UACA,YACA,UACA,QACA,QACA,UACA,UACA,QACA,UACA,WACA,QACA,SACA,QACA,UACA,QACA,YACA,UACA,UACA,UACA,YACA,QACA,SACA,OACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,SACA,SACA,UACA,WACA,YACA,SACA,UACA,SACA,UACA,QACA,UACA,YACA,UACA,QACA,OACA,QACA,YACA,QACA,QACA,WACA,UACA,WACA,WACA,QACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,SACA,QACA,QACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,QACA,UACA,YACA,YACA,WACA,QACA,SACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,SACA,SACA,UACA,WACA,YACA,SACA,QACA,SACA,WACA,UACA,UACA,YACA,OACA,QACA,OACA,MACA,UACA,WACA,UACA,SACA,SACA,SACA,OACA,UACA,WACA,WACA,SACA,SACA,UACA,OACA,YACA,QACA,OACA,OACA,SACA,YACA,SACA,YACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,UACA,MACA,QACA,SACA,SACA,SACA,UACA,WACA,YACA,UACA,UACA,QACA,UACA,WACA,YACA,UACA,UACA,OACA,SACA,SACA,WACA,SACA,UACA,YACA,WACA,WACA,UACA,SACA,SACA,SACA,OACA,QACA,QACA,QACA,SACA,UACA,UACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,SACA,YACA,UACA,WACA,WACA,QACA,UACA,WACA,WACA,UACA,QACA,YACA,UACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,OACA,UACA,QACA,WACA,YACA,UACA,WACA,QACA,UACA,OACA,OACA,QACA,QACA,QACA,SACA,QACA,YACA,SACA,SACA,UACA,QACA,SACA,YACA,UACA,WACA,YACA,WACA,WACA,QACA,WACA,YACA,SACA,OACA,OACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,OACA,YACA,UACA,SACA,OACA,OACA,QACA,QACA,MACA,QACA,UACA,YACA,UACA,WACA,UACA,QACA,WACA,QACA,YACA,QACA,QACA,QACA,UACA,QACA,OACA,SACA,YACA,YACA,UACA,QACA,UACA,SACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,QACA,UACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,WACA,QACA,QACA,UACA,WACA,SACA,UACA,SACA,QACA,UACA,UACA,QACA,QACA,WACA,YACA,YACA,UACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,QACA,OACA,QACA,UACA,SACA,WACA,QACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,YACA,SACA,QACA,YACA,UACA,WACA,YACA,UACA,WACA,QACA,OACA,SACA,YACA,SACA,SACA,QACA,SACA,QACA,QACA,UACA,SACA,UACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,YACA,UACA,YACA,WACA,YACA,UACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,UACA,QACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,UACA,UACA,WACA,SACA,UACA,SACA,QACA,SACA,SACA,SACA,QACA,QACA,QACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,QACA,WACA,WACA,SACA,SACA,SACA,YACA,UACA,YACA,YACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,QACA,SACA,WACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,QACA,WACA,UACA,YACA,UACA,WACA,SACA,WACA,UACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,QACA,YACA,WACA,WACA,YACA,QACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,OACA,SACA,UACA,OACA,SACA,UACA,YACA,YACA,WACA,YACA,UACA,OACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,QACA,YACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,SACA,WACA,SACA,UACA,YACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,YACA,YACA,YACA,UACA,QACA,QACA,SACA,QACA,QACA,YACA,YACA,WACA,UACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,QACA,QACA,QACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,QACA,SACA,SACA,SACA,WACA,YACA,QACA,SACA,UACA,SACA,WACA,SACA,SACA,SACA,SACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,WACA,YACA,SACA,YACA,UACA,WACA,QACA,SACA,QACA,UACA,UACA,UACA,WACA,SACA,QACA,UACA,UACA,SACA,QACA,UACA,WACA,SACA,UACA,YACA,QACA,QACA,UACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,YACA,UACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,YACA,YACA,YACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,UACA,WACA,SACA,WACA,WACA,UACA,SACA,SACA,YACA,UACA,YACA,OACA,UACA,SACA,SACA,OACA,WACA,YACA,UACA,SACA,YACA,WACA,QACA,UACA,QACA,WACA,WACA,WACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,WACA,YACA,SACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,SACA,WACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,SACA,UACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,YACA,WACA,SACA,WACA,UACA,YACA,WACA,QACA,UACA,UACA,WACA,YACA,YACA,OACA,YACA,UACA,YACA,OACA,WACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,WACA,WACA,WACA,UACA,WACA,QACA,QACA,SACA,SACA,UACA,UACA,QACA,SACA,QACA,QACA,QACA,WACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,QACA,SACA,UACA,UACA,QACA,WACA,SACA,SACA,YACA,UACA,YACA,UACA,SACA,WACA,QACA,OACA,UACA,WACA,UACA,UACA,WACA,UACA,YACA,MACA,UACA,OACA,SACA,SACA,WACA,OACA,QACA,SACA,WACA,QACA,SACA,OACA,SACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,UACA,UACA,OACA,YACA,SACA,SACA,UACA,QACA,SACA,SACA,WACA,OACA,SACA,QACA,YACA,UACA,QACA,WACA,SACA,WACA,SACA,QACA,SACA,QACA,OACA,OACA,UACA,YACA,OACA,QACA,QACA,WACA,WACA,UACA,UACA,YACA,QACA,SACA,WACA,UACA,UACA,YACA,WACA,WACA,QACA,UACA,QACA,QACA,SACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,WACA,SACA,YACA,SACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,WACA,WACA,OACA,YACA,UACA,QACA,QACA,QACA,SACA,WACA,UACA,OACA,QACA,UACA,UACA,YACA,YACA,WACA,UACA,OACA,SACA,OACA,OACA,QACA,SACA,UACA,YACA,UACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,OACA,UACA,OACA,SACA,SACA,SACA,UACA,YACA,SACA,SACA,SACA,QACA,UACA,QACA,WACA,UACA,QACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,UACA,SACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,WACA,WACA,OACA,YACA,WACA,YACA,UACA,QACA,SACA,OACA,UACA,UACA,YACA,SACA,SACA,QACA,WACA,SACA,QACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,WACA,WACA,UACA,YACA,SACA,WACA,WACA,UACA,QACA,SACA,YACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,YACA,SACA,WACA,QACA,SACA,QACA,QACA,UACA,QACA,SACA,YACA,UACA,WACA,WACA,YACA,QACA,MACA,QACA,WACA,UACA,UACA,UACA,MACA,UACA,QACA,SACA,WACA,QACA,SACA,UACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,OACA,MACA,QACA,QACA,QACA,WACA,SACA,YACA,SACA,QACA,QACA,UACA,YACA,OACA,WACA,QACA,QACA,QACA,YACA,UACA,UACA,WACA,SACA,SACA,UACA,SACA,QACA,OACA,QACA,WACA,YACA,QACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,UACA,YACA,WACA,SACA,SACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,UACA,WACA,WACA,YACA,UACA,YACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,YACA,UACA,YACA,WACA,QACA,YACA,UACA,YACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,SACA,YACA,UACA,YACA,WACA,UACA,WACA,UACA,SACA,WACA,SACA,YACA,UACA,WACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,YACA,YACA,YACA,SACA,WACA,UACA,YACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,QACA,YACA,YACA,YACA,YACA,YACA,QACA,WACA,YACA,SACA,WACA,OACA,YACA,WACA,WACA,UACA,SACA,YACA,YACA,UACA,UACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,UACA,WACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,SACA,YACA,WACA,UACA,WACA,UACA,YACA,YACA,SACA,SACA,YACA,YACA,YACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,WACA,WACA,SACA,SACA,WACA,UACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,SACA,WACA,YACA,SACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,UACA,UACA,YACA,WACA,UACA,WACA,WACA,SACA,QACA,QACA,UACA,WACA,WACA,YACA,SACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,UACA,WACA,UACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,YACA,UACA,QACA,YACA,SACA,WACA,YACA,SACA,UACA,YACA,YACA,YACA,SACA,YACA,WACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,WACA,YACA,SACA,UACA,UACA,WACA,SACA,SACA,SACA,WACA,YACA,SACA,OACA,QACA,UACA,WACA,UACA,SACA,SACA,UACA,SACA,UACA,WACA,UACA,UACA,WACA,WACA,UACA,SACA,UACA,SACA,WACA,SACA,SACA,UACA,QACA,SACA,WACA,UACA,SACA,SACA,YACA,UACA,SACA,QACA,UACA,OACA,YACA,OACA,QACA,QACA,UACA,UACA,UACA,SACA,SACA,QACA,UACA,SACA,SACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,QACA,SACA,SACA,YACA,QACA,UACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,OACA,QACA,SACA,YACA,SACA,WACA,SACA,WACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,QACA,QACA,YACA,WACA,UACA,UACA,SACA,QACA,UACA,SACA,YACA,WACA,UACA,OACA,SACA,OACA,UACA,OACA,WACA,YACA,SACA,QACA,OACA,WACA,UACA,QACA,WACA,SACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,UACA,WACA,QACA,OACA,YACA,UACA,WACA,UACA,UACA,SACA,WACA,UACA,QACA,QACA,WACA,WACA,UACA,WACA,YACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,QACA,UACA,OACA,WACA,SACA,UACA,UACA,QACA,SACA,UACA,QACA,QACA,SACA,YACA,MACA,QACA,SACA,QACA,QACA,QACA,SACA,QACA,OACA,SACA,OACA,UACA,SACA,SACA,QACA,OACA,UACA,SACA,UACA,SACA,WACA,YACA,YACA,WACA,YACA,UACA,SACA,SACA,YACA,UACA,UACA,WACA,YACA,UACA,OACA,UACA,QACA,QACA,WACA,SACA,OACA,WACA,SACA,OACA,QACA,QACA,WACA,QACA,YACA,SACA,QACA,WACA,UACA,QACA,WACA,UACA,WACA,SACA,MACA,OACA,SACA,QACA,SACA,QACA,QACA,YACA,UACA,OACA,OACA,YACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,SACA,YACA,UACA,SACA,YACA,OACA,OACA,QACA,UACA,OACA,OACA,UACA,SACA,WACA,SACA,OACA,QACA,WACA,SACA,OACA,SACA,OACA,OACA,WACA,QACA,UACA,SACA,SACA,WACA,SACA,MACA,OACA,YACA,YACA,YACA,YACA,YACA,UACA,OACA,OACA,SACA,OACA,QACA,OACA,OACA,UACA,UACA,YACA,QACA,YACA,YACA,QACA,QACA,QACA,MACA,UACA,QACA,SACA,WACA,UACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,UACA,UACA,YACA,UACA,WACA,UACA,YACA,UACA,OACA,QACA,QACA,MACA,UACA,UACA,OACA,OACA,OACA,WACA,WACA,SACA,WACA,QACA,UACA,OACA,MACA,YACA,UACA,QACA,MACA,SACA,QACA,QACA,OACA,SACA,SACA,OACA,QACA,MACA,UACA,QACA,MACA,WACA,OACA,YACA,QACA,YACA,UACA,UACA,QACA,OACA,MACA,SACA,SACA,OACA,SACA,YACA,YACA,UACA,S,y+CCjmPJ,aAEA,QAOA,aAUI,WAAoBt8E,EAAgCowB,EACxC6sD,GADQ,KAAAj9E,aAAgC,KAAAow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EAAQphG,OAAOiC,MAAMqB,KAAOhK,KAAKgF,aAAa83E,IACvC,EACJ,MAA+B,QAA1BgrB,EAAQe,gBACiB,MAA7Bf,EAAQphG,OAAOiC,MAAMqB,OACrB89F,EAAQphG,OAAOiC,MAAMqB,KAAO,IAEhC89F,EAAQphG,OAAOiC,MAAMqB,KAAK6hB,OAAO7rB,KAAKgF,aAAa8iG,EAAQa,aAAab,EAAQ9oG,aACzE,IAInB,EApRA,CAAqD,EAAAsL,cAA/B,EAAA0+F,0B,4MCXtB,aAAS,gFAAA3rD,kBACT,YAAS,0EAAA5jC,YACT,aAAS,4EAAAlR,cACT,aAAS,2EAAAc,aACT,aAAS,8EAAA2X,gBACT,aAAS,8EAAA7b,gBACT,aAAS,2EAAAyD,aACT,YAAS,gFAAAuB,kBACT,cAAS,sEAAAwwE,S,iHCRT,SAAYsuB,GACR,2CACA,2CACA,yCACA,2CACA,iCAEA,6BACA,iCACA,2CACA,2CACA,2CACA,oCAEA,wBAEA,wCACA,wCACA,wCAlBJ,CAAY,EAAAA,mBAAA,EAAAA,iBAAgB,M,4UCA5B,WAGA,OACA,OACA,OAGA,EAAQ,K,qBAKJ,EAAAC,iBAGJ,EAAAC,kBAAyBC,gBAAgB,EAAD,UAAY,CAAEC,qBAAqB,K,8BChB3E,Q,iGCAA,WACA,SAEA,SAEA,SACA,OACA,QACA,QACA,SAEA,SAEA,UACA,QAEA,QACA,SAEA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,SACA,SAGA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAIA,UACA,UAGA,UACA,UAGA,UAGA,UACA,UAGA,UAIA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA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kB,gBACA,EAAA5jB,4BACA,GAAAgV,iBACA,EAAA/S,qBACA,GAAA1T,mBACA,GAAAhiB,iBACA,GAAAuiB,uBACA,GAAAupB,qBACA,GAAAvoB,uBACA,GAAAn4C,mBACA,GAAAmzC,gBACA,EAAA20D,aACA,GAAA5nD,qBACA,GAAA5vC,mBACA,EAAAm4F,gBACA,GAAAC,mBACA,GAAAC,gBACA,GAAAx1B,sBACA,GAAAvvB,qBACA,GAAAjB,oBACA,GAAAc,kBACA,GAAAT,qBACA,GAAAK,mBACA,GAAAtiD,iBACA,GAAAstE,qBACA,GAAAgC,mBACA,GAAApgC,wBACA,GAAA6vB,oBACA,GAAAnkC,iBACA,GAAAimB,qBACA,GAAAoD,kBACA,GAAAwrB,4BACA,GAAAxD,6BACA,GAAAE,uBACA,GAAA5Q,4BACA,GAAA6U,qBACA,GAAA7Q,yBACA,GAAA8X,gCACA,GAAAlB,oCACA,GAAAwC,yBACA,GAAAlB,gCACA,GAAAa,iCACA,GAAA5B,6BACA,GAAAV,0BACA,GAAA18B,gBACA,GAAAS,gCACA,GAAA2pB,qBACA,GAAAoQ,uBACA,EAAApmC,gBACA,EAAA8W,wBACA,GAAA/a,mBACA,EAAA8d,cACA,GAAA/pD,SACA,GAAAya,cACA,GAAAolC,gBACA,GAAAY,iCACA,GAAApvC,uBACA,GAAAwiE,iBACA,EAAA1pB,cACA,EAAAY,eACA,EAAA1zC,eACA,EAAA04B,gBACA,GAAA4jC,iBACA,mBACA,oBACA,GAAA5U,6BACA,GAAAn1B,2BACA,GAAAq3B,kCACA,wBACA,sBACA,uBACA,sBACA,oBACA,6BACA,wBACA,wBACA,uBACA,kBACA,mBACA,mCACA,mBACA,oCACA,wBACA,sBACA,kBACA,uBACA,kBACA,kBACA,sBACA,oBACA,yBACA,kCACA,qBACA,kBACA,2BACA,uBACA,uBACA,sBACA,GAAArxB,uBACA,EAAA2Y,4BACA,oCACA,kBACA,gCACA,GAAA4sB,2BACA,GAAAJ,kCACA,EAAAxrD,0BACA,GAAA9I,iBACA,GAAA2zD,iBACA,GAAA9E,iBACA,GAAAx6B,oBACA,EAAAoW,uBACA,EAAAG,0BACA,EAAAS,kBACA,GAAAjL,+BACA,GAAAwpD,kBACA,GAAAxgF,WACA,GAAAs8B,oBACA,oBACA,GAAA+nB,cACA,GAAA6I,kBACA,GAAA1U,kBACA,GAAA8T,eACA,EAAA/pB,aACA,GAAAr7C,mBACA,GAAAU,kBACA,GAAAwS,iBACA,GAAAkiD,eACA,GAAAr7B,wBACA,GAAA+P,gCACA,EAAA8T,mBACA,GAAAtU,sBACA,GAAAc,wBACA,EAAAoT,0BACA,GAAA/S,2BACA,GAAAG,wBACA,GAAAh0B,yBACA,GAAA0zB,2BACA,GAAAL,0BACA,GAAA+F,iCACA,GAAA61B,mBACA,GAAA39B,uBACA,GAAAvC,qBACA,EAAA8R,oBACA,GAAAisB,0BACA,GAAAvM,eACA,GAAA+O,qBACA,EAAAjoB,0BACA,EAAAG,6BACA,GAAA3N,8BAEJipD,gBAAiB,CACb,GAAAp0E,iBACA,GAAAue,gBACA,GAAA+M,qBACA,GAAA0D,qBACA,GAAAjB,oBACA,GAAAc,kBACA,GAAAT,qBACA,GAAAK,mBACA,GAAAzB,qBACA,GAAAorB,6BACA,GAAAE,uBACA,GAAA5Q,4BACA,GAAA8b,gCACA,GAAAlB,oCACA,GAAAsB,gCACA,GAAAa,iCACA,GAAAtC,0BACA,GAAAlC,uBACA,EAAAj/D,eACA,oBACA,wBACA,sBACA,uBACA,sBACA,6BACA,wBACA,wBACA,uBACA,wBACA,sBACA,yBACA,uBACA,uBACA,sBACA,GAAA09D,kCACA,GAAAjgC,oBACA,oBACA,GAAAqhC,eACA,GAAAt7B,gCACA,GAAAR,sBACA,GAAAc,wBACA,EAAAoT,0BACA,GAAA/S,2BACA,GAAAH,2BACA,GAAAL,0BACA,GAAA47B,oBAEJj3C,UAAW,CAAC,GAAA6pE,SAAU,GAAA3/E,YACtB6gF,UAAW,CAAC,EAAAnB,kB,oHCpehB,WACA,OAKA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,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","file":"app/main.b98333fa8f5897046237.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([865,2]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export abstract class I18nService {\n locale: string;\n supportedTranslationLocales: string[];\n translationLocale: string;\n collator: Intl.Collator;\n localeNames: Map;\n t: (id: string, p1?: string, p2?: string, p3?: string) => string;\n translate: (id: string, p1?: string, p2?: string, p3?: string) => string;\n}\n","import { DeviceType } from '../enums/deviceType';\n\nexport abstract class PlatformUtilsService {\n identityClientId: string;\n getDevice: () => DeviceType;\n getDeviceString: () => string;\n isFirefox: () => boolean;\n isChrome: () => boolean;\n isEdge: () => boolean;\n isOpera: () => boolean;\n isVivaldi: () => boolean;\n isSafari: () => boolean;\n isIE: () => boolean;\n isMacAppStore: () => boolean;\n isViewOpen: () => Promise;\n /**\n * @deprecated This only ever returns null. Pull from your platform's storage using ConstantsService.vaultTimeoutKey\n */\n lockTimeout: () => number;\n launchUri: (uri: string, options?: any) => void;\n saveFile: (win: Window, blobData: any, blobOptions: any, fileName: string) => void;\n getApplicationVersion: () => Promise;\n supportsWebAuthn: (win: Window) => boolean;\n supportsDuo: () => boolean;\n showToast: (type: 'error' | 'success' | 'warning' | 'info', title: string, text: string | string[],\n options?: any) => void;\n showDialog: (body: string, title?: string, confirmText?: string, cancelText?: string,\n type?: string, bodyIsHtml?: boolean) => Promise;\n showPasswordDialog: (title: string, body: string, passwordValidation: (value: string) => Promise) => Promise;\n isDev: () => boolean;\n isSelfHost: () => boolean;\n copyToClipboard: (text: string, options?: any) => void | boolean;\n readFromClipboard: (options?: any) => Promise;\n supportsBiometric: () => Promise;\n authenticateBiometric: () => Promise;\n getDefaultSystemTheme: () => Promise<'light' | 'dark'>;\n onDefaultSystemThemeChange: (callback: ((theme: 'light' | 'dark') => unknown)) => unknown;\n supportsSecureStorage: () => boolean;\n}\n","import { PolicyType } from '../enums/policyType';\n\nimport { EnvironmentUrls } from '../models/domain/environmentUrls';\nimport { AttachmentRequest } from '../models/request/attachmentRequest';\n\nimport { BitPayInvoiceRequest } from '../models/request/bitPayInvoiceRequest';\nimport { CipherBulkDeleteRequest } from '../models/request/cipherBulkDeleteRequest';\nimport { CipherBulkMoveRequest } from '../models/request/cipherBulkMoveRequest';\nimport { CipherBulkRestoreRequest } from '../models/request/cipherBulkRestoreRequest';\nimport { CipherBulkShareRequest } from '../models/request/cipherBulkShareRequest';\nimport { CipherCollectionsRequest } from '../models/request/cipherCollectionsRequest';\nimport { CipherCreateRequest } from '../models/request/cipherCreateRequest';\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CipherShareRequest } from '../models/request/cipherShareRequest';\nimport { CollectionRequest } from '../models/request/collectionRequest';\nimport { DeleteRecoverRequest } from '../models/request/deleteRecoverRequest';\nimport { EmailRequest } from '../models/request/emailRequest';\nimport { EmailTokenRequest } from '../models/request/emailTokenRequest';\nimport { EmergencyAccessAcceptRequest } from '../models/request/emergencyAccessAcceptRequest';\nimport { EmergencyAccessConfirmRequest } from '../models/request/emergencyAccessConfirmRequest';\nimport { EmergencyAccessInviteRequest } from '../models/request/emergencyAccessInviteRequest';\nimport { EmergencyAccessPasswordRequest } from '../models/request/emergencyAccessPasswordRequest';\nimport { EmergencyAccessUpdateRequest } from '../models/request/emergencyAccessUpdateRequest';\nimport { EventRequest } from '../models/request/eventRequest';\nimport { FolderRequest } from '../models/request/folderRequest';\nimport { GroupRequest } from '../models/request/groupRequest';\nimport { IapCheckRequest } from '../models/request/iapCheckRequest';\nimport { ImportCiphersRequest } from '../models/request/importCiphersRequest';\nimport { ImportDirectoryRequest } from '../models/request/importDirectoryRequest';\nimport { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest';\nimport { KdfRequest } from '../models/request/kdfRequest';\nimport { KeysRequest } from '../models/request/keysRequest';\nimport { OrganizationCreateRequest } from '../models/request/organizationCreateRequest';\nimport { OrganizationImportRequest } from '../models/request/organizationImportRequest';\nimport { OrganizationKeysRequest } from '../models/request/organizationKeysRequest';\nimport { OrganizationTaxInfoUpdateRequest } from '../models/request/organizationTaxInfoUpdateRequest';\nimport { OrganizationUpdateRequest } from '../models/request/organizationUpdateRequest';\nimport { OrganizationUpgradeRequest } from '../models/request/organizationUpgradeRequest';\nimport { OrganizationUserAcceptRequest } from '../models/request/organizationUserAcceptRequest';\nimport { OrganizationUserBulkConfirmRequest } from '../models/request/organizationUserBulkConfirmRequest';\nimport { OrganizationUserBulkRequest } from '../models/request/organizationUserBulkRequest';\nimport { OrganizationUserConfirmRequest } from '../models/request/organizationUserConfirmRequest';\nimport { OrganizationUserInviteRequest } from '../models/request/organizationUserInviteRequest';\nimport { OrganizationUserResetPasswordEnrollmentRequest } from '../models/request/organizationUserResetPasswordEnrollmentRequest';\nimport { OrganizationUserResetPasswordRequest } from '../models/request/organizationUserResetPasswordRequest';\nimport { OrganizationUserUpdateGroupsRequest } from '../models/request/organizationUserUpdateGroupsRequest';\nimport { OrganizationUserUpdateRequest } from '../models/request/organizationUserUpdateRequest';\nimport { PasswordHintRequest } from '../models/request/passwordHintRequest';\nimport { PasswordRequest } from '../models/request/passwordRequest';\nimport { PasswordVerificationRequest } from '../models/request/passwordVerificationRequest';\nimport { PaymentRequest } from '../models/request/paymentRequest';\nimport { PolicyRequest } from '../models/request/policyRequest';\nimport { PreloginRequest } from '../models/request/preloginRequest';\nimport { RegisterRequest } from '../models/request/registerRequest';\nimport { SeatRequest } from '../models/request/seatRequest';\nimport { SelectionReadOnlyRequest } from '../models/request/selectionReadOnlyRequest';\nimport { SendAccessRequest } from '../models/request/sendAccessRequest';\nimport { SendRequest } from '../models/request/sendRequest';\nimport { SetPasswordRequest } from '../models/request/setPasswordRequest';\nimport { StorageRequest } from '../models/request/storageRequest';\nimport { TaxInfoUpdateRequest } from '../models/request/taxInfoUpdateRequest';\nimport { TokenRequest } from '../models/request/tokenRequest';\nimport { TwoFactorEmailRequest } from '../models/request/twoFactorEmailRequest';\nimport { TwoFactorProviderRequest } from '../models/request/twoFactorProviderRequest';\nimport { TwoFactorRecoveryRequest } from '../models/request/twoFactorRecoveryRequest';\nimport { UpdateDomainsRequest } from '../models/request/updateDomainsRequest';\nimport { UpdateKeyRequest } from '../models/request/updateKeyRequest';\nimport { UpdateProfileRequest } from '../models/request/updateProfileRequest';\nimport { UpdateTwoFactorAuthenticatorRequest } from '../models/request/updateTwoFactorAuthenticatorRequest';\nimport { UpdateTwoFactorDuoRequest } from '../models/request/updateTwoFactorDuoRequest';\nimport { UpdateTwoFactorEmailRequest } from '../models/request/updateTwoFactorEmailRequest';\nimport { UpdateTwoFactorWebAuthnDeleteRequest } from '../models/request/updateTwoFactorWebAuthnDeleteRequest';\nimport { UpdateTwoFactorWebAuthnRequest } from '../models/request/updateTwoFactorWebAuthnRequest';\nimport { UpdateTwoFactorYubioOtpRequest } from '../models/request/updateTwoFactorYubioOtpRequest';\nimport { VerifyBankRequest } from '../models/request/verifyBankRequest';\nimport { VerifyDeleteRecoverRequest } from '../models/request/verifyDeleteRecoverRequest';\nimport { VerifyEmailRequest } from '../models/request/verifyEmailRequest';\n\nimport { ApiKeyResponse } from '../models/response/apiKeyResponse';\nimport { AttachmentResponse } from '../models/response/attachmentResponse';\nimport { AttachmentUploadDataResponse } from '../models/response/attachmentUploadDataResponse';\nimport { BillingResponse } from '../models/response/billingResponse';\nimport { BreachAccountResponse } from '../models/response/breachAccountResponse';\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport {\n CollectionGroupDetailsResponse,\n CollectionResponse,\n} from '../models/response/collectionResponse';\nimport { DomainsResponse } from '../models/response/domainsResponse';\nimport {\n EmergencyAccessGranteeDetailsResponse,\n EmergencyAccessGrantorDetailsResponse,\n EmergencyAccessTakeoverResponse,\n EmergencyAccessViewResponse\n} from '../models/response/emergencyAccessResponse';\nimport { EventResponse } from '../models/response/eventResponse';\nimport { FolderResponse } from '../models/response/folderResponse';\nimport {\n GroupDetailsResponse,\n GroupResponse,\n} from '../models/response/groupResponse';\nimport { IdentityTokenResponse } from '../models/response/identityTokenResponse';\nimport { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse';\nimport { ListResponse } from '../models/response/listResponse';\nimport { OrganizationKeysResponse } from '../models/response/organizationKeysResponse';\nimport { OrganizationResponse } from '../models/response/organizationResponse';\nimport { OrganizationSubscriptionResponse } from '../models/response/organizationSubscriptionResponse';\nimport { OrganizationUserBulkPublicKeyResponse } from '../models/response/organizationUserBulkPublicKeyResponse';\nimport { OrganizationUserBulkResponse } from '../models/response/organizationUserBulkResponse';\nimport {\n OrganizationUserDetailsResponse,\n OrganizationUserResetPasswordDetailsReponse,\n OrganizationUserUserDetailsResponse,\n} from '../models/response/organizationUserResponse';\nimport { PaymentResponse } from '../models/response/paymentResponse';\nimport { PlanResponse } from '../models/response/planResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { PreloginResponse } from '../models/response/preloginResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { SelectionReadOnlyResponse } from '../models/response/selectionReadOnlyResponse';\nimport { SendAccessResponse } from '../models/response/sendAccessResponse';\nimport { SendFileDownloadDataResponse } from '../models/response/sendFileDownloadDataResponse';\nimport { SendFileUploadDataResponse } from '../models/response/sendFileUploadDataResponse';\nimport { SendResponse } from '../models/response/sendResponse';\nimport { SubscriptionResponse } from '../models/response/subscriptionResponse';\nimport { SyncResponse } from '../models/response/syncResponse';\nimport { TaxInfoResponse } from '../models/response/taxInfoResponse';\nimport { TaxRateResponse } from '../models/response/taxRateResponse';\nimport { TwoFactorAuthenticatorResponse } from '../models/response/twoFactorAuthenticatorResponse';\nimport { TwoFactorDuoResponse } from '../models/response/twoFactorDuoResponse';\nimport { TwoFactorEmailResponse } from '../models/response/twoFactorEmailResponse';\nimport { TwoFactorProviderResponse } from '../models/response/twoFactorProviderResponse';\nimport { TwoFactorRecoverResponse } from '../models/response/twoFactorRescoverResponse';\nimport { ChallengeResponse, TwoFactorWebAuthnResponse } from '../models/response/twoFactorWebAuthnResponse';\nimport { TwoFactorYubiKeyResponse } from '../models/response/twoFactorYubiKeyResponse';\nimport { UserKeyResponse } from '../models/response/userKeyResponse';\n\nimport { SendAccessView } from '../models/view/sendAccessView';\n\nexport abstract class ApiService {\n urlsSet: boolean;\n apiBaseUrl: string;\n identityBaseUrl: string;\n eventsBaseUrl: string;\n\n setUrls: (urls: EnvironmentUrls) => void;\n postIdentityToken: (request: TokenRequest) => Promise;\n refreshIdentityToken: () => Promise;\n\n getProfile: () => Promise;\n getUserBilling: () => Promise;\n getUserSubscription: () => Promise;\n getTaxInfo: () => Promise;\n putProfile: (request: UpdateProfileRequest) => Promise;\n putTaxInfo: (request: TaxInfoUpdateRequest) => Promise;\n postPrelogin: (request: PreloginRequest) => Promise;\n postEmailToken: (request: EmailTokenRequest) => Promise;\n postEmail: (request: EmailRequest) => Promise;\n postPassword: (request: PasswordRequest) => Promise;\n setPassword: (request: SetPasswordRequest) => Promise;\n postSecurityStamp: (request: PasswordVerificationRequest) => Promise;\n deleteAccount: (request: PasswordVerificationRequest) => Promise;\n getAccountRevisionDate: () => Promise;\n postPasswordHint: (request: PasswordHintRequest) => Promise;\n postRegister: (request: RegisterRequest) => Promise;\n postPremium: (data: FormData) => Promise;\n postIapCheck: (request: IapCheckRequest) => Promise;\n postReinstatePremium: () => Promise;\n postCancelPremium: () => Promise;\n postAccountStorage: (request: StorageRequest) => Promise;\n postAccountPayment: (request: PaymentRequest) => Promise;\n postAccountLicense: (data: FormData) => Promise;\n postAccountKey: (request: UpdateKeyRequest) => Promise;\n postAccountKeys: (request: KeysRequest) => Promise;\n postAccountVerifyEmail: () => Promise;\n postAccountVerifyEmailToken: (request: VerifyEmailRequest) => Promise;\n postAccountVerifyPassword: (request: PasswordVerificationRequest) => Promise;\n postAccountRecoverDelete: (request: DeleteRecoverRequest) => Promise;\n postAccountRecoverDeleteToken: (request: VerifyDeleteRecoverRequest) => Promise;\n postAccountKdf: (request: KdfRequest) => Promise;\n getEnterprisePortalSignInToken: () => Promise;\n postUserApiKey: (id: string, request: PasswordVerificationRequest) => Promise;\n postUserRotateApiKey: (id: string, request: PasswordVerificationRequest) => Promise;\n\n getFolder: (id: string) => Promise;\n postFolder: (request: FolderRequest) => Promise;\n putFolder: (id: string, request: FolderRequest) => Promise;\n deleteFolder: (id: string) => Promise;\n\n getSend: (id: string) => Promise;\n postSendAccess: (id: string, request: SendAccessRequest, apiUrl?: string) => Promise;\n getSends: () => Promise>;\n postSend: (request: SendRequest) => Promise;\n postFileTypeSend: (request: SendRequest) => Promise;\n postSendFile: (sendId: string, fileId: string, data: FormData) => Promise;\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n postSendFileLegacy: (data: FormData) => Promise;\n putSend: (id: string, request: SendRequest) => Promise;\n putSendRemovePassword: (id: string) => Promise;\n deleteSend: (id: string) => Promise;\n getSendFileDownloadData: (send: SendAccessView, request: SendAccessRequest, apiUrl?: string) => Promise;\n renewSendFileUploadUrl: (sendId: string, fileId: string) => Promise;\n\n getCipher: (id: string) => Promise;\n getCipherAdmin: (id: string) => Promise;\n getAttachmentData: (cipherId: string, attachmentId: string, emergencyAccessId?: string) => Promise;\n getCiphersOrganization: (organizationId: string) => Promise>;\n postCipher: (request: CipherRequest) => Promise;\n postCipherCreate: (request: CipherCreateRequest) => Promise;\n postCipherAdmin: (request: CipherCreateRequest) => Promise;\n putCipher: (id: string, request: CipherRequest) => Promise;\n putCipherAdmin: (id: string, request: CipherRequest) => Promise;\n deleteCipher: (id: string) => Promise;\n deleteCipherAdmin: (id: string) => Promise;\n deleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise;\n deleteManyCiphersAdmin: (request: CipherBulkDeleteRequest) => Promise;\n putMoveCiphers: (request: CipherBulkMoveRequest) => Promise;\n putShareCipher: (id: string, request: CipherShareRequest) => Promise;\n putShareCiphers: (request: CipherBulkShareRequest) => Promise;\n putCipherCollections: (id: string, request: CipherCollectionsRequest) => Promise;\n putCipherCollectionsAdmin: (id: string, request: CipherCollectionsRequest) => Promise;\n postPurgeCiphers: (request: PasswordVerificationRequest, organizationId?: string) => Promise;\n postImportCiphers: (request: ImportCiphersRequest) => Promise;\n postImportOrganizationCiphers: (organizationId: string, request: ImportOrganizationCiphersRequest) => Promise;\n putDeleteCipher: (id: string) => Promise;\n putDeleteCipherAdmin: (id: string) => Promise;\n putDeleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise;\n putDeleteManyCiphersAdmin: (request: CipherBulkDeleteRequest) => Promise;\n putRestoreCipher: (id: string) => Promise;\n putRestoreCipherAdmin: (id: string) => Promise;\n putRestoreManyCiphers: (request: CipherBulkRestoreRequest) => Promise>;\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n postCipherAttachmentLegacy: (id: string, data: FormData) => Promise;\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n postCipherAttachmentAdminLegacy: (id: string, data: FormData) => Promise;\n postCipherAttachment: (id: string, request: AttachmentRequest) => Promise;\n deleteCipherAttachment: (id: string, attachmentId: string) => Promise;\n deleteCipherAttachmentAdmin: (id: string, attachmentId: string) => Promise;\n postShareCipherAttachment: (id: string, attachmentId: string, data: FormData,\n organizationId: string) => Promise;\n renewAttachmentUploadUrl: (id: string, attachmentId: string) => Promise;\n postAttachmentFile: (id: string, attachmentId: string, data: FormData) => Promise;\n\n getCollectionDetails: (organizationId: string, id: string) => Promise;\n getUserCollections: () => Promise>;\n getCollections: (organizationId: string) => Promise>;\n getCollectionUsers: (organizationId: string, id: string) => Promise;\n postCollection: (organizationId: string, request: CollectionRequest) => Promise;\n putCollectionUsers: (organizationId: string, id: string, request: SelectionReadOnlyRequest[]) => Promise;\n putCollection: (organizationId: string, id: string, request: CollectionRequest) => Promise;\n deleteCollection: (organizationId: string, id: string) => Promise;\n deleteCollectionUser: (organizationId: string, id: string, organizationUserId: string) => Promise;\n\n getGroupDetails: (organizationId: string, id: string) => Promise;\n getGroups: (organizationId: string) => Promise>;\n getGroupUsers: (organizationId: string, id: string) => Promise;\n postGroup: (organizationId: string, request: GroupRequest) => Promise;\n putGroup: (organizationId: string, id: string, request: GroupRequest) => Promise;\n putGroupUsers: (organizationId: string, id: string, request: string[]) => Promise;\n deleteGroup: (organizationId: string, id: string) => Promise;\n deleteGroupUser: (organizationId: string, id: string, organizationUserId: string) => Promise;\n\n getPolicy: (organizationId: string, type: PolicyType) => Promise;\n getPolicies: (organizationId: string) => Promise>;\n getPoliciesByToken: (organizationId: string, token: string, email: string, organizationUserId: string) =>\n Promise>;\n putPolicy: (organizationId: string, type: PolicyType, request: PolicyRequest) => Promise;\n\n getOrganizationUser: (organizationId: string, id: string) => Promise;\n getOrganizationUserGroups: (organizationId: string, id: string) => Promise;\n getOrganizationUsers: (organizationId: string) => Promise>;\n getOrganizationUserResetPasswordDetails: (organizationId: string, id: string)\n => Promise;\n postOrganizationUserInvite: (organizationId: string, request: OrganizationUserInviteRequest) => Promise;\n postOrganizationUserReinvite: (organizationId: string, id: string) => Promise;\n postManyOrganizationUserReinvite: (organizationId: string, request: OrganizationUserBulkRequest) => Promise>;\n postOrganizationUserAccept: (organizationId: string, id: string,\n request: OrganizationUserAcceptRequest) => Promise;\n postOrganizationUserConfirm: (organizationId: string, id: string,\n request: OrganizationUserConfirmRequest) => Promise;\n postOrganizationUsersPublicKey: (organizationId: string, request: OrganizationUserBulkRequest) =>\n Promise>;\n postOrganizationUserBulkConfirm: (organizationId: string, request: OrganizationUserBulkConfirmRequest) => Promise>;\n\n putOrganizationUser: (organizationId: string, id: string, request: OrganizationUserUpdateRequest) => Promise;\n putOrganizationUserGroups: (organizationId: string, id: string,\n request: OrganizationUserUpdateGroupsRequest) => Promise;\n putOrganizationUserResetPasswordEnrollment: (organizationId: string, userId: string,\n request: OrganizationUserResetPasswordEnrollmentRequest) => Promise;\n putOrganizationUserResetPassword: (organizationId: string, id: string,\n request: OrganizationUserResetPasswordRequest) => Promise;\n deleteOrganizationUser: (organizationId: string, id: string) => Promise;\n deleteManyOrganizationUsers: (organizationId: string, request: OrganizationUserBulkRequest) => Promise>;\n\n getSync: () => Promise;\n postImportDirectory: (organizationId: string, request: ImportDirectoryRequest) => Promise;\n postPublicImportDirectory: (request: OrganizationImportRequest) => Promise;\n\n getSettingsDomains: () => Promise;\n putSettingsDomains: (request: UpdateDomainsRequest) => Promise;\n\n getTwoFactorProviders: () => Promise>;\n getTwoFactorOrganizationProviders: (organizationId: string) => Promise>;\n getTwoFactorAuthenticator: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorEmail: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorDuo: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorOrganizationDuo: (organizationId: string,\n request: PasswordVerificationRequest) => Promise;\n getTwoFactorYubiKey: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorWebAuthn: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorWebAuthnChallenge: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorRecover: (request: PasswordVerificationRequest) => Promise;\n putTwoFactorAuthenticator: (\n request: UpdateTwoFactorAuthenticatorRequest) => Promise;\n putTwoFactorEmail: (request: UpdateTwoFactorEmailRequest) => Promise;\n putTwoFactorDuo: (request: UpdateTwoFactorDuoRequest) => Promise;\n putTwoFactorOrganizationDuo: (organizationId: string,\n request: UpdateTwoFactorDuoRequest) => Promise;\n putTwoFactorYubiKey: (request: UpdateTwoFactorYubioOtpRequest) => Promise;\n putTwoFactorWebAuthn: (request: UpdateTwoFactorWebAuthnRequest) => Promise;\n deleteTwoFactorWebAuthn: (request: UpdateTwoFactorWebAuthnDeleteRequest) => Promise;\n putTwoFactorDisable: (request: TwoFactorProviderRequest) => Promise;\n putTwoFactorOrganizationDisable: (organizationId: string,\n request: TwoFactorProviderRequest) => Promise;\n postTwoFactorRecover: (request: TwoFactorRecoveryRequest) => Promise;\n postTwoFactorEmailSetup: (request: TwoFactorEmailRequest) => Promise;\n postTwoFactorEmail: (request: TwoFactorEmailRequest) => Promise;\n\n getEmergencyAccessTrusted: () => Promise>;\n getEmergencyAccessGranted: () => Promise>;\n getEmergencyAccess: (id: string) => Promise;\n getEmergencyGrantorPolicies: (id: string) => Promise>;\n putEmergencyAccess: (id: string, request: EmergencyAccessUpdateRequest) => Promise;\n deleteEmergencyAccess: (id: string) => Promise;\n postEmergencyAccessInvite: (request: EmergencyAccessInviteRequest) => Promise;\n postEmergencyAccessReinvite: (id: string) => Promise;\n postEmergencyAccessAccept: (id: string, request: EmergencyAccessAcceptRequest) => Promise;\n postEmergencyAccessConfirm: (id: string, request: EmergencyAccessConfirmRequest) => Promise;\n postEmergencyAccessInitiate: (id: string) => Promise;\n postEmergencyAccessApprove: (id: string) => Promise;\n postEmergencyAccessReject: (id: string) => Promise;\n postEmergencyAccessTakeover: (id: string) => Promise;\n postEmergencyAccessPassword: (id: string, request: EmergencyAccessPasswordRequest) => Promise;\n postEmergencyAccessView: (id: string) => Promise;\n\n getOrganization: (id: string) => Promise;\n getOrganizationBilling: (id: string) => Promise;\n getOrganizationSubscription: (id: string) => Promise;\n getOrganizationLicense: (id: string, installationId: string) => Promise;\n getOrganizationTaxInfo: (id: string) => Promise;\n postOrganization: (request: OrganizationCreateRequest) => Promise;\n putOrganization: (id: string, request: OrganizationUpdateRequest) => Promise;\n putOrganizationTaxInfo: (id: string, request: OrganizationTaxInfoUpdateRequest) => Promise;\n postLeaveOrganization: (id: string) => Promise;\n postOrganizationLicense: (data: FormData) => Promise;\n postOrganizationLicenseUpdate: (id: string, data: FormData) => Promise;\n postOrganizationApiKey: (id: string, request: PasswordVerificationRequest) => Promise;\n postOrganizationRotateApiKey: (id: string, request: PasswordVerificationRequest) => Promise;\n postOrganizationUpgrade: (id: string, request: OrganizationUpgradeRequest) => Promise;\n postOrganizationSeat: (id: string, request: SeatRequest) => Promise;\n postOrganizationStorage: (id: string, request: StorageRequest) => Promise;\n postOrganizationPayment: (id: string, request: PaymentRequest) => Promise;\n postOrganizationVerifyBank: (id: string, request: VerifyBankRequest) => Promise;\n postOrganizationCancel: (id: string) => Promise;\n postOrganizationReinstate: (id: string) => Promise;\n deleteOrganization: (id: string, request: PasswordVerificationRequest) => Promise;\n getPlans: () => Promise>;\n getTaxRates: () => Promise>;\n getOrganizationKeys: (id: string) => Promise;\n postOrganizationKeys: (id: string, request: OrganizationKeysRequest) => Promise;\n\n getEvents: (start: string, end: string, token: string) => Promise>;\n getEventsCipher: (id: string, start: string, end: string, token: string) => Promise>;\n getEventsOrganization: (id: string, start: string, end: string,\n token: string) => Promise>;\n getEventsOrganizationUser: (organizationId: string, id: string,\n start: string, end: string, token: string) => Promise>;\n postEventsCollect: (request: EventRequest[]) => Promise;\n\n deleteSsoUser: (organizationId: string) => Promise;\n getSsoUserIdentifier: () => Promise;\n\n getUserPublicKey: (id: string) => Promise;\n\n getHibpBreach: (username: string) => Promise;\n\n postBitPayInvoice: (request: BitPayInvoiceRequest) => Promise;\n postSetupPayment: () => Promise;\n\n getActiveBearerToken: () => Promise;\n fetch: (request: Request) => Promise;\n nativeFetch: (request: Request) => Promise;\n\n preValidateSso: (identifier: string) => Promise;\n}\n","import { OrganizationData } from '../models/data/organizationData';\nimport { Organization } from '../models/domain/organization';\n\nimport { KdfType } from '../enums/kdfType';\n\nexport abstract class UserService {\n setInformation: (userId: string, email: string, kdf: KdfType, kdfIterations: number) => Promise;\n setEmailVerified: (emailVerified: boolean) => Promise;\n setSecurityStamp: (stamp: string) => Promise;\n getUserId: () => Promise;\n getEmail: () => Promise;\n getSecurityStamp: () => Promise;\n getKdf: () => Promise;\n getKdfIterations: () => Promise;\n getEmailVerified: () => Promise;\n clear: () => Promise;\n isAuthenticated: () => Promise;\n canAccessPremium: () => Promise;\n getOrganization: (id: string) => Promise;\n getAllOrganizations: () => Promise;\n replaceOrganizations: (organizations: { [id: string]: OrganizationData; }) => Promise;\n clearOrganizations: (userId: string) => Promise;\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Pipe({\n name: 'i18n',\n})\nexport class I18nPipe implements PipeTransform {\n constructor(private i18nService: I18nService) { }\n\n transform(id: string, p1?: string, p2?: string, p3?: string): string {\n return this.i18nService.t(id, p1, p2, p3);\n }\n}\n","export abstract class MessagingService {\n send: (subscriber: string, arg?: any) => void;\n}\n","import { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncString } from '../models/domain/encString';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { ProfileOrganizationResponse } from '../models/response/profileOrganizationResponse';\n\nimport { HashPurpose } from '../enums/hashPurpose';\nimport { KdfType } from '../enums/kdfType';\nimport { KeySuffixOptions } from './storage.service';\n\nexport abstract class CryptoService {\n setKey: (key: SymmetricCryptoKey) => Promise;\n setKeyHash: (keyHash: string) => Promise<{}>;\n setEncKey: (encKey: string) => Promise<{}>;\n setEncPrivateKey: (encPrivateKey: string) => Promise<{}>;\n setOrgKeys: (orgs: ProfileOrganizationResponse[]) => Promise<{}>;\n getKey: (keySuffix?: KeySuffixOptions) => Promise;\n getKeyFromStorage: (keySuffix: KeySuffixOptions) => Promise;\n getKeyHash: () => Promise;\n compareAndUpdateKeyHash: (masterPassword: string, key: SymmetricCryptoKey) => Promise;\n getEncKey: (key?: SymmetricCryptoKey) => Promise;\n getPublicKey: () => Promise;\n getPrivateKey: () => Promise;\n getFingerprint: (userId: string, publicKey?: ArrayBuffer) => Promise;\n getOrgKeys: () => Promise>;\n getOrgKey: (orgId: string) => Promise;\n hasKey: () => Promise;\n hasKeyInMemory: () => boolean;\n hasKeyStored: (keySuffix?: KeySuffixOptions) => Promise;\n hasEncKey: () => Promise;\n clearKey: (clearSecretStorage?: boolean) => Promise;\n clearKeyHash: () => Promise;\n clearEncKey: (memoryOnly?: boolean) => Promise;\n clearKeyPair: (memoryOnly?: boolean) => Promise;\n clearOrgKeys: (memoryOnly?: boolean) => Promise;\n clearPinProtectedKey: () => Promise;\n clearKeys: () => Promise;\n toggleKey: () => Promise;\n makeKey: (password: string, salt: string, kdf: KdfType, kdfIterations: number) => Promise;\n makeKeyFromPin: (pin: string, salt: string, kdf: KdfType, kdfIterations: number,\n protectedKeyCs?: EncString) => Promise;\n makeShareKey: () => Promise<[EncString, SymmetricCryptoKey]>;\n makeKeyPair: (key?: SymmetricCryptoKey) => Promise<[string, EncString]>;\n makePinKey: (pin: string, salt: string, kdf: KdfType, kdfIterations: number) => Promise;\n makeSendKey: (keyMaterial: ArrayBuffer) => Promise;\n hashPassword: (password: string, key: SymmetricCryptoKey, hashPurpose?: HashPurpose) => Promise;\n makeEncKey: (key: SymmetricCryptoKey) => Promise<[SymmetricCryptoKey, EncString]>;\n remakeEncKey: (key: SymmetricCryptoKey, encKey?: SymmetricCryptoKey) => Promise<[SymmetricCryptoKey, EncString]>;\n encrypt: (plainValue: string | ArrayBuffer, key?: SymmetricCryptoKey) => Promise;\n encryptToBytes: (plainValue: ArrayBuffer, key?: SymmetricCryptoKey) => Promise;\n rsaEncrypt: (data: ArrayBuffer, publicKey?: ArrayBuffer) => Promise;\n rsaDecrypt: (encValue: string, privateKeyValue?: ArrayBuffer) => Promise;\n decryptToBytes: (encString: EncString, key?: SymmetricCryptoKey) => Promise;\n decryptToUtf8: (encString: EncString, key?: SymmetricCryptoKey) => Promise;\n decryptFromBytes: (encBuf: ArrayBuffer, key: SymmetricCryptoKey) => Promise;\n randomNumber: (min: number, max: number) => Promise;\n validateKey: (key: SymmetricCryptoKey) => Promise;\n}\n","import {\n Directive,\n ElementRef,\n Input,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[appA11yTitle]',\n})\nexport class A11yTitleDirective {\n @Input() set appA11yTitle(title: string) {\n this.title = title;\n }\n\n private title: string;\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngOnInit() {\n if (!this.el.nativeElement.hasAttribute('title')) {\n this.renderer.setAttribute(this.el.nativeElement, 'title', this.title);\n }\n if (!this.el.nativeElement.hasAttribute('aria-label')) {\n this.renderer.setAttribute(this.el.nativeElement, 'aria-label', this.title);\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnChanges,\n} from '@angular/core';\n\nimport { ValidationService } from '../services/validation.service';\n\n@Directive({\n selector: '[appApiAction]',\n})\nexport class ApiActionDirective implements OnChanges {\n @Input() appApiAction: Promise;\n\n constructor(private el: ElementRef, private validationService: ValidationService) { }\n\n ngOnChanges(changes: any) {\n if (this.appApiAction == null || this.appApiAction.then == null) {\n return;\n }\n\n this.el.nativeElement.loading = true;\n\n this.appApiAction.then((response: any) => {\n this.el.nativeElement.loading = false;\n }, (e: any) => {\n this.el.nativeElement.loading = false;\n this.validationService.showError(e);\n });\n }\n}\n","import { CipherType } from '../enums/cipherType';\nimport { UriMatchType } from '../enums/uriMatchType';\n\nimport { CipherData } from '../models/data/cipherData';\n\nimport { Cipher } from '../models/domain/cipher';\nimport { Field } from '../models/domain/field';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { FieldView } from '../models/view/fieldView';\n\nexport abstract class CipherService {\n decryptedCipherCache: CipherView[];\n\n clearCache: () => void;\n encrypt: (model: CipherView, key?: SymmetricCryptoKey, originalCipher?: Cipher) => Promise;\n encryptFields: (fieldsModel: FieldView[], key: SymmetricCryptoKey) => Promise;\n encryptField: (fieldModel: FieldView, key: SymmetricCryptoKey) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllDecryptedForGrouping: (groupingId: string, folder?: boolean) => Promise;\n getAllDecryptedForUrl: (url: string, includeOtherTypes?: CipherType[],\n defaultMatch?: UriMatchType) => Promise;\n getAllFromApiForOrganization: (organizationId: string) => Promise;\n getLastUsedForUrl: (url: string, autofillOnPageLoad: boolean) => Promise;\n getLastLaunchedForUrl: (url: string, autofillOnPageLoad: boolean) => Promise;\n getNextCipherForUrl: (url: string) => Promise;\n updateLastUsedIndexForUrl: (url: string) => void;\n updateLastUsedDate: (id: string) => Promise;\n updateLastLaunchedDate: (id: string) => Promise;\n saveNeverDomain: (domain: string) => Promise;\n saveWithServer: (cipher: Cipher) => Promise;\n shareWithServer: (cipher: CipherView, organizationId: string, collectionIds: string[]) => Promise;\n shareManyWithServer: (ciphers: CipherView[], organizationId: string, collectionIds: string[]) => Promise;\n saveAttachmentWithServer: (cipher: Cipher, unencryptedFile: any, admin?: boolean) => Promise;\n saveAttachmentRawWithServer: (cipher: Cipher, filename: string, data: ArrayBuffer,\n admin?: boolean) => Promise;\n saveCollectionsWithServer: (cipher: Cipher) => Promise;\n upsert: (cipher: CipherData | CipherData[]) => Promise;\n replace: (ciphers: { [id: string]: CipherData; }) => Promise;\n clear: (userId: string) => Promise;\n moveManyWithServer: (ids: string[], folderId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n deleteManyWithServer: (ids: string[]) => Promise;\n deleteAttachment: (id: string, attachmentId: string) => Promise;\n deleteAttachmentWithServer: (id: string, attachmentId: string) => Promise;\n sortCiphersByLastUsed: (a: any, b: any) => number;\n sortCiphersByLastUsedThenName: (a: any, b: any) => number;\n getLocaleSortingFunction: () => (a: CipherView, b: CipherView) => number;\n softDelete: (id: string | string[]) => Promise;\n softDeleteWithServer: (id: string) => Promise;\n softDeleteManyWithServer: (ids: string[]) => Promise;\n restore: (cipher: { id: string, revisionDate: string; } | { id: string, revisionDate: string; }[]) => Promise;\n restoreWithServer: (id: string) => Promise;\n restoreManyWithServer: (ids: string[]) => Promise;\n}\n","export abstract class BaseResponse {\n private response: any;\n\n constructor(response: any) {\n this.response = response;\n }\n\n protected getResponseProperty(propertyName: string, response: any = null, exactName = false): any {\n if (propertyName == null || propertyName === '') {\n throw new Error('propertyName must not be null/empty.');\n }\n if (response == null && this.response != null) {\n response = this.response;\n }\n if (response == null) {\n return null;\n }\n if (!exactName && response[propertyName] === undefined) {\n let otherCasePropertyName: string = null;\n if (propertyName.charAt(0) === propertyName.charAt(0).toUpperCase()) {\n otherCasePropertyName = propertyName.charAt(0).toLowerCase();\n } else {\n otherCasePropertyName = propertyName.charAt(0).toUpperCase();\n }\n if (propertyName.length > 1) {\n otherCasePropertyName += propertyName.slice(1);\n }\n\n propertyName = otherCasePropertyName;\n if (response[propertyName] === undefined) {\n propertyName = propertyName.toLowerCase();\n }\n if (response[propertyName] === undefined) {\n propertyName = propertyName.toUpperCase();\n }\n }\n return response[propertyName];\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Component({\n selector: 'app-callout',\n templateUrl: 'callout.component.html',\n})\nexport class CalloutComponent implements OnInit {\n @Input() type = 'info';\n @Input() icon: string;\n @Input() title: string;\n @Input() clickable: boolean;\n\n calloutStyle: string;\n\n constructor(private i18nService: I18nService) { }\n\n ngOnInit() {\n this.calloutStyle = this.type;\n\n if (this.type === 'warning' || this.type === 'danger') {\n if (this.type === 'danger') {\n this.calloutStyle = 'danger';\n }\n if (this.title === undefined) {\n this.title = this.i18nService.t('warning');\n }\n if (this.icon === undefined) {\n this.icon = 'fa-warning';\n }\n } else if (this.type === 'error') {\n this.calloutStyle = 'danger';\n if (this.title === undefined) {\n this.title = this.i18nService.t('error');\n }\n if (this.icon === undefined) {\n this.icon = 'fa-bolt';\n }\n } else if (this.type === 'tip') {\n this.calloutStyle = 'success';\n if (this.title === undefined) {\n this.title = this.i18nService.t('tip');\n }\n if (this.icon === undefined) {\n this.icon = 'fa-lightbulb-o';\n }\n }\n }\n}\n","

{{title}}

","import * as papa from 'papaparse';\n\nimport { LogService } from '../abstractions/log.service';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { CollectionView } from '../models/view/collectionView';\nimport { LoginUriView } from '../models/view/loginUriView';\n\nimport { Utils } from '../misc/utils';\n\nimport { FieldView } from '../models/view/fieldView';\nimport { FolderView } from '../models/view/folderView';\nimport { LoginView } from '../models/view/loginView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherRepromptType } from '../enums/cipherRepromptType';\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { ConsoleLogService } from '../services/consoleLog.service';\n\nexport abstract class BaseImporter {\n organizationId: string = null;\n\n protected logService: LogService = new ConsoleLogService(false);\n\n protected newLineRegex = /(?:\\r\\n|\\r|\\n)/;\n\n protected passwordFieldNames = [\n 'password', 'pass word', 'passphrase', 'pass phrase',\n 'pass', 'code', 'code word', 'codeword',\n 'secret', 'secret word', 'personpwd',\n 'key', 'keyword', 'key word', 'keyphrase', 'key phrase',\n 'form_pw', 'wppassword', 'pin', 'pwd', 'pw', 'pword', 'passwd',\n 'p', 'serial', 'serial#', 'license key', 'reg #',\n\n // Non-English names\n 'passwort',\n ];\n\n protected usernameFieldNames = [\n 'user', 'name', 'user name', 'username', 'login name',\n 'email', 'e-mail', 'id', 'userid', 'user id',\n 'login', 'form_loginname', 'wpname', 'mail',\n 'loginid', 'login id', 'log', 'personlogin',\n 'first name', 'last name', 'card#', 'account #',\n 'member', 'member #',\n\n // Non-English names\n 'nom', 'benutzername',\n ];\n\n protected notesFieldNames = [\n 'note', 'notes', 'comment', 'comments', 'memo',\n 'description', 'free form', 'freeform',\n 'free text', 'freetext', 'free',\n\n // Non-English names\n 'kommentar',\n ];\n\n protected uriFieldNames: string[] = [\n 'url', 'hyper link', 'hyperlink', 'link',\n 'host', 'hostname', 'host name', 'server', 'address',\n 'hyper ref', 'href', 'web', 'website', 'web site', 'site',\n 'web-site', 'uri',\n\n // Non-English names\n 'ort', 'adresse',\n ];\n\n protected parseCsvOptions = {\n encoding: 'UTF-8',\n skipEmptyLines: false,\n };\n\n protected get organization() {\n return this.organizationId != null;\n }\n\n protected parseXml(data: string): Document {\n const parser = new DOMParser();\n const doc = parser.parseFromString(data, 'application/xml');\n return doc != null && doc.querySelector('parsererror') == null ? doc : null;\n }\n\n protected parseCsv(data: string, header: boolean, options: any = {}): any[] {\n const parseOptions = Object.assign({ header: header }, this.parseCsvOptions, options);\n data = this.splitNewLine(data).join('\\n').trim();\n const result = papa.parse(data, parseOptions);\n if (result.errors != null && result.errors.length > 0) {\n result.errors.forEach(e => {\n if (e.row != null) {\n // tslint:disable-next-line\n this.logService.warning('Error parsing row ' + e.row + ': ' + e.message);\n }\n });\n }\n return result.data && result.data.length > 0 ? result.data : null;\n }\n\n protected parseSingleRowCsv(rowData: string) {\n if (this.isNullOrWhitespace(rowData)) {\n return null;\n }\n const parsedRow = this.parseCsv(rowData, false);\n if (parsedRow != null && parsedRow.length > 0 && parsedRow[0].length > 0) {\n return parsedRow[0];\n }\n return null;\n }\n\n protected makeUriArray(uri: string | string[]): LoginUriView[] {\n if (uri == null) {\n return null;\n }\n\n if (typeof uri === 'string') {\n const loginUri = new LoginUriView();\n loginUri.uri = this.fixUri(uri);\n if (this.isNullOrWhitespace(loginUri.uri)) {\n return null;\n }\n loginUri.match = null;\n return [loginUri];\n }\n\n if (uri.length > 0) {\n const returnArr: LoginUriView[] = [];\n uri.forEach(u => {\n const loginUri = new LoginUriView();\n loginUri.uri = this.fixUri(u);\n if (this.isNullOrWhitespace(loginUri.uri)) {\n return;\n }\n loginUri.match = null;\n returnArr.push(loginUri);\n });\n return returnArr.length === 0 ? null : returnArr;\n }\n\n return null;\n }\n\n protected fixUri(uri: string) {\n if (uri == null) {\n return null;\n }\n uri = uri.trim();\n if (uri.indexOf('://') === -1 && uri.indexOf('.') >= 0) {\n uri = 'http://' + uri;\n }\n if (uri.length > 1000) {\n return uri.substring(0, 1000);\n }\n return uri;\n }\n\n protected nameFromUrl(url: string) {\n const hostname = Utils.getHostname(url);\n if (this.isNullOrWhitespace(hostname)) {\n return null;\n }\n return hostname.startsWith('www.') ? hostname.replace('www.', '') : hostname;\n }\n\n protected isNullOrWhitespace(str: string): boolean {\n return Utils.isNullOrWhitespace(str);\n }\n\n protected getValueOrDefault(str: string, defaultValue: string = null): string {\n if (this.isNullOrWhitespace(str)) {\n return defaultValue;\n }\n return str;\n }\n\n protected splitNewLine(str: string): string[] {\n return str.split(this.newLineRegex);\n }\n\n // ref https://stackoverflow.com/a/5911300\n protected getCardBrand(cardNum: string) {\n if (this.isNullOrWhitespace(cardNum)) {\n return null;\n }\n\n // Visa\n let re = new RegExp('^4');\n if (cardNum.match(re) != null) {\n return 'Visa';\n }\n\n // Mastercard\n // Updated for Mastercard 2017 BINs expansion\n if (/^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/\n .test(cardNum)) {\n return 'Mastercard';\n }\n\n // AMEX\n re = new RegExp('^3[47]');\n if (cardNum.match(re) != null) {\n return 'Amex';\n }\n\n // Discover\n re = new RegExp('^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)');\n if (cardNum.match(re) != null) {\n return 'Discover';\n }\n\n // Diners\n re = new RegExp('^36');\n if (cardNum.match(re) != null) {\n return 'Diners Club';\n }\n\n // Diners - Carte Blanche\n re = new RegExp('^30[0-5]');\n if (cardNum.match(re) != null) {\n return 'Diners Club';\n }\n\n // JCB\n re = new RegExp('^35(2[89]|[3-8][0-9])');\n if (cardNum.match(re) != null) {\n return 'JCB';\n }\n\n // Visa Electron\n re = new RegExp('^(4026|417500|4508|4844|491(3|7))');\n if (cardNum.match(re) != null) {\n return 'Visa';\n }\n\n return null;\n }\n\n protected setCardExpiration(cipher: CipherView, expiration: string): boolean {\n if (!this.isNullOrWhitespace(expiration)) {\n expiration = expiration.replace(/\\s/g, '');\n const parts = expiration.split('/');\n if (parts.length === 2) {\n let month: string = null;\n let year: string = null;\n if (parts[0].length === 1 || parts[0].length === 2) {\n month = parts[0];\n if (month.length === 2 && month[0] === '0') {\n month = month.substr(1, 1);\n }\n }\n if (parts[1].length === 2 || parts[1].length === 4) {\n year = month.length === 2 ? '20' + parts[1] : parts[1];\n }\n if (month != null && year != null) {\n cipher.card.expMonth = month;\n cipher.card.expYear = year;\n return true;\n }\n }\n }\n return false;\n }\n\n protected moveFoldersToCollections(result: ImportResult) {\n result.folderRelationships.forEach(r => result.collectionRelationships.push(r));\n result.collections = result.folders.map(f => {\n const collection = new CollectionView();\n collection.name = f.name;\n return collection;\n });\n result.folderRelationships = [];\n result.folders = [];\n }\n\n protected querySelectorDirectChild(parentEl: Element, query: string) {\n const els = this.querySelectorAllDirectChild(parentEl, query);\n return els.length === 0 ? null : els[0];\n }\n\n protected querySelectorAllDirectChild(parentEl: Element, query: string) {\n return Array.from(parentEl.querySelectorAll(query)).filter(el => el.parentNode === parentEl);\n }\n\n protected initLoginCipher() {\n const cipher = new CipherView();\n cipher.favorite = false;\n cipher.notes = '';\n cipher.fields = [];\n cipher.login = new LoginView();\n cipher.type = CipherType.Login;\n return cipher;\n }\n\n protected cleanupCipher(cipher: CipherView) {\n if (cipher == null) {\n return;\n }\n if (cipher.type !== CipherType.Login) {\n cipher.login = null;\n }\n if (this.isNullOrWhitespace(cipher.name)) {\n cipher.name = '--';\n }\n if (this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = null;\n } else {\n cipher.notes = cipher.notes.trim();\n }\n if (cipher.fields != null && cipher.fields.length === 0) {\n cipher.fields = null;\n }\n }\n\n protected processKvp(cipher: CipherView, key: string, value: string, type: FieldType = FieldType.Text) {\n if (this.isNullOrWhitespace(value)) {\n return;\n }\n if (this.isNullOrWhitespace(key)) {\n key = '';\n }\n if (value.length > 200 || value.trim().search(this.newLineRegex) > -1) {\n if (cipher.notes == null) {\n cipher.notes = '';\n }\n cipher.notes += (key + ': ' + this.splitNewLine(value).join('\\n') + '\\n');\n } else {\n if (cipher.fields == null) {\n cipher.fields = [];\n }\n const field = new FieldView();\n field.type = type;\n field.name = key;\n field.value = value;\n cipher.fields.push(field);\n }\n }\n\n protected processFolder(result: ImportResult, folderName: string) {\n let folderIndex = result.folders.length;\n const hasFolder = !this.isNullOrWhitespace(folderName);\n let addFolder = hasFolder;\n\n if (hasFolder) {\n for (let i = 0; i < result.folders.length; i++) {\n if (result.folders[i].name === folderName) {\n addFolder = false;\n folderIndex = i;\n break;\n }\n }\n }\n\n if (addFolder) {\n const f = new FolderView();\n f.name = folderName;\n result.folders.push(f);\n }\n if (hasFolder) {\n result.folderRelationships.push([result.ciphers.length, folderIndex]);\n }\n }\n\n protected convertToNoteIfNeeded(cipher: CipherView) {\n if (cipher.type === CipherType.Login && this.isNullOrWhitespace(cipher.login.username) &&\n this.isNullOrWhitespace(cipher.login.password) &&\n (cipher.login.uris == null || cipher.login.uris.length === 0)) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n }\n }\n}\n","import { CipherView } from '../view/cipherView';\nimport { CollectionView } from '../view/collectionView';\nimport { FolderView } from '../view/folderView';\n\nexport class ImportResult {\n success = false;\n errorMessage: string;\n ciphers: CipherView[] = [];\n folders: FolderView[] = [];\n folderRelationships: [number, number][] = [];\n collections: CollectionView[] = [];\n collectionRelationships: [number, number][] = [];\n}\n","import * as tldjs from 'tldjs';\n\nimport { I18nService } from '../abstractions/i18n.service';\n\n// tslint:disable-next-line\nconst nodeURL = typeof window === 'undefined' ? require('url') : null;\n\nexport class Utils {\n static inited = false;\n static isNativeScript = false;\n static isNode = false;\n static isBrowser = true;\n static isMobileBrowser = false;\n static isAppleMobileBrowser = false;\n static global: any = null;\n static tldEndingRegex = /.*\\.(com|net|org|edu|uk|gov|ca|de|jp|fr|au|ru|ch|io|es|us|co|xyz|info|ly|mil)$/;\n\n static init() {\n if (Utils.inited) {\n return;\n }\n\n Utils.inited = true;\n Utils.isNode = typeof process !== 'undefined' && (process as any).release != null &&\n (process as any).release.name === 'node';\n Utils.isBrowser = typeof window !== 'undefined';\n Utils.isNativeScript = !Utils.isNode && !Utils.isBrowser;\n Utils.isMobileBrowser = Utils.isBrowser && this.isMobile(window);\n Utils.isAppleMobileBrowser = Utils.isBrowser && this.isAppleMobile(window);\n Utils.global = Utils.isNativeScript ? global : (Utils.isNode && !Utils.isBrowser ? global : window);\n }\n\n static fromB64ToArray(str: string): Uint8Array {\n if (Utils.isNode || Utils.isNativeScript) {\n return new Uint8Array(Buffer.from(str, 'base64'));\n } else {\n const binaryString = window.atob(str);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n }\n\n static fromUrlB64ToArray(str: string): Uint8Array {\n return Utils.fromB64ToArray(Utils.fromUrlB64ToB64(str));\n }\n\n static fromHexToArray(str: string): Uint8Array {\n if (Utils.isNode || Utils.isNativeScript) {\n return new Uint8Array(Buffer.from(str, 'hex'));\n } else {\n const bytes = new Uint8Array(str.length / 2);\n for (let i = 0; i < str.length; i += 2) {\n bytes[i / 2] = parseInt(str.substr(i, 2), 16);\n }\n return bytes;\n }\n }\n\n static fromUtf8ToArray(str: string): Uint8Array {\n if (Utils.isNode || Utils.isNativeScript) {\n return new Uint8Array(Buffer.from(str, 'utf8'));\n } else {\n const strUtf8 = unescape(encodeURIComponent(str));\n const arr = new Uint8Array(strUtf8.length);\n for (let i = 0; i < strUtf8.length; i++) {\n arr[i] = strUtf8.charCodeAt(i);\n }\n return arr;\n }\n }\n\n static fromByteStringToArray(str: string): Uint8Array {\n const arr = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n arr[i] = str.charCodeAt(i);\n }\n return arr;\n }\n\n static fromBufferToB64(buffer: ArrayBuffer): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(buffer).toString('base64');\n } else {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n }\n }\n\n static fromBufferToUrlB64(buffer: ArrayBuffer): string {\n return Utils.fromB64toUrlB64(Utils.fromBufferToB64(buffer));\n }\n\n static fromB64toUrlB64(b64Str: string) {\n return b64Str.replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=/g, '');\n }\n\n static fromBufferToUtf8(buffer: ArrayBuffer): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(buffer).toString('utf8');\n } else {\n const bytes = new Uint8Array(buffer);\n const encodedString = String.fromCharCode.apply(null, bytes);\n return decodeURIComponent(escape(encodedString));\n }\n }\n\n static fromBufferToByteString(buffer: ArrayBuffer): string {\n return String.fromCharCode.apply(null, new Uint8Array(buffer));\n }\n\n // ref: https://stackoverflow.com/a/40031979/1090359\n static fromBufferToHex(buffer: ArrayBuffer): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(buffer).toString('hex');\n } else {\n const bytes = new Uint8Array(buffer);\n return Array.prototype.map.call(bytes, (x: number) => ('00' + x.toString(16)).slice(-2)).join('');\n }\n }\n\n static fromUrlB64ToB64(urlB64Str: string): string {\n let output = urlB64Str.replace(/-/g, '+').replace(/_/g, '/');\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += '==';\n break;\n case 3:\n output += '=';\n break;\n default:\n throw new Error('Illegal base64url string!');\n }\n\n return output;\n }\n\n static fromUrlB64ToUtf8(urlB64Str: string): string {\n return Utils.fromB64ToUtf8(Utils.fromUrlB64ToB64(urlB64Str));\n }\n\n static fromUtf8ToB64(utfStr: string): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(utfStr, 'utf8').toString('base64');\n } else {\n return decodeURIComponent(escape(window.btoa(utfStr)));\n }\n }\n\n static fromB64ToUtf8(b64Str: string): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(b64Str, 'base64').toString('utf8');\n } else {\n return decodeURIComponent(escape(window.atob(b64Str)));\n }\n }\n\n // ref: http://stackoverflow.com/a/2117523/1090359\n static newGuid(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // tslint:disable-next-line\n const r = Math.random() * 16 | 0;\n // tslint:disable-next-line\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n static isGuid(id: string) {\n return RegExp(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/, 'i').test(id);\n }\n\n static getHostname(uriString: string): string {\n const url = Utils.getUrl(uriString);\n try {\n return url != null && url.hostname !== '' ? url.hostname : null;\n } catch {\n return null;\n }\n }\n\n static getHost(uriString: string): string {\n const url = Utils.getUrl(uriString);\n try {\n return url != null && url.host !== '' ? url.host : null;\n } catch {\n return null;\n }\n }\n\n static getDomain(uriString: string): string {\n if (uriString == null) {\n return null;\n }\n\n uriString = uriString.trim();\n if (uriString === '') {\n return null;\n }\n\n if (uriString.startsWith('data:')) {\n return null;\n }\n\n let httpUrl = uriString.startsWith('http://') || uriString.startsWith('https://');\n if (!httpUrl && uriString.indexOf('://') < 0 && Utils.tldEndingRegex.test(uriString)) {\n uriString = 'http://' + uriString;\n httpUrl = true;\n }\n\n if (httpUrl) {\n try {\n const url = Utils.getUrlObject(uriString);\n if (url.hostname === 'localhost' || Utils.validIpAddress(url.hostname)) {\n return url.hostname;\n }\n\n const urlDomain = tldjs != null && tldjs.getDomain != null ? tldjs.getDomain(url.hostname) : null;\n return urlDomain != null ? urlDomain : url.hostname;\n } catch (e) { }\n }\n\n try {\n const domain = tldjs != null && tldjs.getDomain != null ? tldjs.getDomain(uriString) : null;\n\n if (domain != null) {\n return domain;\n }\n } catch {\n return null;\n }\n\n return null;\n }\n\n static getQueryParams(uriString: string): Map {\n const url = Utils.getUrl(uriString);\n if (url == null || url.search == null || url.search === '') {\n return null;\n }\n const map = new Map();\n const pairs = (url.search[0] === '?' ? url.search.substr(1) : url.search).split('&');\n pairs.forEach(pair => {\n const parts = pair.split('=');\n if (parts.length < 1) {\n return;\n }\n map.set(decodeURIComponent(parts[0]).toLowerCase(), parts[1] == null ? '' : decodeURIComponent(parts[1]));\n });\n return map;\n }\n\n static getSortFunction(i18nService: I18nService, prop: string) {\n return (a: any, b: any) => {\n if (a[prop] == null && b[prop] != null) {\n return -1;\n }\n if (a[prop] != null && b[prop] == null) {\n return 1;\n }\n if (a[prop] == null && b[prop] == null) {\n return 0;\n }\n\n return i18nService.collator ? i18nService.collator.compare(a[prop], b[prop]) :\n a[prop].localeCompare(b[prop]);\n };\n }\n\n static isNullOrWhitespace(str: string): boolean {\n return str == null || typeof str !== 'string' || str.trim() === '';\n }\n\n static nameOf(name: string & keyof T) {\n return name;\n }\n\n static assign(target: T, source: Partial): T {\n return Object.assign(target, source);\n }\n\n static getUrl(uriString: string): URL {\n if (uriString == null) {\n return null;\n }\n\n uriString = uriString.trim();\n if (uriString === '') {\n return null;\n }\n\n let url = Utils.getUrlObject(uriString);\n if (url == null) {\n const hasHttpProtocol = uriString.indexOf('http://') === 0 || uriString.indexOf('https://') === 0;\n if (!hasHttpProtocol && uriString.indexOf('.') > -1) {\n url = Utils.getUrlObject('http://' + uriString);\n }\n }\n return url;\n }\n\n private static validIpAddress(ipString: string): boolean {\n // tslint:disable-next-line\n const ipRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n return ipRegex.test(ipString);\n }\n\n private static isMobile(win: Window) {\n let mobile = false;\n (a => {\n // tslint:disable-next-line\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) {\n mobile = true;\n }\n })(win.navigator.userAgent || win.navigator.vendor || (win as any).opera);\n return mobile || win.navigator.userAgent.match(/iPad/i) != null;\n }\n\n private static isAppleMobile(win: Window) {\n return win.navigator.userAgent.match(/iPhone/i) != null || win.navigator.userAgent.match(/iPad/i) != null;\n }\n\n private static getUrlObject(uriString: string): URL {\n try {\n if (nodeURL != null) {\n return nodeURL.URL ? new nodeURL.URL(uriString) : nodeURL.parse(uriString);\n } else if (typeof URL === 'function') {\n return new URL(uriString);\n } else if (window != null) {\n const hasProtocol = uriString.indexOf('://') > -1;\n if (!hasProtocol && uriString.indexOf('.') > -1) {\n uriString = 'http://' + uriString;\n } else if (!hasProtocol) {\n return null;\n }\n const anchor = window.document.createElement('a');\n anchor.href = uriString;\n return anchor as any;\n }\n } catch (e) { }\n\n return null;\n }\n}\n\nUtils.init();\n","import { PolicyData } from '../models/data/policyData';\n\nimport { MasterPasswordPolicyOptions } from '../models/domain/masterPasswordPolicyOptions';\nimport { Policy } from '../models/domain/policy';\nimport { ResetPasswordPolicyOptions } from '../models/domain/resetPasswordPolicyOptions';\n\nimport { PolicyType } from '../enums/policyType';\n\nimport { ListResponse } from '../models/response/listResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\n\nexport abstract class PolicyService {\n policyCache: Policy[];\n\n clearCache: () => void;\n getAll: (type?: PolicyType) => Promise;\n replace: (policies: { [id: string]: PolicyData; }) => Promise;\n clear: (userId: string) => Promise;\n getMasterPasswordPolicyOptions: (policies?: Policy[]) => Promise;\n evaluateMasterPassword: (passwordStrength: number, newPassword: string,\n enforcedPolicyOptions?: MasterPasswordPolicyOptions) => boolean;\n getResetPasswordPolicyOptions: (policies: Policy[], orgId: string) => [ResetPasswordPolicyOptions, boolean];\n mapPoliciesFromToken: (policiesResponse: ListResponse) => Policy[];\n}\n","import * as zxcvbn from 'zxcvbn';\n\nimport { GeneratedPasswordHistory } from '../models/domain/generatedPasswordHistory';\nimport { PasswordGeneratorPolicyOptions } from '../models/domain/passwordGeneratorPolicyOptions';\n\nexport abstract class PasswordGenerationService {\n generatePassword: (options: any) => Promise;\n generatePassphrase: (options: any) => Promise;\n getOptions: () => Promise<[any, PasswordGeneratorPolicyOptions]>;\n enforcePasswordGeneratorPoliciesOnOptions: (options: any) => Promise<[any, PasswordGeneratorPolicyOptions]>;\n getPasswordGeneratorPolicyOptions: () => Promise;\n saveOptions: (options: any) => Promise;\n getHistory: () => Promise;\n addHistory: (password: string) => Promise;\n clear: () => Promise;\n passwordStrength: (password: string, userInputs?: string[]) => zxcvbn.ZXCVBNResult;\n normalizeOptions: (options: any, enforcedPolicyOptions: PasswordGeneratorPolicyOptions) => void;\n}\n","export abstract class StateService {\n get: (key: string) => Promise;\n save: (key: string, obj: any) => Promise;\n remove: (key: string) => Promise;\n purge: () => Promise;\n}\n","import {\n Directive,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appStopClick]',\n})\nexport class StopClickDirective {\n @HostListener('click', ['$event']) onClick($event: MouseEvent) {\n $event.preventDefault();\n }\n}\n","export enum CipherType {\n Login = 1,\n SecureNote = 2,\n Card = 3,\n Identity = 4,\n}\n","export abstract class StorageService {\n get: (key: string, options?: StorageServiceOptions) => Promise;\n has: (key: string, options?: StorageServiceOptions) => Promise;\n save: (key: string, obj: any, options?: StorageServiceOptions) => Promise;\n remove: (key: string, options?: StorageServiceOptions) => Promise;\n}\n\nexport interface StorageServiceOptions {\n keySuffix: KeySuffixOptions;\n}\n\nexport type KeySuffixOptions = 'auto' | 'biometric';\n","import { CollectionData } from '../models/data/collectionData';\n\nimport { Collection } from '../models/domain/collection';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { CollectionView } from '../models/view/collectionView';\n\nexport abstract class CollectionService {\n decryptedCollectionCache: CollectionView[];\n\n clearCache: () => void;\n encrypt: (model: CollectionView) => Promise;\n decryptMany: (collections: Collection[]) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllNested: (collections?: CollectionView[]) => Promise[]>;\n getNested: (id: string) => Promise>;\n upsert: (collection: CollectionData | CollectionData[]) => Promise;\n replace: (collections: { [id: string]: CollectionData; }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n}\n","import {\n Directive,\n ElementRef,\n Input,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[appInputVerbatim]',\n})\nexport class InputVerbatimDirective {\n @Input() set appInputVerbatim(condition: boolean | string) {\n this.disableComplete = condition === '' || condition === true;\n }\n\n private disableComplete: boolean;\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngOnInit() {\n if (this.disableComplete && !this.el.nativeElement.hasAttribute('autocomplete')) {\n this.renderer.setAttribute(this.el.nativeElement, 'autocomplete', 'off');\n }\n if (!this.el.nativeElement.hasAttribute('autocapitalize')) {\n this.renderer.setAttribute(this.el.nativeElement, 'autocapitalize', 'none');\n }\n if (!this.el.nativeElement.hasAttribute('autocorrect')) {\n this.renderer.setAttribute(this.el.nativeElement, 'autocorrect', 'none');\n }\n if (!this.el.nativeElement.hasAttribute('spellcheck')) {\n this.renderer.setAttribute(this.el.nativeElement, 'spellcheck', 'false');\n }\n if (!this.el.nativeElement.hasAttribute('inputmode')) {\n this.renderer.setAttribute(this.el.nativeElement, 'inputmode', 'verbatim');\n }\n }\n}\n","import { FolderData } from '../models/data/folderData';\n\nimport { Folder } from '../models/domain/folder';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { FolderView } from '../models/view/folderView';\n\nexport abstract class FolderService {\n decryptedFolderCache: FolderView[];\n\n clearCache: () => void;\n encrypt: (model: FolderView, key?: SymmetricCryptoKey) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllNested: () => Promise[]>;\n getNested: (id: string) => Promise>;\n saveWithServer: (folder: Folder) => Promise;\n upsert: (folder: FolderData | FolderData[]) => Promise;\n replace: (folders: { [id: string]: FolderData; }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n}\n","import {\n Directive,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appStopProp]',\n})\nexport class StopPropDirective {\n @HostListener('click', ['$event']) onClick($event: MouseEvent) {\n $event.stopPropagation();\n }\n}\n","export abstract class EnvironmentService {\n baseUrl: string;\n webVaultUrl: string;\n apiUrl: string;\n identityUrl: string;\n iconsUrl: string;\n notificationsUrl: string;\n eventsUrl: string;\n enterpriseUrl: string;\n\n getWebVaultUrl: () => string;\n setUrlsFromStorage: () => Promise;\n setUrls: (urls: any) => Promise;\n}\n","import { TwoFactorProviderType } from '../enums/twoFactorProviderType';\n\nimport { AuthResult } from '../models/domain/authResult';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nexport abstract class AuthService {\n email: string;\n masterPasswordHash: string;\n code: string;\n codeVerifier: string;\n ssoRedirectUrl: string;\n clientId: string;\n clientSecret: string;\n twoFactorProvidersData: Map;\n selectedTwoFactorProviderType: TwoFactorProviderType;\n\n logIn: (email: string, masterPassword: string) => Promise;\n logInSso: (code: string, codeVerifier: string, redirectUrl: string) => Promise;\n logInApiKey: (clientId: string, clientSecret: string) => Promise;\n logInTwoFactor: (twoFactorProvider: TwoFactorProviderType, twoFactorToken: string,\n remember?: boolean) => Promise;\n logInComplete: (email: string, masterPassword: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean) => Promise;\n logInSsoComplete: (code: string, codeVerifier: string, redirectUrl: string,\n twoFactorProvider: TwoFactorProviderType, twoFactorToken: string, remember?: boolean) => Promise;\n logInApiKeyComplete: (clientId: string, clientSecret: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean) => Promise;\n logOut: (callback: Function) => void;\n getSupportedTwoFactorProviders: (win: Window) => any[];\n getDefaultTwoFactorProvider: (webAuthnSupported: boolean) => TwoFactorProviderType;\n makePreloginKey: (masterPassword: string, email: string) => Promise;\n authingWithApiKey: () => boolean;\n authingWithSso: () => boolean;\n authingWithPassword: () => boolean;\n}\n","import {\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from '../models/response/notificationResponse';\n\nexport abstract class SyncService {\n syncInProgress: boolean;\n\n getLastSync: () => Promise;\n setLastSync: (date: Date) => Promise;\n fullSync: (forceSync: boolean, allowThrowOnError?: boolean) => Promise;\n syncUpsertFolder: (notification: SyncFolderNotification, isEdit: boolean) => Promise;\n syncDeleteFolder: (notification: SyncFolderNotification) => Promise;\n syncUpsertCipher: (notification: SyncCipherNotification, isEdit: boolean) => Promise;\n syncDeleteCipher: (notification: SyncFolderNotification) => Promise;\n syncUpsertSend: (notification: SyncSendNotification, isEdit: boolean) => Promise;\n syncDeleteSend: (notification: SyncSendNotification) => Promise;\n}\n","import {\n Directive,\n ElementRef,\n Input,\n} from '@angular/core';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Directive({\n selector: '[appAutofocus]',\n})\nexport class AutofocusDirective {\n @Input() set appAutofocus(condition: boolean | string) {\n this.autofocus = condition === '' || condition === true;\n }\n\n private autofocus: boolean;\n\n constructor(private el: ElementRef) { }\n\n ngOnInit() {\n if (!Utils.isMobileBrowser && this.autofocus) {\n this.el.nativeElement.focus();\n }\n }\n}\n","export class ConstantsService {\n static readonly environmentUrlsKey: string = 'environmentUrls';\n static readonly disableGaKey: string = 'disableGa';\n static readonly disableAddLoginNotificationKey: string = 'disableAddLoginNotification';\n static readonly disableChangedPasswordNotificationKey: string = 'disableChangedPasswordNotification';\n static readonly disableContextMenuItemKey: string = 'disableContextMenuItem';\n static readonly disableFaviconKey: string = 'disableFavicon';\n static readonly disableBadgeCounterKey: string = 'disableBadgeCounter';\n static readonly disableAutoTotpCopyKey: string = 'disableAutoTotpCopy';\n static readonly enableAutoFillOnPageLoadKey: string = 'enableAutoFillOnPageLoad';\n static readonly autoFillOnPageLoadDefaultKey: string = 'autoFillOnPageLoadDefault';\n static readonly vaultTimeoutKey: string = 'lockOption';\n static readonly vaultTimeoutActionKey: string = 'vaultTimeoutAction';\n static readonly lastActiveKey: string = 'lastActive';\n static readonly neverDomainsKey: string = 'neverDomains';\n static readonly installedVersionKey: string = 'installedVersion';\n static readonly localeKey: string = 'locale';\n static readonly themeKey: string = 'theme';\n static readonly collapsedGroupingsKey: string = 'collapsedGroupings';\n static readonly autoConfirmFingerprints: string = 'autoConfirmFingerprints';\n static readonly dontShowCardsCurrentTab: string = 'dontShowCardsCurrentTab';\n static readonly dontShowIdentitiesCurrentTab: string = 'dontShowIdentitiesCurrentTab';\n static readonly defaultUriMatch: string = 'defaultUriMatch';\n static readonly pinProtectedKey: string = 'pinProtectedKey';\n static readonly protectedPin: string = 'protectedPin';\n static readonly clearClipboardKey: string = 'clearClipboardKey';\n static readonly eventCollectionKey: string = 'eventCollection';\n static readonly ssoCodeVerifierKey: string = 'ssoCodeVerifier';\n static readonly ssoStateKey: string = 'ssoState';\n static readonly biometricUnlockKey: string = 'biometric';\n static readonly biometricText: string = 'biometricText';\n static readonly biometricAwaitingAcceptance: string = 'biometricAwaitingAcceptance';\n static readonly biometricFingerprintValidated: string = 'biometricFingerprintValidated';\n\n readonly environmentUrlsKey: string = ConstantsService.environmentUrlsKey;\n readonly disableGaKey: string = ConstantsService.disableGaKey;\n readonly disableAddLoginNotificationKey: string = ConstantsService.disableAddLoginNotificationKey;\n readonly disableContextMenuItemKey: string = ConstantsService.disableContextMenuItemKey;\n readonly disableFaviconKey: string = ConstantsService.disableFaviconKey;\n readonly disableBadgeCounterKey: string = ConstantsService.disableBadgeCounterKey;\n readonly disableAutoTotpCopyKey: string = ConstantsService.disableAutoTotpCopyKey;\n readonly enableAutoFillOnPageLoadKey: string = ConstantsService.enableAutoFillOnPageLoadKey;\n readonly autoFillOnPageLoadDefaultKey: string = ConstantsService.autoFillOnPageLoadDefaultKey;\n readonly vaultTimeoutKey: string = ConstantsService.vaultTimeoutKey;\n readonly vaultTimeoutActionKey: string = ConstantsService.vaultTimeoutActionKey;\n readonly lastActiveKey: string = ConstantsService.lastActiveKey;\n readonly neverDomainsKey: string = ConstantsService.neverDomainsKey;\n readonly installedVersionKey: string = ConstantsService.installedVersionKey;\n readonly localeKey: string = ConstantsService.localeKey;\n readonly themeKey: string = ConstantsService.themeKey;\n readonly collapsedGroupingsKey: string = ConstantsService.collapsedGroupingsKey;\n readonly autoConfirmFingerprints: string = ConstantsService.autoConfirmFingerprints;\n readonly dontShowCardsCurrentTab: string = ConstantsService.dontShowCardsCurrentTab;\n readonly dontShowIdentitiesCurrentTab: string = ConstantsService.dontShowIdentitiesCurrentTab;\n readonly defaultUriMatch: string = ConstantsService.defaultUriMatch;\n readonly pinProtectedKey: string = ConstantsService.pinProtectedKey;\n readonly protectedPin: string = ConstantsService.protectedPin;\n readonly clearClipboardKey: string = ConstantsService.clearClipboardKey;\n readonly eventCollectionKey: string = ConstantsService.eventCollectionKey;\n readonly ssoCodeVerifierKey: string = ConstantsService.ssoCodeVerifierKey;\n readonly ssoStateKey: string = ConstantsService.ssoStateKey;\n readonly biometricUnlockKey: string = ConstantsService.biometricUnlockKey;\n readonly biometricText: string = ConstantsService.biometricText;\n readonly biometricAwaitingAcceptance: string = ConstantsService.biometricAwaitingAcceptance;\n readonly biometricFingerprintValidated: string = ConstantsService.biometricFingerprintValidated;\n}\n","import { EventType } from '../enums/eventType';\n\nexport abstract class EventService {\n collect: (eventType: EventType, cipherId?: string, uploadImmediately?: boolean) => Promise;\n uploadEvents: () => Promise;\n clearEvents: () => Promise;\n}\n","import { CipherView } from '../models/view/cipherView';\nimport { SendView } from '../models/view/sendView';\n\nexport abstract class SearchService {\n indexedEntityId?: string = null;\n clearIndex: () => void;\n isSearchable: (query: string) => boolean;\n indexCiphers: (indexedEntityGuid?: string, ciphersToIndex?: CipherView[]) => Promise;\n searchCiphers: (query: string,\n filter?: ((cipher: CipherView) => boolean) | (((cipher: CipherView) => boolean)[]),\n ciphers?: CipherView[]) => Promise;\n searchCiphersBasic: (ciphers: CipherView[], query: string, deleted?: boolean) => CipherView[];\n searchSends: (sends: SendView[], query: string) => SendView[];\n}\n","export class PasswordVerificationRequest {\n masterPasswordHash: string;\n}\n","import { EncString } from './encString';\n\nimport { View } from '../view/view';\n\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport default class Domain {\n protected buildDomainModel(domain: D, dataObj: any, map: any,\n alreadyEncrypted: boolean, notEncList: any[] = []) {\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n const objProp = dataObj[(map[prop] || prop)];\n if (alreadyEncrypted === true || notEncList.indexOf(prop) > -1) {\n (domain as any)[prop] = objProp ? objProp : null;\n } else {\n (domain as any)[prop] = objProp ? new EncString(objProp) : null;\n }\n }\n }\n protected buildDataModel(domain: D, dataObj: any, map: any, notEncStringList: any[] = []) {\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n const objProp = (domain as any)[(map[prop] || prop)];\n if (notEncStringList.indexOf(prop) > -1) {\n (dataObj as any)[prop] = objProp != null ? objProp : null;\n } else {\n (dataObj as any)[prop] = objProp != null ? (objProp as EncString).encryptedString : null;\n }\n }\n }\n\n protected async decryptObj(viewModel: T, map: any, orgId: string,\n key: SymmetricCryptoKey = null): Promise {\n const promises = [];\n const self: any = this;\n\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n // tslint:disable-next-line\n (function (theProp) {\n const p = Promise.resolve().then(() => {\n const mapProp = map[theProp] || theProp;\n if (self[mapProp]) {\n return self[mapProp].decrypt(orgId, key);\n }\n return null;\n }).then((val: any) => {\n (viewModel as any)[theProp] = val;\n });\n promises.push(p);\n })(prop);\n }\n\n await Promise.all(promises);\n return viewModel;\n }\n}\n","import * as jq from 'jquery';\n\nimport {\n Component,\n ComponentFactoryResolver,\n Type,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ModalComponent as BaseModalComponent } from 'jslib-angular/components/modal.component';\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\n\n@Component({\n selector: 'app-modal',\n template: ``,\n})\nexport class ModalComponent extends BaseModalComponent {\n el: any = null;\n\n constructor(componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService) {\n super(componentFactoryResolver, messagingService);\n }\n\n ngOnDestroy() { /* Nothing */ }\n\n show(type: Type, parentContainer: ViewContainerRef, fade: boolean = true,\n setComponentParameters: (component: T) => void = null): T {\n this.parentContainer = parentContainer;\n this.fade = fade;\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(type);\n const componentRef = this.container.createComponent(factory);\n if (setComponentParameters != null) {\n setComponentParameters(componentRef.instance);\n }\n\n const modals = Array.from(document.querySelectorAll('.modal'));\n if (modals.length > 0) {\n this.el = jq(modals[0]);\n this.el.modal('show');\n\n this.el.on('show.bs.modal', () => {\n this.onShow.emit();\n this.messagingService.send('modalShow');\n });\n this.el.on('shown.bs.modal', () => {\n this.onShown.emit();\n this.messagingService.send('modalShown');\n if (!Utils.isMobileBrowser) {\n this.el.find('*[appAutoFocus]').focus();\n }\n });\n this.el.on('hide.bs.modal', () => {\n this.onClose.emit();\n this.messagingService.send('modalClose');\n });\n this.el.on('hidden.bs.modal', () => {\n this.onClosed.emit();\n this.messagingService.send('modalClosed');\n if (this.parentContainer != null) {\n this.parentContainer.clear();\n }\n });\n }\n\n return componentRef.instance;\n }\n\n close() {\n if (this.el != null) {\n this.el.modal('hide');\n }\n }\n}\n","import { EncString } from '../models/domain/encString';\n\nexport abstract class VaultTimeoutService {\n biometricLocked: boolean;\n everBeenUnlocked: boolean;\n pinProtectedKey: EncString;\n isLocked: () => Promise;\n checkVaultTimeout: () => Promise;\n lock: (allowSoftLock?: boolean) => Promise;\n logOut: () => Promise;\n setVaultTimeoutOptions: (vaultTimeout: number, vaultTimeoutAction: string) => Promise;\n isPinLockSet: () => Promise<[boolean, boolean]>;\n isBiometricLockSet: () => Promise;\n clear: () => Promise;\n}\n","import { EncryptionType } from '../../enums/encryptionType';\n\nimport { CryptoService } from '../../abstractions/crypto.service';\n\nimport { Utils } from '../../misc/utils';\n\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class EncString {\n encryptedString?: string;\n encryptionType?: EncryptionType;\n decryptedValue?: string;\n data?: string;\n iv?: string;\n mac?: string;\n\n constructor(encryptedStringOrType: string | EncryptionType, data?: string, iv?: string, mac?: string) {\n if (data != null) {\n // data and header\n const encType = encryptedStringOrType as EncryptionType;\n\n if (iv != null) {\n this.encryptedString = encType + '.' + iv + '|' + data;\n } else {\n this.encryptedString = encType + '.' + data;\n }\n\n // mac\n if (mac != null) {\n this.encryptedString += ('|' + mac);\n }\n\n this.encryptionType = encType;\n this.data = data;\n this.iv = iv;\n this.mac = mac;\n\n return;\n }\n\n this.encryptedString = encryptedStringOrType as string;\n if (!this.encryptedString) {\n return;\n }\n\n const headerPieces = this.encryptedString.split('.');\n let encPieces: string[] = null;\n\n if (headerPieces.length === 2) {\n try {\n this.encryptionType = parseInt(headerPieces[0], null);\n encPieces = headerPieces[1].split('|');\n } catch (e) {\n return;\n }\n } else {\n encPieces = this.encryptedString.split('|');\n this.encryptionType = encPieces.length === 3 ? EncryptionType.AesCbc128_HmacSha256_B64 :\n EncryptionType.AesCbc256_B64;\n }\n\n switch (this.encryptionType) {\n case EncryptionType.AesCbc128_HmacSha256_B64:\n case EncryptionType.AesCbc256_HmacSha256_B64:\n if (encPieces.length !== 3) {\n return;\n }\n\n this.iv = encPieces[0];\n this.data = encPieces[1];\n this.mac = encPieces[2];\n break;\n case EncryptionType.AesCbc256_B64:\n if (encPieces.length !== 2) {\n return;\n }\n\n this.iv = encPieces[0];\n this.data = encPieces[1];\n break;\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_B64:\n if (encPieces.length !== 1) {\n return;\n }\n\n this.data = encPieces[0];\n break;\n default:\n return;\n }\n }\n\n async decrypt(orgId: string, key: SymmetricCryptoKey = null): Promise {\n if (this.decryptedValue != null) {\n return this.decryptedValue;\n }\n\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error('global bitwardenContainerService not initialized.');\n }\n\n try {\n if (key == null) {\n key = await cryptoService.getOrgKey(orgId);\n }\n this.decryptedValue = await cryptoService.decryptToUtf8(this, key);\n } catch (e) {\n this.decryptedValue = '[error: cannot decrypt]';\n }\n return this.decryptedValue;\n }\n}\n","import { BreachAccountResponse } from '../models/response/breachAccountResponse';\n\nexport abstract class AuditService {\n passwordLeaked: (password: string) => Promise;\n breachedAccounts: (username: string) => Promise;\n}\n","import { View } from './view';\n\nimport { Card } from '../domain/card';\n\nexport class CardView implements View {\n cardholderName: string = null;\n expMonth: string = null;\n expYear: string = null;\n code: string = null;\n\n // tslint:disable\n private _brand: string = null;\n private _number: string = null;\n private _subTitle: string = null;\n // tslint:enable\n\n constructor(c?: Card) {\n // ctor\n }\n\n get maskedCode(): string {\n return this.code != null ? '•'.repeat(this.code.length) : null;\n }\n\n get maskedNumber(): string {\n return this.number != null ? '•'.repeat(this.number.length) : null;\n }\n\n get brand(): string {\n return this._brand;\n }\n set brand(value: string) {\n this._brand = value;\n this._subTitle = null;\n }\n\n get number(): string {\n return this._number;\n }\n set number(value: string) {\n this._number = value;\n this._subTitle = null;\n }\n\n get subTitle(): string {\n if (this._subTitle == null) {\n this._subTitle = this.brand;\n if (this.number != null && this.number.length >= 4) {\n if (this._subTitle != null && this._subTitle !== '') {\n this._subTitle += ', ';\n } else {\n this._subTitle = '';\n }\n\n // Show last 5 on amex, last 4 for all others\n const count = this.number.length >= 5 && this.number.match(new RegExp('^3[47]')) != null ? 5 : 4;\n this._subTitle += ('*' + this.number.substr(this.number.length - count));\n }\n }\n return this._subTitle;\n }\n\n get expiration(): string {\n if (!this.expMonth && !this.expYear) {\n return null;\n }\n\n let exp = this.expMonth != null ? ('0' + this.expMonth).slice(-2) : '__';\n exp += (' / ' + (this.expYear != null ? this.formatYear(this.expYear) : '____'));\n return exp;\n }\n\n private formatYear(year: string): string {\n return year.length === 2 ? '20' + year : year;\n }\n}\n","import { DecryptParameters } from '../models/domain/decryptParameters';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nexport abstract class CryptoFunctionService {\n pbkdf2: (password: string | ArrayBuffer, salt: string | ArrayBuffer, algorithm: 'sha256' | 'sha512',\n iterations: number) => Promise;\n hkdf: (ikm: ArrayBuffer, salt: string | ArrayBuffer, info: string | ArrayBuffer,\n outputByteSize: number, algorithm: 'sha256' | 'sha512') => Promise;\n hkdfExpand: (prk: ArrayBuffer, info: string | ArrayBuffer, outputByteSize: number,\n algorithm: 'sha256' | 'sha512') => Promise;\n hash: (value: string | ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5') => Promise;\n hmac: (value: ArrayBuffer, key: ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512') => Promise;\n compare: (a: ArrayBuffer, b: ArrayBuffer) => Promise;\n hmacFast: (value: ArrayBuffer | string, key: ArrayBuffer | string, algorithm: 'sha1' | 'sha256' | 'sha512') =>\n Promise;\n compareFast: (a: ArrayBuffer | string, b: ArrayBuffer | string) => Promise;\n aesEncrypt: (data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer) => Promise;\n aesDecryptFastParameters: (data: string, iv: string, mac: string, key: SymmetricCryptoKey) =>\n DecryptParameters;\n aesDecryptFast: (parameters: DecryptParameters) => Promise;\n aesDecrypt: (data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer) => Promise;\n rsaEncrypt: (data: ArrayBuffer, publicKey: ArrayBuffer, algorithm: 'sha1' | 'sha256') => Promise;\n rsaDecrypt: (data: ArrayBuffer, privateKey: ArrayBuffer, algorithm: 'sha1' | 'sha256') => Promise;\n rsaExtractPublicKey: (privateKey: ArrayBuffer) => Promise;\n rsaGenerateKeyPair: (length: 1024 | 2048 | 4096) => Promise<[ArrayBuffer, ArrayBuffer]>;\n randomBytes: (length: number) => Promise;\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { View } from './view';\n\nimport { SecureNote } from '../domain/secureNote';\n\nexport class SecureNoteView implements View {\n type: SecureNoteType = null;\n\n constructor(n?: SecureNote) {\n if (!n) {\n return;\n }\n\n this.type = n.type;\n }\n\n get subTitle(): string {\n return null;\n }\n}\n","export enum SecureNoteType {\n Generic = 0,\n}\n","export abstract class TokenService {\n token: string;\n decodedToken: any;\n refreshToken: string;\n setTokens: (accessToken: string, refreshToken: string) => Promise;\n setToken: (token: string) => Promise;\n getToken: () => Promise;\n setRefreshToken: (refreshToken: string) => Promise;\n getRefreshToken: () => Promise;\n toggleTokens: () => Promise;\n setTwoFactorToken: (token: string, email: string) => Promise;\n getTwoFactorToken: (email: string) => Promise;\n clearTwoFactorToken: (email: string) => Promise;\n clearToken: () => Promise;\n decodeToken: () => any;\n getTokenExpirationDate: () => Date;\n tokenSecondsRemaining: (offsetSeconds?: number) => number;\n tokenNeedsRefresh: (minutes?: number) => boolean;\n getUserId: () => string;\n getEmail: () => string;\n getEmailVerified: () => boolean;\n getName: () => string;\n getPremium: () => boolean;\n getIssuer: () => string;\n}\n","import {\n Component,\n Input,\n OnChanges,\n} from '@angular/core';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nconst IconMap: any = {\n 'fa-globe': String.fromCharCode(0xf0ac),\n 'fa-sticky-note-o': String.fromCharCode(0xf24a),\n 'fa-id-card-o': String.fromCharCode(0xf2c3),\n 'fa-credit-card': String.fromCharCode(0xf09d),\n 'fa-android': String.fromCharCode(0xf17b),\n 'fa-apple': String.fromCharCode(0xf179),\n};\n\n@Component({\n selector: 'app-vault-icon',\n templateUrl: 'icon.component.html',\n})\nexport class IconComponent implements OnChanges {\n @Input() cipher: CipherView;\n icon: string;\n image: string;\n fallbackImage: string;\n imageEnabled: boolean;\n\n private iconsUrl: string;\n\n constructor(environmentService: EnvironmentService, protected stateService: StateService) {\n this.iconsUrl = environmentService.iconsUrl;\n if (!this.iconsUrl) {\n if (environmentService.baseUrl) {\n this.iconsUrl = environmentService.baseUrl + '/icons';\n } else {\n this.iconsUrl = 'https://icons.bitwarden.net';\n }\n }\n }\n\n async ngOnChanges() {\n this.imageEnabled = !(await this.stateService.get(ConstantsService.disableFaviconKey));\n this.load();\n }\n\n get iconCode(): string {\n return IconMap[this.icon];\n }\n\n protected load() {\n switch (this.cipher.type) {\n case CipherType.Login:\n this.icon = 'fa-globe';\n this.setLoginIcon();\n break;\n case CipherType.SecureNote:\n this.icon = 'fa-sticky-note-o';\n break;\n case CipherType.Card:\n this.icon = 'fa-credit-card';\n break;\n case CipherType.Identity:\n this.icon = 'fa-id-card-o';\n break;\n default:\n break;\n }\n }\n\n private setLoginIcon() {\n if (this.cipher.login.uri) {\n let hostnameUri = this.cipher.login.uri;\n let isWebsite = false;\n\n if (hostnameUri.indexOf('androidapp://') === 0) {\n this.icon = 'fa-android';\n this.image = null;\n } else if (hostnameUri.indexOf('iosapp://') === 0) {\n this.icon = 'fa-apple';\n this.image = null;\n } else if (this.imageEnabled && hostnameUri.indexOf('://') === -1 && hostnameUri.indexOf('.') > -1) {\n hostnameUri = 'http://' + hostnameUri;\n isWebsite = true;\n } else if (this.imageEnabled) {\n isWebsite = hostnameUri.indexOf('http') === 0 && hostnameUri.indexOf('.') > -1;\n }\n\n if (this.imageEnabled && isWebsite) {\n try {\n this.image = this.iconsUrl + '/' + Utils.getHostname(hostnameUri) + '/icon.png';\n this.fallbackImage = 'images/fa-globe.png';\n } catch (e) { }\n }\n } else {\n this.image = null;\n }\n }\n}\n","
\"\"/
","import { Injectable } from '@angular/core';\n\nimport { BroadcasterService as BaseBroadcasterService } from 'jslib-common/services/broadcaster.service';\n\n@Injectable()\nexport class BroadcasterService extends BaseBroadcasterService {\n}\n","export enum TwoFactorProviderType {\n Authenticator = 0,\n Email = 1,\n Duo = 2,\n Yubikey = 3,\n U2f = 4,\n Remember = 5,\n OrganizationDuo = 6,\n WebAuthn = 7,\n}\n","","export enum PolicyType {\n TwoFactorAuthentication = 0, // Requires users to have 2fa enabled\n MasterPassword = 1, // Sets minimum requirements for master password complexity\n PasswordGenerator = 2, // Sets minimum requirements/default type for generated passwords/passphrases\n SingleOrg = 3, // Allows users to only be apart of one organization\n RequireSso = 4, // Requires users to authenticate with SSO\n PersonalOwnership = 5, // Disables personal vault ownership for adding/cloning items\n DisableSend = 6, // Disables the ability to create and edit Bitwarden Sends\n SendOptions = 7, // Sets restrictions or defaults for Bitwarden Sends\n ResetPassword = 8, // Allows orgs to use reset password : also can enable auto-enrollment during invite flow\n}\n","export abstract class TotpService {\n getCode: (key: string) => Promise;\n getTimeInterval: (key: string) => number;\n isAutoCopyEnabled: () => Promise;\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { PaymentMethodType } from 'jslib-common/enums/paymentMethodType';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { WebConstants } from '../../services/webConstants';\n\nconst StripeElementStyle = {\n base: {\n color: '#333333',\n fontFamily: '\"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif, ' +\n '\"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\n fontSize: '14px',\n fontSmoothing: 'antialiased',\n },\n invalid: {\n color: '#333333',\n },\n};\n\nconst StripeElementClasses = {\n focus: 'is-focused',\n empty: 'is-empty',\n invalid: 'is-invalid',\n};\n\n@Component({\n selector: 'app-payment',\n templateUrl: 'payment.component.html',\n})\nexport class PaymentComponent implements OnInit {\n @Input() showMethods = true;\n @Input() showOptions = true;\n @Input() method = PaymentMethodType.Card;\n @Input() hideBank = false;\n @Input() hidePaypal = false;\n @Input() hideCredit = false;\n\n bank: any = {\n routing_number: null,\n account_number: null,\n account_holder_name: null,\n account_holder_type: '',\n currency: 'USD',\n country: 'US',\n };\n\n paymentMethodType = PaymentMethodType;\n\n private btScript: HTMLScriptElement;\n private btInstance: any = null;\n private stripeScript: HTMLScriptElement;\n private stripe: any = null;\n private stripeElements: any = null;\n private stripeCardNumberElement: any = null;\n private stripeCardExpiryElement: any = null;\n private stripeCardCvcElement: any = null;\n\n constructor(private platformUtilsService: PlatformUtilsService, private apiService: ApiService) {\n this.stripeScript = window.document.createElement('script');\n this.stripeScript.src = 'https://js.stripe.com/v3/';\n this.stripeScript.async = true;\n this.stripeScript.onload = () => {\n this.stripe = (window as any).Stripe(process.env.ENV === 'production' ?\n WebConstants.stripeLiveKey : WebConstants.stripeTestKey);\n this.stripeElements = this.stripe.elements();\n this.setStripeElement();\n };\n this.btScript = window.document.createElement('script');\n this.btScript.src = 'scripts/dropin.js';\n this.btScript.async = true;\n }\n\n ngOnInit() {\n if (!this.showOptions) {\n this.hidePaypal = this.method !== PaymentMethodType.PayPal;\n this.hideBank = this.method !== PaymentMethodType.BankAccount;\n this.hideCredit = this.method !== PaymentMethodType.Credit;\n }\n window.document.head.appendChild(this.stripeScript);\n if (!this.hidePaypal) {\n window.document.head.appendChild(this.btScript);\n }\n }\n\n ngOnDestroy() {\n window.document.head.removeChild(this.stripeScript);\n window.setTimeout(() => {\n Array.from(window.document.querySelectorAll('iframe')).forEach(el => {\n if (el.src != null && el.src.indexOf('stripe') > -1) {\n try {\n window.document.body.removeChild(el);\n } catch { }\n }\n });\n }, 500);\n if (!this.hidePaypal) {\n window.document.head.removeChild(this.btScript);\n window.setTimeout(() => {\n Array.from(window.document.head.querySelectorAll('script')).forEach(el => {\n if (el.src != null && el.src.indexOf('paypal') > -1) {\n try {\n window.document.head.removeChild(el);\n } catch { }\n }\n });\n const btStylesheet = window.document.head.querySelector('#braintree-dropin-stylesheet');\n if (btStylesheet != null) {\n try {\n window.document.head.removeChild(btStylesheet);\n } catch { }\n }\n }, 500);\n }\n }\n\n changeMethod() {\n this.btInstance = null;\n\n if (this.method === PaymentMethodType.PayPal) {\n window.setTimeout(() => {\n (window as any).braintree.dropin.create({\n authorization: this.platformUtilsService.isDev() ?\n WebConstants.btSandboxKey : WebConstants.btProductionKey,\n container: '#bt-dropin-container',\n paymentOptionPriority: ['paypal'],\n paypal: {\n flow: 'vault',\n buttonStyle: {\n label: 'pay',\n size: 'medium',\n shape: 'pill',\n color: 'blue',\n },\n },\n }, (createErr: any, instance: any) => {\n if (createErr != null) {\n // tslint:disable-next-line\n console.error(createErr);\n return;\n }\n this.btInstance = instance;\n });\n }, 250);\n } else {\n this.setStripeElement();\n }\n }\n\n createPaymentToken(): Promise<[string, PaymentMethodType]> {\n return new Promise((resolve, reject) => {\n if (this.method === PaymentMethodType.Credit) {\n resolve([null, this.method]);\n } else if (this.method === PaymentMethodType.PayPal) {\n this.btInstance.requestPaymentMethod().then((payload: any) => {\n resolve([payload.nonce, this.method]);\n }).catch((err: any) => {\n reject(err.message);\n });\n } else if (this.method === PaymentMethodType.Card || this.method === PaymentMethodType.BankAccount) {\n if (this.method === PaymentMethodType.Card) {\n this.apiService.postSetupPayment().then(clientSecret =>\n this.stripe.handleCardSetup(clientSecret, this.stripeCardNumberElement))\n .then((result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.setupIntent && result.setupIntent.status === 'succeeded') {\n resolve([result.setupIntent.payment_method, this.method]);\n } else {\n reject();\n }\n });\n } else {\n this.stripe.createToken('bank_account', this.bank).then((result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.token && result.token.id != null) {\n resolve([result.token.id, this.method]);\n } else {\n reject();\n }\n });\n }\n }\n });\n }\n\n handleStripeCardPayment(clientSecret: string, successCallback: () => Promise): Promise {\n return new Promise((resolve, reject) => {\n if (this.showMethods && this.stripeCardNumberElement == null) {\n reject();\n return;\n }\n const handleCardPayment = () => this.showMethods ?\n this.stripe.handleCardSetup(clientSecret, this.stripeCardNumberElement) :\n this.stripe.handleCardSetup(clientSecret);\n return handleCardPayment().then(async (result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.paymentIntent && result.paymentIntent.status === 'succeeded') {\n if (successCallback != null) {\n await successCallback();\n }\n resolve();\n } else {\n reject();\n }\n });\n });\n }\n\n private setStripeElement() {\n window.setTimeout(() => {\n if (this.showMethods && this.method === PaymentMethodType.Card) {\n if (this.stripeCardNumberElement == null) {\n this.stripeCardNumberElement = this.stripeElements.create('cardNumber', {\n style: StripeElementStyle,\n classes: StripeElementClasses,\n placeholder: '',\n });\n }\n if (this.stripeCardExpiryElement == null) {\n this.stripeCardExpiryElement = this.stripeElements.create('cardExpiry', {\n style: StripeElementStyle,\n classes: StripeElementClasses,\n });\n }\n if (this.stripeCardCvcElement == null) {\n this.stripeCardCvcElement = this.stripeElements.create('cardCvc', {\n style: StripeElementStyle,\n classes: StripeElementClasses,\n placeholder: '',\n });\n }\n this.stripeCardNumberElement.mount('#stripe-card-number-element');\n this.stripeCardExpiryElement.mount('#stripe-card-expiry-element');\n this.stripeCardCvcElement.mount('#stripe-card-cvc-element');\n }\n }, 50);\n }\n}\n","
\"Visa,
{{'verifyBankAccountInitialDesc' | i18n}} {{'verifyBankAccountFailureWarning' | i18n}}
{{'paypalClickSubmit' | i18n}}
{{'makeSureEnoughCredit' | i18n}} ","export enum FieldType {\n Text = 0,\n Hidden = 1,\n Boolean = 2,\n}\n","import { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CipherType } from '../../enums/cipherType';\n\nimport { Cipher } from '../domain/cipher';\n\nimport { AttachmentView } from './attachmentView';\nimport { CardView } from './cardView';\nimport { FieldView } from './fieldView';\nimport { IdentityView } from './identityView';\nimport { LoginView } from './loginView';\nimport { PasswordHistoryView } from './passwordHistoryView';\nimport { SecureNoteView } from './secureNoteView';\nimport { View } from './view';\n\nexport class CipherView implements View {\n id: string = null;\n organizationId: string = null;\n folderId: string = null;\n name: string = null;\n notes: string = null;\n type: CipherType = null;\n favorite = false;\n organizationUseTotp = false;\n edit = false;\n viewPassword = true;\n localData: any;\n login = new LoginView();\n identity = new IdentityView();\n card = new CardView();\n secureNote = new SecureNoteView();\n attachments: AttachmentView[] = null;\n fields: FieldView[] = null;\n passwordHistory: PasswordHistoryView[] = null;\n collectionIds: string[] = null;\n revisionDate: Date = null;\n deletedDate: Date = null;\n reprompt: CipherRepromptType = CipherRepromptType.None;\n\n constructor(c?: Cipher) {\n if (!c) {\n return;\n }\n\n this.id = c.id;\n this.organizationId = c.organizationId;\n this.folderId = c.folderId;\n this.favorite = c.favorite;\n this.organizationUseTotp = c.organizationUseTotp;\n this.edit = c.edit;\n this.viewPassword = c.viewPassword;\n this.type = c.type;\n this.localData = c.localData;\n this.collectionIds = c.collectionIds;\n this.revisionDate = c.revisionDate;\n this.deletedDate = c.deletedDate;\n // Old locally stored ciphers might have reprompt == null. If so set it to None.\n this.reprompt = c.reprompt ?? CipherRepromptType.None;\n }\n\n get subTitle(): string {\n switch (this.type) {\n case CipherType.Login:\n return this.login.subTitle;\n case CipherType.SecureNote:\n return this.secureNote.subTitle;\n case CipherType.Card:\n return this.card.subTitle;\n case CipherType.Identity:\n return this.identity.subTitle;\n default:\n break;\n }\n\n return null;\n }\n\n get hasPasswordHistory(): boolean {\n return this.passwordHistory && this.passwordHistory.length > 0;\n }\n\n get hasAttachments(): boolean {\n return this.attachments && this.attachments.length > 0;\n }\n\n get hasOldAttachments(): boolean {\n if (this.hasAttachments) {\n for (let i = 0; i < this.attachments.length; i++) {\n if (this.attachments[i].key == null) {\n return true;\n }\n }\n }\n return false;\n }\n\n get hasFields(): boolean {\n return this.fields && this.fields.length > 0;\n }\n\n get passwordRevisionDisplayDate(): Date {\n if (this.type !== CipherType.Login || this.login == null) {\n return null;\n } else if (this.login.password == null || this.login.password === '') {\n return null;\n }\n return this.login.passwordRevisionDate;\n }\n\n get isDeleted(): boolean {\n return this.deletedDate != null;\n }\n}\n","import { View } from './view';\n\nimport { Folder } from '../domain/folder';\nimport { ITreeNodeObject } from '../domain/treeNode';\n\nexport class FolderView implements View, ITreeNodeObject {\n id: string = null;\n name: string = null;\n revisionDate: Date = null;\n\n constructor(f?: Folder) {\n if (!f) {\n return;\n }\n\n this.id = f.id;\n this.revisionDate = f.revisionDate;\n }\n}\n","import { CollectionData } from '../data/collectionData';\n\nimport { CollectionView } from '../view/collectionView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\n\nexport class Collection extends Domain {\n id: string;\n organizationId: string;\n name: EncString;\n externalId: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(obj?: CollectionData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n organizationId: null,\n name: null,\n externalId: null,\n readOnly: null,\n hidePasswords: null,\n }, alreadyEncrypted, ['id', 'organizationId', 'externalId', 'readOnly', 'hidePasswords']);\n }\n\n decrypt(): Promise {\n return this.decryptObj(new CollectionView(this), {\n name: null,\n }, this.organizationId);\n }\n}\n","export enum OrganizationUserStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n}\n","import { EventView } from '../models/view/eventView';\n\nexport abstract class ExportService {\n getExport: (format?: 'csv' | 'json' | 'encrypted_json') => Promise;\n getOrganizationExport: (organizationId: string, format?: 'csv' | 'json' | 'encrypted_json') => Promise;\n getEventExport: (events: EventView[]) => Promise;\n getFileName: (prefix?: string, extension?: string) => string;\n}\n","import {\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { OrganizationTaxInfoUpdateRequest } from 'jslib-common/models/request/organizationTaxInfoUpdateRequest';\nimport { TaxInfoUpdateRequest } from 'jslib-common/models/request/taxInfoUpdateRequest';\nimport { TaxRateResponse } from 'jslib-common/models/response/taxRateResponse';\n\n@Component({\n selector: 'app-tax-info',\n templateUrl: 'tax-info.component.html',\n})\nexport class TaxInfoComponent {\n @Output() onCountryChanged = new EventEmitter();\n\n loading: boolean = true;\n organizationId: string;\n taxInfo: any = {\n taxId: null,\n line1: null,\n line2: null,\n city: null,\n state: null,\n postalCode: null,\n country: 'US',\n includeTaxId: false,\n };\n\n taxRates: TaxRateResponse[];\n\n private pristine: any = {\n taxId: null,\n line1: null,\n line2: null,\n city: null,\n state: null,\n postalCode: null,\n country: 'US',\n includeTaxId: false,\n };\n\n constructor(private apiService: ApiService, private route: ActivatedRoute) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n if (this.organizationId) {\n try {\n const taxInfo = await this.apiService.getOrganizationTaxInfo(this.organizationId);\n if (taxInfo) {\n this.taxInfo.taxId = taxInfo.taxId;\n this.taxInfo.state = taxInfo.state;\n this.taxInfo.line1 = taxInfo.line1;\n this.taxInfo.line2 = taxInfo.line2;\n this.taxInfo.city = taxInfo.city;\n this.taxInfo.state = taxInfo.state;\n this.taxInfo.postalCode = taxInfo.postalCode;\n this.taxInfo.country = taxInfo.country || 'US';\n this.taxInfo.includeTaxId = this.taxInfo.country !== 'US' && (\n !!taxInfo.taxId\n || !!taxInfo.line1\n || !!taxInfo.line2\n || !!taxInfo.city\n || !!taxInfo.state);\n }\n } catch { }\n } else {\n const taxInfo = await this.apiService.getTaxInfo();\n if (taxInfo) {\n this.taxInfo.postalCode = taxInfo.postalCode;\n this.taxInfo.country = taxInfo.country || 'US';\n }\n }\n this.pristine = Object.assign({}, this.taxInfo);\n // If not the default (US) then trigger onCountryChanged\n if (this.taxInfo.country !== 'US') {\n this.onCountryChanged.emit();\n }\n });\n\n const taxRates = await this.apiService.getTaxRates();\n this.taxRates = taxRates.data;\n this.loading = false;\n }\n\n get taxRate() {\n if (this.taxRates != null) {\n const localTaxRate = this.taxRates.find(x =>\n x.country === this.taxInfo.country &&\n x.postalCode === this.taxInfo.postalCode\n );\n return localTaxRate?.rate ?? null;\n }\n }\n\n getTaxInfoRequest(): TaxInfoUpdateRequest {\n if (this.organizationId) {\n const request = new OrganizationTaxInfoUpdateRequest();\n request.taxId = this.taxInfo.taxId;\n request.state = this.taxInfo.state;\n request.line1 = this.taxInfo.line1;\n request.line2 = this.taxInfo.line2;\n request.city = this.taxInfo.city;\n request.state = this.taxInfo.state;\n request.postalCode = this.taxInfo.postalCode;\n request.country = this.taxInfo.country;\n return request;\n } else {\n const request = new TaxInfoUpdateRequest();\n request.postalCode = this.taxInfo.postalCode;\n request.country = this.taxInfo.country;\n return request;\n }\n }\n\n submitTaxInfo(): Promise {\n if (!this.hasChanged()) {\n return new Promise(resolve => { resolve(); });\n }\n const request = this.getTaxInfoRequest();\n return this.organizationId ? this.apiService.putOrganizationTaxInfo(this.organizationId,\n request as OrganizationTaxInfoUpdateRequest) : this.apiService.putTaxInfo(request);\n }\n\n changeCountry() {\n if (this.taxInfo.country === 'US') {\n this.taxInfo.includeTaxId = false;\n this.taxInfo.taxId = null;\n this.taxInfo.line1 = null;\n this.taxInfo.line2 = null;\n this.taxInfo.city = null;\n this.taxInfo.state = null;\n }\n this.onCountryChanged.emit();\n }\n\n private hasChanged(): boolean {\n for (const key in this.taxInfo) {\n if (this.pristine.hasOwnProperty(key) && this.pristine[key] !== this.taxInfo[key]) {\n return true;\n }\n }\n return false;\n }\n}\n","
","import { View } from './view';\n\nimport { Identity } from '../domain/identity';\n\nimport { Utils } from '../../misc/utils';\n\nexport class IdentityView implements View {\n title: string = null;\n middleName: string = null;\n address1: string = null;\n address2: string = null;\n address3: string = null;\n city: string = null;\n state: string = null;\n postalCode: string = null;\n country: string = null;\n company: string = null;\n email: string = null;\n phone: string = null;\n ssn: string = null;\n username: string = null;\n passportNumber: string = null;\n licenseNumber: string = null;\n\n // tslint:disable\n private _firstName: string = null;\n private _lastName: string = null;\n private _subTitle: string = null;\n // tslint:enable\n\n constructor(i?: Identity) {\n // ctor\n }\n\n get firstName(): string {\n return this._firstName;\n }\n set firstName(value: string) {\n this._firstName = value;\n this._subTitle = null;\n }\n\n get lastName(): string {\n return this._lastName;\n }\n set lastName(value: string) {\n this._lastName = value;\n this._subTitle = null;\n }\n\n get subTitle(): string {\n if (this._subTitle == null && (this.firstName != null || this.lastName != null)) {\n this._subTitle = '';\n if (this.firstName != null) {\n this._subTitle = this.firstName;\n }\n if (this.lastName != null) {\n if (this._subTitle !== '') {\n this._subTitle += ' ';\n }\n this._subTitle += this.lastName;\n }\n }\n\n return this._subTitle;\n }\n\n get fullName(): string {\n if (this.title != null || this.firstName != null || this.middleName != null || this.lastName != null) {\n let name = '';\n if (this.title != null) {\n name += (this.title + ' ');\n }\n if (this.firstName != null) {\n name += (this.firstName + ' ');\n }\n if (this.middleName != null) {\n name += (this.middleName + ' ');\n }\n if (this.lastName != null) {\n name += this.lastName;\n }\n return name.trim();\n }\n\n return null;\n }\n\n get fullAddress(): string {\n let address = this.address1;\n if (!Utils.isNullOrWhitespace(this.address2)) {\n if (!Utils.isNullOrWhitespace(address)) {\n address += ', ';\n }\n address += this.address2;\n }\n if (!Utils.isNullOrWhitespace(this.address3)) {\n if (!Utils.isNullOrWhitespace(address)) {\n address += ', ';\n }\n address += this.address3;\n }\n return address;\n }\n\n get fullAddressPart2(): string {\n if (this.city == null && this.state == null && this.postalCode == null) {\n return null;\n }\n const city = this.city || '-';\n const state = this.state;\n const postalCode = this.postalCode || '-';\n let addressPart2 = city;\n if (!Utils.isNullOrWhitespace(state)) {\n addressPart2 += ', ' + state;\n }\n addressPart2 += ', ' + postalCode;\n return addressPart2;\n }\n}\n","import { LoginUriView } from './loginUriView';\nimport { View } from './view';\n\nimport { Utils } from '../../misc/utils';\nimport { Login } from '../domain/login';\n\nexport class LoginView implements View {\n username: string = null;\n password: string = null;\n passwordRevisionDate?: Date = null;\n totp: string = null;\n uris: LoginUriView[] = null;\n autofillOnPageLoad: boolean = null;\n\n constructor(l?: Login) {\n if (!l) {\n return;\n }\n\n this.passwordRevisionDate = l.passwordRevisionDate;\n this.autofillOnPageLoad = l.autofillOnPageLoad;\n }\n\n get uri(): string {\n return this.hasUris ? this.uris[0].uri : null;\n }\n\n get maskedPassword(): string {\n return this.password != null ? '••••••••' : null;\n }\n\n get subTitle(): string {\n return this.username;\n }\n\n get canLaunch(): boolean {\n return this.hasUris && this.uris.some(u => u.canLaunch);\n }\n\n get hasTotp(): boolean {\n return !Utils.isNullOrWhitespace(this.totp);\n }\n\n get launchUri(): string {\n if (this.hasUris) {\n const uri = this.uris.find(u => u.canLaunch);\n if (uri != null) {\n return uri.launchUri;\n }\n }\n return null;\n }\n\n get hasUris(): boolean {\n return this.uris != null && this.uris.length > 0;\n }\n}\n","import { SendData } from '../models/data/sendData';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { Send } from '../models/domain/send';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { SendView } from '../models/view/sendView';\n\nexport abstract class SendService {\n decryptedSendCache: SendView[];\n\n clearCache: () => void;\n encrypt: (model: SendView, file: File | ArrayBuffer, password: string, key?: SymmetricCryptoKey) => Promise<[Send, EncArrayBuffer]>;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n saveWithServer: (sendData: [Send, EncArrayBuffer]) => Promise;\n upsert: (send: SendData | SendData[]) => Promise;\n replace: (sends: { [id: string]: SendData; }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n removePasswordWithServer: (id: string) => Promise;\n}\n","import { CollectionDetailsResponse } from '../response/collectionResponse';\n\nexport class CollectionData {\n id: string;\n organizationId: string;\n name: string;\n externalId: string;\n readOnly: boolean;\n\n constructor(response: CollectionDetailsResponse) {\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.name = response.name;\n this.externalId = response.externalId;\n this.readOnly = response.readOnly;\n }\n}\n","import { View } from './view';\n\nimport { Collection } from '../domain/collection';\nimport { ITreeNodeObject } from '../domain/treeNode';\n\nimport { CollectionGroupDetailsResponse } from '../response/collectionResponse';\n\nexport class CollectionView implements View, ITreeNodeObject {\n id: string = null;\n organizationId: string = null;\n name: string = null;\n externalId: string = null;\n readOnly: boolean = null;\n hidePasswords: boolean = null;\n\n constructor(c?: Collection | CollectionGroupDetailsResponse) {\n if (!c) {\n return;\n }\n\n this.id = c.id;\n this.organizationId = c.organizationId;\n this.externalId = c.externalId;\n if (c instanceof Collection) {\n this.readOnly = c.readOnly;\n this.hidePasswords = c.hidePasswords;\n }\n }\n}\n","import { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CipherType } from '../../enums/cipherType';\n\nimport { AttachmentData } from './attachmentData';\nimport { CardData } from './cardData';\nimport { FieldData } from './fieldData';\nimport { IdentityData } from './identityData';\nimport { LoginData } from './loginData';\nimport { PasswordHistoryData } from './passwordHistoryData';\nimport { SecureNoteData } from './secureNoteData';\n\nimport { CipherResponse } from '../response/cipherResponse';\n\nexport class CipherData {\n id: string;\n organizationId: string;\n folderId: string;\n userId: string;\n edit: boolean;\n viewPassword: boolean;\n organizationUseTotp: boolean;\n favorite: boolean;\n revisionDate: string;\n type: CipherType;\n sizeName: string;\n name: string;\n notes: string;\n login?: LoginData;\n secureNote?: SecureNoteData;\n card?: CardData;\n identity?: IdentityData;\n fields?: FieldData[];\n attachments?: AttachmentData[];\n passwordHistory?: PasswordHistoryData[];\n collectionIds?: string[];\n deletedDate: string;\n reprompt: CipherRepromptType;\n\n constructor(response?: CipherResponse, userId?: string, collectionIds?: string[]) {\n if (response == null) {\n return;\n }\n\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.folderId = response.folderId;\n this.userId = userId;\n this.edit = response.edit;\n this.viewPassword = response.viewPassword;\n this.organizationUseTotp = response.organizationUseTotp;\n this.favorite = response.favorite;\n this.revisionDate = response.revisionDate;\n this.type = response.type;\n this.name = response.name;\n this.notes = response.notes;\n this.collectionIds = collectionIds != null ? collectionIds : response.collectionIds;\n this.deletedDate = response.deletedDate;\n this.reprompt = response.reprompt;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new LoginData(response.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteData(response.secureNote);\n break;\n case CipherType.Card:\n this.card = new CardData(response.card);\n break;\n case CipherType.Identity:\n this.identity = new IdentityData(response.identity);\n break;\n default:\n break;\n }\n\n if (response.fields != null) {\n this.fields = response.fields.map(f => new FieldData(f));\n }\n if (response.attachments != null) {\n this.attachments = response.attachments.map(a => new AttachmentData(a));\n }\n if (response.passwordHistory != null) {\n this.passwordHistory = response.passwordHistory.map(ph => new PasswordHistoryData(ph));\n }\n }\n}\n","export enum SendType {\n Text = 0,\n File = 1,\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-two-factor-verify',\n templateUrl: 'two-factor-verify.component.html',\n})\nexport class TwoFactorVerifyComponent {\n @Input() type: TwoFactorProviderType;\n @Input() organizationId: string;\n @Output() onAuthed = new EventEmitter();\n\n masterPassword: string;\n formPromise: Promise;\n\n private masterPasswordHash: string;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = this.masterPasswordHash =\n await this.cryptoService.hashPassword(this.masterPassword, null);\n\n try {\n switch (this.type) {\n case -1:\n this.formPromise = this.apiService.getTwoFactorRecover(request);\n break;\n case TwoFactorProviderType.Duo:\n case TwoFactorProviderType.OrganizationDuo:\n if (this.organizationId != null) {\n this.formPromise = this.apiService.getTwoFactorOrganizationDuo(this.organizationId, request);\n } else {\n this.formPromise = this.apiService.getTwoFactorDuo(request);\n }\n break;\n case TwoFactorProviderType.Email:\n this.formPromise = this.apiService.getTwoFactorEmail(request);\n break;\n case TwoFactorProviderType.WebAuthn:\n this.formPromise = this.apiService.getTwoFactorWebAuthn(request);\n break;\n case TwoFactorProviderType.Authenticator:\n this.formPromise = this.apiService.getTwoFactorAuthenticator(request);\n break;\n case TwoFactorProviderType.Yubikey:\n this.formPromise = this.apiService.getTwoFactorYubiKey(request);\n break;\n }\n\n const response = await this.formPromise;\n this.onAuthed.emit({\n response: response,\n masterPasswordHash: this.masterPasswordHash,\n });\n } catch { }\n }\n}\n","

{{'twoStepLoginAuthDesc' | i18n}}

","import { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CipherType } from '../../enums/cipherType';\n\nimport { CipherData } from '../data/cipherData';\n\nimport { CipherView } from '../view/cipherView';\n\nimport { Attachment } from './attachment';\nimport { Card } from './card';\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { Field } from './field';\nimport { Identity } from './identity';\nimport { Login } from './login';\nimport { Password } from './password';\nimport { SecureNote } from './secureNote';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Cipher extends Domain {\n id: string;\n organizationId: string;\n folderId: string;\n name: EncString;\n notes: EncString;\n type: CipherType;\n favorite: boolean;\n organizationUseTotp: boolean;\n edit: boolean;\n viewPassword: boolean;\n revisionDate: Date;\n localData: any;\n login: Login;\n identity: Identity;\n card: Card;\n secureNote: SecureNote;\n attachments: Attachment[];\n fields: Field[];\n passwordHistory: Password[];\n collectionIds: string[];\n deletedDate: Date;\n reprompt: CipherRepromptType;\n\n constructor(obj?: CipherData, alreadyEncrypted: boolean = false, localData: any = null) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n userId: null,\n organizationId: null,\n folderId: null,\n name: null,\n notes: null,\n }, alreadyEncrypted, ['id', 'userId', 'organizationId', 'folderId']);\n\n this.type = obj.type;\n this.favorite = obj.favorite;\n this.organizationUseTotp = obj.organizationUseTotp;\n this.edit = obj.edit;\n if (obj.viewPassword != null) {\n this.viewPassword = obj.viewPassword;\n } else {\n this.viewPassword = true; // Default for already synced Ciphers without viewPassword\n }\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n this.collectionIds = obj.collectionIds;\n this.localData = localData;\n this.deletedDate = obj.deletedDate != null ? new Date(obj.deletedDate) : null;\n this.reprompt = obj.reprompt;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new Login(obj.login, alreadyEncrypted);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNote(obj.secureNote, alreadyEncrypted);\n break;\n case CipherType.Card:\n this.card = new Card(obj.card, alreadyEncrypted);\n break;\n case CipherType.Identity:\n this.identity = new Identity(obj.identity, alreadyEncrypted);\n break;\n default:\n break;\n }\n\n if (obj.attachments != null) {\n this.attachments = obj.attachments.map(a => new Attachment(a, alreadyEncrypted));\n } else {\n this.attachments = null;\n }\n\n if (obj.fields != null) {\n this.fields = obj.fields.map(f => new Field(f, alreadyEncrypted));\n } else {\n this.fields = null;\n }\n\n if (obj.passwordHistory != null) {\n this.passwordHistory = obj.passwordHistory.map(ph => new Password(ph, alreadyEncrypted));\n } else {\n this.passwordHistory = null;\n }\n }\n\n async decrypt(encKey?: SymmetricCryptoKey): Promise {\n const model = new CipherView(this);\n\n await this.decryptObj(model, {\n name: null,\n notes: null,\n }, this.organizationId, encKey);\n\n switch (this.type) {\n case CipherType.Login:\n model.login = await this.login.decrypt(this.organizationId, encKey);\n break;\n case CipherType.SecureNote:\n model.secureNote = await this.secureNote.decrypt(this.organizationId, encKey);\n break;\n case CipherType.Card:\n model.card = await this.card.decrypt(this.organizationId, encKey);\n break;\n case CipherType.Identity:\n model.identity = await this.identity.decrypt(this.organizationId, encKey);\n break;\n default:\n break;\n }\n\n const orgId = this.organizationId;\n\n if (this.attachments != null && this.attachments.length > 0) {\n const attachments: any[] = [];\n await this.attachments.reduce((promise, attachment) => {\n return promise.then(() => {\n return attachment.decrypt(orgId, encKey);\n }).then(decAttachment => {\n attachments.push(decAttachment);\n });\n }, Promise.resolve());\n model.attachments = attachments;\n }\n\n if (this.fields != null && this.fields.length > 0) {\n const fields: any[] = [];\n await this.fields.reduce((promise, field) => {\n return promise.then(() => {\n return field.decrypt(orgId, encKey);\n }).then(decField => {\n fields.push(decField);\n });\n }, Promise.resolve());\n model.fields = fields;\n }\n\n if (this.passwordHistory != null && this.passwordHistory.length > 0) {\n const passwordHistory: any[] = [];\n await this.passwordHistory.reduce((promise, ph) => {\n return promise.then(() => {\n return ph.decrypt(orgId, encKey);\n }).then(decPh => {\n passwordHistory.push(decPh);\n });\n }, Promise.resolve());\n model.passwordHistory = passwordHistory;\n }\n\n return model;\n }\n\n toCipherData(userId: string): CipherData {\n const c = new CipherData();\n c.id = this.id;\n c.organizationId = this.organizationId;\n c.folderId = this.folderId;\n c.userId = this.organizationId != null ? userId : null;\n c.edit = this.edit;\n c.viewPassword = this.viewPassword;\n c.organizationUseTotp = this.organizationUseTotp;\n c.favorite = this.favorite;\n c.revisionDate = this.revisionDate != null ? this.revisionDate.toISOString() : null;\n c.type = this.type;\n c.collectionIds = this.collectionIds;\n c.deletedDate = this.deletedDate != null ? this.deletedDate.toISOString() : null;\n c.reprompt = this.reprompt;\n\n this.buildDataModel(this, c, {\n name: null,\n notes: null,\n });\n\n switch (c.type) {\n case CipherType.Login:\n c.login = this.login.toLoginData();\n break;\n case CipherType.SecureNote:\n c.secureNote = this.secureNote.toSecureNoteData();\n break;\n case CipherType.Card:\n c.card = this.card.toCardData();\n break;\n case CipherType.Identity:\n c.identity = this.identity.toIdentityData();\n break;\n default:\n break;\n }\n\n if (this.fields != null) {\n c.fields = this.fields.map(f => f.toFieldData());\n }\n if (this.attachments != null) {\n c.attachments = this.attachments.map(a => a.toAttachmentData());\n }\n if (this.passwordHistory != null) {\n c.passwordHistory = this.passwordHistory.map(ph => ph.toPasswordHistoryData());\n }\n return c;\n }\n}\n","export enum CipherRepromptType {\n None = 0,\n Password = 1,\n}\n","export abstract class PasswordRepromptService {\n protectedFields: () => string[];\n showPasswordPrompt: () => Promise;\n}\n","import {\n Component,\n Input,\n OnChanges,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Component({\n selector: 'app-password-strength',\n templateUrl: 'password-strength.component.html',\n})\nexport class PasswordStrengthComponent implements OnChanges {\n @Input() score?: number;\n @Input() showText = false;\n\n scoreWidth = 0;\n color = 'bg-danger';\n text: string;\n\n constructor(private i18nService: I18nService) { }\n\n ngOnChanges(): void {\n this.scoreWidth = this.score == null ? 0 : (this.score + 1) * 20;\n switch (this.score) {\n case 4:\n this.color = 'bg-success';\n this.text = this.i18nService.t('strong');\n break;\n case 3:\n this.color = 'bg-primary';\n this.text = this.i18nService.t('good');\n break;\n case 2:\n this.color = 'bg-warning';\n this.text = this.i18nService.t('weak');\n break;\n default:\n this.color = 'bg-danger';\n this.text = this.score != null ? this.i18nService.t('weak') : null;\n break;\n }\n }\n}\n","
{{text}}
","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\n@Pipe({\n name: 'search',\n})\nexport class SearchPipe implements PipeTransform {\n transform(items: any[], searchText: string, prop1?: string, prop2?: string, prop3?: string): any[] {\n if (items == null || items.length === 0) {\n return [];\n }\n\n if (searchText == null || searchText.length < 2) {\n return items;\n }\n\n searchText = searchText.trim().toLowerCase();\n return items.filter(i => {\n if (prop1 != null && i[prop1] != null && i[prop1].toString().toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (prop2 != null && i[prop2] != null && i[prop2].toString().toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (prop3 != null && i[prop3] != null && i[prop3].toString().toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n return false;\n });\n }\n}\n","export enum EventType {\n User_LoggedIn = 1000,\n User_ChangedPassword = 1001,\n User_Updated2fa = 1002,\n User_Disabled2fa = 1003,\n User_Recovered2fa = 1004,\n User_FailedLogIn = 1005,\n User_FailedLogIn2fa = 1006,\n User_ClientExportedVault = 1007,\n\n Cipher_Created = 1100,\n Cipher_Updated = 1101,\n Cipher_Deleted = 1102,\n Cipher_AttachmentCreated = 1103,\n Cipher_AttachmentDeleted = 1104,\n Cipher_Shared = 1105,\n Cipher_UpdatedCollections = 1106,\n Cipher_ClientViewed = 1107,\n Cipher_ClientToggledPasswordVisible = 1108,\n Cipher_ClientToggledHiddenFieldVisible = 1109,\n Cipher_ClientToggledCardCodeVisible = 1110,\n Cipher_ClientCopiedPassword = 1111,\n Cipher_ClientCopiedHiddenField = 1112,\n Cipher_ClientCopiedCardCode = 1113,\n Cipher_ClientAutofilled = 1114,\n Cipher_SoftDeleted = 1115,\n Cipher_Restored = 1116,\n Cipher_ClientToggledCardNumberVisible = 1117,\n\n Collection_Created = 1300,\n Collection_Updated = 1301,\n Collection_Deleted = 1302,\n\n Group_Created = 1400,\n Group_Updated = 1401,\n Group_Deleted = 1402,\n\n OrganizationUser_Invited = 1500,\n OrganizationUser_Confirmed = 1501,\n OrganizationUser_Updated = 1502,\n OrganizationUser_Removed = 1503,\n OrganizationUser_UpdatedGroups = 1504,\n OrganizationUser_UnlinkedSso = 1505,\n OrganizationUser_ResetPassword_Enroll = 1506,\n OrganizationUser_ResetPassword_Withdraw = 1507,\n OrganizationUser_AdminResetPassword = 1508,\n\n Organization_Updated = 1600,\n Organization_PurgedVault = 1601,\n // Organization_ClientExportedVault = 1602,\n\n Policy_Updated = 1700,\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { View } from './view';\n\nimport { Field } from '../domain/field';\n\nexport class FieldView implements View {\n name: string = null;\n value: string = null;\n type: FieldType = null;\n newField: boolean = false; // Marks if the field is new and hasn't been saved\n showValue: boolean = false;\n\n constructor(f?: Field) {\n if (!f) {\n return;\n }\n\n this.type = f.type;\n }\n\n get maskedValue(): string {\n return this.value != null ? '••••••••' : null;\n }\n}\n","import { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CipherType } from '../../enums/cipherType';\n\nimport { Cipher } from '../domain/cipher';\n\nimport { CardApi } from '../api/cardApi';\nimport { FieldApi } from '../api/fieldApi';\nimport { IdentityApi } from '../api/identityApi';\nimport { LoginApi } from '../api/loginApi';\nimport { LoginUriApi } from '../api/loginUriApi';\nimport { SecureNoteApi } from '../api/secureNoteApi';\n\nimport { AttachmentRequest } from './attachmentRequest';\nimport { PasswordHistoryRequest } from './passwordHistoryRequest';\n\nexport class CipherRequest {\n type: CipherType;\n folderId: string;\n organizationId: string;\n name: string;\n notes: string;\n favorite: boolean;\n login: LoginApi;\n secureNote: SecureNoteApi;\n card: CardApi;\n identity: IdentityApi;\n fields: FieldApi[];\n passwordHistory: PasswordHistoryRequest[];\n // Deprecated, remove at some point and rename attachments2 to attachments\n attachments: { [id: string]: string; };\n attachments2: { [id: string]: AttachmentRequest; };\n lastKnownRevisionDate: Date;\n reprompt: CipherRepromptType;\n\n constructor(cipher: Cipher) {\n this.type = cipher.type;\n this.folderId = cipher.folderId;\n this.organizationId = cipher.organizationId;\n this.name = cipher.name ? cipher.name.encryptedString : null;\n this.notes = cipher.notes ? cipher.notes.encryptedString : null;\n this.favorite = cipher.favorite;\n this.lastKnownRevisionDate = cipher.revisionDate;\n this.reprompt = cipher.reprompt;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new LoginApi();\n this.login.uris = null;\n this.login.username = cipher.login.username ? cipher.login.username.encryptedString : null;\n this.login.password = cipher.login.password ? cipher.login.password.encryptedString : null;\n this.login.passwordRevisionDate = cipher.login.passwordRevisionDate != null ?\n cipher.login.passwordRevisionDate.toISOString() : null;\n this.login.totp = cipher.login.totp ? cipher.login.totp.encryptedString : null;\n this.login.autofillOnPageLoad = cipher.login.autofillOnPageLoad;\n\n if (cipher.login.uris != null) {\n this.login.uris = cipher.login.uris.map(u => {\n const uri = new LoginUriApi();\n uri.uri = u.uri != null ? u.uri.encryptedString : null;\n uri.match = u.match != null ? u.match : null;\n return uri;\n });\n }\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteApi();\n this.secureNote.type = cipher.secureNote.type;\n break;\n case CipherType.Card:\n this.card = new CardApi();\n this.card.cardholderName = cipher.card.cardholderName != null ?\n cipher.card.cardholderName.encryptedString : null;\n this.card.brand = cipher.card.brand != null ? cipher.card.brand.encryptedString : null;\n this.card.number = cipher.card.number != null ? cipher.card.number.encryptedString : null;\n this.card.expMonth = cipher.card.expMonth != null ? cipher.card.expMonth.encryptedString : null;\n this.card.expYear = cipher.card.expYear != null ? cipher.card.expYear.encryptedString : null;\n this.card.code = cipher.card.code != null ? cipher.card.code.encryptedString : null;\n break;\n case CipherType.Identity:\n this.identity = new IdentityApi();\n this.identity.title = cipher.identity.title != null ? cipher.identity.title.encryptedString : null;\n this.identity.firstName = cipher.identity.firstName != null ?\n cipher.identity.firstName.encryptedString : null;\n this.identity.middleName = cipher.identity.middleName != null ?\n cipher.identity.middleName.encryptedString : null;\n this.identity.lastName = cipher.identity.lastName != null ?\n cipher.identity.lastName.encryptedString : null;\n this.identity.address1 = cipher.identity.address1 != null ?\n cipher.identity.address1.encryptedString : null;\n this.identity.address2 = cipher.identity.address2 != null ?\n cipher.identity.address2.encryptedString : null;\n this.identity.address3 = cipher.identity.address3 != null ?\n cipher.identity.address3.encryptedString : null;\n this.identity.city = cipher.identity.city != null ? cipher.identity.city.encryptedString : null;\n this.identity.state = cipher.identity.state != null ? cipher.identity.state.encryptedString : null;\n this.identity.postalCode = cipher.identity.postalCode != null ?\n cipher.identity.postalCode.encryptedString : null;\n this.identity.country = cipher.identity.country != null ?\n cipher.identity.country.encryptedString : null;\n this.identity.company = cipher.identity.company != null ?\n cipher.identity.company.encryptedString : null;\n this.identity.email = cipher.identity.email != null ? cipher.identity.email.encryptedString : null;\n this.identity.phone = cipher.identity.phone != null ? cipher.identity.phone.encryptedString : null;\n this.identity.ssn = cipher.identity.ssn != null ? cipher.identity.ssn.encryptedString : null;\n this.identity.username = cipher.identity.username != null ?\n cipher.identity.username.encryptedString : null;\n this.identity.passportNumber = cipher.identity.passportNumber != null ?\n cipher.identity.passportNumber.encryptedString : null;\n this.identity.licenseNumber = cipher.identity.licenseNumber != null ?\n cipher.identity.licenseNumber.encryptedString : null;\n break;\n default:\n break;\n }\n\n if (cipher.fields != null) {\n this.fields = cipher.fields.map(f => {\n const field = new FieldApi();\n field.type = f.type;\n field.name = f.name ? f.name.encryptedString : null;\n field.value = f.value ? f.value.encryptedString : null;\n return field;\n });\n }\n\n if (cipher.passwordHistory != null) {\n this.passwordHistory = [];\n cipher.passwordHistory.forEach(ph => {\n this.passwordHistory.push({\n lastUsedDate: ph.lastUsedDate,\n password: ph.password ? ph.password.encryptedString : null,\n });\n });\n }\n\n if (cipher.attachments != null) {\n this.attachments = {};\n this.attachments2 = {};\n cipher.attachments.forEach(attachment => {\n const fileName = attachment.fileName ? attachment.fileName.encryptedString : null;\n this.attachments[attachment.id] = fileName;\n const attachmentRequest = new AttachmentRequest();\n attachmentRequest.fileName = fileName;\n if (attachment.key != null) {\n attachmentRequest.key = attachment.key.encryptedString;\n }\n this.attachments2[attachment.id] = attachmentRequest;\n });\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class ErrorResponse extends BaseResponse {\n message: string;\n validationErrors: { [key: string]: string[]; };\n statusCode: number;\n\n constructor(response: any, status: number, identityResponse?: boolean) {\n super(response);\n let errorModel = null;\n if (response != null) {\n const responseErrorModel = this.getResponseProperty('ErrorModel');\n if (responseErrorModel && identityResponse) {\n errorModel = responseErrorModel;\n } else {\n errorModel = response;\n }\n }\n\n if (errorModel) {\n this.message = this.getResponseProperty('Message', errorModel);\n this.validationErrors = this.getResponseProperty('ValidationErrors', errorModel);\n } else {\n if (status === 429) {\n this.message = 'Rate limit exceeded. Try again later.';\n }\n }\n this.statusCode = status;\n }\n\n getSingleMessage(): string {\n if (this.validationErrors == null) {\n return this.message;\n }\n for (const key in this.validationErrors) {\n if (!this.validationErrors.hasOwnProperty(key)) {\n continue;\n }\n if (this.validationErrors[key].length) {\n return this.validationErrors[key][0];\n }\n }\n return this.message;\n }\n\n getAllMessages(): string[] {\n const messages: string[] = [];\n if (this.validationErrors == null) {\n return messages;\n }\n for (const key in this.validationErrors) {\n if (!this.validationErrors.hasOwnProperty(key)) {\n continue;\n }\n this.validationErrors[key].forEach((item: string) => {\n let prefix = '';\n if (key.indexOf('[') > -1 && key.indexOf(']') > -1) {\n const lastSep = key.lastIndexOf('.');\n prefix = key.substr(0, lastSep > -1 ? lastSep : key.length) + ': ';\n }\n messages.push(prefix + item);\n });\n }\n return messages;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { ErrorResponse } from 'jslib-common/models/response/errorResponse';\n\n@Injectable()\nexport class ValidationService {\n constructor(private i18nService: I18nService, private platformUtilsService: PlatformUtilsService) { }\n\n showError(data: any): string[] {\n const defaultErrorMessage = this.i18nService.t('unexpectedError');\n let errors: string[] = [];\n\n if (data != null && typeof data === 'string') {\n errors.push(data);\n } else if (data == null || typeof data !== 'object') {\n errors.push(defaultErrorMessage);\n } else if (data.validationErrors != null) {\n errors = errors.concat((data as ErrorResponse).getAllMessages());\n } else {\n errors.push(data.message ? data.message : defaultErrorMessage);\n }\n\n if (errors.length === 1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), errors[0]);\n } else if (errors.length > 1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), errors, {\n timeout: 5000 * errors.length,\n });\n }\n\n return errors;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport {\n ActivatedRoute,\n NavigationEnd,\n Router,\n} from '@angular/router';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Injectable()\nexport class RouterService {\n private previousUrl: string = undefined;\n private currentUrl: string = undefined;\n\n constructor(private router: Router, private activatedRoute: ActivatedRoute,\n private titleService: Title, i18nService: I18nService) {\n this.currentUrl = this.router.url;\n router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.previousUrl = this.currentUrl;\n this.currentUrl = event.url;\n\n let title = i18nService.t('pageTitle', 'Bitwarden');\n let titleId: string = null;\n let rawTitle: string = null;\n let child = this.activatedRoute.firstChild;\n while (child != null) {\n if (child.firstChild != null) {\n child = child.firstChild;\n } else if (child.snapshot.data != null && child.snapshot.data.title != null) {\n rawTitle = child.snapshot.data.title;\n break;\n } else if (child.snapshot.data != null && child.snapshot.data.titleId != null) {\n titleId = child.snapshot.data.titleId;\n break;\n } else {\n titleId = null;\n rawTitle = null;\n break;\n }\n }\n\n if (titleId != null || rawTitle != null) {\n const newTitle = rawTitle != null ? rawTitle : i18nService.t(titleId);\n if (newTitle != null && newTitle !== '') {\n title = (newTitle + ' | ' + title);\n }\n }\n this.titleService.setTitle(title);\n }\n });\n }\n\n getPreviousUrl() {\n return this.previousUrl;\n }\n\n setPreviousUrl(url: string) {\n this.previousUrl = url;\n }\n}\n","export enum KdfType {\n PBKDF2_SHA256 = 0,\n}\n","export enum OrganizationUserType {\n Owner = 0,\n Admin = 1,\n User = 2,\n Manager = 3,\n Custom = 4,\n}\n","import { Injectable } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\n\nimport { DeviceType } from 'jslib-common/enums/deviceType';\nimport { EventType } from 'jslib-common/enums/eventType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { EventResponse } from 'jslib-common/models/response/eventResponse';\n\n\n@Injectable()\nexport class EventService {\n constructor(private i18nService: I18nService, private policyService: PolicyService) { }\n\n getDefaultDateFilters() {\n const d = new Date();\n const end = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59);\n d.setDate(d.getDate() - 30);\n const start = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0);\n return [this.toDateTimeLocalString(start), this.toDateTimeLocalString(end)];\n }\n\n formatDateFilters(filterStart: string, filterEnd: string) {\n const start: Date = new Date(filterStart);\n const end: Date = new Date(filterEnd + ':59.999');\n if (isNaN(start.getTime()) || isNaN(end.getTime()) || end < start) {\n throw new Error('Invalid date range.');\n }\n return [start.toISOString(), end.toISOString()];\n }\n\n async getEventInfo(ev: EventResponse, options = new EventOptions()): Promise {\n const appInfo = this.getAppInfo(ev.deviceType);\n const { message, humanReadableMessage } = await this.getEventMessage(ev, options);\n return {\n message: message,\n humanReadableMessage: humanReadableMessage,\n appIcon: appInfo[0],\n appName: appInfo[1],\n };\n }\n\n private async getEventMessage(ev: EventResponse, options: EventOptions) {\n let msg = '';\n let humanReadableMsg = '';\n switch (ev.type) {\n // User\n case EventType.User_LoggedIn:\n msg = humanReadableMsg = this.i18nService.t('loggedIn');\n break;\n case EventType.User_ChangedPassword:\n msg = humanReadableMsg = this.i18nService.t('changedPassword');\n break;\n case EventType.User_Updated2fa:\n msg = humanReadableMsg = this.i18nService.t('enabledUpdated2fa');\n break;\n case EventType.User_Disabled2fa:\n msg = humanReadableMsg = this.i18nService.t('disabled2fa');\n break;\n case EventType.User_Recovered2fa:\n msg = humanReadableMsg = this.i18nService.t('recovered2fa');\n break;\n case EventType.User_FailedLogIn:\n msg = humanReadableMsg = this.i18nService.t('failedLogin');\n break;\n case EventType.User_FailedLogIn2fa:\n msg = humanReadableMsg = this.i18nService.t('failedLogin2fa');\n break;\n case EventType.User_ClientExportedVault:\n msg = humanReadableMsg = this.i18nService.t('exportedVault');\n break;\n // Cipher\n case EventType.Cipher_Created:\n msg = this.i18nService.t('createdItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('createdItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Updated:\n msg = this.i18nService.t('editedItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('editedItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Deleted:\n msg = this.i18nService.t('permanentlyDeletedItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('permanentlyDeletedItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_SoftDeleted:\n msg = this.i18nService.t('deletedItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('deletedItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Restored:\n msg = this.i18nService.t('restoredItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('restoredItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_AttachmentCreated:\n msg = this.i18nService.t('createdAttachmentForItem', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('createdAttachmentForItem', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_AttachmentDeleted:\n msg = this.i18nService.t('deletedAttachmentForItem', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('deletedAttachmentForItem', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Shared:\n msg = this.i18nService.t('sharedItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('sharedItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientViewed:\n msg = this.i18nService.t('viewedItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('viewedItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientToggledPasswordVisible:\n msg = this.i18nService.t('viewedPasswordItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('viewedPasswordItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientToggledHiddenFieldVisible:\n msg = this.i18nService.t('viewedHiddenFieldItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('viewedHiddenFieldItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientToggledCardCodeVisible:\n msg = this.i18nService.t('viewedSecurityCodeItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('viewedSecurityCodeItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientCopiedHiddenField:\n msg = this.i18nService.t('copiedHiddenFieldItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('copiedHiddenFieldItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientCopiedPassword:\n msg = this.i18nService.t('copiedPasswordItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('copiedPasswordItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientCopiedCardCode:\n msg = this.i18nService.t('copiedSecurityCodeItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('copiedSecurityCodeItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientAutofilled:\n msg = this.i18nService.t('autofilledItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('autofilledItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_UpdatedCollections:\n msg = this.i18nService.t('editedCollectionsForItem', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('editedCollectionsForItem', this.getShortId(ev.cipherId));\n break;\n // Collection\n case EventType.Collection_Created:\n msg = this.i18nService.t('createdCollectionId', this.formatCollectionId(ev));\n humanReadableMsg = this.i18nService.t('createdCollectionId', this.getShortId(ev.collectionId));\n break;\n case EventType.Collection_Updated:\n msg = this.i18nService.t('editedCollectionId', this.formatCollectionId(ev));\n humanReadableMsg = this.i18nService.t('editedCollectionId', this.getShortId(ev.collectionId));\n break;\n case EventType.Collection_Deleted:\n msg = this.i18nService.t('deletedCollectionId', this.formatCollectionId(ev));\n humanReadableMsg = this.i18nService.t('deletedCollectionId', this.getShortId(ev.collectionId));\n break;\n // Group\n case EventType.Group_Created:\n msg = this.i18nService.t('createdGroupId', this.formatGroupId(ev));\n humanReadableMsg = this.i18nService.t('createdGroupId', this.getShortId(ev.groupId));\n break;\n case EventType.Group_Updated:\n msg = this.i18nService.t('editedGroupId', this.formatGroupId(ev));\n humanReadableMsg = this.i18nService.t('editedGroupId', this.getShortId(ev.groupId));\n break;\n case EventType.Group_Deleted:\n msg = this.i18nService.t('deletedGroupId', this.formatGroupId(ev));\n humanReadableMsg = this.i18nService.t('deletedGroupId', this.getShortId(ev.groupId));\n break;\n // Org user\n case EventType.OrganizationUser_Invited:\n msg = this.i18nService.t('invitedUserId', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('invitedUserId', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_Confirmed:\n msg = this.i18nService.t('confirmedUserId', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('confirmedUserId', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_Updated:\n msg = this.i18nService.t('editedUserId', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('editedUserId', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_Removed:\n msg = this.i18nService.t('removedUserId', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('removedUserId', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_UpdatedGroups:\n msg = this.i18nService.t('editedGroupsForUser', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('editedGroupsForUser', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_UnlinkedSso:\n msg = this.i18nService.t('unlinkedSsoUser', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('unlinkedSsoUser', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_ResetPassword_Enroll:\n msg = this.i18nService.t('eventEnrollPasswordReset', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('eventEnrollPasswordReset', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_ResetPassword_Withdraw:\n msg = this.i18nService.t('eventWithdrawPasswordReset', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('eventWithdrawPasswordReset', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_AdminResetPassword:\n msg = this.i18nService.t('eventAdminPasswordReset', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('eventAdminPasswordReset', this.getShortId(ev.organizationUserId));\n break;\n // Org\n case EventType.Organization_Updated:\n msg = humanReadableMsg = this.i18nService.t('editedOrgSettings');\n break;\n case EventType.Organization_PurgedVault:\n msg = humanReadableMsg = this.i18nService.t('purgedOrganizationVault');\n break;\n /*\n case EventType.Organization_ClientExportedVault:\n msg = this.i18nService.t('exportedOrganizationVault');\n break;\n */\n // Policies\n case EventType.Policy_Updated:\n msg = this.i18nService.t('modifiedPolicyId', this.formatPolicyId(ev));\n\n const policies = await this.policyService.getAll();\n const policy = policies.filter(p => p.id === ev.policyId)[0];\n let p1 = this.getShortId(ev.policyId);\n if (policy !== null) {\n p1 = PolicyType[policy.type];\n }\n\n humanReadableMsg = this.i18nService.t('modifiedPolicyId', p1);\n break;\n\n default:\n break;\n }\n return {\n message: msg === '' ? null : msg,\n humanReadableMessage: humanReadableMsg === '' ? null : humanReadableMsg,\n };\n }\n\n private getAppInfo(deviceType: DeviceType): [string, string] {\n switch (deviceType) {\n case DeviceType.Android:\n return ['fa-android', this.i18nService.t('mobile') + ' - Android'];\n case DeviceType.iOS:\n return ['fa-apple', this.i18nService.t('mobile') + ' - iOS'];\n case DeviceType.UWP:\n return ['fa-windows', this.i18nService.t('mobile') + ' - Windows'];\n case DeviceType.ChromeExtension:\n return ['fa-chrome', this.i18nService.t('extension') + ' - Chrome'];\n case DeviceType.FirefoxExtension:\n return ['fa-firefox', this.i18nService.t('extension') + ' - Firefox'];\n case DeviceType.OperaExtension:\n return ['fa-opera', this.i18nService.t('extension') + ' - Opera'];\n case DeviceType.EdgeExtension:\n return ['fa-edge', this.i18nService.t('extension') + ' - Edge'];\n case DeviceType.VivaldiExtension:\n return ['fa-puzzle-piece', this.i18nService.t('extension') + ' - Vivaldi'];\n case DeviceType.SafariExtension:\n return ['fa-safari', this.i18nService.t('extension') + ' - Safari'];\n case DeviceType.WindowsDesktop:\n return ['fa-windows', this.i18nService.t('desktop') + ' - Windows'];\n case DeviceType.MacOsDesktop:\n return ['fa-apple', this.i18nService.t('desktop') + ' - macOS'];\n case DeviceType.LinuxDesktop:\n return ['fa-linux', this.i18nService.t('desktop') + ' - Linux'];\n case DeviceType.ChromeBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Chrome'];\n case DeviceType.FirefoxBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Firefox'];\n case DeviceType.OperaBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Opera'];\n case DeviceType.SafariBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Safari'];\n case DeviceType.VivaldiBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Vivaldi'];\n case DeviceType.EdgeBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Edge'];\n case DeviceType.IEBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - IE'];\n case DeviceType.UnknownBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - ' + this.i18nService.t('unknown')];\n default:\n return ['fa-globe', this.i18nService.t('unknown')];\n }\n }\n\n private formatCipherId(ev: EventResponse, options: EventOptions) {\n const shortId = this.getShortId(ev.cipherId);\n if (ev.organizationId == null || !options.cipherInfo) {\n return '' + shortId + '';\n }\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/vault?search=' + shortId +\n '&viewEvents=' + ev.cipherId);\n return a.outerHTML;\n }\n\n private formatGroupId(ev: EventResponse) {\n const shortId = this.getShortId(ev.groupId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/groups?search=' + shortId);\n return a.outerHTML;\n }\n\n private formatCollectionId(ev: EventResponse) {\n const shortId = this.getShortId(ev.collectionId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/collections?search=' + shortId);\n return a.outerHTML;\n }\n\n private formatOrgUserId(ev: EventResponse) {\n const shortId = this.getShortId(ev.organizationUserId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/people?search=' + shortId +\n '&viewEvents=' + ev.organizationUserId);\n return a.outerHTML;\n }\n\n private formatPolicyId(ev: EventResponse) {\n const shortId = this.getShortId(ev.policyId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/policies?policyId=' + ev.policyId);\n return a.outerHTML;\n }\n\n private makeAnchor(shortId: string) {\n const a = document.createElement('a');\n a.title = this.i18nService.t('view');\n a.innerHTML = '' + shortId + '';\n return a;\n }\n\n private getShortId(id: string) {\n return id.substring(0, 8);\n }\n\n private toDateTimeLocalString(date: Date) {\n return date.getFullYear() +\n '-' + this.pad(date.getMonth() + 1) +\n '-' + this.pad(date.getDate()) +\n 'T' + this.pad(date.getHours()) +\n ':' + this.pad(date.getMinutes());\n }\n\n private pad(num: number) {\n const norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n }\n}\n\nexport class EventInfo {\n message: string;\n humanReadableMessage: string;\n appIcon: string;\n appName: string;\n}\n\nexport class EventOptions {\n cipherInfo = true;\n}\n","import { EncryptionType } from '../../enums/encryptionType';\n\nimport { Utils } from '../../misc/utils';\n\nexport class SymmetricCryptoKey {\n key: ArrayBuffer;\n encKey?: ArrayBuffer;\n macKey?: ArrayBuffer;\n encType: EncryptionType;\n\n keyB64: string;\n encKeyB64: string;\n macKeyB64: string;\n\n meta: any;\n\n constructor(key: ArrayBuffer, encType?: EncryptionType) {\n if (key == null) {\n throw new Error('Must provide key');\n }\n\n if (encType == null) {\n if (key.byteLength === 32) {\n encType = EncryptionType.AesCbc256_B64;\n } else if (key.byteLength === 64) {\n encType = EncryptionType.AesCbc256_HmacSha256_B64;\n } else {\n throw new Error('Unable to determine encType.');\n }\n }\n\n this.key = key;\n this.encType = encType;\n\n if (encType === EncryptionType.AesCbc256_B64 && key.byteLength === 32) {\n this.encKey = key;\n this.macKey = null;\n } else if (encType === EncryptionType.AesCbc128_HmacSha256_B64 && key.byteLength === 32) {\n this.encKey = key.slice(0, 16);\n this.macKey = key.slice(16, 32);\n } else if (encType === EncryptionType.AesCbc256_HmacSha256_B64 && key.byteLength === 64) {\n this.encKey = key.slice(0, 32);\n this.macKey = key.slice(32, 64);\n } else {\n throw new Error('Unsupported encType/key length.');\n }\n\n if (this.key != null) {\n this.keyB64 = Utils.fromBufferToB64(this.key);\n }\n if (this.encKey != null) {\n this.encKeyB64 = Utils.fromBufferToB64(this.encKey);\n }\n if (this.macKey != null) {\n this.macKeyB64 = Utils.fromBufferToB64(this.macKey);\n }\n }\n}\n","export enum PaymentMethodType {\n Card = 0,\n BankAccount = 1,\n PayPal = 2,\n BitPay = 3,\n Credit = 4,\n WireTransfer = 5,\n AppleInApp = 6,\n GoogleInApp = 7,\n Check = 8,\n}\n","import {\n Directive,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\nimport { TwoFactorProviderRequest } from 'jslib-common/models/request/twoFactorProviderRequest';\n\n@Directive()\nexport abstract class TwoFactorBaseComponent {\n @Output() onUpdated = new EventEmitter();\n\n type: TwoFactorProviderType;\n organizationId: string;\n twoFactorProviderType = TwoFactorProviderType;\n enabled = false;\n authed = false;\n\n protected masterPasswordHash: string;\n\n constructor(protected apiService: ApiService, protected i18nService: I18nService,\n protected toasterService: ToasterService, protected platformUtilsService: PlatformUtilsService) { }\n\n protected auth(authResponse: any) {\n this.masterPasswordHash = authResponse.masterPasswordHash;\n this.authed = true;\n }\n\n protected async enable(enableFunction: () => Promise) {\n try {\n await enableFunction();\n this.onUpdated.emit(true);\n } catch { }\n }\n\n protected async disable(promise: Promise) {\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('twoStepDisableDesc'),\n this.i18nService.t('disable'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n const request = new TwoFactorProviderRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.type = this.type;\n if (this.organizationId != null) {\n promise = this.apiService.putTwoFactorOrganizationDisable(this.organizationId, request);\n } else {\n promise = this.apiService.putTwoFactorDisable(request);\n }\n await promise;\n this.enabled = false;\n this.toasterService.popAsync('success', null, this.i18nService.t('twoStepDisabled'));\n this.onUpdated.emit(false);\n } catch { }\n }\n}\n","import {\n ComponentFactoryResolver,\n Directive,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { ModalComponent } from '../modal.component';\nimport { AddEditComponent as OrgAddEditComponent } from '../organizations/vault/add-edit.component';\nimport { AddEditComponent } from '../vault/add-edit.component';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Directive()\nexport class CipherReportComponent {\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n\n loading = false;\n hasLoaded = false;\n ciphers: CipherView[] = [];\n organization: Organization;\n\n private modal: ModalComponent = null;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver, protected userService: UserService,\n protected messagingService: MessagingService, public requiresPaid: boolean) { }\n\n async load() {\n this.loading = true;\n await this.setCiphers();\n this.loading = false;\n this.hasLoaded = true;\n }\n\n selectCipher(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.cipherAddEditModalRef.createComponent(factory).instance;\n let childComponent: OrgAddEditComponent | AddEditComponent;\n if (this.organization != null) {\n childComponent = this.modal.show(OrgAddEditComponent, this.cipherAddEditModalRef);\n (childComponent as OrgAddEditComponent).organization = this.organization;\n } else {\n childComponent = this.modal.show(AddEditComponent, this.cipherAddEditModalRef);\n }\n\n childComponent.cipherId = cipher == null ? null : cipher.id;\n if (this.organization != null) {\n childComponent.organizationId = this.organization.id;\n }\n childComponent.onSavedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.load();\n });\n childComponent.onDeletedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.load();\n });\n childComponent.onRestoredCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.load();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n\n return childComponent;\n }\n\n protected async checkAccess(): Promise {\n if (this.organization != null) {\n // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now\n // since all paid plans include useTotp\n if (this.requiresPaid && !this.organization.useTotp) {\n this.messagingService.send('upgradeOrganization', { organizationId: this.organization.id });\n return false;\n }\n } else {\n const accessPremium = await this.userService.canAccessPremium();\n if (this.requiresPaid && !accessPremium) {\n this.messagingService.send('premiumRequired');\n this.loading = false;\n return false;\n }\n }\n return true;\n }\n\n protected async setCiphers() {\n this.ciphers = [];\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { View } from './view';\n\nimport { LoginUri } from '../domain/loginUri';\n\nimport { Utils } from '../../misc/utils';\n\nconst CanLaunchWhitelist = [\n 'https://',\n 'http://',\n 'ssh://',\n 'ftp://',\n 'sftp://',\n 'irc://',\n 'vnc://',\n // https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-uri\n 'rdp://', // Legacy RDP URI scheme\n 'ms-rd:', // Preferred RDP URI scheme\n 'chrome://',\n 'iosapp://',\n 'androidapp://',\n];\n\nexport class LoginUriView implements View {\n match: UriMatchType = null;\n\n // tslint:disable\n private _uri: string = null;\n private _domain: string = null;\n private _hostname: string = null;\n private _host: string = null;\n private _canLaunch: boolean = null;\n // tslint:enable\n\n constructor(u?: LoginUri) {\n if (!u) {\n return;\n }\n\n this.match = u.match;\n }\n\n get uri(): string {\n return this._uri;\n }\n set uri(value: string) {\n this._uri = value;\n this._domain = null;\n this._canLaunch = null;\n }\n\n get domain(): string {\n if (this._domain == null && this.uri != null) {\n this._domain = Utils.getDomain(this.uri);\n if (this._domain === '') {\n this._domain = null;\n }\n }\n\n return this._domain;\n }\n\n get hostname(): string {\n if (this.match === UriMatchType.RegularExpression) {\n return null;\n }\n if (this._hostname == null && this.uri != null) {\n this._hostname = Utils.getHostname(this.uri);\n if (this._hostname === '') {\n this._hostname = null;\n }\n }\n\n return this._hostname;\n }\n\n get host(): string {\n if (this.match === UriMatchType.RegularExpression) {\n return null;\n }\n if (this._host == null && this.uri != null) {\n this._host = Utils.getHost(this.uri);\n if (this._host === '') {\n this._host = null;\n }\n }\n\n return this._host;\n }\n\n get hostnameOrUri(): string {\n return this.hostname != null ? this.hostname : this.uri;\n }\n\n get hostOrUri(): string {\n return this.host != null ? this.host : this.uri;\n }\n\n get isWebsite(): boolean {\n return this.uri != null && (this.uri.indexOf('http://') === 0 || this.uri.indexOf('https://') === 0 ||\n (this.uri.indexOf('://') < 0 && Utils.tldEndingRegex.test(this.uri)));\n }\n\n get canLaunch(): boolean {\n if (this._canLaunch != null) {\n return this._canLaunch;\n }\n if (this.uri != null && this.match !== UriMatchType.RegularExpression) {\n const uri = this.launchUri;\n for (let i = 0; i < CanLaunchWhitelist.length; i++) {\n if (uri.indexOf(CanLaunchWhitelist[i]) === 0) {\n this._canLaunch = true;\n return this._canLaunch;\n }\n }\n }\n this._canLaunch = false;\n return this._canLaunch;\n }\n\n get launchUri(): string {\n return this.uri.indexOf('://') < 0 && Utils.tldEndingRegex.test(this.uri) ? ('http://' + this.uri) : this.uri;\n }\n}\n","export enum UriMatchType {\n Domain = 0,\n Host = 1,\n StartsWith = 2,\n Exact = 3,\n RegularExpression = 4,\n Never = 5,\n}\n","import { Component } from '@angular/core';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\nimport { EventType } from 'jslib-common/enums/eventType';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { TotpService } from 'jslib-common/abstractions/totp.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { AddEditComponent as BaseAddEditComponent } from 'jslib-angular/components/add-edit.component';\nimport { LoginUriView } from 'jslib-common/models/view/loginUriView';\n\n@Component({\n selector: 'app-vault-add-edit',\n templateUrl: 'add-edit.component.html',\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n canAccessPremium: boolean;\n totpCode: string;\n totpCodeFormatted: string;\n totpDash: number;\n totpSec: number;\n totpLow: boolean;\n showRevisionDate = false;\n hasPasswordHistory = false;\n viewingPasswordHistory = false;\n viewOnly = false;\n\n protected totpInterval: number;\n\n constructor(cipherService: CipherService, folderService: FolderService,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n auditService: AuditService, stateService: StateService,\n userService: UserService, collectionService: CollectionService,\n protected totpService: TotpService, protected passwordGenerationService: PasswordGenerationService,\n protected messagingService: MessagingService, eventService: EventService,\n protected policyService: PolicyService) {\n super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, messagingService, eventService, policyService);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n await this.load();\n this.showRevisionDate = this.cipher.passwordRevisionDisplayDate != null;\n this.hasPasswordHistory = this.cipher.hasPasswordHistory;\n this.cleanUp();\n\n this.canAccessPremium = await this.userService.canAccessPremium();\n if (this.cipher.type === CipherType.Login && this.cipher.login.totp &&\n (this.cipher.organizationUseTotp || this.canAccessPremium)) {\n await this.totpUpdateCode();\n const interval = this.totpService.getTimeInterval(this.cipher.login.totp);\n await this.totpTick(interval);\n\n this.totpInterval = window.setInterval(async () => {\n await this.totpTick(interval);\n }, 1000);\n }\n }\n\n toggleFavorite() {\n this.cipher.favorite = !this.cipher.favorite;\n }\n\n launch(uri: LoginUriView) {\n if (!uri.canLaunch) {\n return;\n }\n\n this.platformUtilsService.launchUri(uri.launchUri);\n }\n\n copy(value: string, typeI18nKey: string, aType: string) {\n if (value == null) {\n return;\n }\n\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t(typeI18nKey)));\n\n if (this.editMode) {\n if (typeI18nKey === 'password') {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, this.cipherId);\n } else if (typeI18nKey === 'securityCode') {\n this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, this.cipherId);\n } else if (aType === 'H_Field') {\n this.eventService.collect(EventType.Cipher_ClientCopiedHiddenField, this.cipherId);\n }\n }\n }\n\n async generatePassword(): Promise {\n const confirmed = await super.generatePassword();\n if (confirmed) {\n const options = (await this.passwordGenerationService.getOptions())[0];\n this.cipher.login.password = await this.passwordGenerationService.generatePassword(options);\n }\n return confirmed;\n }\n\n premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n\n upgradeOrganization() {\n this.messagingService.send('upgradeOrganization', { organizationId: this.cipher.organizationId });\n }\n\n viewHistory() {\n this.viewingPasswordHistory = !this.viewingPasswordHistory;\n }\n\n protected cleanUp() {\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n }\n\n protected async totpUpdateCode() {\n if (this.cipher == null || this.cipher.type !== CipherType.Login || this.cipher.login.totp == null) {\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n return;\n }\n\n this.totpCode = await this.totpService.getCode(this.cipher.login.totp);\n if (this.totpCode != null) {\n if (this.totpCode.length > 4) {\n const half = Math.floor(this.totpCode.length / 2);\n this.totpCodeFormatted = this.totpCode.substring(0, half) + ' ' + this.totpCode.substring(half);\n } else {\n this.totpCodeFormatted = this.totpCode;\n }\n } else {\n this.totpCodeFormatted = null;\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n }\n }\n\n protected allowOwnershipAssignment() {\n return (!this.editMode || this.cloneMode) && this.ownershipOptions != null\n && (this.ownershipOptions.length > 1 || !this.allowPersonal);\n }\n\n private async totpTick(intervalSeconds: number) {\n const epoch = Math.round(new Date().getTime() / 1000.0);\n const mod = epoch % intervalSeconds;\n\n this.totpSec = intervalSeconds - mod;\n this.totpDash = +(Math.round((((78.6 / intervalSeconds) * mod) + 'e+2') as any) + 'e-2');\n this.totpLow = this.totpSec <= 7;\n if (mod === 0) {\n await this.totpUpdateCode();\n }\n }\n}\n","

{{title}}

{{'personalOwnershipPolicyInEffect' | i18n}}
{{totpSec}} {{totpCodeFormatted}}
{{'newUri' | i18n}}

{{'customFields' | i18n}}

{{'newCustomField' | i18n}}

{{'ownership' | i18n}}

{{'collections' | i18n}}

{{'noCollectionsInList' | i18n}}
{{'dateUpdated' | i18n}}: {{cipher.revisionDate | date:'medium'}}
{{'datePasswordUpdated' | i18n}}: {{cipher.passwordRevisionDisplayDate | date:'medium'}}
{{'passwordHistory' | i18n}}: {{cipher.passwordHistory.length}}
{{ph.lastUsedDate | date:'short'}} - {{ph.password}}

{{'options' | i18n}}

","import { Importer } from '../importers/importer';\n\nexport interface ImportOption {\n id: string;\n name: string;\n}\nexport abstract class ImportService {\n featuredImportOptions: ImportOption[];\n regularImportOptions: ImportOption[];\n getImportOptions: () => ImportOption[];\n import: (importer: Importer, fileContents: string, organizationId?: string) => Promise;\n getImporter: (format: string, organizationId: string) => Importer;\n}\n","import { AttachmentResponse } from './attachmentResponse';\nimport { BaseResponse } from './baseResponse';\nimport { PasswordHistoryResponse } from './passwordHistoryResponse';\n\nimport { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CardApi } from '../api/cardApi';\nimport { FieldApi } from '../api/fieldApi';\nimport { IdentityApi } from '../api/identityApi';\nimport { LoginApi } from '../api/loginApi';\nimport { SecureNoteApi } from '../api/secureNoteApi';\n\nexport class CipherResponse extends BaseResponse {\n id: string;\n organizationId: string;\n folderId: string;\n type: number;\n name: string;\n notes: string;\n fields: FieldApi[];\n login: LoginApi;\n card: CardApi;\n identity: IdentityApi;\n secureNote: SecureNoteApi;\n favorite: boolean;\n edit: boolean;\n viewPassword: boolean;\n organizationUseTotp: boolean;\n revisionDate: string;\n attachments: AttachmentResponse[];\n passwordHistory: PasswordHistoryResponse[];\n collectionIds: string[];\n deletedDate: string;\n reprompt: CipherRepromptType;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.folderId = this.getResponseProperty('FolderId') || null;\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n this.notes = this.getResponseProperty('Notes');\n this.favorite = this.getResponseProperty('Favorite') || false;\n this.edit = !!this.getResponseProperty('Edit');\n if (this.getResponseProperty('ViewPassword') == null) {\n this.viewPassword = true;\n } else {\n this.viewPassword = this.getResponseProperty('ViewPassword');\n }\n this.organizationUseTotp = this.getResponseProperty('OrganizationUseTotp');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n this.collectionIds = this.getResponseProperty('CollectionIds');\n this.deletedDate = this.getResponseProperty('DeletedDate');\n\n const login = this.getResponseProperty('Login');\n if (login != null) {\n this.login = new LoginApi(login);\n }\n\n const card = this.getResponseProperty('Card');\n if (card != null) {\n this.card = new CardApi(card);\n }\n\n const identity = this.getResponseProperty('Identity');\n if (identity != null) {\n this.identity = new IdentityApi(identity);\n }\n\n const secureNote = this.getResponseProperty('SecureNote');\n if (secureNote != null) {\n this.secureNote = new SecureNoteApi(secureNote);\n }\n\n const fields = this.getResponseProperty('Fields');\n if (fields != null) {\n this.fields = fields.map((f: any) => new FieldApi(f));\n }\n\n const attachments = this.getResponseProperty('Attachments');\n if (attachments != null) {\n this.attachments = attachments.map((a: any) => new AttachmentResponse(a));\n }\n\n const passwordHistory = this.getResponseProperty('PasswordHistory');\n if (passwordHistory != null) {\n this.passwordHistory = passwordHistory.map((h: any) => new PasswordHistoryResponse(h));\n }\n\n this.reprompt = this.getResponseProperty('Reprompt') || CipherRepromptType.None;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { TotpService } from 'jslib-common/abstractions/totp.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CiphersComponent as BaseCiphersComponent } from 'jslib-angular/components/ciphers.component';\n\nimport { CipherRepromptType } from 'jslib-common/enums/cipherRepromptType';\nimport { CipherType } from 'jslib-common/enums/cipherType';\nimport { EventType } from 'jslib-common/enums/eventType';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nconst MaxCheckedCount = 500;\n\n@Component({\n selector: 'app-vault-ciphers',\n templateUrl: 'ciphers.component.html',\n})\nexport class CiphersComponent extends BaseCiphersComponent implements OnDestroy {\n @Input() showAddNew = true;\n @Output() onAttachmentsClicked = new EventEmitter();\n @Output() onShareClicked = new EventEmitter();\n @Output() onCollectionsClicked = new EventEmitter();\n @Output() onCloneClicked = new EventEmitter();\n\n cipherType = CipherType;\n actionPromise: Promise;\n userHasPremiumAccess = false;\n\n constructor(searchService: SearchService, protected toasterService: ToasterService,\n protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected cipherService: CipherService, protected eventService: EventService,\n protected totpService: TotpService, protected userService: UserService,\n protected passwordRepromptService: PasswordRepromptService) {\n super(searchService);\n this.pageSize = 200;\n }\n\n async ngOnInit() {\n this.userHasPremiumAccess = await this.userService.canAccessPremium();\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n launch(uri: string) {\n this.platformUtilsService.launchUri(uri);\n }\n\n async attachments(c: CipherView) {\n if (!await this.repromptCipher(c)) {\n return;\n }\n this.onAttachmentsClicked.emit(c);\n }\n\n async share(c: CipherView) {\n if (!await this.repromptCipher(c)) {\n return;\n }\n this.onShareClicked.emit(c);\n }\n\n collections(c: CipherView) {\n this.onCollectionsClicked.emit(c);\n }\n\n async clone(c: CipherView) {\n if (!await this.repromptCipher(c)) {\n return;\n }\n this.onCloneClicked.emit(c);\n }\n\n async delete(c: CipherView): Promise {\n if (!await this.repromptCipher(c)) {\n return;\n }\n if (this.actionPromise != null) {\n return;\n }\n const permanent = c.isDeleted;\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(permanent ? 'permanentlyDeleteItemConfirmation' : 'deleteItemConfirmation'),\n this.i18nService.t(permanent ? 'permanentlyDeleteItem' : 'deleteItem'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.deleteCipher(c.id, permanent);\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t(permanent ? 'permanentlyDeletedItem'\n : 'deletedItem'));\n this.refresh();\n } catch { }\n this.actionPromise = null;\n }\n\n async restore(c: CipherView): Promise {\n if (this.actionPromise != null || !c.isDeleted) {\n return;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('restoreItemConfirmation'),\n this.i18nService.t('restoreItem'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.cipherService.restoreWithServer(c.id);\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('restoredItem'));\n this.refresh();\n } catch { }\n this.actionPromise = null;\n }\n\n async copy(cipher: CipherView, value: string, typeI18nKey: string, aType: string) {\n if (this.passwordRepromptService.protectedFields().includes(aType) && !await this.repromptCipher(cipher)) {\n return;\n }\n\n if (value == null || aType === 'TOTP' && !this.displayTotpCopyButton(cipher)) {\n return;\n } else if (value === cipher.login.totp) {\n value = await this.totpService.getCode(value);\n }\n\n if (!cipher.viewPassword) {\n return;\n }\n\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.toasterService.popAsync('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t(typeI18nKey)));\n\n if (typeI18nKey === 'password' || typeI18nKey === 'verificationCodeTotp') {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, cipher.id);\n } else if (typeI18nKey === 'securityCode') {\n this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, cipher.id);\n }\n }\n\n selectAll(select: boolean) {\n if (select) {\n this.selectAll(false);\n }\n const selectCount = select && this.ciphers.length > MaxCheckedCount\n ? MaxCheckedCount\n : this.ciphers.length;\n for (let i = 0; i < selectCount; i++) {\n this.checkCipher(this.ciphers[i], select);\n }\n }\n\n checkCipher(c: CipherView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n getSelected(): CipherView[] {\n if (this.ciphers == null) {\n return [];\n }\n return this.ciphers.filter(c => !!(c as any).checked);\n }\n\n getSelectedIds(): string[] {\n return this.getSelected().map(c => c.id);\n }\n\n displayTotpCopyButton(cipher: CipherView) {\n return (cipher?.login?.hasTotp ?? false) &&\n (cipher.organizationUseTotp || this.userHasPremiumAccess);\n }\n\n async selectCipher(cipher: CipherView) {\n if (await this.repromptCipher(cipher)) {\n super.selectCipher(cipher);\n }\n }\n\n protected deleteCipher(id: string, permanent: boolean) {\n return permanent ? this.cipherService.deleteWithServer(id) : this.cipherService.softDeleteWithServer(id);\n }\n\n protected showFixOldAttachments(c: CipherView) {\n return c.hasOldAttachments && c.organizationId == null;\n }\n\n protected async repromptCipher(c: CipherView) {\n return c.reprompt === CipherRepromptType.None || await this.passwordRepromptService.showPasswordPrompt();\n }\n}\n","
{{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}} {{'attachmentsNeedFix' | i18n}}
{{c.subTitle}}
{{'loading' | i18n}}

{{'noItemsInList' | i18n}}

","export enum EncryptionType {\n AesCbc256_B64 = 0,\n AesCbc128_HmacSha256_B64 = 1,\n AesCbc256_HmacSha256_B64 = 2,\n Rsa2048_OaepSha256_B64 = 3,\n Rsa2048_OaepSha1_B64 = 4,\n Rsa2048_OaepSha256_HmacSha256_B64 = 5,\n Rsa2048_OaepSha1_HmacSha256_B64 = 6,\n}\n","export enum HashPurpose {\n ServerAuthorization = 1,\n LocalAuthorization = 2,\n}\n","export class KeysRequest {\n publicKey: string;\n encryptedPrivateKey: string;\n\n constructor(publicKey: string, encryptedPrivateKey: string) {\n this.publicKey = publicKey;\n this.encryptedPrivateKey = encryptedPrivateKey;\n }\n}\n","import { PolicyResponse } from '../response/policyResponse';\n\nimport { PolicyType } from '../../enums/policyType';\n\nexport class PolicyData {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(response: PolicyResponse) {\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.type = response.type;\n this.data = response.data;\n this.enabled = response.enabled;\n }\n}\n","import { HashPurpose } from '../enums/hashPurpose';\nimport { KdfType } from '../enums/kdfType';\nimport { TwoFactorProviderType } from '../enums/twoFactorProviderType';\n\nimport { AuthResult } from '../models/domain/authResult';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { DeviceRequest } from '../models/request/deviceRequest';\nimport { KeysRequest } from '../models/request/keysRequest';\nimport { PreloginRequest } from '../models/request/preloginRequest';\nimport { TokenRequest } from '../models/request/tokenRequest';\n\nimport { IdentityTokenResponse } from '../models/response/identityTokenResponse';\nimport { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { AppIdService } from '../abstractions/appId.service';\nimport { AuthService as AuthServiceAbstraction } from '../abstractions/auth.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { LogService } from '../abstractions/log.service';\nimport { MessagingService } from '../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService } from '../abstractions/user.service';\nimport { VaultTimeoutService } from '../abstractions/vaultTimeout.service';\n\nexport const TwoFactorProviders = {\n [TwoFactorProviderType.Authenticator]: {\n type: TwoFactorProviderType.Authenticator,\n name: null as string,\n description: null as string,\n priority: 1,\n sort: 1,\n premium: false,\n },\n [TwoFactorProviderType.Yubikey]: {\n type: TwoFactorProviderType.Yubikey,\n name: null as string,\n description: null as string,\n priority: 3,\n sort: 2,\n premium: true,\n },\n [TwoFactorProviderType.Duo]: {\n type: TwoFactorProviderType.Duo,\n name: 'Duo',\n description: null as string,\n priority: 2,\n sort: 3,\n premium: true,\n },\n [TwoFactorProviderType.OrganizationDuo]: {\n type: TwoFactorProviderType.OrganizationDuo,\n name: 'Duo (Organization)',\n description: null as string,\n priority: 10,\n sort: 4,\n premium: false,\n },\n [TwoFactorProviderType.Email]: {\n type: TwoFactorProviderType.Email,\n name: null as string,\n description: null as string,\n priority: 0,\n sort: 6,\n premium: false,\n },\n [TwoFactorProviderType.WebAuthn]: {\n type: TwoFactorProviderType.WebAuthn,\n name: null as string,\n description: null as string,\n priority: 4,\n sort: 5,\n premium: true,\n },\n};\n\nexport class AuthService implements AuthServiceAbstraction {\n email: string;\n masterPasswordHash: string;\n localMasterPasswordHash: string;\n code: string;\n codeVerifier: string;\n ssoRedirectUrl: string;\n clientId: string;\n clientSecret: string;\n twoFactorProvidersData: Map;\n selectedTwoFactorProviderType: TwoFactorProviderType = null;\n\n private key: SymmetricCryptoKey;\n\n constructor(private cryptoService: CryptoService, protected apiService: ApiService,\n private userService: UserService, protected tokenService: TokenService,\n protected appIdService: AppIdService, private i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, private messagingService: MessagingService,\n private vaultTimeoutService: VaultTimeoutService, private logService: LogService,\n private setCryptoKeys = true) {\n }\n\n init() {\n TwoFactorProviders[TwoFactorProviderType.Email].name = this.i18nService.t('emailTitle');\n TwoFactorProviders[TwoFactorProviderType.Email].description = this.i18nService.t('emailDesc');\n\n TwoFactorProviders[TwoFactorProviderType.Authenticator].name = this.i18nService.t('authenticatorAppTitle');\n TwoFactorProviders[TwoFactorProviderType.Authenticator].description =\n this.i18nService.t('authenticatorAppDesc');\n\n TwoFactorProviders[TwoFactorProviderType.Duo].description = this.i18nService.t('duoDesc');\n\n TwoFactorProviders[TwoFactorProviderType.OrganizationDuo].name =\n 'Duo (' + this.i18nService.t('organization') + ')';\n TwoFactorProviders[TwoFactorProviderType.OrganizationDuo].description =\n this.i18nService.t('duoOrganizationDesc');\n\n TwoFactorProviders[TwoFactorProviderType.WebAuthn].name = this.i18nService.t('webAuthnTitle');\n TwoFactorProviders[TwoFactorProviderType.WebAuthn].description = this.i18nService.t('webAuthnDesc');\n\n TwoFactorProviders[TwoFactorProviderType.Yubikey].name = this.i18nService.t('yubiKeyTitle');\n TwoFactorProviders[TwoFactorProviderType.Yubikey].description = this.i18nService.t('yubiKeyDesc');\n }\n\n async logIn(email: string, masterPassword: string): Promise {\n this.selectedTwoFactorProviderType = null;\n const key = await this.makePreloginKey(masterPassword, email);\n const hashedPassword = await this.cryptoService.hashPassword(masterPassword, key);\n const localHashedPassword = await this.cryptoService.hashPassword(masterPassword, key,\n HashPurpose.LocalAuthorization);\n return await this.logInHelper(email, hashedPassword, localHashedPassword, null, null, null, null, null,\n key, null, null, null);\n }\n\n async logInSso(code: string, codeVerifier: string, redirectUrl: string): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, null, code, codeVerifier, redirectUrl, null, null,\n null, null, null, null);\n }\n\n async logInApiKey(clientId: string, clientSecret: string): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, null, null, null, null, clientId, clientSecret,\n null, null, null, null);\n }\n\n async logInTwoFactor(twoFactorProvider: TwoFactorProviderType, twoFactorToken: string,\n remember?: boolean): Promise {\n return await this.logInHelper(this.email, this.masterPasswordHash, this.localMasterPasswordHash, this.code,\n this.codeVerifier, this.ssoRedirectUrl, this.clientId, this.clientSecret, this.key, twoFactorProvider,\n twoFactorToken, remember);\n }\n\n async logInComplete(email: string, masterPassword: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean): Promise {\n this.selectedTwoFactorProviderType = null;\n const key = await this.makePreloginKey(masterPassword, email);\n const hashedPassword = await this.cryptoService.hashPassword(masterPassword, key);\n const localHashedPassword = await this.cryptoService.hashPassword(masterPassword, key,\n HashPurpose.LocalAuthorization);\n return await this.logInHelper(email, hashedPassword, localHashedPassword, null, null, null, null, null, key,\n twoFactorProvider, twoFactorToken, remember);\n }\n\n async logInSsoComplete(code: string, codeVerifier: string, redirectUrl: string,\n twoFactorProvider: TwoFactorProviderType, twoFactorToken: string, remember?: boolean): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, null, code, codeVerifier, redirectUrl, null,\n null, null, twoFactorProvider, twoFactorToken, remember);\n }\n\n async logInApiKeyComplete(clientId: string, clientSecret: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, null, null, null, null, clientId, clientSecret, null,\n twoFactorProvider, twoFactorToken, remember);\n }\n\n logOut(callback: Function) {\n callback();\n this.messagingService.send('loggedOut');\n }\n\n getSupportedTwoFactorProviders(win: Window): any[] {\n const providers: any[] = [];\n if (this.twoFactorProvidersData == null) {\n return providers;\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.OrganizationDuo) &&\n this.platformUtilsService.supportsDuo()) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.OrganizationDuo]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Authenticator)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Authenticator]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Yubikey)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Yubikey]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Duo) && this.platformUtilsService.supportsDuo()) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Duo]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.WebAuthn) && this.platformUtilsService.supportsWebAuthn(win)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.WebAuthn]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Email)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Email]);\n }\n\n return providers;\n }\n\n getDefaultTwoFactorProvider(webAuthnSupported: boolean): TwoFactorProviderType {\n if (this.twoFactorProvidersData == null) {\n return null;\n }\n\n if (this.selectedTwoFactorProviderType != null &&\n this.twoFactorProvidersData.has(this.selectedTwoFactorProviderType)) {\n return this.selectedTwoFactorProviderType;\n }\n\n let providerType: TwoFactorProviderType = null;\n let providerPriority = -1;\n this.twoFactorProvidersData.forEach((value, type) => {\n const provider = (TwoFactorProviders as any)[type];\n if (provider != null && provider.priority > providerPriority) {\n if (type === TwoFactorProviderType.WebAuthn && !webAuthnSupported) {\n return;\n }\n\n providerType = type;\n providerPriority = provider.priority;\n }\n });\n\n return providerType;\n }\n\n async makePreloginKey(masterPassword: string, email: string): Promise {\n email = email.trim().toLowerCase();\n let kdf: KdfType = null;\n let kdfIterations: number = null;\n try {\n const preloginResponse = await this.apiService.postPrelogin(new PreloginRequest(email));\n if (preloginResponse != null) {\n kdf = preloginResponse.kdf;\n kdfIterations = preloginResponse.kdfIterations;\n }\n } catch (e) {\n if (e == null || e.statusCode !== 404) {\n throw e;\n }\n }\n return this.cryptoService.makeKey(masterPassword, email, kdf, kdfIterations);\n }\n\n authingWithApiKey(): boolean {\n return this.clientId != null && this.clientSecret != null;\n }\n\n authingWithSso(): boolean {\n return this.code != null && this.codeVerifier != null && this.ssoRedirectUrl != null;\n }\n\n authingWithPassword(): boolean {\n return this.email != null && this.masterPasswordHash != null;\n }\n\n private async logInHelper(email: string, hashedPassword: string, localHashedPassword: string, code: string,\n codeVerifier: string, redirectUrl: string, clientId: string, clientSecret: string, key: SymmetricCryptoKey,\n twoFactorProvider?: TwoFactorProviderType, twoFactorToken?: string, remember?: boolean): Promise {\n const storedTwoFactorToken = await this.tokenService.getTwoFactorToken(email);\n const appId = await this.appIdService.getAppId();\n const deviceRequest = new DeviceRequest(appId, this.platformUtilsService);\n\n let emailPassword: string[] = [];\n let codeCodeVerifier: string[] = [];\n let clientIdClientSecret: string[] = [];\n\n if (email != null && hashedPassword != null) {\n emailPassword = [email, hashedPassword];\n } else {\n emailPassword = null;\n }\n if (code != null && codeVerifier != null && redirectUrl != null) {\n codeCodeVerifier = [code, codeVerifier, redirectUrl];\n } else {\n codeCodeVerifier = null;\n }\n if (clientId != null && clientSecret != null) {\n clientIdClientSecret = [clientId, clientSecret];\n } else {\n clientIdClientSecret = null;\n }\n\n let request: TokenRequest;\n if (twoFactorToken != null && twoFactorProvider != null) {\n request = new TokenRequest(emailPassword, codeCodeVerifier, clientIdClientSecret, twoFactorProvider,\n twoFactorToken, remember, deviceRequest);\n } else if (storedTwoFactorToken != null) {\n request = new TokenRequest(emailPassword, codeCodeVerifier, clientIdClientSecret, TwoFactorProviderType.Remember,\n storedTwoFactorToken, false, deviceRequest);\n } else {\n request = new TokenRequest(emailPassword, codeCodeVerifier, clientIdClientSecret, null,\n null, false, deviceRequest);\n }\n\n const response = await this.apiService.postIdentityToken(request);\n\n this.clearState();\n const result = new AuthResult();\n result.twoFactor = !(response as any).accessToken;\n\n if (result.twoFactor) {\n // two factor required\n const twoFactorResponse = response as IdentityTwoFactorResponse;\n this.email = email;\n this.masterPasswordHash = hashedPassword;\n this.localMasterPasswordHash = localHashedPassword;\n this.code = code;\n this.codeVerifier = codeVerifier;\n this.ssoRedirectUrl = redirectUrl;\n this.clientId = clientId;\n this.clientSecret = clientSecret;\n this.key = this.setCryptoKeys ? key : null;\n this.twoFactorProvidersData = twoFactorResponse.twoFactorProviders2;\n result.twoFactorProviders = twoFactorResponse.twoFactorProviders2;\n return result;\n }\n\n const tokenResponse = response as IdentityTokenResponse;\n result.resetMasterPassword = tokenResponse.resetMasterPassword;\n if (tokenResponse.twoFactorToken != null) {\n await this.tokenService.setTwoFactorToken(tokenResponse.twoFactorToken, email);\n }\n\n await this.tokenService.setTokens(tokenResponse.accessToken, tokenResponse.refreshToken);\n await this.userService.setInformation(this.tokenService.getUserId(), this.tokenService.getEmail(),\n tokenResponse.kdf, tokenResponse.kdfIterations);\n if (this.setCryptoKeys) {\n if (key != null) {\n await this.cryptoService.setKey(key);\n }\n if (localHashedPassword != null) {\n await this.cryptoService.setKeyHash(localHashedPassword);\n }\n\n // Skip this step during SSO new user flow. No key is returned from server.\n if (code == null || tokenResponse.key != null) {\n await this.cryptoService.setEncKey(tokenResponse.key);\n\n // User doesn't have a key pair yet (old account), let's generate one for them\n if (tokenResponse.privateKey == null) {\n try {\n const keyPair = await this.cryptoService.makeKeyPair();\n await this.apiService.postAccountKeys(new KeysRequest(keyPair[0], keyPair[1].encryptedString));\n tokenResponse.privateKey = keyPair[1].encryptedString;\n } catch (e) {\n // tslint:disable-next-line\n this.logService.error(e);\n }\n }\n\n await this.cryptoService.setEncPrivateKey(tokenResponse.privateKey);\n }\n }\n\n if (this.vaultTimeoutService != null) {\n this.vaultTimeoutService.biometricLocked = false;\n }\n this.messagingService.send('loggedIn');\n return result;\n }\n\n private clearState(): void {\n this.key = null;\n this.email = null;\n this.masterPasswordHash = null;\n this.localMasterPasswordHash = null;\n this.code = null;\n this.codeVerifier = null;\n this.ssoRedirectUrl = null;\n this.clientId = null;\n this.clientSecret = null;\n this.twoFactorProvidersData = null;\n this.selectedTwoFactorProviderType = null;\n }\n}\n","export class SelectionReadOnlyRequest {\n id: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(id: string, readOnly: boolean, hidePasswords: boolean) {\n this.id = id;\n this.readOnly = readOnly;\n this.hidePasswords = hidePasswords;\n }\n}\n","export enum DeviceType {\n Android = 0,\n iOS = 1,\n ChromeExtension = 2,\n FirefoxExtension = 3,\n OperaExtension = 4,\n EdgeExtension = 5,\n WindowsDesktop = 6,\n MacOsDesktop = 7,\n LinuxDesktop = 8,\n ChromeBrowser = 9,\n FirefoxBrowser = 10,\n OperaBrowser = 11,\n EdgeBrowser = 12,\n IEBrowser = 13,\n UnknownBrowser = 14,\n AndroidAmazon = 15,\n UWP = 16,\n SafariBrowser = 17,\n VivaldiBrowser = 18,\n VivaldiExtension = 19,\n SafariExtension = 20,\n}\n","export abstract class SettingsService {\n clearCache: () => void;\n getEquivalentDomains: () => Promise;\n setEquivalentDomains: (equivalentDomains: string[][]) => Promise;\n clear: (userId: string) => Promise;\n}\n","export enum PlanType {\n Free = 0,\n FamiliesAnnually2019 = 1,\n TeamsMonthly2019 = 2,\n TeamsAnnually2019 = 3,\n EnterpriseMonthly2019 = 4,\n EnterpriseAnnually2019 = 5,\n Custom = 6,\n FamiliesAnnually = 7,\n TeamsMonthly = 8,\n TeamsAnnually = 9,\n EnterpriseMonthly = 10,\n EnterpriseAnnually = 11,\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { PaymentMethodType } from 'jslib-common/enums/paymentMethodType';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { PaymentComponent } from './payment.component';\nimport { TaxInfoComponent } from './tax-info.component';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { OrganizationUserType } from 'jslib-common/enums/organizationUserType';\nimport { PlanType } from 'jslib-common/enums/planType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { ProductType } from 'jslib-common/enums/productType';\n\nimport { OrganizationCreateRequest } from 'jslib-common/models/request/organizationCreateRequest';\nimport { OrganizationKeysRequest } from 'jslib-common/models/request/organizationKeysRequest';\nimport { OrganizationUpgradeRequest } from 'jslib-common/models/request/organizationUpgradeRequest';\n\nimport { PlanResponse } from 'jslib-common/models/response/planResponse';\n\n@Component({\n selector: 'app-organization-plans',\n templateUrl: 'organization-plans.component.html',\n})\nexport class OrganizationPlansComponent implements OnInit {\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent) taxComponent: TaxInfoComponent;\n\n @Input() organizationId: string;\n @Input() showFree = true;\n @Input() showCancel = false;\n @Input() product: ProductType = ProductType.Free;\n @Input() plan: PlanType = PlanType.Free;\n @Output() onSuccess = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n loading: boolean = true;\n selfHosted: boolean = false;\n ownedBusiness: boolean = false;\n premiumAccessAddon: boolean = false;\n additionalStorage: number = 0;\n additionalSeats: number = 0;\n name: string;\n billingEmail: string;\n businessName: string;\n productTypes = ProductType;\n formPromise: Promise;\n singleOrgPolicyBlock: boolean = false;\n freeTrial: boolean = false;\n\n plans: PlanResponse[];\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService, private router: Router, private syncService: SyncService,\n private policyService: PolicyService, private userService: UserService) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n if (!this.selfHosted) {\n const plans = await this.apiService.getPlans();\n this.plans = plans.data;\n if (this.product === ProductType.Enterprise || this.product === ProductType.Teams) {\n this.ownedBusiness = true;\n }\n }\n this.loading = false;\n }\n\n get createOrganization() {\n return this.organizationId == null;\n }\n\n get selectedPlan() {\n return this.plans.find(plan => plan.type === this.plan);\n }\n\n get selectedPlanInterval() {\n return this.selectedPlan.isAnnual\n ? 'year'\n : 'month';\n }\n\n get selectableProducts() {\n let validPlans = this.plans.filter(plan => plan.type !== PlanType.Custom);\n\n if (this.ownedBusiness) {\n validPlans = validPlans.filter(plan => plan.canBeUsedByBusiness);\n }\n\n if (!this.showFree) {\n validPlans = validPlans.filter(plan => plan.product !== ProductType.Free);\n }\n\n validPlans = validPlans\n .filter(plan => !plan.legacyYear\n && !plan.disabled\n && (plan.isAnnual || plan.product === this.productTypes.Free));\n\n return validPlans;\n }\n\n get selectablePlans() {\n return this.plans.filter(plan => !plan.legacyYear && !plan.disabled && plan.product === this.product);\n }\n\n additionalStoragePriceMonthly(selectedPlan: PlanResponse) {\n if (!selectedPlan.isAnnual) {\n return selectedPlan.additionalStoragePricePerGb;\n }\n return selectedPlan.additionalStoragePricePerGb / 12;\n }\n\n seatPriceMonthly(selectedPlan: PlanResponse) {\n if (!selectedPlan.isAnnual) {\n return selectedPlan.seatPrice;\n }\n return selectedPlan.seatPrice / 12;\n }\n\n additionalStorageTotal(plan: PlanResponse): number {\n if (!plan.hasAdditionalStorageOption) {\n return 0;\n }\n\n return plan.additionalStoragePricePerGb * Math.abs(this.additionalStorage || 0);\n }\n\n seatTotal(plan: PlanResponse): number {\n if (!plan.hasAdditionalSeatsOption) {\n return 0;\n }\n\n return plan.seatPrice * Math.abs(this.additionalSeats || 0);\n }\n\n get subtotal() {\n let subTotal = this.selectedPlan.basePrice;\n if (this.selectedPlan.hasAdditionalSeatsOption && this.additionalSeats) {\n subTotal += this.seatTotal(this.selectedPlan);\n }\n if (this.selectedPlan.hasAdditionalStorageOption && this.additionalStorage) {\n subTotal += this.additionalStorageTotal(this.selectedPlan);\n }\n if (this.selectedPlan.hasPremiumAccessOption && this.premiumAccessAddon) {\n subTotal += this.selectedPlan.premiumAccessOptionPrice;\n }\n return subTotal;\n }\n\n get taxCharges() {\n return this.taxComponent != null && this.taxComponent.taxRate != null ?\n (this.taxComponent.taxRate / 100) * this.subtotal :\n 0;\n }\n\n get total() {\n return (this.subtotal + this.taxCharges) || 0;\n }\n\n changedProduct() {\n this.plan = this.selectablePlans[0].type;\n if (!this.selectedPlan.hasPremiumAccessOption) {\n this.premiumAccessAddon = false;\n }\n if (!this.selectedPlan.hasAdditionalStorageOption) {\n this.additionalStorage = 0;\n }\n if (!this.selectedPlan.hasAdditionalSeatsOption) {\n this.additionalSeats = 0;\n } else if (!this.additionalSeats && !this.selectedPlan.baseSeats &&\n this.selectedPlan.hasAdditionalSeatsOption) {\n this.additionalSeats = 1;\n }\n this.freeTrial = this.selectedPlan.trialPeriodDays != null;\n }\n\n changedOwnedBusiness() {\n if (!this.ownedBusiness || this.selectedPlan.canBeUsedByBusiness) {\n return;\n }\n this.product = ProductType.Teams;\n this.plan = PlanType.TeamsAnnually;\n }\n\n changedCountry() {\n this.paymentComponent.hideBank = this.taxComponent.taxInfo.country !== 'US';\n // Bank Account payments are only available for US customers\n if (this.paymentComponent.hideBank &&\n this.paymentComponent.method === PaymentMethodType.BankAccount) {\n this.paymentComponent.method = PaymentMethodType.Card;\n this.paymentComponent.changeMethod();\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n async submit() {\n if (this.singleOrgPolicyBlock) {\n return;\n } else {\n const policies = await this.policyService.getAll(PolicyType.SingleOrg);\n const orgs = await this.userService.getAllOrganizations();\n\n const orgsWithSingleOrgPolicy = policies\n .filter(p => p.enabled && p.type === PolicyType.SingleOrg)\n .map(p => p.organizationId);\n\n this.singleOrgPolicyBlock = orgs.some(org =>\n org.type !== OrganizationUserType.Owner &&\n org.type !== OrganizationUserType.Admin &&\n org.status !== OrganizationUserStatusType.Invited &&\n orgsWithSingleOrgPolicy.includes(org.id));\n\n if (this.singleOrgPolicyBlock) {\n return;\n }\n }\n\n let files: FileList = null;\n if (this.createOrganization && this.selfHosted) {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n files = fileEl.files;\n if (files == null || files.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n }\n\n try {\n const doSubmit = async () => {\n let orgId: string = null;\n if (this.createOrganization) {\n let tokenResult: [string, PaymentMethodType] = null;\n if (!this.selfHosted && this.plan !== PlanType.Free) {\n tokenResult = await this.paymentComponent.createPaymentToken();\n }\n const shareKey = await this.cryptoService.makeShareKey();\n const key = shareKey[0].encryptedString;\n const collection = await this.cryptoService.encrypt(\n this.i18nService.t('defaultCollection'), shareKey[1]);\n const collectionCt = collection.encryptedString;\n const orgKeys = await this.cryptoService.makeKeyPair(shareKey[1]);\n\n if (this.selfHosted) {\n const fd = new FormData();\n fd.append('license', files[0]);\n fd.append('key', key);\n fd.append('collectionName', collectionCt);\n const response = await this.apiService.postOrganizationLicense(fd);\n orgId = response.id;\n\n // Org Keys live outside of the OrganizationLicense - add the keys to the org here\n const request = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n await this.apiService.postOrganizationKeys(orgId, request);\n } else {\n const request = new OrganizationCreateRequest();\n request.key = key;\n request.collectionName = collectionCt;\n request.name = this.name;\n request.billingEmail = this.billingEmail;\n request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n\n if (this.selectedPlan.type === PlanType.Free) {\n request.planType = PlanType.Free;\n } else {\n request.paymentToken = tokenResult[0];\n request.paymentMethodType = tokenResult[1];\n request.businessName = this.ownedBusiness ? this.businessName : null;\n request.additionalSeats = this.additionalSeats;\n request.additionalStorageGb = this.additionalStorage;\n request.premiumAccessAddon = this.selectedPlan.hasPremiumAccessOption &&\n this.premiumAccessAddon;\n request.planType = this.selectedPlan.type;\n request.billingAddressPostalCode = this.taxComponent.taxInfo.postalCode;\n request.billingAddressCountry = this.taxComponent.taxInfo.country;\n if (this.taxComponent.taxInfo.includeTaxId) {\n request.taxIdNumber = this.taxComponent.taxInfo.taxId;\n request.billingAddressLine1 = this.taxComponent.taxInfo.line1;\n request.billingAddressLine2 = this.taxComponent.taxInfo.line2;\n request.billingAddressCity = this.taxComponent.taxInfo.city;\n request.billingAddressState = this.taxComponent.taxInfo.state;\n }\n }\n const response = await this.apiService.postOrganization(request);\n orgId = response.id;\n }\n } else {\n const request = new OrganizationUpgradeRequest();\n request.businessName = this.ownedBusiness ? this.businessName : null;\n request.additionalSeats = this.additionalSeats;\n request.additionalStorageGb = this.additionalStorage;\n request.premiumAccessAddon = this.selectedPlan.hasPremiumAccessOption &&\n this.premiumAccessAddon;\n request.planType = this.selectedPlan.type;\n request.billingAddressCountry = this.taxComponent.taxInfo.country;\n request.billingAddressPostalCode = this.taxComponent.taxInfo.postalCode;\n\n // Retrieve org info to backfill pub/priv key if necessary\n const org = await this.userService.getOrganization(this.organizationId);\n if (!org.hasPublicAndPrivateKeys) {\n const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId);\n const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey);\n request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n }\n\n const result = await this.apiService.postOrganizationUpgrade(this.organizationId, request);\n if (!result.success && result.paymentIntentClientSecret != null) {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n }\n orgId = this.organizationId;\n }\n\n if (orgId != null) {\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n if (this.createOrganization) {\n this.toasterService.popAsync('success',\n this.i18nService.t('organizationCreated'), this.i18nService.t('organizationReadyToGo'));\n } else {\n this.toasterService.popAsync('success', null, this.i18nService.t('organizationUpgraded'));\n }\n this.router.navigate(['/organizations/' + orgId]);\n }\n };\n\n this.formPromise = doSubmit();\n await this.formPromise;\n this.onSuccess.emit();\n } catch { }\n }\n\n}\n"," {{'loading' | i18n}}

{{'uploadLicenseFileOrg' | i18n}}

{{'licenseFileDesc' | i18n : 'bitwarden_organization_license.json'}}

{{'generalInformation' | i18n}}

{{'chooseYourPlan' | i18n}}

{{'users' | i18n}}

{{'userSeatsHowManyDesc' | i18n}}

{{'addons' | i18n}}

{{'userSeatsAdditionalDesc' | i18n : selectedPlan.baseSeats : (seatPriceMonthly(selectedPlan) | currency:'$')}}
{{'additionalStorageIntervalDesc' | i18n : '1 GB' : (additionalStoragePriceMonthly(selectedPlan) | currency:'$') : ('month' | i18n)}}
{{'premiumAccessDesc' | i18n : (3.33 | currency:'$') : ('month' | i18n)}}

{{'summary' | i18n}}


{{ (createOrganization ? 'paymentInformation' : 'billingInformation') | i18n}}

{{ 'planPrice' | i18n }}: {{ subtotal | currency: 'USD $' }}
{{ 'estimatedTax' | i18n }}: {{ taxCharges | currency: 'USD $' }}

{{'total' | i18n}}: {{total | currency:'USD $'}}/{{selectedPlanInterval | i18n}}

{{'paymentChargedWithTrial' | i18n : (selectedPlanInterval | i18n) }} {{'paymentCharged' | i18n : (selectedPlanInterval | i18n) }}
{{'singleOrgBlockCreateMessage' | i18n}}
","import { CardData } from '../data/cardData';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\n\nimport { CardView } from '../view/cardView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Card extends Domain {\n cardholderName: EncString;\n brand: EncString;\n number: EncString;\n expMonth: EncString;\n expYear: EncString;\n code: EncString;\n\n constructor(obj?: CardData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new CardView(this), {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n }, orgId, encKey);\n }\n\n toCardData(): CardData {\n const c = new CardData();\n this.buildDataModel(this, c, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n });\n return c;\n }\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { FieldData } from '../data/fieldData';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\n\nimport { FieldView } from '../view/fieldView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Field extends Domain {\n name: EncString;\n value: EncString;\n type: FieldType;\n\n constructor(obj?: FieldData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.type = obj.type;\n this.buildDomainModel(this, obj, {\n name: null,\n value: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new FieldView(this), {\n name: null,\n value: null,\n }, orgId, encKey);\n }\n\n toFieldData(): FieldData {\n const f = new FieldData();\n this.buildDataModel(this, f, {\n name: null,\n value: null,\n type: null,\n }, ['type']);\n return f;\n }\n}\n","import { IdentityData } from '../data/identityData';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { IdentityView } from '../view/identityView';\n\nexport class Identity extends Domain {\n title: EncString;\n firstName: EncString;\n middleName: EncString;\n lastName: EncString;\n address1: EncString;\n address2: EncString;\n address3: EncString;\n city: EncString;\n state: EncString;\n postalCode: EncString;\n country: EncString;\n company: EncString;\n email: EncString;\n phone: EncString;\n ssn: EncString;\n username: EncString;\n passportNumber: EncString;\n licenseNumber: EncString;\n\n constructor(obj?: IdentityData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new IdentityView(this), {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n }, orgId, encKey);\n }\n\n toIdentityData(): IdentityData {\n const i = new IdentityData();\n this.buildDataModel(this, i, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n });\n return i;\n }\n}\n","import { LoginUri } from './loginUri';\n\nimport { LoginData } from '../data/loginData';\n\nimport { LoginView } from '../view/loginView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Login extends Domain {\n uris: LoginUri[];\n username: EncString;\n password: EncString;\n passwordRevisionDate?: Date;\n totp: EncString;\n autofillOnPageLoad: boolean;\n\n constructor(obj?: LoginData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.passwordRevisionDate = obj.passwordRevisionDate != null ? new Date(obj.passwordRevisionDate) : null;\n this.autofillOnPageLoad = obj.autofillOnPageLoad;\n this.buildDomainModel(this, obj, {\n username: null,\n password: null,\n totp: null,\n }, alreadyEncrypted, []);\n\n if (obj.uris) {\n this.uris = [];\n obj.uris.forEach(u => {\n this.uris.push(new LoginUri(u, alreadyEncrypted));\n });\n }\n }\n\n async decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(new LoginView(this), {\n username: null,\n password: null,\n totp: null,\n }, orgId, encKey);\n\n if (this.uris != null) {\n view.uris = [];\n for (let i = 0; i < this.uris.length; i++) {\n const uri = await this.uris[i].decrypt(orgId, encKey);\n view.uris.push(uri);\n }\n }\n\n return view;\n }\n\n toLoginData(): LoginData {\n const l = new LoginData();\n l.passwordRevisionDate = this.passwordRevisionDate != null ? this.passwordRevisionDate.toISOString() : null;\n l.autofillOnPageLoad = this.autofillOnPageLoad;\n this.buildDataModel(this, l, {\n username: null,\n password: null,\n totp: null,\n });\n\n if (this.uris != null && this.uris.length > 0) {\n l.uris = [];\n this.uris.forEach(u => {\n l.uris.push(u.toLoginUriData());\n });\n }\n\n return l;\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriData } from '../data/loginUriData';\n\nimport { LoginUriView } from '../view/loginUriView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class LoginUri extends Domain {\n uri: EncString;\n match: UriMatchType;\n\n constructor(obj?: LoginUriData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.match = obj.match;\n this.buildDomainModel(this, obj, {\n uri: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new LoginUriView(this), {\n uri: null,\n }, orgId, encKey);\n }\n\n toLoginUriData(): LoginUriData {\n const u = new LoginUriData();\n this.buildDataModel(this, u, {\n uri: null,\n }, ['match']);\n return u;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteData } from '../data/secureNoteData';\n\nimport Domain from './domainBase';\n\nimport { SecureNoteView } from '../view/secureNoteView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class SecureNote extends Domain {\n type: SecureNoteType;\n\n constructor(obj?: SecureNoteData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.type = obj.type;\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return Promise.resolve(new SecureNoteView(this));\n }\n\n toSecureNoteData(): SecureNoteData {\n const n = new SecureNoteData();\n n.type = this.type;\n return n;\n }\n}\n","import {\n Directive,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n Renderer2,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NgControl,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\n\n// ref: https://juristr.com/blog/2018/02/ng-true-value-directive/\n@Directive({\n selector: 'input[type=checkbox][appTrueFalseValue]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TrueFalseValueDirective),\n multi: true,\n },\n ],\n})\nexport class TrueFalseValueDirective implements ControlValueAccessor {\n @Input() trueValue = true;\n @Input() falseValue = false;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) { }\n\n @HostListener('change', ['$event'])\n onHostChange(ev: any) {\n this.propagateChange(ev.target.checked ? this.trueValue : this.falseValue);\n }\n\n writeValue(obj: any): void {\n if (obj === this.trueValue) {\n this.renderer.setProperty(this.elementRef.nativeElement, 'checked', true);\n } else {\n this.renderer.setProperty(this.elementRef.nativeElement, 'checked', false);\n }\n }\n\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n registerOnTouched(fn: any): void { /* nothing */ }\n\n setDisabledState?(isDisabled: boolean): void { /* nothing */ }\n\n private propagateChange = (_: any) => { /* nothing */ };\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class SelectionReadOnlyResponse extends BaseResponse {\n id: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.readOnly = this.getResponseProperty('ReadOnly');\n this.hidePasswords = this.getResponseProperty('HidePasswords');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { ProfileOrganizationResponse } from './profileOrganizationResponse';\n\nexport class ProfileResponse extends BaseResponse {\n id: string;\n name: string;\n email: string;\n emailVerified: boolean;\n masterPasswordHint: string;\n premium: boolean;\n culture: string;\n twoFactorEnabled: boolean;\n key: string;\n privateKey: string;\n securityStamp: string;\n organizations: ProfileOrganizationResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.emailVerified = this.getResponseProperty('EmailVerified');\n this.masterPasswordHint = this.getResponseProperty('MasterPasswordHint');\n this.premium = this.getResponseProperty('Premium');\n this.culture = this.getResponseProperty('Culture');\n this.twoFactorEnabled = this.getResponseProperty('TwoFactorEnabled');\n this.key = this.getResponseProperty('Key');\n this.privateKey = this.getResponseProperty('PrivateKey');\n this.securityStamp = this.getResponseProperty('SecurityStamp');\n\n const organizations = this.getResponseProperty('Organizations');\n if (organizations != null) {\n this.organizations = organizations.map((o: any) => new ProfileOrganizationResponse(o));\n }\n }\n}\n","import {\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { GroupingsComponent as BaseGroupingsComponent } from 'jslib-angular/components/groupings.component';\n\n@Component({\n selector: 'app-vault-groupings',\n templateUrl: 'groupings.component.html',\n})\nexport class GroupingsComponent extends BaseGroupingsComponent {\n @Output() onSearchTextChanged = new EventEmitter();\n\n searchText: string = '';\n searchPlaceholder: string = null;\n\n constructor(collectionService: CollectionService, folderService: FolderService,\n storageService: StorageService, userService: UserService) {\n super(collectionService, folderService, storageService, userService);\n }\n\n searchTextChanged() {\n this.onSearchTextChanged.emit(this.searchText);\n }\n}\n"," ","import { OrganizationData } from '../data/organizationData';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\n\nexport class Organization {\n id: string;\n name: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useBusinessPortal: boolean;\n useSso: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n hasPublicAndPrivateKeys: boolean;\n\n constructor(obj?: OrganizationData) {\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.name = obj.name;\n this.status = obj.status;\n this.type = obj.type;\n this.enabled = obj.enabled;\n this.usePolicies = obj.usePolicies;\n this.useGroups = obj.useGroups;\n this.useDirectory = obj.useDirectory;\n this.useEvents = obj.useEvents;\n this.useTotp = obj.useTotp;\n this.use2fa = obj.use2fa;\n this.useApi = obj.useApi;\n this.useBusinessPortal = obj.useBusinessPortal;\n this.useSso = obj.useSso;\n this.useResetPassword = obj.useResetPassword;\n this.selfHost = obj.selfHost;\n this.usersGetPremium = obj.usersGetPremium;\n this.seats = obj.seats;\n this.maxCollections = obj.maxCollections;\n this.maxStorageGb = obj.maxStorageGb;\n this.ssoBound = obj.ssoBound;\n this.identifier = obj.identifier;\n this.permissions = obj.permissions;\n this.resetPasswordEnrolled = obj.resetPasswordEnrolled;\n this.userId = obj.userId;\n this.hasPublicAndPrivateKeys = obj.hasPublicAndPrivateKeys;\n }\n\n get canAccess() {\n if (this.type === OrganizationUserType.Owner) {\n return true;\n }\n return this.enabled && this.status === OrganizationUserStatusType.Confirmed;\n }\n\n get isManager() {\n return this.type === OrganizationUserType.Manager || this.type === OrganizationUserType.Owner ||\n this.type === OrganizationUserType.Admin;\n }\n\n get isAdmin() {\n return this.type === OrganizationUserType.Owner || this.type === OrganizationUserType.Admin;\n }\n\n get isOwner() {\n return this.type === OrganizationUserType.Owner;\n }\n\n get canAccessBusinessPortal() {\n return this.isAdmin || this.permissions.accessBusinessPortal;\n }\n\n get canAccessEventLogs() {\n return this.isAdmin || this.permissions.accessEventLogs;\n }\n\n get canAccessImportExport() {\n return this.isAdmin || this.permissions.accessImportExport;\n }\n\n get canAccessReports() {\n return this.isAdmin || this.permissions.accessReports;\n }\n\n get canManageAllCollections() {\n return this.isAdmin || this.permissions.manageAllCollections;\n }\n\n get canManageAssignedCollections() {\n return this.isManager || this.permissions.manageAssignedCollections;\n }\n\n get canManageGroups() {\n return this.isAdmin || this.permissions.manageGroups;\n }\n\n get canManageSso() {\n return this.isAdmin || this.permissions.manageSso;\n }\n\n get canManagePolicies() {\n return this.isAdmin || this.permissions.managePolicies;\n }\n\n get canManageUsers() {\n return this.isAdmin || this.permissions.manageUsers;\n }\n\n get canManageUsersPassword() {\n return this.isAdmin || this.permissions.manageResetPassword;\n }\n}\n","import { View } from './view';\n\nimport { SendFile } from '../domain/sendFile';\n\nexport class SendFileView implements View {\n id: string = null;\n size: string = null;\n sizeName: string = null;\n fileName: string = null;\n\n constructor(f?: SendFile) {\n if (!f) {\n return;\n }\n\n this.id = f.id;\n this.size = f.size;\n this.sizeName = f.sizeName;\n }\n\n get fileSize(): number {\n try {\n if (this.size != null) {\n return parseInt(this.size, null);\n }\n } catch { }\n return 0;\n }\n}\n","import { View } from './view';\n\nimport { SendText } from '../domain/sendText';\n\nexport class SendTextView implements View {\n text: string = null;\n hidden: boolean;\n\n constructor(t?: SendText) {\n if (!t) {\n return;\n }\n\n this.hidden = t.hidden;\n }\n\n get maskedText(): string {\n return this.text != null ? '••••••••' : null;\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { Policy } from 'jslib-common/models/domain/policy';\n\nimport { OrganizationUserResetPasswordEnrollmentRequest } from 'jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\n@Component({\n selector: 'app-organizations',\n templateUrl: 'organizations.component.html',\n})\nexport class OrganizationsComponent implements OnInit {\n @Input() vault = false;\n\n organizations: Organization[];\n policies: Policy[];\n loaded: boolean = false;\n actionPromise: Promise;\n\n constructor(private userService: UserService, private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService, private apiService: ApiService,\n private toasterService: ToasterService, private syncService: SyncService,\n private cryptoService: CryptoService, private policyService: PolicyService) { }\n\n async ngOnInit() {\n if (!this.vault) {\n await this.syncService.fullSync(true);\n await this.load();\n }\n }\n\n async load() {\n const orgs = await this.userService.getAllOrganizations();\n orgs.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.organizations = orgs;\n this.policies = await this.policyService.getAll(PolicyType.ResetPassword);\n this.loaded = true;\n }\n\n allowEnrollmentChanges(org: Organization): boolean {\n if (org.usePolicies && org.useResetPassword && org.hasPublicAndPrivateKeys) {\n return this.policies.some(p => p.organizationId === org.id && p.enabled);\n }\n\n return false;\n }\n\n showEnrolledStatus(org: Organization): boolean {\n return org.useResetPassword && org.resetPasswordEnrolled && this.policies.some(p => p.organizationId === org.id && p.enabled);\n }\n\n async unlinkSso(org: Organization) {\n const confirmed = await this.platformUtilsService.showDialog(\n 'Are you sure you want to unlink SSO for this organization?', org.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.apiService.deleteSsoUser(org.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.toasterService.popAsync('success', null, 'Unlinked SSO');\n await this.load();\n } catch { }\n }\n\n async leave(org: Organization) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('leaveOrganizationConfirmation'), org.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.apiService.postLeaveOrganization(org.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('leftOrganization'));\n await this.load();\n } catch { }\n }\n\n async toggleResetPasswordEnrollment(org: Organization) {\n // Set variables\n let keyString: string = null;\n let toastStringRef = 'withdrawPasswordResetSuccess';\n\n // Enrolling\n if (!org.resetPasswordEnrolled) {\n // Alert user about enrollment\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('resetPasswordEnrollmentWarning'), null,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n // Retrieve Public Key\n this.actionPromise = this.apiService.getOrganizationKeys(org.id)\n .then(async response => {\n if (response == null) {\n throw new Error(this.i18nService.t('resetPasswordOrgKeysError'));\n }\n\n const publicKey = Utils.fromB64ToArray(response.publicKey);\n\n // RSA Encrypt user's encKey.key with organization public key\n const encKey = await this.cryptoService.getEncKey();\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n keyString = encryptedKey.encryptedString;\n toastStringRef = 'enrollPasswordResetSuccess';\n\n // Create request and execute enrollment\n const request = new OrganizationUserResetPasswordEnrollmentRequest();\n request.resetPasswordKey = keyString;\n return this.apiService.putOrganizationUserResetPasswordEnrollment(org.id, org.userId, request);\n })\n .then(() => {\n return this.syncService.fullSync(true);\n });\n } else {\n // Withdrawal\n const request = new OrganizationUserResetPasswordEnrollmentRequest();\n request.resetPasswordKey = keyString;\n this.actionPromise = this.apiService.putOrganizationUserResetPasswordEnrollment(org.id, org.userId, request)\n .then(() => {\n return this.syncService.fullSync(true);\n });\n }\n\n try {\n await this.actionPromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t(toastStringRef));\n await this.load();\n } catch { }\n }\n}\n","

{{'loading' | i18n}}

{{'noOrganizationsList' | i18n}}

{{'newOrganization' | i18n}}

{{'organizations' | i18n}} {{'loading' | i18n}}

{{'newOrganization' | i18n}}
{{'loading' | i18n}}

{{'noOrganizationsList' | i18n}}

{{'newOrganization' | i18n}}
{{o.name}} {{'organizationIsDisabled' | i18n}} {{'enrolledPasswordReset' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\n\n@Component({\n selector: 'app-navbar',\n templateUrl: 'navbar.component.html',\n})\nexport class NavbarComponent implements OnInit {\n selfHosted = false;\n name: string;\n email: string;\n\n constructor(private messagingService: MessagingService, private platformUtilsService: PlatformUtilsService,\n private tokenService: TokenService) {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.name = await this.tokenService.getName();\n this.email = await this.tokenService.getEmail();\n if (this.name == null || this.name.trim() === '') {\n this.name = this.email;\n }\n }\n\n lock() {\n this.messagingService.send('lockVault');\n }\n\n logOut() {\n this.messagingService.send('logout');\n }\n}\n"," ","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-footer',\n templateUrl: 'footer.component.html',\n})\nexport class FooterComponent implements OnInit {\n version: string;\n year: string = '2015';\n\n constructor(private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.year = new Date().getFullYear().toString();\n this.version = await this.platformUtilsService.getApplicationVersion();\n }\n}\n","
© {{year}}, Bitwarden Inc. (Powered by Vaultwarden)
{{'versionNumber' | i18n : version}}
","export class OrganizationUserResetPasswordEnrollmentRequest {\n resetPasswordKey: string;\n}\n","import { PolicyData } from '../data/policyData';\n\nimport Domain from './domainBase';\n\nimport { PolicyType } from '../../enums/policyType';\n\nexport class Policy extends Domain {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(obj?: PolicyData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.organizationId = obj.organizationId;\n this.type = obj.type;\n this.data = obj.data;\n this.enabled = obj.enabled;\n }\n}\n","import { Directive, OnInit } from '@angular/core';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { MasterPasswordPolicyOptions } from 'jslib-common/models/domain/masterPasswordPolicyOptions';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { KdfType } from 'jslib-common/enums/kdfType';\n\n@Directive()\nexport class ChangePasswordComponent implements OnInit {\n masterPassword: string;\n masterPasswordRetype: string;\n formPromise: Promise;\n masterPasswordScore: number;\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n\n protected email: string;\n protected kdf: KdfType;\n protected kdfIterations: number;\n\n private masterPasswordStrengthTimeout: any;\n\n constructor(protected i18nService: I18nService, protected cryptoService: CryptoService,\n protected messagingService: MessagingService, protected userService: UserService,\n protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService, protected policyService: PolicyService) { }\n\n async ngOnInit() {\n this.email = await this.userService.getEmail();\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions();\n }\n\n getPasswordScoreAlertDisplay() {\n if (this.enforcedPolicyOptions == null) {\n return '';\n }\n\n let str: string;\n switch (this.enforcedPolicyOptions.minComplexity) {\n case 4:\n str = this.i18nService.t('strong');\n break;\n case 3:\n str = this.i18nService.t('good');\n break;\n default:\n str = this.i18nService.t('weak');\n break;\n }\n return str + ' (' + this.enforcedPolicyOptions.minComplexity + ')';\n }\n\n async submit() {\n if (!await this.strongPassword()) {\n return;\n }\n\n if (!await this.setupSubmitActions()) {\n return;\n }\n\n const email = await this.userService.getEmail();\n if (this.kdf == null) {\n this.kdf = await this.userService.getKdf();\n }\n if (this.kdfIterations == null) {\n this.kdfIterations = await this.userService.getKdfIterations();\n }\n const key = await this.cryptoService.makeKey(this.masterPassword, email.trim().toLowerCase(),\n this.kdf, this.kdfIterations);\n const masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n\n let encKey: [SymmetricCryptoKey, EncString] = null;\n const existingEncKey = await this.cryptoService.getEncKey();\n if (existingEncKey == null) {\n encKey = await this.cryptoService.makeEncKey(key);\n } else {\n encKey = await this.cryptoService.remakeEncKey(key);\n }\n\n await this.performSubmitActions(masterPasswordHash, key, encKey);\n }\n\n async setupSubmitActions(): Promise {\n // Override in sub-class\n // Can be used for additional validation and/or other processes the should occur before changing passwords\n return true;\n }\n\n async performSubmitActions(masterPasswordHash: string, key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]) {\n // Override in sub-class\n }\n\n async strongPassword(): Promise {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return false;\n }\n if (this.masterPassword.length < 8) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassLength'));\n return false;\n }\n if (this.masterPassword !== this.masterPasswordRetype) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassDoesntMatch'));\n return false;\n }\n\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n\n if (this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(\n strengthResult.score,\n this.masterPassword,\n this.enforcedPolicyOptions)) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPasswordPolicyRequirementsNotMet'));\n return false;\n }\n\n if (strengthResult != null && strengthResult.score < 3) {\n const result = await this.platformUtilsService.showDialog(this.i18nService.t('weakMasterPasswordDesc'),\n this.i18nService.t('weakMasterPassword'), this.i18nService.t('yes'), this.i18nService.t('no'),\n 'warning');\n if (!result) {\n return false;\n }\n }\n\n return true;\n }\n\n updatePasswordStrength() {\n if (this.masterPasswordStrengthTimeout != null) {\n clearTimeout(this.masterPasswordStrengthTimeout);\n }\n this.masterPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n async logOut() {\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('logOutConfirmation'),\n this.i18nService.t('logOut'), this.i18nService.t('logOut'), this.i18nService.t('cancel'));\n if (confirmed) {\n this.messagingService.send('logout');\n }\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(this.email.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/));\n }\n return userInput;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { OrganizationUserType } from 'jslib-common/enums/organizationUserType';\nimport { SelectionReadOnlyRequest } from 'jslib-common/models/request/selectionReadOnlyRequest';\nimport { OrganizationUserUserDetailsResponse } from 'jslib-common/models/response/organizationUserResponse';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-entity-users',\n templateUrl: 'entity-users.component.html',\n})\nexport class EntityUsersComponent implements OnInit {\n @Input() entity: 'group' | 'collection';\n @Input() entityId: string;\n @Input() entityName: string;\n @Input() organizationId: string;\n @Output() onEditedUsers = new EventEmitter();\n\n organizationUserType = OrganizationUserType;\n organizationUserStatusType = OrganizationUserStatusType;\n\n showSelected = false;\n loading = true;\n formPromise: Promise;\n selectedCount = 0;\n searchText: string;\n\n private allUsers: OrganizationUserUserDetailsResponse[] = [];\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) { }\n\n async ngOnInit() {\n await this.loadUsers();\n this.loading = false;\n }\n\n get users() {\n if (this.showSelected) {\n return this.allUsers.filter(u => (u as any).checked);\n } else {\n return this.allUsers;\n }\n }\n\n async loadUsers() {\n const users = await this.apiService.getOrganizationUsers(this.organizationId);\n this.allUsers = users.data.map(r => r).sort(Utils.getSortFunction(this.i18nService, 'email'));\n if (this.entity === 'group') {\n const response = await this.apiService.getGroupUsers(this.organizationId, this.entityId);\n if (response != null && users.data.length > 0) {\n response.forEach(s => {\n const user = users.data.filter(u => u.id === s);\n if (user != null && user.length > 0) {\n (user[0] as any).checked = true;\n }\n });\n }\n } else if (this.entity === 'collection') {\n const response = await this.apiService.getCollectionUsers(this.organizationId, this.entityId);\n if (response != null && users.data.length > 0) {\n response.forEach(s => {\n const user = users.data.filter(u => !u.accessAll && u.id === s.id);\n if (user != null && user.length > 0) {\n (user[0] as any).checked = true;\n (user[0] as any).readOnly = s.readOnly;\n (user[0] as any).hidePasswords = s.hidePasswords;\n }\n });\n }\n }\n\n this.allUsers.forEach(u => {\n if (this.entity === 'collection' && u.accessAll) {\n (u as any).checked = true;\n }\n if ((u as any).checked) {\n this.selectedCount++;\n }\n });\n }\n\n check(u: OrganizationUserUserDetailsResponse) {\n if (this.entity === 'collection' && u.accessAll) {\n return;\n }\n (u as any).checked = !(u as any).checked;\n this.selectedChanged(u);\n }\n\n selectedChanged(u: OrganizationUserUserDetailsResponse) {\n if ((u as any).checked) {\n this.selectedCount++;\n } else {\n if (this.entity === 'collection') {\n (u as any).readOnly = false;\n (u as any).hidePasswords = false;\n }\n this.selectedCount--;\n }\n }\n\n filterSelected(showSelected: boolean) {\n this.showSelected = showSelected;\n }\n\n async submit() {\n try {\n if (this.entity === 'group') {\n const selections = this.users.filter(u => (u as any).checked).map(u => u.id);\n this.formPromise = this.apiService.putGroupUsers(this.organizationId, this.entityId, selections);\n } else {\n const selections = this.users.filter(u => (u as any).checked && !u.accessAll)\n .map(u => new SelectionReadOnlyRequest(u.id, !!(u as any).readOnly, !!(u as any).hidePasswords));\n this.formPromise = this.apiService.putCollectionUsers(this.organizationId, this.entityId, selections);\n }\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('updatedUsers'));\n this.onEditedUsers.emit();\n } catch { }\n }\n}\n","

{{'userAccess' | i18n}} {{entityName}}

{{'loading' | i18n}}

{{'noUsersInList' | i18n}}
    {{'name' | i18n}}   {{'userType' | i18n}} {{'hidePasswords' | i18n}} {{'readOnly' | i18n}}
{{u.email}} {{'invited' | i18n}} {{'accepted' | i18n}} {{u.name}} {{'userAccessAllItems' | i18n}} {{'owner' | i18n}} {{'admin' | i18n}} {{'manager' | i18n}} {{'user' | i18n}} {{'custom' | i18n}}
","import { KeysRequest } from './keysRequest';\n\nexport class OrganizationKeysRequest extends KeysRequest {\n constructor(publicKey: string, encryptedPrivateKey: string) {\n super(publicKey, encryptedPrivateKey);\n }\n}\n","export class OrganizationUserBulkRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { EventService } from '../../services/event.service';\n\nimport { EventResponse } from 'jslib-common/models/response/eventResponse';\nimport { ListResponse } from 'jslib-common/models/response/listResponse';\n\n@Component({\n selector: 'app-entity-events',\n templateUrl: 'entity-events.component.html',\n})\nexport class EntityEventsComponent implements OnInit {\n @Input() name: string;\n @Input() entity: 'user' | 'cipher';\n @Input() entityId: string;\n @Input() organizationId: string;\n @Input() showUser = false;\n\n loading = true;\n loaded = false;\n events: any[];\n start: string;\n end: string;\n continuationToken: string;\n refreshPromise: Promise;\n morePromise: Promise;\n\n private orgUsersUserIdMap = new Map();\n private orgUsersIdMap = new Map();\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private eventService: EventService, private toasterService: ToasterService) { }\n\n async ngOnInit() {\n const defaultDates = this.eventService.getDefaultDateFilters();\n this.start = defaultDates[0];\n this.end = defaultDates[1];\n await this.load();\n }\n\n async load() {\n if (this.showUser) {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n response.data.forEach(u => {\n const name = u.name == null || u.name.trim() === '' ? u.email : u.name;\n this.orgUsersIdMap.set(u.id, { name: name, email: u.email });\n this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n }\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n async loadEvents(clearExisting: boolean) {\n if (this.refreshPromise != null || this.morePromise != null) {\n return;\n }\n\n let dates: string[] = null;\n try {\n dates = this.eventService.formatDateFilters(this.start, this.end);\n } catch (e) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidDateRange'));\n return;\n }\n\n this.loading = true;\n let response: ListResponse;\n try {\n let promise: Promise;\n if (this.entity === 'user') {\n promise = this.apiService.getEventsOrganizationUser(this.organizationId, this.entityId,\n dates[0], dates[1], clearExisting ? null : this.continuationToken);\n } else {\n promise = this.apiService.getEventsCipher(this.entityId,\n dates[0], dates[1], clearExisting ? null : this.continuationToken);\n }\n if (clearExisting) {\n this.refreshPromise = promise;\n } else {\n this.morePromise = promise;\n }\n response = await promise;\n } catch { }\n\n this.continuationToken = response.continuationToken;\n const events = await Promise.all(response.data.map(async r => {\n const userId = r.actingUserId == null ? r.userId : r.actingUserId;\n const eventInfo = await this.eventService.getEventInfo(r);\n const user = this.showUser && userId != null && this.orgUsersUserIdMap.has(userId) ?\n this.orgUsersUserIdMap.get(userId) : null;\n return {\n message: eventInfo.message,\n appIcon: eventInfo.appIcon,\n appName: eventInfo.appName,\n userId: userId,\n userName: user != null ? user.name : this.showUser ? this.i18nService.t('unknown') : null,\n userEmail: user != null ? user.email : this.showUser ? '' : null,\n date: r.date,\n ip: r.ipAddress,\n type: r.type,\n };\n }));\n\n if (!clearExisting && this.events != null && this.events.length > 0) {\n this.events = this.events.concat(events);\n } else {\n this.events = events;\n }\n\n this.loading = false;\n this.morePromise = null;\n this.refreshPromise = null;\n }\n}\n","

{{'eventLogs' | i18n}} {{name}}

{{'loading' | i18n}}
-

{{'noEventsInList' | i18n}}
{{'timestamp' | i18n}} {{'device' | i18n}} {{'user' | i18n}} {{'event' | i18n}}
{{e.date | date:'medium'}} {{e.appName}}, {{e.ip}} {{e.userName}}
","import { BaseResponse } from '../response/baseResponse';\n\nexport class PermissionsApi extends BaseResponse {\n accessBusinessPortal: boolean;\n accessEventLogs: boolean;\n accessImportExport: boolean;\n accessReports: boolean;\n manageAllCollections: boolean;\n manageAssignedCollections: boolean;\n manageCiphers: boolean;\n manageGroups: boolean;\n manageSso: boolean;\n managePolicies: boolean;\n manageUsers: boolean;\n manageResetPassword: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return this;\n }\n this.accessBusinessPortal = this.getResponseProperty('AccessBusinessPortal');\n this.accessEventLogs = this.getResponseProperty('AccessEventLogs');\n this.accessImportExport = this.getResponseProperty('AccessImportExport');\n this.accessReports = this.getResponseProperty('AccessReports');\n this.manageAllCollections = this.getResponseProperty('ManageAllCollections');\n this.manageAssignedCollections = this.getResponseProperty('ManageAssignedCollections');\n this.manageCiphers = this.getResponseProperty('ManageCiphers');\n this.manageGroups = this.getResponseProperty('ManageGroups');\n this.manageSso = this.getResponseProperty('ManageSso');\n this.managePolicies = this.getResponseProperty('ManagePolicies');\n this.manageUsers = this.getResponseProperty('ManageUsers');\n this.manageResetPassword = this.getResponseProperty('ManageResetPassword');\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\n\nimport { ApiKeyResponse } from 'jslib-common/models/response/apiKeyResponse';\n\n@Component({\n selector: 'app-api-key',\n templateUrl: 'api-key.component.html',\n})\nexport class ApiKeyComponent {\n keyType: string;\n isRotation: boolean;\n postKey: (entityId: string, request: PasswordVerificationRequest) => Promise;\n entityId: string;\n scope: string;\n grantType: string;\n apiKeyTitle: string;\n apiKeyWarning: string;\n apiKeyDescription: string;\n\n masterPassword: string;\n formPromise: Promise;\n clientId: string;\n clientSecret: string;\n\n constructor(private i18nService: I18nService, private toasterService: ToasterService,\n private cryptoService: CryptoService) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.postKey(this.entityId, request);\n const response = await this.formPromise;\n this.clientSecret = response.apiKey;\n this.clientId = `${this.keyType}.${this.entityId}`;\n } catch { }\n }\n}\n","

{{apiKeyTitle | i18n}}

{{apiKeyDescription | i18n}}

{{apiKeyWarning | i18n}}

client_id:
{{clientId}}

client_secret:
{{clientSecret}}

scope:
{{scope}}

grant_type:
{{grantType}}

","import {\n Component,\n Input,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-purge-vault',\n templateUrl: 'purge-vault.component.html',\n})\nexport class PurgeVaultComponent {\n @Input() organizationId?: string = null;\n\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private router: Router) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postPurgeCiphers(request, this.organizationId);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('vaultPurged'));\n if (this.organizationId != null) {\n this.router.navigate(['organizations', this.organizationId, 'vault']);\n } else {\n this.router.navigate(['vault']);\n }\n } catch { }\n }\n}\n","

{{'purgeVault' | i18n}}

{{(organizationId ? 'purgeOrgVaultDesc' : 'purgeVaultDesc') | i18n}}

{{'purgeVaultWarning' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { BillingResponse } from 'jslib-common/models/response/billingResponse';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { PaymentMethodType } from 'jslib-common/enums/paymentMethodType';\nimport { TransactionType } from 'jslib-common/enums/transactionType';\nimport { VerifyBankRequest } from 'jslib-common/models/request/verifyBankRequest';\n\n@Component({\n selector: 'app-user-billing',\n templateUrl: 'user-billing.component.html',\n})\nexport class UserBillingComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n showAdjustPayment = false;\n showAddCredit = false;\n billing: BillingResponse;\n paymentMethodType = PaymentMethodType;\n transactionType = TransactionType;\n organizationId: string;\n verifyAmount1: number;\n verifyAmount2: number;\n\n verifyBankPromise: Promise;\n\n constructor(protected apiService: ApiService, protected i18nService: I18nService,\n protected toasterService: ToasterService, protected platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n this.loading = true;\n if (this.organizationId != null) {\n this.billing = await this.apiService.getOrganizationBilling(this.organizationId);\n } else {\n this.billing = await this.apiService.getUserBilling();\n }\n this.loading = false;\n }\n\n async verifyBank() {\n if (this.loading) {\n return;\n }\n\n try {\n const request = new VerifyBankRequest();\n request.amount1 = this.verifyAmount1;\n request.amount2 = this.verifyAmount2;\n this.verifyBankPromise = this.apiService.postOrganizationVerifyBank(this.organizationId, request);\n await this.verifyBankPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('verifiedBankAccount'));\n this.load();\n } catch { }\n }\n\n addCredit() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(this.i18nService.t('cannotPerformInAppPurchase'),\n this.i18nService.t('addCredit'), null, null, 'warning');\n return;\n }\n this.showAddCredit = true;\n }\n\n closeAddCredit(load: boolean) {\n this.showAddCredit = false;\n if (load) {\n this.load();\n }\n }\n\n changePayment() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(this.i18nService.t('cannotPerformInAppPurchase'),\n this.i18nService.t('changePaymentMethod'), null, null, 'warning');\n return;\n }\n this.showAdjustPayment = true;\n }\n\n closePayment(load: boolean) {\n this.showAdjustPayment = false;\n if (load) {\n this.load();\n }\n }\n\n get isCreditBalance() {\n return this.billing == null || this.billing.balance <= 0;\n }\n\n get creditOrBalance() {\n return Math.abs(this.billing != null ? this.billing.balance : 0);\n }\n\n get paymentSource() {\n return this.billing != null ? this.billing.paymentSource : null;\n }\n\n get paymentSourceInApp() {\n return this.paymentSource != null &&\n (this.paymentSource.type === PaymentMethodType.AppleInApp ||\n this.paymentSource.type === PaymentMethodType.GoogleInApp);\n }\n\n get invoices() {\n return this.billing != null ? this.billing.invoices : null;\n }\n\n get transactions() {\n return this.billing != null ? this.billing.transactions : null;\n }\n}\n","

{{'billing' | i18n}}

{{'loading' | i18n}}

{{(isCreditBalance ? 'accountCredit' : 'accountBalance') | i18n}}

{{creditOrBalance | currency:'$'}}

{{'creditAppliedDesc' | i18n}}

{{'paymentMethod' | i18n}}

{{'noPaymentMethod' | i18n}}

{{'verifyBankAccountDesc' | i18n}} {{'verifyBankAccountFailureWarning' | i18n}}

$0.
$0.

{{'inAppPurchase' | i18n}} {{paymentSource.description}}

{{'invoices' | i18n}}

{{'noInvoices' | i18n}}

{{i.date | date:'mediumDate'}} {{'invoiceNumber' | i18n : i.number}} {{i.amount | currency:'$'}} {{'paid' | i18n}} {{'unpaid' | i18n}}

{{'transactions' | i18n}}

{{'noTransactions' | i18n}}

{{t.createdDate | date:'mediumDate'}} {{'chargeNoun' | i18n}} {{'refundNoun' | i18n}} {{t.details}} {{t.amount | currency:'$'}}
* {{'chargesStatement' | i18n : 'BITWARDEN'}}
","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { PaymentMethodType } from 'jslib-common/enums/paymentMethodType';\n\nimport { BitPayInvoiceRequest } from 'jslib-common/models/request/bitPayInvoiceRequest';\n\nimport { WebConstants } from '../../services/webConstants';\n\n@Component({\n selector: 'app-add-credit',\n templateUrl: 'add-credit.component.html',\n})\nexport class AddCreditComponent implements OnInit {\n @Input() creditAmount: string;\n @Input() showOptions = true;\n @Input() method = PaymentMethodType.PayPal;\n @Input() organizationId: string;\n @Output() onAdded = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild('ppButtonForm', { read: ElementRef, static: true }) ppButtonFormRef: ElementRef;\n\n paymentMethodType = PaymentMethodType;\n ppButtonFormAction = WebConstants.paypal.buttonActionProduction;\n ppButtonBusinessId = WebConstants.paypal.businessIdProduction;\n ppButtonCustomField: string;\n ppLoading = false;\n subject: string;\n returnUrl: string;\n formPromise: Promise;\n\n private userId: string;\n private name: string;\n private email: string;\n\n constructor(private userService: UserService, private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService) {\n if (platformUtilsService.isDev()) {\n this.ppButtonFormAction = WebConstants.paypal.buttonActionSandbox;\n this.ppButtonBusinessId = WebConstants.paypal.businessIdSandbox;\n }\n }\n\n async ngOnInit() {\n if (this.organizationId != null) {\n if (this.creditAmount == null) {\n this.creditAmount = '20.00';\n }\n this.ppButtonCustomField = 'organization_id:' + this.organizationId;\n const org = await this.userService.getOrganization(this.organizationId);\n if (org != null) {\n this.subject = org.name;\n this.name = org.name;\n }\n } else {\n if (this.creditAmount == null) {\n this.creditAmount = '10.00';\n }\n this.userId = await this.userService.getUserId();\n this.subject = await this.userService.getEmail();\n this.email = this.subject;\n this.ppButtonCustomField = 'user_id:' + this.userId;\n }\n this.ppButtonCustomField += ',account_credit:1';\n this.returnUrl = window.location.href;\n }\n\n async submit() {\n if (this.creditAmount == null || this.creditAmount === '') {\n return;\n }\n\n if (this.method === PaymentMethodType.PayPal) {\n this.ppButtonFormRef.nativeElement.submit();\n this.ppLoading = true;\n return;\n }\n if (this.method === PaymentMethodType.BitPay) {\n try {\n const req = new BitPayInvoiceRequest();\n req.email = this.email;\n req.name = this.name;\n req.credit = true;\n req.amount = this.creditAmountNumber;\n req.organizationId = this.organizationId;\n req.userId = this.userId;\n req.returnUrl = this.returnUrl;\n this.formPromise = this.apiService.postBitPayInvoice(req);\n const bitPayUrl: string = await this.formPromise;\n this.platformUtilsService.launchUri(bitPayUrl);\n } catch { }\n return;\n }\n try {\n this.onAdded.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n formatAmount() {\n try {\n if (this.creditAmount != null && this.creditAmount !== '') {\n const floatAmount = Math.abs(parseFloat(this.creditAmount));\n if (floatAmount > 0) {\n this.creditAmount = parseFloat((Math.round(floatAmount * 100) / 100).toString())\n .toFixed(2).toString();\n return;\n }\n }\n } catch { }\n this.creditAmount = '';\n }\n\n get creditAmountNumber(): number {\n if (this.creditAmount != null && this.creditAmount !== '') {\n try {\n return parseFloat(this.creditAmount);\n } catch { }\n }\n return null;\n }\n}\n","

{{'addCredit' | i18n}}

$USD
{{'creditDelayed' | i18n}}
","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PaymentRequest } from 'jslib-common/models/request/paymentRequest';\n\nimport { PaymentMethodType } from 'jslib-common/enums/paymentMethodType';\n\nimport { PaymentComponent } from './payment.component';\nimport { TaxInfoComponent } from './tax-info.component';\n\n@Component({\n selector: 'app-adjust-payment',\n templateUrl: 'adjust-payment.component.html',\n})\nexport class AdjustPaymentComponent {\n @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent, { static: true }) taxInfoComponent: TaxInfoComponent;\n\n @Input() currentType?: PaymentMethodType;\n @Input() organizationId: string;\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n paymentMethodType = PaymentMethodType;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) { }\n\n async submit() {\n try {\n const request = new PaymentRequest();\n this.formPromise = this.paymentComponent.createPaymentToken().then(result => {\n request.paymentToken = result[0];\n request.paymentMethodType = result[1];\n request.postalCode = this.taxInfoComponent.taxInfo.postalCode;\n request.country = this.taxInfoComponent.taxInfo.country;\n if (this.organizationId == null) {\n return this.apiService.postAccountPayment(request);\n } else {\n request.taxId = this.taxInfoComponent.taxInfo.taxId;\n request.state = this.taxInfoComponent.taxInfo.state;\n request.line1 = this.taxInfoComponent.taxInfo.line1;\n request.line2 = this.taxInfoComponent.taxInfo.line2;\n request.city = this.taxInfoComponent.taxInfo.city;\n request.state = this.taxInfoComponent.taxInfo.state;\n return this.apiService.postOrganizationPayment(this.organizationId, request);\n }\n });\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('updatedPaymentMethod'));\n this.onAdjusted.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n changeCountry() {\n if (this.taxInfoComponent.taxInfo.country === 'US') {\n this.paymentComponent.hideBank = !this.organizationId;\n } else {\n this.paymentComponent.hideBank = true;\n if (this.paymentComponent.method === PaymentMethodType.BankAccount) {\n this.paymentComponent.method = PaymentMethodType.Card;\n this.paymentComponent.changeMethod();\n }\n }\n }\n}\n","

{{(currentType != null ? 'changePaymentMethod' : 'addPaymentMethod') | i18n}}

","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Component({\n selector: 'app-update-license',\n templateUrl: 'update-license.component.html',\n})\nexport class UpdateLicenseComponent {\n @Input() organizationId: string;\n @Output() onUpdated = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) { }\n\n async submit() {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n try {\n const fd = new FormData();\n fd.append('license', files[0]);\n\n let updatePromise: Promise = null;\n if (this.organizationId == null) {\n updatePromise = this.apiService.postAccountLicense(fd);\n } else {\n updatePromise = this.apiService.postOrganizationLicenseUpdate(this.organizationId, fd);\n }\n\n this.formPromise = updatePromise.then(() => {\n return this.apiService.refreshIdentityToken();\n });\n\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('updatedLicense'));\n this.onUpdated.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","
{{'licenseFileDesc' | i18n : (!organizationId ? 'bitwarden_premium_license.json' : 'bitwarden_organization_license.json')}}
","export enum ProductType {\n Free = 0,\n Families = 1,\n Teams = 2,\n Enterprise = 3,\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { StorageRequest } from 'jslib-common/models/request/storageRequest';\n\nimport { PaymentResponse } from 'jslib-common/models/response/paymentResponse';\n\nimport { PaymentComponent } from './payment.component';\n\n@Component({\n selector: 'app-adjust-storage',\n templateUrl: 'adjust-storage.component.html',\n})\nexport class AdjustStorageComponent {\n @Input() storageGbPrice = 0;\n @Input() add = true;\n @Input() organizationId: string;\n @Input() interval = 'year';\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent;\n\n storageAdjustment = 0;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private router: Router,\n private activatedRoute: ActivatedRoute) { }\n\n async submit() {\n try {\n const request = new StorageRequest();\n request.storageGbAdjustment = this.storageAdjustment;\n if (!this.add) {\n request.storageGbAdjustment *= -1;\n }\n\n let paymentFailed = false;\n const action = async () => {\n let response: Promise;\n if (this.organizationId == null) {\n response = this.formPromise = this.apiService.postAccountStorage(request);\n } else {\n response = this.formPromise = this.apiService.postOrganizationStorage(this.organizationId, request);\n }\n const result = await response;\n if (result != null && result.paymentIntentClientSecret != null) {\n try {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n } catch {\n paymentFailed = true;\n }\n }\n };\n this.formPromise = action();\n await this.formPromise;\n this.onAdjusted.emit(this.storageAdjustment);\n if (paymentFailed) {\n this.toasterService.popAsync({\n body: this.i18nService.t('couldNotChargeCardPayInvoice'),\n type: 'warning',\n timeout: 10000,\n });\n this.router.navigate(['../billing'], { relativeTo: this.activatedRoute });\n } else {\n this.toasterService.popAsync('success', null,\n this.i18nService.t('adjustedStorage', request.storageGbAdjustment.toString()));\n }\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n get adjustedStorageTotal(): number {\n return this.storageGbPrice * this.storageAdjustment;\n }\n}\n","

{{(add ? 'addStorage' : 'removeStorage') | i18n}}

{{'total' | i18n}}: {{storageAdjustment || 0}} GB × {{storageGbPrice | currency:'$'}} = {{adjustedStorageTotal | currency:'$'}} /{{interval | i18n}}
{{(add ? 'storageAddNote' : 'storageRemoveNote') | i18n}}
","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\nimport { UpdateTwoFactorDuoRequest } from 'jslib-common/models/request/updateTwoFactorDuoRequest';\nimport { TwoFactorDuoResponse } from 'jslib-common/models/response/twoFactorDuoResponse';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-duo',\n templateUrl: 'two-factor-duo.component.html',\n})\nexport class TwoFactorDuoComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Duo;\n ikey: string;\n skey: string;\n host: string;\n formPromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n toasterService: ToasterService, platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, toasterService, platformUtilsService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n protected enable() {\n const request = new UpdateTwoFactorDuoRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.integrationKey = this.ikey;\n request.secretKey = this.skey;\n request.host = this.host;\n\n return super.enable(async () => {\n if (this.organizationId != null) {\n this.formPromise = this.apiService.putTwoFactorOrganizationDuo(this.organizationId, request);\n } else {\n this.formPromise = this.apiService.putTwoFactorDuo(request);\n }\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private processResponse(response: TwoFactorDuoResponse) {\n this.ikey = response.integrationKey;\n this.skey = response.secretKey;\n this.host = response.host;\n this.enabled = response.enabled;\n }\n}\n","

{{'twoStepLogin' | i18n}} Duo

{{'twoStepLoginProviderEnabled' | i18n}} \"\" {{'twoFactorDuoIntegrationKey' | i18n}}: {{ikey}}
{{'twoFactorDuoSecretKey' | i18n}}: {{skey}}
{{'twoFactorDuoApiHostname' | i18n}}: {{host}}
\"\"

{{'twoFactorDuoDesc' | i18n}}

","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { TwoFactorProviders } from 'jslib-common/services/auth.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { ModalComponent } from '../modal.component';\n\nimport { TwoFactorAuthenticatorComponent } from './two-factor-authenticator.component';\nimport { TwoFactorDuoComponent } from './two-factor-duo.component';\nimport { TwoFactorEmailComponent } from './two-factor-email.component';\nimport { TwoFactorRecoveryComponent } from './two-factor-recovery.component';\nimport { TwoFactorWebAuthnComponent } from './two-factor-webauthn.component';\nimport { TwoFactorYubiKeyComponent } from './two-factor-yubikey.component';\n\n@Component({\n selector: 'app-two-factor-setup',\n templateUrl: 'two-factor-setup.component.html',\n})\nexport class TwoFactorSetupComponent implements OnInit {\n @ViewChild('recoveryTemplate', { read: ViewContainerRef, static: true }) recoveryModalRef: ViewContainerRef;\n @ViewChild('authenticatorTemplate', { read: ViewContainerRef, static: true }) authenticatorModalRef: ViewContainerRef;\n @ViewChild('yubikeyTemplate', { read: ViewContainerRef, static: true }) yubikeyModalRef: ViewContainerRef;\n @ViewChild('duoTemplate', { read: ViewContainerRef, static: true }) duoModalRef: ViewContainerRef;\n @ViewChild('emailTemplate', { read: ViewContainerRef, static: true }) emailModalRef: ViewContainerRef;\n @ViewChild('webAuthnTemplate', { read: ViewContainerRef, static: true }) webAuthnModalRef: ViewContainerRef;\n\n organizationId: string;\n providers: any[] = [];\n canAccessPremium: boolean;\n showPolicyWarning = false;\n loading = true;\n\n private modal: ModalComponent = null;\n\n constructor(protected apiService: ApiService, protected userService: UserService,\n protected componentFactoryResolver: ComponentFactoryResolver, protected messagingService: MessagingService,\n protected policyService: PolicyService) { }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n\n for (const key in TwoFactorProviders) {\n if (!TwoFactorProviders.hasOwnProperty(key)) {\n continue;\n }\n\n const p = (TwoFactorProviders as any)[key];\n if (this.filterProvider(p.type)) {\n continue;\n }\n\n this.providers.push({\n type: p.type,\n name: p.name,\n description: p.description,\n enabled: false,\n premium: p.premium,\n sort: p.sort,\n });\n }\n\n this.providers.sort((a: any, b: any) => a.sort - b.sort);\n await this.load();\n }\n\n async load() {\n this.loading = true;\n const providerList = await this.getTwoFactorProviders();\n providerList.data.forEach(p => {\n this.providers.forEach(p2 => {\n if (p.type === p2.type) {\n p2.enabled = p.enabled;\n }\n });\n });\n this.evaluatePolicies();\n this.loading = false;\n }\n\n manage(type: TwoFactorProviderType) {\n switch (type) {\n case TwoFactorProviderType.Authenticator:\n const authComp = this.openModal(this.authenticatorModalRef, TwoFactorAuthenticatorComponent);\n authComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Authenticator);\n });\n break;\n case TwoFactorProviderType.Yubikey:\n const yubiComp = this.openModal(this.yubikeyModalRef, TwoFactorYubiKeyComponent);\n yubiComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Yubikey);\n });\n break;\n case TwoFactorProviderType.Duo:\n const duoComp = this.openModal(this.duoModalRef, TwoFactorDuoComponent);\n duoComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Duo);\n });\n break;\n case TwoFactorProviderType.Email:\n const emailComp = this.openModal(this.emailModalRef, TwoFactorEmailComponent);\n emailComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Email);\n });\n break;\n case TwoFactorProviderType.WebAuthn:\n const webAuthnComp = this.openModal(this.webAuthnModalRef, TwoFactorWebAuthnComponent);\n webAuthnComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.WebAuthn);\n });\n break;\n default:\n break;\n }\n }\n\n recoveryCode() {\n this.openModal(this.recoveryModalRef, TwoFactorRecoveryComponent);\n }\n\n async premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n\n protected getTwoFactorProviders() {\n return this.apiService.getTwoFactorProviders();\n }\n\n protected filterProvider(type: TwoFactorProviderType) {\n return type === TwoFactorProviderType.OrganizationDuo;\n }\n\n protected openModal(ref: ViewContainerRef, type: Type): T {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = ref.createComponent(factory).instance;\n const childComponent = this.modal.show(type, ref);\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n return childComponent;\n }\n\n protected updateStatus(enabled: boolean, type: TwoFactorProviderType) {\n if (!enabled && this.modal != null) {\n this.modal.close();\n }\n this.providers.forEach(p => {\n if (p.type === type) {\n p.enabled = enabled;\n }\n });\n this.evaluatePolicies();\n }\n\n private async evaluatePolicies() {\n if (this.organizationId == null && this.providers.filter(p => p.enabled).length === 1) {\n const policies = await this.policyService.getAll(PolicyType.TwoFactorAuthentication);\n this.showPolicyWarning = policies != null && policies.some(p => p.enabled);\n } else {\n this.showPolicyWarning = false;\n }\n }\n}\n","

{{'twoStepLogin' | i18n}}

{{'twoStepLoginDesc' | i18n}}

{{'twoStepLoginOrganizationDesc' | i18n}}

{{'twoStepLoginRecoveryWarning' | i18n}}

{{'providers' | i18n}} {{'loading' | i18n}}

{{'twoStepLoginPolicyUserWarning' | i18n}} ","import { Component } from '@angular/core';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { ExportService } from 'jslib-common/abstractions/export.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { ExportComponent as BaseExportComponent } from 'jslib-angular/components/export.component';\n\n@Component({\n selector: 'app-export',\n templateUrl: 'export.component.html',\n})\nexport class ExportComponent extends BaseExportComponent {\n organizationId: string;\n\n constructor(cryptoService: CryptoService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, exportService: ExportService,\n eventService: EventService) {\n super(cryptoService, i18nService, platformUtilsService, exportService, eventService, window);\n }\n\n protected saved() {\n super.saved();\n this.masterPassword = null;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('exportSuccess'));\n }\n}\n","

{{'exportVault' | i18n}}

{{'exportMasterPassword' | i18n}}

","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n} from '@angular/core';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-exposed-passwords-report',\n templateUrl: 'exposed-passwords-report.component.html',\n})\nexport class ExposedPasswordsReportComponent extends CipherReportComponent implements OnInit {\n exposedPasswordMap = new Map();\n\n constructor(protected cipherService: CipherService, protected auditService: AuditService,\n componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService,\n userService: UserService) {\n super(componentFactoryResolver, userService, messagingService, true);\n }\n\n ngOnInit() {\n this.checkAccess();\n }\n\n async load() {\n if (await this.checkAccess()) {\n super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const exposedPasswordCiphers: CipherView[] = [];\n const promises: Promise[] = [];\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '' || c.isDeleted) {\n return;\n }\n const promise = this.auditService.passwordLeaked(c.login.password).then(exposedCount => {\n if (exposedCount > 0) {\n exposedPasswordCiphers.push(c);\n this.exposedPasswordMap.set(c.id, exposedCount);\n }\n });\n promises.push(promise);\n });\n await Promise.all(promises);\n this.ciphers = exposedPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from the org view;\n return true;\n }\n}\n","

{{'exposedPasswordsReport' | i18n}}

{{'exposedPasswordsReportDesc' | i18n}}

{{'noExposedPasswords' | i18n}} {{'exposedPasswordsFoundDesc' | i18n : (ciphers.length | number)}}
{{c.name}} {{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
{{'exposedXTimes' | i18n : (exposedPasswordMap.get(c.id) | number)}}
","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { TotpService } from 'jslib-common/abstractions/totp.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CipherData } from 'jslib-common/models/data/cipherData';\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherCreateRequest } from 'jslib-common/models/request/cipherCreateRequest';\nimport { CipherRequest } from 'jslib-common/models/request/cipherRequest';\n\nimport { AddEditComponent as BaseAddEditComponent } from '../../vault/add-edit.component';\n\n@Component({\n selector: 'app-org-vault-add-edit',\n templateUrl: '../../vault/add-edit.component.html',\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n organization: Organization;\n originalCipher: Cipher = null;\n\n constructor(cipherService: CipherService, folderService: FolderService,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n auditService: AuditService, stateService: StateService,\n userService: UserService, collectionService: CollectionService,\n totpService: TotpService, passwordGenerationService: PasswordGenerationService,\n private apiService: ApiService, messagingService: MessagingService,\n eventService: EventService, policyService: PolicyService) {\n super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, totpService, passwordGenerationService, messagingService,\n eventService, policyService);\n }\n\n protected allowOwnershipAssignment() {\n if (this.ownershipOptions != null && (this.ownershipOptions.length > 1 || !this.allowPersonal)) {\n if (this.organization != null) {\n return this.cloneMode && this.organization.canManageAllCollections;\n } else {\n return !this.editMode || this.cloneMode;\n }\n }\n return false;\n }\n\n protected loadCollections() {\n if (!this.organization.canManageAllCollections) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected async loadCipher() {\n if (!this.organization.canManageAllCollections) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n const data = new CipherData(response);\n this.originalCipher = new Cipher(data);\n return new Cipher(data);\n }\n\n protected encryptCipher() {\n if (!this.organization.canManageAllCollections) {\n return super.encryptCipher();\n }\n return this.cipherService.encrypt(this.cipher, null, this.originalCipher);\n }\n\n protected async saveCipher(cipher: Cipher) {\n if (!this.organization.canManageAllCollections || cipher.organizationId == null) {\n return super.saveCipher(cipher);\n }\n if (this.editMode && !this.cloneMode) {\n const request = new CipherRequest(cipher);\n return this.apiService.putCipherAdmin(this.cipherId, request);\n } else {\n const request = new CipherCreateRequest(cipher);\n return this.apiService.postCipherAdmin(request);\n }\n }\n\n protected async deleteCipher() {\n if (!this.organization.canManageAllCollections) {\n return super.deleteCipher();\n }\n return this.cipher.isDeleted ? this.apiService.deleteCipherAdmin(this.cipherId)\n : this.apiService.putDeleteCipherAdmin(this.cipherId);\n }\n}\n","import { AttachmentResponse } from '../response/attachmentResponse';\n\nexport class AttachmentData {\n id: string;\n url: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(response?: AttachmentResponse) {\n if (response == null) {\n return;\n }\n this.id = response.id;\n this.url = response.url;\n this.fileName = response.fileName;\n this.key = response.key;\n this.size = response.size;\n this.sizeName = response.sizeName;\n }\n}\n","import { CardApi } from '../api/cardApi';\n\nexport class CardData {\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(data?: CardApi) {\n if (data == null) {\n return;\n }\n\n this.cardholderName = data.cardholderName;\n this.brand = data.brand;\n this.number = data.number;\n this.expMonth = data.expMonth;\n this.expYear = data.expYear;\n this.code = data.code;\n }\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { FieldApi } from '../api/fieldApi';\n\nexport class FieldData {\n type: FieldType;\n name: string;\n value: string;\n\n constructor(response?: FieldApi) {\n if (response == null) {\n return;\n }\n this.type = response.type;\n this.name = response.name;\n this.value = response.value;\n }\n}\n","import { IdentityApi } from '../api/identityApi';\n\nexport class IdentityData {\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(data?: IdentityApi) {\n if (data == null) {\n return;\n }\n\n this.title = data.title;\n this.firstName = data.firstName;\n this.middleName = data.middleName;\n this.lastName = data.lastName;\n this.address1 = data.address1;\n this.address2 = data.address2;\n this.address3 = data.address3;\n this.city = data.city;\n this.state = data.state;\n this.postalCode = data.postalCode;\n this.country = data.country;\n this.company = data.company;\n this.email = data.email;\n this.phone = data.phone;\n this.ssn = data.ssn;\n this.username = data.username;\n this.passportNumber = data.passportNumber;\n this.licenseNumber = data.licenseNumber;\n }\n}\n","import { LoginApi } from '../api/loginApi';\n\nimport { LoginUriData } from './loginUriData';\n\nexport class LoginData {\n uris: LoginUriData[];\n username: string;\n password: string;\n passwordRevisionDate: string;\n totp: string;\n autofillOnPageLoad: boolean;\n\n constructor(data?: LoginApi) {\n if (data == null) {\n return;\n }\n\n this.username = data.username;\n this.password = data.password;\n this.passwordRevisionDate = data.passwordRevisionDate;\n this.totp = data.totp;\n this.autofillOnPageLoad = data.autofillOnPageLoad;\n\n if (data.uris) {\n this.uris = data.uris.map(u => new LoginUriData(u));\n }\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriApi } from '../api/loginUriApi';\n\nexport class LoginUriData {\n uri: string;\n match: UriMatchType = null;\n\n constructor(data?: LoginUriApi) {\n if (data == null) {\n return;\n }\n this.uri = data.uri;\n this.match = data.match;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteApi } from '../api/secureNoteApi';\n\nexport class SecureNoteData {\n type: SecureNoteType;\n\n constructor(data?: SecureNoteApi) {\n if (data == null) {\n return;\n }\n\n this.type = data.type;\n }\n}\n","import { AttachmentData } from '../data/attachmentData';\n\nimport { AttachmentView } from '../view/attachmentView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { CryptoService } from '../../abstractions/crypto.service';\n\nimport { Utils } from '../../misc/utils';\n\nexport class Attachment extends Domain {\n id: string;\n url: string;\n size: string;\n sizeName: string;\n key: EncString;\n fileName: EncString;\n\n constructor(obj?: AttachmentData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.size = obj.size;\n this.buildDomainModel(this, obj, {\n id: null,\n url: null,\n sizeName: null,\n fileName: null,\n key: null,\n }, alreadyEncrypted, ['id', 'url', 'sizeName']);\n }\n\n async decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(new AttachmentView(this), {\n fileName: null,\n }, orgId, encKey);\n\n if (this.key != null) {\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error('global bitwardenContainerService not initialized.');\n }\n\n try {\n const orgKey = await cryptoService.getOrgKey(orgId);\n const decValue = await cryptoService.decryptToBytes(this.key, orgKey ?? encKey);\n view.key = new SymmetricCryptoKey(decValue);\n } catch (e) {\n // TODO: error?\n }\n }\n\n return view;\n }\n\n toAttachmentData(): AttachmentData {\n const a = new AttachmentData();\n a.size = this.size;\n this.buildDataModel(this, a, {\n id: null,\n url: null,\n sizeName: null,\n fileName: null,\n key: null,\n }, ['id', 'url', 'sizeName']);\n return a;\n }\n}\n","import { View } from './view';\n\nimport { Password } from '../domain/password';\n\nexport class PasswordHistoryView implements View {\n password: string = null;\n lastUsedDate: Date = null;\n\n constructor(ph?: Password) {\n if (!ph) {\n return;\n }\n\n this.lastUsedDate = ph.lastUsedDate;\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { ImportOption, ImportService } from 'jslib-common/abstractions/import.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\n\n@Component({\n selector: 'app-import',\n templateUrl: 'import.component.html',\n})\nexport class ImportComponent implements OnInit {\n featuredImportOptions: ImportOption[];\n importOptions: ImportOption[];\n format: string = null;\n fileContents: string;\n formPromise: Promise;\n loading: boolean = false;\n\n protected organizationId: string = null;\n protected successNavigate: any[] = ['vault'];\n\n constructor(protected i18nService: I18nService, protected toasterService: ToasterService,\n protected importService: ImportService, protected router: Router,\n protected platformUtilsService: PlatformUtilsService) { }\n\n ngOnInit() {\n this.setImportOptions();\n this.importOptions.sort((a, b) => {\n if (a.name == null && b.name != null) {\n return -1;\n }\n if (a.name != null && b.name == null) {\n return 1;\n }\n if (a.name == null && b.name == null) {\n return 0;\n }\n\n return this.i18nService.collator ? this.i18nService.collator.compare(a.name, b.name) :\n a.name.localeCompare(b.name);\n });\n }\n\n async submit() {\n this.loading = true;\n\n const importer = this.importService.getImporter(this.format, this.organizationId);\n if (importer === null) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFormat'));\n this.loading = false;\n return;\n }\n\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if ((files == null || files.length === 0) && (this.fileContents == null || this.fileContents === '')) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n this.loading = false;\n return;\n }\n\n let fileContents = this.fileContents;\n if (files != null && files.length > 0) {\n try {\n const content = await this.getFileContents(files[0]);\n if (content != null) {\n fileContents = content;\n }\n } catch { }\n }\n\n if (fileContents == null || fileContents === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n this.loading = false;\n return;\n }\n\n try {\n this.formPromise = this.importService.import(importer, fileContents, this.organizationId);\n const error = await this.formPromise;\n if (error != null) {\n this.error(error);\n this.loading = false;\n return;\n }\n this.toasterService.popAsync('success', null, this.i18nService.t('importSuccess'));\n this.router.navigate(this.successNavigate);\n } catch { }\n\n this.loading = false;\n }\n\n getFormatInstructionTitle() {\n if (this.format == null) {\n return null;\n }\n\n const results = this.featuredImportOptions.concat(this.importOptions).filter(o => o.id === this.format);\n if (results.length > 0) {\n return this.i18nService.t('instructionsFor', results[0].name);\n }\n return null;\n }\n\n protected setImportOptions() {\n this.featuredImportOptions = [{\n id: null,\n name: '-- ' + this.i18nService.t('select') + ' --',\n }, ...this.importService.featuredImportOptions];\n this.importOptions = this.importService.regularImportOptions;\n }\n\n private async error(error: Error) {\n await Swal.fire({\n heightAuto: false,\n buttonsStyling: false,\n icon: 'error' as SweetAlertIcon,\n iconHtml: ``,\n input: 'textarea',\n inputValue: error.message,\n inputAttributes: {\n 'readonly': 'true',\n },\n titleText: this.i18nService.t('importError'),\n text: this.i18nService.t('importErrorDesc'),\n showConfirmButton: true,\n confirmButtonText: this.i18nService.t('ok'),\n onOpen: popupEl => {\n popupEl.querySelector('.swal2-textarea').scrollTo(0, 0);\n },\n });\n }\n\n private getFileContents(file: File): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsText(file, 'utf-8');\n reader.onload = evt => {\n if (this.format === 'lastpasscsv' && file.type === 'text/html') {\n const parser = new DOMParser();\n const doc = parser.parseFromString((evt.target as any).result, 'text/html');\n const pre = doc.querySelector('pre');\n if (pre != null) {\n resolve(pre.textContent);\n return;\n }\n reject();\n return;\n }\n\n resolve((evt.target as any).result);\n };\n reader.onerror = () => {\n reject();\n };\n });\n }\n}\n","

{{'importData' | i18n}}

See detailed instructions on our help site at https://help.bitwarden.com/article/export-your-data/ See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-lastpass/ Using the KeePassX desktop application, navigate to \"Database\" → \"Export to CSV file\" and save the CSV file. In the Avira web vault, go to \"Settings\" → \"My Data\" → \"Export data\" and save the CSV file. In the Blur web vault, click your username at the top and go to \"Settings\" → \"Export Data\", then click \"Export CSV\" for your \"Accounts\". Using the SaveInCloud desktop application, navigate to \"File\" → \"Export\" → \"As XML\" and save the XML file. Using the Padlock desktop application, click the hamburger icon in the top left corner and navigate to \"Settings\" → \"Export\" button and save the file \"As CSV\". Using the KeePass 2 desktop application, navigate to \"File\" → \"Export\" and select the \"KeePass XML (2.x)\" option. Using the Universal Password Manager desktop application, navigate to \"Database\" → \"Export\" and save the CSV file. Using the SaferPass browser extension, click the hamburger icon in the top left corner and navigate to \"Settings\". Click the \"Export accounts\" button to save the CSV file. Using the Meldium web vault, navigate to \"Settings\". Locate the \"Export data\" function and click \"Show me my data\" to save the CSV file. Log into the Keeper web vault (keepersecurity.com/vault). Navigate to \"Backup\" (top right) and find the \"Export to .csv File\" option. Click \"Export Now\" to save the CSV file. The process is exactly the same as importing from Google Chrome. See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-chrome/ See detailed instructions on our help site at https://bitwarden.com/help/article/import-from-firefox/. See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-1password/. Using the Password Dragon desktop application, navigate to \"File\" → \"Export\" → \"To XML\". In the dialog that pops up select \"All Rows\" and check all fields. Click the \"Export\" button and save the XML file. Using the Enpass desktop application, navigate to \"File\" → \"Export\" → \"As CSV\". Select \"OK\" to the warning alert and save the CSV file. Note that the importer only supports files exported while Enpass is set to the English language, so adjust your settings accordingly. Using the Enpass 6 desktop application, click the menu button and navigate to \"File\" → \"Export\". Select the \".json\" file format option and save the JSON file. Using the Password Safe desktop application, navigate to \"File\" → \"Export To\" → \"XML format...\" and save the XML file. Using the Dashlane desktop application, navigate to \"File\" → \"Export\" → \"Unsecured archive (readable) in JSON format\" and save the JSON file. Using the mSecure desktop application, navigate to \"File\" → \"Export\" → \"CSV File...\" and save the CSV file. Using the Sticky Password desktop application, navigate to \"Menu\" (top right) → \"Export\" → \"Export all\". Select the unencrypted format XML option and save the XML file. Using the True Key desktop application, click the gear icon (top right) and then navigate to \"App Settings\". Click the \"Export\" button, enter your password and save the CSV file. Log into the Clipperz web application (clipperz.is/app). Click the hamburger menu icon in the top right to expand the navigation bar. Navigate to \"Data\" → \"Export\". Click the \"download HTML+JSON\" button to save the HTML file. Using the RoboForm Editor desktop application, navigate to \"RoboForm\" (top left) → \"Options\" → \"Account & Data\" and click the \"Export\" button. Select all of your data, change the \"Format\" to \"CSV file\" and then click the \"Export\" button to save the CSV file. Note: RoboForm only allows you to export Logins. Other items will not be exported. Log into the Passbolt web vault and navigate to the \"Passwords\" listing. Select all of the passwords you would like to export and click the \"Export\" button at the top of the listing. Choose the \"csv (lastpass)\" export format and click the \"Export\" button. Using the Ascendo DataVault desktop application, navigate to \"Tools\" → \"Export\". In the dialog that pops up, select the \"All Items (DVX, CSV)\" option. Click the \"Ok\" button to save the CSV file. Using the Password Boss desktop application, navigate to \"File\" → \"Export data\" → \"Password Boss JSON - not encrypted\" and save the JSON file. Log into the Zoho web vault (vault.zoho.com). Navigate to \"Tools\" → \"Export Secrets\". Select \"All Secrets\" and click the \"Zoho Vault Format CSV\" button. Highlight and copy the data from the textarea. Open a text editor like Notepad and paste the data. Save the data from the text editor as zoho_export.csv. Using the SplashID Safe desktop application, click on the SplashID blue lock logo in the top right corner. Navigate to \"Export\" → \"Export as CSV\" and save the CSV file. Using the PassKeep mobile app, navigate to \"Backup/Restore\". Locate the \"CSV Backup/Restore\" section and click \"Backup to CSV\" to save the CSV file. Make sure you have python-keyring and python-gnomekeyring installed. Save the GNOME Keyring Import/Export python script to your desktop as pw_helper.py. Open terminal and run chmod +rx Desktop/pw_helper.py and then python Desktop/pw_helper.py export Desktop/my_passwords.json. Then upload the resulting my_passwords.json file here to Bitwarden. Using the Password Agent desktop application navigate to \"File\" → \"Export\", select the \"Fields to export\" button and check all of the fields, change the \"Output format\" to \"CSV\", and then click the \"Start\" button to save the CSV file. Log into the Passpack website vault and navigate to \"Settings\" → \"Export\", then click the \"Download\" button to save the CSV file. Open your Passman vault and click on \"Settings\" in the bottom left corner. In the \"Settings\" window switch to the \"Export credentials\" tab and choose \"JSON\" as the export type. Enter your vault's passphrase and click the \"Export\" button to save the JSON file. Open the Avast Passwords desktop application and navigate to \"Settings\" → \"Import/export data\". Select the \"Export\" button for the \"Export to CSV file\" option to save the CSV file. Open the Avast Passwords desktop application and navigate to \"Settings\" → \"Import/export data\". Select the \"Export\" button for the \"Export to JSON file\" option to save the JSON file. Open the F-Secure KEY desktop application and navigate to \"Settings\" → \"Export Passwords\". Select the \"Export\" button, enter your master password, and save the FSK file. Open the Kaspersky Password Manager desktop application and navigate to \"Settings\" → \"Import/Export\". Locate the \"Export to text file\" section and select the \"Export\" button to save the TXT file. Open the RememBear desktop application and navigate to \"Settings\" → \"Account\" → \"Export\". Enter your master password and select the \"Export Anyway\" button to save the CSV file. Open the PasswordWallet desktop application and navigate to \"File\" → \"Export\" → \"Visible entries to text file\". Enter your password and select the \"Ok\" button to save the TXT file. Open the Myki desktop browser extension and navigate to \"Advanced\" → \"Export Accounts\" and then scan the QR code with your mobile device. Various CSV files will then be saved to your computer's downloads folder. Export your SecureSafe password safe to a CSV file with a comma delimiter. Open the LogMeOnce browser extension, then navigate to \"Open Menu\" → \"Export To\" and select \"CSV File\" to save the CSV file. Open the BlackBerry Password Keeper application, then navigate to \"Settings\" → \"Import/Export\". Select \"Export Passwords\" and follow the instructions on screen to save the unencrypted CSV file. Open the Buttercup desktop application and unlock your vault. Right click on your vault's icon and select \"Export\" to save the CSV file. Open the Codebook desktop application and log in. Navigate to \"File\" → \"Export all\", then click \"Yes\" on the dialog and save the CSV file. Open the newest version of the Encryptr desktop application and allow all of your data to sync. Once syncing of your data is complete, the download icon in the top right corner will turn pink. Click the download icon and save the CSV file. From the Yoti browser extension, click on \"Settings\", then \"Export Saved Logins\" and save the CSV file.
","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-inactive-two-factor-report',\n templateUrl: 'inactive-two-factor-report.component.html',\n})\nexport class InactiveTwoFactorReportComponent extends CipherReportComponent implements OnInit {\n services = new Map();\n cipherDocs = new Map();\n\n constructor(protected cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService) {\n super(componentFactoryResolver, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n try {\n await this.load2fa();\n } catch { }\n if (this.services.size > 0) {\n const allCiphers = await this.getAllCiphers();\n const inactive2faCiphers: CipherView[] = [];\n const promises: Promise[] = [];\n const docs = new Map();\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || (c.login.totp != null && c.login.totp !== '') || !c.login.hasUris ||\n c.isDeleted) {\n return;\n }\n for (let i = 0; i < c.login.uris.length; i++) {\n const u = c.login.uris[i];\n if (u.uri != null && u.uri !== '') {\n const hostname = Utils.getHostname(u.uri);\n if (hostname != null && this.services.has(hostname)) {\n if (this.services.get(hostname) != null) {\n docs.set(c.id, this.services.get(hostname));\n }\n inactive2faCiphers.push(c);\n break;\n }\n }\n }\n });\n await Promise.all(promises);\n this.ciphers = inactive2faCiphers;\n this.cipherDocs = docs;\n }\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n private async load2fa() {\n if (this.services.size > 0) {\n return;\n }\n const response = await fetch(new Request('https://2fa.directory/api/v2/totp.json'));\n if (response.status !== 200) {\n throw new Error();\n }\n const responseJson = await response.json();\n for (const categoryName in responseJson) {\n if (responseJson.hasOwnProperty(categoryName)) {\n const category = responseJson[categoryName];\n for (const serviceName in category) {\n if (category.hasOwnProperty(serviceName)) {\n const service = category[serviceName];\n if (service.url != null) {\n const hostname = Utils.getHostname(service.url);\n if (hostname != null) {\n this.services.set(hostname, service.doc);\n }\n }\n }\n }\n }\n }\n }\n}\n","

{{'inactive2faReport' | i18n}} {{'loading' | i18n}}

{{'inactive2faReportDesc' | i18n}}

{{'loading' | i18n}}
{{'noInactive2fa' | i18n}} {{'inactive2faFoundDesc' | i18n : (ciphers.length | number)}}
{{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
{{'instructions' | i18n}}
","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-reused-passwords-report',\n templateUrl: 'reused-passwords-report.component.html',\n})\nexport class ReusedPasswordsReportComponent extends CipherReportComponent implements OnInit {\n passwordUseMap: Map;\n\n constructor(protected cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService) {\n super(componentFactoryResolver, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const ciphersWithPasswords: CipherView[] = [];\n this.passwordUseMap = new Map();\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '' || c.isDeleted) {\n return;\n }\n ciphersWithPasswords.push(c);\n if (this.passwordUseMap.has(c.login.password)) {\n this.passwordUseMap.set(c.login.password, this.passwordUseMap.get(c.login.password) + 1);\n } else {\n this.passwordUseMap.set(c.login.password, 1);\n }\n });\n const reusedPasswordCiphers = ciphersWithPasswords.filter(c =>\n this.passwordUseMap.has(c.login.password) && this.passwordUseMap.get(c.login.password) > 1);\n this.ciphers = reusedPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from an organization view\n return true;\n }\n}\n","

{{'reusedPasswordsReport' | i18n}} {{'loading' | i18n}}

{{'reusedPasswordsReportDesc' | i18n}}

{{'loading' | i18n}}
{{'noReusedPasswords' | i18n}} {{'reusedPasswordsFoundDesc' | i18n : (ciphers.length | number)}}
{{c.name}} {{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
{{'reusedXTimes' | i18n : passwordUseMap.get(c.login.password)}}
","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-unsecured-websites-report',\n templateUrl: 'unsecured-websites-report.component.html',\n})\nexport class UnsecuredWebsitesReportComponent extends CipherReportComponent implements OnInit {\n constructor(protected cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService) {\n super(componentFactoryResolver, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const unsecuredCiphers = allCiphers.filter(c => {\n if (c.type !== CipherType.Login || !c.login.hasUris || c.isDeleted) {\n return false;\n }\n return c.login.uris.some(u => u.uri != null && u.uri.indexOf('http://') === 0);\n });\n this.ciphers = unsecuredCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n}\n","

{{'unsecuredWebsitesReport' | i18n}} {{'loading' | i18n}}

{{'unsecuredWebsitesReportDesc' | i18n}}

{{'loading' | i18n}}
{{'noUnsecuredWebsites' | i18n}} {{'unsecuredWebsitesFoundDesc' | i18n : (ciphers.length | number)}}
{{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-weak-passwords-report',\n templateUrl: 'weak-passwords-report.component.html',\n})\nexport class WeakPasswordsReportComponent extends CipherReportComponent implements OnInit {\n\n passwordStrengthMap = new Map();\n\n private passwordStrengthCache = new Map();\n\n constructor(protected cipherService: CipherService, protected passwordGenerationService: PasswordGenerationService,\n componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService,\n userService: UserService) {\n super(componentFactoryResolver, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const weakPasswordCiphers: CipherView[] = [];\n const isUserNameNotEmpty = (c: CipherView): boolean => {\n return c.login.username != null && c.login.username.trim() !== '';\n };\n const getCacheKey = (c: CipherView): string => {\n return c.login.password + '_____' + (isUserNameNotEmpty(c) ? c.login.username : '');\n };\n\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '' || c.isDeleted) {\n return;\n }\n const hasUserName = isUserNameNotEmpty(c);\n const cacheKey = getCacheKey(c);\n if (!this.passwordStrengthCache.has(cacheKey)) {\n let userInput: string[] = [];\n if (hasUserName) {\n const atPosition = c.login.username.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(\n c.login.username.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/))\n .filter(i => i.length >= 3);\n } else {\n userInput = c.login.username.trim().toLowerCase().split(/[^A-Za-z0-9]/)\n .filter(i => i.length >= 3);\n }\n }\n const result = this.passwordGenerationService.passwordStrength(c.login.password,\n userInput.length > 0 ? userInput : null);\n this.passwordStrengthCache.set(cacheKey, result.score);\n }\n const score = this.passwordStrengthCache.get(cacheKey);\n if (score != null && score <= 2) {\n this.passwordStrengthMap.set(c.id, this.scoreKey(score));\n weakPasswordCiphers.push(c);\n }\n });\n weakPasswordCiphers.sort((a, b) => {\n return this.passwordStrengthCache.get(getCacheKey(a)) -\n this.passwordStrengthCache.get(getCacheKey(b));\n });\n this.ciphers = weakPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from the org view;\n return true;\n }\n\n private scoreKey(score: number): [string, string] {\n switch (score) {\n case 4:\n return ['strong', 'success'];\n case 3:\n return ['good', 'primary'];\n case 2:\n return ['weak', 'warning'];\n default:\n return ['veryWeak', 'danger'];\n }\n }\n}\n","

{{'weakPasswordsReport' | i18n}} {{'loading' | i18n}}

{{'weakPasswordsReportDesc' | i18n}}

{{'loading' | i18n}}
{{'noWeakPasswords' | i18n}} {{'weakPasswordsFoundDesc' | i18n : (ciphers.length | number)}}
{{c.name}} {{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
{{passwordStrengthMap.get(c.id)[0] | i18n}}
","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { AttachmentView } from 'jslib-common/models/view/attachmentView';\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from 'jslib-angular/components/attachments.component';\n\n@Component({\n selector: 'app-vault-attachments',\n templateUrl: 'attachments.component.html',\n})\nexport class AttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = false;\n\n constructor(cipherService: CipherService, i18nService: I18nService,\n cryptoService: CryptoService, userService: UserService,\n platformUtilsService: PlatformUtilsService, apiService: ApiService) {\n super(cipherService, i18nService, cryptoService, userService, platformUtilsService, apiService, window);\n }\n\n protected async reupload(attachment: AttachmentView) {\n if (this.showFixOldAttachments(attachment)) {\n await this.reuploadCipherAttachment(attachment, false);\n }\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return attachment.key == null && this.cipher.organizationId == null;\n }\n}\n","

{{'attachments' | i18n}} {{cipher.name}}

{{a.sizeName}}

{{'newAttachment' | i18n}}

{{'maxFileSize' | i18n}}
","import { BaseResponse } from './baseResponse';\n\nexport class AttachmentResponse extends BaseResponse {\n id: string;\n url: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.url = this.getResponseProperty('Url');\n this.fileName = this.getResponseProperty('FileName');\n this.key = this.getResponseProperty('Key');\n this.size = this.getResponseProperty('Size');\n this.sizeName = this.getResponseProperty('SizeName');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nexport class CollectionResponse extends BaseResponse {\n id: string;\n organizationId: string;\n name: string;\n externalId: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.name = this.getResponseProperty('Name');\n this.externalId = this.getResponseProperty('ExternalId');\n }\n}\n\nexport class CollectionDetailsResponse extends CollectionResponse {\n readOnly: boolean;\n\n constructor(response: any) {\n super(response);\n this.readOnly = this.getResponseProperty('ReadOnly') || false;\n }\n}\n\nexport class CollectionGroupDetailsResponse extends CollectionResponse {\n groups: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const groups = this.getResponseProperty('Groups');\n if (groups != null) {\n this.groups = groups.map((g: any) => new SelectionReadOnlyResponse(g));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { GlobalDomainResponse } from './globalDomainResponse';\n\nexport class DomainsResponse extends BaseResponse {\n equivalentDomains: string[][];\n globalEquivalentDomains: GlobalDomainResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.equivalentDomains = this.getResponseProperty('EquivalentDomains');\n const globalEquivalentDomains = this.getResponseProperty('GlobalEquivalentDomains');\n if (globalEquivalentDomains != null) {\n this.globalEquivalentDomains = globalEquivalentDomains.map((d: any) => new GlobalDomainResponse(d));\n } else {\n this.globalEquivalentDomains = [];\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class FolderResponse extends BaseResponse {\n id: string;\n name: string;\n revisionDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { SendType } from '../../enums/sendType';\n\nimport { SendFileApi } from '../api/sendFileApi';\nimport { SendTextApi } from '../api/sendTextApi';\n\nexport class SendResponse extends BaseResponse {\n id: string;\n accessId: string;\n type: SendType;\n name: string;\n notes: string;\n file: SendFileApi;\n text: SendTextApi;\n key: string;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: string;\n expirationDate: string;\n deletionDate: string;\n password: string;\n disable: boolean;\n hideEmail: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.accessId = this.getResponseProperty('AccessId');\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n this.notes = this.getResponseProperty('Notes');\n this.key = this.getResponseProperty('Key');\n this.maxAccessCount = this.getResponseProperty('MaxAccessCount');\n this.accessCount = this.getResponseProperty('AccessCount');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n this.expirationDate = this.getResponseProperty('ExpirationDate');\n this.deletionDate = this.getResponseProperty('DeletionDate');\n this.password = this.getResponseProperty('Password');\n this.disable = this.getResponseProperty('Disabled') || false;\n this.hideEmail = this.getResponseProperty('HideEmail') || false;\n\n const text = this.getResponseProperty('Text');\n if (text != null) {\n this.text = new SendTextApi(text);\n }\n\n const file = this.getResponseProperty('File');\n if (file != null) {\n this.file = new SendFileApi(file);\n }\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class SendFileApi extends BaseResponse {\n id: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.id = this.getResponseProperty('Id');\n this.fileName = this.getResponseProperty('FileName');\n this.key = this.getResponseProperty('Key');\n this.size = this.getResponseProperty('Size');\n this.sizeName = this.getResponseProperty('SizeName');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class SendTextApi extends BaseResponse {\n text: string;\n hidden: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.text = this.getResponseProperty('Text');\n this.hidden = this.getResponseProperty('Hidden') || false;\n }\n}\n","import {\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { TotpService } from 'jslib-common/abstractions/totp.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CiphersComponent as BaseCiphersComponent } from '../../vault/ciphers.component';\n\n@Component({\n selector: 'app-org-vault-ciphers',\n templateUrl: '../../vault/ciphers.component.html',\n})\nexport class CiphersComponent extends BaseCiphersComponent {\n @Output() onEventsClicked = new EventEmitter();\n\n organization: Organization;\n accessEvents = false;\n\n protected allCiphers: CipherView[] = [];\n\n constructor(searchService: SearchService, toasterService: ToasterService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, cipherService: CipherService,\n private apiService: ApiService, eventService: EventService, totpService: TotpService,\n userService: UserService, passwordRepromptService: PasswordRepromptService) {\n super(searchService, toasterService, i18nService, platformUtilsService, cipherService,\n eventService, totpService, userService, passwordRepromptService);\n }\n\n async load(filter: (cipher: CipherView) => boolean = null) {\n if (this.organization.canManageAllCollections) {\n this.accessEvents = this.organization.useEvents;\n this.allCiphers = await this.cipherService.getAllFromApiForOrganization(this.organization.id);\n } else {\n this.allCiphers = (await this.cipherService.getAllDecrypted()).filter(c => c.organizationId === this.organization.id);\n }\n await this.searchService.indexCiphers(this.organization.id, this.allCiphers);\n await this.applyFilter(filter);\n this.loaded = true;\n }\n\n async applyFilter(filter: (cipher: CipherView) => boolean = null) {\n if (this.organization.canManageAllCollections) {\n await super.applyFilter(filter);\n } else {\n const f = (c: CipherView) => c.organizationId === this.organization.id && (filter == null || filter(c));\n await super.applyFilter(f);\n }\n }\n\n async search(timeout: number = null) {\n await super.search(timeout, this.allCiphers);\n }\n events(c: CipherView) {\n this.onEventsClicked.emit(c);\n }\n\n protected deleteCipher(id: string) {\n if (!this.organization.canManageAllCollections) {\n return super.deleteCipher(id, this.deleted);\n }\n return this.deleted ? this.apiService.deleteCipherAdmin(id) : this.apiService.putDeleteCipherAdmin(id);\n }\n\n protected showFixOldAttachments(c: CipherView) {\n return this.organization.canManageAllCollections && c.hasOldAttachments;\n }\n}\n","import {\n Component,\n OnDestroy,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { CollectionsComponent as BaseCollectionsComponent } from 'jslib-angular/components/collections.component';\n\n@Component({\n selector: 'app-vault-collections',\n templateUrl: 'collections.component.html',\n})\nexport class CollectionsComponent extends BaseCollectionsComponent implements OnDestroy {\n constructor(collectionService: CollectionService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, cipherService: CipherService) {\n super(collectionService, platformUtilsService, i18nService, cipherService);\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n this.collections.forEach(c => this.check(c, select));\n }\n}\n","

{{'collections' | i18n}} {{cipher.name}}

{{'collectionsDesc' | i18n}}

{{'collections' | i18n}}

{{'noCollectionsInList' | i18n}}
{{c.name}}
","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CollectionData } from 'jslib-common/models/data/collectionData';\nimport { Collection } from 'jslib-common/models/domain/collection';\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CollectionDetailsResponse } from 'jslib-common/models/response/collectionResponse';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { GroupingsComponent as BaseGroupingsComponent } from '../../vault/groupings.component';\n\n@Component({\n selector: 'app-org-vault-groupings',\n templateUrl: '../../vault/groupings.component.html',\n})\nexport class GroupingsComponent extends BaseGroupingsComponent {\n organization: Organization;\n\n constructor(collectionService: CollectionService, folderService: FolderService,\n storageService: StorageService, userService: UserService,\n private apiService: ApiService, private i18nService: I18nService) {\n super(collectionService, folderService, storageService, userService);\n }\n\n async loadCollections() {\n if (!this.organization.canManageAllCollections) {\n await super.loadCollections(this.organization.id);\n return;\n }\n\n const collections = await this.apiService.getCollections(this.organization.id);\n if (collections != null && collections.data != null && collections.data.length) {\n const collectionDomains = collections.data.map(r =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collectionDomains);\n } else {\n this.collections = [];\n }\n\n const unassignedCollection = new CollectionView();\n unassignedCollection.name = this.i18nService.t('unassigned');\n unassignedCollection.id = 'unassigned';\n unassignedCollection.organizationId = this.organization.id;\n unassignedCollection.readOnly = true;\n this.collections.push(unassignedCollection);\n this.nestedCollections = await this.collectionService.getAllNested(this.collections);\n }\n\n collapse(grouping: CollectionView) {\n super.collapse(grouping, 'org_');\n }\n\n isCollapsed(grouping: CollectionView) {\n return super.isCollapsed(grouping, 'org_');\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n Input,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { CipherRepromptType } from 'jslib-common/enums/cipherRepromptType';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { ModalComponent } from '../modal.component';\n\nimport { BulkDeleteComponent } from './bulk-delete.component';\nimport { BulkMoveComponent } from './bulk-move.component';\nimport { BulkRestoreComponent } from './bulk-restore.component';\nimport { BulkShareComponent } from './bulk-share.component';\nimport { CiphersComponent } from './ciphers.component';\n\n@Component({\n selector: 'app-vault-bulk-actions',\n templateUrl: 'bulk-actions.component.html',\n})\nexport class BulkActionsComponent {\n @Input() ciphersComponent: CiphersComponent;\n @Input() modal: ModalComponent;\n @Input() deleted: boolean;\n @Input() organization: Organization;\n\n @ViewChild('bulkDeleteTemplate', { read: ViewContainerRef, static: true }) bulkDeleteModalRef: ViewContainerRef;\n @ViewChild('bulkRestoreTemplate', { read: ViewContainerRef, static: true }) bulkRestoreModalRef: ViewContainerRef;\n @ViewChild('bulkMoveTemplate', { read: ViewContainerRef, static: true }) bulkMoveModalRef: ViewContainerRef;\n @ViewChild('bulkShareTemplate', { read: ViewContainerRef, static: true }) bulkShareModalRef: ViewContainerRef;\n\n constructor(private toasterService: ToasterService,\n private i18nService: I18nService,\n private componentFactoryResolver: ComponentFactoryResolver,\n private passwordRepromptService: PasswordRepromptService) { }\n\n async bulkDelete() {\n if (!await this.promptPassword()) {\n return;\n }\n\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.bulkDeleteModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(BulkDeleteComponent, this.bulkDeleteModalRef);\n\n childComponent.permanent = this.deleted;\n childComponent.cipherIds = selectedIds;\n childComponent.organization = this.organization;\n childComponent.onDeleted.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n async bulkRestore() {\n if (!await this.promptPassword()) {\n return;\n }\n\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.bulkRestoreModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(BulkRestoreComponent, this.bulkRestoreModalRef);\n\n childComponent.cipherIds = selectedIds;\n childComponent.onRestored.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n async bulkShare() {\n if (!await this.promptPassword()) {\n return;\n }\n\n const selectedCiphers = this.ciphersComponent.getSelected();\n if (selectedCiphers.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.bulkShareModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(BulkShareComponent, this.bulkShareModalRef);\n\n childComponent.ciphers = selectedCiphers;\n childComponent.onShared.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n async bulkMove() {\n if (!await this.promptPassword()) {\n return;\n }\n\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.bulkMoveModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(BulkMoveComponent, this.bulkMoveModalRef);\n\n childComponent.cipherIds = selectedIds;\n childComponent.onMoved.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n selectAll(select: boolean) {\n this.ciphersComponent.selectAll(select);\n }\n\n private async promptPassword() {\n const selectedCiphers = this.ciphersComponent.getSelected();\n const notProtected = !selectedCiphers.find(cipher => cipher.reprompt !== CipherRepromptType.None);\n\n return notProtected || await this.passwordRepromptService.showPasswordPrompt();\n }\n}\n","
","import Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { SendFileData } from '../data/sendFileData';\n\nimport { SendFileView } from '../view/sendFileView';\n\nexport class SendFile extends Domain {\n id: string;\n size: string;\n sizeName: string;\n fileName: EncString;\n\n constructor(obj?: SendFileData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.size = obj.size;\n this.buildDomainModel(this, obj, {\n id: null,\n sizeName: null,\n fileName: null,\n }, alreadyEncrypted, ['id', 'sizeName']);\n }\n\n async decrypt(key: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(new SendFileView(this), {\n fileName: null,\n }, null, key);\n return view;\n }\n}\n","import Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { SendTextData } from '../data/sendTextData';\n\nimport { SendTextView } from '../view/sendTextView';\n\nexport class SendText extends Domain {\n text: EncString;\n hidden: boolean;\n\n constructor(obj?: SendTextData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.hidden = obj.hidden;\n this.buildDomainModel(this, obj, {\n text: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(key: SymmetricCryptoKey): Promise {\n return this.decryptObj(new SendTextView(this), {\n text: null,\n }, null, key);\n }\n}\n","import { CipherRequest } from './cipherRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherWithIdRequest extends CipherRequest {\n id: string;\n\n constructor(cipher: Cipher) {\n super(cipher);\n this.id = cipher.id;\n }\n}\n","import { Folder } from '../domain/folder';\n\nexport class FolderRequest {\n name: string;\n\n constructor(folder: Folder) {\n this.name = folder.name ? folder.name.encryptedString : null;\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n@Directive({\n selector: '[appSelectCopy]',\n})\nexport class SelectCopyDirective {\n constructor(private el: ElementRef, private platformUtilsService: PlatformUtilsService) { }\n\n @HostListener('copy') onCopy() {\n if (window == null) {\n return;\n }\n let copyText = '';\n const selection = window.getSelection();\n for (let i = 0; i < selection.rangeCount; i++) {\n const range = selection.getRangeAt(i);\n const text = range.toString();\n\n // The selection should only contain one line of text. In some cases however, the\n // selection contains newlines and space characters from the indentation of following\n // sibling nodes. To avoid copying passwords containing trailing newlines and spaces\n // that aren't part of the password, the selection has to be trimmed.\n let stringEndPos = text.length;\n const newLinePos = text.search(/(?:\\r\\n|\\r|\\n)/);\n if (newLinePos > -1) {\n const otherPart = text.substr(newLinePos).trim();\n if (otherPart === '') {\n stringEndPos = newLinePos;\n }\n }\n copyText += text.substring(0, stringEndPos);\n }\n this.platformUtilsService.copyToClipboard(copyText, { window: window });\n }\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\n/*\n An updated pipe that sanitizes HTML, highlights numbers and special characters (in different colors each)\n and handles Unicode / Emoji characters correctly.\n*/\n@Pipe({ name: 'colorPassword' })\nexport class ColorPasswordPipe implements PipeTransform {\n transform(password: string) {\n // Regex Unicode property escapes for checking if emoji in passwords.\n // Transpiled version of /\\p{Emoji_Presentation}/gu using https://mothereff.in/regexpu. Used for compatability in older browsers.\n const regexpEmojiPresentation = /(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])/g;\n // Convert to an array to handle cases that stings have special characters, ie: emoji.\n const passwordArray = Array.from(password);\n let colorizedPassword = '';\n for (let i = 0; i < passwordArray.length; i++) {\n let character = passwordArray[i];\n let isSpecial = false;\n // Sanitize HTML first.\n switch (character) {\n case '&':\n character = '&';\n isSpecial = true;\n break;\n case '<':\n character = '<';\n isSpecial = true;\n break;\n case '>':\n character = '>';\n isSpecial = true;\n break;\n case ' ':\n character = ' ';\n isSpecial = true;\n break;\n default:\n break;\n }\n let type = 'letter';\n if (character.match(regexpEmojiPresentation)) {\n type = 'emoji';\n } else if (isSpecial || character.match(/[^\\w ]/)) {\n type = 'special';\n } else if (character.match(/\\d/)) {\n type = 'number';\n }\n colorizedPassword += '' + character + '';\n }\n return colorizedPassword;\n }\n}\n","import { FolderResponse } from '../response/folderResponse';\n\nexport class FolderData {\n id: string;\n userId: string;\n name: string;\n revisionDate: string;\n\n constructor(response: FolderResponse, userId: string) {\n this.userId = userId;\n this.name = response.name;\n this.id = response.id;\n this.revisionDate = response.revisionDate;\n }\n}\n","import { FolderData } from '../data/folderData';\n\nimport { FolderView } from '../view/folderView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\n\nexport class Folder extends Domain {\n id: string;\n name: EncString;\n revisionDate: Date;\n\n constructor(obj?: FolderData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n name: null,\n }, alreadyEncrypted, ['id']);\n\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n }\n\n decrypt(): Promise {\n return this.decryptObj(new FolderView(this), {\n name: null,\n }, null);\n }\n}\n","import { EnvironmentService } from './environment.service';\n\nexport abstract class NotificationsService {\n init: (environmentService: EnvironmentService) => Promise;\n updateConnection: (sync?: boolean) => Promise;\n reconnectFromActivity: () => Promise;\n disconnectFromInactivity: () => Promise;\n}\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 418;","import {\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-frontend-layout',\n templateUrl: 'frontend-layout.component.html',\n})\nexport class FrontendLayoutComponent implements OnInit, OnDestroy {\n version: string;\n year: string = '2015';\n\n constructor(private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.year = new Date().getFullYear().toString();\n this.version = await this.platformUtilsService.getApplicationVersion();\n document.body.classList.add('layout_frontend');\n }\n\n ngOnDestroy() {\n document.body.classList.remove('layout_frontend');\n }\n}\n","
© {{year}}, Bitwarden Inc. (Powered by Vaultwarden)
{{'versionNumber' | i18n : version}}
","import {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { ActivatedRoute } from '@angular/router';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nconst BroadcasterSubscriptionId = 'OrganizationLayoutComponent';\n\n@Component({\n selector: 'app-organization-layout',\n templateUrl: 'organization-layout.component.html',\n})\nexport class OrganizationLayoutComponent implements OnInit, OnDestroy {\n organization: Organization;\n businessTokenPromise: Promise;\n private organizationId: string;\n private businessUrl: string;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private broadcasterService: BroadcasterService, private ngZone: NgZone,\n private apiService: ApiService, private platformUtilsService: PlatformUtilsService,\n private environmentService: EnvironmentService) { }\n\n ngOnInit() {\n this.businessUrl = 'https://portal.bitwarden.com';\n if (this.environmentService.enterpriseUrl != null) {\n this.businessUrl = this.environmentService.enterpriseUrl;\n } else if (this.environmentService.baseUrl != null) {\n this.businessUrl = this.environmentService.baseUrl + '/portal';\n }\n\n document.body.classList.remove('layout_frontend');\n this.route.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n });\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'updatedOrgLicense':\n await this.load();\n break;\n }\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async load() {\n this.organization = await this.userService.getOrganization(this.organizationId);\n }\n\n async goToBusinessPortal() {\n if (this.businessTokenPromise != null) {\n return;\n }\n try {\n this.businessTokenPromise = this.apiService.getEnterprisePortalSignInToken();\n const token = await this.businessTokenPromise;\n if (token != null) {\n const userId = await this.userService.getUserId();\n this.platformUtilsService.launchUri(this.businessUrl + '/login?userId=' + userId +\n '&token=' + (window as any).encodeURIComponent(token) + '&organizationId=' + this.organization.id);\n }\n } catch { }\n this.businessTokenPromise = null;\n }\n\n get showMenuBar() {\n return this.showManageTab || this.showToolsTab || this.organization.isOwner;\n }\n\n get showManageTab(): boolean {\n return this.organization.canManageUsers ||\n this.organization.canManageAssignedCollections ||\n this.organization.canManageAllCollections ||\n this.organization.canManageGroups ||\n this.organization.canManagePolicies ||\n this.organization.canAccessEventLogs;\n }\n\n get showToolsTab(): boolean {\n return this.organization.canAccessImportExport || this.organization.canAccessReports;\n }\n\n get showBusinessPortalButton(): boolean {\n return this.organization.useBusinessPortal && this.organization.canAccessBusinessPortal;\n }\n\n get toolsRoute(): string {\n return this.organization.canAccessImportExport ?\n 'tools/import' :\n 'tools/exposed-passwords-report';\n }\n\n get manageRoute(): string {\n let route: string;\n switch (true) {\n case this.organization.canManageUsers:\n route = 'manage/people';\n break;\n case this.organization.canManageAssignedCollections || this.organization.canManageAllCollections:\n route = 'manage/collections';\n break;\n case this.organization.canManageGroups:\n route = 'manage/groups';\n break;\n case this.organization.canManagePolicies:\n route = 'manage/policies';\n break;\n case this.organization.canAccessEventLogs:\n route = 'manage/events';\n break;\n }\n return route;\n }\n}\n","
{{organization.name}} {{'organization' | i18n}}
{{'organizationIsDisabled' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\n@Component({\n selector: 'app-user-layout',\n templateUrl: 'user-layout.component.html',\n})\nexport class UserLayoutComponent implements OnInit {\n ngOnInit() {\n document.body.classList.remove('layout_frontend');\n }\n}\n"," ","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { EmergencyAccessAcceptRequest } from 'jslib-common/models/request/emergencyAccessAcceptRequest';\n\n@Component({\n selector: 'app-accept-emergency',\n templateUrl: 'accept-emergency.component.html',\n})\nexport class AcceptEmergencyComponent implements OnInit {\n loading = true;\n authed = false;\n name: string;\n email: string;\n actionPromise: Promise;\n\n constructor(private router: Router, private toasterService: ToasterService,\n private i18nService: I18nService, private route: ActivatedRoute,\n private apiService: ApiService, private userService: UserService,\n private stateService: StateService) { }\n\n ngOnInit() {\n let fired = false;\n this.route.queryParams.subscribe(async qParams => {\n if (fired) {\n return;\n }\n fired = true;\n await this.stateService.remove('emergencyInvitation');\n let error = qParams.id == null || qParams.name == null || qParams.email == null || qParams.token == null;\n let errorMessage: string = null;\n if (!error) {\n this.authed = await this.userService.isAuthenticated();\n if (this.authed) {\n const request = new EmergencyAccessAcceptRequest();\n request.token = qParams.token;\n try {\n this.actionPromise = this.apiService.postEmergencyAccessAccept(qParams.id, request);\n await this.actionPromise;\n const toast: Toast = {\n type: 'success',\n title: this.i18nService.t('inviteAccepted'),\n body: this.i18nService.t('emergencyInviteAcceptedDesc'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/vault']);\n } catch (e) {\n error = true;\n errorMessage = e.message;\n }\n } else {\n await this.stateService.save('emergencyInvitation', qParams);\n this.email = qParams.email;\n this.name = qParams.name;\n if (this.name != null) {\n // Fix URL encoding of space issue with Angular\n this.name = this.name.replace(/\\+/g, ' ');\n }\n }\n }\n\n if (error) {\n const toast: Toast = {\n type: 'error',\n title: null,\n body: errorMessage != null ? this.i18nService.t('emergencyInviteAcceptFailedShort', errorMessage) :\n this.i18nService.t('emergencyInviteAcceptFailed'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/']);\n }\n\n this.loading = false;\n });\n }\n}\n","
\"Bitwarden\"

{{'loading' | i18n}}

{{'emergencyAccess' | i18n}}

{{name}}

{{'acceptEmergencyAccess' | i18n}}


","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { OrganizationUserAcceptRequest } from 'jslib-common/models/request/organizationUserAcceptRequest';\nimport { OrganizationUserResetPasswordEnrollmentRequest } from 'jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest';\n\nimport { Utils } from 'jslib-common/misc/utils';\nimport { Policy } from 'jslib-common/models/domain/policy';\n\n@Component({\n selector: 'app-accept-organization',\n templateUrl: 'accept-organization.component.html',\n})\nexport class AcceptOrganizationComponent implements OnInit {\n loading = true;\n authed = false;\n orgName: string;\n email: string;\n actionPromise: Promise;\n\n constructor(private router: Router, private toasterService: ToasterService,\n private i18nService: I18nService, private route: ActivatedRoute,\n private apiService: ApiService, private userService: UserService,\n private stateService: StateService, private cryptoService: CryptoService,\n private policyService: PolicyService) { }\n\n ngOnInit() {\n let fired = false;\n this.route.queryParams.subscribe(async qParams => {\n if (fired) {\n return;\n }\n fired = true;\n await this.stateService.remove('orgInvitation');\n let error = qParams.organizationId == null || qParams.organizationUserId == null || qParams.token == null;\n let errorMessage: string = null;\n if (!error) {\n this.authed = await this.userService.isAuthenticated();\n if (this.authed) {\n const request = new OrganizationUserAcceptRequest();\n request.token = qParams.token;\n try {\n if (await this.performResetPasswordAutoEnroll(qParams)) {\n this.actionPromise = this.apiService.postOrganizationUserAccept(qParams.organizationId,\n qParams.organizationUserId, request).then(() => {\n // Retrieve Public Key\n return this.apiService.getOrganizationKeys(qParams.organizationId);\n }).then(async response => {\n if (response == null) {\n throw new Error(this.i18nService.t('resetPasswordOrgKeysError'));\n }\n\n const publicKey = Utils.fromB64ToArray(response.publicKey);\n\n // RSA Encrypt user's encKey.key with organization public key\n const encKey = await this.cryptoService.getEncKey();\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n // Create request and execute enrollment\n const resetRequest = new OrganizationUserResetPasswordEnrollmentRequest();\n resetRequest.resetPasswordKey = encryptedKey.encryptedString;\n\n // Get User Id\n const userId = await this.userService.getUserId();\n\n return this.apiService.putOrganizationUserResetPasswordEnrollment(qParams.organizationId, userId, resetRequest);\n });\n } else {\n this.actionPromise = this.apiService.postOrganizationUserAccept(qParams.organizationId,\n qParams.organizationUserId, request);\n }\n\n await this.actionPromise;\n const toast: Toast = {\n type: 'success',\n title: this.i18nService.t('inviteAccepted'),\n body: this.i18nService.t('inviteAcceptedDesc'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/vault']);\n } catch (e) {\n error = true;\n errorMessage = e.message;\n }\n } else {\n await this.stateService.save('orgInvitation', qParams);\n this.email = qParams.email;\n this.orgName = qParams.organizationName;\n if (this.orgName != null) {\n // Fix URL encoding of space issue with Angular\n this.orgName = this.orgName.replace(/\\+/g, ' ');\n }\n }\n }\n\n if (error) {\n const toast: Toast = {\n type: 'error',\n title: null,\n body: errorMessage != null ? this.i18nService.t('inviteAcceptFailedShort', errorMessage) :\n this.i18nService.t('inviteAcceptFailed'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/']);\n }\n\n this.loading = false;\n });\n }\n\n private async performResetPasswordAutoEnroll(qParams: any): Promise {\n let policyList: Policy[] = null;\n try {\n const policies = await this.apiService.getPoliciesByToken(qParams.organizationId, qParams.token,\n qParams.email, qParams.organizationUserId);\n policyList = this.policyService.mapPoliciesFromToken(policies);\n } catch { }\n\n if (policyList != null) {\n const result = this.policyService.getResetPasswordPolicyOptions(policyList, qParams.organizationId);\n // Return true if policy enabled and auto-enroll enabled\n return result[1] && result[0].autoEnrollEnabled;\n }\n\n return false;\n }\n}\n","
\"Bitwarden\"

{{'loading' | i18n}}

{{'joinOrganization' | i18n}}

{{orgName}} {{email}}

{{'joinOrganizationDesc' | i18n}}


","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { HintComponent as BaseHintComponent } from 'jslib-angular/components/hint.component';\n\n@Component({\n selector: 'app-hint',\n templateUrl: 'hint.component.html',\n})\nexport class HintComponent extends BaseHintComponent {\n constructor(router: Router, i18nService: I18nService,\n apiService: ApiService, platformUtilsService: PlatformUtilsService) {\n super(router, i18nService, apiService, platformUtilsService);\n }\n}\n","

{{'passwordHint' | i18n}}

{{'enterEmailToGetHint' | i18n}}

{{'cancel' | i18n}}
","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\nimport { RouterService } from '../services/router.service';\n\nimport { LockComponent as BaseLockComponent } from 'jslib-angular/components/lock.component';\n\n@Component({\n selector: 'app-lock',\n templateUrl: 'lock.component.html',\n})\nexport class LockComponent extends BaseLockComponent {\n constructor(router: Router, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, messagingService: MessagingService,\n userService: UserService, cryptoService: CryptoService,\n storageService: StorageService, vaultTimeoutService: VaultTimeoutService,\n environmentService: EnvironmentService, private routerService: RouterService,\n stateService: StateService, apiService: ApiService) {\n super(router, i18nService, platformUtilsService, messagingService, userService, cryptoService,\n storageService, vaultTimeoutService, environmentService, stateService, apiService);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n this.onSuccessfulSubmit = () => {\n const previousUrl = this.routerService.getPreviousUrl();\n if (previousUrl !== '/' && previousUrl.indexOf('lock') === -1) {\n this.successRoute = previousUrl;\n }\n this.router.navigate([this.successRoute]);\n };\n }\n}\n","

{{'yourVaultIsLocked' | i18n}}

{{'loggedInAsEmailOn' | i18n : email : webVaultHostname}}

","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { LoginComponent as BaseLoginComponent } from 'jslib-angular/components/login.component';\n\nimport { Policy } from 'jslib-common/models/domain/policy';\n\n@Component({\n selector: 'app-login',\n templateUrl: 'login.component.html',\n})\nexport class LoginComponent extends BaseLoginComponent {\n\n showResetPasswordAutoEnrollWarning = false;\n\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, private route: ActivatedRoute,\n storageService: StorageService, stateService: StateService,\n platformUtilsService: PlatformUtilsService, environmentService: EnvironmentService,\n passwordGenerationService: PasswordGenerationService, cryptoFunctionService: CryptoFunctionService,\n private apiService: ApiService, private policyService: PolicyService) {\n super(authService, router,\n platformUtilsService, i18nService,\n stateService, environmentService,\n passwordGenerationService, cryptoFunctionService,\n storageService);\n this.onSuccessfulLoginNavigate = this.goAfterLogIn;\n }\n\n async ngOnInit() {\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.email != null && qParams.email.indexOf('@') > -1) {\n this.email = qParams.email;\n }\n if (qParams.premium != null) {\n this.stateService.save('loginRedirect', { route: '/settings/premium' });\n } else if (qParams.org != null) {\n this.stateService.save('loginRedirect',\n { route: '/settings/create-organization', qParams: { plan: qParams.org } });\n }\n await super.ngOnInit();\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n\n const invite = await this.stateService.get('orgInvitation');\n if (invite != null) {\n let policyList: Policy[] = null;\n try {\n const policies = await this.apiService.getPoliciesByToken(invite.organizationId, invite.token,\n invite.email, invite.organizationUserId);\n policyList = this.policyService.mapPoliciesFromToken(policies);\n } catch { }\n\n if (policyList != null) {\n const result = this.policyService.getResetPasswordPolicyOptions(policyList, invite.organizationId);\n // Set to true if policy enabled and auto-enroll enabled\n this.showResetPasswordAutoEnrollWarning = result[1] && result[0].autoEnrollEnabled;\n }\n }\n }\n\n async goAfterLogIn() {\n const orgInvite = await this.stateService.get('orgInvitation');\n const emergencyInvite = await this.stateService.get('emergencyInvitation');\n if (orgInvite != null) {\n this.router.navigate(['accept-organization'], { queryParams: orgInvite });\n } else if (emergencyInvite != null) {\n this.router.navigate(['accept-emergency'], { queryParams: emergencyInvite });\n } else {\n const loginRedirect = await this.stateService.get('loginRedirect');\n if (loginRedirect != null) {\n this.router.navigate([loginRedirect.route], { queryParams: loginRedirect.qParams });\n await this.stateService.remove('loginRedirect');\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n }\n}\n","

{{'loginOrCreateNewAccount' | i18n}}

{{'resetPasswordAutoEnrollInviteWarning' | i18n}}
{{'getMasterPasswordHint' | i18n}}

{{'createAccount' | i18n}}
","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { DeleteRecoverRequest } from 'jslib-common/models/request/deleteRecoverRequest';\n\n@Component({\n selector: 'app-recover-delete',\n templateUrl: 'recover-delete.component.html',\n})\nexport class RecoverDeleteComponent {\n email: string;\n formPromise: Promise;\n\n constructor(private router: Router, private apiService: ApiService,\n private toasterService: ToasterService, private i18nService: I18nService) {\n }\n\n async submit() {\n try {\n const request = new DeleteRecoverRequest();\n request.email = this.email.trim().toLowerCase();\n this.formPromise = this.apiService.postAccountRecoverDelete(request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('deleteRecoverEmailSent'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","

{{'deleteAccount' | i18n}}

{{'deleteRecoverDesc' | i18n}}


{{'cancel' | i18n}}
","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { TwoFactorRecoveryRequest } from 'jslib-common/models/request/twoFactorRecoveryRequest';\n\n@Component({\n selector: 'app-recover-two-factor',\n templateUrl: 'recover-two-factor.component.html',\n})\nexport class RecoverTwoFactorComponent {\n email: string;\n masterPassword: string;\n recoveryCode: string;\n formPromise: Promise;\n\n constructor(private router: Router, private apiService: ApiService,\n private toasterService: ToasterService, private i18nService: I18nService,\n private cryptoService: CryptoService, private authService: AuthService) { }\n\n async submit() {\n try {\n const request = new TwoFactorRecoveryRequest();\n request.recoveryCode = this.recoveryCode.replace(/\\s/g, '').toLowerCase();\n request.email = this.email.trim().toLowerCase();\n const key = await this.authService.makePreloginKey(this.masterPassword, request.email);\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n this.formPromise = this.apiService.postTwoFactorRecover(request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('twoStepRecoverDisabled'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","

{{'recoverAccountTwoStep' | i18n}}

{{'recoverAccountTwoStepDesc' | i18n}} {{'learnMore' | i18n}}


{{'cancel' | i18n}}
","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\n\nimport { RegisterComponent as BaseRegisterComponent } from 'jslib-angular/components/register.component';\n\nimport { MasterPasswordPolicyOptions } from 'jslib-common/models/domain/masterPasswordPolicyOptions';\nimport { Policy } from 'jslib-common/models/domain/policy';\n\nimport { PolicyData } from 'jslib-common/models/data/policyData';\nimport { ReferenceEventRequest } from 'jslib-common/models/request/referenceEventRequest';\n\n@Component({\n selector: 'app-register',\n templateUrl: 'register.component.html',\n})\nexport class RegisterComponent extends BaseRegisterComponent {\n showCreateOrgMessage = false;\n layout = '';\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n\n private policies: Policy[];\n\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, cryptoService: CryptoService,\n apiService: ApiService, private route: ActivatedRoute,\n stateService: StateService, platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService, private policyService: PolicyService) {\n super(authService, router, i18nService, cryptoService, apiService, stateService, platformUtilsService,\n passwordGenerationService);\n }\n\n getPasswordScoreAlertDisplay() {\n if (this.enforcedPolicyOptions == null) {\n return '';\n }\n\n let str: string;\n switch (this.enforcedPolicyOptions.minComplexity) {\n case 4:\n str = this.i18nService.t('strong');\n break;\n case 3:\n str = this.i18nService.t('good');\n break;\n default:\n str = this.i18nService.t('weak');\n break;\n }\n return str + ' (' + this.enforcedPolicyOptions.minComplexity + ')';\n }\n\n async ngOnInit() {\n const queryParamsSub = this.route.queryParams.subscribe(qParams => {\n this.referenceData = new ReferenceEventRequest();\n if (qParams.email != null && qParams.email.indexOf('@') > -1) {\n this.email = qParams.email;\n }\n if (qParams.premium != null) {\n this.stateService.save('loginRedirect', { route: '/settings/premium' });\n } else if (qParams.org != null) {\n this.showCreateOrgMessage = true;\n this.referenceData.flow = qParams.org;\n this.stateService.save('loginRedirect',\n { route: '/settings/create-organization', qParams: { plan: qParams.org } });\n }\n if (qParams.layout != null) {\n this.layout = this.referenceData.layout = qParams.layout;\n }\n if (qParams.reference != null) {\n this.referenceData.id = qParams.reference;\n } else {\n this.referenceData.id = ('; ' + document.cookie).split('; reference=').pop().split(';').shift();\n }\n if (this.referenceData.id === '') {\n this.referenceData.id = null;\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n const invite = await this.stateService.get('orgInvitation');\n if (invite != null) {\n try {\n const policies = await this.apiService.getPoliciesByToken(invite.organizationId, invite.token,\n invite.email, invite.organizationUserId);\n if (policies.data != null) {\n const policiesData = policies.data.map(p => new PolicyData(p));\n this.policies = policiesData.map(p => new Policy(p));\n }\n } catch { }\n }\n\n if (this.policies != null) {\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions(this.policies);\n }\n }\n\n async submit() {\n if (this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(this.masterPasswordScore, this.masterPassword,\n this.enforcedPolicyOptions)) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPasswordPolicyRequirementsNotMet'));\n return;\n }\n\n await super.submit();\n }\n}\n","

Companies globally trust Bitwarden for password management.

Start your 7-day free trial!

Quickly deploy your organization

Use Bitwarden across all platforms

Collaborate and share securely

\"Wired\"
\"Bitwarden has become a popular choice among open-source software advocates. After using it for a few months, I can see why.\" - February 2020

Enterprise 3 layout

Enterprise 4 layout

{{'createAccount' | i18n}}

{{'createOrganizationCreatePersonalAccount' | i18n}}
{{'emailAddressDesc' | i18n}}
{{'yourNameDesc' | i18n}}
{{'masterPasswordPolicyInEffect' | i18n}}
  • 0\"> {{'policyInEffectMinComplexity' | i18n : getPasswordScoreAlertDisplay()}}
  • 0\"> {{'policyInEffectMinLength' | i18n : enforcedPolicyOptions?.minLength.toString()}}
  • {{'policyInEffectUppercase' | i18n}}
  • {{'policyInEffectLowercase' | i18n}}
  • {{'policyInEffectNumbers' | i18n}}
  • {{'policyInEffectSpecial' | i18n : '!@#$%^&*'}}
{{'masterPassDesc' | i18n}}
{{'masterPassHintDesc' | i18n}}

{{'cancel' | i18n}}
","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport {\n SetPasswordComponent as BaseSetPasswordComponent,\n} from 'jslib-angular/components/set-password.component';\n\n@Component({\n selector: 'app-set-password',\n templateUrl: 'set-password.component.html',\n})\nexport class SetPasswordComponent extends BaseSetPasswordComponent {\n constructor(apiService: ApiService, i18nService: I18nService,\n cryptoService: CryptoService, messagingService: MessagingService,\n userService: UserService, passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService, router: Router,\n syncService: SyncService, route: ActivatedRoute) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService, router, apiService, syncService, route);\n }\n}\n","

{{'setMasterPassword' | i18n}}

{{'loading' | i18n}}
{{'ssoCompleteRegistration' | i18n}}
{{'masterPasswordPolicyInEffect' | i18n}}
  • 0\"> {{'policyInEffectMinComplexity' | i18n : getPasswordScoreAlertDisplay()}}
  • 0\"> {{'policyInEffectMinLength' | i18n : enforcedPolicyOptions?.minLength.toString()}}
  • {{'policyInEffectUppercase' | i18n}}
  • {{'policyInEffectLowercase' | i18n}}
  • {{'policyInEffectNumbers' | i18n}}
  • {{'policyInEffectSpecial' | i18n : '!@#$%^&*'}}
{{'masterPassDesc' | i18n}}
{{'masterPassHintDesc' | i18n}}

","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { SsoComponent as BaseSsoComponent } from 'jslib-angular/components/sso.component';\n\nconst IdentifierStorageKey = 'ssoOrgIdentifier';\n\n@Component({\n selector: 'app-sso',\n templateUrl: 'sso.component.html',\n})\nexport class SsoComponent extends BaseSsoComponent {\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, route: ActivatedRoute,\n storageService: StorageService, stateService: StateService,\n platformUtilsService: PlatformUtilsService, apiService: ApiService,\n cryptoFunctionService: CryptoFunctionService,\n passwordGenerationService: PasswordGenerationService) {\n super(authService, router, i18nService, route, storageService, stateService, platformUtilsService,\n apiService, cryptoFunctionService, passwordGenerationService);\n this.redirectUri = window.location.origin + '/sso-connector.html';\n this.clientId = 'web';\n }\n\n async ngOnInit() {\n super.ngOnInit();\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n } else {\n const storedIdentifier = await this.storageService.get(IdentifierStorageKey);\n if (storedIdentifier != null) {\n this.identifier = storedIdentifier;\n }\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n\n async submit() {\n await this.storageService.save(IdentifierStorageKey, this.identifier);\n if (this.clientId === 'browser') {\n document.cookie = `ssoHandOffMessage=${this.i18nService.t('ssoHandOff')};SameSite=strict`;\n }\n super.submit();\n }\n}\n","
{{'loading' | i18n}}

{{'ssoLogInWithOrgIdentifier' | i18n}}


{{'cancel' | i18n}}
","import { Directive } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { AuthResult } from 'jslib-common/models/domain/authResult';\n\n@Directive()\nexport class SsoComponent {\n identifier: string;\n loggingIn = false;\n\n formPromise: Promise;\n initiateSsoFormPromise: Promise;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n onSuccessfulLoginTwoFactorNavigate: () => Promise;\n onSuccessfulLoginChangePasswordNavigate: () => Promise;\n\n protected twoFactorRoute = '2fa';\n protected successRoute = 'lock';\n protected changePasswordRoute = 'set-password';\n protected clientId: string;\n protected redirectUri: string;\n protected state: string;\n protected codeChallenge: string;\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected route: ActivatedRoute,\n protected storageService: StorageService, protected stateService: StateService,\n protected platformUtilsService: PlatformUtilsService, protected apiService: ApiService,\n protected cryptoFunctionService: CryptoFunctionService,\n protected passwordGenerationService: PasswordGenerationService) { }\n\n async ngOnInit() {\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.code != null && qParams.state != null) {\n const codeVerifier = await this.storageService.get(ConstantsService.ssoCodeVerifierKey);\n const state = await this.storageService.get(ConstantsService.ssoStateKey);\n await this.storageService.remove(ConstantsService.ssoCodeVerifierKey);\n await this.storageService.remove(ConstantsService.ssoStateKey);\n if (qParams.code != null && codeVerifier != null && state != null && this.checkState(state, qParams.state)) {\n await this.logIn(qParams.code, codeVerifier, this.getOrgIdentiferFromState(qParams.state));\n }\n } else if (qParams.clientId != null && qParams.redirectUri != null && qParams.state != null &&\n qParams.codeChallenge != null) {\n this.redirectUri = qParams.redirectUri;\n this.state = qParams.state;\n this.codeChallenge = qParams.codeChallenge;\n this.clientId = qParams.clientId;\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n\n async submit(returnUri?: string, includeUserIdentifier?: boolean) {\n this.initiateSsoFormPromise = this.preValidate();\n if (await this.initiateSsoFormPromise) {\n const authorizeUrl = await this.buildAuthorizeUrl(returnUri, includeUserIdentifier);\n this.platformUtilsService.launchUri(authorizeUrl, { sameWindow: true });\n }\n }\n\n async preValidate(): Promise {\n if (this.identifier == null || this.identifier === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('ssoValidationFailed'),\n this.i18nService.t('ssoIdentifierRequired'));\n return false;\n }\n return await this.apiService.preValidateSso(this.identifier);\n }\n\n protected async buildAuthorizeUrl(returnUri?: string, includeUserIdentifier?: boolean): Promise {\n let codeChallenge = this.codeChallenge;\n let state = this.state;\n\n const passwordOptions: any = {\n type: 'password',\n length: 64,\n uppercase: true,\n lowercase: true,\n numbers: true,\n special: false,\n };\n\n if (codeChallenge == null) {\n const codeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions);\n const codeVerifierHash = await this.cryptoFunctionService.hash(codeVerifier, 'sha256');\n codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash);\n await this.storageService.save(ConstantsService.ssoCodeVerifierKey, codeVerifier);\n }\n\n if (state == null) {\n state = await this.passwordGenerationService.generatePassword(passwordOptions);\n if (returnUri) {\n state += `_returnUri='${returnUri}'`;\n }\n }\n\n // Add Organization Identifier to state\n state += `_identifier=${this.identifier}`;\n\n // Save state (regardless of new or existing)\n await this.storageService.save(ConstantsService.ssoStateKey, state);\n\n let authorizeUrl = this.apiService.identityBaseUrl + '/connect/authorize?' +\n 'client_id=' + this.clientId + '&redirect_uri=' + encodeURIComponent(this.redirectUri) + '&' +\n 'response_type=code&scope=api offline_access&' +\n 'state=' + state + '&code_challenge=' + codeChallenge + '&' +\n 'code_challenge_method=S256&response_mode=query&' +\n 'domain_hint=' + encodeURIComponent(this.identifier);\n\n if (includeUserIdentifier) {\n const userIdentifier = await this.apiService.getSsoUserIdentifier();\n authorizeUrl += `&user_identifier=${encodeURIComponent(userIdentifier)}`;\n }\n\n return authorizeUrl;\n }\n\n private async logIn(code: string, codeVerifier: string, orgIdFromState: string) {\n this.loggingIn = true;\n try {\n this.formPromise = this.authService.logInSso(code, codeVerifier, this.redirectUri);\n const response = await this.formPromise;\n if (response.twoFactor) {\n if (this.onSuccessfulLoginTwoFactorNavigate != null) {\n this.onSuccessfulLoginTwoFactorNavigate();\n } else {\n this.router.navigate([this.twoFactorRoute], {\n queryParams: {\n identifier: orgIdFromState,\n sso: 'true',\n },\n });\n }\n } else if (response.resetMasterPassword) {\n if (this.onSuccessfulLoginChangePasswordNavigate != null) {\n this.onSuccessfulLoginChangePasswordNavigate();\n } else {\n this.router.navigate([this.changePasswordRoute], {\n queryParams: {\n identifier: orgIdFromState,\n },\n });\n }\n } else {\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n } catch { }\n this.loggingIn = false;\n }\n\n private getOrgIdentiferFromState(state: string): string {\n if (state === null || state === undefined) {\n return null;\n }\n\n const stateSplit = state.split('_identifier=');\n return stateSplit.length > 1 ? stateSplit[1] : null;\n }\n\n private checkState(state: string, checkState: string): boolean {\n if (state === null || state === undefined) {\n return false;\n }\n if (checkState === null || checkState === undefined) {\n return false;\n }\n\n const stateSplit = state.split('_identifier=');\n const checkStateSplit = checkState.split('_identifier=');\n return stateSplit[0] === checkStateSplit[0];\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { TwoFactorOptionsComponent } from './two-factor-options.component';\n\nimport { ModalComponent } from '../modal.component';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { TwoFactorComponent as BaseTwoFactorComponent } from 'jslib-angular/components/two-factor.component';\n\n@Component({\n selector: 'app-two-factor',\n templateUrl: 'two-factor.component.html',\n})\nexport class TwoFactorComponent extends BaseTwoFactorComponent {\n @ViewChild('twoFactorOptions', { read: ViewContainerRef, static: true }) twoFactorOptionsModal: ViewContainerRef;\n\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, apiService: ApiService,\n platformUtilsService: PlatformUtilsService, stateService: StateService,\n environmentService: EnvironmentService, private componentFactoryResolver: ComponentFactoryResolver,\n storageService: StorageService, route: ActivatedRoute) {\n super(authService, router, i18nService, apiService, platformUtilsService, window, environmentService,\n stateService, storageService, route);\n this.onSuccessfulLoginNavigate = this.goAfterLogIn;\n }\n\n anotherMethod() {\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n const modal = this.twoFactorOptionsModal.createComponent(factory).instance;\n const childComponent = modal.show(TwoFactorOptionsComponent,\n this.twoFactorOptionsModal);\n\n childComponent.onProviderSelected.subscribe(async (provider: TwoFactorProviderType) => {\n modal.close();\n this.selectedProviderType = provider;\n await this.init();\n });\n childComponent.onRecoverSelected.subscribe(() => {\n modal.close();\n });\n }\n\n async goAfterLogIn() {\n const orgInvite = await this.stateService.get('orgInvitation');\n const emergencyInvite = await this.stateService.get('emergencyInvitation');\n if (orgInvite != null) {\n this.router.navigate(['accept-organization'], { queryParams: orgInvite });\n } else if (emergencyInvite != null) {\n this.router.navigate(['accept-emergency'], { queryParams: emergencyInvite });\n } else {\n const loginRedirect = await this.stateService.get('loginRedirect');\n if (loginRedirect != null) {\n this.router.navigate([loginRedirect.route], { queryParams: loginRedirect.qParams });\n await this.stateService.remove('loginRedirect');\n } else {\n this.router.navigate([this.successRoute], {\n queryParams: {\n identifier: this.identifier,\n },\n });\n }\n }\n }\n}\n","

{{title}}

{{'enterVerificationCodeApp' | i18n}}

{{'enterVerificationCodeEmail' | i18n : twoFactorEmail}}

{{'sendVerificationCodeEmailAgain' | i18n}}

{{'insertYubiKey' | i18n}}

\"\"

{{'noTwoStepProviders' | i18n}}

{{'noTwoStepProviders2' | i18n}}


{{'cancel' | i18n}}
","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport {\n TwoFactorOptionsComponent as BaseTwoFactorOptionsComponent,\n} from 'jslib-angular/components/two-factor-options.component';\n\n@Component({\n selector: 'app-two-factor-options',\n templateUrl: 'two-factor-options.component.html',\n})\nexport class TwoFactorOptionsComponent extends BaseTwoFactorOptionsComponent {\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService) {\n super(authService, router, i18nService, platformUtilsService, window);\n }\n}\n"," ","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class TwoFactorEmailRequest extends PasswordVerificationRequest {\n email: string;\n\n constructor(email: string, masterPasswordHash: string) {\n super();\n this.masterPasswordHash = masterPasswordHash;\n this.email = email;\n }\n}\n","import { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class AuthResult {\n twoFactor: boolean = false;\n resetMasterPassword: boolean = false;\n twoFactorProviders: Map = null;\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { VerifyEmailRequest } from 'jslib-common/models/request/verifyEmailRequest';\n\n@Component({\n selector: 'app-verify-email-token',\n templateUrl: 'verify-email-token.component.html',\n})\nexport class VerifyEmailTokenComponent implements OnInit {\n constructor(private router: Router, private toasterService: ToasterService,\n private i18nService: I18nService, private route: ActivatedRoute,\n private apiService: ApiService, private userService: UserService) { }\n\n ngOnInit() {\n let fired = false;\n this.route.queryParams.subscribe(async qParams => {\n if (fired) {\n return;\n }\n fired = true;\n if (qParams.userId != null && qParams.token != null) {\n try {\n await this.apiService.postAccountVerifyEmailToken(\n new VerifyEmailRequest(qParams.userId, qParams.token));\n const authed = await this.userService.isAuthenticated();\n if (authed) {\n await this.apiService.refreshIdentityToken();\n }\n this.toasterService.popAsync('success', null, this.i18nService.t('emailVerified'));\n this.router.navigate(['/']);\n return;\n } catch { }\n }\n this.toasterService.popAsync('error', null, this.i18nService.t('emailVerifiedFailed'));\n this.router.navigate(['/']);\n });\n }\n}\n","
\"Bitwarden\"

{{'loading' | i18n}}

","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { VerifyDeleteRecoverRequest } from 'jslib-common/models/request/verifyDeleteRecoverRequest';\n\n@Component({\n selector: 'app-verify-recover-delete',\n templateUrl: 'verify-recover-delete.component.html',\n})\nexport class VerifyRecoverDeleteComponent implements OnInit {\n email: string;\n formPromise: Promise;\n\n private userId: string;\n private token: string;\n\n constructor(private router: Router, private apiService: ApiService,\n private toasterService: ToasterService, private i18nService: I18nService,\n private route: ActivatedRoute) {\n }\n\n ngOnInit() {\n let fired = false;\n this.route.queryParams.subscribe(async qParams => {\n if (fired) {\n return;\n }\n fired = true;\n if (qParams.userId != null && qParams.token != null && qParams.email != null) {\n this.userId = qParams.userId;\n this.token = qParams.token;\n this.email = qParams.email;\n } else {\n this.router.navigate(['/']);\n }\n });\n }\n\n async submit() {\n try {\n const request = new VerifyDeleteRecoverRequest(this.userId, this.token);\n this.formPromise = this.apiService.postAccountRecoverDeleteToken(request);\n await this.formPromise;\n this.toasterService.popAsync('success', this.i18nService.t('accountDeleted'),\n this.i18nService.t('accountDeletedDesc'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","

{{'deleteAccount' | i18n}}

{{'deleteAccountWarning' | i18n}}

{{email}}

{{'deleteRecoverConfirmDesc' | i18n}}


{{'cancel' | i18n}}
","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CollectionData } from 'jslib-common/models/data/collectionData';\nimport { Collection } from 'jslib-common/models/domain/collection';\nimport {\n CollectionDetailsResponse,\n CollectionResponse,\n} from 'jslib-common/models/response/collectionResponse';\nimport { ListResponse } from 'jslib-common/models/response/listResponse';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { ModalComponent } from '../../modal.component';\nimport { CollectionAddEditComponent } from './collection-add-edit.component';\nimport { EntityUsersComponent } from './entity-users.component';\n\n@Component({\n selector: 'app-org-manage-collections',\n templateUrl: 'collections.component.html',\n})\nexport class CollectionsComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('usersTemplate', { read: ViewContainerRef, static: true }) usersModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n collections: CollectionView[];\n pagedCollections: CollectionView[];\n searchText: string;\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedCollectionsCount = 0;\n private modal: ModalComponent = null;\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private collectionService: CollectionService, private componentFactoryResolver: ComponentFactoryResolver,\n private toasterService: ToasterService, private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService, private userService: UserService,\n private searchService: SearchService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n this.searchText = qParams.search;\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n }\n\n async load() {\n const organization = await this.userService.getOrganization(this.organizationId);\n let response: ListResponse;\n if (organization.canManageAllCollections) {\n response = await this.apiService.getCollections(this.organizationId);\n } else {\n response = await this.apiService.getUserCollections();\n }\n const collections = response.data.filter(c => c.organizationId === this.organizationId).map(r =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collections);\n this.resetPaging();\n this.loading = false;\n }\n\n loadMore() {\n if (!this.collections || this.collections.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedCollections.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedCollectionsCount > this.pageSize) {\n pagedSize = this.pagedCollectionsCount;\n }\n if (this.collections.length > pagedLength) {\n this.pagedCollections =\n this.pagedCollections.concat(this.collections.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedCollectionsCount = this.pagedCollections.length;\n this.didScroll = this.pagedCollections.length > this.pageSize;\n }\n\n edit(collection: CollectionView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.addEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n CollectionAddEditComponent, this.addEditModalRef);\n\n childComponent.organizationId = this.organizationId;\n childComponent.collectionId = collection != null ? collection.id : null;\n childComponent.onSavedCollection.subscribe(() => {\n this.modal.close();\n this.load();\n });\n childComponent.onDeletedCollection.subscribe(() => {\n this.modal.close();\n this.removeCollection(collection);\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n add() {\n this.edit(null);\n }\n\n async delete(collection: CollectionView) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteCollectionConfirmation'), collection.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteCollection(this.organizationId, collection.id);\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedCollectionId', collection.name));\n this.removeCollection(collection);\n } catch { }\n }\n\n users(collection: CollectionView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.usersModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EntityUsersComponent, this.usersModalRef);\n\n childComponent.organizationId = this.organizationId;\n childComponent.entity = 'collection';\n childComponent.entityId = collection.id;\n childComponent.entityName = collection.name;\n\n childComponent.onEditedUsers.subscribe(() => {\n this.load();\n this.modal.close();\n });\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n async resetPaging() {\n this.pagedCollections = [];\n this.loadMore();\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.collections && this.collections.length > this.pageSize;\n }\n\n private removeCollection(collection: CollectionView) {\n const index = this.collections.indexOf(collection);\n if (index > -1) {\n this.collections.splice(index, 1);\n this.resetPaging();\n }\n }\n}\n","

{{'collections' | i18n}}

{{'loading' | i18n}}

{{'noCollectionsInList' | i18n}}

{{c.name}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\nimport { CollectionRequest } from 'jslib-common/models/request/collectionRequest';\nimport { SelectionReadOnlyRequest } from 'jslib-common/models/request/selectionReadOnlyRequest';\nimport { GroupResponse } from 'jslib-common/models/response/groupResponse';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-collection-add-edit',\n templateUrl: 'collection-add-edit.component.html',\n})\nexport class CollectionAddEditComponent implements OnInit {\n @Input() collectionId: string;\n @Input() organizationId: string;\n @Output() onSavedCollection = new EventEmitter();\n @Output() onDeletedCollection = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n accessGroups: boolean = false;\n title: string;\n name: string;\n externalId: string;\n groups: GroupResponse[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n\n private orgKey: SymmetricCryptoKey;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService, private userService: UserService) { }\n\n async ngOnInit() {\n const organization = await this.userService.getOrganization(this.organizationId);\n this.accessGroups = organization.useGroups;\n this.editMode = this.loading = this.collectionId != null;\n if (this.accessGroups) {\n const groupsResponse = await this.apiService.getGroups(this.organizationId);\n this.groups = groupsResponse.data.map(r => r).sort(Utils.getSortFunction(this.i18nService, 'name'));\n }\n this.orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editCollection');\n try {\n const collection = await this.apiService.getCollectionDetails(this.organizationId, this.collectionId);\n this.name = await this.cryptoService.decryptToUtf8(new EncString(collection.name), this.orgKey);\n this.externalId = collection.externalId;\n if (collection.groups != null && this.groups.length > 0) {\n collection.groups.forEach(s => {\n const group = this.groups.filter(g => !g.accessAll && g.id === s.id);\n if (group != null && group.length > 0) {\n (group[0] as any).checked = true;\n (group[0] as any).readOnly = s.readOnly;\n (group[0] as any).hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch { }\n } else {\n this.title = this.i18nService.t('addCollection');\n }\n\n this.groups.forEach(g => {\n if (g.accessAll) {\n (g as any).checked = true;\n }\n });\n\n this.loading = false;\n }\n\n check(g: GroupResponse, select?: boolean) {\n if (g.accessAll) {\n return;\n }\n (g as any).checked = select == null ? !(g as any).checked : select;\n if (!(g as any).checked) {\n (g as any).readOnly = false;\n (g as any).hidePasswords = false;\n }\n }\n\n selectAll(select: boolean) {\n this.groups.forEach(g => this.check(g, select));\n }\n\n async submit() {\n if (this.orgKey == null) {\n throw new Error('No encryption key for this organization.');\n }\n\n const request = new CollectionRequest();\n request.name = (await this.cryptoService.encrypt(this.name, this.orgKey)).encryptedString;\n request.externalId = this.externalId;\n request.groups = this.groups.filter(g => (g as any).checked && !g.accessAll)\n .map(g => new SelectionReadOnlyRequest(g.id, !!(g as any).readOnly, !!(g as any).hidePasswords));\n\n try {\n if (this.editMode) {\n this.formPromise = this.apiService.putCollection(this.organizationId, this.collectionId, request);\n } else {\n this.formPromise = this.apiService.postCollection(this.organizationId, request);\n }\n await this.formPromise;\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedCollectionId' : 'createdCollectionId', this.name));\n this.onSavedCollection.emit();\n } catch { }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteCollectionConfirmation'), this.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteCollection(this.organizationId, this.collectionId);\n await this.deletePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedCollectionId', this.name));\n this.onDeletedCollection.emit();\n } catch { }\n }\n}\n","

{{title}}

{{'loading' | i18n}}
{{'externalIdDesc' | i18n}}

{{'groupAccess' | i18n}}

{{'noGroupsInList' | i18n}}
  {{'name' | i18n}} {{'hidePasswords' | i18n}} {{'readOnly' | i18n}}
{{g.name}} {{'groupAccessAllItems' | i18n}}
","import { Collection } from '../domain/collection';\n\nimport { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nexport class CollectionRequest {\n name: string;\n externalId: string;\n groups: SelectionReadOnlyRequest[] = [];\n\n constructor(collection?: Collection) {\n if (collection == null) {\n return;\n }\n this.name = collection.name ? collection.name.encryptedString : null;\n this.externalId = collection.externalId;\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { ExportService } from 'jslib-common/abstractions/export.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EventResponse } from 'jslib-common/models/response/eventResponse';\nimport { ListResponse } from 'jslib-common/models/response/listResponse';\nimport { EventView } from 'jslib-common/models/view/eventView';\n\nimport { EventService } from '../../services/event.service';\n\n@Component({\n selector: 'app-org-events',\n templateUrl: 'events.component.html',\n})\nexport class EventsComponent implements OnInit {\n loading = true;\n loaded = false;\n organizationId: string;\n events: EventView[];\n start: string;\n end: string;\n dirtyDates: boolean = true;\n continuationToken: string;\n refreshPromise: Promise;\n exportPromise: Promise;\n morePromise: Promise;\n\n private orgUsersUserIdMap = new Map();\n private orgUsersIdMap = new Map();\n\n constructor(private apiService: ApiService, private route: ActivatedRoute, private eventService: EventService,\n private i18nService: I18nService, private toasterService: ToasterService, private userService: UserService,\n private exportService: ExportService, private platformUtilsService: PlatformUtilsService,\n private router: Router) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (organization == null || !organization.useEvents) {\n this.router.navigate(['/organizations', this.organizationId]);\n return;\n }\n const defaultDates = this.eventService.getDefaultDateFilters();\n this.start = defaultDates[0];\n this.end = defaultDates[1];\n await this.load();\n });\n }\n\n async load() {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n response.data.forEach(u => {\n const name = u.name == null || u.name.trim() === '' ? u.email : u.name;\n this.orgUsersIdMap.set(u.id, { name: name, email: u.email });\n this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n async exportEvents() {\n if (this.appApiPromiseUnfulfilled() || this.dirtyDates) {\n return;\n }\n\n this.loading = true;\n\n const dates = this.parseDates();\n if (dates == null) {\n return;\n }\n\n try {\n this.exportPromise = this.export(dates[0], dates[1]);\n\n await this.exportPromise;\n } catch { }\n\n this.exportPromise = null;\n this.loading = false;\n }\n\n async loadEvents(clearExisting: boolean) {\n if (this.appApiPromiseUnfulfilled()) {\n return;\n }\n\n const dates = this.parseDates();\n if (dates == null) {\n return;\n }\n\n this.loading = true;\n let events: EventView[] = [];\n try {\n const promise = this.loadAndParseEvents(dates[0], dates[1], clearExisting ? null : this.continuationToken);\n if (clearExisting) {\n this.refreshPromise = promise;\n } else {\n this.morePromise = promise;\n }\n const result = await promise;\n this.continuationToken = result.continuationToken;\n events = result.events;\n } catch { }\n\n if (!clearExisting && this.events != null && this.events.length > 0) {\n this.events = this.events.concat(events);\n } else {\n this.events = events;\n }\n\n this.dirtyDates = false;\n this.loading = false;\n this.morePromise = null;\n this.refreshPromise = null;\n }\n\n private async export(start: string, end: string) {\n let continuationToken = this.continuationToken;\n let events = [].concat(this.events);\n\n while (continuationToken != null) {\n const result = await this.loadAndParseEvents(start, end, continuationToken);\n continuationToken = result.continuationToken;\n events = events.concat(result.events);\n }\n\n const data = await this.exportService.getEventExport(events);\n const fileName = this.exportService.getFileName('org-events', 'csv');\n this.platformUtilsService.saveFile(window, data, { type: 'text/plain' }, fileName);\n }\n\n private async loadAndParseEvents(startDate: string, endDate: string, continuationToken: string) {\n const response = await this.apiService.getEventsOrganization(this.organizationId, startDate, endDate,\n continuationToken);\n\n const events = await Promise.all(response.data.map(async r => {\n const userId = r.actingUserId == null ? r.userId : r.actingUserId;\n const eventInfo = await this.eventService.getEventInfo(r);\n const user = userId != null && this.orgUsersUserIdMap.has(userId) ?\n this.orgUsersUserIdMap.get(userId) : null;\n return new EventView({\n message: eventInfo.message,\n humanReadableMessage: eventInfo.humanReadableMessage,\n appIcon: eventInfo.appIcon,\n appName: eventInfo.appName,\n userId: userId,\n userName: user != null ? user.name : this.i18nService.t('unknown'),\n userEmail: user != null ? user.email : '',\n date: r.date,\n ip: r.ipAddress,\n type: r.type,\n });\n }));\n return { continuationToken: response.continuationToken, events: events };\n }\n\n private parseDates() {\n let dates: string[] = null;\n try {\n dates = this.eventService.formatDateFilters(this.start, this.end);\n } catch (e) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidDateRange'));\n return null;\n }\n return dates;\n }\n\n private appApiPromiseUnfulfilled() {\n return this.refreshPromise != null || this.morePromise != null || this.exportPromise != null;\n }\n}\n","

{{'eventLogs' | i18n}}

-
{{'loading' | i18n}}

{{'noEventsInList' | i18n}}

{{'timestamp' | i18n}} {{'device' | i18n}} {{'user' | i18n}} {{'event' | i18n}}
{{e.date | date:'medium'}} {{e.appName}}, {{e.ip}} {{e.userName}}
","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { GroupResponse } from 'jslib-common/models/response/groupResponse';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { ModalComponent } from '../../modal.component';\nimport { EntityUsersComponent } from './entity-users.component';\nimport { GroupAddEditComponent } from './group-add-edit.component';\n\n@Component({\n selector: 'app-org-groups',\n templateUrl: 'groups.component.html',\n})\nexport class GroupsComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('usersTemplate', { read: ViewContainerRef, static: true }) usersModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n groups: GroupResponse[];\n pagedGroups: GroupResponse[];\n searchText: string;\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedGroupsCount = 0;\n private modal: ModalComponent = null;\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver,\n private toasterService: ToasterService, private platformUtilsService: PlatformUtilsService,\n private userService: UserService, private router: Router,\n private searchService: SearchService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (organization == null || !organization.useGroups) {\n this.router.navigate(['/organizations', this.organizationId]);\n return;\n }\n await this.load();\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n this.searchText = qParams.search;\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getGroups(this.organizationId);\n const groups = response.data != null && response.data.length > 0 ? response.data : [];\n groups.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.groups = groups;\n this.resetPaging();\n this.loading = false;\n }\n\n loadMore() {\n if (!this.groups || this.groups.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedGroups.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedGroupsCount > this.pageSize) {\n pagedSize = this.pagedGroupsCount;\n }\n if (this.groups.length > pagedLength) {\n this.pagedGroups = this.pagedGroups.concat(this.groups.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedGroupsCount = this.pagedGroups.length;\n this.didScroll = this.pagedGroups.length > this.pageSize;\n }\n\n edit(group: GroupResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.addEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n GroupAddEditComponent, this.addEditModalRef);\n\n childComponent.organizationId = this.organizationId;\n childComponent.groupId = group != null ? group.id : null;\n childComponent.onSavedGroup.subscribe(() => {\n this.modal.close();\n this.load();\n });\n childComponent.onDeletedGroup.subscribe(() => {\n this.modal.close();\n this.removeGroup(group);\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n add() {\n this.edit(null);\n }\n\n async delete(group: GroupResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteGroupConfirmation'), group.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteGroup(this.organizationId, group.id);\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedGroupId', group.name));\n this.removeGroup(group);\n } catch { }\n }\n\n users(group: GroupResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.usersModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EntityUsersComponent, this.usersModalRef);\n\n childComponent.organizationId = this.organizationId;\n childComponent.entity = 'group';\n childComponent.entityId = group.id;\n childComponent.entityName = group.name;\n\n childComponent.onEditedUsers.subscribe(() => {\n this.modal.close();\n });\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n async resetPaging() {\n this.pagedGroups = [];\n this.loadMore();\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.groups && this.groups.length > this.pageSize;\n }\n\n private removeGroup(group: GroupResponse) {\n const index = this.groups.indexOf(group);\n if (index > -1) {\n this.groups.splice(index, 1);\n this.resetPaging();\n }\n }\n}\n","

{{'groups' | i18n}}

{{'loading' | i18n}}

{{'noGroupsInList' | i18n}}

{{g.name}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CollectionData } from 'jslib-common/models/data/collectionData';\nimport { Collection } from 'jslib-common/models/domain/collection';\nimport { GroupRequest } from 'jslib-common/models/request/groupRequest';\nimport { SelectionReadOnlyRequest } from 'jslib-common/models/request/selectionReadOnlyRequest';\nimport { CollectionDetailsResponse } from 'jslib-common/models/response/collectionResponse';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\n@Component({\n selector: 'app-group-add-edit',\n templateUrl: 'group-add-edit.component.html',\n})\nexport class GroupAddEditComponent implements OnInit {\n @Input() groupId: string;\n @Input() organizationId: string;\n @Output() onSavedGroup = new EventEmitter();\n @Output() onDeletedGroup = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n title: string;\n name: string;\n externalId: string;\n access: 'all' | 'selected' = 'selected';\n collections: CollectionView[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private collectionService: CollectionService,\n private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.editMode = this.loading = this.groupId != null;\n await this.loadCollections();\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editGroup');\n try {\n const group = await this.apiService.getGroupDetails(this.organizationId, this.groupId);\n this.access = group.accessAll ? 'all' : 'selected';\n this.name = group.name;\n this.externalId = group.externalId;\n if (group.collections != null && this.collections != null) {\n group.collections.forEach(s => {\n const collection = this.collections.filter(c => c.id === s.id);\n if (collection != null && collection.length > 0) {\n (collection[0] as any).checked = true;\n collection[0].readOnly = s.readOnly;\n collection[0].hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch { }\n } else {\n this.title = this.i18nService.t('addGroup');\n }\n\n this.loading = false;\n }\n\n async loadCollections() {\n const response = await this.apiService.getCollections(this.organizationId);\n const collections = response.data.map(r =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collections);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n if (!(c as any).checked) {\n c.readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.collections.forEach(c => this.check(c, select));\n }\n\n async submit() {\n const request = new GroupRequest();\n request.name = this.name;\n request.externalId = this.externalId;\n request.accessAll = this.access === 'all';\n if (!request.accessAll) {\n request.collections = this.collections.filter(c => (c as any).checked)\n .map(c => new SelectionReadOnlyRequest(c.id, !!c.readOnly, !!c.hidePasswords));\n }\n\n try {\n if (this.editMode) {\n this.formPromise = this.apiService.putGroup(this.organizationId, this.groupId, request);\n } else {\n this.formPromise = this.apiService.postGroup(this.organizationId, request);\n }\n await this.formPromise;\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedGroupId' : 'createdGroupId', this.name));\n this.onSavedGroup.emit();\n } catch { }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteGroupConfirmation'), this.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteGroup(this.organizationId, this.groupId);\n await this.deletePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedGroupId', this.name));\n this.onDeletedGroup.emit();\n } catch { }\n }\n}\n","

{{title}}

{{'loading' | i18n}}
{{'externalIdDesc' | i18n}}

{{'accessControl' | i18n}}

{{'noCollectionsInList' | i18n}}
  {{'name' | i18n}} {{'hidePasswords' | i18n}} {{'readOnly' | i18n}}
{{c.name}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\n@Component({\n selector: 'app-org-manage',\n templateUrl: 'manage.component.html',\n})\nexport class ManageComponent implements OnInit {\n organization: Organization;\n accessPolicies = false;\n accessGroups = false;\n accessEvents = false;\n\n constructor(private route: ActivatedRoute, private userService: UserService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.accessPolicies = this.organization.usePolicies;\n this.accessEvents = this.organization.useEvents;\n this.accessGroups = this.organization.useGroups;\n });\n }\n}\n"," ","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ValidationService } from 'jslib-angular/services/validation.service';\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { OrganizationKeysRequest } from 'jslib-common/models/request/organizationKeysRequest';\nimport { OrganizationUserBulkRequest } from 'jslib-common/models/request/organizationUserBulkRequest';\nimport { OrganizationUserConfirmRequest } from 'jslib-common/models/request/organizationUserConfirmRequest';\n\nimport { ListResponse } from 'jslib-common/models/response/listResponse';\nimport { OrganizationUserBulkResponse } from 'jslib-common/models/response/organizationUserBulkResponse';\nimport { OrganizationUserUserDetailsResponse } from 'jslib-common/models/response/organizationUserResponse';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { OrganizationUserType } from 'jslib-common/enums/organizationUserType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { SearchPipe } from 'jslib-angular/pipes/search.pipe';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { ModalComponent } from '../../modal.component';\nimport { BulkConfirmComponent } from './bulk/bulk-confirm.component';\nimport { BulkRemoveComponent } from './bulk/bulk-remove.component';\nimport { BulkStatusComponent } from './bulk/bulk-status.component';\nimport { EntityEventsComponent } from './entity-events.component';\nimport { ResetPasswordComponent } from './reset-password.component';\nimport { UserAddEditComponent } from './user-add-edit.component';\nimport { UserConfirmComponent } from './user-confirm.component';\nimport { UserGroupsComponent } from './user-groups.component';\n\nconst MaxCheckedCount = 500;\n\n@Component({\n selector: 'app-org-people',\n templateUrl: 'people.component.html',\n})\nexport class PeopleComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('groupsTemplate', { read: ViewContainerRef, static: true }) groupsModalRef: ViewContainerRef;\n @ViewChild('eventsTemplate', { read: ViewContainerRef, static: true }) eventsModalRef: ViewContainerRef;\n @ViewChild('confirmTemplate', { read: ViewContainerRef, static: true }) confirmModalRef: ViewContainerRef;\n @ViewChild('resetPasswordTemplate', { read: ViewContainerRef, static: true }) resetPasswordModalRef: ViewContainerRef;\n @ViewChild('bulkStatusTemplate', { read: ViewContainerRef, static: true }) bulkStatusModalRef: ViewContainerRef;\n @ViewChild('bulkConfirmTemplate', { read: ViewContainerRef, static: true }) bulkConfirmModalRef: ViewContainerRef;\n @ViewChild('bulkRemoveTemplate', { read: ViewContainerRef, static: true }) bulkRemoveModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n users: OrganizationUserUserDetailsResponse[];\n pagedUsers: OrganizationUserUserDetailsResponse[];\n searchText: string;\n status: OrganizationUserStatusType = null;\n statusMap = new Map();\n organizationUserType = OrganizationUserType;\n organizationUserStatusType = OrganizationUserStatusType;\n actionPromise: Promise;\n accessEvents = false;\n accessGroups = false;\n canResetPassword = false; // User permission (admin/custom)\n orgUseResetPassword = false; // Org plan ability\n orgHasKeys = false; // Org public/private keys\n orgResetPasswordPolicyEnabled = false;\n callingUserType: OrganizationUserType = null;\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedUsersCount = 0;\n private modal: ModalComponent = null;\n private allUsers: OrganizationUserUserDetailsResponse[];\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver,\n private platformUtilsService: PlatformUtilsService, private toasterService: ToasterService,\n private cryptoService: CryptoService, private userService: UserService, private router: Router,\n private storageService: StorageService, private searchService: SearchService,\n private validationService: ValidationService, private policyService: PolicyService,\n private searchPipe: SearchPipe, private syncService: SyncService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (!organization.canManageUsers) {\n this.router.navigate(['../collections'], { relativeTo: this.route });\n return;\n }\n this.accessEvents = organization.useEvents;\n this.accessGroups = organization.useGroups;\n this.canResetPassword = organization.canManageUsersPassword;\n this.orgUseResetPassword = organization.useResetPassword;\n this.callingUserType = organization.type;\n this.orgHasKeys = organization.hasPublicAndPrivateKeys;\n\n // Backfill pub/priv key if necessary\n if (this.canResetPassword && !this.orgHasKeys) {\n const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId);\n const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey);\n const request = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n const response = await this.apiService.postOrganizationKeys(this.organizationId, request);\n if (response != null) {\n this.orgHasKeys = response.publicKey != null && response.privateKey != null;\n await this.syncService.fullSync(true); // Replace oganizations with new data\n } else {\n throw new Error(this.i18nService.t('resetPasswordOrgKeysError'));\n }\n }\n\n await this.load();\n\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n this.searchText = qParams.search;\n if (qParams.viewEvents != null) {\n const user = this.users.filter(u => u.id === qParams.viewEvents);\n if (user.length > 0 && user[0].status === OrganizationUserStatusType.Confirmed) {\n this.events(user[0]);\n }\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n this.statusMap.clear();\n this.allUsers = response.data != null && response.data.length > 0 ? response.data : [];\n this.allUsers.sort(Utils.getSortFunction(this.i18nService, 'email'));\n this.allUsers.forEach(u => {\n if (!this.statusMap.has(u.status)) {\n this.statusMap.set(u.status, [u]);\n } else {\n this.statusMap.get(u.status).push(u);\n }\n });\n this.filter(this.status);\n const policies = await this.policyService.getAll(PolicyType.ResetPassword);\n this.orgResetPasswordPolicyEnabled = policies.some(p => p.organizationId === this.organizationId && p.enabled);\n this.loading = false;\n }\n\n allowResetPassword(orgUser: OrganizationUserUserDetailsResponse): boolean {\n // Hierarchy check\n let callingUserHasPermission = false;\n\n switch (this.callingUserType) {\n case OrganizationUserType.Owner:\n callingUserHasPermission = true;\n break;\n case OrganizationUserType.Admin:\n callingUserHasPermission = orgUser.type !== OrganizationUserType.Owner;\n break;\n case OrganizationUserType.Custom:\n callingUserHasPermission = orgUser.type !== OrganizationUserType.Owner\n && orgUser.type !== OrganizationUserType.Admin;\n break;\n }\n\n // Final\n return this.canResetPassword && callingUserHasPermission && this.orgUseResetPassword && this.orgHasKeys\n && orgUser.resetPasswordEnrolled && this.orgResetPasswordPolicyEnabled\n && orgUser.status === OrganizationUserStatusType.Confirmed;\n }\n\n showEnrolledStatus(orgUser: OrganizationUserUserDetailsResponse): boolean {\n return this.orgUseResetPassword && orgUser.resetPasswordEnrolled && this.orgResetPasswordPolicyEnabled;\n }\n\n filter(status: OrganizationUserStatusType) {\n this.status = status;\n if (this.status != null) {\n this.users = this.statusMap.get(this.status);\n } else {\n this.users = this.allUsers;\n }\n // Reset checkbox selecton\n this.selectAll(false);\n this.resetPaging();\n }\n\n loadMore() {\n if (!this.users || this.users.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedUsers.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedUsersCount > this.pageSize) {\n pagedSize = this.pagedUsersCount;\n }\n if (this.users.length > pagedLength) {\n this.pagedUsers = this.pagedUsers.concat(this.users.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedUsersCount = this.pagedUsers.length;\n this.didScroll = this.pagedUsers.length > this.pageSize;\n }\n\n get allCount() {\n return this.allUsers != null ? this.allUsers.length : 0;\n }\n\n get invitedCount() {\n return this.statusMap.has(OrganizationUserStatusType.Invited) ?\n this.statusMap.get(OrganizationUserStatusType.Invited).length : 0;\n }\n\n get acceptedCount() {\n return this.statusMap.has(OrganizationUserStatusType.Accepted) ?\n this.statusMap.get(OrganizationUserStatusType.Accepted).length : 0;\n }\n\n get confirmedCount() {\n return this.statusMap.has(OrganizationUserStatusType.Confirmed) ?\n this.statusMap.get(OrganizationUserStatusType.Confirmed).length : 0;\n }\n\n get showConfirmUsers(): boolean {\n return this.allUsers != null && this.statusMap != null && this.allUsers.length > 1 &&\n this.confirmedCount > 0 && this.confirmedCount < 3 && this.acceptedCount > 0;\n }\n\n get showBulkConfirmUsers(): boolean {\n return this.acceptedCount > 0;\n }\n\n edit(user: OrganizationUserUserDetailsResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.addEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n UserAddEditComponent, this.addEditModalRef);\n\n childComponent.name = user != null ? user.name || user.email : null;\n childComponent.organizationId = this.organizationId;\n childComponent.organizationUserId = user != null ? user.id : null;\n childComponent.onSavedUser.subscribe(() => {\n this.modal.close();\n this.load();\n });\n childComponent.onDeletedUser.subscribe(() => {\n this.modal.close();\n this.removeUser(user);\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n invite() {\n this.edit(null);\n }\n\n groups(user: OrganizationUserUserDetailsResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.groupsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n UserGroupsComponent, this.groupsModalRef);\n\n childComponent.name = user != null ? user.name || user.email : null;\n childComponent.organizationId = this.organizationId;\n childComponent.organizationUserId = user != null ? user.id : null;\n childComponent.onSavedUser.subscribe(() => {\n this.modal.close();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n async remove(user: OrganizationUserUserDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeUserConfirmation'), user.name || user.email,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n this.actionPromise = this.apiService.deleteOrganizationUser(this.organizationId, user.id);\n try {\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('removedUserId', user.name || user.email));\n this.removeUser(user);\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async reinvite(user: OrganizationUserUserDetailsResponse) {\n if (this.actionPromise != null) {\n return;\n }\n\n this.actionPromise = this.apiService.postOrganizationUserReinvite(this.organizationId, user.id);\n try {\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenReinvited', user.name || user.email));\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async bulkRemove() {\n if (this.actionPromise != null) {\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.bulkRemoveModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(BulkRemoveComponent, this.bulkRemoveModalRef);\n\n childComponent.organizationId = this.organizationId;\n childComponent.users = this.getCheckedUsers();\n\n this.modal.onClosed.subscribe(async () => {\n await this.load();\n this.modal = null;\n });\n }\n\n async bulkReinvite() {\n if (this.actionPromise != null) {\n return;\n }\n\n const users = this.getCheckedUsers();\n const filteredUsers = users.filter(u => u.status === OrganizationUserStatusType.Invited);\n\n if (filteredUsers.length <= 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('noSelectedUsersApplicable'));\n return;\n }\n\n\n try {\n const request = new OrganizationUserBulkRequest(filteredUsers.map(user => user.id));\n const response = this.apiService.postManyOrganizationUserReinvite(this.organizationId, request);\n this.showBulkStatus(users, filteredUsers, response, this.i18nService.t('bulkReinviteMessage'));\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async bulkConfirm() {\n if (this.actionPromise != null) {\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.bulkConfirmModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(BulkConfirmComponent, this.bulkConfirmModalRef);\n\n childComponent.organizationId = this.organizationId;\n childComponent.users = this.getCheckedUsers();\n\n this.modal.onClosed.subscribe(async () => {\n await this.load();\n this.modal = null;\n });\n }\n\n async confirm(user: OrganizationUserUserDetailsResponse) {\n function updateUser(self: PeopleComponent) {\n user.status = OrganizationUserStatusType.Confirmed;\n const mapIndex = self.statusMap.get(OrganizationUserStatusType.Accepted).indexOf(user);\n if (mapIndex > -1) {\n self.statusMap.get(OrganizationUserStatusType.Accepted).splice(mapIndex, 1);\n self.statusMap.get(OrganizationUserStatusType.Confirmed).push(user);\n }\n }\n\n const confirmUser = async (publicKey: Uint8Array) => {\n try {\n this.actionPromise = this.doConfirmation(user, publicKey);\n await this.actionPromise;\n updateUser(this);\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenConfirmed', user.name || user.email));\n } catch (e) {\n this.validationService.showError(e);\n throw e;\n } finally {\n this.actionPromise = null;\n }\n };\n\n if (this.actionPromise != null) {\n return;\n }\n\n const autoConfirm = await this.storageService.get(ConstantsService.autoConfirmFingerprints);\n if (autoConfirm == null || !autoConfirm) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.confirmModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n UserConfirmComponent, this.confirmModalRef);\n\n childComponent.name = user != null ? user.name || user.email : null;\n childComponent.organizationId = this.organizationId;\n childComponent.organizationUserId = user != null ? user.id : null;\n childComponent.userId = user != null ? user.userId : null;\n childComponent.onConfirmedUser.subscribe(async (publicKey: Uint8Array) => {\n try {\n await confirmUser(publicKey);\n this.modal.close();\n } catch (e) {\n // tslint:disable-next-line\n console.error('Handled exception:', e);\n }\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n return;\n }\n\n try {\n const publicKeyResponse = await this.apiService.getUserPublicKey(user.userId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n try {\n // tslint:disable-next-line\n console.log('User\\'s fingerprint: ' +\n (await this.cryptoService.getFingerprint(user.userId, publicKey.buffer)).join('-'));\n } catch { }\n await confirmUser(publicKey);\n } catch (e) {\n // tslint:disable-next-line\n console.error('Handled exception:', e);\n }\n }\n\n async events(user: OrganizationUserUserDetailsResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.eventsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EntityEventsComponent, this.eventsModalRef);\n\n childComponent.name = user.name || user.email;\n childComponent.organizationId = this.organizationId;\n childComponent.entityId = user.id;\n childComponent.showUser = false;\n childComponent.entity = 'user';\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n async resetPaging() {\n this.pagedUsers = [];\n this.loadMore();\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.users && this.users.length > this.pageSize;\n }\n\n async resetPassword(user: OrganizationUserUserDetailsResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.resetPasswordModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n ResetPasswordComponent, this.resetPasswordModalRef);\n\n childComponent.name = user != null ? user.name || user.email : null;\n childComponent.email = user != null ? user.email : null;\n childComponent.organizationId = this.organizationId;\n childComponent.id = user != null ? user.id : null;\n\n childComponent.onPasswordReset.subscribe(() => {\n this.modal.close();\n this.load();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n checkUser(user: OrganizationUserUserDetailsResponse, select?: boolean) {\n (user as any).checked = select == null ? !(user as any).checked : select;\n }\n\n selectAll(select: boolean) {\n if (select) {\n this.selectAll(false);\n }\n\n const filteredUsers = this.searchPipe.transform(this.users, this.searchText, 'name', 'email', 'id');\n\n const selectCount = select && filteredUsers.length > MaxCheckedCount\n ? MaxCheckedCount\n : filteredUsers.length;\n for (let i = 0; i < selectCount; i++) {\n this.checkUser(filteredUsers[i], select);\n }\n }\n\n private async showBulkStatus(users: OrganizationUserUserDetailsResponse[], filteredUsers: OrganizationUserUserDetailsResponse[],\n request: Promise>, successfullMessage: string) {\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.bulkStatusModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n BulkStatusComponent, this.bulkStatusModalRef);\n\n childComponent.loading = true;\n\n // Workaround to handle closing the modal shortly after it has been opened\n let close = false;\n this.modal.onShown.subscribe(() => {\n if (close) {\n this.modal.close();\n }\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n\n try {\n const response = await request;\n\n if (this.modal) {\n const keyedErrors: any = response.data.filter(r => r.error !== '').reduce((a, x) => ({ ...a, [x.id]: x.error }), {});\n const keyedFilteredUsers: any = filteredUsers.reduce((a, x) => ({ ...a, [x.id]: x }), {});\n\n childComponent.users = users.map(user => {\n let message = keyedErrors[user.id] ?? successfullMessage;\n if (!keyedFilteredUsers.hasOwnProperty(user.id)) {\n message = this.i18nService.t('bulkFilteredMessage');\n }\n\n return {\n user: user,\n error: keyedErrors.hasOwnProperty(user.id),\n message: message,\n };\n });\n childComponent.loading = false;\n }\n } catch {\n close = true;\n if (this.modal) {\n this.modal.close();\n }\n }\n }\n\n private async doConfirmation(user: OrganizationUserUserDetailsResponse, publicKey: Uint8Array) {\n const orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n const key = await this.cryptoService.rsaEncrypt(orgKey.key, publicKey.buffer);\n const request = new OrganizationUserConfirmRequest();\n request.key = key.encryptedString;\n await this.apiService.postOrganizationUserConfirm(this.organizationId, user.id, request);\n }\n\n private removeUser(user: OrganizationUserUserDetailsResponse) {\n let index = this.users.indexOf(user);\n if (index > -1) {\n this.users.splice(index, 1);\n this.resetPaging();\n }\n if (this.statusMap.has(OrganizationUserStatusType.Accepted)) {\n index = this.statusMap.get(OrganizationUserStatusType.Accepted).indexOf(user);\n if (index > -1) {\n this.statusMap.get(OrganizationUserStatusType.Accepted).splice(index, 1);\n }\n }\n if (this.statusMap.has(OrganizationUserStatusType.Invited)) {\n index = this.statusMap.get(OrganizationUserStatusType.Invited).indexOf(user);\n if (index > -1) {\n this.statusMap.get(OrganizationUserStatusType.Invited).splice(index, 1);\n }\n }\n if (this.statusMap.has(OrganizationUserStatusType.Confirmed)) {\n index = this.statusMap.get(OrganizationUserStatusType.Confirmed).indexOf(user);\n if (index > -1) {\n this.statusMap.get(OrganizationUserStatusType.Confirmed).splice(index, 1);\n }\n }\n }\n\n private getCheckedUsers() {\n return this.users.filter(u => (u as any).checked);\n }\n}\n","

{{'people' | i18n}}

{{'loading' | i18n}}

{{'noUsersInList' | i18n}}

{{'usersNeedConfirmed' | i18n}}
{{u.email}} {{'invited' | i18n}} {{'accepted' | i18n}} {{u.name}} {{'userUsingTwoStep' | i18n}} {{'enrolledPasswordReset' | i18n}} {{'owner' | i18n}} {{'admin' | i18n}} {{'manager' | i18n}} {{'user' | i18n}} {{'custom' | i18n}}
","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { OrganizationUserBulkConfirmRequest } from 'jslib-common/models/request/organizationUserBulkConfirmRequest';\nimport { OrganizationUserBulkRequest } from 'jslib-common/models/request/organizationUserBulkRequest';\n\nimport { OrganizationUserUserDetailsResponse } from 'jslib-common/models/response/organizationUserResponse';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-bulk-confirm',\n templateUrl: 'bulk-confirm.component.html',\n})\nexport class BulkConfirmComponent implements OnInit {\n\n @Input() organizationId: string;\n @Input() users: OrganizationUserUserDetailsResponse[];\n\n excludedUsers: OrganizationUserUserDetailsResponse[];\n filteredUsers: OrganizationUserUserDetailsResponse[];\n publicKeys: Map = new Map();\n fingerprints: Map = new Map();\n statuses: Map = new Map();\n\n loading: boolean = true;\n done: boolean = false;\n error: string;\n\n constructor(private cryptoService: CryptoService, private apiService: ApiService,\n private i18nService: I18nService) { }\n\n async ngOnInit() {\n this.excludedUsers = this.users.filter(user => user.status !== OrganizationUserStatusType.Accepted);\n this.filteredUsers = this.users.filter(user => user.status === OrganizationUserStatusType.Accepted);\n\n if (this.filteredUsers.length <= 0) {\n this.done = true;\n }\n\n const request = new OrganizationUserBulkRequest(this.filteredUsers.map(user => user.id));\n const response = await this.apiService.postOrganizationUsersPublicKey(this.organizationId, request);\n\n for (const entry of response.data) {\n const publicKey = Utils.fromB64ToArray(entry.key);\n const fingerprint = await this.cryptoService.getFingerprint(entry.userId, publicKey.buffer);\n if (fingerprint != null) {\n this.publicKeys.set(entry.id, publicKey);\n this.fingerprints.set(entry.id, fingerprint.join('-'));\n }\n }\n\n this.loading = false;\n }\n\n async submit() {\n this.loading = true;\n try {\n const orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n const userIdsWithKeys: any[] = [];\n for (const user of this.filteredUsers) {\n const publicKey = this.publicKeys.get(user.id);\n if (publicKey == null) {\n continue;\n }\n const key = await this.cryptoService.rsaEncrypt(orgKey.key, publicKey.buffer);\n userIdsWithKeys.push({\n id: user.id,\n key: key.encryptedString,\n });\n }\n const request = new OrganizationUserBulkConfirmRequest(userIdsWithKeys);\n const response = await this.apiService.postOrganizationUserBulkConfirm(this.organizationId, request);\n\n response.data.forEach(entry => {\n const error = entry.error !== '' ? entry.error : this.i18nService.t('bulkConfirmMessage');\n this.statuses.set(entry.id, error);\n });\n\n this.done = true;\n } catch (e) {\n this.error = e.message;\n }\n this.loading = false;\n }\n}\n","

{{'confirmUsers' | i18n}}

{{'loading' | i18n}}
{{'noSelectedUsersApplicable' | i18n}} {{error}}

{{'fingerprintEnsureIntegrityVerify' | i18n}} {{'learnMore' | i18n}}

{{'user' | i18n}} {{'fingerprint' | i18n}}
{{user.email}} {{user.name}} {{fingerprints.get(user.id)}}
{{user.email}} {{user.name}} {{'bulkFilteredMessage' | i18n}}
{{'user' | i18n}} {{'status' | i18n}}
{{user.email}} {{user.name}} {{statuses.get(user.id)}} {{'bulkFilteredMessage' | i18n}}
","import {\n Component,\n Input,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { OrganizationUserBulkRequest } from 'jslib-common/models/request/organizationUserBulkRequest';\n\nimport { OrganizationUserUserDetailsResponse } from 'jslib-common/models/response/organizationUserResponse';\n\n@Component({\n selector: 'app-bulk-remove',\n templateUrl: 'bulk-remove.component.html',\n})\nexport class BulkRemoveComponent {\n\n @Input() organizationId: string;\n @Input() users: OrganizationUserUserDetailsResponse[];\n\n statuses: Map = new Map();\n\n loading: boolean = false;\n done: boolean = false;\n error: string;\n\n constructor(private apiService: ApiService, private i18nService: I18nService) { }\n\n async submit() {\n this.loading = true;\n try {\n const request = new OrganizationUserBulkRequest(this.users.map(user => user.id));\n const response = await this.apiService.deleteManyOrganizationUsers(this.organizationId, request);\n\n response.data.forEach(entry => {\n const error = entry.error !== '' ? entry.error : this.i18nService.t('bulkRemovedMessage');\n this.statuses.set(entry.id, error);\n });\n this.done = true;\n } catch (e) {\n this.error = e.message;\n }\n\n this.loading = false;\n }\n}\n","

{{'removeUsers' | i18n}}

{{'loading' | i18n}}
{{'noSelectedUsersApplicable' | i18n}} {{error}} 0 && !error\"> {{'removeUsersWarning' | i18n}}
{{'user' | i18n}}
{{user.email}} {{user.name}}
{{'user' | i18n}} {{'status' | i18n}}
{{user.email}} {{user.name}} {{statuses.get(user.id)}} {{'bulkFilteredMessage' | i18n}}
","import { Component } from '@angular/core';\n\nimport { OrganizationUserUserDetailsResponse } from 'jslib-common/models/response/organizationUserResponse';\n\ntype BulkStatusEntry = {\n user: OrganizationUserUserDetailsResponse,\n error: boolean,\n message: string,\n};\n\n@Component({\n selector: 'app-bulk-status',\n templateUrl: 'bulk-status.component.html',\n})\nexport class BulkStatusComponent {\n\n users: BulkStatusEntry[];\n loading: boolean = false;\n\n}\n","

{{'bulkConfirmStatus' | i18n}}

{{'loading' | i18n}}
{{'user' | i18n}} {{'status' | i18n}}
{{item.user.email}} {{item.user.name}} {{item.message}} {{item.message}}
","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { MasterPasswordPolicyOptions } from 'jslib-common/models/domain/masterPasswordPolicyOptions';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\nimport { OrganizationUserResetPasswordRequest } from 'jslib-common/models/request/organizationUserResetPasswordRequest';\n\n@Component({\n selector: 'app-reset-password',\n templateUrl: 'reset-password.component.html',\n})\nexport class ResetPasswordComponent implements OnInit {\n @Input() name: string;\n @Input() email: string;\n @Input() id: string;\n @Input() organizationId: string;\n @Output() onPasswordReset = new EventEmitter();\n\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n newPassword: string = null;\n showPassword: boolean = false;\n masterPasswordScore: number;\n formPromise: Promise;\n private newPasswordStrengthTimeout: any;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService, private passwordGenerationService: PasswordGenerationService,\n private policyService: PolicyService, private cryptoService: CryptoService) { }\n\n async ngOnInit() {\n // Get Enforced Policy Options\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions();\n }\n\n get loggedOutWarningName() {\n return this.name != null ? this.name : this.i18nService.t('thisUser');\n }\n\n getPasswordScoreAlertDisplay() {\n if (this.enforcedPolicyOptions == null) {\n return '';\n }\n\n let str: string;\n switch (this.enforcedPolicyOptions.minComplexity) {\n case 4:\n str = this.i18nService.t('strong');\n break;\n case 3:\n str = this.i18nService.t('good');\n break;\n default:\n str = this.i18nService.t('weak');\n break;\n }\n return str + ' (' + this.enforcedPolicyOptions.minComplexity + ')';\n }\n\n async generatePassword() {\n const options = (await this.passwordGenerationService.getOptions())[0];\n this.newPassword = await this.passwordGenerationService.generatePassword(options);\n this.updatePasswordStrength();\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById('newPassword').focus();\n }\n\n copy(value: string) {\n if (value == null) {\n return;\n }\n\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t('password')));\n }\n\n async submit() {\n // Validation\n if (this.newPassword == null || this.newPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return false;\n }\n\n if (this.newPassword.length < 8) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassLength'));\n return false;\n }\n\n if (this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(this.masterPasswordScore, this.newPassword,\n this.enforcedPolicyOptions)) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPasswordPolicyRequirementsNotMet'));\n return;\n }\n\n if (this.masterPasswordScore < 3) {\n const result = await this.platformUtilsService.showDialog(this.i18nService.t('weakMasterPasswordDesc'),\n this.i18nService.t('weakMasterPassword'), this.i18nService.t('yes'), this.i18nService.t('no'),\n 'warning');\n if (!result) {\n return false;\n }\n }\n\n // Get user Information (kdf type, kdf iterations, resetPasswordKey, private key) and change password\n try {\n this.formPromise = this.apiService.getOrganizationUserResetPasswordDetails(this.organizationId, this.id)\n .then(async response => {\n if (response == null) {\n throw new Error(this.i18nService.t('resetPasswordDetailsError'));\n }\n\n const kdfType = response.kdf;\n const kdfIterations = response.kdfIterations;\n const resetPasswordKey = response.resetPasswordKey;\n const encryptedPrivateKey = response.encryptedPrivateKey;\n\n // Decrypt Organization's encrypted Private Key with org key\n const orgSymKey = await this.cryptoService.getOrgKey(this.organizationId);\n const decPrivateKey = await this.cryptoService.decryptToBytes(new EncString(encryptedPrivateKey), orgSymKey);\n\n // Decrypt User's Reset Password Key to get EncKey\n const decValue = await this.cryptoService.rsaDecrypt(resetPasswordKey, decPrivateKey);\n const userEncKey = new SymmetricCryptoKey(decValue);\n\n // Create new key and hash new password\n const newKey = await this.cryptoService.makeKey(this.newPassword, this.email.trim().toLowerCase(),\n kdfType, kdfIterations);\n const newPasswordHash = await this.cryptoService.hashPassword(this.newPassword, newKey);\n\n // Create new encKey for the User\n const newEncKey = await this.cryptoService.remakeEncKey(newKey, userEncKey);\n\n // Create request\n const request = new OrganizationUserResetPasswordRequest();\n request.key = newEncKey[1].encryptedString;\n request.newMasterPasswordHash = newPasswordHash;\n\n // Change user's password\n return this.apiService.putOrganizationUserResetPassword(this.organizationId, this.id, request);\n });\n\n await this.formPromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('resetPasswordSuccess'));\n this.onPasswordReset.emit();\n } catch { }\n }\n\n updatePasswordStrength() {\n if (this.newPasswordStrengthTimeout != null) {\n clearTimeout(this.newPasswordStrengthTimeout);\n }\n this.newPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(this.newPassword,\n this.getPasswordStrengthUserInput());\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(this.email.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/));\n }\n if (this.name != null && this.name !== '') {\n userInput = userInput.concat(this.name.trim().toLowerCase().split(' '));\n }\n return userInput;\n }\n}\n","

{{'resetPassword' | i18n}} {{name}}

{{'resetPasswordLoggedOutWarning' | i18n: loggedOutWarningName}} {{'resetPasswordMasterPasswordPolicyInEffect' | i18n}}
  • 0\"> {{'policyInEffectMinComplexity' | i18n : getPasswordScoreAlertDisplay()}}
  • 0\"> {{'policyInEffectMinLength' | i18n : enforcedPolicyOptions?.minLength.toString()}}
  • {{'policyInEffectUppercase' | i18n}}
  • {{'policyInEffectLowercase' | i18n}}
  • {{'policyInEffectNumbers' | i18n}}
  • {{'policyInEffectSpecial' | i18n : '!@#$%^&*'}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CollectionData } from 'jslib-common/models/data/collectionData';\nimport { Collection } from 'jslib-common/models/domain/collection';\nimport { OrganizationUserInviteRequest } from 'jslib-common/models/request/organizationUserInviteRequest';\nimport { OrganizationUserUpdateRequest } from 'jslib-common/models/request/organizationUserUpdateRequest';\nimport { SelectionReadOnlyRequest } from 'jslib-common/models/request/selectionReadOnlyRequest';\nimport { CollectionDetailsResponse } from 'jslib-common/models/response/collectionResponse';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { OrganizationUserType } from 'jslib-common/enums/organizationUserType';\nimport { PermissionsApi } from 'jslib-common/models/api/permissionsApi';\n\n@Component({\n selector: 'app-user-add-edit',\n templateUrl: 'user-add-edit.component.html',\n})\nexport class UserAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Output() onSavedUser = new EventEmitter();\n @Output() onDeletedUser = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n title: string;\n emails: string;\n type: OrganizationUserType = OrganizationUserType.User;\n permissions = new PermissionsApi();\n showCustom = false;\n access: 'all' | 'selected' = 'selected';\n collections: CollectionView[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n organizationUserType = OrganizationUserType;\n\n get customUserTypeSelected(): boolean {\n return this.type === OrganizationUserType.Custom;\n }\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private collectionService: CollectionService,\n private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.editMode = this.loading = this.organizationUserId != null;\n await this.loadCollections();\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editUser');\n try {\n const user = await this.apiService.getOrganizationUser(this.organizationId, this.organizationUserId);\n this.access = user.accessAll ? 'all' : 'selected';\n this.type = user.type;\n if (user.type === OrganizationUserType.Custom) {\n this.permissions = user.permissions;\n }\n if (user.collections != null && this.collections != null) {\n user.collections.forEach(s => {\n const collection = this.collections.filter(c => c.id === s.id);\n if (collection != null && collection.length > 0) {\n (collection[0] as any).checked = true;\n collection[0].readOnly = s.readOnly;\n collection[0].hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch { }\n } else {\n this.title = this.i18nService.t('inviteUser');\n }\n\n this.loading = false;\n }\n\n async loadCollections() {\n const response = await this.apiService.getCollections(this.organizationId);\n const collections = response.data.map(r =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collections);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n if (!(c as any).checked) {\n c.readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.collections.forEach(c => this.check(c, select));\n }\n\n setRequestPermissions(p: PermissionsApi, clearPermissions: boolean) {\n p.accessBusinessPortal = clearPermissions ?\n false :\n this.permissions.accessBusinessPortal;\n p.accessEventLogs = this.permissions.accessEventLogs = clearPermissions ?\n false :\n this.permissions.accessEventLogs;\n p.accessImportExport = clearPermissions ?\n false :\n this.permissions.accessImportExport;\n p.accessReports = clearPermissions ?\n false :\n this.permissions.accessReports;\n p.manageAllCollections = clearPermissions ?\n false :\n this.permissions.manageAllCollections;\n p.manageAssignedCollections = clearPermissions ?\n false :\n this.permissions.manageAssignedCollections;\n p.manageGroups = clearPermissions ?\n false :\n this.permissions.manageGroups;\n p.manageSso = clearPermissions ?\n false :\n this.permissions.manageSso;\n p.managePolicies = clearPermissions ?\n false :\n this.permissions.managePolicies;\n p.manageUsers = clearPermissions ?\n false :\n this.permissions.manageUsers;\n p.manageResetPassword = clearPermissions ?\n false :\n this.permissions.manageResetPassword;\n return p;\n }\n\n handleDependentPermissions() {\n // Manage Password Reset must have Manage Users enabled\n if (this.permissions.manageResetPassword && !this.permissions.manageUsers) {\n this.permissions.manageUsers = true;\n (document.getElementById('manageUsers') as HTMLInputElement).checked = true;\n this.platformUtilsService.showToast('info', null, this.i18nService.t('resetPasswordManageUsers'));\n }\n }\n\n async submit() {\n let collections: SelectionReadOnlyRequest[] = null;\n if (this.access !== 'all') {\n collections = this.collections.filter(c => (c as any).checked)\n .map(c => new SelectionReadOnlyRequest(c.id, !!c.readOnly, !!c.hidePasswords));\n }\n\n try {\n if (this.editMode) {\n const request = new OrganizationUserUpdateRequest();\n request.accessAll = this.access === 'all';\n request.type = this.type;\n request.collections = collections;\n request.permissions = this.setRequestPermissions(request.permissions ?? new PermissionsApi(), request.type !== OrganizationUserType.Custom);\n this.formPromise = this.apiService.putOrganizationUser(this.organizationId, this.organizationUserId,\n request);\n } else {\n const request = new OrganizationUserInviteRequest();\n request.emails = this.emails.trim().split(/\\s*,\\s*/);\n request.accessAll = this.access === 'all';\n request.type = this.type;\n request.permissions = this.setRequestPermissions(request.permissions ?? new PermissionsApi(), request.type !== OrganizationUserType.Custom);\n request.collections = collections;\n this.formPromise = this.apiService.postOrganizationUserInvite(this.organizationId, request);\n }\n await this.formPromise;\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedUserId' : 'invitedUsers', this.name));\n this.onSavedUser.emit();\n } catch { }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeUserConfirmation'), this.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteOrganizationUser(this.organizationId, this.organizationUserId);\n await this.deletePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('removedUserId', this.name));\n this.onDeletedUser.emit();\n } catch { }\n }\n\n}\n","

{{title}} {{name}}

{{'loading' | i18n}}

{{'inviteUserDesc' | i18n}}

{{'inviteMultipleEmailDesc' | i18n : '20'}}

{{'userType' | i18n}}

{{'permissions' | i18n}}



{{'accessControl' | i18n}}

{{'noCollectionsInList' | i18n}}
  {{'name' | i18n}} {{'hidePasswords' | i18n}} {{'readOnly' | i18n}}
{{c.name}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-user-confirm',\n templateUrl: 'user-confirm.component.html',\n})\nexport class UserConfirmComponent implements OnInit {\n @Input() name: string;\n @Input() userId: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Output() onConfirmedUser = new EventEmitter();\n\n dontAskAgain = false;\n loading = true;\n fingerprint: string;\n\n private publicKey: Uint8Array = null;\n\n constructor(private apiService: ApiService, private cryptoService: CryptoService,\n private storageService: StorageService) { }\n\n async ngOnInit() {\n try {\n const publicKeyResponse = await this.apiService.getUserPublicKey(this.userId);\n if (publicKeyResponse != null) {\n this.publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n const fingerprint = await this.cryptoService.getFingerprint(this.userId, this.publicKey.buffer);\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join('-');\n }\n }\n } catch { }\n this.loading = false;\n }\n\n async submit() {\n if (this.loading) {\n return;\n }\n\n if (this.dontAskAgain) {\n await this.storageService.save(ConstantsService.autoConfirmFingerprints, true);\n }\n\n this.onConfirmedUser.emit(this.publicKey);\n }\n}\n","

{{'confirmUser' | i18n}} {{name}}

{{'fingerprintEnsureIntegrityVerify' | i18n}} {{'learnMore' | i18n}}

{{fingerprint}}

","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { OrganizationUserUpdateGroupsRequest } from 'jslib-common/models/request/organizationUserUpdateGroupsRequest';\nimport { GroupResponse } from 'jslib-common/models/response/groupResponse';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-user-groups',\n templateUrl: 'user-groups.component.html',\n})\nexport class UserGroupsComponent implements OnInit {\n @Input() name: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Output() onSavedUser = new EventEmitter();\n\n loading = true;\n groups: GroupResponse[] = [];\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) { }\n\n async ngOnInit() {\n const groupsResponse = await this.apiService.getGroups(this.organizationId);\n const groups = groupsResponse.data.map(r => r);\n groups.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.groups = groups;\n\n try {\n const userGroups = await this.apiService.getOrganizationUserGroups(\n this.organizationId, this.organizationUserId);\n if (userGroups != null && this.groups != null) {\n userGroups.forEach(ug => {\n const group = this.groups.filter(g => g.id === ug);\n if (group != null && group.length > 0) {\n (group[0] as any).checked = true;\n }\n });\n }\n } catch { }\n\n this.loading = false;\n }\n\n check(g: GroupResponse, select?: boolean) {\n (g as any).checked = select == null ? !(g as any).checked : select;\n if (!(g as any).checked) {\n (g as any).readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.groups.forEach(g => this.check(g, select));\n }\n\n async submit() {\n const request = new OrganizationUserUpdateGroupsRequest();\n request.groupIds = this.groups.filter(g => (g as any).checked).map(g => g.id);\n\n try {\n this.formPromise = this.apiService.putOrganizationUserGroups(this.organizationId, this.organizationUserId,\n request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('editedGroupsForUser', this.name));\n this.onSavedUser.emit();\n } catch { }\n }\n}\n","

{{'groupAccess' | i18n}} {{name}}

{{'loading' | i18n}}

{{'groupAccessUserDesc' | i18n}}

{{'noGroupsInList' | i18n}}
{{g.name}}
","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { EnvironmentService } from 'jslib-common/abstractions';\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { PolicyResponse } from 'jslib-common/models/response/policyResponse';\n\nimport { ModalComponent } from '../../modal.component';\n\nimport { PolicyEditComponent } from './policy-edit.component';\n\n@Component({\n selector: 'app-org-policies',\n templateUrl: 'policies.component.html',\n})\nexport class PoliciesComponent implements OnInit {\n @ViewChild('editTemplate', { read: ViewContainerRef, static: true }) editModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n policies: any[];\n\n // Remove when removing deprecation warning\n enterpriseTokenPromise: Promise;\n userCanAccessBusinessPortal = false;\n\n private enterpriseUrl: string;\n\n private modal: ModalComponent = null;\n private orgPolicies: PolicyResponse[];\n private policiesEnabledMap: Map = new Map();\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver,\n private platformUtilsService: PlatformUtilsService, private userService: UserService,\n private router: Router, private environmentService: EnvironmentService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (organization == null || !organization.usePolicies) {\n this.router.navigate(['/organizations', this.organizationId]);\n return;\n }\n this.userCanAccessBusinessPortal = organization.canAccessBusinessPortal;\n this.policies = [\n {\n name: this.i18nService.t('twoStepLogin'),\n description: this.i18nService.t('twoStepLoginPolicyDesc'),\n type: PolicyType.TwoFactorAuthentication,\n enabled: false,\n display: true,\n },\n {\n name: this.i18nService.t('masterPass'),\n description: this.i18nService.t('masterPassPolicyDesc'),\n type: PolicyType.MasterPassword,\n enabled: false,\n display: true,\n },\n {\n name: this.i18nService.t('passwordGenerator'),\n description: this.i18nService.t('passwordGeneratorPolicyDesc'),\n type: PolicyType.PasswordGenerator,\n enabled: false,\n display: true,\n },\n {\n name: this.i18nService.t('singleOrg'),\n description: this.i18nService.t('singleOrgDesc'),\n type: PolicyType.SingleOrg,\n enabled: false,\n display: true,\n },\n {\n name: this.i18nService.t('requireSso'),\n description: this.i18nService.t('requireSsoPolicyDesc'),\n type: PolicyType.RequireSso,\n enabled: false,\n display: organization.useSso,\n },\n {\n name: this.i18nService.t('personalOwnership'),\n description: this.i18nService.t('personalOwnershipPolicyDesc'),\n type: PolicyType.PersonalOwnership,\n enabled: false,\n display: true,\n },\n {\n name: this.i18nService.t('disableSend'),\n description: this.i18nService.t('disableSendPolicyDesc'),\n type: PolicyType.DisableSend,\n enabled: false,\n display: true,\n },\n {\n name: this.i18nService.t('sendOptions'),\n description: this.i18nService.t('sendOptionsPolicyDesc'),\n type: PolicyType.SendOptions,\n enabled: false,\n display: true,\n }, {\n name: this.i18nService.t('resetPasswordPolicy'),\n description: this.i18nService.t('resetPasswordPolicyDescription'),\n type: PolicyType.ResetPassword,\n enabled: false,\n display: organization.useResetPassword,\n },\n ];\n await this.load();\n\n // Handle policies component launch from Event message\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.policyId != null) {\n const policyIdFromEvents: string = qParams.policyId;\n for (const orgPolicy of this.orgPolicies) {\n if (orgPolicy.id === policyIdFromEvents) {\n for (let i = 0; i < this.policies.length; i++) {\n if (this.policies[i].type === orgPolicy.type) {\n this.edit(this.policies[i]);\n break;\n }\n }\n break;\n }\n }\n }\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n\n // Remove when removing deprecation warning\n this.enterpriseUrl = 'https://portal.bitwarden.com';\n if (this.environmentService.enterpriseUrl != null) {\n this.enterpriseUrl = this.environmentService.enterpriseUrl;\n } else if (this.environmentService.baseUrl != null) {\n this.enterpriseUrl = this.environmentService.baseUrl + '/portal';\n }\n }\n\n async load() {\n const response = await this.apiService.getPolicies(this.organizationId);\n this.orgPolicies = response.data != null && response.data.length > 0 ? response.data : [];\n this.orgPolicies.forEach(op => {\n this.policiesEnabledMap.set(op.type, op.enabled);\n });\n this.policies.forEach(p => {\n p.enabled = this.policiesEnabledMap.has(p.type) && this.policiesEnabledMap.get(p.type);\n });\n this.loading = false;\n }\n\n edit(p: any) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.editModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n PolicyEditComponent, this.editModalRef);\n\n childComponent.name = p.name;\n childComponent.description = p.description;\n childComponent.type = p.type;\n childComponent.organizationId = this.organizationId;\n childComponent.policiesEnabledMap = this.policiesEnabledMap;\n childComponent.onSavedPolicy.subscribe(() => {\n this.modal.close();\n this.load();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n\n // Remove when removing deprecation warning\n async goToEnterprisePortal() {\n if (this.enterpriseTokenPromise != null) {\n return;\n }\n try {\n this.enterpriseTokenPromise = this.apiService.getEnterprisePortalSignInToken();\n const token = await this.enterpriseTokenPromise;\n if (token != null) {\n const userId = await this.userService.getUserId();\n this.platformUtilsService.launchUri(this.enterpriseUrl + '/login?userId=' + userId +\n '&token=' + (window as any).encodeURIComponent(token) + '&organizationId=' + this.organizationId);\n }\n } catch { }\n this.enterpriseTokenPromise = null;\n }\n}\n","

{{'webPoliciesDeprecationWarning' | i18n}}

{{'policies' | i18n}}

{{'loading' | i18n}}
{{p.name}} {{'enabled' | i18n}} {{p.description}}
","// Using index.ts is deprecated, please do not extend\nexport { ApiService } from './api.service';\nexport { AppIdService } from './appId.service';\nexport { AuditService } from './audit.service';\nexport { AuthService } from './auth.service';\nexport { CipherService } from './cipher.service';\nexport { CollectionService } from './collection.service';\nexport { CryptoService } from './crypto.service';\nexport { EnvironmentService } from './environment.service';\nexport { FolderService } from './folder.service';\nexport { I18nService } from './i18n.service';\nexport { LogService } from './log.service';\nexport { MessagingService } from './messaging.service';\nexport { PasswordGenerationService } from './passwordGeneration.service';\nexport { PlatformUtilsService } from './platformUtils.service';\nexport { SearchService } from './search.service';\nexport { SettingsService } from './settings.service';\nexport { StorageService } from './storage.service';\nexport { StateService } from './state.service';\nexport { SyncService } from './sync.service';\nexport { TokenService } from './token.service';\nexport { TotpService } from './totp.service';\nexport { UserService } from './user.service';\nexport { VaultTimeoutService } from './vaultTimeout.service';\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { PolicyRequest } from 'jslib-common/models/request/policyRequest';\n\nimport { PolicyResponse } from 'jslib-common/models/response/policyResponse';\n\n@Component({\n selector: 'app-policy-edit',\n templateUrl: 'policy-edit.component.html',\n})\nexport class PolicyEditComponent implements OnInit {\n @Input() name: string;\n @Input() description: string;\n @Input() type: PolicyType;\n @Input() organizationId: string;\n @Input() policiesEnabledMap: Map = new Map();\n @Output() onSavedPolicy = new EventEmitter();\n\n policyType = PolicyType;\n loading = true;\n enabled = false;\n formPromise: Promise;\n passwordScores: any[];\n defaultTypes: any[];\n\n // Master password\n masterPassMinComplexity?: number = null;\n masterPassMinLength?: number;\n masterPassRequireUpper?: number;\n masterPassRequireLower?: number;\n masterPassRequireNumbers?: number;\n masterPassRequireSpecial?: number;\n\n // Password generator\n passGenDefaultType?: string;\n passGenMinLength?: number;\n passGenUseUpper?: boolean;\n passGenUseLower?: boolean;\n passGenUseNumbers?: boolean;\n passGenUseSpecial?: boolean;\n passGenMinNumbers?: number;\n passGenMinSpecial?: number;\n passGenMinNumberWords?: number;\n passGenCapitalize?: boolean;\n passGenIncludeNumber?: boolean;\n\n // Send options\n sendDisableHideEmail?: boolean;\n\n // Reset Password\n resetPasswordAutoEnroll?: boolean;\n\n private policy: PolicyResponse;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) {\n this.passwordScores = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: i18nService.t('weak') + ' (0)', value: 0 },\n { name: i18nService.t('weak') + ' (1)', value: 1 },\n { name: i18nService.t('weak') + ' (2)', value: 2 },\n { name: i18nService.t('good') + ' (3)', value: 3 },\n { name: i18nService.t('strong') + ' (4)', value: 4 },\n ];\n this.defaultTypes = [\n { name: i18nService.t('userPreference'), value: null },\n { name: i18nService.t('password'), value: 'password' },\n { name: i18nService.t('passphrase'), value: 'passphrase' },\n ];\n }\n\n async ngOnInit() {\n await this.load();\n this.loading = false;\n }\n\n async load() {\n try {\n this.policy = await this.apiService.getPolicy(this.organizationId, this.type);\n\n if (this.policy != null) {\n this.enabled = this.policy.enabled;\n if (this.policy.data != null) {\n switch (this.type) {\n case PolicyType.PasswordGenerator:\n this.passGenDefaultType = this.policy.data.defaultType;\n this.passGenMinLength = this.policy.data.minLength;\n this.passGenUseUpper = this.policy.data.useUpper;\n this.passGenUseLower = this.policy.data.useLower;\n this.passGenUseNumbers = this.policy.data.useNumbers;\n this.passGenUseSpecial = this.policy.data.useSpecial;\n this.passGenMinNumbers = this.policy.data.minNumbers;\n this.passGenMinSpecial = this.policy.data.minSpecial;\n this.passGenMinNumberWords = this.policy.data.minNumberWords;\n this.passGenCapitalize = this.policy.data.capitalize;\n this.passGenIncludeNumber = this.policy.data.includeNumber;\n break;\n case PolicyType.MasterPassword:\n this.masterPassMinComplexity = this.policy.data.minComplexity;\n this.masterPassMinLength = this.policy.data.minLength;\n this.masterPassRequireUpper = this.policy.data.requireUpper;\n this.masterPassRequireLower = this.policy.data.requireLower;\n this.masterPassRequireNumbers = this.policy.data.requireNumbers;\n this.masterPassRequireSpecial = this.policy.data.requireSpecial;\n break;\n case PolicyType.SendOptions:\n this.sendDisableHideEmail = this.policy.data.disableHideEmail;\n break;\n case PolicyType.ResetPassword:\n this.resetPasswordAutoEnroll = this.policy.data.autoEnrollEnabled;\n break;\n default:\n break;\n }\n }\n }\n } catch (e) {\n if (e.statusCode === 404) {\n this.enabled = false;\n } else {\n throw e;\n }\n }\n }\n\n async submit() {\n if (this.preValidate()) {\n const request = new PolicyRequest();\n request.enabled = this.enabled;\n request.type = this.type;\n request.data = null;\n switch (this.type) {\n case PolicyType.PasswordGenerator:\n request.data = {\n defaultType: this.passGenDefaultType,\n minLength: this.passGenMinLength || null,\n useUpper: this.passGenUseUpper,\n useLower: this.passGenUseLower,\n useNumbers: this.passGenUseNumbers,\n useSpecial: this.passGenUseSpecial,\n minNumbers: this.passGenMinNumbers || null,\n minSpecial: this.passGenMinSpecial || null,\n minNumberWords: this.passGenMinNumberWords || null,\n capitalize: this.passGenCapitalize,\n includeNumber: this.passGenIncludeNumber,\n };\n break;\n case PolicyType.MasterPassword:\n request.data = {\n minComplexity: this.masterPassMinComplexity || null,\n minLength: this.masterPassMinLength || null,\n requireUpper: this.masterPassRequireUpper,\n requireLower: this.masterPassRequireLower,\n requireNumbers: this.masterPassRequireNumbers,\n requireSpecial: this.masterPassRequireSpecial,\n };\n break;\n case PolicyType.SendOptions:\n request.data = {\n disableHideEmail: this.sendDisableHideEmail,\n };\n break;\n case PolicyType.ResetPassword:\n request.data = {\n autoEnrollEnabled: this.resetPasswordAutoEnroll,\n };\n break;\n default:\n break;\n }\n try {\n this.formPromise = this.apiService.putPolicy(this.organizationId, this.type, request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('editedPolicyId', this.name));\n this.onSavedPolicy.emit();\n } catch { }\n }\n }\n\n get checkboxDesc(): string {\n return this.type === PolicyType.PersonalOwnership ? this.i18nService.t('personalOwnershipCheckboxDesc') :\n this.i18nService.t('enabled');\n }\n\n private preValidate(): boolean {\n switch (this.type) {\n case PolicyType.RequireSso:\n // Don't need prevalidation checks if submitting to disable\n if (!this.enabled) {\n return true;\n }\n // Have SingleOrg policy enabled?\n if (!(this.policiesEnabledMap.has(PolicyType.SingleOrg)\n && this.policiesEnabledMap.get(PolicyType.SingleOrg))) {\n this.toasterService.popAsync('error', null, this.i18nService.t('requireSsoPolicyReqError'));\n return false;\n }\n return true;\n\n case PolicyType.SingleOrg:\n // Don't need prevalidation checks if submitting to enable\n if (this.enabled) {\n return true;\n }\n // If RequireSso Policy is enabled prevent submittal\n if (this.policiesEnabledMap.has(PolicyType.RequireSso)\n && this.policiesEnabledMap.get(PolicyType.RequireSso)) {\n this.toasterService.popAsync('error', null, this.i18nService.t('disableRequireSsoError'));\n return false;\n }\n return true;\n\n default:\n return true;\n }\n }\n}\n","

{{'editPolicy' | i18n}} - {{name}}

{{'loading' | i18n}}

{{description}}

{{'twoStepLoginPolicyWarning' | i18n}} {{'singleOrgPolicyWarning' | i18n}} {{'requireSsoPolicyReq' | i18n}} {{'requireSsoExemption' | i18n}} {{'personalOwnershipExemption' | i18n}} {{'disableSendExemption' | i18n}} {{'sendOptionsExemption' | i18n}} {{'resetPasswordPolicyWarning' | i18n}}

{{'password' | i18n}}

{{'passphrase' | i18n}}

{{'options' | i18n}}

{{'resetPasswordPolicyAutoEnroll' | i18n}}

{{'resetPasswordPolicyAutoEnrollDescription' | i18n}}

{{'resetPasswordPolicyAutoEnrollWarning' | i18n}}
","import {\n Component,\n ComponentFactoryResolver,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\n\nimport { OrganizationKeysRequest } from 'jslib-common/models/request/organizationKeysRequest';\nimport { OrganizationUpdateRequest } from 'jslib-common/models/request/organizationUpdateRequest';\n\nimport { OrganizationResponse } from 'jslib-common/models/response/organizationResponse';\n\nimport { ModalComponent } from '../../modal.component';\n\nimport { ApiKeyComponent } from '../../settings/api-key.component';\nimport { PurgeVaultComponent } from '../../settings/purge-vault.component';\nimport { TaxInfoComponent } from '../../settings/tax-info.component';\n\nimport { DeleteOrganizationComponent } from './delete-organization.component';\n\n@Component({\n selector: 'app-org-account',\n templateUrl: 'account.component.html',\n})\nexport class AccountComponent {\n @ViewChild('deleteOrganizationTemplate', { read: ViewContainerRef, static: true }) deleteModalRef: ViewContainerRef;\n @ViewChild('purgeOrganizationTemplate', { read: ViewContainerRef, static: true }) purgeModalRef: ViewContainerRef;\n @ViewChild('apiKeyTemplate', { read: ViewContainerRef, static: true }) apiKeyModalRef: ViewContainerRef;\n @ViewChild('rotateApiKeyTemplate', { read: ViewContainerRef, static: true }) rotateApiKeyModalRef: ViewContainerRef;\n @ViewChild(TaxInfoComponent) taxInfo: TaxInfoComponent;\n\n selfHosted = false;\n loading = true;\n canUseApi = false;\n org: OrganizationResponse;\n formPromise: Promise;\n taxFormPromise: Promise;\n\n private organizationId: string;\n private modal: ModalComponent = null;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver,\n private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private route: ActivatedRoute,\n private syncService: SyncService, private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService) { }\n\n async ngOnInit() {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n try {\n this.org = await this.apiService.getOrganization(this.organizationId);\n this.canUseApi = this.org.useApi;\n } catch { }\n });\n this.loading = false;\n }\n\n async submit() {\n try {\n const request = new OrganizationUpdateRequest();\n request.name = this.org.name;\n request.businessName = this.org.businessName;\n request.billingEmail = this.org.billingEmail;\n request.identifier = this.org.identifier;\n\n // Backfill pub/priv key if necessary\n if (!this.org.hasPublicAndPrivateKeys) {\n const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId);\n const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey);\n request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n }\n\n this.formPromise = this.apiService.putOrganization(this.organizationId, request).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('organizationUpdated'));\n } catch { }\n }\n\n async submitTaxInfo() {\n this.taxFormPromise = this.taxInfo.submitTaxInfo();\n await this.taxFormPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('taxInfoUpdated'));\n }\n\n deleteOrganization() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.deleteModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n DeleteOrganizationComponent, this.deleteModalRef);\n childComponent.organizationId = this.organizationId;\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n purgeVault() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.purgeModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(PurgeVaultComponent, this.purgeModalRef);\n childComponent.organizationId = this.organizationId;\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n viewApiKey() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.apiKeyModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(ApiKeyComponent, this.apiKeyModalRef);\n childComponent.keyType = 'organization';\n childComponent.entityId = this.organizationId;\n childComponent.postKey = this.apiService.postOrganizationApiKey.bind(this.apiService);\n childComponent.scope = 'api.organization';\n childComponent.grantType = 'client_credentials';\n childComponent.apiKeyTitle = 'apiKey';\n childComponent.apiKeyWarning = 'apiKeyWarning';\n childComponent.apiKeyDescription = 'apiKeyDesc';\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n rotateApiKey() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.rotateApiKeyModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(ApiKeyComponent, this.rotateApiKeyModalRef);\n childComponent.keyType = 'organization';\n childComponent.isRotation = true;\n childComponent.entityId = this.organizationId;\n childComponent.postKey = this.apiService.postOrganizationRotateApiKey.bind(this.apiService);\n childComponent.scope = 'api.organization';\n childComponent.grantType = 'client_credentials';\n childComponent.apiKeyTitle = 'apiKey';\n childComponent.apiKeyWarning = 'apiKeyWarning';\n childComponent.apiKeyDescription = 'apiKeyRotateDesc';\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n}\n","

{{'myOrganization' | i18n}}

{{'loading' | i18n}}

{{'apiKey' | i18n}}

{{'apiKeyDesc' | i18n}} {{'learnMore' | i18n}}

{{'taxInformation' | i18n}}

{{'taxInformationDesc' | i18n}}

{{'loading' | i18n}}

{{'dangerZone' | i18n}}

{{'dangerZoneDesc' | i18n}}

","import { TaxInfoUpdateRequest } from './taxInfoUpdateRequest';\n\nexport class OrganizationTaxInfoUpdateRequest extends TaxInfoUpdateRequest {\n taxId: string;\n line1: string;\n line2: string;\n city: string;\n state: string;\n}\n","export class TaxInfoUpdateRequest {\n country: string;\n postalCode: string;\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-delete-organization',\n templateUrl: 'delete-organization.component.html',\n})\nexport class DeleteOrganizationComponent {\n organizationId: string;\n\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private router: Router) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.deleteOrganization(this.organizationId, request);\n await this.formPromise;\n this.toasterService.popAsync('success', this.i18nService.t('organizationDeleted'),\n this.i18nService.t('organizationDeletedDesc'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","

{{'deleteOrganization' | i18n}}

{{'deleteOrganizationDesc' | i18n}}

{{'deleteOrganizationWarning' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { UserBillingComponent } from '../../settings/user-billing.component';\n\n@Component({\n selector: 'app-org-billing',\n templateUrl: '../../settings/user-billing.component.html',\n})\nexport class OrganizationBillingComponent extends UserBillingComponent implements OnInit {\n constructor(apiService: ApiService, i18nService: I18nService, toasterService: ToasterService,\n private route: ActivatedRoute, platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, toasterService, platformUtilsService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n this.firstLoaded = true;\n });\n }\n}\n","export class WebConstants {\n static readonly stripeTestKey = 'pk_test_KPoCfZXu7mznb9uSCPZ2JpTD';\n static readonly stripeLiveKey = 'pk_live_bpN0P37nMxrMQkcaHXtAybJk';\n static readonly btSandboxKey = 'sandbox_r72q8jq6_9pnxkwm75f87sdc2';\n static readonly btProductionKey = 'production_qfbsv8kc_njj2zjtyngtjmbjd';\n static readonly paypal = {\n businessIdProduction: '4ZDA7DLUUJGMN',\n businessIdSandbox: 'AD3LAUZSNVPJY',\n buttonActionProduction: 'https://www.paypal.com/cgi-bin/webscr',\n buttonActionSandbox: 'https://www.sandbox.paypal.com/cgi-bin/webscr',\n };\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { OrganizationSubscriptionResponse } from 'jslib-common/models/response/organizationSubscriptionResponse';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { PlanType } from 'jslib-common/enums/planType';\n\n@Component({\n selector: 'app-org-subscription',\n templateUrl: 'organization-subscription.component.html',\n})\nexport class OrganizationSubscriptionComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n organizationId: string;\n adjustSeatsAdd = true;\n showAdjustSeats = false;\n adjustStorageAdd = true;\n showAdjustStorage = false;\n showUpdateLicense = false;\n showDownloadLicense = false;\n showChangePlan = false;\n sub: OrganizationSubscriptionResponse;\n selfHosted = false;\n\n cancelPromise: Promise;\n reinstatePromise: Promise;\n\n constructor(private apiService: ApiService, private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService, private toasterService: ToasterService,\n private messagingService: MessagingService, private route: ActivatedRoute) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n this.firstLoaded = true;\n });\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n this.loading = true;\n this.sub = await this.apiService.getOrganizationSubscription(this.organizationId);\n this.loading = false;\n }\n\n async reinstate() {\n if (this.loading) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('reinstateConfirmation'),\n this.i18nService.t('reinstateSubscription'), this.i18nService.t('yes'), this.i18nService.t('cancel'));\n if (!confirmed) {\n return;\n }\n\n try {\n this.reinstatePromise = this.apiService.postOrganizationReinstate(this.organizationId);\n await this.reinstatePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('reinstated'));\n this.load();\n } catch { }\n }\n\n async cancel() {\n if (this.loading) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('cancelConfirmation'),\n this.i18nService.t('cancelSubscription'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n this.cancelPromise = this.apiService.postOrganizationCancel(this.organizationId);\n await this.cancelPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('canceledSubscription'));\n this.load();\n } catch { }\n }\n\n async changePlan() {\n if (this.subscription == null && this.sub.planType === PlanType.Free) {\n this.showChangePlan = !this.showChangePlan;\n return;\n }\n const contactSupport = await this.platformUtilsService.showDialog(this.i18nService.t('changeBillingPlanDesc'),\n this.i18nService.t('changeBillingPlan'), this.i18nService.t('contactSupport'), this.i18nService.t('close'));\n if (contactSupport) {\n this.platformUtilsService.launchUri('https://github.com/dani-garcia/vaultwarden');\n }\n }\n\n closeChangePlan(changed: boolean) {\n this.showChangePlan = false;\n }\n\n downloadLicense() {\n this.showDownloadLicense = !this.showDownloadLicense;\n }\n\n closeDownloadLicense() {\n this.showDownloadLicense = false;\n }\n\n updateLicense() {\n if (this.loading) {\n return;\n }\n this.showUpdateLicense = true;\n }\n\n closeUpdateLicense(updated: boolean) {\n this.showUpdateLicense = false;\n if (updated) {\n this.load();\n this.messagingService.send('updatedOrgLicense');\n }\n }\n\n adjustSeats(add: boolean) {\n this.adjustSeatsAdd = add;\n this.showAdjustSeats = true;\n }\n\n closeSeats(load: boolean) {\n this.showAdjustSeats = false;\n if (load) {\n this.load();\n }\n }\n\n adjustStorage(add: boolean) {\n this.adjustStorageAdd = add;\n this.showAdjustStorage = true;\n }\n\n closeStorage(load: boolean) {\n this.showAdjustStorage = false;\n if (load) {\n this.load();\n }\n }\n\n get isExpired() {\n return this.sub != null && this.sub.expiration != null &&\n new Date(this.sub.expiration) < new Date();\n }\n\n get subscriptionMarkedForCancel() {\n return this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate;\n }\n\n get subscription() {\n return this.sub != null ? this.sub.subscription : null;\n }\n\n get nextInvoice() {\n return this.sub != null ? this.sub.upcomingInvoice : null;\n }\n\n get storagePercentage() {\n return this.sub != null && this.sub.maxStorageGb ?\n +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2) : 0;\n }\n\n get storageProgressWidth() {\n return this.storagePercentage < 5 ? 5 : 0;\n }\n\n get billingInterval() {\n const monthly = !this.sub.plan.isAnnual;\n return monthly ? 'month' : 'year';\n }\n\n get storageGbPrice() {\n return this.sub.plan.additionalStoragePricePerGb;\n }\n\n get seatPrice() {\n return this.sub.plan.seatPrice;\n }\n\n get canAdjustSeats() {\n return this.sub.plan.hasAdditionalSeatsOption;\n }\n\n get canDownloadLicense() {\n return (this.sub.planType !== PlanType.Free && this.subscription == null) ||\n (this.subscription != null && !this.subscription.cancelled);\n }\n}\n","

{{'subscription' | i18n}} {{'loading' | i18n}}

{{'loading' | i18n}} {{'subscriptionCanceled' | i18n}}

{{'subscriptionPendingCanceled' | i18n}}

{{'billingPlan' | i18n}}
{{sub.plan.name}}
{{'expiration' | i18n}}
{{sub.expiration | date:'mediumDate'}} {{'licenseIsExpired' | i18n}}
{{'neverExpires' | i18n}}
{{'billingPlan' | i18n}}
{{sub.plan.name}}
{{'status' | i18n}}
{{subscription.status || '-'}} {{'pendingCancellation' | i18n}}
{{'nextCharge' | i18n}}
{{nextInvoice ? ((nextInvoice.date | date: 'mediumDate') + ', ' + (nextInvoice.amount | currency:'$')) : '-'}}
{{'details' | i18n}}
{{i.name}} {{i.quantity > 1 ? '×' + i.quantity : ''}} @ {{i.amount | currency:'$'}} {{(i.quantity * i.amount) | currency:'$'}} /{{i.interval | i18n}}
{{'manageSubscription' | i18n}}

{{'updateLicense' | i18n}}

{{'userSeats' | i18n}}

{{'subscriptionUserSeats' | i18n : sub.seats}}

{{'storage' | i18n}}

{{'subscriptionStorage' | i18n : sub.maxStorageGb || 0 : sub.storageName || '0 MB'}}

{{(storagePercentage / 100) | percent}}
","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { PlanType } from 'jslib-common/enums/planType';\nimport { ProductType } from 'jslib-common/enums/productType';\n\n@Component({\n selector: 'app-change-plan',\n templateUrl: 'change-plan.component.html',\n})\nexport class ChangePlanComponent {\n @Input() organizationId: string;\n @Output() onChanged = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n formPromise: Promise;\n defaultUpgradePlan: PlanType = PlanType.FamiliesAnnually;\n defaultUpgradeProduct: ProductType = ProductType.Families;\n\n constructor(private apiService: ApiService, private platformUtilsService: PlatformUtilsService) { }\n\n async submit() {\n try {\n this.onChanged.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","

{{'changeBillingPlan' | i18n}}

{{'changeBillingPlanUpgrade' | i18n}}

","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-download-license',\n templateUrl: 'download-license.component.html',\n})\nexport class DownloadLicenseComponent {\n @Input() organizationId: string;\n @Output() onDownloaded = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n installationId: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private platformUtilsService: PlatformUtilsService) { }\n\n async submit() {\n if (this.installationId == null || this.installationId === '') {\n return;\n }\n\n try {\n this.formPromise = this.apiService.getOrganizationLicense(this.organizationId, this.installationId);\n const license = await this.formPromise;\n const licenseString = JSON.stringify(license, null, 2);\n this.platformUtilsService.saveFile(window, licenseString, null, 'bitwarden_organization_license.json');\n this.onDownloaded.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","

{{'downloadLicense' | i18n}}

","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { SeatRequest } from 'jslib-common/models/request/seatRequest';\n\nimport { PaymentComponent } from '../../settings/payment.component';\n\n@Component({\n selector: 'app-adjust-seats',\n templateUrl: 'adjust-seats.component.html',\n})\nexport class AdjustSeatsComponent {\n @Input() seatPrice = 0;\n @Input() add = true;\n @Input() organizationId: string;\n @Input() interval = 'year';\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent;\n\n seatAdjustment = 0;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private router: Router,\n private activatedRoute: ActivatedRoute) { }\n\n async submit() {\n try {\n const request = new SeatRequest();\n request.seatAdjustment = this.seatAdjustment;\n if (!this.add) {\n request.seatAdjustment *= -1;\n }\n\n let paymentFailed = false;\n const action = async () => {\n const result = await this.apiService.postOrganizationSeat(this.organizationId, request);\n if (result != null && result.paymentIntentClientSecret != null) {\n try {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n } catch {\n paymentFailed = true;\n }\n }\n };\n this.formPromise = action();\n await this.formPromise;\n this.onAdjusted.emit(this.seatAdjustment);\n if (paymentFailed) {\n this.toasterService.popAsync({\n body: this.i18nService.t('couldNotChargeCardPayInvoice'),\n type: 'warning',\n timeout: 10000,\n });\n this.router.navigate(['../billing'], { relativeTo: this.activatedRoute });\n } else {\n this.toasterService.popAsync('success', null,\n this.i18nService.t('adjustedSeats', request.seatAdjustment.toString()));\n }\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n get adjustedSeatTotal(): number {\n return this.seatAdjustment * this.seatPrice;\n }\n}\n","

{{(add ? 'addSeats' : 'removeSeats') | i18n}}

{{'total' | i18n}}: {{seatAdjustment || 0}} × {{seatPrice | currency:'$'}} = {{adjustedSeatTotal | currency:'$'}} /{{interval | i18n}}
{{(add ? 'seatsAddNote' : 'seatsRemoveNote') | i18n}}
","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Component({\n selector: 'app-org-settings',\n templateUrl: 'settings.component.html',\n})\nexport class SettingsComponent {\n access2fa = false;\n selfHosted: boolean;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private platformUtilsService: PlatformUtilsService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.selfHosted = await this.platformUtilsService.isSelfHost();\n const organization = await this.userService.getOrganization(params.organizationId);\n this.access2fa = organization.use2fa;\n });\n }\n}\n"," ","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorDuoComponent } from '../../settings/two-factor-duo.component';\nimport { TwoFactorSetupComponent as BaseTwoFactorSetupComponent } from '../../settings/two-factor-setup.component';\n\n@Component({\n selector: 'app-two-factor-setup',\n templateUrl: '../../settings/two-factor-setup.component.html',\n})\nexport class TwoFactorSetupComponent extends BaseTwoFactorSetupComponent {\n constructor(apiService: ApiService, userService: UserService,\n componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService,\n policyService: PolicyService, private route: ActivatedRoute) {\n super(apiService, userService, componentFactoryResolver, messagingService, policyService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await super.ngOnInit();\n });\n }\n\n manage(type: TwoFactorProviderType) {\n switch (type) {\n case TwoFactorProviderType.OrganizationDuo:\n const duoComp = this.openModal(this.duoModalRef, TwoFactorDuoComponent);\n duoComp.type = TwoFactorProviderType.OrganizationDuo;\n duoComp.organizationId = this.organizationId;\n duoComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.OrganizationDuo);\n });\n break;\n default:\n break;\n }\n }\n\n protected getTwoFactorProviders() {\n return this.apiService.getTwoFactorOrganizationProviders(this.organizationId);\n }\n\n protected filterProvider(type: TwoFactorProviderType) {\n return type !== TwoFactorProviderType.OrganizationDuo;\n }\n}\n","import {\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { UpdateTwoFactorAuthenticatorRequest } from 'jslib-common/models/request/updateTwoFactorAuthenticatorRequest';\nimport { TwoFactorAuthenticatorResponse } from 'jslib-common/models/response/twoFactorAuthenticatorResponse';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-authenticator',\n templateUrl: 'two-factor-authenticator.component.html',\n})\nexport class TwoFactorAuthenticatorComponent extends TwoFactorBaseComponent implements OnInit, OnDestroy {\n type = TwoFactorProviderType.Authenticator;\n key: string;\n token: string;\n formPromise: Promise;\n\n private qrScript: HTMLScriptElement;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n toasterService: ToasterService, private userService: UserService,\n platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, toasterService, platformUtilsService);\n this.qrScript = window.document.createElement('script');\n this.qrScript.src = 'scripts/qrious.min.js';\n this.qrScript.async = true;\n }\n\n ngOnInit() {\n window.document.body.appendChild(this.qrScript);\n }\n\n ngOnDestroy() {\n window.document.body.removeChild(this.qrScript);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n return this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n protected enable() {\n const request = new UpdateTwoFactorAuthenticatorRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.token = this.token;\n request.key = this.key;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorAuthenticator(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private async processResponse(response: TwoFactorAuthenticatorResponse) {\n this.token = null;\n this.enabled = response.enabled;\n this.key = response.key;\n const email = await this.userService.getEmail();\n window.setTimeout(() => {\n const qr = new (window as any).QRious({\n element: document.getElementById('qr'),\n value: 'otpauth://totp/Bitwarden:' + encodeURIComponent(email) +\n '?secret=' + encodeURIComponent(this.key) + '&issuer=Bitwarden',\n size: 160,\n });\n }, 100);\n }\n}\n","

{{'twoStepLogin' | i18n}} {{'authenticatorAppTitle' | i18n}}

\"\"

{{'twoStepAuthenticatorDesc' | i18n}}

1. {{'twoStepAuthenticatorDownloadApp' | i18n}}

{{'twoStepLoginProviderEnabled' | i18n}}

{{'twoStepAuthenticatorReaddDesc' | i18n}}
\"\"

{{'twoStepAuthenticatorNeedApp' | i18n}}

{{'twoStepAuthenticatorAppsRecommended' | i18n}}

2. {{'twoStepAuthenticatorScanCode' | i18n}}



{{key}}

","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { TwoFactorEmailRequest } from 'jslib-common/models/request/twoFactorEmailRequest';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\nimport { UpdateTwoFactorEmailRequest } from 'jslib-common/models/request/updateTwoFactorEmailRequest';\nimport { TwoFactorEmailResponse } from 'jslib-common/models/response/twoFactorEmailResponse';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-email',\n templateUrl: 'two-factor-email.component.html',\n})\nexport class TwoFactorEmailComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Email;\n email: string;\n token: string;\n sentEmail: string;\n formPromise: Promise;\n emailPromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n toasterService: ToasterService, platformUtilsService: PlatformUtilsService,\n private userService: UserService) {\n super(apiService, i18nService, toasterService, platformUtilsService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n return this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n async sendEmail() {\n try {\n const request = new TwoFactorEmailRequest(this.email, this.masterPasswordHash);\n this.emailPromise = this.apiService.postTwoFactorEmailSetup(request);\n await this.emailPromise;\n this.sentEmail = this.email;\n } catch { }\n }\n\n protected enable() {\n const request = new UpdateTwoFactorEmailRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.email = this.email;\n request.token = this.token;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorEmail(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private async processResponse(response: TwoFactorEmailResponse) {\n this.token = null;\n this.email = response.email;\n this.enabled = response.enabled;\n if (!this.enabled && (this.email == null || this.email === '')) {\n this.email = await this.userService.getEmail();\n }\n }\n}\n","

{{'twoStepLogin' | i18n}} {{'emailTitle' | i18n}}

{{'twoStepLoginProviderEnabled' | i18n}} {{'email' | i18n}}: {{email}}

{{'twoFactorEmailDesc' | i18n}} \"\"

{{'verificationCodeEmailSent' | i18n : sentEmail}}
","import { Component } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { TwoFactorRecoverResponse } from 'jslib-common/models/response/twoFactorRescoverResponse';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\n@Component({\n selector: 'app-two-factor-recovery',\n templateUrl: 'two-factor-recovery.component.html',\n})\nexport class TwoFactorRecoveryComponent {\n type = -1;\n code: string;\n authed: boolean;\n twoFactorProviderType = TwoFactorProviderType;\n\n constructor(private i18nService: I18nService) { }\n\n auth(authResponse: any) {\n this.authed = true;\n this.processResponse(authResponse.response);\n }\n\n print() {\n const w = window.open();\n w.document.write('
' +\n '

' + this.i18nService.t('twoFactorRecoveryYourCode') + ':

' +\n '' +\n this.code + '
' +\n '

' + new Date() + '

');\n w.onafterprint = () => w.close();\n w.print();\n }\n\n private formatString(s: string) {\n if (s == null) {\n return null;\n }\n return s.replace(/(.{4})/g, '$1 ').trim().toUpperCase();\n }\n\n private processResponse(response: TwoFactorRecoverResponse) {\n this.code = this.formatString(response.code);\n }\n}\n","

{{'twoStepLogin' | i18n}} {{'recoveryCodeTitle' | i18n}}

{{'twoFactorRecoveryYourCode' | i18n}}:

{{code}}
{{'twoFactorRecoveryNoCode' | i18n}}
","import {\n Component,\n NgZone,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\nimport { UpdateTwoFactorWebAuthnDeleteRequest } from 'jslib-common/models/request/updateTwoFactorWebAuthnDeleteRequest';\nimport { UpdateTwoFactorWebAuthnRequest } from 'jslib-common/models/request/updateTwoFactorWebAuthnRequest';\nimport {\n ChallengeResponse,\n TwoFactorWebAuthnResponse,\n} from 'jslib-common/models/response/twoFactorWebAuthnResponse';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-webauthn',\n templateUrl: 'two-factor-webauthn.component.html',\n})\nexport class TwoFactorWebAuthnComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.WebAuthn;\n name: string;\n keys: any[];\n keyIdAvailable: number = null;\n keysConfiguredCount = 0;\n webAuthnError: boolean;\n webAuthnListening: boolean;\n webAuthnResponse: PublicKeyCredential;\n challengePromise: Promise;\n formPromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n toasterService: ToasterService, platformUtilsService: PlatformUtilsService,\n private ngZone: NgZone) {\n super(apiService, i18nService, toasterService, platformUtilsService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.webAuthnResponse == null || this.keyIdAvailable == null) {\n // Should never happen.\n return Promise.reject();\n }\n const request = new UpdateTwoFactorWebAuthnRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.deviceResponse = this.webAuthnResponse;\n request.id = this.keyIdAvailable;\n request.name = this.name;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorWebAuthn(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n disable() {\n return super.disable(this.formPromise);\n }\n\n async remove(key: any) {\n if (this.keysConfiguredCount <= 1 || key.removePromise != null) {\n return;\n }\n const name = key.name != null ? key.name : this.i18nService.t('webAuthnkeyX', key.id);\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeU2fConfirmation'), name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n const request = new UpdateTwoFactorWebAuthnDeleteRequest();\n request.id = key.id;\n request.masterPasswordHash = this.masterPasswordHash;\n try {\n key.removePromise = this.apiService.deleteTwoFactorWebAuthn(request);\n const response = await key.removePromise;\n key.removePromise = null;\n await this.processResponse(response);\n } catch { }\n }\n\n async readKey() {\n if (this.keyIdAvailable == null) {\n return;\n }\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n try {\n this.challengePromise = this.apiService.getTwoFactorWebAuthnChallenge(request);\n const challenge = await this.challengePromise;\n this.readDevice(challenge);\n } catch { }\n }\n\n private readDevice(webAuthnChallenge: ChallengeResponse) {\n // tslint:disable-next-line\n console.log('listening for key...');\n this.resetWebAuthn(true);\n\n navigator.credentials.create({\n publicKey: webAuthnChallenge,\n }).then((data: PublicKeyCredential) => {\n this.ngZone.run(() => {\n this.webAuthnListening = false;\n this.webAuthnResponse = data;\n });\n }).catch(err => {\n // tslint:disable-next-line\n console.error(err);\n this.resetWebAuthn(false);\n // TODO: Should we display the actual error?\n this.webAuthnError = true;\n });\n }\n\n private resetWebAuthn(listening = false) {\n this.webAuthnResponse = null;\n this.webAuthnError = false;\n this.webAuthnListening = listening;\n }\n\n private processResponse(response: TwoFactorWebAuthnResponse) {\n this.resetWebAuthn();\n this.keys = [];\n this.keyIdAvailable = null;\n this.name = null;\n this.keysConfiguredCount = 0;\n for (let i = 1; i <= 5; i++) {\n if (response.keys != null) {\n const key = response.keys.filter(k => k.id === i);\n if (key.length > 0) {\n this.keysConfiguredCount++;\n this.keys.push({\n id: i, name: key[0].name,\n configured: true,\n migrated: key[0].migrated,\n removePromise: null,\n });\n continue;\n }\n }\n this.keys.push({ id: i, name: null, configured: false, removePromise: null });\n if (this.keyIdAvailable == null) {\n this.keyIdAvailable = i;\n }\n }\n this.enabled = response.enabled;\n }\n}\n","

{{'twoStepLogin' | i18n}} {{'webAuthnTitle' | i18n}}

{{'twoStepLoginProviderEnabled' | i18n}}

{{'twoFactorWebAuthnWarning' | i18n}}

  • {{'twoFactorWebAuthnSupportWeb' | i18n}}
\"\"
  • {{'webAuthnkeyX' | i18n : i + 1}} {{k.name}} {{'webAuthnMigrated' | i18n}} 1 && k.configured\"> - {{'remove' | i18n}}

{{'twoFactorWebAuthnAdd' | i18n}}:

  1. {{'twoFactorU2fGiveName' | i18n}}
  2. {{'twoFactorU2fPlugInReadKey' | i18n}}
  3. {{'twoFactorU2fTouchButton' | i18n}}
  4. {{'twoFactorU2fSaveForm' | i18n}}
{{'twoFactorU2fWaiting' | i18n}}... {{'twoFactorU2fClickSave' | i18n}} {{'twoFactorU2fProblemReadingTryAgain' | i18n}}
","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { UpdateTwoFactorYubioOtpRequest } from 'jslib-common/models/request/updateTwoFactorYubioOtpRequest';\nimport { TwoFactorYubiKeyResponse } from 'jslib-common/models/response/twoFactorYubiKeyResponse';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-yubikey',\n templateUrl: 'two-factor-yubikey.component.html',\n})\nexport class TwoFactorYubiKeyComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Yubikey;\n keys: any[];\n nfc = false;\n\n formPromise: Promise;\n disablePromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n toasterService: ToasterService, platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, toasterService, platformUtilsService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n submit() {\n const request = new UpdateTwoFactorYubioOtpRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.key1 = this.keys != null && this.keys.length > 0 ? this.keys[0].key : null;\n request.key2 = this.keys != null && this.keys.length > 1 ? this.keys[1].key : null;\n request.key3 = this.keys != null && this.keys.length > 2 ? this.keys[2].key : null;\n request.key4 = this.keys != null && this.keys.length > 3 ? this.keys[3].key : null;\n request.key5 = this.keys != null && this.keys.length > 4 ? this.keys[4].key : null;\n request.nfc = this.nfc;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorYubiKey(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n this.toasterService.popAsync('success', null, this.i18nService.t('yubikeysUpdated'));\n });\n }\n\n disable() {\n return super.disable(this.disablePromise);\n }\n\n remove(key: any) {\n key.existingKey = null;\n key.key = null;\n }\n\n private processResponse(response: TwoFactorYubiKeyResponse) {\n this.enabled = response.enabled;\n this.keys = [\n { key: response.key1, existingKey: this.padRight(response.key1) },\n { key: response.key2, existingKey: this.padRight(response.key2) },\n { key: response.key3, existingKey: this.padRight(response.key3) },\n { key: response.key4, existingKey: this.padRight(response.key4) },\n { key: response.key5, existingKey: this.padRight(response.key5) },\n ];\n this.nfc = response.nfc || !response.enabled;\n }\n\n private padRight(str: string, character = '•', size = 44) {\n if (str == null || character == null || str.length >= size) {\n return str;\n }\n const max = (size - str.length) / character.length;\n for (let i = 0; i < max; i++) {\n str += character;\n }\n return str;\n }\n}\n","

{{'twoStepLogin' | i18n}} YubiKey

{{'twoStepLoginProviderEnabled' | i18n}}

{{'twoFactorYubikeyWarning' | i18n}}

  • {{'twoFactorYubikeySupportUsb' | i18n}}
  • {{'twoFactorYubikeySupportMobile' | i18n}}
\"\"

{{'twoFactorYubikeyAdd' | i18n}}:

  1. {{'twoFactorYubikeyPlugIn' | i18n}}
  2. {{'twoFactorYubikeySelectKey' | i18n}}
  3. {{'twoFactorYubikeyTouchButton' | i18n}}
  4. {{'twoFactorYubikeySaveForm' | i18n}}

{{k.existingKey}}
{{'nfcSupport' | i18n}}
{{'twoFactorYubikeySupportsNfcDesc' | i18n}}
","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { ExportService } from 'jslib-common/abstractions/export.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { ExportComponent as BaseExportComponent } from '../../tools/export.component';\n\nimport { EventType } from 'jslib-common/enums/eventType';\n\n@Component({\n selector: 'app-org-export',\n templateUrl: '../../tools/export.component.html',\n})\nexport class ExportComponent extends BaseExportComponent {\n constructor(cryptoService: CryptoService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, exportService: ExportService,\n eventService: EventService, private route: ActivatedRoute) {\n super(cryptoService, i18nService, platformUtilsService, exportService, eventService);\n }\n\n ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n });\n }\n\n getExportData() {\n return this.exportService.getOrganizationExport(this.organizationId, this.format);\n }\n\n getFileName() {\n return super.getFileName('org');\n }\n\n async collectEvent(): Promise {\n // TODO\n // await this.eventService.collect(EventType.Organization_ClientExportedVault);\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport {\n ExposedPasswordsReportComponent as BaseExposedPasswordsReportComponent,\n} from '../../tools/exposed-passwords-report.component';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Component({\n selector: 'app-exposed-passwords-report',\n templateUrl: '../../tools/exposed-passwords-report.component.html',\n})\nexport class ExposedPasswordsReportComponent extends BaseExposedPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(cipherService: CipherService, auditService: AuditService,\n componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService,\n userService: UserService, private route: ActivatedRoute) {\n super(cipherService, auditService, componentFactoryResolver, messagingService, userService);\n }\n\n ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some(x => x.id === c.id);\n }\n}\n","import { PasswordHistoryResponse } from '../response/passwordHistoryResponse';\n\nexport class PasswordHistoryData {\n password: string;\n lastUsedDate: string;\n\n constructor(response?: PasswordHistoryResponse) {\n if (response == null) {\n return;\n }\n\n this.password = response.password;\n this.lastUsedDate = response.lastUsedDate;\n }\n}\n","import { View } from './view';\n\nimport { Attachment } from '../domain/attachment';\nimport { SymmetricCryptoKey } from '../domain/symmetricCryptoKey';\n\nexport class AttachmentView implements View {\n id: string = null;\n url: string = null;\n size: string = null;\n sizeName: string = null;\n fileName: string = null;\n key: SymmetricCryptoKey = null;\n\n constructor(a?: Attachment) {\n if (!a) {\n return;\n }\n\n this.id = a.id;\n this.url = a.url;\n this.size = a.size;\n this.sizeName = a.sizeName;\n }\n\n get fileSize(): number {\n try {\n if (this.size != null) {\n return parseInt(this.size, null);\n }\n } catch { }\n return 0;\n }\n}\n","import { PasswordHistoryData } from '../data/passwordHistoryData';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\n\nimport { PasswordHistoryView } from '../view/passwordHistoryView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Password extends Domain {\n password: EncString;\n lastUsedDate: Date;\n\n constructor(obj?: PasswordHistoryData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n password: null,\n }, alreadyEncrypted);\n this.lastUsedDate = new Date(obj.lastUsedDate);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new PasswordHistoryView(this), {\n password: null,\n }, orgId, encKey);\n }\n\n toPasswordHistoryData(): PasswordHistoryData {\n const ph = new PasswordHistoryData();\n ph.lastUsedDate = this.lastUsedDate.toISOString();\n this.buildDataModel(this, ph, {\n password: null,\n });\n return ph;\n }\n}\n","import { CipherRequest } from './cipherRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherCreateRequest {\n cipher: CipherRequest;\n collectionIds: string[];\n\n constructor(cipher: Cipher) {\n this.cipher = new CipherRequest(cipher);\n this.collectionIds = cipher.collectionIds;\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class CardApi extends BaseResponse {\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.cardholderName = this.getResponseProperty('CardholderName');\n this.brand = this.getResponseProperty('Brand');\n this.number = this.getResponseProperty('Number');\n this.expMonth = this.getResponseProperty('ExpMonth');\n this.expYear = this.getResponseProperty('ExpYear');\n this.code = this.getResponseProperty('Code');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { FieldType } from '../../enums/fieldType';\n\nexport class FieldApi extends BaseResponse {\n name: string;\n value: string;\n type: FieldType;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n this.value = this.getResponseProperty('Value');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class IdentityApi extends BaseResponse {\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.title = this.getResponseProperty('Title');\n this.firstName = this.getResponseProperty('FirstName');\n this.middleName = this.getResponseProperty('MiddleName');\n this.lastName = this.getResponseProperty('LastName');\n this.address1 = this.getResponseProperty('Address1');\n this.address2 = this.getResponseProperty('Address2');\n this.address3 = this.getResponseProperty('Address3');\n this.city = this.getResponseProperty('City');\n this.state = this.getResponseProperty('State');\n this.postalCode = this.getResponseProperty('PostalCode');\n this.country = this.getResponseProperty('Country');\n this.company = this.getResponseProperty('Company');\n this.email = this.getResponseProperty('Email');\n this.phone = this.getResponseProperty('Phone');\n this.ssn = this.getResponseProperty('SSN');\n this.username = this.getResponseProperty('Username');\n this.passportNumber = this.getResponseProperty('PassportNumber');\n this.licenseNumber = this.getResponseProperty('LicenseNumber');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { LoginUriApi } from './loginUriApi';\n\nexport class LoginApi extends BaseResponse {\n uris: LoginUriApi[];\n username: string;\n password: string;\n passwordRevisionDate: string;\n totp: string;\n autofillOnPageLoad: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.username = this.getResponseProperty('Username');\n this.password = this.getResponseProperty('Password');\n this.passwordRevisionDate = this.getResponseProperty('PasswordRevisionDate');\n this.totp = this.getResponseProperty('Totp');\n this.autofillOnPageLoad = this.getResponseProperty('AutofillOnPageLoad');\n\n const uris = this.getResponseProperty('Uris');\n if (uris != null) {\n this.uris = uris.map((u: any) => new LoginUriApi(u));\n }\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { UriMatchType } from '../../enums/uriMatchType';\n\nexport class LoginUriApi extends BaseResponse {\n uri: string;\n match: UriMatchType = null;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.uri = this.getResponseProperty('Uri');\n const match = this.getResponseProperty('Match');\n this.match = match != null ? match : null;\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { SecureNoteType } from '../../enums/secureNoteType';\n\nexport class SecureNoteApi extends BaseResponse {\n type: SecureNoteType;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.type = this.getResponseProperty('Type');\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n} from '@angular/core';\n\n@Directive({\n selector: '[appFallbackSrc]',\n})\nexport class FallbackSrcDirective {\n @Input('appFallbackSrc') appFallbackSrc: string;\n\n constructor(private el: ElementRef) {\n }\n\n @HostListener('error') onError() {\n this.el.nativeElement.src = this.appFallbackSrc;\n }\n}\n","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { ImportService } from 'jslib-common/abstractions/import.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ImportComponent as BaseImportComponent } from '../../tools/import.component';\n\n@Component({\n selector: 'app-org-import',\n templateUrl: '../../tools/import.component.html',\n})\nexport class ImportComponent extends BaseImportComponent {\n organizationName: string;\n\n constructor(i18nService: I18nService, toasterService: ToasterService,\n importService: ImportService, router: Router, private route: ActivatedRoute,\n platformUtilsService: PlatformUtilsService,\n private userService: UserService) {\n super(i18nService, toasterService, importService, router, platformUtilsService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n this.successNavigate = ['organizations', this.organizationId, 'vault'];\n super.ngOnInit();\n });\n const organization = await this.userService.getOrganization(this.organizationId);\n this.organizationName = organization.name;\n }\n\n async submit() {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('importWarning', this.organizationName),\n this.i18nService.t('warning'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n super.submit();\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport {\n InactiveTwoFactorReportComponent as BaseInactiveTwoFactorReportComponent,\n} from '../../tools/inactive-two-factor-report.component';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Component({\n selector: 'app-inactive-two-factor-report',\n templateUrl: '../../tools/inactive-two-factor-report.component.html',\n})\nexport class InactiveTwoFactorReportComponent extends BaseInactiveTwoFactorReportComponent {\n constructor(cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService,\n private route: ActivatedRoute) {\n super(cipherService, componentFactoryResolver, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport {\n ReusedPasswordsReportComponent as BaseReusedPasswordsReportComponent,\n} from '../../tools/reused-passwords-report.component';\n\n@Component({\n selector: 'app-reused-passwords-report',\n templateUrl: '../../tools/reused-passwords-report.component.html',\n})\nexport class ReusedPasswordsReportComponent extends BaseReusedPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService,\n private route: ActivatedRoute) {\n super(cipherService, componentFactoryResolver, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some(x => x.id === c.id);\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Component({\n selector: 'app-org-tools',\n templateUrl: 'tools.component.html',\n})\nexport class ToolsComponent {\n organization: Organization;\n accessReports = false;\n loading = true;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private messagingService: MessagingService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now\n // since all paid plans include useTotp\n this.accessReports = this.organization.useTotp;\n this.loading = false;\n });\n }\n\n upgradeOrganization() {\n this.messagingService.send('upgradeOrganization', { organizationId: this.organization.id });\n }\n}\n"," ","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport {\n UnsecuredWebsitesReportComponent as BaseUnsecuredWebsitesReportComponent,\n} from '../../tools/unsecured-websites-report.component';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Component({\n selector: 'app-unsecured-websites-report',\n templateUrl: '../../tools/unsecured-websites-report.component.html',\n})\nexport class UnsecuredWebsitesReportComponent extends BaseUnsecuredWebsitesReportComponent {\n constructor(cipherService: CipherService, componentFactoryResolver: ComponentFactoryResolver,\n messagingService: MessagingService, userService: UserService,\n private route: ActivatedRoute) {\n super(cipherService, componentFactoryResolver, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport {\n WeakPasswordsReportComponent as BaseWeakPasswordsReportComponent,\n} from '../../tools/weak-passwords-report.component';\n\n@Component({\n selector: 'app-weak-passwords-report',\n templateUrl: '../../tools/weak-passwords-report.component.html',\n})\nexport class WeakPasswordsReportComponent extends BaseWeakPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(cipherService: CipherService, passwordGenerationService: PasswordGenerationService,\n componentFactoryResolver: ComponentFactoryResolver, messagingService: MessagingService,\n userService: UserService, private route: ActivatedRoute) {\n super(cipherService, passwordGenerationService, componentFactoryResolver, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some(x => x.id === c.id);\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { ModalComponent } from '../../modal.component';\n\nimport { EntityEventsComponent } from '../manage/entity-events.component';\nimport { AddEditComponent } from './add-edit.component';\nimport { AttachmentsComponent } from './attachments.component';\nimport { CiphersComponent } from './ciphers.component';\nimport { CollectionsComponent } from './collections.component';\nimport { GroupingsComponent } from './groupings.component';\n\nconst BroadcasterSubscriptionId = 'OrgVaultComponent';\n\n@Component({\n selector: 'app-org-vault',\n templateUrl: 'vault.component.html',\n})\nexport class VaultComponent implements OnInit, OnDestroy {\n @ViewChild(GroupingsComponent, { static: true }) groupingsComponent: GroupingsComponent;\n @ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent;\n @ViewChild('attachments', { read: ViewContainerRef, static: true }) attachmentsModalRef: ViewContainerRef;\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('collections', { read: ViewContainerRef, static: true }) collectionsModalRef: ViewContainerRef;\n @ViewChild('eventsTemplate', { read: ViewContainerRef, static: true }) eventsModalRef: ViewContainerRef;\n\n organization: Organization;\n collectionId: string = null;\n type: CipherType = null;\n deleted: boolean = false;\n trashCleanupWarning: string = null;\n\n modal: ModalComponent = null;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private router: Router, private changeDetectorRef: ChangeDetectorRef,\n private syncService: SyncService, private i18nService: I18nService,\n private componentFactoryResolver: ComponentFactoryResolver, private messagingService: MessagingService,\n private broadcasterService: BroadcasterService, private ngZone: NgZone,\n private platformUtilsService: PlatformUtilsService) { }\n\n ngOnInit() {\n this.trashCleanupWarning = this.i18nService.t(\n this.platformUtilsService.isSelfHost() ? 'trashCleanupWarningSelfHosted' : 'trashCleanupWarning'\n );\n\n const queryParams = this.route.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.groupingsComponent.organization = this.organization;\n this.ciphersComponent.organization = this.organization;\n\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n this.ciphersComponent.searchText = this.groupingsComponent.searchText = qParams.search;\n if (!this.organization.canManageAllCollections) {\n await this.syncService.fullSync(false);\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'syncCompleted':\n if (message.successfully) {\n await Promise.all([\n this.groupingsComponent.load(),\n this.ciphersComponent.refresh(),\n ]);\n this.changeDetectorRef.detectChanges();\n }\n break;\n }\n });\n });\n }\n await this.groupingsComponent.load();\n\n if (qParams == null) {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n } else {\n if (qParams.deleted) {\n this.groupingsComponent.selectedTrash = true;\n await this.filterDeleted(true);\n } else if (qParams.type) {\n const t = parseInt(qParams.type, null);\n this.groupingsComponent.selectedType = t;\n await this.filterCipherType(t, true);\n } else if (qParams.collectionId) {\n this.groupingsComponent.selectedCollectionId = qParams.collectionId;\n await this.filterCollection(qParams.collectionId, true);\n } else {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n }\n }\n\n if (qParams.viewEvents != null) {\n const cipher = this.ciphersComponent.ciphers.filter(c => c.id === qParams.viewEvents);\n if (cipher.length > 0) {\n this.viewEvents(cipher[0]);\n }\n }\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n\n if (queryParams != null) {\n queryParams.unsubscribe();\n }\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async clearGroupingFilters() {\n this.ciphersComponent.showAddNew = true;\n this.ciphersComponent.deleted = false;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchVault');\n await this.ciphersComponent.applyFilter();\n this.clearFilters();\n this.go();\n }\n\n async filterCipherType(type: CipherType, load = false) {\n this.ciphersComponent.showAddNew = true;\n this.ciphersComponent.deleted = false;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchType');\n const filter = (c: CipherView) => c.type === type;\n if (load) {\n await this.ciphersComponent.reload(filter);\n } else {\n await this.ciphersComponent.applyFilter(filter);\n }\n this.clearFilters();\n this.type = type;\n this.go();\n }\n\n async filterCollection(collectionId: string, load = false) {\n this.ciphersComponent.showAddNew = true;\n this.ciphersComponent.deleted = false;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchCollection');\n const filter = (c: CipherView) => {\n if (collectionId === 'unassigned') {\n return c.collectionIds == null || c.collectionIds.length === 0;\n } else {\n return c.collectionIds != null && c.collectionIds.indexOf(collectionId) > -1;\n }\n };\n if (load) {\n await this.ciphersComponent.reload(filter);\n } else {\n await this.ciphersComponent.applyFilter(filter);\n }\n this.clearFilters();\n this.collectionId = collectionId;\n this.go();\n }\n\n async filterDeleted(load: boolean = false) {\n this.ciphersComponent.showAddNew = false;\n this.ciphersComponent.deleted = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchTrash');\n if (load) {\n await this.ciphersComponent.reload(null, true);\n } else {\n await this.ciphersComponent.applyFilter(null);\n }\n this.clearFilters();\n this.deleted = true;\n this.go();\n }\n\n filterSearchText(searchText: string) {\n this.ciphersComponent.searchText = searchText;\n this.ciphersComponent.search(200);\n }\n\n editCipherAttachments(cipher: CipherView) {\n if (this.organization.maxStorageGb == null || this.organization.maxStorageGb === 0) {\n this.messagingService.send('upgradeOrganization', { organizationId: cipher.organizationId });\n return;\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.attachmentsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(AttachmentsComponent, this.attachmentsModalRef);\n\n childComponent.organization = this.organization;\n childComponent.cipherId = cipher.id;\n let madeAttachmentChanges = false;\n childComponent.onUploadedAttachment.subscribe(() => madeAttachmentChanges = true);\n childComponent.onDeletedAttachment.subscribe(() => madeAttachmentChanges = true);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n if (madeAttachmentChanges) {\n await this.ciphersComponent.refresh();\n }\n madeAttachmentChanges = false;\n });\n }\n\n editCipherCollections(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.collectionsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(CollectionsComponent, this.collectionsModalRef);\n\n if (this.organization.canManageAllCollections) {\n childComponent.collectionIds = cipher.collectionIds;\n childComponent.collections = this.groupingsComponent.collections.filter(c => !c.readOnly);\n }\n childComponent.organization = this.organization;\n childComponent.cipherId = cipher.id;\n childComponent.onSavedCollections.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n addCipher() {\n const component = this.editCipher(null);\n component.organizationId = this.organization.id;\n component.type = this.type;\n if (this.organization.canManageAllCollections) {\n component.collections = this.groupingsComponent.collections.filter(c => !c.readOnly);\n }\n if (this.collectionId != null) {\n component.collectionIds = [this.collectionId];\n }\n }\n\n editCipher(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.cipherAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(AddEditComponent, this.cipherAddEditModalRef);\n\n childComponent.organization = this.organization;\n childComponent.cipherId = cipher == null ? null : cipher.id;\n childComponent.onSavedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n childComponent.onDeletedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n childComponent.onRestoredCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n\n return childComponent;\n }\n\n cloneCipher(cipher: CipherView) {\n const component = this.editCipher(cipher);\n component.cloneMode = true;\n component.organizationId = this.organization.id;\n if (this.organization.canManageAllCollections) {\n component.collections = this.groupingsComponent.collections.filter(c => !c.readOnly);\n }\n // Regardless of Admin state, the collection Ids need to passed manually as they are not assigned value\n // in the add-edit componenet\n component.collectionIds = cipher.collectionIds;\n }\n\n async viewEvents(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.eventsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EntityEventsComponent, this.eventsModalRef);\n\n childComponent.name = cipher.name;\n childComponent.organizationId = this.organization.id;\n childComponent.entityId = cipher.id;\n childComponent.showUser = true;\n childComponent.entity = 'cipher';\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n private clearFilters() {\n this.collectionId = null;\n this.type = null;\n this.deleted = false;\n }\n\n private go(queryParams: any = null) {\n if (queryParams == null) {\n queryParams = {\n type: this.type,\n collectionId: this.collectionId,\n deleted: this.deleted ? true : null,\n };\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n replaceUrl: true,\n });\n }\n}\n","

{{'vault' | i18n}} {{'loading' | i18n}}

{{trashCleanupWarning}}
","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CipherData } from 'jslib-common/models/data/cipherData';\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { AttachmentView } from 'jslib-common/models/view/attachmentView';\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from '../../vault/attachments.component';\n\n@Component({\n selector: 'app-org-vault-attachments',\n templateUrl: '../../vault/attachments.component.html',\n})\nexport class AttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = false;\n organization: Organization;\n\n constructor(cipherService: CipherService, i18nService: I18nService,\n cryptoService: CryptoService, userService: UserService,\n platformUtilsService: PlatformUtilsService, apiService: ApiService) {\n super(cipherService, i18nService, cryptoService, userService, platformUtilsService, apiService);\n }\n\n protected async reupload(attachment: AttachmentView) {\n if (this.organization.canManageAllCollections && this.showFixOldAttachments(attachment)) {\n await super.reuploadCipherAttachment(attachment, true);\n }\n }\n\n protected async loadCipher() {\n if (!this.organization.canManageAllCollections) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n return new Cipher(new CipherData(response));\n }\n\n protected saveCipherAttachment(file: File) {\n return this.cipherService.saveAttachmentWithServer(this.cipherDomain, file, this.organization.canManageAllCollections);\n }\n\n protected deleteCipherAttachment(attachmentId: string) {\n if (!this.organization.canManageAllCollections) {\n return super.deleteCipherAttachment(attachmentId);\n }\n return this.apiService.deleteCipherAttachmentAdmin(this.cipherId, attachmentId);\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return attachment.key == null && this.organization.canManageAllCollections;\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { ErrorResponse } from 'jslib-common/models/response';\n\nimport { AttachmentView } from 'jslib-common/models/view/attachmentView';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Directive()\nexport class AttachmentsComponent implements OnInit {\n @Input() cipherId: string;\n @Output() onUploadedAttachment = new EventEmitter();\n @Output() onDeletedAttachment = new EventEmitter();\n @Output() onReuploadedAttachment = new EventEmitter();\n\n cipher: CipherView;\n cipherDomain: Cipher;\n hasUpdatedKey: boolean;\n canAccessAttachments: boolean;\n formPromise: Promise;\n deletePromises: { [id: string]: Promise; } = {};\n reuploadPromises: { [id: string]: Promise; } = {};\n emergencyAccessId?: string = null;\n\n constructor(protected cipherService: CipherService, protected i18nService: I18nService,\n protected cryptoService: CryptoService, protected userService: UserService,\n protected platformUtilsService: PlatformUtilsService, protected apiService: ApiService,\n protected win: Window) { }\n\n async ngOnInit() {\n await this.init();\n }\n\n async submit() {\n if (!this.hasUpdatedKey) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('updateKey'));\n return;\n }\n\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n if (files[0].size > 524288000) { // 500 MB\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('maxFileSize'));\n return;\n }\n\n try {\n this.formPromise = this.saveCipherAttachment(files[0]);\n this.cipherDomain = await this.formPromise;\n this.cipher = await this.cipherDomain.decrypt();\n this.platformUtilsService.showToast('success', null, this.i18nService.t('attachmentSaved'));\n this.onUploadedAttachment.emit();\n } catch { }\n\n // reset file input\n // ref: https://stackoverflow.com/a/20552042\n fileEl.type = '';\n fileEl.type = 'file';\n fileEl.value = '';\n }\n\n async delete(attachment: AttachmentView) {\n if (this.deletePromises[attachment.id] != null) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteAttachmentConfirmation'), this.i18nService.t('deleteAttachment'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n this.deletePromises[attachment.id] = this.deleteCipherAttachment(attachment.id);\n await this.deletePromises[attachment.id];\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedAttachment'));\n const i = this.cipher.attachments.indexOf(attachment);\n if (i > -1) {\n this.cipher.attachments.splice(i, 1);\n }\n } catch { }\n\n this.deletePromises[attachment.id] = null;\n this.onDeletedAttachment.emit();\n }\n\n async download(attachment: AttachmentView) {\n const a = (attachment as any);\n if (a.downloading) {\n return;\n }\n\n if (!this.canAccessAttachments) {\n this.platformUtilsService.showToast('error', this.i18nService.t('premiumRequired'),\n this.i18nService.t('premiumRequiredDesc'));\n return;\n }\n\n let url: string;\n try {\n const attachmentDownloadResponse = await this.apiService.getAttachmentData(this.cipher.id, attachment.id,\n this.emergencyAccessId);\n url = attachmentDownloadResponse.url;\n } catch (e) {\n if (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404) {\n url = attachment.url;\n } else if (e instanceof ErrorResponse) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n } else {\n throw e;\n }\n }\n\n a.downloading = true;\n const response = await fetch(new Request(url, { cache: 'no-store' }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n a.downloading = false;\n return;\n }\n\n try {\n const buf = await response.arrayBuffer();\n const key = attachment.key != null ? attachment.key :\n await this.cryptoService.getOrgKey(this.cipher.organizationId);\n const decBuf = await this.cryptoService.decryptFromBytes(buf, key);\n this.platformUtilsService.saveFile(this.win, decBuf, null, attachment.fileName);\n } catch (e) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n\n a.downloading = false;\n }\n\n protected async init() {\n this.cipherDomain = await this.loadCipher();\n this.cipher = await this.cipherDomain.decrypt();\n\n this.hasUpdatedKey = await this.cryptoService.hasEncKey();\n const canAccessPremium = await this.userService.canAccessPremium();\n this.canAccessAttachments = canAccessPremium || this.cipher.organizationId != null;\n\n if (!this.canAccessAttachments) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('premiumRequiredDesc'), this.i18nService.t('premiumRequired'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'));\n if (confirmed) {\n this.platformUtilsService.launchUri('https://vault.bitwarden.com/#/?premium=purchase');\n }\n } else if (!this.hasUpdatedKey) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('updateKey'), this.i18nService.t('featureUnavailable'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'), 'warning');\n if (confirmed) {\n this.platformUtilsService.launchUri('https://help.bitwarden.com/article/update-encryption-key/');\n }\n }\n }\n\n protected async reuploadCipherAttachment(attachment: AttachmentView, admin: boolean) {\n const a = (attachment as any);\n if (attachment.key != null || a.downloading || this.reuploadPromises[attachment.id] != null) {\n return;\n }\n\n try {\n this.reuploadPromises[attachment.id] = Promise.resolve().then(async () => {\n // 1. Download\n a.downloading = true;\n const response = await fetch(new Request(attachment.url, { cache: 'no-store' }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n a.downloading = false;\n return;\n }\n\n try {\n // 2. Resave\n const buf = await response.arrayBuffer();\n const key = attachment.key != null ? attachment.key :\n await this.cryptoService.getOrgKey(this.cipher.organizationId);\n const decBuf = await this.cryptoService.decryptFromBytes(buf, key);\n this.cipherDomain = await this.cipherService.saveAttachmentRawWithServer(\n this.cipherDomain, attachment.fileName, decBuf, admin);\n this.cipher = await this.cipherDomain.decrypt();\n\n // 3. Delete old\n this.deletePromises[attachment.id] = this.deleteCipherAttachment(attachment.id);\n await this.deletePromises[attachment.id];\n const foundAttachment = this.cipher.attachments.filter(a2 => a2.id === attachment.id);\n if (foundAttachment.length > 0) {\n const i = this.cipher.attachments.indexOf(foundAttachment[0]);\n if (i > -1) {\n this.cipher.attachments.splice(i, 1);\n }\n }\n\n this.platformUtilsService.showToast('success', null, this.i18nService.t('attachmentSaved'));\n this.onReuploadedAttachment.emit();\n } catch (e) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n\n a.downloading = false;\n });\n await this.reuploadPromises[attachment.id];\n } catch { }\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected saveCipherAttachment(file: File) {\n return this.cipherService.saveAttachmentWithServer(this.cipherDomain, file);\n }\n\n protected deleteCipherAttachment(attachmentId: string) {\n return this.cipherService.deleteAttachmentWithServer(this.cipher.id, attachmentId);\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class GlobalDomainResponse extends BaseResponse {\n type: number;\n domains: string[];\n excluded: boolean;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.domains = this.getResponseProperty('Domains');\n this.excluded = this.getResponseProperty('Excluded');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class IdentityTokenResponse extends BaseResponse {\n accessToken: string;\n expiresIn: number;\n refreshToken: string;\n tokenType: string;\n\n resetMasterPassword: boolean;\n privateKey: string;\n key: string;\n twoFactorToken: string;\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n this.accessToken = response.access_token;\n this.expiresIn = response.expires_in;\n this.refreshToken = response.refresh_token;\n this.tokenType = response.token_type;\n\n this.resetMasterPassword = this.getResponseProperty('ResetMasterPassword');\n this.privateKey = this.getResponseProperty('PrivateKey');\n this.key = this.getResponseProperty('Key');\n this.twoFactorToken = this.getResponseProperty('TwoFactorToken');\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class IdentityTwoFactorResponse extends BaseResponse {\n twoFactorProviders: TwoFactorProviderType[];\n twoFactorProviders2 = new Map();\n\n constructor(response: any) {\n super(response);\n this.twoFactorProviders = this.getResponseProperty('TwoFactorProviders');\n const twoFactorProviders2 = this.getResponseProperty('TwoFactorProviders2');\n if (twoFactorProviders2 != null) {\n for (const prop in twoFactorProviders2) {\n if (twoFactorProviders2.hasOwnProperty(prop)) {\n this.twoFactorProviders2.set(parseInt(prop, null), twoFactorProviders2[prop]);\n }\n }\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class KeysResponse extends BaseResponse {\n privateKey: string;\n publicKey: string;\n\n constructor(response: any) {\n super(response);\n this.privateKey = this.getResponseProperty('PrivateKey');\n this.publicKey = this.getResponseProperty('PublicKey');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class ListResponse extends BaseResponse {\n data: T[];\n continuationToken: string;\n\n constructor(response: any, t: new (dataResponse: any) => T) {\n super(response);\n const data = this.getResponseProperty('Data');\n this.data = data == null ? [] : data.map((dr: any) => new t(dr));\n this.continuationToken = this.getResponseProperty('ContinuationToken');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class ProfileOrganizationResponse extends BaseResponse {\n id: string;\n name: string;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useBusinessPortal: boolean;\n useSso: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n key: string;\n hasPublicAndPrivateKeys: boolean;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.usePolicies = this.getResponseProperty('UsePolicies');\n this.useGroups = this.getResponseProperty('UseGroups');\n this.useDirectory = this.getResponseProperty('UseDirectory');\n this.useEvents = this.getResponseProperty('UseEvents');\n this.useTotp = this.getResponseProperty('UseTotp');\n this.use2fa = this.getResponseProperty('Use2fa');\n this.useApi = this.getResponseProperty('UseApi');\n this.useBusinessPortal = this.getResponseProperty('UseBusinessPortal');\n this.useSso = this.getResponseProperty('UseSso');\n this.useResetPassword = this.getResponseProperty('UseResetPassword');\n this.selfHost = this.getResponseProperty('SelfHost');\n this.usersGetPremium = this.getResponseProperty('UsersGetPremium');\n this.seats = this.getResponseProperty('Seats');\n this.maxCollections = this.getResponseProperty('MaxCollections');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.key = this.getResponseProperty('Key');\n this.hasPublicAndPrivateKeys = this.getResponseProperty('HasPublicAndPrivateKeys');\n this.status = this.getResponseProperty('Status');\n this.type = this.getResponseProperty('Type');\n this.enabled = this.getResponseProperty('Enabled');\n this.ssoBound = this.getResponseProperty('SsoBound');\n this.identifier = this.getResponseProperty('Identifier');\n this.permissions = new PermissionsApi(this.getResponseProperty('permissions'));\n this.resetPasswordEnrolled = this.getResponseProperty('ResetPasswordEnrolled');\n this.userId = this.getResponseProperty('UserId');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { CipherResponse } from './cipherResponse';\nimport { CollectionDetailsResponse } from './collectionResponse';\nimport { DomainsResponse } from './domainsResponse';\nimport { FolderResponse } from './folderResponse';\nimport { PolicyResponse } from './policyResponse';\nimport { ProfileResponse } from './profileResponse';\nimport { SendResponse } from './sendResponse';\n\nexport class SyncResponse extends BaseResponse {\n profile?: ProfileResponse;\n folders: FolderResponse[] = [];\n collections: CollectionDetailsResponse[] = [];\n ciphers: CipherResponse[] = [];\n domains?: DomainsResponse;\n policies?: PolicyResponse[] = [];\n sends: SendResponse[] = [];\n\n constructor(response: any) {\n super(response);\n\n const profile = this.getResponseProperty('Profile');\n if (profile != null) {\n this.profile = new ProfileResponse(profile);\n }\n\n const folders = this.getResponseProperty('Folders');\n if (folders != null) {\n this.folders = folders.map((f: any) => new FolderResponse(f));\n }\n\n const collections = this.getResponseProperty('Collections');\n if (collections != null) {\n this.collections = collections.map((c: any) => new CollectionDetailsResponse(c));\n }\n\n const ciphers = this.getResponseProperty('Ciphers');\n if (ciphers != null) {\n this.ciphers = ciphers.map((c: any) => new CipherResponse(c));\n }\n\n const domains = this.getResponseProperty('Domains');\n if (domains != null) {\n this.domains = new DomainsResponse(domains);\n }\n\n const policies = this.getResponseProperty('Policies');\n if (policies != null) {\n this.policies = policies.map((p: any) => new PolicyResponse(p));\n }\n\n const sends = this.getResponseProperty('Sends');\n if (sends != null) {\n this.sends = sends.map((s: any) => new SendResponse(s));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { PolicyType } from '../../enums/policyType';\n\nexport class PolicyResponse extends BaseResponse {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.type = this.getResponseProperty('Type');\n this.data = this.getResponseProperty('Data');\n this.enabled = this.getResponseProperty('Enabled');\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CipherData } from 'jslib-common/models/data/cipherData';\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherCollectionsRequest } from 'jslib-common/models/request/cipherCollectionsRequest';\n\nimport { CollectionsComponent as BaseCollectionsComponent } from '../../vault/collections.component';\n\n@Component({\n selector: 'app-org-vault-collections',\n templateUrl: '../../vault/collections.component.html',\n})\nexport class CollectionsComponent extends BaseCollectionsComponent {\n organization: Organization;\n\n constructor(collectionService: CollectionService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, cipherService: CipherService,\n private apiService: ApiService) {\n super(collectionService, platformUtilsService, i18nService, cipherService);\n this.allowSelectNone = true;\n }\n\n protected async loadCipher() {\n if (!this.organization.canManageAllCollections) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n return new Cipher(new CipherData(response));\n }\n\n protected loadCipherCollections() {\n if (!this.organization.canManageAllCollections) {\n return super.loadCipherCollections();\n }\n return this.collectionIds;\n }\n\n protected loadCollections() {\n if (!this.organization.canManageAllCollections) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected saveCollections() {\n if (this.organization.canManageAllCollections) {\n const request = new CipherCollectionsRequest(this.cipherDomain.collectionIds);\n return this.apiService.putCipherCollectionsAdmin(this.cipherId, request);\n } else {\n return super.saveCollections();\n }\n }\n}\n","export class CipherCollectionsRequest {\n collectionIds: string[];\n\n constructor(collectionIds: string[]) {\n this.collectionIds = collectionIds == null ? [] : collectionIds;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherBulkDeleteRequest } from 'jslib-common/models/request/cipherBulkDeleteRequest';\n\n@Component({\n selector: 'app-vault-bulk-delete',\n templateUrl: 'bulk-delete.component.html',\n})\nexport class BulkDeleteComponent {\n @Input() cipherIds: string[] = [];\n @Input() permanent: boolean = false;\n @Input() organization: Organization;\n @Output() onDeleted = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(private cipherService: CipherService, private toasterService: ToasterService,\n private i18nService: I18nService, private apiService: ApiService) { }\n\n async submit() {\n if (!this.organization || !this.organization.canManageAllCollections) {\n await this.deleteCiphers();\n } else {\n await this.deleteCiphersAdmin();\n }\n\n await this.formPromise;\n\n this.onDeleted.emit();\n this.toasterService.popAsync('success', null, this.i18nService.t(this.permanent ? 'permanentlyDeletedItems'\n : 'deletedItems'));\n }\n\n private async deleteCiphers() {\n if (this.permanent) {\n this.formPromise = await this.cipherService.deleteManyWithServer(this.cipherIds);\n } else {\n this.formPromise = await this.cipherService.softDeleteManyWithServer(this.cipherIds);\n }\n }\n\n private async deleteCiphersAdmin() {\n const deleteRequest = new CipherBulkDeleteRequest(this.cipherIds, this.organization.id);\n if (this.permanent) {\n this.formPromise = await this.apiService.deleteManyCiphersAdmin(deleteRequest);\n } else {\n this.formPromise = await this.apiService.putDeleteManyCiphersAdmin(deleteRequest);\n }\n }\n}\n","

{{(permanent ? 'permanentlyDeleteSelected' : 'deleteSelected') | i18n}}

{{(permanent ? 'permanentlyDeleteSelectedItemsDesc' : 'deleteSelectedItemsDesc') | i18n: cipherIds.length}}
","export class CipherBulkDeleteRequest {\n ids: string[];\n organizationId: string;\n\n constructor(ids: string[], organizationId?: string) {\n this.ids = ids == null ? [] : ids;\n this.organizationId = organizationId;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { FolderView } from 'jslib-common/models/view/folderView';\n\n@Component({\n selector: 'app-vault-bulk-move',\n templateUrl: 'bulk-move.component.html',\n})\nexport class BulkMoveComponent implements OnInit {\n @Input() cipherIds: string[] = [];\n @Output() onMoved = new EventEmitter();\n\n folderId: string = null;\n folders: FolderView[] = [];\n formPromise: Promise;\n\n constructor(private cipherService: CipherService, private toasterService: ToasterService,\n private i18nService: I18nService, private folderService: FolderService) { }\n\n async ngOnInit() {\n this.folders = await this.folderService.getAllDecrypted();\n this.folderId = this.folders[0].id;\n }\n\n async submit() {\n this.formPromise = this.cipherService.moveManyWithServer(this.cipherIds, this.folderId);\n await this.formPromise;\n this.onMoved.emit();\n this.toasterService.popAsync('success', null, this.i18nService.t('movedItems'));\n }\n}\n","

{{'moveSelected' | i18n}}

{{'moveSelectedItemsDesc' | i18n: cipherIds.length}}

","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Component({\n selector: 'app-vault-bulk-restore',\n templateUrl: 'bulk-restore.component.html',\n})\nexport class BulkRestoreComponent {\n @Input() cipherIds: string[] = [];\n @Output() onRestored = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(private cipherService: CipherService, private toasterService: ToasterService,\n private i18nService: I18nService) { }\n\n async submit() {\n this.formPromise = this.cipherService.restoreManyWithServer(this.cipherIds);\n await this.formPromise;\n this.onRestored.emit();\n this.toasterService.popAsync('success', null, this.i18nService.t('restoredItems'));\n }\n}\n","

{{'restoreSelected' | i18n}}

{{'restoreSelectedItemsDesc' | i18n: cipherIds.length}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CipherView } from 'jslib-common/models/view';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\n@Component({\n selector: 'app-vault-bulk-share',\n templateUrl: 'bulk-share.component.html',\n})\nexport class BulkShareComponent implements OnInit {\n @Input() ciphers: CipherView[] = [];\n @Input() organizationId: string;\n @Output() onShared = new EventEmitter();\n\n nonShareableCount = 0;\n collections: CollectionView[] = [];\n organizations: Organization[] = [];\n shareableCiphers: CipherView[] = [];\n formPromise: Promise;\n\n private writeableCollections: CollectionView[] = [];\n\n constructor(private cipherService: CipherService, private toasterService: ToasterService,\n private i18nService: I18nService, private collectionService: CollectionService,\n private userService: UserService) { }\n\n async ngOnInit() {\n this.shareableCiphers = this.ciphers.filter(c => !c.hasOldAttachments && c.organizationId == null);\n this.nonShareableCount = this.ciphers.length - this.shareableCiphers.length;\n const allCollections = await this.collectionService.getAllDecrypted();\n this.writeableCollections = allCollections.filter(c => !c.readOnly);\n this.organizations = await this.userService.getAllOrganizations();\n if (this.organizationId == null && this.organizations.length > 0) {\n this.organizationId = this.organizations[0].id;\n }\n this.filterCollections();\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n filterCollections() {\n this.selectAll(false);\n if (this.organizationId == null || this.writeableCollections.length === 0) {\n this.collections = [];\n } else {\n this.collections = this.writeableCollections.filter(c => c.organizationId === this.organizationId);\n }\n }\n\n async submit() {\n const checkedCollectionIds = this.collections.filter(c => (c as any).checked).map(c => c.id);\n try {\n this.formPromise = this.cipherService.shareManyWithServer(this.shareableCiphers, this.organizationId,\n checkedCollectionIds);\n await this.formPromise;\n this.onShared.emit();\n this.toasterService.popAsync('success', null, this.i18nService.t('sharedItems'));\n } catch { }\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n const collections = select ? this.collections : this.writeableCollections;\n collections.forEach(c => this.check(c, select));\n }\n\n get canSave() {\n if (this.shareableCiphers != null && this.shareableCiphers.length > 0 && this.collections != null) {\n for (let i = 0; i < this.collections.length; i++) {\n if ((this.collections[i] as any).checked) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","

{{'shareSelected' | i18n}}

{{'shareManyDesc' | i18n}}

{{'shareSelectedItemsCountDesc' | i18n: this.ciphers.length : shareableCiphers.length : nonShareableCount}}

{{'collections' | i18n}}

{{'noCollectionsInList' | i18n}}
{{c.name}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { SendAccess } from 'jslib-common/models/domain/sendAccess';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { SendAccessView } from 'jslib-common/models/view/sendAccessView';\n\nimport { SendType } from 'jslib-common/enums/sendType';\nimport { SendAccessRequest } from 'jslib-common/models/request/sendAccessRequest';\nimport { ErrorResponse } from 'jslib-common/models/response/errorResponse';\n\nimport { SendAccessResponse } from 'jslib-common/models/response/sendAccessResponse';\n\n@Component({\n selector: 'app-send-access',\n templateUrl: 'access.component.html',\n})\nexport class AccessComponent implements OnInit {\n send: SendAccessView;\n sendType = SendType;\n downloading = false;\n loading = true;\n passwordRequired = false;\n formPromise: Promise;\n password: string;\n showText = false;\n unavailable = false;\n error = false;\n hideEmail = false;\n\n private id: string;\n private key: string;\n private decKey: SymmetricCryptoKey;\n private accessRequest: SendAccessRequest;\n\n constructor(private i18nService: I18nService, private cryptoFunctionService: CryptoFunctionService,\n private apiService: ApiService, private platformUtilsService: PlatformUtilsService,\n private route: ActivatedRoute, private cryptoService: CryptoService) {\n }\n\n get sendText() {\n if (this.send == null || this.send.text == null) {\n return null;\n }\n return this.showText ? this.send.text.text : this.send.text.maskedText;\n }\n\n get expirationDate() {\n if (this.send == null || this.send.expirationDate == null) {\n return null;\n }\n return this.send.expirationDate;\n }\n\n get creatorIdentifier() {\n if (this.send == null || this.send.creatorIdentifier == null) {\n return null;\n }\n return this.send.creatorIdentifier;\n }\n\n ngOnInit() {\n this.route.params.subscribe(async params => {\n this.id = params.sendId;\n this.key = params.key;\n if (this.key == null || this.id == null) {\n return;\n }\n await this.load();\n });\n }\n\n async download() {\n if (this.send == null || this.decKey == null) {\n return;\n }\n\n if (this.downloading) {\n return;\n }\n\n\n const downloadData = await this.apiService.getSendFileDownloadData(this.send, this.accessRequest);\n\n if (Utils.isNullOrWhitespace(downloadData.url)) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('missingSendFile'));\n return;\n }\n\n this.downloading = true;\n const response = await fetch(new Request(downloadData.url, { cache: 'no-store' }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n this.downloading = false;\n return;\n }\n\n try {\n const buf = await response.arrayBuffer();\n const decBuf = await this.cryptoService.decryptFromBytes(buf, this.decKey);\n this.platformUtilsService.saveFile(window, decBuf, null, this.send.file.fileName);\n } catch (e) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n\n this.downloading = false;\n }\n\n copyText() {\n this.platformUtilsService.copyToClipboard(this.send.text.text);\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t('valueCopied', this.i18nService.t('sendTypeText')));\n }\n\n toggleText() {\n this.showText = !this.showText;\n }\n\n async load() {\n this.unavailable = false;\n this.error = false;\n this.hideEmail = false;\n const keyArray = Utils.fromUrlB64ToArray(this.key);\n this.accessRequest = new SendAccessRequest();\n if (this.password != null) {\n const passwordHash = await this.cryptoFunctionService.pbkdf2(this.password, keyArray, 'sha256', 100000);\n this.accessRequest.password = Utils.fromBufferToB64(passwordHash);\n }\n try {\n let sendResponse: SendAccessResponse = null;\n if (this.loading) {\n sendResponse = await this.apiService.postSendAccess(this.id, this.accessRequest);\n } else {\n this.formPromise = this.apiService.postSendAccess(this.id, this.accessRequest);\n sendResponse = await this.formPromise;\n }\n this.passwordRequired = false;\n const sendAccess = new SendAccess(sendResponse);\n this.decKey = await this.cryptoService.makeSendKey(keyArray);\n this.send = await sendAccess.decrypt(this.decKey);\n this.showText = this.send.text != null ? !this.send.text.hidden : true;\n } catch (e) {\n if (e instanceof ErrorResponse) {\n if (e.statusCode === 401) {\n this.passwordRequired = true;\n } else if (e.statusCode === 404) {\n this.unavailable = true;\n } else {\n this.error = true;\n }\n }\n }\n this.loading = false;\n this.hideEmail = this.creatorIdentifier == null && !this.passwordRequired && !this.loading && !this.unavailable;\n }\n}\n","

Bitwarden Send

{{'sendCreatorIdentifier' | i18n: creatorIdentifier }}

{{'viewSendHiddenEmailWarning' | i18n }} {{'learnMore' | i18n}}.
{{'loading' | i18n}}

{{'sendProtectedPassword' | i18n}}

{{'sendProtectedPasswordDontKnow' | i18n}}

{{'sendAccessUnavailable' | i18n}}
{{'unexpectedError' | i18n}}

{{send.name}}


{{'sendHiddenByDefault' | i18n}}

{{send.file.fileName}}

Expires: {{expirationDate | date: 'medium'}}

{{'sendAccessTaglineProductDesc' | i18n}}
{{'sendAccessTaglineLearnMore' | i18n}} Bitwarden Send.

","import {\n Component,\n ComponentFactoryResolver,\n NgZone,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { SendView } from 'jslib-common/models/view/sendView';\n\nimport { SendComponent as BaseSendComponent } from 'jslib-angular/components/send/send.component';\n\nimport { AddEditComponent } from './add-edit.component';\n\nimport { ModalComponent } from '../modal.component';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { SendService } from 'jslib-common/abstractions/send.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\n\nconst BroadcasterSubscriptionId = 'SendComponent';\n\n@Component({\n selector: 'app-send',\n templateUrl: 'send.component.html',\n})\nexport class SendComponent extends BaseSendComponent {\n @ViewChild('sendAddEdit', { read: ViewContainerRef, static: true }) sendAddEditModalRef: ViewContainerRef;\n\n modal: ModalComponent = null;\n\n constructor(sendService: SendService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, environmentService: EnvironmentService,\n ngZone: NgZone, searchService: SearchService, policyService: PolicyService, userService: UserService,\n private componentFactoryResolver: ComponentFactoryResolver, private broadcasterService: BroadcasterService) {\n super(sendService, i18nService, platformUtilsService, environmentService, ngZone, searchService,\n policyService, userService);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n await this.load();\n\n // Broadcaster subscription - load if sync completes in the background\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'syncCompleted':\n if (message.successfully) {\n await this.load();\n }\n break;\n }\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n addSend() {\n if (this.disableSend) {\n return;\n }\n\n const component = this.editSend(null);\n component.type = this.type;\n }\n\n editSend(send: SendView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.sendAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n AddEditComponent, this.sendAddEditModalRef);\n\n childComponent.sendId = send == null ? null : send.id;\n childComponent.onSavedSend.subscribe(async (s: SendView) => {\n this.modal.close();\n await this.load();\n });\n childComponent.onDeletedSend.subscribe(async (s: SendView) => {\n this.modal.close();\n await this.load();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n\n return childComponent;\n }\n}\n","
{{'sendDisabled' | i18n}}
{{'sendDisabledWarning' | i18n}}

{{'send' | i18n}} {{'loading' | i18n}}

{{s.name}} {{'disabled' | i18n}} {{'password' | i18n}} {{'maxAccessCountReached' | i18n}} {{'expired' | i18n}} {{'pendingDeletion' | i18n}}
{{s.deletionDate | date:'medium'}}
{{'loading' | i18n}}

{{'noSendsInList' | i18n}}

","import { DatePipe } from '@angular/common';\n\nimport { Component } from '@angular/core';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SendService } from 'jslib-common/abstractions/send.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { AddEditComponent as BaseAddEditComponent } from 'jslib-angular/components/send/add-edit.component';\n\n@Component({\n selector: 'app-send-add-edit',\n templateUrl: 'add-edit.component.html',\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n constructor(i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n environmentService: EnvironmentService, datePipe: DatePipe,\n sendService: SendService, userService: UserService,\n messagingService: MessagingService, policyService: PolicyService) {\n super(i18nService, platformUtilsService, environmentService, datePipe, sendService, userService,\n messagingService, policyService);\n }\n\n async copyLinkToClipboard(link: string): Promise {\n // Copy function on web depends on the modal being open or not. Since this event occurs during a transition\n // of the modal closing we need to add a small delay to make sure state of the DOM is consistent.\n return new Promise(resolve => {\n window.setTimeout(() => resolve(super.copyLinkToClipboard(link)), 500);\n });\n }\n}\n","

{{title}}

{{'sendDisabledWarning' | i18n}} {{'sendOptionsPolicyInEffect' | i18n}}
  • {{'sendDisableHideEmailInEffect' | i18n}}
{{'sendNameDesc' | i18n}}
{{'sendTextDesc' | i18n}}
{{'file' | i18n}} {{send.file.fileName}} ({{send.file.sizeName}})
{{'sendFileDesc' | i18n}} {{'maxFileSize' | i18n}}

{{'share' | i18n}}

{{'options' | i18n}}

{{'deletionDateDesc' | i18n}}
{{'clear' | i18n}}
{{'expirationDateDesc' | i18n}}
{{'maxAccessCountDesc' | i18n}}
{{'sendPasswordDesc' | i18n}}
{{'sendNotesDesc' | i18n}}
","import { SendType } from '../../enums/sendType';\nimport { Utils } from '../../misc/utils';\n\nimport { Send } from '../domain/send';\nimport { SymmetricCryptoKey } from '../domain/symmetricCryptoKey';\n\nimport { SendFileView } from './sendFileView';\nimport { SendTextView } from './sendTextView';\nimport { View } from './view';\n\nexport class SendView implements View {\n id: string = null;\n accessId: string = null;\n name: string = null;\n notes: string = null;\n key: ArrayBuffer;\n cryptoKey: SymmetricCryptoKey;\n type: SendType = null;\n text = new SendTextView();\n file = new SendFileView();\n maxAccessCount?: number = null;\n accessCount: number = 0;\n revisionDate: Date = null;\n deletionDate: Date = null;\n expirationDate: Date = null;\n password: string = null;\n disabled: boolean = false;\n hideEmail: boolean = false;\n\n constructor(s?: Send) {\n if (!s) {\n return;\n }\n\n this.id = s.id;\n this.accessId = s.accessId;\n this.type = s.type;\n this.maxAccessCount = s.maxAccessCount;\n this.accessCount = s.accessCount;\n this.revisionDate = s.revisionDate;\n this.deletionDate = s.deletionDate;\n this.expirationDate = s.expirationDate;\n this.disabled = s.disabled;\n this.password = s.password;\n this.hideEmail = s.hideEmail;\n }\n\n get urlB64Key(): string {\n return Utils.fromBufferToUrlB64(this.key);\n }\n\n get maxAccessCountReached(): boolean {\n if (this.maxAccessCount == null) {\n return false;\n }\n return this.accessCount >= this.maxAccessCount;\n }\n\n get expired(): boolean {\n if (this.expirationDate == null) {\n return false;\n }\n return this.expirationDate <= new Date();\n }\n\n get pendingDelete(): boolean {\n return this.deletionDate <= new Date();\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ModalComponent } from '../modal.component';\nimport { ApiKeyComponent } from './api-key.component';\nimport { DeauthorizeSessionsComponent } from './deauthorize-sessions.component';\nimport { DeleteAccountComponent } from './delete-account.component';\nimport { PurgeVaultComponent } from './purge-vault.component';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Component({\n selector: 'app-account',\n templateUrl: 'account.component.html',\n})\nexport class AccountComponent {\n @ViewChild('deauthorizeSessionsTemplate', { read: ViewContainerRef, static: true }) deauthModalRef: ViewContainerRef;\n @ViewChild('purgeVaultTemplate', { read: ViewContainerRef, static: true }) purgeModalRef: ViewContainerRef;\n @ViewChild('deleteAccountTemplate', { read: ViewContainerRef, static: true }) deleteModalRef: ViewContainerRef;\n @ViewChild('viewUserApiKeyTemplate', { read: ViewContainerRef, static: true }) viewUserApiKeyModalRef: ViewContainerRef;\n @ViewChild('rotateUserApiKeyTemplate', { read: ViewContainerRef, static: true }) rotateUserApiKeyModalRef: ViewContainerRef;\n\n private modal: ModalComponent = null;\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver, private apiService: ApiService,\n private userService: UserService) { }\n\n deauthorizeSessions() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.deauthModalRef.createComponent(factory).instance;\n this.modal.show(DeauthorizeSessionsComponent, this.deauthModalRef);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n purgeVault() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.purgeModalRef.createComponent(factory).instance;\n this.modal.show(PurgeVaultComponent, this.purgeModalRef);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n deleteAccount() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.deleteModalRef.createComponent(factory).instance;\n this.modal.show(DeleteAccountComponent, this.deleteModalRef);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n async viewUserApiKey() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.viewUserApiKeyModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(ApiKeyComponent, this.viewUserApiKeyModalRef);\n childComponent.keyType = 'user';\n childComponent.entityId = await this.userService.getUserId();\n childComponent.postKey = this.apiService.postUserApiKey.bind(this.apiService);\n childComponent.scope = 'api';\n childComponent.grantType = 'client_credentials';\n childComponent.apiKeyTitle = 'apiKey';\n childComponent.apiKeyWarning = 'userApiKeyWarning';\n childComponent.apiKeyDescription = 'userApiKeyDesc';\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n async rotateUserApiKey() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.rotateUserApiKeyModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(ApiKeyComponent, this.rotateUserApiKeyModalRef);\n childComponent.keyType = 'user';\n childComponent.isRotation = true;\n childComponent.entityId = await this.userService.getUserId();\n childComponent.postKey = this.apiService.postUserRotateApiKey.bind(this.apiService);\n childComponent.scope = 'api';\n childComponent.grantType = 'client_credentials';\n childComponent.apiKeyTitle = 'apiKey';\n childComponent.apiKeyWarning = 'userApiKeyWarning';\n childComponent.apiKeyDescription = 'apiKeyRotateDesc';\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n}\n","

{{'myAccount' | i18n}}

{{'changeEmail' | i18n}}

{{'changeMasterPassword' | i18n}}

{{'encKeySettings' | i18n}}

{{'apiKey' | i18n}}

{{'userApiKeyDesc' | i18n}}

{{'dangerZone' | i18n}}

{{'dangerZoneDesc' | i18n}}

","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-deauthorize-sessions',\n templateUrl: 'deauthorize-sessions.component.html',\n})\nexport class DeauthorizeSessionsComponent {\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private messagingService: MessagingService) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postSecurityStamp(request);\n await this.formPromise;\n this.toasterService.popAsync('success', this.i18nService.t('sessionsDeauthorized'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch { }\n }\n}\n","

{{'deauthorizeSessions' | i18n}}

{{'deauthorizeSessionsDesc' | i18n}}

{{'deauthorizeSessionsWarning' | i18n}}
","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-delete-account',\n templateUrl: 'delete-account.component.html',\n})\nexport class DeleteAccountComponent {\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private messagingService: MessagingService) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.deleteAccount(request);\n await this.formPromise;\n this.toasterService.popAsync('success', this.i18nService.t('accountDeleted'),\n this.i18nService.t('accountDeletedDesc'));\n this.messagingService.send('logout');\n } catch { }\n }\n}\n","

{{'deleteAccount' | i18n}}

{{'deleteAccountDesc' | i18n}}

{{'deleteAccountWarning' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { UpdateProfileRequest } from 'jslib-common/models/request/updateProfileRequest';\n\nimport { ProfileResponse } from 'jslib-common/models/response/profileResponse';\n\n@Component({\n selector: 'app-profile',\n templateUrl: 'profile.component.html',\n})\nexport class ProfileComponent implements OnInit {\n loading = true;\n profile: ProfileResponse;\n fingerprint: string;\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private userService: UserService,\n private cryptoService: CryptoService) { }\n\n async ngOnInit() {\n this.profile = await this.apiService.getProfile();\n this.loading = false;\n const fingerprint = await this.cryptoService.getFingerprint(await this.userService.getUserId());\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join('-');\n }\n }\n\n async submit() {\n try {\n const request = new UpdateProfileRequest(this.profile.name, this.profile.masterPasswordHint);\n this.formPromise = this.apiService.putProfile(request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('accountUpdated'));\n } catch { }\n }\n}\n","
{{'loading' | i18n}}

{{'yourAccountsFingerprint' | i18n}}:
{{fingerprint}}

","import {\n Component,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EmailRequest } from 'jslib-common/models/request/emailRequest';\nimport { EmailTokenRequest } from 'jslib-common/models/request/emailTokenRequest';\n\n@Component({\n selector: 'app-change-email',\n templateUrl: 'change-email.component.html',\n})\nexport class ChangeEmailComponent {\n masterPassword: string;\n newEmail: string;\n token: string;\n tokenSent = false;\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private messagingService: MessagingService, private userService: UserService) { }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.toasterService.popAsync('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n this.newEmail = this.newEmail.trim().toLowerCase();\n if (!this.tokenSent) {\n const request = new EmailTokenRequest();\n request.newEmail = this.newEmail;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postEmailToken(request);\n await this.formPromise;\n this.tokenSent = true;\n } catch { }\n } else {\n const request = new EmailRequest();\n request.token = this.token;\n request.newEmail = this.newEmail;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const kdf = await this.userService.getKdf();\n const kdfIterations = await this.userService.getKdfIterations();\n const newKey = await this.cryptoService.makeKey(this.masterPassword, this.newEmail, kdf, kdfIterations);\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, newKey);\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\n try {\n this.formPromise = this.apiService.postEmail(request);\n await this.formPromise;\n this.reset();\n this.toasterService.popAsync('success', this.i18nService.t('emailChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch { }\n }\n }\n\n reset() {\n this.token = this.newEmail = this.masterPassword = null;\n this.tokenSent = false;\n }\n}\n","

{{'changeEmailDesc' | i18n : newEmail}}

{{'loggedOutWarning' | i18n}}
","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class EmailTokenRequest extends PasswordVerificationRequest {\n newEmail: string;\n masterPasswordHash: string;\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport {\n ChangePasswordComponent as BaseChangePasswordComponent,\n} from 'jslib-angular/components/change-password.component';\n\nimport { EmergencyAccessStatusType } from 'jslib-common/enums/emergencyAccessStatusType';\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { CipherWithIdRequest } from 'jslib-common/models/request/cipherWithIdRequest';\nimport { EmergencyAccessUpdateRequest } from 'jslib-common/models/request/emergencyAccessUpdateRequest';\nimport { FolderWithIdRequest } from 'jslib-common/models/request/folderWithIdRequest';\nimport { OrganizationUserResetPasswordEnrollmentRequest } from 'jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest';\nimport { PasswordRequest } from 'jslib-common/models/request/passwordRequest';\nimport { UpdateKeyRequest } from 'jslib-common/models/request/updateKeyRequest';\n\n@Component({\n selector: 'app-change-password',\n templateUrl: 'change-password.component.html',\n})\nexport class ChangePasswordComponent extends BaseChangePasswordComponent {\n rotateEncKey = false;\n currentMasterPassword: string;\n\n constructor(i18nService: I18nService,\n cryptoService: CryptoService, messagingService: MessagingService,\n userService: UserService, passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService,\n private folderService: FolderService, private cipherService: CipherService,\n private syncService: SyncService, private apiService: ApiService) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService);\n }\n\n async rotateEncKeyClicked() {\n if (this.rotateEncKey) {\n const ciphers = await this.cipherService.getAllDecrypted();\n let hasOldAttachments = false;\n if (ciphers != null) {\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId == null && ciphers[i].hasOldAttachments) {\n hasOldAttachments = true;\n break;\n }\n }\n }\n\n if (hasOldAttachments) {\n const learnMore = await this.platformUtilsService.showDialog(\n this.i18nService.t('oldAttachmentsNeedFixDesc'), null,\n this.i18nService.t('learnMore'), this.i18nService.t('close'), 'warning');\n if (learnMore) {\n this.platformUtilsService.launchUri(\n 'https://help.bitwarden.com/article/attachments/#fixing-old-attachments');\n }\n this.rotateEncKey = false;\n return;\n }\n\n const result = await this.platformUtilsService.showDialog(\n this.i18nService.t('updateEncryptionKeyWarning') + ' ' +\n this.i18nService.t('updateEncryptionKeyExportWarning') + ' ' +\n this.i18nService.t('rotateEncKeyConfirmation'), this.i18nService.t('rotateEncKeyTitle'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!result) {\n this.rotateEncKey = false;\n }\n }\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n await super.submit();\n }\n\n async setupSubmitActions() {\n if (this.currentMasterPassword == null || this.currentMasterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return false;\n }\n\n if (this.rotateEncKey) {\n await this.syncService.fullSync(true);\n }\n\n return super.setupSubmitActions();\n }\n\n async performSubmitActions(newMasterPasswordHash: string, newKey: SymmetricCryptoKey,\n newEncKey: [SymmetricCryptoKey, EncString]) {\n const request = new PasswordRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.currentMasterPassword, null);\n request.newMasterPasswordHash = newMasterPasswordHash;\n request.key = newEncKey[1].encryptedString;\n\n try {\n if (this.rotateEncKey) {\n this.formPromise = this.apiService.postPassword(request).then(() => {\n return this.updateKey(newKey, request.newMasterPasswordHash);\n });\n } else {\n this.formPromise = this.apiService.postPassword(request);\n }\n\n await this.formPromise;\n\n this.platformUtilsService.showToast('success', this.i18nService.t('masterPasswordChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n }\n\n private async updateKey(key: SymmetricCryptoKey, masterPasswordHash: string) {\n const encKey = await this.cryptoService.makeEncKey(key);\n const privateKey = await this.cryptoService.getPrivateKey();\n let encPrivateKey: EncString = null;\n if (privateKey != null) {\n encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]);\n }\n const request = new UpdateKeyRequest();\n request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHash = masterPasswordHash;\n\n const folders = await this.folderService.getAllDecrypted();\n for (let i = 0; i < folders.length; i++) {\n if (folders[i].id == null) {\n continue;\n }\n const folder = await this.folderService.encrypt(folders[i], encKey[0]);\n request.folders.push(new FolderWithIdRequest(folder));\n }\n\n const ciphers = await this.cipherService.getAllDecrypted();\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId != null) {\n continue;\n }\n\n const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]);\n request.ciphers.push(new CipherWithIdRequest(cipher));\n }\n\n await this.apiService.postAccountKey(request);\n\n await this.updateEmergencyAccesses(encKey[0]);\n\n await this.updateAllResetPasswordKeys(encKey[0]);\n }\n\n private async updateEmergencyAccesses(encKey: SymmetricCryptoKey) {\n const emergencyAccess = await this.apiService.getEmergencyAccessTrusted();\n const allowedStatuses = [\n EmergencyAccessStatusType.Confirmed,\n EmergencyAccessStatusType.RecoveryInitiated,\n EmergencyAccessStatusType.RecoveryApproved,\n ];\n\n const filteredAccesses = emergencyAccess.data.filter(d => allowedStatuses.includes(d.status));\n\n for (const details of filteredAccesses) {\n const publicKeyResponse = await this.apiService.getUserPublicKey(details.granteeId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n const updateRequest = new EmergencyAccessUpdateRequest();\n updateRequest.type = details.type;\n updateRequest.waitTimeDays = details.waitTimeDays;\n updateRequest.keyEncrypted = encryptedKey.encryptedString;\n\n await this.apiService.putEmergencyAccess(details.id, updateRequest);\n }\n }\n\n private async updateAllResetPasswordKeys(encKey: SymmetricCryptoKey) {\n const orgs = await this.userService.getAllOrganizations();\n\n for (const org of orgs) {\n // If not already enrolled, skip\n if (!org.resetPasswordEnrolled) {\n continue;\n }\n\n // Retrieve public key\n const response = await this.apiService.getOrganizationKeys(org.id);\n const publicKey = Utils.fromB64ToArray(response?.publicKey);\n\n // Re-enroll - encrpyt user's encKey.key with organization public key\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n // Create/Execute request\n const request = new OrganizationUserResetPasswordEnrollmentRequest();\n request.resetPasswordKey = encryptedKey.encryptedString;\n\n await this.apiService.putOrganizationUserResetPasswordEnrollment(org.id, org.userId, request);\n }\n }\n}\n","{{'loggedOutWarning' | i18n}} {{'masterPasswordPolicyInEffect' | i18n}}
  • 0\"> {{'policyInEffectMinComplexity' | i18n : getPasswordScoreAlertDisplay()}}
  • 0\"> {{'policyInEffectMinLength' | i18n : enforcedPolicyOptions?.minLength.toString()}}
  • {{'policyInEffectUppercase' | i18n}}
  • {{'policyInEffectLowercase' | i18n}}
  • {{'policyInEffectNumbers' | i18n}}
  • {{'policyInEffectSpecial' | i18n : '!@#$%^&*'}}
","export enum EmergencyAccessStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n RecoveryInitiated = 3,\n RecoveryApproved = 4,\n}\n","import { EmergencyAccessType } from '../../enums/emergencyAccessType';\n\nexport class EmergencyAccessUpdateRequest {\n type: EmergencyAccessType;\n waitTimeDays: number;\n keyEncrypted?: string;\n}\n","import { FolderRequest } from './folderRequest';\n\nimport { Folder } from '../domain/folder';\n\nexport class FolderWithIdRequest extends FolderRequest {\n id: string;\n\n constructor(folder: Folder) {\n super(folder);\n this.id = folder.id;\n }\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class PasswordRequest extends PasswordVerificationRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","import { CipherWithIdRequest } from './cipherWithIdRequest';\nimport { FolderWithIdRequest } from './folderWithIdRequest';\n\nexport class UpdateKeyRequest {\n ciphers: CipherWithIdRequest[] = [];\n folders: FolderWithIdRequest[] = [];\n masterPasswordHash: string;\n privateKey: string;\n key: string;\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { KdfRequest } from 'jslib-common/models/request/kdfRequest';\n\nimport { KdfType } from 'jslib-common/enums/kdfType';\n\n@Component({\n selector: 'app-change-kdf',\n templateUrl: 'change-kdf.component.html',\n})\nexport class ChangeKdfComponent implements OnInit {\n masterPassword: string;\n kdfIterations: number;\n kdf = KdfType.PBKDF2_SHA256;\n kdfOptions: any[] = [];\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private messagingService: MessagingService, private userService: UserService) {\n this.kdfOptions = [\n { name: 'PBKDF2 SHA-256', value: KdfType.PBKDF2_SHA256 },\n ];\n }\n\n async ngOnInit() {\n this.kdf = await this.userService.getKdf();\n this.kdfIterations = await this.userService.getKdfIterations();\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.toasterService.popAsync('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n const request = new KdfRequest();\n request.kdf = this.kdf;\n request.kdfIterations = this.kdfIterations;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const email = await this.userService.getEmail();\n const newKey = await this.cryptoService.makeKey(this.masterPassword, email, this.kdf, this.kdfIterations);\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, newKey);\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\n try {\n this.formPromise = this.apiService.postAccountKdf(request);\n await this.formPromise;\n this.toasterService.popAsync('success', this.i18nService.t('encKeySettingsChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch { }\n }\n}\n","{{'loggedOutWarning' | i18n}}

{{'kdfIterationsDesc' | i18n : (100000 | number)}}

{{'warning' | i18n}}: {{'kdfIterationsWarning' | i18n : (50000 | number)}}
","import {\n Component,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { PlanType } from 'jslib-common/enums/planType';\nimport { ProductType } from 'jslib-common/enums/productType';\n\nimport { OrganizationPlansComponent } from './organization-plans.component';\n\n@Component({\n selector: 'app-create-organization',\n templateUrl: 'create-organization.component.html',\n})\nexport class CreateOrganizationComponent implements OnInit {\n @ViewChild(OrganizationPlansComponent, { static: true }) orgPlansComponent: OrganizationPlansComponent;\n\n constructor(private route: ActivatedRoute) { }\n\n ngOnInit() {\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.plan === 'families') {\n this.orgPlansComponent.plan = PlanType.FamiliesAnnually;\n this.orgPlansComponent.product = ProductType.Families;\n } else if (qParams.plan === 'teams') {\n this.orgPlansComponent.plan = PlanType.TeamsAnnually;\n this.orgPlansComponent.product = ProductType.Teams;\n } else if (qParams.plan === 'enterprise') {\n this.orgPlansComponent.plan = PlanType.EnterpriseAnnually;\n this.orgPlansComponent.product = ProductType.Enterprise;\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n}\n","

{{'newOrganization' | i18n}}

{{'newOrganizationDesc' | i18n}}

","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { UpdateDomainsRequest } from 'jslib-common/models/request/updateDomainsRequest';\n\n@Component({\n selector: 'app-domain-rules',\n templateUrl: 'domain-rules.component.html',\n})\nexport class DomainRulesComponent implements OnInit {\n loading = true;\n custom: string[] = [];\n global: any[] = [];\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) { }\n\n async ngOnInit() {\n const response = await this.apiService.getSettingsDomains();\n this.loading = false;\n if (response.equivalentDomains != null) {\n this.custom = response.equivalentDomains.map(d => d.join(', '));\n }\n if (response.globalEquivalentDomains != null) {\n this.global = response.globalEquivalentDomains.map(d => {\n return {\n domains: d.domains.join(', '),\n excluded: d.excluded,\n key: d.type,\n };\n });\n }\n }\n\n toggleExcluded(globalDomain: any) {\n globalDomain.excluded = !globalDomain.excluded;\n }\n\n customize(globalDomain: any) {\n globalDomain.excluded = true;\n this.custom.push(globalDomain.domains);\n }\n\n remove(index: number) {\n this.custom.splice(index, 1);\n }\n\n add() {\n this.custom.push('');\n }\n\n async submit() {\n const request = new UpdateDomainsRequest();\n request.excludedGlobalEquivalentDomains = this.global.filter(d => d.excluded)\n .map(d => d.key);\n if (request.excludedGlobalEquivalentDomains.length === 0) {\n request.excludedGlobalEquivalentDomains = null;\n }\n request.equivalentDomains = this.custom.filter(d => d != null && d.trim() !== '')\n .map(d => d.split(',').map(d2 => d2.trim()));\n if (request.equivalentDomains.length === 0) {\n request.equivalentDomains = null;\n }\n\n try {\n this.formPromise = this.apiService.putSettingsDomains(request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('domainsUpdated'));\n } catch { }\n }\n\n indexTrackBy(index: number, obj: any): any {\n return index;\n }\n}\n","

{{'domainRules' | i18n}}

{{'domainRulesDesc' | i18n}}

{{'customEqDomains' | i18n}}

{{'loading' | i18n}}

{{'newCustomDomainDesc' | i18n}}

{{'globalEqDomains' | i18n}}

{{'loading' | i18n}}

0\">
{{d.domains}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-options',\n templateUrl: 'options.component.html',\n})\nexport class OptionsComponent implements OnInit {\n vaultTimeout: number = null;\n vaultTimeoutAction: string = 'lock';\n disableIcons: boolean;\n enableGravatars: boolean;\n enableFullWidth: boolean;\n locale: string;\n vaultTimeouts: any[];\n localeOptions: any[];\n\n private startingLocale: string;\n\n constructor(private storageService: StorageService, private stateService: StateService,\n private i18nService: I18nService, private toasterService: ToasterService,\n private vaultTimeoutService: VaultTimeoutService, private platformUtilsService: PlatformUtilsService,\n private messagingService: MessagingService) {\n this.vaultTimeouts = [\n { name: i18nService.t('oneMinute'), value: 1 },\n { name: i18nService.t('fiveMinutes'), value: 5 },\n { name: i18nService.t('fifteenMinutes'), value: 15 },\n { name: i18nService.t('thirtyMinutes'), value: 30 },\n { name: i18nService.t('oneHour'), value: 60 },\n { name: i18nService.t('fourHours'), value: 240 },\n { name: i18nService.t('onRefresh'), value: -1 },\n ];\n if (this.platformUtilsService.isDev()) {\n this.vaultTimeouts.push({ name: i18nService.t('never'), value: null });\n }\n\n const localeOptions: any[] = [];\n i18nService.supportedTranslationLocales.forEach(locale => {\n let name = locale;\n if (i18nService.localeNames.has(locale)) {\n name += (' - ' + i18nService.localeNames.get(locale));\n }\n localeOptions.push({ name: name, value: locale });\n });\n localeOptions.sort(Utils.getSortFunction(i18nService, 'name'));\n localeOptions.splice(0, 0, { name: i18nService.t('default'), value: null });\n this.localeOptions = localeOptions;\n }\n\n async ngOnInit() {\n this.vaultTimeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n this.vaultTimeoutAction = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n this.disableIcons = await this.storageService.get(ConstantsService.disableFaviconKey);\n this.enableGravatars = await this.storageService.get('enableGravatars');\n this.enableFullWidth = await this.storageService.get('enableFullWidth');\n this.locale = this.startingLocale = await this.storageService.get(ConstantsService.localeKey);\n }\n\n async submit() {\n await this.vaultTimeoutService.setVaultTimeoutOptions(this.vaultTimeout != null ? this.vaultTimeout : null,\n this.vaultTimeoutAction);\n await this.storageService.save(ConstantsService.disableFaviconKey, this.disableIcons);\n await this.stateService.save(ConstantsService.disableFaviconKey, this.disableIcons);\n await this.storageService.save('enableGravatars', this.enableGravatars);\n await this.stateService.save('enableGravatars', this.enableGravatars);\n await this.storageService.save('enableFullWidth', this.enableFullWidth);\n this.messagingService.send('setFullWidth');\n await this.storageService.save(ConstantsService.localeKey, this.locale);\n if (this.locale !== this.startingLocale) {\n window.location.reload();\n } else {\n this.toasterService.popAsync('success', null, this.i18nService.t('optionsUpdated'));\n }\n }\n\n async vaultTimeoutActionChanged(newValue: string) {\n if (newValue === 'logOut') {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('vaultTimeoutLogOutConfirmation'),\n this.i18nService.t('vaultTimeoutLogOutConfirmationTitle'),\n this.i18nService.t('yes'), this.i18nService.t('cancel'), 'warning');\n if (!confirmed) {\n this.vaultTimeoutAction = 'lock';\n return;\n }\n }\n this.vaultTimeoutAction = newValue;\n }\n}\n","

{{'options' | i18n}}

{{'optionsDesc' | i18n}}

{{'vaultTimeoutDesc' | i18n}}
{{'languageDesc' | i18n}}
{{'disableIconsDesc' | i18n}}
{{'enableGravatarsDesc' | i18n}}
{{'enableFullWidthDesc' | i18n}}
","import {\n AfterContentInit,\n Component,\n Input,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { SsoComponent } from 'jslib-angular/components/sso.component';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\n@Component({\n selector: 'app-link-sso',\n templateUrl: 'link-sso.component.html',\n})\nexport class LinkSsoComponent extends SsoComponent implements AfterContentInit {\n @Input() organization: Organization;\n returnUri: string = '/settings/organizations';\n\n constructor(platformUtilsService: PlatformUtilsService, i18nService: I18nService,\n apiService: ApiService, authService: AuthService,\n router: Router, route: ActivatedRoute,\n cryptoFunctionService: CryptoFunctionService, passwordGenerationService: PasswordGenerationService,\n storageService: StorageService, stateService: StateService) {\n super(authService, router,\n i18nService, route,\n storageService, stateService,\n platformUtilsService, apiService,\n cryptoFunctionService, passwordGenerationService);\n\n this.returnUri = '/settings/organizations';\n this.redirectUri = window.location.origin + '/sso-connector.html';\n this.clientId = 'web';\n }\n\n async ngAfterContentInit() {\n this.identifier = this.organization.identifier;\n }\n}\n"," {{'linkSso' | i18n}} ","import {\n Component,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { PaymentComponent } from './payment.component';\nimport { TaxInfoComponent } from './tax-info.component';\n\n@Component({\n selector: 'app-premium',\n templateUrl: 'premium.component.html',\n})\nexport class PremiumComponent implements OnInit {\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent) taxInfoComponent: TaxInfoComponent;\n\n canAccessPremium = false;\n selfHosted = false;\n premiumPrice = 10;\n storageGbPrice = 4;\n additionalStorage = 0;\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, platformUtilsService: PlatformUtilsService,\n private tokenService: TokenService, private router: Router,\n private messagingService: MessagingService, private syncService: SyncService,\n private userService: UserService) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n const premium = await this.tokenService.getPremium();\n if (premium) {\n this.router.navigate(['/settings/subscription']);\n return;\n }\n }\n\n async submit() {\n let files: FileList = null;\n if (this.selfHosted) {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n files = fileEl.files;\n if (files == null || files.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n }\n\n try {\n if (this.selfHosted) {\n if (!this.tokenService.getEmailVerified()) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('verifyEmailFirst'));\n return;\n }\n\n const fd = new FormData();\n fd.append('license', files[0]);\n this.formPromise = this.apiService.postAccountLicense(fd).then(() => {\n return this.finalizePremium();\n });\n } else {\n this.formPromise = this.paymentComponent.createPaymentToken().then(result => {\n const fd = new FormData();\n fd.append('paymentMethodType', result[1].toString());\n if (result[0] != null) {\n fd.append('paymentToken', result[0]);\n }\n fd.append('additionalStorageGb', (this.additionalStorage || 0).toString());\n fd.append('country', this.taxInfoComponent.taxInfo.country);\n fd.append('postalCode', this.taxInfoComponent.taxInfo.postalCode);\n return this.apiService.postPremium(fd);\n }).then(paymentResponse => {\n if (!paymentResponse.success && paymentResponse.paymentIntentClientSecret != null) {\n return this.paymentComponent.handleStripeCardPayment(paymentResponse.paymentIntentClientSecret,\n () => this.finalizePremium());\n } else {\n return this.finalizePremium();\n }\n });\n }\n await this.formPromise;\n } catch { }\n }\n\n async finalizePremium() {\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n this.toasterService.popAsync('success', null, this.i18nService.t('premiumUpdated'));\n this.messagingService.send('purchasedPremium');\n this.router.navigate(['/settings/subscription']);\n }\n\n get additionalStorageTotal(): number {\n return this.storageGbPrice * Math.abs(this.additionalStorage || 0);\n }\n\n get subtotal(): number {\n return this.premiumPrice + this.additionalStorageTotal;\n }\n\n get taxCharges(): number {\n return this.taxInfoComponent != null && this.taxInfoComponent.taxRate != null ?\n (this.taxInfoComponent.taxRate / 100) * this.subtotal :\n 0;\n }\n\n get total(): number {\n return (this.subtotal + this.taxCharges) || 0;\n }\n}\n","

{{'goPremium' | i18n}}

{{'alreadyPremiumFromOrg' | i18n}}

{{'premiumUpgradeUnlockFeatures' | i18n}}

  • {{'premiumSignUpStorage' | i18n}}
  • {{'premiumSignUpTwoStep' | i18n}}
  • {{'premiumSignUpEmergency' |i18n}}
  • {{'premiumSignUpReports' | i18n}}
  • {{'premiumSignUpTotp' | i18n}}
  • {{'premiumSignUpSupport' | i18n}}
  • {{'premiumSignUpFuture' | i18n}}

{{'premiumPrice' | i18n : (premiumPrice | currency:'$')}}

{{'purchasePremium' | i18n}}

{{'uploadLicenseFilePremium' | i18n}}

{{'licenseFileDesc' | i18n : 'bitwarden_premium_license.json'}}

{{'addons' | i18n}}

{{'additionalStorageIntervalDesc' | i18n : '1 GB' : (storageGbPrice | currency:'$') : ('year' | i18n)}}

{{'summary' | i18n}}

{{'premiumMembership' | i18n}}: {{premiumPrice | currency:'$'}}
{{'additionalStorageGb' | i18n}}: {{additionalStorage || 0}} GB × {{storageGbPrice | currency:'$'}} = {{additionalStorageTotal | currency:'$'}}

{{'paymentInformation' | i18n}}

{{ 'planPrice' | i18n }}: {{ subtotal | currency: 'USD $' }}
{{ 'estimatedTax' | i18n }}: {{ taxCharges | currency: 'USD $' }}

{{'total' | i18n}}: {{total | currency:'USD $'}}/{{'year' | i18n}}

{{'paymentChargedAnnually' | i18n}}
","import {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\n\nconst BroadcasterSubscriptionId = 'SettingsComponent';\n\n@Component({\n selector: 'app-settings',\n templateUrl: 'settings.component.html',\n})\nexport class SettingsComponent implements OnInit, OnDestroy {\n premium: boolean;\n selfHosted: boolean;\n\n constructor(private tokenService: TokenService, private broadcasterService: BroadcasterService,\n private ngZone: NgZone, private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'purchasedPremium':\n await this.load();\n break;\n default:\n }\n });\n });\n\n this.selfHosted = await this.platformUtilsService.isSelfHost();\n await this.load();\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async load() {\n this.premium = await this.tokenService.getPremium();\n }\n}\n"," ","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { SubscriptionResponse } from 'jslib-common/models/response/subscriptionResponse';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\n\n@Component({\n selector: 'app-user-subscription',\n templateUrl: 'user-subscription.component.html',\n})\nexport class UserSubscriptionComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n adjustStorageAdd = true;\n showAdjustStorage = false;\n showUpdateLicense = false;\n sub: SubscriptionResponse;\n selfHosted = false;\n\n cancelPromise: Promise;\n reinstatePromise: Promise;\n\n constructor(private tokenService: TokenService, private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService, private i18nService: I18nService,\n private toasterService: ToasterService, private router: Router) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n\n if (this.tokenService.getPremium()) {\n this.loading = true;\n this.sub = await this.apiService.getUserSubscription();\n } else {\n this.router.navigate(['/settings/premium']);\n return;\n }\n\n this.loading = false;\n }\n\n async reinstate() {\n if (this.loading) {\n return;\n }\n\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(this.i18nService.t('manageSubscriptionFromStore'),\n this.i18nService.t('cancelSubscription'), null, null, 'warning');\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('reinstateConfirmation'),\n this.i18nService.t('reinstateSubscription'), this.i18nService.t('yes'), this.i18nService.t('cancel'));\n if (!confirmed) {\n return;\n }\n\n try {\n this.reinstatePromise = this.apiService.postReinstatePremium();\n await this.reinstatePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('reinstated'));\n this.load();\n } catch { }\n }\n\n async cancel() {\n if (this.loading) {\n return;\n }\n\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(this.i18nService.t('manageSubscriptionFromStore'),\n this.i18nService.t('cancelSubscription'), null, null, 'warning');\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('cancelConfirmation'),\n this.i18nService.t('cancelSubscription'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n this.cancelPromise = this.apiService.postCancelPremium();\n await this.cancelPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('canceledSubscription'));\n this.load();\n } catch { }\n }\n\n downloadLicense() {\n if (this.loading) {\n return;\n }\n\n const licenseString = JSON.stringify(this.sub.license, null, 2);\n this.platformUtilsService.saveFile(window, licenseString, null, 'bitwarden_premium_license.json');\n }\n\n updateLicense() {\n if (this.loading) {\n return;\n }\n this.showUpdateLicense = true;\n }\n\n closeUpdateLicense(load: boolean) {\n this.showUpdateLicense = false;\n if (load) {\n this.load();\n }\n }\n\n adjustStorage(add: boolean) {\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(this.i18nService.t('cannotPerformInAppPurchase'),\n this.i18nService.t(add ? 'addStorage' : 'removeStorage'), null, null, 'warning');\n return;\n }\n this.adjustStorageAdd = add;\n this.showAdjustStorage = true;\n }\n\n closeStorage(load: boolean) {\n this.showAdjustStorage = false;\n if (load) {\n this.load();\n }\n }\n\n get subscriptionMarkedForCancel() {\n return this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate;\n }\n\n get subscription() {\n return this.sub != null ? this.sub.subscription : null;\n }\n\n get nextInvoice() {\n return this.sub != null ? this.sub.upcomingInvoice : null;\n }\n\n get storagePercentage() {\n return this.sub != null && this.sub.maxStorageGb ?\n +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2) : 0;\n }\n\n get storageProgressWidth() {\n return this.storagePercentage < 5 ? 5 : 0;\n }\n\n get usingInAppPurchase() {\n return this.sub != null ? this.sub.usingInAppPurchase : false;\n }\n}\n","

{{'premiumMembership' | i18n}} {{'loading' | i18n}}

{{'loading' | i18n}} {{'subscriptionCanceled' | i18n}}

{{'subscriptionPendingCanceled' | i18n}}

{{'expiration' | i18n}}
{{sub.expiration | date:'mediumDate'}}
{{'neverExpires' | i18n}}
{{'status' | i18n}}
{{(subscription && subscription.status) || '-'}} {{'pendingCancellation' | i18n}}
{{'nextCharge' | i18n}}
{{nextInvoice ? ((nextInvoice.date | date: 'mediumDate') + ', ' + (nextInvoice.amount | currency:'$')) : '-'}}
{{'details' | i18n}}
{{i.name}} {{i.quantity > 1 ? '×' + i.quantity : ''}} @ {{i.amount | currency:'$'}} {{(i.quantity * i.amount) | currency:'$'}} /{{i.interval | i18n}}
{{'manageSubscription' | i18n}}

{{'updateLicense' | i18n}}

{{'storage' | i18n}}

{{'subscriptionStorage' | i18n : sub.maxStorageGb || 0 : sub.storageName || '0 MB'}}

{{(storagePercentage / 100) | percent}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { BreachAccountResponse } from 'jslib-common/models/response/breachAccountResponse';\n\n@Component({\n selector: 'app-breach-report',\n templateUrl: 'breach-report.component.html',\n})\nexport class BreachReportComponent implements OnInit {\n error = false;\n username: string;\n checkedUsername: string;\n breachedAccounts: BreachAccountResponse[] = [];\n formPromise: Promise;\n\n constructor(private auditService: AuditService, private userService: UserService) { }\n\n async ngOnInit() {\n this.username = await this.userService.getEmail();\n }\n\n async submit() {\n this.error = false;\n this.username = this.username.toLowerCase();\n try {\n this.formPromise = this.auditService.breachedAccounts(this.username);\n this.breachedAccounts = await this.formPromise;\n } catch {\n this.error = true;\n }\n this.checkedUsername = this.username;\n }\n}\n","

{{'dataBreachReport' | i18n}}

{{'breachDesc' | i18n}}

{{'breachCheckUsernameEmail' | i18n}}

{{'reportError' | i18n}}...

{{'breachUsernameNotFound' | i18n : checkedUsername}} {{'breachUsernameFound' | i18n : checkedUsername : breachedAccounts.length}}
  • \"\"

    {{a.title}}

    {{'compromisedData' | i18n}}:

    • {{d}}
    {{'website' | i18n}}
    {{a.domain}}
    {{'affectedUsers' | i18n}}
    {{a.pwnCount | number}}
    {{'breachOccurred' | i18n}}
    {{a.breachDate | date: 'mediumDate'}}
    {{'breachReported' | i18n}}
    {{a.addedDate | date: 'mediumDate'}}
","import {\n Component,\n ComponentFactoryResolver,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport {\n PasswordGeneratorComponent as BasePasswordGeneratorComponent,\n} from 'jslib-angular/components/password-generator.component';\n\nimport { ModalComponent } from '../modal.component';\nimport { PasswordGeneratorHistoryComponent } from './password-generator-history.component';\n\n@Component({\n selector: 'app-password-generator',\n templateUrl: 'password-generator.component.html',\n})\nexport class PasswordGeneratorComponent extends BasePasswordGeneratorComponent {\n @ViewChild('historyTemplate', { read: ViewContainerRef, static: true }) historyModalRef: ViewContainerRef;\n\n private modal: ModalComponent = null;\n\n constructor(passwordGenerationService: PasswordGenerationService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver) {\n super(passwordGenerationService, platformUtilsService, i18nService, window);\n }\n\n history() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.historyModalRef.createComponent(factory).instance;\n this.modal.show(PasswordGeneratorHistoryComponent, this.historyModalRef);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n lengthChanged() {\n document.getElementById('length').focus();\n }\n\n minNumberChanged() {\n document.getElementById('min-number').focus();\n }\n\n minSpecialChanged() {\n document.getElementById('min-special').focus();\n }\n}\n","

{{'passwordGenerator' | i18n}}

{{'passwordGeneratorPolicyInEffect' | i18n}}
","import { Component } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport {\n PasswordGeneratorHistoryComponent as BasePasswordGeneratorHistoryComponent,\n} from 'jslib-angular/components/password-generator-history.component';\n\n@Component({\n selector: 'app-password-generator-history',\n templateUrl: 'password-generator-history.component.html',\n})\nexport class PasswordGeneratorHistoryComponent extends BasePasswordGeneratorHistoryComponent {\n constructor(passwordGenerationService: PasswordGenerationService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService) {\n super(passwordGenerationService, platformUtilsService, i18nService, window);\n }\n}\n","

{{'passwordHistory' | i18n}}

  • {{h.date | date:'medium'}}
{{'noPasswordsInList' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Component({\n selector: 'app-tools',\n templateUrl: 'tools.component.html',\n})\nexport class ToolsComponent implements OnInit {\n canAccessPremium = false;\n\n constructor(private userService: UserService, private messagingService: MessagingService) { }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n }\n\n premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n}\n"," ","import {\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { ModalComponent } from '../modal.component';\n\nimport { OrganizationsComponent } from '../settings/organizations.component';\nimport { UpdateKeyComponent } from '../settings/update-key.component';\nimport { AddEditComponent } from './add-edit.component';\nimport { AttachmentsComponent } from './attachments.component';\nimport { CiphersComponent } from './ciphers.component';\nimport { CollectionsComponent } from './collections.component';\nimport { FolderAddEditComponent } from './folder-add-edit.component';\nimport { GroupingsComponent } from './groupings.component';\nimport { ShareComponent } from './share.component';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\n\nconst BroadcasterSubscriptionId = 'VaultComponent';\n\n@Component({\n selector: 'app-vault',\n templateUrl: 'vault.component.html',\n})\nexport class VaultComponent implements OnInit, OnDestroy {\n @ViewChild(GroupingsComponent, { static: true }) groupingsComponent: GroupingsComponent;\n @ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent;\n @ViewChild(OrganizationsComponent, { static: true }) organizationsComponent: OrganizationsComponent;\n @ViewChild('attachments', { read: ViewContainerRef, static: true }) attachmentsModalRef: ViewContainerRef;\n @ViewChild('folderAddEdit', { read: ViewContainerRef, static: true }) folderAddEditModalRef: ViewContainerRef;\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('share', { read: ViewContainerRef, static: true }) shareModalRef: ViewContainerRef;\n @ViewChild('collections', { read: ViewContainerRef, static: true }) collectionsModalRef: ViewContainerRef;\n @ViewChild('updateKeyTemplate', { read: ViewContainerRef, static: true }) updateKeyModalRef: ViewContainerRef;\n\n favorites: boolean = false;\n type: CipherType = null;\n folderId: string = null;\n collectionId: string = null;\n showVerifyEmail = false;\n showBrowserOutdated = false;\n showUpdateKey = false;\n showPremiumCallout = false;\n deleted: boolean = false;\n trashCleanupWarning: string = null;\n\n modal: ModalComponent = null;\n\n constructor(private syncService: SyncService, private route: ActivatedRoute,\n private router: Router, private changeDetectorRef: ChangeDetectorRef,\n private i18nService: I18nService, private componentFactoryResolver: ComponentFactoryResolver,\n private tokenService: TokenService, private cryptoService: CryptoService,\n private messagingService: MessagingService, private userService: UserService,\n private platformUtilsService: PlatformUtilsService, private broadcasterService: BroadcasterService,\n private ngZone: NgZone) { }\n\n async ngOnInit() {\n this.showVerifyEmail = !(await this.tokenService.getEmailVerified());\n this.showBrowserOutdated = window.navigator.userAgent.indexOf('MSIE') !== -1;\n this.trashCleanupWarning = this.i18nService.t('trashCleanupWarningSelfHosted');\n\n const queryParamsSub = this.route.queryParams.subscribe(async params => {\n await this.syncService.fullSync(false);\n\n this.showUpdateKey = !(await this.cryptoService.hasEncKey());\n const canAccessPremium = await this.userService.canAccessPremium();\n this.showPremiumCallout = !this.showVerifyEmail && !canAccessPremium &&\n !this.platformUtilsService.isSelfHost();\n\n await Promise.all([\n this.groupingsComponent.load(),\n this.organizationsComponent.load(),\n ]);\n\n if (params == null) {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n } else {\n if (params.deleted) {\n this.groupingsComponent.selectedTrash = true;\n await this.filterDeleted();\n } else if (params.favorites) {\n this.groupingsComponent.selectedFavorites = true;\n await this.filterFavorites();\n } else if (params.type) {\n const t = parseInt(params.type, null);\n this.groupingsComponent.selectedType = t;\n await this.filterCipherType(t);\n } else if (params.folderId) {\n this.groupingsComponent.selectedFolder = true;\n this.groupingsComponent.selectedFolderId = params.folderId;\n await this.filterFolder(params.folderId);\n } else if (params.collectionId) {\n this.groupingsComponent.selectedCollectionId = params.collectionId;\n await this.filterCollection(params.collectionId);\n } else {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n }\n }\n\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'syncCompleted':\n if (message.successfully) {\n await Promise.all([\n this.groupingsComponent.load(),\n this.organizationsComponent.load(),\n this.ciphersComponent.load(this.ciphersComponent.filter),\n ]);\n this.changeDetectorRef.detectChanges();\n }\n break;\n }\n });\n });\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async clearGroupingFilters() {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchVault');\n await this.ciphersComponent.reload();\n this.clearFilters();\n this.go();\n }\n\n async filterFavorites() {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchFavorites');\n await this.ciphersComponent.reload(c => c.favorite);\n this.clearFilters();\n this.favorites = true;\n this.go();\n }\n\n async filterDeleted() {\n this.ciphersComponent.showAddNew = false;\n this.ciphersComponent.deleted = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchTrash');\n await this.ciphersComponent.reload(null, true);\n this.clearFilters();\n this.deleted = true;\n this.go();\n }\n\n async filterCipherType(type: CipherType) {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchType');\n await this.ciphersComponent.reload(c => c.type === type);\n this.clearFilters();\n this.type = type;\n this.go();\n }\n\n async filterFolder(folderId: string) {\n this.ciphersComponent.showAddNew = true;\n folderId = folderId === 'none' ? null : folderId;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchFolder');\n await this.ciphersComponent.reload(c => c.folderId === folderId);\n this.clearFilters();\n this.folderId = folderId == null ? 'none' : folderId;\n this.go();\n }\n\n async filterCollection(collectionId: string) {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchCollection');\n await this.ciphersComponent.reload(c => c.collectionIds != null &&\n c.collectionIds.indexOf(collectionId) > -1);\n this.clearFilters();\n this.collectionId = collectionId;\n this.go();\n }\n\n filterSearchText(searchText: string) {\n this.ciphersComponent.searchText = searchText;\n this.ciphersComponent.search(200);\n }\n\n async editCipherAttachments(cipher: CipherView) {\n const canAccessPremium = await this.userService.canAccessPremium();\n if (cipher.organizationId == null && !canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n } else if (cipher.organizationId != null) {\n const org = await this.userService.getOrganization(cipher.organizationId);\n if (org != null && (org.maxStorageGb == null || org.maxStorageGb === 0)) {\n this.messagingService.send('upgradeOrganization', { organizationId: cipher.organizationId });\n return;\n }\n }\n\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.attachmentsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(AttachmentsComponent, this.attachmentsModalRef);\n\n childComponent.cipherId = cipher.id;\n let madeAttachmentChanges = false;\n childComponent.onUploadedAttachment.subscribe(() => madeAttachmentChanges = true);\n childComponent.onDeletedAttachment.subscribe(() => madeAttachmentChanges = true);\n childComponent.onReuploadedAttachment.subscribe(() => madeAttachmentChanges = true);\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n if (madeAttachmentChanges) {\n await this.ciphersComponent.refresh();\n }\n madeAttachmentChanges = false;\n });\n }\n\n shareCipher(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.shareModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(ShareComponent, this.shareModalRef);\n\n childComponent.cipherId = cipher.id;\n childComponent.onSharedCipher.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n editCipherCollections(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.collectionsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(CollectionsComponent, this.collectionsModalRef);\n\n childComponent.cipherId = cipher.id;\n childComponent.onSavedCollections.subscribe(async () => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n async addFolder() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.folderAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n FolderAddEditComponent, this.folderAddEditModalRef);\n\n childComponent.folderId = null;\n childComponent.onSavedFolder.subscribe(async () => {\n this.modal.close();\n await this.groupingsComponent.loadFolders();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n async editFolder(folderId: string) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.folderAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n FolderAddEditComponent, this.folderAddEditModalRef);\n\n childComponent.folderId = folderId;\n childComponent.onSavedFolder.subscribe(async () => {\n this.modal.close();\n await this.groupingsComponent.loadFolders();\n });\n childComponent.onDeletedFolder.subscribe(async () => {\n this.modal.close();\n await this.groupingsComponent.loadFolders();\n await this.filterFolder('none');\n this.groupingsComponent.selectedFolderId = null;\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n addCipher() {\n const component = this.editCipher(null);\n component.type = this.type;\n component.folderId = this.folderId === 'none' ? null : this.folderId;\n if (this.collectionId != null) {\n const collection = this.groupingsComponent.collections.filter(c => c.id === this.collectionId);\n if (collection.length > 0) {\n component.organizationId = collection[0].organizationId;\n component.collectionIds = [this.collectionId];\n }\n }\n }\n\n editCipher(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.cipherAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n AddEditComponent, this.cipherAddEditModalRef);\n\n childComponent.cipherId = cipher == null ? null : cipher.id;\n childComponent.onSavedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n childComponent.onDeletedCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n childComponent.onRestoredCipher.subscribe(async (c: CipherView) => {\n this.modal.close();\n await this.ciphersComponent.refresh();\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n\n return childComponent;\n }\n\n cloneCipher(cipher: CipherView) {\n const component = this.editCipher(cipher);\n component.cloneMode = true;\n }\n\n updateKey() {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.updateKeyModalRef.createComponent(factory).instance;\n this.modal.show(UpdateKeyComponent, this.updateKeyModalRef);\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n private clearFilters() {\n this.folderId = null;\n this.collectionId = null;\n this.favorites = false;\n this.type = null;\n this.deleted = false;\n }\n\n private go(queryParams: any = null) {\n if (queryParams == null) {\n queryParams = {\n favorites: this.favorites ? true : null,\n type: this.type,\n folderId: this.folderId,\n collectionId: this.collectionId,\n deleted: this.deleted ? true : null,\n };\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n replaceUrl: true,\n });\n }\n}\n","

{{'myVault' | i18n}} {{'loading' | i18n}}

{{trashCleanupWarning}}
{{'updateKeyTitle' | i18n}}

{{'updateEncryptionKeyShortDesc' | i18n}}

{{'updateBrowser' | i18n}}

{{'updateBrowserDesc' | i18n}}

{{'updateBrowser' | i18n}}
{{'goPremium' | i18n}}

{{'premiumUpgradeUnlockFeatures' | i18n}}

{{'goPremium' | i18n}}
{{'organizations' | i18n}}
","import { Component } from '@angular/core';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\n\nimport { CipherWithIdRequest } from 'jslib-common/models/request/cipherWithIdRequest';\nimport { FolderWithIdRequest } from 'jslib-common/models/request/folderWithIdRequest';\nimport { UpdateKeyRequest } from 'jslib-common/models/request/updateKeyRequest';\n\n@Component({\n selector: 'app-update-key',\n templateUrl: 'update-key.component.html',\n})\nexport class UpdateKeyComponent {\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private messagingService: MessagingService, private syncService: SyncService,\n private folderService: FolderService, private cipherService: CipherService) { }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (hasEncKey) {\n return;\n }\n\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n try {\n this.formPromise = this.makeRequest().then(request => {\n return this.apiService.postAccountKey(request);\n });\n await this.formPromise;\n const toast: Toast = {\n type: 'success',\n title: this.i18nService.t('keyUpdated'),\n body: this.i18nService.t('logBackInOthersToo'),\n timeout: 15000,\n };\n this.toasterService.popAsync(toast);\n this.messagingService.send('logout');\n } catch { }\n }\n\n private async makeRequest(): Promise {\n const key = await this.cryptoService.getKey();\n const encKey = await this.cryptoService.makeEncKey(key);\n const privateKey = await this.cryptoService.getPrivateKey();\n let encPrivateKey: EncString = null;\n if (privateKey != null) {\n encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]);\n }\n const request = new UpdateKeyRequest();\n request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n\n await this.syncService.fullSync(true);\n\n const folders = await this.folderService.getAllDecrypted();\n for (let i = 0; i < folders.length; i++) {\n if (folders[i].id == null) {\n continue;\n }\n const folder = await this.folderService.encrypt(folders[i], encKey[0]);\n request.folders.push(new FolderWithIdRequest(folder));\n }\n\n const ciphers = await this.cipherService.getAllDecrypted();\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId != null) {\n continue;\n }\n const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]);\n request.ciphers.push(new CipherWithIdRequest(cipher));\n }\n\n return request;\n }\n}\n","

{{'updateEncryptionKey' | i18n}}

{{'updateEncryptionKeyShortDesc' | i18n}} {{'updateEncryptionKeyDesc' | i18n}} {{'learnMore' | i18n}}

{{'updateEncryptionKeyWarning' | i18n}}
","import { Component } from '@angular/core';\n\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport {\n FolderAddEditComponent as BaseFolderAddEditComponent,\n} from 'jslib-angular/components/folder-add-edit.component';\n\n@Component({\n selector: 'app-folder-add-edit',\n templateUrl: 'folder-add-edit.component.html',\n})\nexport class FolderAddEditComponent extends BaseFolderAddEditComponent {\n constructor(folderService: FolderService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService) {\n super(folderService, i18nService, platformUtilsService);\n }\n}\n","

{{title}}

","import {\n Component,\n OnDestroy,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { ShareComponent as BaseShareComponent } from 'jslib-angular/components/share.component';\n\n@Component({\n selector: 'app-vault-share',\n templateUrl: 'share.component.html',\n})\nexport class ShareComponent extends BaseShareComponent implements OnDestroy {\n constructor(collectionService: CollectionService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, userService: UserService,\n cipherService: CipherService) {\n super(collectionService, platformUtilsService, i18nService, userService, cipherService);\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n const collections = select ? this.collections : this.writeableCollections;\n collections.forEach(c => this.check(c, select));\n }\n}\n","

{{'share' | i18n}} {{cipher.name}}

{{'noOrganizationsList' | i18n}}

{{'shareDesc' | i18n}}

{{'collections' | i18n}}

{{'noCollectionsInList' | i18n}}
{{c.name}}
{{'newOrganization' | i18n}}
","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-send-info',\n templateUrl: 'send-info.component.html',\n})\nexport class SendInfoComponent { }\n","
{{'sendVaultCardProductDesc' | i18n}} {{'sendVaultCardLearnMore' | i18n}}, {{'sendVaultCardSee' | i18n}} {{'sendVaultCardHowItWorks' | i18n}}, {{'sendVaultCardOr' | i18n}} {{'sendVaultCardTryItNow' | i18n}}.
","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Component({\n selector: 'app-verify-email',\n templateUrl: 'verify-email.component.html',\n})\nexport class VerifyEmailComponent {\n actionPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) { }\n\n async send() {\n if (this.actionPromise != null) {\n return;\n }\n try {\n this.actionPromise = this.apiService.postAccountVerifyEmail();\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('checkInboxForVerification'));\n } catch { }\n this.actionPromise = null;\n }\n}\n","
{{'verifyEmail' | i18n}}

{{'verifyEmailDesc' | i18n}}

","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Injectable()\nexport class OrganizationGuardService implements CanActivate {\n constructor(private userService: UserService, private router: Router,\n private toasterService: ToasterService, private i18nService: I18nService) { }\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const org = await this.userService.getOrganization(route.params.organizationId);\n if (org == null) {\n this.router.navigate(['/']);\n return false;\n }\n if (!org.isOwner && !org.enabled) {\n this.toasterService.popAsync('error', null, this.i18nService.t('organizationIsDisabled'));\n this.router.navigate(['/']);\n return false;\n }\n\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Permissions } from 'jslib-common/enums/permissions';\n\n@Injectable()\nexport class OrganizationTypeGuardService implements CanActivate {\n constructor(private userService: UserService, private router: Router) { }\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const org = await this.userService.getOrganization(route.params.organizationId);\n const permissions = route.data == null ? null : route.data.permissions as Permissions[];\n\n if (\n (permissions.indexOf(Permissions.AccessBusinessPortal) !== -1 && org.canAccessBusinessPortal) ||\n (permissions.indexOf(Permissions.AccessEventLogs) !== -1 && org.canAccessEventLogs) ||\n (permissions.indexOf(Permissions.AccessImportExport) !== -1 && org.canAccessImportExport) ||\n (permissions.indexOf(Permissions.AccessReports) !== -1 && org.canAccessReports) ||\n (permissions.indexOf(Permissions.ManageAllCollections) !== -1 && org.canManageAllCollections) ||\n (permissions.indexOf(Permissions.ManageAssignedCollections) !== -1 && org.canManageAssignedCollections) ||\n (permissions.indexOf(Permissions.ManageGroups) !== -1 && org.canManageGroups) ||\n (permissions.indexOf(Permissions.ManageOrganization) !== -1 && org.isOwner) ||\n (permissions.indexOf(Permissions.ManagePolicies) !== -1 && org.canManagePolicies) ||\n (permissions.indexOf(Permissions.ManageUsers) !== -1 && org.canManageUsers) ||\n (permissions.indexOf(Permissions.ManageUsersPassword) !== -1 && org.canManageUsersPassword)\n ) {\n return true;\n }\n\n this.router.navigate(['/organizations', org.id]);\n return false;\n }\n}\n","export enum Permissions {\n AccessBusinessPortal,\n AccessEventLogs,\n AccessImportExport,\n AccessReports,\n ManageAllCollections,\n ManageAssignedCollections,\n ManageGroups,\n ManageOrganization,\n ManagePolicies,\n ManageUsers,\n ManageUsersPassword,\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n RouterStateSnapshot,\n} from '@angular/router';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\n@Injectable()\nexport class AuthGuardService implements CanActivate {\n constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService,\n private router: Router, private messagingService: MessagingService) { }\n\n async canActivate(route: ActivatedRouteSnapshot, routerState: RouterStateSnapshot) {\n const isAuthed = await this.userService.isAuthenticated();\n if (!isAuthed) {\n this.messagingService.send('authBlocked');\n return false;\n }\n\n const locked = await this.vaultTimeoutService.isLocked();\n if (locked) {\n if (routerState != null) {\n this.messagingService.send('lockedUrl', { url: routerState.url });\n }\n this.router.navigate(['lock'], { queryParams: { promptBiometric: true }});\n return false;\n }\n\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\n@Injectable()\nexport class LockGuardService implements CanActivate {\n\n protected homepage = 'vault';\n constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService,\n private router: Router) { }\n\n async canActivate() {\n const isAuthed = await this.userService.isAuthenticated();\n if (isAuthed) {\n const locked = await this.vaultTimeoutService.isLocked();\n if (locked) {\n return true;\n } else {\n this.router.navigate([this.homepage]);\n return false;\n }\n }\n\n this.router.navigate(['']);\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\n@Injectable()\nexport class UnauthGuardService implements CanActivate {\n\n protected homepage = 'vault';\n constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService,\n private router: Router) { }\n\n async canActivate() {\n const isAuthed = await this.userService.isAuthenticated();\n if (isAuthed) {\n const locked = await this.vaultTimeoutService.isLocked();\n if (locked) {\n this.router.navigate(['lock']);\n } else {\n this.router.navigate([this.homepage]);\n }\n return false;\n }\n\n return true;\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\n\nimport { CipherData } from 'jslib-common/models/data';\nimport { Cipher, SymmetricCryptoKey } from 'jslib-common/models/domain';\nimport { EmergencyAccessViewResponse } from 'jslib-common/models/response/emergencyAccessResponse';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { ModalComponent } from '../modal.component';\n\nimport { EmergencyAccessAttachmentsComponent } from './emergency-access-attachments.component';\nimport { EmergencyAddEditComponent } from './emergency-add-edit.component';\n\n@Component({\n selector: 'emergency-access-view',\n templateUrl: 'emergency-access-view.component.html',\n})\nexport class EmergencyAccessViewComponent implements OnInit {\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('attachments', { read: ViewContainerRef, static: true }) attachmentsModalRef: ViewContainerRef;\n\n id: string;\n ciphers: CipherView[] = [];\n\n private modal: ModalComponent = null;\n\n constructor(private cipherService: CipherService, private cryptoService: CryptoService,\n private componentFactoryResolver: ComponentFactoryResolver, private router: Router,\n private route: ActivatedRoute, private apiService: ApiService) { }\n\n ngOnInit() {\n this.route.params.subscribe(qParams => {\n if (qParams.id == null) {\n return this.router.navigate(['settings/emergency-access']);\n }\n\n this.id = qParams.id;\n\n this.load();\n });\n }\n\n selectCipher(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.cipherAddEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(EmergencyAddEditComponent, this.cipherAddEditModalRef);\n\n childComponent.cipherId = cipher == null ? null : cipher.id;\n childComponent.cipher = cipher;\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n\n return childComponent;\n }\n\n async load() {\n const response = await this.apiService.postEmergencyAccessView(this.id);\n this.ciphers = await this.getAllCiphers(response);\n }\n\n async viewAttachments(cipher: CipherView) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.attachmentsModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(EmergencyAccessAttachmentsComponent, this.attachmentsModalRef);\n\n childComponent.cipher = cipher;\n childComponent.emergencyAccessId = this.id;\n\n this.modal.onClosed.subscribe(async () => {\n this.modal = null;\n });\n }\n\n protected async getAllCiphers(response: EmergencyAccessViewResponse): Promise {\n const ciphers = response.ciphers;\n\n const decCiphers: CipherView[] = [];\n const oldKeyBuffer = await this.cryptoService.rsaDecrypt(response.keyEncrypted);\n const oldEncKey = new SymmetricCryptoKey(oldKeyBuffer);\n\n const promises: any[] = [];\n ciphers.forEach(cipherResponse => {\n const cipherData = new CipherData(cipherResponse);\n const cipher = new Cipher(cipherData);\n promises.push(cipher.decrypt(oldEncKey).then(c => decCiphers.push(c)));\n });\n\n await Promise.all(promises);\n decCiphers.sort(this.cipherService.getLocaleSortingFunction());\n\n return decCiphers;\n }\n}\n","

{{'vault' | i18n}}

{{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
","import { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class EncryptedObject {\n iv: ArrayBuffer;\n data: ArrayBuffer;\n mac: ArrayBuffer;\n key: SymmetricCryptoKey;\n}\n","export class EnvironmentUrls {\n base: string;\n api: string;\n identity: string;\n events: string;\n}\n","export class GeneratedPasswordHistory {\n password: string;\n date: number;\n\n constructor(password: string, date: number) {\n this.password = password;\n this.date = date;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { AttachmentView } from 'jslib-common/models/view/attachmentView';\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from 'jslib-angular/components/attachments.component';\n\n@Component({\n selector: 'emergency-access-attachments',\n templateUrl: '../vault/attachments.component.html',\n})\nexport class EmergencyAccessAttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = true;\n canAccessAttachments = true;\n\n constructor(cipherService: CipherService, i18nService: I18nService,\n cryptoService: CryptoService, userService: UserService,\n platformUtilsService: PlatformUtilsService, apiService: ApiService) {\n super(cipherService, i18nService, cryptoService, userService, platformUtilsService, apiService, window);\n }\n\n protected async init() {\n // Do nothing since cipher is already decoded\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return false;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { TotpService } from 'jslib-common/abstractions/totp.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\n\nimport { AddEditComponent as BaseAddEditComponent } from '../vault/add-edit.component';\n\n@Component({\n selector: 'app-org-vault-add-edit',\n templateUrl: '../vault/add-edit.component.html',\n})\nexport class EmergencyAddEditComponent extends BaseAddEditComponent {\n originalCipher: Cipher = null;\n viewOnly = true;\n\n constructor(cipherService: CipherService, folderService: FolderService,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n auditService: AuditService, stateService: StateService,\n userService: UserService, collectionService: CollectionService,\n totpService: TotpService, passwordGenerationService: PasswordGenerationService,\n messagingService: MessagingService, eventService: EventService, policyService: PolicyService) {\n super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, totpService, passwordGenerationService, messagingService,\n eventService, policyService);\n }\n\n async load() {\n this.title = this.i18nService.t('viewItem');\n }\n\n protected async loadCipher() {\n return Promise.resolve(this.originalCipher);\n }\n}\n","import { Component, ComponentFactoryResolver, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EmergencyAccessStatusType } from 'jslib-common/enums/emergencyAccessStatusType';\nimport { EmergencyAccessType } from 'jslib-common/enums/emergencyAccessType';\nimport { Utils } from 'jslib-common/misc/utils';\nimport { EmergencyAccessConfirmRequest } from 'jslib-common/models/request/emergencyAccessConfirmRequest';\nimport { EmergencyAccessGranteeDetailsResponse, EmergencyAccessGrantorDetailsResponse } from 'jslib-common/models/response/emergencyAccessResponse';\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { ModalComponent } from '../modal.component';\nimport { EmergencyAccessAddEditComponent } from './emergency-access-add-edit.component';\nimport { EmergencyAccessConfirmComponent } from './emergency-access-confirm.component';\nimport { EmergencyAccessTakeoverComponent } from './emergency-access-takeover.component';\n\n@Component({\n selector: 'emergency-access',\n templateUrl: 'emergency-access.component.html',\n})\nexport class EmergencyAccessComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('takeoverTemplate', { read: ViewContainerRef, static: true}) takeoverModalRef: ViewContainerRef;\n @ViewChild('confirmTemplate', { read: ViewContainerRef, static: true }) confirmModalRef: ViewContainerRef;\n\n canAccessPremium: boolean;\n trustedContacts: EmergencyAccessGranteeDetailsResponse[];\n grantedContacts: EmergencyAccessGrantorDetailsResponse[];\n emergencyAccessType = EmergencyAccessType;\n emergencyAccessStatusType = EmergencyAccessStatusType;\n actionPromise: Promise;\n isOrganizationOwner: boolean;\n\n private modal: ModalComponent = null;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private componentFactoryResolver: ComponentFactoryResolver,\n private platformUtilsService: PlatformUtilsService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private storageService: StorageService, private userService: UserService,\n private messagingService: MessagingService) { }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n const orgs = await this.userService.getAllOrganizations();\n this.isOrganizationOwner = orgs.some(o => o.isOwner);\n this.load();\n }\n\n async load() {\n this.trustedContacts = (await this.apiService.getEmergencyAccessTrusted()).data;\n this.grantedContacts = (await this.apiService.getEmergencyAccessGranted()).data;\n }\n\n async premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n\n edit(details: EmergencyAccessGranteeDetailsResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.addEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EmergencyAccessAddEditComponent, this.addEditModalRef);\n\n childComponent.name = details?.name ?? details?.email;\n childComponent.emergencyAccessId = details?.id;\n childComponent.readOnly = !this.canAccessPremium;\n childComponent.onSaved.subscribe(() => {\n this.modal.close();\n this.load();\n });\n childComponent.onDeleted.subscribe(() => {\n this.modal.close();\n this.remove(details);\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n invite() {\n this.edit(null);\n }\n\n async reinvite(contact: EmergencyAccessGranteeDetailsResponse) {\n if (this.actionPromise != null) {\n return;\n }\n this.actionPromise = this.apiService.postEmergencyAccessReinvite(contact.id);\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenReinvited', contact.email));\n this.actionPromise = null;\n }\n\n async confirm(contact: EmergencyAccessGranteeDetailsResponse) {\n function updateUser() {\n contact.status = EmergencyAccessStatusType.Confirmed;\n }\n\n if (this.actionPromise != null) {\n return;\n }\n\n const autoConfirm = await this.storageService.get(ConstantsService.autoConfirmFingerprints);\n if (autoConfirm == null || !autoConfirm) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.confirmModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EmergencyAccessConfirmComponent, this.confirmModalRef);\n\n childComponent.name = contact?.name ?? contact?.email;\n childComponent.emergencyAccessId = contact.id;\n childComponent.userId = contact?.granteeId;\n childComponent.onConfirmed.subscribe(async () => {\n this.modal.close();\n\n childComponent.formPromise = this.doConfirmation(contact);\n await childComponent.formPromise;\n\n updateUser();\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenConfirmed', contact.name || contact.email));\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n return;\n }\n\n this.actionPromise = this.doConfirmation(contact);\n await this.actionPromise;\n updateUser();\n\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenConfirmed', contact.name || contact.email));\n this.actionPromise = null;\n }\n\n async remove(details: EmergencyAccessGranteeDetailsResponse | EmergencyAccessGrantorDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeUserConfirmation'), details.name || details.email,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteEmergencyAccess(details.id);\n this.toasterService.popAsync('success', null, this.i18nService.t('removedUserId', details.name || details.email));\n\n if (details instanceof EmergencyAccessGranteeDetailsResponse) {\n this.removeGrantee(details);\n } else {\n this.removeGrantor(details);\n }\n } catch { }\n }\n\n async requestAccess(details: EmergencyAccessGrantorDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('requestAccessConfirmation', details.waitTimeDays.toString()),\n details.name || details.email,\n this.i18nService.t('requestAccess'),\n this.i18nService.t('no'),\n 'warning',\n );\n\n if (!confirmed) {\n return false;\n }\n\n await this.apiService.postEmergencyAccessInitiate(details.id);\n\n details.status = EmergencyAccessStatusType.RecoveryInitiated;\n this.toasterService.popAsync('success', null, this.i18nService.t('requestSent', details.name || details.email));\n }\n\n async approve(details: EmergencyAccessGranteeDetailsResponse) {\n const type = this.i18nService.t(details.type === EmergencyAccessType.View ? 'view' : 'takeover');\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('approveAccessConfirmation', details.name || details.email, type),\n details.name || details.email,\n this.i18nService.t('approve'),\n this.i18nService.t('no'),\n 'warning',\n );\n\n if (!confirmed) {\n return false;\n }\n\n await this.apiService.postEmergencyAccessApprove(details.id);\n details.status = EmergencyAccessStatusType.RecoveryApproved;\n\n this.toasterService.popAsync('success', null, this.i18nService.t('emergencyApproved', details.name || details.email));\n }\n\n async reject(details: EmergencyAccessGranteeDetailsResponse) {\n await this.apiService.postEmergencyAccessReject(details.id);\n details.status = EmergencyAccessStatusType.Confirmed;\n\n this.toasterService.popAsync('success', null, this.i18nService.t('emergencyRejected', details.name || details.email));\n }\n\n async takeover(details: EmergencyAccessGrantorDetailsResponse) {\n if (this.modal != null) {\n this.modal.close();\n }\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(ModalComponent);\n this.modal = this.addEditModalRef.createComponent(factory).instance;\n const childComponent = this.modal.show(\n EmergencyAccessTakeoverComponent, this.takeoverModalRef);\n\n childComponent.name = details != null ? details.name || details.email : null;\n childComponent.email = details.email;\n childComponent.emergencyAccessId = details != null ? details.id : null;\n\n childComponent.onDone.subscribe(() => {\n this.modal.close();\n this.toasterService.popAsync('success', null, this.i18nService.t('passwordResetFor', details.name || details.email));\n });\n\n this.modal.onClosed.subscribe(() => {\n this.modal = null;\n });\n }\n\n private removeGrantee(details: EmergencyAccessGranteeDetailsResponse) {\n const index = this.trustedContacts.indexOf(details);\n if (index > -1) {\n this.trustedContacts.splice(index, 1);\n }\n }\n\n private removeGrantor(details: EmergencyAccessGrantorDetailsResponse) {\n const index = this.grantedContacts.indexOf(details);\n if (index > -1) {\n this.grantedContacts.splice(index, 1);\n }\n }\n\n // Encrypt the master password hash using the grantees public key, and send it to bitwarden for escrow.\n private async doConfirmation(details: EmergencyAccessGranteeDetailsResponse) {\n const encKey = await this.cryptoService.getEncKey();\n const publicKeyResponse = await this.apiService.getUserPublicKey(details.granteeId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n try {\n // tslint:disable-next-line\n console.log('User\\'s fingerprint: ' +\n (await this.cryptoService.getFingerprint(details.granteeId, publicKey.buffer)).join('-'));\n } catch { }\n\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n const request = new EmergencyAccessConfirmRequest();\n request.key = encryptedKey.encryptedString;\n await this.apiService.postEmergencyAccessConfirm(details.id, request);\n }\n}\n","

{{'emergencyAccess' | i18n}}

{{'emergencyAccessDesc' | i18n}} {{'learnMore' | i18n}}.

{{'warning' | i18n }}: {{'emergencyAccessOwnerWarning' | i18n}}

{{'trustedEmergencyContacts' | i18n}} {{'premium' | i18n}}

{{c.email}} {{'invited' | i18n}} {{'accepted' | i18n}} {{'emergencyAccessRecoveryInitiated' | i18n}} {{'emergencyAccessRecoveryApproved' | i18n}} {{'view' | i18n}} {{'takeover' | i18n}} {{c.name}}

{{'noTrustedContacts' | i18n}}

{{'designatedEmergencyContacts' | i18n}}

{{c.email}} {{'invited' | i18n}} {{'accepted' | i18n}} {{'emergencyAccessRecoveryInitiated' | i18n}} {{'emergencyAccessRecoveryApproved' | i18n}} {{'view' | i18n}} {{'takeover' | i18n}} {{c.name}}

{{'noGrantedAccess' | i18n}}

","export enum EmergencyAccessType\n{\n View = 0,\n Takeover = 1,\n}\n","import { EmergencyAccessStatusType } from '../../enums/emergencyAccessStatusType';\nimport { EmergencyAccessType } from '../../enums/emergencyAccessType';\nimport { KdfType } from '../../enums/kdfType';\nimport { BaseResponse } from './baseResponse';\nimport { CipherResponse } from './cipherResponse';\n\nexport class EmergencyAccessGranteeDetailsResponse extends BaseResponse {\n id: string;\n granteeId: string;\n name: string;\n email: string;\n type: EmergencyAccessType;\n status: EmergencyAccessStatusType;\n waitTimeDays: number;\n creationDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.granteeId = this.getResponseProperty('GranteeId');\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.type = this.getResponseProperty('Type');\n this.status = this.getResponseProperty('Status');\n this.waitTimeDays = this.getResponseProperty('WaitTimeDays');\n this.creationDate = this.getResponseProperty('CreationDate');\n }\n}\n\nexport class EmergencyAccessGrantorDetailsResponse extends BaseResponse {\n id: string;\n grantorId: string;\n name: string;\n email: string;\n type: EmergencyAccessType;\n status: EmergencyAccessStatusType;\n waitTimeDays: number;\n creationDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.grantorId = this.getResponseProperty('GrantorId');\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.type = this.getResponseProperty('Type');\n this.status = this.getResponseProperty('Status');\n this.waitTimeDays = this.getResponseProperty('WaitTimeDays');\n this.creationDate = this.getResponseProperty('CreationDate');\n }\n}\n\nexport class EmergencyAccessTakeoverResponse extends BaseResponse {\n keyEncrypted: string;\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n\n this.keyEncrypted = this.getResponseProperty('KeyEncrypted');\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n }\n}\n\nexport class EmergencyAccessViewResponse extends BaseResponse {\n keyEncrypted: string;\n ciphers: CipherResponse[] = [];\n\n constructor(response: any) {\n super(response);\n\n this.keyEncrypted = this.getResponseProperty('KeyEncrypted');\n\n const ciphers = this.getResponseProperty('Ciphers');\n if (ciphers != null) {\n this.ciphers = ciphers.map((c: any) => new CipherResponse(c));\n }\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { EmergencyAccessType } from 'jslib-common/enums/emergencyAccessType';\nimport { EmergencyAccessInviteRequest } from 'jslib-common/models/request/emergencyAccessInviteRequest';\nimport { EmergencyAccessUpdateRequest } from 'jslib-common/models/request/emergencyAccessUpdateRequest';\n\n@Component({\n selector: 'emergency-access-add-edit',\n templateUrl: 'emergency-access-add-edit.component.html',\n})\nexport class EmergencyAccessAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() emergencyAccessId: string;\n @Output() onSaved = new EventEmitter();\n @Output() onDeleted = new EventEmitter();\n\n loading = true;\n readOnly: boolean = false;\n editMode: boolean = false;\n title: string;\n email: string;\n type: EmergencyAccessType = EmergencyAccessType.View;\n\n formPromise: Promise;\n\n emergencyAccessType = EmergencyAccessType;\n waitTimes: { name: string; value: number; }[];\n waitTime: number;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) { }\n\n async ngOnInit() {\n this.editMode = this.loading = this.emergencyAccessId != null;\n\n this.waitTimes = [\n { name: this.i18nService.t('oneDay'), value: 1 },\n { name: this.i18nService.t('days', '2'), value: 2 },\n { name: this.i18nService.t('days', '7'), value: 7 },\n { name: this.i18nService.t('days', '14'), value: 14 },\n { name: this.i18nService.t('days', '30'), value: 30 },\n { name: this.i18nService.t('days', '90'), value: 90 },\n ];\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editEmergencyContact');\n try {\n const emergencyAccess = await this.apiService.getEmergencyAccess(this.emergencyAccessId);\n this.type = emergencyAccess.type;\n this.waitTime = emergencyAccess.waitTimeDays;\n } catch { }\n } else {\n this.title = this.i18nService.t('inviteEmergencyContact');\n this.waitTime = this.waitTimes[2].value;\n }\n\n this.loading = false;\n }\n\n async submit() {\n try {\n if (this.editMode) {\n const request = new EmergencyAccessUpdateRequest();\n request.type = this.type;\n request.waitTimeDays = this.waitTime;\n\n this.formPromise = this.apiService.putEmergencyAccess(this.emergencyAccessId, request);\n } else {\n const request = new EmergencyAccessInviteRequest();\n request.email = this.email.trim();\n request.type = this.type;\n request.waitTimeDays = this.waitTime;\n\n this.formPromise = this.apiService.postEmergencyAccessInvite(request);\n }\n\n await this.formPromise;\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedUserId' : 'invitedUsers', this.name));\n this.onSaved.emit();\n } catch { }\n }\n\n async delete() {\n this.onDeleted.emit();\n }\n}\n","

{{'premium' | i18n}} {{title}} {{name}}

{{'loading' | i18n}}

{{'inviteEmergencyContactDesc' | i18n}}

{{'userAccess' | i18n}}

{{'waitTimeDesc' | i18n}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'emergency-access-confirm',\n templateUrl: 'emergency-access-confirm.component.html',\n})\nexport class EmergencyAccessConfirmComponent implements OnInit {\n @Input() name: string;\n @Input() userId: string;\n @Input() emergencyAccessId: string;\n @Input() formPromise: Promise;\n @Output() onConfirmed = new EventEmitter();\n\n dontAskAgain = false;\n loading = true;\n fingerprint: string;\n\n constructor(private apiService: ApiService, private cryptoService: CryptoService,\n private storageService: StorageService) { }\n\n async ngOnInit() {\n try {\n const publicKeyResponse = await this.apiService.getUserPublicKey(this.userId);\n if (publicKeyResponse != null) {\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n const fingerprint = await this.cryptoService.getFingerprint(this.userId, publicKey.buffer);\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join('-');\n }\n }\n } catch { }\n this.loading = false;\n }\n\n async submit() {\n if (this.loading) {\n return;\n }\n\n if (this.dontAskAgain) {\n await this.storageService.save(ConstantsService.autoConfirmFingerprints, true);\n }\n\n try {\n this.onConfirmed.emit();\n } catch { }\n }\n}\n","

{{'confirmUser' | i18n}} {{name}}

{{'fingerprintEnsureIntegrityVerify' | i18n}} {{'learnMore' | i18n}}

{{fingerprint}}

","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { KdfType } from 'jslib-common/enums/kdfType';\nimport { PolicyData } from 'jslib-common/models/data/policyData';\nimport { Policy } from 'jslib-common/models/domain/policy';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\nimport { EmergencyAccessPasswordRequest } from 'jslib-common/models/request/emergencyAccessPasswordRequest';\nimport { PolicyResponse } from 'jslib-common/models/response/policyResponse';\n\nimport { ChangePasswordComponent } from 'jslib-angular/components/change-password.component';\n\n@Component({\n selector: 'emergency-access-takeover',\n templateUrl: 'emergency-access-takeover.component.html',\n})\nexport class EmergencyAccessTakeoverComponent extends ChangePasswordComponent implements OnInit {\n @Output() onDone = new EventEmitter();\n @Input() emergencyAccessId: string;\n @Input() name: string;\n @Input() email: string;\n @Input() kdf: KdfType;\n @Input() kdfIterations: number;\n\n formPromise: Promise;\n\n constructor(i18nService: I18nService, cryptoService: CryptoService,\n messagingService: MessagingService, userService: UserService,\n passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService,\n private apiService: ApiService, private toasterService: ToasterService) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService);\n }\n\n async ngOnInit() {\n const response = await this.apiService.getEmergencyGrantorPolicies(this.emergencyAccessId);\n if (response.data != null && response.data.length > 0) {\n const policies = response.data.map((policyResponse: PolicyResponse) => new Policy(new PolicyData(policyResponse)));\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions(policies);\n }\n }\n\n async submit() {\n if (!await this.strongPassword()) {\n return;\n }\n\n const takeoverResponse = await this.apiService.postEmergencyAccessTakeover(this.emergencyAccessId);\n\n const oldKeyBuffer = await this.cryptoService.rsaDecrypt(takeoverResponse.keyEncrypted);\n const oldEncKey = new SymmetricCryptoKey(oldKeyBuffer);\n\n if (oldEncKey == null) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'), this.i18nService.t('unexpectedError'));\n return;\n }\n\n const key = await this.cryptoService.makeKey(this.masterPassword, this.email, takeoverResponse.kdf, takeoverResponse.kdfIterations);\n const masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n\n const encKey = await this.cryptoService.remakeEncKey(key, oldEncKey);\n\n const request = new EmergencyAccessPasswordRequest();\n request.newMasterPasswordHash = masterPasswordHash;\n request.key = encKey[1].encryptedString;\n\n this.apiService.postEmergencyAccessPassword(this.emergencyAccessId, request);\n\n try {\n this.onDone.emit();\n } catch { }\n }\n}\n","

{{'takeover' | i18n}} {{name}}

{{'loggedOutWarning' | i18n}} {{'masterPasswordPolicyInEffect' | i18n}}
  • 0\"> {{'policyInEffectMinComplexity' | i18n : getPasswordScoreAlertDisplay()}}
  • 0\"> {{'policyInEffectMinLength' | i18n : enforcedPolicyOptions?.minLength.toString()}}
  • {{'policyInEffectUppercase' | i18n}}
  • {{'policyInEffectLowercase' | i18n}}
  • {{'policyInEffectNumbers' | i18n}}
  • {{'policyInEffectSpecial' | i18n : '!@#$%^&*'}}
","import { DeviceType } from '../enums/deviceType';\nimport { PolicyType } from '../enums/policyType';\n\nimport { ApiService as ApiServiceAbstraction } from '../abstractions/api.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { TokenService } from '../abstractions/token.service';\n\nimport { EnvironmentUrls } from '../models/domain/environmentUrls';\n\nimport { AttachmentRequest } from '../models/request/attachmentRequest';\nimport { BitPayInvoiceRequest } from '../models/request/bitPayInvoiceRequest';\nimport { CipherBulkDeleteRequest } from '../models/request/cipherBulkDeleteRequest';\nimport { CipherBulkMoveRequest } from '../models/request/cipherBulkMoveRequest';\nimport { CipherBulkShareRequest } from '../models/request/cipherBulkShareRequest';\nimport { CipherCollectionsRequest } from '../models/request/cipherCollectionsRequest';\nimport { CipherCreateRequest } from '../models/request/cipherCreateRequest';\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CipherShareRequest } from '../models/request/cipherShareRequest';\nimport { CollectionRequest } from '../models/request/collectionRequest';\nimport { DeleteRecoverRequest } from '../models/request/deleteRecoverRequest';\nimport { EmailRequest } from '../models/request/emailRequest';\nimport { EmailTokenRequest } from '../models/request/emailTokenRequest';\nimport { EmergencyAccessAcceptRequest } from '../models/request/emergencyAccessAcceptRequest';\nimport { EmergencyAccessConfirmRequest } from '../models/request/emergencyAccessConfirmRequest';\nimport { EmergencyAccessInviteRequest } from '../models/request/emergencyAccessInviteRequest';\nimport { EmergencyAccessPasswordRequest } from '../models/request/emergencyAccessPasswordRequest';\nimport { EmergencyAccessUpdateRequest } from '../models/request/emergencyAccessUpdateRequest';\nimport { EventRequest } from '../models/request/eventRequest';\nimport { FolderRequest } from '../models/request/folderRequest';\nimport { GroupRequest } from '../models/request/groupRequest';\nimport { IapCheckRequest } from '../models/request/iapCheckRequest';\nimport { ImportCiphersRequest } from '../models/request/importCiphersRequest';\nimport { ImportDirectoryRequest } from '../models/request/importDirectoryRequest';\nimport { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest';\nimport { KdfRequest } from '../models/request/kdfRequest';\nimport { KeysRequest } from '../models/request/keysRequest';\nimport { OrganizationCreateRequest } from '../models/request/organizationCreateRequest';\nimport { OrganizationImportRequest } from '../models/request/organizationImportRequest';\nimport { OrganizationKeysRequest } from '../models/request/organizationKeysRequest';\nimport { OrganizationTaxInfoUpdateRequest } from '../models/request/organizationTaxInfoUpdateRequest';\nimport { OrganizationUpdateRequest } from '../models/request/organizationUpdateRequest';\nimport { OrganizationUpgradeRequest } from '../models/request/organizationUpgradeRequest';\nimport { OrganizationUserAcceptRequest } from '../models/request/organizationUserAcceptRequest';\nimport { OrganizationUserBulkConfirmRequest } from '../models/request/organizationUserBulkConfirmRequest';\nimport { OrganizationUserBulkRequest } from '../models/request/organizationUserBulkRequest';\nimport { OrganizationUserConfirmRequest } from '../models/request/organizationUserConfirmRequest';\nimport { OrganizationUserInviteRequest } from '../models/request/organizationUserInviteRequest';\nimport { OrganizationUserResetPasswordEnrollmentRequest } from '../models/request/organizationUserResetPasswordEnrollmentRequest';\nimport { OrganizationUserResetPasswordRequest } from '../models/request/organizationUserResetPasswordRequest';\nimport { OrganizationUserUpdateGroupsRequest } from '../models/request/organizationUserUpdateGroupsRequest';\nimport { OrganizationUserUpdateRequest } from '../models/request/organizationUserUpdateRequest';\nimport { PasswordHintRequest } from '../models/request/passwordHintRequest';\nimport { PasswordRequest } from '../models/request/passwordRequest';\nimport { PasswordVerificationRequest } from '../models/request/passwordVerificationRequest';\nimport { PaymentRequest } from '../models/request/paymentRequest';\nimport { PolicyRequest } from '../models/request/policyRequest';\nimport { PreloginRequest } from '../models/request/preloginRequest';\nimport { RegisterRequest } from '../models/request/registerRequest';\nimport { SeatRequest } from '../models/request/seatRequest';\nimport { SelectionReadOnlyRequest } from '../models/request/selectionReadOnlyRequest';\nimport { SendAccessRequest } from '../models/request/sendAccessRequest';\nimport { SendRequest } from '../models/request/sendRequest';\nimport { SetPasswordRequest } from '../models/request/setPasswordRequest';\nimport { StorageRequest } from '../models/request/storageRequest';\nimport { TaxInfoUpdateRequest } from '../models/request/taxInfoUpdateRequest';\nimport { TokenRequest } from '../models/request/tokenRequest';\nimport { TwoFactorEmailRequest } from '../models/request/twoFactorEmailRequest';\nimport { TwoFactorProviderRequest } from '../models/request/twoFactorProviderRequest';\nimport { TwoFactorRecoveryRequest } from '../models/request/twoFactorRecoveryRequest';\nimport { UpdateDomainsRequest } from '../models/request/updateDomainsRequest';\nimport { UpdateKeyRequest } from '../models/request/updateKeyRequest';\nimport { UpdateProfileRequest } from '../models/request/updateProfileRequest';\nimport { UpdateTwoFactorAuthenticatorRequest } from '../models/request/updateTwoFactorAuthenticatorRequest';\nimport { UpdateTwoFactorDuoRequest } from '../models/request/updateTwoFactorDuoRequest';\nimport { UpdateTwoFactorEmailRequest } from '../models/request/updateTwoFactorEmailRequest';\nimport { UpdateTwoFactorWebAuthnDeleteRequest } from '../models/request/updateTwoFactorWebAuthnDeleteRequest';\nimport { UpdateTwoFactorWebAuthnRequest } from '../models/request/updateTwoFactorWebAuthnRequest';\nimport { UpdateTwoFactorYubioOtpRequest } from '../models/request/updateTwoFactorYubioOtpRequest';\nimport { VerifyBankRequest } from '../models/request/verifyBankRequest';\nimport { VerifyDeleteRecoverRequest } from '../models/request/verifyDeleteRecoverRequest';\nimport { VerifyEmailRequest } from '../models/request/verifyEmailRequest';\n\nimport { Utils } from '../misc/utils';\nimport { ApiKeyResponse } from '../models/response/apiKeyResponse';\nimport { AttachmentResponse } from '../models/response/attachmentResponse';\nimport { AttachmentUploadDataResponse } from '../models/response/attachmentUploadDataResponse';\nimport { BillingResponse } from '../models/response/billingResponse';\nimport { BreachAccountResponse } from '../models/response/breachAccountResponse';\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport {\n CollectionGroupDetailsResponse,\n CollectionResponse,\n} from '../models/response/collectionResponse';\nimport { DomainsResponse } from '../models/response/domainsResponse';\nimport {\n EmergencyAccessGranteeDetailsResponse,\n EmergencyAccessGrantorDetailsResponse,\n EmergencyAccessTakeoverResponse,\n EmergencyAccessViewResponse\n} from '../models/response/emergencyAccessResponse';\nimport { ErrorResponse } from '../models/response/errorResponse';\nimport { EventResponse } from '../models/response/eventResponse';\nimport { FolderResponse } from '../models/response/folderResponse';\nimport {\n GroupDetailsResponse,\n GroupResponse,\n} from '../models/response/groupResponse';\nimport { IdentityTokenResponse } from '../models/response/identityTokenResponse';\nimport { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse';\nimport { ListResponse } from '../models/response/listResponse';\nimport { OrganizationKeysResponse } from '../models/response/organizationKeysResponse';\nimport { OrganizationResponse } from '../models/response/organizationResponse';\nimport { OrganizationSubscriptionResponse } from '../models/response/organizationSubscriptionResponse';\nimport { OrganizationUserBulkPublicKeyResponse } from '../models/response/organizationUserBulkPublicKeyResponse';\nimport { OrganizationUserBulkResponse } from '../models/response/organizationUserBulkResponse';\nimport {\n OrganizationUserDetailsResponse,\n OrganizationUserResetPasswordDetailsReponse,\n OrganizationUserUserDetailsResponse,\n} from '../models/response/organizationUserResponse';\nimport { PaymentResponse } from '../models/response/paymentResponse';\nimport { PlanResponse } from '../models/response/planResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { PreloginResponse } from '../models/response/preloginResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { SelectionReadOnlyResponse } from '../models/response/selectionReadOnlyResponse';\nimport { SendAccessResponse } from '../models/response/sendAccessResponse';\nimport { SendFileDownloadDataResponse } from '../models/response/sendFileDownloadDataResponse';\nimport { SendFileUploadDataResponse } from '../models/response/sendFileUploadDataResponse';\nimport { SendResponse } from '../models/response/sendResponse';\nimport { SubscriptionResponse } from '../models/response/subscriptionResponse';\nimport { SyncResponse } from '../models/response/syncResponse';\nimport { TaxInfoResponse } from '../models/response/taxInfoResponse';\nimport { TaxRateResponse } from '../models/response/taxRateResponse';\nimport { TwoFactorAuthenticatorResponse } from '../models/response/twoFactorAuthenticatorResponse';\nimport { TwoFactorDuoResponse } from '../models/response/twoFactorDuoResponse';\nimport { TwoFactorEmailResponse } from '../models/response/twoFactorEmailResponse';\nimport { TwoFactorProviderResponse } from '../models/response/twoFactorProviderResponse';\nimport { TwoFactorRecoverResponse } from '../models/response/twoFactorRescoverResponse';\nimport { TwoFactorWebAuthnResponse } from '../models/response/twoFactorWebAuthnResponse';\nimport { ChallengeResponse } from '../models/response/twoFactorWebAuthnResponse';\nimport { TwoFactorYubiKeyResponse } from '../models/response/twoFactorYubiKeyResponse';\nimport { UserKeyResponse } from '../models/response/userKeyResponse';\n\nimport { SendAccessView } from '../models/view/sendAccessView';\n\nexport class ApiService implements ApiServiceAbstraction {\n urlsSet: boolean = false;\n apiBaseUrl: string;\n identityBaseUrl: string;\n eventsBaseUrl: string;\n\n private device: DeviceType;\n private deviceType: string;\n private isWebClient = false;\n private isDesktopClient = false;\n private usingBaseUrl = false;\n\n constructor(private tokenService: TokenService, private platformUtilsService: PlatformUtilsService,\n private logoutCallback: (expired: boolean) => Promise, private customUserAgent: string = null) {\n this.device = platformUtilsService.getDevice();\n this.deviceType = this.device.toString();\n this.isWebClient = this.device === DeviceType.IEBrowser || this.device === DeviceType.ChromeBrowser ||\n this.device === DeviceType.EdgeBrowser || this.device === DeviceType.FirefoxBrowser ||\n this.device === DeviceType.OperaBrowser || this.device === DeviceType.SafariBrowser ||\n this.device === DeviceType.UnknownBrowser || this.device === DeviceType.VivaldiBrowser;\n this.isDesktopClient = this.device === DeviceType.WindowsDesktop || this.device === DeviceType.MacOsDesktop ||\n this.device === DeviceType.LinuxDesktop;\n }\n\n setUrls(urls: EnvironmentUrls): void {\n this.urlsSet = true;\n\n if (urls.base != null) {\n this.usingBaseUrl = true;\n this.apiBaseUrl = urls.base + '/api';\n this.identityBaseUrl = urls.base + '/identity';\n this.eventsBaseUrl = urls.base + '/events';\n return;\n }\n\n this.apiBaseUrl = urls.api;\n this.identityBaseUrl = urls.identity;\n this.eventsBaseUrl = urls.events;\n\n // Production\n if (this.apiBaseUrl == null) {\n this.apiBaseUrl = 'https://api.bitwarden.com';\n }\n if (this.identityBaseUrl == null) {\n this.identityBaseUrl = 'https://identity.bitwarden.com';\n }\n if (this.eventsBaseUrl == null) {\n this.eventsBaseUrl = 'https://events.bitwarden.com';\n }\n }\n\n // Auth APIs\n\n async postIdentityToken(request: TokenRequest): Promise {\n const headers = new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n 'Accept': 'application/json',\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n request.alterIdentityTokenHeaders(headers);\n const response = await this.fetch(new Request(this.identityBaseUrl + '/connect/token', {\n body: this.qsStringify(request.toIdentityToken(request.clientId ?? this.platformUtilsService.identityClientId)),\n credentials: this.getCredentials(),\n cache: 'no-store',\n headers: headers,\n method: 'POST',\n }));\n\n let responseJson: any = null;\n if (this.isJsonResponse(response)) {\n responseJson = await response.json();\n }\n\n if (responseJson != null) {\n if (response.status === 200) {\n return new IdentityTokenResponse(responseJson);\n } else if (response.status === 400 && responseJson.TwoFactorProviders2 &&\n Object.keys(responseJson.TwoFactorProviders2).length) {\n await this.tokenService.clearTwoFactorToken(request.email);\n return new IdentityTwoFactorResponse(responseJson);\n }\n }\n\n return Promise.reject(new ErrorResponse(responseJson, response.status, true));\n }\n\n async refreshIdentityToken(): Promise {\n try {\n await this.doRefreshToken();\n } catch (e) {\n return Promise.reject(null);\n }\n }\n\n // Account APIs\n\n async getProfile(): Promise {\n const r = await this.send('GET', '/accounts/profile', null, true, true);\n return new ProfileResponse(r);\n }\n\n async getUserBilling(): Promise {\n const r = await this.send('GET', '/accounts/billing', null, true, true);\n return new BillingResponse(r);\n }\n\n async getUserSubscription(): Promise {\n const r = await this.send('GET', '/accounts/subscription', null, true, true);\n return new SubscriptionResponse(r);\n }\n\n async getTaxInfo(): Promise {\n const r = await this.send('GET', '/accounts/tax', null, true, true);\n return new TaxInfoResponse(r);\n }\n\n async putProfile(request: UpdateProfileRequest): Promise {\n const r = await this.send('PUT', '/accounts/profile', request, true, true);\n return new ProfileResponse(r);\n }\n\n putTaxInfo(request: TaxInfoUpdateRequest): Promise {\n return this.send('PUT', '/accounts/tax', request, true, false);\n }\n\n async postPrelogin(request: PreloginRequest): Promise {\n const r = await this.send('POST', '/accounts/prelogin', request, false, true);\n return new PreloginResponse(r);\n }\n\n postEmailToken(request: EmailTokenRequest): Promise {\n return this.send('POST', '/accounts/email-token', request, true, false);\n }\n\n postEmail(request: EmailRequest): Promise {\n return this.send('POST', '/accounts/email', request, true, false);\n }\n\n postPassword(request: PasswordRequest): Promise {\n return this.send('POST', '/accounts/password', request, true, false);\n }\n\n setPassword(request: SetPasswordRequest): Promise {\n return this.send('POST', '/accounts/set-password', request, true, false);\n }\n\n postSecurityStamp(request: PasswordVerificationRequest): Promise {\n return this.send('POST', '/accounts/security-stamp', request, true, false);\n }\n\n deleteAccount(request: PasswordVerificationRequest): Promise {\n return this.send('DELETE', '/accounts', request, true, false);\n }\n\n async getAccountRevisionDate(): Promise {\n const r = await this.send('GET', '/accounts/revision-date', null, true, true);\n return r as number;\n }\n\n postPasswordHint(request: PasswordHintRequest): Promise {\n return this.send('POST', '/accounts/password-hint', request, false, false);\n }\n\n postRegister(request: RegisterRequest): Promise {\n return this.send('POST', '/accounts/register', request, false, false);\n }\n\n async postPremium(data: FormData): Promise {\n const r = await this.send('POST', '/accounts/premium', data, true, true);\n return new PaymentResponse(r);\n }\n\n async postIapCheck(request: IapCheckRequest): Promise {\n return this.send('POST', '/accounts/iap-check', request, true, false);\n }\n\n postReinstatePremium(): Promise {\n return this.send('POST', '/accounts/reinstate-premium', null, true, false);\n }\n\n postCancelPremium(): Promise {\n return this.send('POST', '/accounts/cancel-premium', null, true, false);\n }\n\n async postAccountStorage(request: StorageRequest): Promise {\n const r = await this.send('POST', '/accounts/storage', request, true, true);\n return new PaymentResponse(r);\n }\n\n postAccountPayment(request: PaymentRequest): Promise {\n return this.send('POST', '/accounts/payment', request, true, false);\n }\n\n postAccountLicense(data: FormData): Promise {\n return this.send('POST', '/accounts/license', data, true, false);\n }\n\n postAccountKeys(request: KeysRequest): Promise {\n return this.send('POST', '/accounts/keys', request, true, false);\n }\n\n postAccountKey(request: UpdateKeyRequest): Promise {\n return this.send('POST', '/accounts/key', request, true, false);\n }\n\n postAccountVerifyEmail(): Promise {\n return this.send('POST', '/accounts/verify-email', null, true, false);\n }\n\n postAccountVerifyEmailToken(request: VerifyEmailRequest): Promise {\n return this.send('POST', '/accounts/verify-email-token', request, false, false);\n }\n\n postAccountVerifyPassword(request: PasswordVerificationRequest): Promise {\n return this.send('POST', '/accounts/verify-password', request, true, false);\n }\n\n postAccountRecoverDelete(request: DeleteRecoverRequest): Promise {\n return this.send('POST', '/accounts/delete-recover', request, false, false);\n }\n\n postAccountRecoverDeleteToken(request: VerifyDeleteRecoverRequest): Promise {\n return this.send('POST', '/accounts/delete-recover-token', request, false, false);\n }\n\n postAccountKdf(request: KdfRequest): Promise {\n return this.send('POST', '/accounts/kdf', request, true, false);\n }\n\n async getEnterprisePortalSignInToken(): Promise {\n const r = await this.send('GET', '/accounts/enterprise-portal-signin-token', null, true, true);\n return r as string;\n }\n\n async deleteSsoUser(organizationId: string): Promise {\n return this.send('DELETE', '/accounts/sso/' + organizationId, null, true, false);\n }\n\n async getSsoUserIdentifier(): Promise {\n return this.send('GET', '/accounts/sso/user-identifier', null, true, true);\n }\n\n async postUserApiKey(id: string, request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/accounts/api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postUserRotateApiKey(id: string, request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/accounts/rotate-api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n // Folder APIs\n\n async getFolder(id: string): Promise {\n const r = await this.send('GET', '/folders/' + id, null, true, true);\n return new FolderResponse(r);\n }\n\n async postFolder(request: FolderRequest): Promise {\n const r = await this.send('POST', '/folders', request, true, true);\n return new FolderResponse(r);\n }\n\n async putFolder(id: string, request: FolderRequest): Promise {\n const r = await this.send('PUT', '/folders/' + id, request, true, true);\n return new FolderResponse(r);\n }\n\n deleteFolder(id: string): Promise {\n return this.send('DELETE', '/folders/' + id, null, true, false);\n }\n\n // Send APIs\n\n async getSend(id: string): Promise {\n const r = await this.send('GET', '/sends/' + id, null, true, true);\n return new SendResponse(r);\n }\n\n async postSendAccess(id: string, request: SendAccessRequest, apiUrl?: string): Promise {\n const addSendIdHeader = (headers: Headers) => {\n headers.set('Send-Id', id);\n };\n const r = await this.send('POST', '/sends/access/' + id, request, false, true, apiUrl, addSendIdHeader);\n return new SendAccessResponse(r);\n }\n\n async getSendFileDownloadData(send: SendAccessView, request: SendAccessRequest, apiUrl?: string): Promise {\n const addSendIdHeader = (headers: Headers) => {\n headers.set('Send-Id', send.id);\n };\n const r = await this.send('POST', '/sends/' + send.id + '/access/file/' + send.file.id, request, false, true,\n apiUrl, addSendIdHeader);\n return new SendFileDownloadDataResponse(r);\n }\n\n async getSends(): Promise> {\n const r = await this.send('GET', '/sends', null, true, true);\n return new ListResponse(r, SendResponse);\n }\n\n async postSend(request: SendRequest): Promise {\n const r = await this.send('POST', '/sends', request, true, true);\n return new SendResponse(r);\n }\n\n async postFileTypeSend(request: SendRequest): Promise {\n const r = await this.send('POST', '/sends/file/v2', request, true, true);\n return new SendFileUploadDataResponse(r);\n }\n\n async renewSendFileUploadUrl(sendId: string, fileId: string): Promise {\n const r = await this.send('GET', '/sends/' + sendId + '/file/' + fileId, null, true, true);\n return new SendFileUploadDataResponse(r);\n }\n\n postSendFile(sendId: string, fileId: string, data: FormData): Promise {\n return this.send('POST', '/sends/' + sendId + '/file/' + fileId, data, true, false);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async postSendFileLegacy(data: FormData): Promise {\n const r = await this.send('POST', '/sends/file', data, true, true);\n return new SendResponse(r);\n }\n\n async putSend(id: string, request: SendRequest): Promise {\n const r = await this.send('PUT', '/sends/' + id, request, true, true);\n return new SendResponse(r);\n }\n\n async putSendRemovePassword(id: string): Promise {\n const r = await this.send('PUT', '/sends/' + id + '/remove-password', null, true, true);\n return new SendResponse(r);\n }\n\n deleteSend(id: string): Promise {\n return this.send('DELETE', '/sends/' + id, null, true, false);\n }\n\n // Cipher APIs\n\n async getCipher(id: string): Promise {\n const r = await this.send('GET', '/ciphers/' + id, null, true, true);\n return new CipherResponse(r);\n }\n\n async getCipherAdmin(id: string): Promise {\n const r = await this.send('GET', '/ciphers/' + id + '/admin', null, true, true);\n return new CipherResponse(r);\n }\n\n async getCiphersOrganization(organizationId: string): Promise> {\n const r = await this.send('GET', '/ciphers/organization-details?organizationId=' + organizationId,\n null, true, true);\n return new ListResponse(r, CipherResponse);\n }\n\n async postCipher(request: CipherRequest): Promise {\n const r = await this.send('POST', '/ciphers', request, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherCreate(request: CipherCreateRequest): Promise {\n const r = await this.send('POST', '/ciphers/create', request, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherAdmin(request: CipherCreateRequest): Promise {\n const r = await this.send('POST', '/ciphers/admin', request, true, true);\n return new CipherResponse(r);\n }\n\n async putCipher(id: string, request: CipherRequest): Promise {\n const r = await this.send('PUT', '/ciphers/' + id, request, true, true);\n return new CipherResponse(r);\n }\n\n async putCipherAdmin(id: string, request: CipherRequest): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/admin', request, true, true);\n return new CipherResponse(r);\n }\n\n deleteCipher(id: string): Promise {\n return this.send('DELETE', '/ciphers/' + id, null, true, false);\n }\n\n deleteCipherAdmin(id: string): Promise {\n return this.send('DELETE', '/ciphers/' + id + '/admin', null, true, false);\n }\n\n deleteManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send('DELETE', '/ciphers', request, true, false);\n }\n\n deleteManyCiphersAdmin(request: CipherBulkDeleteRequest): Promise {\n return this.send('DELETE', '/ciphers/admin', request, true, false);\n }\n\n putMoveCiphers(request: CipherBulkMoveRequest): Promise {\n return this.send('PUT', '/ciphers/move', request, true, false);\n }\n\n async putShareCipher(id: string, request: CipherShareRequest): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/share', request, true, true);\n return new CipherResponse(r);\n }\n\n putShareCiphers(request: CipherBulkShareRequest): Promise {\n return this.send('PUT', '/ciphers/share', request, true, false);\n }\n\n putCipherCollections(id: string, request: CipherCollectionsRequest): Promise {\n return this.send('PUT', '/ciphers/' + id + '/collections', request, true, false);\n }\n\n putCipherCollectionsAdmin(id: string, request: CipherCollectionsRequest): Promise {\n return this.send('PUT', '/ciphers/' + id + '/collections-admin', request, true, false);\n }\n\n postPurgeCiphers(request: PasswordVerificationRequest, organizationId: string = null): Promise {\n let path = '/ciphers/purge';\n if (organizationId != null) {\n path += '?organizationId=' + organizationId;\n }\n return this.send('POST', path, request, true, false);\n }\n\n postImportCiphers(request: ImportCiphersRequest): Promise {\n return this.send('POST', '/ciphers/import', request, true, false);\n }\n\n postImportOrganizationCiphers(organizationId: string, request: ImportOrganizationCiphersRequest): Promise {\n return this.send('POST', '/ciphers/import-organization?organizationId=' + organizationId, request, true, false);\n }\n\n putDeleteCipher(id: string): Promise {\n return this.send('PUT', '/ciphers/' + id + '/delete', null, true, false);\n }\n\n putDeleteCipherAdmin(id: string): Promise {\n return this.send('PUT', '/ciphers/' + id + '/delete-admin', null, true, false);\n }\n\n putDeleteManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send('PUT', '/ciphers/delete', request, true, false);\n }\n\n putDeleteManyCiphersAdmin(request: CipherBulkDeleteRequest): Promise {\n return this.send('PUT', '/ciphers/delete-admin', request, true, false);\n }\n\n async putRestoreCipher(id: string): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/restore', null, true, true);\n return new CipherResponse(r);\n }\n\n async putRestoreCipherAdmin(id: string): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/restore-admin', null, true, true);\n return new CipherResponse(r);\n }\n\n async putRestoreManyCiphers(request: CipherBulkDeleteRequest): Promise> {\n const r = await this.send('PUT', '/ciphers/restore', request, true, true);\n return new ListResponse(r, CipherResponse);\n }\n\n // Attachments APIs\n\n async getAttachmentData(cipherId: string, attachmentId: string, emergencyAccessId?: string): Promise {\n const path = (emergencyAccessId != null ?\n '/emergency-access/' + emergencyAccessId + '/' :\n '/ciphers/') + cipherId + '/attachment/' + attachmentId;\n const r = await this.send('GET', path, null, true, true);\n return new AttachmentResponse(r);\n }\n\n async postCipherAttachment(id: string, request: AttachmentRequest): Promise {\n const r = await this.send('POST', '/ciphers/' + id + '/attachment/v2', request, true, true);\n return new AttachmentUploadDataResponse(r);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async postCipherAttachmentLegacy(id: string, data: FormData): Promise {\n const r = await this.send('POST', '/ciphers/' + id + '/attachment', data, true, true);\n return new CipherResponse(r);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async postCipherAttachmentAdminLegacy(id: string, data: FormData): Promise {\n const r = await this.send('POST', '/ciphers/' + id + '/attachment-admin', data, true, true);\n return new CipherResponse(r);\n }\n\n deleteCipherAttachment(id: string, attachmentId: string): Promise {\n return this.send('DELETE', '/ciphers/' + id + '/attachment/' + attachmentId, null, true, false);\n }\n\n deleteCipherAttachmentAdmin(id: string, attachmentId: string): Promise {\n return this.send('DELETE', '/ciphers/' + id + '/attachment/' + attachmentId + '/admin', null, true, false);\n }\n\n postShareCipherAttachment(id: string, attachmentId: string, data: FormData,\n organizationId: string): Promise {\n return this.send('POST', '/ciphers/' + id + '/attachment/' +\n attachmentId + '/share?organizationId=' + organizationId, data, true, false);\n }\n\n async renewAttachmentUploadUrl(id: string, attachmentId: string): Promise {\n const r = await this.send('GET', '/ciphers/' + id + '/attachment/' + attachmentId + '/renew', null, true, true);\n return new AttachmentUploadDataResponse(r);\n }\n\n postAttachmentFile(id: string, attachmentId: string, data: FormData): Promise {\n return this.send('POST', '/ciphers/' + id + '/attachment/' + attachmentId, data, true, false);\n }\n\n // Collections APIs\n\n async getCollectionDetails(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/collections/' + id + '/details',\n null, true, true);\n return new CollectionGroupDetailsResponse(r);\n }\n\n async getUserCollections(): Promise> {\n const r = await this.send('GET', '/collections', null, true, true);\n return new ListResponse(r, CollectionResponse);\n }\n\n async getCollections(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/collections', null, true, true);\n return new ListResponse(r, CollectionResponse);\n }\n\n async getCollectionUsers(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/collections/' + id + '/users',\n null, true, true);\n return r.map((dr: any) => new SelectionReadOnlyResponse(dr));\n }\n\n async postCollection(organizationId: string, request: CollectionRequest): Promise {\n const r = await this.send('POST', '/organizations/' + organizationId + '/collections', request, true, true);\n return new CollectionResponse(r);\n }\n\n async putCollection(organizationId: string, id: string, request: CollectionRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/collections/' + id,\n request, true, true);\n return new CollectionResponse(r);\n }\n\n async putCollectionUsers(organizationId: string, id: string, request: SelectionReadOnlyRequest[]): Promise {\n await this.send('PUT', '/organizations/' + organizationId + '/collections/' + id + '/users',\n request, true, false);\n }\n\n deleteCollection(organizationId: string, id: string): Promise {\n return this.send('DELETE', '/organizations/' + organizationId + '/collections/' + id, null, true, false);\n }\n\n deleteCollectionUser(organizationId: string, id: string, organizationUserId: string): Promise {\n return this.send('DELETE',\n '/organizations/' + organizationId + '/collections/' + id + '/user/' + organizationUserId,\n null, true, false);\n }\n\n // Groups APIs\n\n async getGroupDetails(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/groups/' + id + '/details',\n null, true, true);\n return new GroupDetailsResponse(r);\n }\n\n async getGroups(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/groups', null, true, true);\n return new ListResponse(r, GroupResponse);\n }\n\n async getGroupUsers(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/groups/' + id + '/users',\n null, true, true);\n return r;\n }\n\n async postGroup(organizationId: string, request: GroupRequest): Promise {\n const r = await this.send('POST', '/organizations/' + organizationId + '/groups', request, true, true);\n return new GroupResponse(r);\n }\n\n async putGroup(organizationId: string, id: string, request: GroupRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/groups/' + id, request, true, true);\n return new GroupResponse(r);\n }\n\n async putGroupUsers(organizationId: string, id: string, request: string[]): Promise {\n await this.send('PUT', '/organizations/' + organizationId + '/groups/' + id + '/users', request, true, false);\n }\n\n deleteGroup(organizationId: string, id: string): Promise {\n return this.send('DELETE', '/organizations/' + organizationId + '/groups/' + id, null, true, false);\n }\n\n deleteGroupUser(organizationId: string, id: string, organizationUserId: string): Promise {\n return this.send('DELETE',\n '/organizations/' + organizationId + '/groups/' + id + '/user/' + organizationUserId, null, true, false);\n }\n\n // Policy APIs\n\n async getPolicy(organizationId: string, type: PolicyType): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/policies/' + type, null, true, true);\n return new PolicyResponse(r);\n }\n\n async getPolicies(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/policies', null, true, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n async getPoliciesByToken(organizationId: string, token: string, email: string, organizationUserId: string):\n Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/policies/token?' +\n 'token=' + encodeURIComponent(token) + '&email=' + encodeURIComponent(email) +\n '&organizationUserId=' + organizationUserId, null, false, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n async putPolicy(organizationId: string, type: PolicyType, request: PolicyRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/policies/' + type, request, true, true);\n return new PolicyResponse(r);\n }\n\n // Organization User APIs\n\n async getOrganizationUser(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users/' + id, null, true, true);\n return new OrganizationUserDetailsResponse(r);\n }\n\n async getOrganizationUserGroups(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users/' + id + '/groups',\n null, true, true);\n return r;\n }\n\n async getOrganizationUsers(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users', null, true, true);\n return new ListResponse(r, OrganizationUserUserDetailsResponse);\n }\n\n async getOrganizationUserResetPasswordDetails(organizationId: string, id: string):\n Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users/' + id +\n '/reset-password-details', null, true, true);\n return new OrganizationUserResetPasswordDetailsReponse(r);\n }\n\n postOrganizationUserInvite(organizationId: string, request: OrganizationUserInviteRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/invite', request, true, false);\n }\n\n postOrganizationUserReinvite(organizationId: string, id: string): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/' + id + '/reinvite', null, true, false);\n }\n\n async postManyOrganizationUserReinvite(organizationId: string, request: OrganizationUserBulkRequest): Promise> {\n const r = await this.send('POST', '/organizations/' + organizationId + '/users/reinvite', request, true, true);\n return new ListResponse(r, OrganizationUserBulkResponse);\n }\n\n postOrganizationUserAccept(organizationId: string, id: string,\n request: OrganizationUserAcceptRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/' + id + '/accept', request, true, false);\n }\n\n postOrganizationUserConfirm(organizationId: string, id: string,\n request: OrganizationUserConfirmRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/' + id + '/confirm',\n request, true, false);\n }\n\n async postOrganizationUsersPublicKey(organizationId: string, request: OrganizationUserBulkRequest): Promise> {\n const r = await this.send('POST', '/organizations/' + organizationId + '/users/public-keys', request, true, true);\n return new ListResponse(r, OrganizationUserBulkPublicKeyResponse);\n }\n\n async postOrganizationUserBulkConfirm(organizationId: string, request: OrganizationUserBulkConfirmRequest): Promise> {\n const r = await this.send('POST', '/organizations/' + organizationId + '/users/confirm', request, true, true);\n return new ListResponse(r, OrganizationUserBulkResponse);\n }\n\n putOrganizationUser(organizationId: string, id: string, request: OrganizationUserUpdateRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + id, request, true, false);\n }\n\n putOrganizationUserGroups(organizationId: string, id: string,\n request: OrganizationUserUpdateGroupsRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + id + '/groups', request, true, false);\n }\n\n putOrganizationUserResetPasswordEnrollment(organizationId: string, userId: string,\n request: OrganizationUserResetPasswordEnrollmentRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + userId + '/reset-password-enrollment',\n request, true, false);\n }\n\n putOrganizationUserResetPassword(organizationId: string, id: string,\n request: OrganizationUserResetPasswordRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + id + '/reset-password',\n request, true, false);\n }\n\n deleteOrganizationUser(organizationId: string, id: string): Promise {\n return this.send('DELETE', '/organizations/' + organizationId + '/users/' + id, null, true, false);\n }\n\n async deleteManyOrganizationUsers(organizationId: string, request: OrganizationUserBulkRequest): Promise> {\n const r = await this.send('DELETE', '/organizations/' + organizationId + '/users', request, true, true);\n return new ListResponse(r, OrganizationUserBulkResponse);\n }\n\n // Plan APIs\n\n async getPlans(): Promise> {\n const r = await this.send('GET', '/plans/', null, true, true);\n return new ListResponse(r, PlanResponse);\n }\n\n async postImportDirectory(organizationId: string, request: ImportDirectoryRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/import', request, true, false);\n }\n\n async postPublicImportDirectory(request: OrganizationImportRequest): Promise {\n return this.send('POST', '/public/organization/import', request, true, false);\n }\n\n async getTaxRates(): Promise> {\n const r = await this.send('GET', '/plans/sales-tax-rates/', null, true, true);\n return new ListResponse(r, TaxRateResponse);\n }\n\n // Settings APIs\n\n async getSettingsDomains(): Promise {\n const r = await this.send('GET', '/settings/domains', null, true, true);\n return new DomainsResponse(r);\n }\n\n async putSettingsDomains(request: UpdateDomainsRequest): Promise {\n const r = await this.send('PUT', '/settings/domains', request, true, true);\n return new DomainsResponse(r);\n }\n\n // Sync APIs\n\n async getSync(): Promise {\n const path = this.isDesktopClient || this.isWebClient ? '/sync?excludeDomains=true' : '/sync';\n const r = await this.send('GET', path, null, true, true);\n return new SyncResponse(r);\n }\n\n // Two-factor APIs\n\n async getTwoFactorProviders(): Promise> {\n const r = await this.send('GET', '/two-factor', null, true, true);\n return new ListResponse(r, TwoFactorProviderResponse);\n }\n\n async getTwoFactorOrganizationProviders(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/two-factor', null, true, true);\n return new ListResponse(r, TwoFactorProviderResponse);\n }\n\n async getTwoFactorAuthenticator(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-authenticator', request, true, true);\n return new TwoFactorAuthenticatorResponse(r);\n }\n\n async getTwoFactorEmail(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-email', request, true, true);\n return new TwoFactorEmailResponse(r);\n }\n\n async getTwoFactorDuo(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-duo', request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async getTwoFactorOrganizationDuo(organizationId: string,\n request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/organizations/' + organizationId + '/two-factor/get-duo',\n request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async getTwoFactorYubiKey(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-yubikey', request, true, true);\n return new TwoFactorYubiKeyResponse(r);\n }\n\n async getTwoFactorWebAuthn(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-webauthn', request, true, true);\n return new TwoFactorWebAuthnResponse(r);\n }\n\n async getTwoFactorWebAuthnChallenge(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-webauthn-challenge', request, true, true);\n return new ChallengeResponse(r);\n }\n\n async getTwoFactorRecover(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-recover', request, true, true);\n return new TwoFactorRecoverResponse(r);\n }\n\n async putTwoFactorAuthenticator(\n request: UpdateTwoFactorAuthenticatorRequest): Promise {\n const r = await this.send('PUT', '/two-factor/authenticator', request, true, true);\n return new TwoFactorAuthenticatorResponse(r);\n }\n\n async putTwoFactorEmail(request: UpdateTwoFactorEmailRequest): Promise {\n const r = await this.send('PUT', '/two-factor/email', request, true, true);\n return new TwoFactorEmailResponse(r);\n }\n\n async putTwoFactorDuo(request: UpdateTwoFactorDuoRequest): Promise {\n const r = await this.send('PUT', '/two-factor/duo', request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async putTwoFactorOrganizationDuo(organizationId: string,\n request: UpdateTwoFactorDuoRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/two-factor/duo', request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async putTwoFactorYubiKey(request: UpdateTwoFactorYubioOtpRequest): Promise {\n const r = await this.send('PUT', '/two-factor/yubikey', request, true, true);\n return new TwoFactorYubiKeyResponse(r);\n }\n\n async putTwoFactorWebAuthn(request: UpdateTwoFactorWebAuthnRequest): Promise {\n const response = request.deviceResponse.response as AuthenticatorAttestationResponse;\n const data: any = Object.assign({}, request);\n\n data.deviceResponse = {\n id: request.deviceResponse.id,\n rawId: btoa(request.deviceResponse.id),\n type: request.deviceResponse.type,\n extensions: request.deviceResponse.getClientExtensionResults(),\n response: {\n AttestationObject: Utils.fromBufferToB64(response.attestationObject),\n clientDataJson: Utils.fromBufferToB64(response.clientDataJSON),\n },\n };\n\n const r = await this.send('PUT', '/two-factor/webauthn', data, true, true);\n return new TwoFactorWebAuthnResponse(r);\n }\n\n async deleteTwoFactorWebAuthn(request: UpdateTwoFactorWebAuthnDeleteRequest): Promise {\n const r = await this.send('DELETE', '/two-factor/webauthn', request, true, true);\n return new TwoFactorWebAuthnResponse(r);\n }\n\n async putTwoFactorDisable(request: TwoFactorProviderRequest): Promise {\n const r = await this.send('PUT', '/two-factor/disable', request, true, true);\n return new TwoFactorProviderResponse(r);\n }\n\n async putTwoFactorOrganizationDisable(organizationId: string,\n request: TwoFactorProviderRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/two-factor/disable',\n request, true, true);\n return new TwoFactorProviderResponse(r);\n }\n\n postTwoFactorRecover(request: TwoFactorRecoveryRequest): Promise {\n return this.send('POST', '/two-factor/recover', request, false, false);\n }\n\n postTwoFactorEmailSetup(request: TwoFactorEmailRequest): Promise {\n return this.send('POST', '/two-factor/send-email', request, true, false);\n }\n\n postTwoFactorEmail(request: TwoFactorEmailRequest): Promise {\n return this.send('POST', '/two-factor/send-email-login', request, false, false);\n }\n\n // Emergency Access APIs\n\n async getEmergencyAccessTrusted(): Promise> {\n const r = await this.send('GET', '/emergency-access/trusted', null, true, true);\n return new ListResponse(r, EmergencyAccessGranteeDetailsResponse);\n }\n\n async getEmergencyAccessGranted(): Promise> {\n const r = await this.send('GET', '/emergency-access/granted', null, true, true);\n return new ListResponse(r, EmergencyAccessGrantorDetailsResponse);\n }\n\n async getEmergencyAccess(id: string): Promise {\n const r = await this.send('GET', '/emergency-access/' + id, null, true, true);\n return new EmergencyAccessGranteeDetailsResponse(r);\n }\n\n async getEmergencyGrantorPolicies(id: string): Promise> {\n const r = await this.send('GET', '/emergency-access/' + id + '/policies', null, true, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n putEmergencyAccess(id: string, request: EmergencyAccessUpdateRequest): Promise {\n return this.send('PUT', '/emergency-access/' + id, request, true, false);\n }\n\n deleteEmergencyAccess(id: string): Promise {\n return this.send('DELETE', '/emergency-access/' + id, null, true, false);\n }\n\n postEmergencyAccessInvite(request: EmergencyAccessInviteRequest): Promise {\n return this.send('POST', '/emergency-access/invite', request, true, false);\n }\n\n postEmergencyAccessReinvite(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/reinvite', null, true, false);\n }\n\n postEmergencyAccessAccept(id: string, request: EmergencyAccessAcceptRequest): Promise {\n return this.send('POST', '/emergency-access/' + id + '/accept', request, true, false);\n }\n\n postEmergencyAccessConfirm(id: string, request: EmergencyAccessConfirmRequest): Promise {\n return this.send('POST', '/emergency-access/' + id + '/confirm', request, true, false);\n }\n\n postEmergencyAccessInitiate(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/initiate', null, true, false);\n }\n\n postEmergencyAccessApprove(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/approve', null, true, false);\n }\n\n postEmergencyAccessReject(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/reject', null, true, false);\n }\n\n async postEmergencyAccessTakeover(id: string): Promise {\n const r = await this.send('POST', '/emergency-access/' + id + '/takeover', null, true, true);\n return new EmergencyAccessTakeoverResponse(r);\n }\n\n async postEmergencyAccessPassword(id: string, request: EmergencyAccessPasswordRequest): Promise {\n const r = await this.send('POST', '/emergency-access/' + id + '/password', request, true, true);\n }\n\n async postEmergencyAccessView(id: string): Promise {\n const r = await this.send('POST', '/emergency-access/' + id + '/view', null, true, true);\n return new EmergencyAccessViewResponse(r);\n }\n\n // Organization APIs\n\n async getOrganization(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id, null, true, true);\n return new OrganizationResponse(r);\n }\n\n async getOrganizationBilling(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/billing', null, true, true);\n return new BillingResponse(r);\n }\n\n async getOrganizationSubscription(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/subscription', null, true, true);\n return new OrganizationSubscriptionResponse(r);\n }\n\n async getOrganizationLicense(id: string, installationId: string): Promise {\n return this.send('GET', '/organizations/' + id + '/license?installationId=' + installationId,\n null, true, true);\n }\n\n async getOrganizationTaxInfo(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/tax', null, true, true);\n return new TaxInfoResponse(r);\n }\n\n async postOrganization(request: OrganizationCreateRequest): Promise {\n const r = await this.send('POST', '/organizations', request, true, true);\n return new OrganizationResponse(r);\n }\n\n async putOrganization(id: string, request: OrganizationUpdateRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + id, request, true, true);\n return new OrganizationResponse(r);\n }\n\n async putOrganizationTaxInfo(id: string, request: OrganizationTaxInfoUpdateRequest): Promise {\n return this.send('PUT', '/organizations/' + id + '/tax', request, true, false);\n }\n\n postLeaveOrganization(id: string): Promise {\n return this.send('POST', '/organizations/' + id + '/leave', null, true, false);\n }\n\n async postOrganizationLicense(data: FormData): Promise {\n const r = await this.send('POST', '/organizations/license', data, true, true);\n return new OrganizationResponse(r);\n }\n\n async postOrganizationLicenseUpdate(id: string, data: FormData): Promise {\n return this.send('POST', '/organizations/' + id + '/license', data, true, false);\n }\n\n async postOrganizationApiKey(id: string, request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postOrganizationRotateApiKey(id: string, request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/rotate-api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postOrganizationUpgrade(id: string, request: OrganizationUpgradeRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/upgrade', request, true, true);\n return new PaymentResponse(r);\n }\n\n async postOrganizationSeat(id: string, request: SeatRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/seat', request, true, true);\n return new PaymentResponse(r);\n }\n\n async postOrganizationStorage(id: string, request: StorageRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/storage', request, true, true);\n return new PaymentResponse(r);\n }\n\n postOrganizationPayment(id: string, request: PaymentRequest): Promise {\n return this.send('POST', '/organizations/' + id + '/payment', request, true, false);\n }\n\n postOrganizationVerifyBank(id: string, request: VerifyBankRequest): Promise {\n return this.send('POST', '/organizations/' + id + '/verify-bank', request, true, false);\n }\n\n postOrganizationCancel(id: string): Promise {\n return this.send('POST', '/organizations/' + id + '/cancel', null, true, false);\n }\n\n postOrganizationReinstate(id: string): Promise {\n return this.send('POST', '/organizations/' + id + '/reinstate', null, true, false);\n }\n\n deleteOrganization(id: string, request: PasswordVerificationRequest): Promise {\n return this.send('DELETE', '/organizations/' + id, request, true, false);\n }\n\n async getOrganizationKeys(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/keys', null, true, true);\n return new OrganizationKeysResponse(r);\n }\n\n async postOrganizationKeys(id: string, request: OrganizationKeysRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/keys', request, true, true);\n return new OrganizationKeysResponse(r);\n }\n\n // Event APIs\n\n async getEvents(start: string, end: string, token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/events', start, end, token), null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsCipher(id: string, start: string, end: string,\n token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/ciphers/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsOrganization(id: string, start: string, end: string,\n token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/organizations/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsOrganizationUser(organizationId: string, id: string,\n start: string, end: string, token: string): Promise> {\n const r = await this.send('GET',\n this.addEventParameters('/organizations/' + organizationId + '/users/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async postEventsCollect(request: EventRequest[]): Promise {\n const authHeader = await this.getActiveBearerToken();\n const headers = new Headers({\n 'Device-Type': this.deviceType,\n 'Authorization': 'Bearer ' + authHeader,\n 'Content-Type': 'application/json; charset=utf-8',\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n const response = await this.fetch(new Request(this.eventsBaseUrl + '/collect', {\n cache: 'no-store',\n credentials: this.getCredentials(),\n method: 'POST',\n body: JSON.stringify(request),\n headers: headers,\n }));\n if (response.status !== 200) {\n return Promise.reject('Event post failed.');\n }\n }\n\n // User APIs\n\n async getUserPublicKey(id: string): Promise {\n const r = await this.send('GET', '/users/' + id + '/public-key', null, true, true);\n return new UserKeyResponse(r);\n }\n\n // HIBP APIs\n\n async getHibpBreach(username: string): Promise {\n const r = await this.send('GET', '/hibp/breach?username=' + username, null, true, true);\n return r.map((a: any) => new BreachAccountResponse(a));\n }\n\n // Misc\n\n async postBitPayInvoice(request: BitPayInvoiceRequest): Promise {\n const r = await this.send('POST', '/bitpay-invoice', request, true, true);\n return r as string;\n }\n\n async postSetupPayment(): Promise {\n const r = await this.send('POST', '/setup-payment', null, true, true);\n return r as string;\n }\n\n // Helpers\n\n async getActiveBearerToken(): Promise {\n let accessToken = await this.tokenService.getToken();\n if (this.tokenService.tokenNeedsRefresh()) {\n await this.doRefreshToken();\n accessToken = await this.tokenService.getToken();\n }\n return accessToken;\n }\n\n fetch(request: Request): Promise {\n if (request.method === 'GET') {\n request.headers.set('Cache-Control', 'no-store');\n request.headers.set('Pragma', 'no-cache');\n }\n return this.nativeFetch(request);\n }\n\n nativeFetch(request: Request): Promise {\n return fetch(request);\n }\n\n async preValidateSso(identifier: string): Promise {\n if (identifier == null || identifier === '') {\n throw new Error('Organization Identifier was not provided.');\n }\n const headers = new Headers({\n 'Accept': 'application/json',\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n\n const path = `/account/prevalidate?domainHint=${encodeURIComponent(identifier)}`;\n const response = await this.fetch(new Request(this.identityBaseUrl + path, {\n cache: 'no-store',\n credentials: this.getCredentials(),\n headers: headers,\n method: 'GET',\n }));\n\n if (response.status === 200) {\n return true;\n } else {\n const error = await this.handleError(response, false, true);\n return Promise.reject(error);\n }\n }\n\n protected async doRefreshToken(): Promise {\n const refreshToken = await this.tokenService.getRefreshToken();\n if (refreshToken == null || refreshToken === '') {\n throw new Error();\n }\n const headers = new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n 'Accept': 'application/json',\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n\n const decodedToken = this.tokenService.decodeToken();\n const response = await this.fetch(new Request(this.identityBaseUrl + '/connect/token', {\n body: this.qsStringify({\n grant_type: 'refresh_token',\n client_id: decodedToken.client_id,\n refresh_token: refreshToken,\n }),\n cache: 'no-store',\n credentials: this.getCredentials(),\n headers: headers,\n method: 'POST',\n }));\n\n if (response.status === 200) {\n const responseJson = await response.json();\n const tokenResponse = new IdentityTokenResponse(responseJson);\n await this.tokenService.setTokens(tokenResponse.accessToken, tokenResponse.refreshToken);\n } else {\n const error = await this.handleError(response, true, true);\n return Promise.reject(error);\n }\n }\n\n private async send(method: 'GET' | 'POST' | 'PUT' | 'DELETE', path: string, body: any,\n authed: boolean, hasResponse: boolean, apiUrl?: string,\n alterHeaders?: (headers: Headers) => void): Promise {\n apiUrl = Utils.isNullOrWhitespace(apiUrl) ? this.apiBaseUrl : apiUrl;\n const headers = new Headers({\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n\n const requestInit: RequestInit = {\n cache: 'no-store',\n credentials: this.getCredentials(),\n method: method,\n };\n\n if (authed) {\n const authHeader = await this.getActiveBearerToken();\n headers.set('Authorization', 'Bearer ' + authHeader);\n }\n if (body != null) {\n if (typeof body === 'string') {\n requestInit.body = body;\n headers.set('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');\n } else if (typeof body === 'object') {\n if (body instanceof FormData) {\n requestInit.body = body;\n } else {\n headers.set('Content-Type', 'application/json; charset=utf-8');\n requestInit.body = JSON.stringify(body);\n }\n }\n }\n if (hasResponse) {\n headers.set('Accept', 'application/json');\n }\n if (alterHeaders != null) {\n alterHeaders(headers);\n }\n\n requestInit.headers = headers;\n const response = await this.fetch(new Request(apiUrl + path, requestInit));\n\n if (hasResponse && response.status === 200) {\n const responseJson = await response.json();\n return responseJson;\n } else if (response.status !== 200) {\n const error = await this.handleError(response, false, authed);\n return Promise.reject(error);\n }\n }\n\n private async handleError(response: Response, tokenError: boolean, authed: boolean): Promise {\n if (authed && ((tokenError && response.status === 400) || response.status === 401 || response.status === 403)) {\n await this.logoutCallback(true);\n return null;\n }\n\n let responseJson: any = null;\n if (this.isJsonResponse(response)) {\n responseJson = await response.json();\n } else if (this.isTextResponse(response)) {\n responseJson = { Message: await response.text() };\n }\n\n return new ErrorResponse(responseJson, response.status, tokenError);\n }\n\n private qsStringify(params: any): string {\n return Object.keys(params).map(key => {\n return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);\n }).join('&');\n }\n\n private getCredentials(): RequestCredentials {\n if (!this.isWebClient || this.usingBaseUrl) {\n return 'include';\n }\n return undefined;\n }\n\n private addEventParameters(base: string, start: string, end: string, token: string) {\n if (start != null) {\n base += ('?start=' + start);\n }\n if (end != null) {\n base += (base.indexOf('?') > -1 ? '&' : '?');\n base += ('end=' + end);\n }\n if (token != null) {\n base += (base.indexOf('?') > -1 ? '&' : '?');\n base += ('continuationToken=' + token);\n }\n return base;\n }\n\n private isJsonResponse(response: Response): boolean {\n const typeHeader = response.headers.get('content-type');\n return typeHeader != null && typeHeader.indexOf('application/json') > -1;\n }\n\n private isTextResponse(response: Response): boolean {\n const typeHeader = response.headers.get('content-type');\n return typeHeader != null && typeHeader.indexOf('text') > -1;\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { PlanResponse } from './planResponse';\n\nimport { PlanType } from '../../enums/planType';\n\nexport class OrganizationResponse extends BaseResponse {\n id: string;\n identifier: string;\n name: string;\n businessName: string;\n businessAddress1: string;\n businessAddress2: string;\n businessAddress3: string;\n businessCountry: string;\n businessTaxNumber: string;\n billingEmail: string;\n plan: PlanResponse;\n planType: PlanType;\n seats: number;\n maxCollections: number;\n maxStorageGb: number;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useResetPassword: boolean;\n hasPublicAndPrivateKeys: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.identifier = this.getResponseProperty('Identifier');\n this.name = this.getResponseProperty('Name');\n this.businessName = this.getResponseProperty('BusinessName');\n this.businessAddress1 = this.getResponseProperty('BusinessAddress1');\n this.businessAddress2 = this.getResponseProperty('BusinessAddress2');\n this.businessAddress3 = this.getResponseProperty('BusinessAddress3');\n this.businessCountry = this.getResponseProperty('BusinessCountry');\n this.businessTaxNumber = this.getResponseProperty('BusinessTaxNumber');\n this.billingEmail = this.getResponseProperty('BillingEmail');\n const plan = this.getResponseProperty('Plan');\n this.plan = plan == null ? null : new PlanResponse(plan);\n this.planType = this.getResponseProperty('PlanType');\n this.seats = this.getResponseProperty('Seats');\n this.maxCollections = this.getResponseProperty('MaxCollections');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.useGroups = this.getResponseProperty('UseGroups');\n this.useDirectory = this.getResponseProperty('UseDirectory');\n this.useEvents = this.getResponseProperty('UseEvents');\n this.useTotp = this.getResponseProperty('UseTotp');\n this.use2fa = this.getResponseProperty('Use2fa');\n this.useApi = this.getResponseProperty('UseApi');\n this.useResetPassword = this.getResponseProperty('UseResetPassword');\n this.hasPublicAndPrivateKeys = this.getResponseProperty('HasPublicAndPrivateKeys');\n }\n}\n","import { PlanType } from '../../enums/planType';\nimport { ProductType } from '../../enums/productType';\n\nimport { BaseResponse } from './baseResponse';\n\nexport class PlanResponse extends BaseResponse {\n type: PlanType;\n product: ProductType;\n name: string;\n isAnnual: boolean;\n nameLocalizationKey: string;\n descriptionLocalizationKey: string;\n canBeUsedByBusiness: boolean;\n baseSeats: number;\n baseStorageGb: number;\n maxCollections: number;\n maxUsers: number;\n\n hasAdditionalSeatsOption: boolean;\n maxAdditionalSeats: number;\n hasAdditionalStorageOption: boolean;\n maxAdditionalStorage: number;\n hasPremiumAccessOption: boolean;\n trialPeriodDays: number;\n\n hasSelfHost: boolean;\n hasPolicies: boolean;\n hasGroups: boolean;\n hasDirectory: boolean;\n hasEvents: boolean;\n hasTotp: boolean;\n has2fa: boolean;\n hasApi: boolean;\n hasSso: boolean;\n hasResetPassword: boolean;\n usersGetPremium: boolean;\n\n upgradeSortOrder: number;\n displaySortOrder: number;\n legacyYear: number;\n disabled: boolean;\n\n stripePlanId: string;\n stripeSeatPlanId: string;\n stripeStoragePlanId: string;\n stripePremiumAccessPlanId: string;\n basePrice: number;\n seatPrice: number;\n additionalStoragePricePerGb: number;\n premiumAccessOptionPrice: number;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.product = this.getResponseProperty('Product');\n this.name = this.getResponseProperty('Name');\n this.isAnnual = this.getResponseProperty('IsAnnual');\n this.nameLocalizationKey = this.getResponseProperty('NameLocalizationKey');\n this.descriptionLocalizationKey = this.getResponseProperty('DescriptionLocalizationKey');\n this.canBeUsedByBusiness = this.getResponseProperty('CanBeUsedByBusiness');\n this.baseSeats = this.getResponseProperty('BaseSeats');\n this.baseStorageGb = this.getResponseProperty('BaseStorageGb');\n this.maxCollections = this.getResponseProperty('MaxCollections');\n this.maxUsers = this.getResponseProperty('MaxUsers');\n this.hasAdditionalSeatsOption = this.getResponseProperty('HasAdditionalSeatsOption');\n this.maxAdditionalSeats = this.getResponseProperty('MaxAdditionalSeats');\n this.hasAdditionalStorageOption = this.getResponseProperty('HasAdditionalStorageOption');\n this.maxAdditionalStorage = this.getResponseProperty('MaxAdditionalStorage');\n this.hasPremiumAccessOption = this.getResponseProperty('HasPremiumAccessOption');\n this.trialPeriodDays = this.getResponseProperty('TrialPeriodDays');\n this.hasSelfHost = this.getResponseProperty('HasSelfHost');\n this.hasPolicies = this.getResponseProperty('HasPolicies');\n this.hasGroups = this.getResponseProperty('HasGroups');\n this.hasDirectory = this.getResponseProperty('HasDirectory');\n this.hasEvents = this.getResponseProperty('HasEvents');\n this.hasTotp = this.getResponseProperty('HasTotp');\n this.has2fa = this.getResponseProperty('Has2fa');\n this.hasApi = this.getResponseProperty('HasApi');\n this.hasSso = this.getResponseProperty('HasSso');\n this.hasResetPassword = this.getResponseProperty('HasResetPassword');\n this.usersGetPremium = this.getResponseProperty('UsersGetPremium');\n this.upgradeSortOrder = this.getResponseProperty('UpgradeSortOrder');\n this.displaySortOrder = this.getResponseProperty('SortOrder');\n this.legacyYear = this.getResponseProperty('LegacyYear');\n this.disabled = this.getResponseProperty('Disabled');\n this.stripePlanId = this.getResponseProperty('StripePlanId');\n this.stripeSeatPlanId = this.getResponseProperty('StripeSeatPlanId');\n this.stripeStoragePlanId = this.getResponseProperty('StripeStoragePlanId');\n this.stripePremiumAccessPlanId = this.getResponseProperty('StripePremiumAccessPlanId');\n this.basePrice = this.getResponseProperty('BasePrice');\n this.seatPrice = this.getResponseProperty('SeatPrice');\n this.additionalStoragePricePerGb = this.getResponseProperty('AdditionalStoragePricePerGb');\n this.premiumAccessOptionPrice = this.getResponseProperty('PremiumAccessOptionPrice');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class SubscriptionResponse extends BaseResponse {\n storageName: string;\n storageGb: number;\n maxStorageGb: number;\n subscription: BillingSubscriptionResponse;\n upcomingInvoice: BillingSubscriptionUpcomingInvoiceResponse;\n license: any;\n expiration: string;\n usingInAppPurchase: boolean;\n\n constructor(response: any) {\n super(response);\n this.storageName = this.getResponseProperty('StorageName');\n this.storageGb = this.getResponseProperty('StorageGb');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.license = this.getResponseProperty('License');\n this.expiration = this.getResponseProperty('Expiration');\n this.usingInAppPurchase = this.getResponseProperty('UsingInAppPurchase');\n const subscription = this.getResponseProperty('Subscription');\n const upcomingInvoice = this.getResponseProperty('UpcomingInvoice');\n this.subscription = subscription == null ? null : new BillingSubscriptionResponse(subscription);\n this.upcomingInvoice = upcomingInvoice == null ? null :\n new BillingSubscriptionUpcomingInvoiceResponse(upcomingInvoice);\n }\n}\n\nexport class BillingSubscriptionResponse extends BaseResponse {\n trialStartDate: string;\n trialEndDate: string;\n periodStartDate: string;\n periodEndDate: string;\n cancelledDate: string;\n cancelAtEndDate: boolean;\n status: string;\n cancelled: boolean;\n items: BillingSubscriptionItemResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.trialEndDate = this.getResponseProperty('TrialStartDate');\n this.trialEndDate = this.getResponseProperty('TrialEndDate');\n this.periodStartDate = this.getResponseProperty('PeriodStartDate');\n this.periodEndDate = this.getResponseProperty('PeriodEndDate');\n this.cancelledDate = this.getResponseProperty('CancelledDate');\n this.cancelAtEndDate = this.getResponseProperty('CancelAtEndDate');\n this.status = this.getResponseProperty('Status');\n this.cancelled = this.getResponseProperty('Cancelled');\n const items = this.getResponseProperty('Items');\n if (items != null) {\n this.items = items.map((i: any) => new BillingSubscriptionItemResponse(i));\n }\n }\n}\n\nexport class BillingSubscriptionItemResponse extends BaseResponse {\n name: string;\n amount: number;\n quantity: number;\n interval: string;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.amount = this.getResponseProperty('Amount');\n this.quantity = this.getResponseProperty('Quantity');\n this.interval = this.getResponseProperty('Interval');\n }\n}\n\nexport class BillingSubscriptionUpcomingInvoiceResponse extends BaseResponse {\n date: string;\n amount: number;\n\n constructor(response: any) {\n super(response);\n this.date = this.getResponseProperty('Date');\n this.amount = this.getResponseProperty('Amount');\n }\n}\n","import { Utils } from '../../misc/utils';\nimport { BaseResponse } from './baseResponse';\n\nexport class TwoFactorWebAuthnResponse extends BaseResponse {\n enabled: boolean;\n keys: KeyResponse[];\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n const keys = this.getResponseProperty('Keys');\n this.keys = keys == null ? null : keys.map((k: any) => new KeyResponse(k));\n }\n}\n\nexport class KeyResponse extends BaseResponse {\n name: string;\n id: number;\n migrated: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.id = this.getResponseProperty('Id');\n this.migrated = this.getResponseProperty('Migrated');\n }\n}\n\nexport class ChallengeResponse extends BaseResponse implements PublicKeyCredentialCreationOptions {\n attestation?: AttestationConveyancePreference;\n authenticatorSelection?: AuthenticatorSelectionCriteria;\n challenge: BufferSource;\n excludeCredentials?: PublicKeyCredentialDescriptor[];\n extensions?: AuthenticationExtensionsClientInputs;\n pubKeyCredParams: PublicKeyCredentialParameters[];\n rp: PublicKeyCredentialRpEntity;\n timeout?: number;\n user: PublicKeyCredentialUserEntity;\n\n constructor(response: any) {\n super(response);\n this.attestation = this.getResponseProperty('attestation');\n this.authenticatorSelection = this.getResponseProperty('authenticatorSelection');\n this.challenge = Utils.fromUrlB64ToArray(this.getResponseProperty('challenge'));\n this.excludeCredentials = this.getResponseProperty('excludeCredentials').map((c: any) => {\n c.id = Utils.fromUrlB64ToArray(c.id).buffer;\n return c;\n });\n this.extensions = this.getResponseProperty('extensions');\n this.pubKeyCredParams = this.getResponseProperty('pubKeyCredParams');\n this.rp = this.getResponseProperty('rp');\n this.timeout = this.getResponseProperty('timeout');\n\n const user = this.getResponseProperty('user');\n user.id = Utils.fromUrlB64ToArray(user.id);\n\n this.user = user;\n }\n}\n","import { Utils } from '../misc/utils';\n\nimport { AppIdService as AppIdServiceAbstraction } from '../abstractions/appId.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nexport class AppIdService implements AppIdServiceAbstraction {\n constructor(private storageService: StorageService) {\n }\n\n getAppId(): Promise {\n return this.makeAndGetAppId('appId');\n }\n\n getAnonymousAppId(): Promise {\n return this.makeAndGetAppId('anonymousAppId');\n }\n\n private async makeAndGetAppId(key: string) {\n const existingId = await this.storageService.get(key);\n if (existingId != null) {\n return existingId;\n }\n\n const guid = Utils.newGuid();\n await this.storageService.save(key, guid);\n return guid;\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { AuditService as AuditServiceAbstraction } from '../abstractions/audit.service';\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\n\nimport { throttle } from '../misc/throttle';\nimport { Utils } from '../misc/utils';\n\nimport { BreachAccountResponse } from '../models/response/breachAccountResponse';\nimport { ErrorResponse } from '../models/response/errorResponse';\n\nconst PwnedPasswordsApi = 'https://api.pwnedpasswords.com/range/';\n\nexport class AuditService implements AuditServiceAbstraction {\n constructor(private cryptoFunctionService: CryptoFunctionService, private apiService: ApiService) { }\n\n @throttle(100, () => 'passwordLeaked')\n async passwordLeaked(password: string): Promise {\n const hashBytes = await this.cryptoFunctionService.hash(password, 'sha1');\n const hash = Utils.fromBufferToHex(hashBytes).toUpperCase();\n const hashStart = hash.substr(0, 5);\n const hashEnding = hash.substr(5);\n\n const response = await this.apiService.nativeFetch(new Request(PwnedPasswordsApi + hashStart));\n const leakedHashes = await response.text();\n const match = leakedHashes.split(/\\r?\\n/).find(v => {\n return v.split(':')[0] === hashEnding;\n });\n\n return match != null ? parseInt(match.split(':')[1], 10) : 0;\n }\n\n async breachedAccounts(username: string): Promise {\n try {\n return await this.apiService.getHibpBreach(username);\n } catch (e) {\n const error = e as ErrorResponse;\n if (error.statusCode === 404) {\n return [];\n }\n throw new Error();\n }\n }\n}\n","import { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { UriMatchType } from '../enums/uriMatchType';\n\nimport { CipherData } from '../models/data/cipherData';\n\nimport { Attachment } from '../models/domain/attachment';\nimport { Card } from '../models/domain/card';\nimport { Cipher } from '../models/domain/cipher';\nimport Domain from '../models/domain/domainBase';\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncString } from '../models/domain/encString';\nimport { Field } from '../models/domain/field';\nimport { Identity } from '../models/domain/identity';\nimport { Login } from '../models/domain/login';\nimport { LoginUri } from '../models/domain/loginUri';\nimport { Password } from '../models/domain/password';\nimport { SecureNote } from '../models/domain/secureNote';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { AttachmentRequest } from '../models/request/attachmentRequest';\nimport { CipherBulkDeleteRequest } from '../models/request/cipherBulkDeleteRequest';\nimport { CipherBulkMoveRequest } from '../models/request/cipherBulkMoveRequest';\nimport { CipherBulkRestoreRequest } from '../models/request/cipherBulkRestoreRequest';\nimport { CipherBulkShareRequest } from '../models/request/cipherBulkShareRequest';\nimport { CipherCollectionsRequest } from '../models/request/cipherCollectionsRequest';\nimport { CipherCreateRequest } from '../models/request/cipherCreateRequest';\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CipherShareRequest } from '../models/request/cipherShareRequest';\n\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport { ErrorResponse } from '../models/response/errorResponse';\n\nimport { AttachmentView } from '../models/view/attachmentView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FieldView } from '../models/view/fieldView';\nimport { PasswordHistoryView } from '../models/view/passwordHistoryView';\nimport { View } from '../models/view/view';\n\nimport { SortedCiphersCache } from '../models/domain/sortedCiphersCache';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService as CipherServiceAbstraction } from '../abstractions/cipher.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FileUploadService } from '../abstractions/fileUpload.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { SearchService } from '../abstractions/search.service';\nimport { SettingsService } from '../abstractions/settings.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { ConstantsService } from './constants.service';\n\nimport { sequentialize } from '../misc/sequentialize';\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n ciphersPrefix: 'ciphers_',\n localData: 'sitesLocalData',\n neverDomains: 'neverDomains',\n};\n\nconst DomainMatchBlacklist = new Map>([\n ['google.com', new Set(['script.google.com'])],\n]);\n\nexport class CipherService implements CipherServiceAbstraction {\n // tslint:disable-next-line\n _decryptedCipherCache: CipherView[];\n\n private sortedCiphersCache: SortedCiphersCache = new SortedCiphersCache(this.sortCiphersByLastUsed);\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private settingsService: SettingsService, private apiService: ApiService,\n private fileUploadService: FileUploadService, private storageService: StorageService,\n private i18nService: I18nService, private searchService: () => SearchService) {\n }\n\n get decryptedCipherCache() {\n return this._decryptedCipherCache;\n }\n set decryptedCipherCache(value: CipherView[]) {\n this._decryptedCipherCache = value;\n if (this.searchService != null) {\n if (value == null) {\n this.searchService().clearIndex();\n } else {\n this.searchService().indexCiphers();\n }\n }\n }\n\n clearCache(): void {\n this.decryptedCipherCache = null;\n this.sortedCiphersCache.clear();\n }\n\n async encrypt(model: CipherView, key?: SymmetricCryptoKey, originalCipher: Cipher = null): Promise {\n // Adjust password history\n if (model.id != null) {\n if (originalCipher == null) {\n originalCipher = await this.get(model.id);\n }\n if (originalCipher != null) {\n const existingCipher = await originalCipher.decrypt();\n model.passwordHistory = existingCipher.passwordHistory || [];\n if (model.type === CipherType.Login && existingCipher.type === CipherType.Login) {\n if (existingCipher.login.password != null && existingCipher.login.password !== '' &&\n existingCipher.login.password !== model.login.password) {\n const ph = new PasswordHistoryView();\n ph.password = existingCipher.login.password;\n ph.lastUsedDate = model.login.passwordRevisionDate = new Date();\n model.passwordHistory.splice(0, 0, ph);\n } else {\n model.login.passwordRevisionDate = existingCipher.login.passwordRevisionDate;\n }\n }\n if (existingCipher.hasFields) {\n const existingHiddenFields = existingCipher.fields.filter(f => f.type === FieldType.Hidden &&\n f.name != null && f.name !== '' && f.value != null && f.value !== '');\n const hiddenFields = model.fields == null ? [] :\n model.fields.filter(f => f.type === FieldType.Hidden && f.name != null && f.name !== '');\n existingHiddenFields.forEach(ef => {\n const matchedField = hiddenFields.find(f => f.name === ef.name);\n if (matchedField == null || matchedField.value !== ef.value) {\n const ph = new PasswordHistoryView();\n ph.password = ef.name + ': ' + ef.value;\n ph.lastUsedDate = new Date();\n model.passwordHistory.splice(0, 0, ph);\n }\n });\n }\n }\n if (model.passwordHistory != null && model.passwordHistory.length === 0) {\n model.passwordHistory = null;\n } else if (model.passwordHistory != null && model.passwordHistory.length > 5) {\n // only save last 5 history\n model.passwordHistory = model.passwordHistory.slice(0, 5);\n }\n }\n\n const cipher = new Cipher();\n cipher.id = model.id;\n cipher.folderId = model.folderId;\n cipher.favorite = model.favorite;\n cipher.organizationId = model.organizationId;\n cipher.type = model.type;\n cipher.collectionIds = model.collectionIds;\n cipher.revisionDate = model.revisionDate;\n cipher.reprompt = model.reprompt;\n\n if (key == null && cipher.organizationId != null) {\n key = await this.cryptoService.getOrgKey(cipher.organizationId);\n if (key == null) {\n throw new Error('Cannot encrypt cipher for organization. No key.');\n }\n }\n await Promise.all([\n this.encryptObjProperty(model, cipher, {\n name: null,\n notes: null,\n }, key),\n this.encryptCipherData(cipher, model, key),\n this.encryptFields(model.fields, key).then(fields => {\n cipher.fields = fields;\n }),\n this.encryptPasswordHistories(model.passwordHistory, key).then(ph => {\n cipher.passwordHistory = ph;\n }),\n this.encryptAttachments(model.attachments, key).then(attachments => {\n cipher.attachments = attachments;\n }),\n ]);\n\n return cipher;\n }\n\n async encryptAttachments(attachmentsModel: AttachmentView[], key: SymmetricCryptoKey): Promise {\n if (attachmentsModel == null || attachmentsModel.length === 0) {\n return null;\n }\n\n const promises: Promise[] = [];\n const encAttachments: Attachment[] = [];\n attachmentsModel.forEach(async model => {\n const attachment = new Attachment();\n attachment.id = model.id;\n attachment.size = model.size;\n attachment.sizeName = model.sizeName;\n attachment.url = model.url;\n const promise = this.encryptObjProperty(model, attachment, {\n fileName: null,\n }, key).then(async () => {\n if (model.key != null) {\n attachment.key = await this.cryptoService.encrypt(model.key.key, key);\n }\n encAttachments.push(attachment);\n });\n promises.push(promise);\n });\n\n await Promise.all(promises);\n return encAttachments;\n }\n\n async encryptFields(fieldsModel: FieldView[], key: SymmetricCryptoKey): Promise {\n if (!fieldsModel || !fieldsModel.length) {\n return null;\n }\n\n const self = this;\n const encFields: Field[] = [];\n await fieldsModel.reduce((promise, field) => {\n return promise.then(() => {\n return self.encryptField(field, key);\n }).then((encField: Field) => {\n encFields.push(encField);\n });\n }, Promise.resolve());\n\n return encFields;\n }\n\n async encryptField(fieldModel: FieldView, key: SymmetricCryptoKey): Promise {\n const field = new Field();\n field.type = fieldModel.type;\n // normalize boolean type field values\n if (fieldModel.type === FieldType.Boolean && fieldModel.value !== 'true') {\n fieldModel.value = 'false';\n }\n\n await this.encryptObjProperty(fieldModel, field, {\n name: null,\n value: null,\n }, key);\n\n return field;\n }\n\n async encryptPasswordHistories(phModels: PasswordHistoryView[], key: SymmetricCryptoKey): Promise {\n if (!phModels || !phModels.length) {\n return null;\n }\n\n const self = this;\n const encPhs: Password[] = [];\n await phModels.reduce((promise, ph) => {\n return promise.then(() => {\n return self.encryptPasswordHistory(ph, key);\n }).then((encPh: Password) => {\n encPhs.push(encPh);\n });\n }, Promise.resolve());\n\n return encPhs;\n }\n\n async encryptPasswordHistory(phModel: PasswordHistoryView, key: SymmetricCryptoKey): Promise {\n const ph = new Password();\n ph.lastUsedDate = phModel.lastUsedDate;\n\n await this.encryptObjProperty(phModel, ph, {\n password: null,\n }, key);\n\n return ph;\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const localData = await this.storageService.get(Keys.localData);\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null || !ciphers.hasOwnProperty(id)) {\n return null;\n }\n\n return new Cipher(ciphers[id], false, localData ? localData[id] : null);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const localData = await this.storageService.get(Keys.localData);\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n const response: Cipher[] = [];\n for (const id in ciphers) {\n if (ciphers.hasOwnProperty(id)) {\n response.push(new Cipher(ciphers[id], false, localData ? localData[id] : null));\n }\n }\n return response;\n }\n\n @sequentialize(() => 'getAllDecrypted')\n async getAllDecrypted(): Promise {\n if (this.decryptedCipherCache != null) {\n const userId = await this.userService.getUserId();\n if (this.searchService != null && (this.searchService().indexedEntityId ?? userId) !== userId)\n {\n await this.searchService().indexCiphers(userId, this.decryptedCipherCache);\n }\n return this.decryptedCipherCache;\n }\n\n const decCiphers: CipherView[] = [];\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const promises: any[] = [];\n const ciphers = await this.getAll();\n ciphers.forEach(cipher => {\n promises.push(cipher.decrypt().then(c => decCiphers.push(c)));\n });\n\n await Promise.all(promises);\n decCiphers.sort(this.getLocaleSortingFunction());\n this.decryptedCipherCache = decCiphers;\n return this.decryptedCipherCache;\n }\n\n async getAllDecryptedForGrouping(groupingId: string, folder: boolean = true): Promise {\n const ciphers = await this.getAllDecrypted();\n\n return ciphers.filter(cipher => {\n if (cipher.isDeleted) {\n return false;\n }\n if (folder && cipher.folderId === groupingId) {\n return true;\n } else if (!folder && cipher.collectionIds != null && cipher.collectionIds.indexOf(groupingId) > -1) {\n return true;\n }\n\n return false;\n });\n }\n\n async getAllDecryptedForUrl(url: string, includeOtherTypes?: CipherType[],\n defaultMatch: UriMatchType = null): Promise {\n if (url == null && includeOtherTypes == null) {\n return Promise.resolve([]);\n }\n\n const domain = Utils.getDomain(url);\n const eqDomainsPromise = domain == null ? Promise.resolve([]) :\n this.settingsService.getEquivalentDomains().then((eqDomains: any[][]) => {\n let matches: any[] = [];\n eqDomains.forEach(eqDomain => {\n if (eqDomain.length && eqDomain.indexOf(domain) >= 0) {\n matches = matches.concat(eqDomain);\n }\n });\n\n if (!matches.length) {\n matches.push(domain);\n }\n\n return matches;\n });\n\n const result = await Promise.all([eqDomainsPromise, this.getAllDecrypted()]);\n const matchingDomains = result[0];\n const ciphers = result[1];\n\n if (defaultMatch == null) {\n defaultMatch = await this.storageService.get(ConstantsService.defaultUriMatch);\n if (defaultMatch == null) {\n defaultMatch = UriMatchType.Domain;\n }\n }\n\n return ciphers.filter(cipher => {\n if (cipher.deletedDate != null) {\n return false;\n }\n if (includeOtherTypes != null && includeOtherTypes.indexOf(cipher.type) > -1) {\n return true;\n }\n\n if (url != null && cipher.type === CipherType.Login && cipher.login.uris != null) {\n for (let i = 0; i < cipher.login.uris.length; i++) {\n const u = cipher.login.uris[i];\n if (u.uri == null) {\n continue;\n }\n\n const match = u.match == null ? defaultMatch : u.match;\n switch (match) {\n case UriMatchType.Domain:\n if (domain != null && u.domain != null && matchingDomains.indexOf(u.domain) > -1) {\n if (DomainMatchBlacklist.has(u.domain)) {\n const domainUrlHost = Utils.getHost(url);\n if (!DomainMatchBlacklist.get(u.domain).has(domainUrlHost)) {\n return true;\n }\n } else {\n return true;\n }\n }\n break;\n case UriMatchType.Host:\n const urlHost = Utils.getHost(url);\n if (urlHost != null && urlHost === Utils.getHost(u.uri)) {\n return true;\n }\n break;\n case UriMatchType.Exact:\n if (url === u.uri) {\n return true;\n }\n break;\n case UriMatchType.StartsWith:\n if (url.startsWith(u.uri)) {\n return true;\n }\n break;\n case UriMatchType.RegularExpression:\n try {\n const regex = new RegExp(u.uri, 'i');\n if (regex.test(url)) {\n return true;\n }\n } catch { }\n break;\n case UriMatchType.Never:\n default:\n break;\n }\n }\n }\n\n return false;\n });\n }\n\n async getAllFromApiForOrganization(organizationId: string): Promise {\n const ciphers = await this.apiService.getCiphersOrganization(organizationId);\n if (ciphers != null && ciphers.data != null && ciphers.data.length) {\n const decCiphers: CipherView[] = [];\n const promises: any[] = [];\n ciphers.data.forEach(r => {\n const data = new CipherData(r);\n const cipher = new Cipher(data);\n promises.push(cipher.decrypt().then(c => decCiphers.push(c)));\n });\n await Promise.all(promises);\n decCiphers.sort(this.getLocaleSortingFunction());\n return decCiphers;\n } else {\n return [];\n }\n }\n\n async getLastUsedForUrl(url: string, autofillOnPageLoad: boolean = false): Promise {\n return this.getCipherForUrl(url, true, false, autofillOnPageLoad);\n }\n\n async getLastLaunchedForUrl(url: string, autofillOnPageLoad: boolean = false): Promise {\n return this.getCipherForUrl(url, false, true, autofillOnPageLoad);\n }\n\n async getNextCipherForUrl(url: string): Promise {\n return this.getCipherForUrl(url, false, false, false);\n }\n\n updateLastUsedIndexForUrl(url: string) {\n this.sortedCiphersCache.updateLastUsedIndex(url);\n }\n\n async updateLastUsedDate(id: string): Promise {\n let ciphersLocalData = await this.storageService.get(Keys.localData);\n if (!ciphersLocalData) {\n ciphersLocalData = {};\n }\n\n if (ciphersLocalData[id]) {\n ciphersLocalData[id].lastUsedDate = new Date().getTime();\n } else {\n ciphersLocalData[id] = {\n lastUsedDate: new Date().getTime(),\n };\n }\n\n await this.storageService.save(Keys.localData, ciphersLocalData);\n\n if (this.decryptedCipherCache == null) {\n return;\n }\n\n for (let i = 0; i < this.decryptedCipherCache.length; i++) {\n const cached = this.decryptedCipherCache[i];\n if (cached.id === id) {\n cached.localData = ciphersLocalData[id];\n break;\n }\n }\n }\n\n async updateLastLaunchedDate(id: string): Promise {\n let ciphersLocalData = await this.storageService.get(Keys.localData);\n if (!ciphersLocalData) {\n ciphersLocalData = {};\n }\n\n if (ciphersLocalData[id]) {\n ciphersLocalData[id].lastLaunched = new Date().getTime();\n } else {\n ciphersLocalData[id] = {\n lastUsedDate: new Date().getTime(),\n };\n }\n\n await this.storageService.save(Keys.localData, ciphersLocalData);\n\n if (this.decryptedCipherCache == null) {\n return;\n }\n\n for (let i = 0; i < this.decryptedCipherCache.length; i++) {\n const cached = this.decryptedCipherCache[i];\n if (cached.id === id) {\n cached.localData = ciphersLocalData[id];\n break;\n }\n }\n }\n\n async saveNeverDomain(domain: string): Promise {\n if (domain == null) {\n return;\n }\n\n let domains = await this.storageService.get<{ [id: string]: any; }>(Keys.neverDomains);\n if (!domains) {\n domains = {};\n }\n domains[domain] = null;\n await this.storageService.save(Keys.neverDomains, domains);\n }\n\n async saveWithServer(cipher: Cipher): Promise {\n let response: CipherResponse;\n if (cipher.id == null) {\n if (cipher.collectionIds != null) {\n const request = new CipherCreateRequest(cipher);\n response = await this.apiService.postCipherCreate(request);\n } else {\n const request = new CipherRequest(cipher);\n response = await this.apiService.postCipher(request);\n }\n cipher.id = response.id;\n } else {\n const request = new CipherRequest(cipher);\n response = await this.apiService.putCipher(cipher.id, request);\n }\n\n const userId = await this.userService.getUserId();\n const data = new CipherData(response, userId, cipher.collectionIds);\n await this.upsert(data);\n }\n\n async shareWithServer(cipher: CipherView, organizationId: string, collectionIds: string[]): Promise {\n const attachmentPromises: Promise[] = [];\n if (cipher.attachments != null) {\n cipher.attachments.forEach(attachment => {\n if (attachment.key == null) {\n attachmentPromises.push(this.shareAttachmentWithServer(attachment, cipher.id, organizationId));\n }\n });\n }\n await Promise.all(attachmentPromises);\n\n cipher.organizationId = organizationId;\n cipher.collectionIds = collectionIds;\n const encCipher = await this.encrypt(cipher);\n const request = new CipherShareRequest(encCipher);\n const response = await this.apiService.putShareCipher(cipher.id, request);\n const userId = await this.userService.getUserId();\n const data = new CipherData(response, userId, collectionIds);\n await this.upsert(data);\n }\n\n async shareManyWithServer(ciphers: CipherView[], organizationId: string, collectionIds: string[]): Promise {\n const promises: Promise[] = [];\n const encCiphers: Cipher[] = [];\n for (const cipher of ciphers) {\n cipher.organizationId = organizationId;\n cipher.collectionIds = collectionIds;\n promises.push(this.encrypt(cipher).then(c => {\n encCiphers.push(c);\n }));\n }\n await Promise.all(promises);\n const request = new CipherBulkShareRequest(encCiphers, collectionIds);\n await this.apiService.putShareCiphers(request);\n const userId = await this.userService.getUserId();\n await this.upsert(encCiphers.map(c => c.toCipherData(userId)));\n }\n\n saveAttachmentWithServer(cipher: Cipher, unencryptedFile: any, admin = false): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(unencryptedFile);\n reader.onload = async (evt: any) => {\n try {\n const cData = await this.saveAttachmentRawWithServer(cipher,\n unencryptedFile.name, evt.target.result, admin);\n resolve(cData);\n } catch (e) {\n reject(e);\n }\n };\n reader.onerror = evt => {\n reject('Error reading file.');\n };\n });\n }\n\n async saveAttachmentRawWithServer(cipher: Cipher, filename: string,\n data: ArrayBuffer, admin = false): Promise {\n const key = await this.cryptoService.getOrgKey(cipher.organizationId);\n const encFileName = await this.cryptoService.encrypt(filename, key);\n\n const dataEncKey = await this.cryptoService.makeEncKey(key);\n const encData = await this.cryptoService.encryptToBytes(data, dataEncKey[0]);\n\n const request: AttachmentRequest = {\n key: dataEncKey[1].encryptedString,\n fileName: encFileName.encryptedString,\n fileSize: encData.buffer.byteLength,\n adminRequest: admin,\n };\n\n let response: CipherResponse;\n try {\n const uploadDataResponse = await this.apiService.postCipherAttachment(cipher.id, request);\n response = admin ? uploadDataResponse.cipherMiniResponse : uploadDataResponse.cipherResponse;\n await this.fileUploadService.uploadCipherAttachment(admin, uploadDataResponse, encFileName, encData);\n } catch (e) {\n if (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404 || (e as ErrorResponse).statusCode === 405) {\n response = await this.legacyServerAttachmentFileUpload(admin, cipher.id, encFileName, encData, dataEncKey[1]);\n } else if (e instanceof ErrorResponse) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n } else {\n throw e;\n }\n }\n\n const userId = await this.userService.getUserId();\n const cData = new CipherData(response, userId, cipher.collectionIds);\n if (!admin) {\n await this.upsert(cData);\n }\n return new Cipher(cData);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async legacyServerAttachmentFileUpload(admin: boolean, cipherId: string, encFileName: EncString,\n encData: EncArrayBuffer, key: EncString) {\n const fd = new FormData();\n try {\n const blob = new Blob([encData.buffer], { type: 'application/octet-stream' });\n fd.append('key', key.encryptedString);\n fd.append('data', blob, encFileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('key', key.encryptedString);\n fd.append('data', Buffer.from(encData.buffer) as any, {\n filepath: encFileName.encryptedString,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n\n let response: CipherResponse;\n try {\n if (admin) {\n response = await this.apiService.postCipherAttachmentAdminLegacy(cipherId, fd);\n } else {\n response = await this.apiService.postCipherAttachmentLegacy(cipherId, fd);\n }\n } catch (e) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n }\n\n return response;\n }\n\n async saveCollectionsWithServer(cipher: Cipher): Promise {\n const request = new CipherCollectionsRequest(cipher.collectionIds);\n await this.apiService.putCipherCollections(cipher.id, request);\n const userId = await this.userService.getUserId();\n const data = cipher.toCipherData(userId);\n await this.upsert(data);\n }\n\n async upsert(cipher: CipherData | CipherData[]): Promise {\n const userId = await this.userService.getUserId();\n let ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n ciphers = {};\n }\n\n if (cipher instanceof CipherData) {\n const c = cipher as CipherData;\n ciphers[c.id] = c;\n } else {\n (cipher as CipherData[]).forEach(c => {\n ciphers[c.id] = c;\n });\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async replace(ciphers: { [id: string]: CipherData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.ciphersPrefix + userId);\n this.clearCache();\n }\n\n async moveManyWithServer(ids: string[], folderId: string): Promise {\n await this.apiService.putMoveCiphers(new CipherBulkMoveRequest(ids, folderId));\n\n const userId = await this.userService.getUserId();\n let ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n ciphers = {};\n }\n\n ids.forEach(id => {\n if (ciphers.hasOwnProperty(id)) {\n ciphers[id].folderId = folderId;\n }\n });\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n return;\n }\n\n if (typeof id === 'string') {\n if (ciphers[id] == null) {\n return;\n }\n delete ciphers[id];\n } else {\n (id as string[]).forEach(i => {\n delete ciphers[i];\n });\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteCipher(id);\n await this.delete(id);\n }\n\n async deleteManyWithServer(ids: string[]): Promise {\n await this.apiService.deleteManyCiphers(new CipherBulkDeleteRequest(ids));\n await this.delete(ids);\n }\n\n async deleteAttachment(id: string, attachmentId: string): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n\n if (ciphers == null || !ciphers.hasOwnProperty(id) || ciphers[id].attachments == null) {\n return;\n }\n\n for (let i = 0; i < ciphers[id].attachments.length; i++) {\n if (ciphers[id].attachments[i].id === attachmentId) {\n ciphers[id].attachments.splice(i, 1);\n }\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async deleteAttachmentWithServer(id: string, attachmentId: string): Promise {\n try {\n await this.apiService.deleteCipherAttachment(id, attachmentId);\n } catch (e) {\n return Promise.reject((e as ErrorResponse).getSingleMessage());\n }\n await this.deleteAttachment(id, attachmentId);\n }\n\n sortCiphersByLastUsed(a: CipherView, b: CipherView): number {\n const aLastUsed = a.localData && a.localData.lastUsedDate ? a.localData.lastUsedDate as number : null;\n const bLastUsed = b.localData && b.localData.lastUsedDate ? b.localData.lastUsedDate as number : null;\n\n const bothNotNull = aLastUsed != null && bLastUsed != null;\n if (bothNotNull && aLastUsed < bLastUsed) {\n return 1;\n }\n if (aLastUsed != null && bLastUsed == null) {\n return -1;\n }\n\n if (bothNotNull && aLastUsed > bLastUsed) {\n return -1;\n }\n if (bLastUsed != null && aLastUsed == null) {\n return 1;\n }\n\n return 0;\n }\n\n sortCiphersByLastUsedThenName(a: CipherView, b: CipherView): number {\n const result = this.sortCiphersByLastUsed(a, b);\n if (result !== 0) {\n return result;\n }\n\n return this.getLocaleSortingFunction()(a, b);\n }\n\n getLocaleSortingFunction(): (a: CipherView, b: CipherView) => number {\n return (a, b) => {\n let aName = a.name;\n let bName = b.name;\n\n if (aName == null && bName != null) {\n return -1;\n }\n if (aName != null && bName == null) {\n return 1;\n }\n if (aName == null && bName == null) {\n return 0;\n }\n\n const result = this.i18nService.collator ? this.i18nService.collator.compare(aName, bName) :\n aName.localeCompare(bName);\n\n if (result !== 0 || a.type !== CipherType.Login || b.type !== CipherType.Login) {\n return result;\n }\n\n if (a.login.username != null) {\n aName += a.login.username;\n }\n\n if (b.login.username != null) {\n bName += b.login.username;\n }\n\n return this.i18nService.collator ? this.i18nService.collator.compare(aName, bName) :\n aName.localeCompare(bName);\n };\n }\n\n async softDelete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n return;\n }\n\n const setDeletedDate = (cipherId: string) => {\n if (ciphers[cipherId] == null) {\n return;\n }\n ciphers[cipherId].deletedDate = new Date().toISOString();\n };\n\n if (typeof id === 'string') {\n setDeletedDate(id);\n } else {\n (id as string[]).forEach(setDeletedDate);\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async softDeleteWithServer(id: string): Promise {\n await this.apiService.putDeleteCipher(id);\n await this.softDelete(id);\n }\n\n async softDeleteManyWithServer(ids: string[]): Promise {\n await this.apiService.putDeleteManyCiphers(new CipherBulkDeleteRequest(ids));\n await this.softDelete(ids);\n }\n\n async restore(cipher: { id: string, revisionDate: string; } | { id: string, revisionDate: string; }[]) {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n return;\n }\n\n const clearDeletedDate = (c: { id: string, revisionDate: string; }) => {\n if (ciphers[c.id] == null) {\n return;\n }\n ciphers[c.id].deletedDate = null;\n ciphers[c.id].revisionDate = c.revisionDate;\n };\n\n\n if (cipher.constructor.name === 'Array') {\n (cipher as { id: string, revisionDate: string; }[]).forEach(clearDeletedDate);\n } else {\n clearDeletedDate(cipher as { id: string, revisionDate: string; });\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async restoreWithServer(id: string): Promise {\n const response = await this.apiService.putRestoreCipher(id);\n await this.restore({ id: id, revisionDate: response.revisionDate });\n }\n\n async restoreManyWithServer(ids: string[]): Promise {\n const response = await this.apiService.putRestoreManyCiphers(new CipherBulkRestoreRequest(ids));\n const restores: { id: string, revisionDate: string; }[] = [];\n for (const cipher of response.data) {\n restores.push({ id: cipher.id, revisionDate: cipher.revisionDate });\n }\n await this.restore(restores);\n }\n\n // Helpers\n\n private async shareAttachmentWithServer(attachmentView: AttachmentView, cipherId: string,\n organizationId: string): Promise {\n const attachmentResponse = await this.apiService.nativeFetch(\n new Request(attachmentView.url, { cache: 'no-store' }));\n if (attachmentResponse.status !== 200) {\n throw Error('Failed to download attachment: ' + attachmentResponse.status.toString());\n }\n\n const buf = await attachmentResponse.arrayBuffer();\n const decBuf = await this.cryptoService.decryptFromBytes(buf, null);\n const key = await this.cryptoService.getOrgKey(organizationId);\n const encFileName = await this.cryptoService.encrypt(attachmentView.fileName, key);\n\n const dataEncKey = await this.cryptoService.makeEncKey(key);\n const encData = await this.cryptoService.encryptToBytes(decBuf, dataEncKey[0]);\n\n const fd = new FormData();\n try {\n const blob = new Blob([encData.buffer], { type: 'application/octet-stream' });\n fd.append('key', dataEncKey[1].encryptedString);\n fd.append('data', blob, encFileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('key', dataEncKey[1].encryptedString);\n fd.append('data', Buffer.from(encData.buffer) as any, {\n filepath: encFileName.encryptedString,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n\n try {\n await this.apiService.postShareCipherAttachment(cipherId, attachmentView.id, fd, organizationId);\n } catch (e) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n }\n }\n\n private async encryptObjProperty(model: V, obj: D,\n map: any, key: SymmetricCryptoKey): Promise {\n const promises = [];\n const self = this;\n\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n // tslint:disable-next-line\n (function (theProp, theObj) {\n const p = Promise.resolve().then(() => {\n const modelProp = (model as any)[(map[theProp] || theProp)];\n if (modelProp && modelProp !== '') {\n return self.cryptoService.encrypt(modelProp, key);\n }\n return null;\n }).then((val: EncString) => {\n (theObj as any)[theProp] = val;\n });\n promises.push(p);\n })(prop, obj);\n }\n\n await Promise.all(promises);\n }\n\n private async encryptCipherData(cipher: Cipher, model: CipherView, key: SymmetricCryptoKey) {\n switch (cipher.type) {\n case CipherType.Login:\n cipher.login = new Login();\n cipher.login.passwordRevisionDate = model.login.passwordRevisionDate;\n cipher.login.autofillOnPageLoad = model.login.autofillOnPageLoad;\n await this.encryptObjProperty(model.login, cipher.login, {\n username: null,\n password: null,\n totp: null,\n }, key);\n\n if (model.login.uris != null) {\n cipher.login.uris = [];\n for (let i = 0; i < model.login.uris.length; i++) {\n const loginUri = new LoginUri();\n loginUri.match = model.login.uris[i].match;\n await this.encryptObjProperty(model.login.uris[i], loginUri, {\n uri: null,\n }, key);\n cipher.login.uris.push(loginUri);\n }\n }\n return;\n case CipherType.SecureNote:\n cipher.secureNote = new SecureNote();\n cipher.secureNote.type = model.secureNote.type;\n return;\n case CipherType.Card:\n cipher.card = new Card();\n await this.encryptObjProperty(model.card, cipher.card, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n }, key);\n return;\n case CipherType.Identity:\n cipher.identity = new Identity();\n await this.encryptObjProperty(model.identity, cipher.identity, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n }, key);\n return;\n default:\n throw new Error('Unknown cipher type.');\n }\n }\n\n private async getCipherForUrl(url: string, lastUsed: boolean, lastLaunched: boolean, autofillOnPageLoad: boolean): Promise {\n const cacheKey = autofillOnPageLoad ? 'autofillOnPageLoad-' + url : url;\n\n if (!this.sortedCiphersCache.isCached(cacheKey)) {\n let ciphers = await this.getAllDecryptedForUrl(url);\n if (!ciphers) {\n return null;\n }\n\n if (autofillOnPageLoad) {\n const autofillOnPageLoadDefault = await this.storageService.get(ConstantsService.autoFillOnPageLoadDefaultKey);\n ciphers = ciphers.filter(cipher => cipher.login.autofillOnPageLoad ||\n (cipher.login.autofillOnPageLoad == null && autofillOnPageLoadDefault !== false));\n if (ciphers.length === 0) {\n return null;\n }\n }\n\n this.sortedCiphersCache.addCiphers(cacheKey, ciphers);\n }\n\n if (lastLaunched) {\n return this.sortedCiphersCache.getLastLaunched(cacheKey);\n } else if (lastUsed) {\n return this.sortedCiphersCache.getLastUsed(cacheKey);\n } else {\n return this.sortedCiphersCache.getNext(cacheKey);\n }\n }\n}\n","/**\n * Use as a Decorator on async functions, it will prevent multiple 'active' calls as the same time\n *\n * If a promise was returned from a previous call to this function, that hasn't yet resolved it will\n * be returned, instead of calling the original function again\n *\n * Results are not cached, once the promise has returned, the next call will result in a fresh call\n *\n * Read more at https://github.com/bitwarden/jslib/pull/7\n */\nexport function sequentialize(cacheKey: (args: any[]) => string) {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const originalMethod: () => Promise = descriptor.value;\n const caches = new Map>>();\n\n const getCache = (obj: any) => {\n let cache = caches.get(obj);\n if (cache != null) {\n return cache;\n }\n cache = new Map>();\n caches.set(obj, cache);\n return cache;\n };\n\n return {\n value: function(...args: any[]) {\n const cache = getCache(this);\n const argsCacheKey = cacheKey(args);\n let response = cache.get(argsCacheKey);\n if (response != null) {\n return response;\n }\n\n const onFinally = () => {\n cache.delete(argsCacheKey);\n if (cache.size === 0) {\n caches.delete(this);\n }\n };\n response = originalMethod.apply(this, args).then((val: any) => {\n onFinally();\n return val;\n }).catch((err: any) => {\n onFinally();\n throw err;\n });\n\n cache.set(argsCacheKey, response);\n return response;\n },\n };\n };\n}\n","import { CollectionData } from '../models/data/collectionData';\n\nimport { Collection } from '../models/domain/collection';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { CollectionView } from '../models/view/collectionView';\n\nimport { CollectionService as CollectionServiceAbstraction } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { ServiceUtils } from '../misc/serviceUtils';\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n collectionsPrefix: 'collections_',\n};\nconst NestingDelimiter = '/';\n\nexport class CollectionService implements CollectionServiceAbstraction {\n decryptedCollectionCache: CollectionView[];\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private storageService: StorageService, private i18nService: I18nService) {\n }\n\n clearCache(): void {\n this.decryptedCollectionCache = null;\n }\n\n async encrypt(model: CollectionView): Promise {\n if (model.organizationId == null) {\n throw new Error('Collection has no organization id.');\n }\n const key = await this.cryptoService.getOrgKey(model.organizationId);\n if (key == null) {\n throw new Error('No key for this collection\\'s organization.');\n }\n const collection = new Collection();\n collection.id = model.id;\n collection.organizationId = model.organizationId;\n collection.readOnly = model.readOnly;\n collection.name = await this.cryptoService.encrypt(model.name, key);\n return collection;\n }\n\n async decryptMany(collections: Collection[]): Promise {\n if (collections == null) {\n return [];\n }\n const decCollections: CollectionView[] = [];\n const promises: Promise[] = [];\n collections.forEach(collection => {\n promises.push(collection.decrypt().then(c => decCollections.push(c)));\n });\n await Promise.all(promises);\n return decCollections.sort(Utils.getSortFunction(this.i18nService, 'name'));\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n if (collections == null || !collections.hasOwnProperty(id)) {\n return null;\n }\n\n return new Collection(collections[id]);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n const response: Collection[] = [];\n for (const id in collections) {\n if (collections.hasOwnProperty(id)) {\n response.push(new Collection(collections[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n if (this.decryptedCollectionCache != null) {\n return this.decryptedCollectionCache;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const collections = await this.getAll();\n this.decryptedCollectionCache = await this.decryptMany(collections);\n return this.decryptedCollectionCache;\n }\n\n async getAllNested(collections: CollectionView[] = null): Promise[]> {\n if (collections == null) {\n collections = await this.getAllDecrypted();\n }\n const nodes: TreeNode[] = [];\n collections.forEach(c => {\n const collectionCopy = new CollectionView();\n collectionCopy.id = c.id;\n collectionCopy.organizationId = c.organizationId;\n const parts = c.name != null ? c.name.replace(/^\\/+|\\/+$/g, '').split(NestingDelimiter) : [];\n ServiceUtils.nestedTraverse(nodes, 0, parts, collectionCopy, null, NestingDelimiter);\n });\n return nodes;\n }\n\n async getNested(id: string): Promise> {\n const collections = await this.getAllNested();\n return ServiceUtils.getTreeNodeObject(collections, id) as TreeNode;\n }\n\n async upsert(collection: CollectionData | CollectionData[]): Promise {\n const userId = await this.userService.getUserId();\n let collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n if (collections == null) {\n collections = {};\n }\n\n if (collection instanceof CollectionData) {\n const c = collection as CollectionData;\n collections[c.id] = c;\n } else {\n (collection as CollectionData[]).forEach(c => {\n collections[c.id] = c;\n });\n }\n\n await this.storageService.save(Keys.collectionsPrefix + userId, collections);\n this.decryptedCollectionCache = null;\n }\n\n async replace(collections: { [id: string]: CollectionData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.collectionsPrefix + userId, collections);\n this.decryptedCollectionCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.collectionsPrefix + userId);\n this.decryptedCollectionCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n if (collections == null) {\n return;\n }\n\n if (typeof id === 'string') {\n const i = id as string;\n delete collections[id];\n } else {\n (id as string[]).forEach(i => {\n delete collections[i];\n });\n }\n\n await this.storageService.save(Keys.collectionsPrefix + userId, collections);\n this.decryptedCollectionCache = null;\n }\n}\n","import {\n ITreeNodeObject,\n TreeNode,\n} from '../models/domain/treeNode';\n\nexport class ServiceUtils {\n static nestedTraverse(nodeTree: TreeNode[], partIndex: number, parts: string[],\n obj: ITreeNodeObject, parent: ITreeNodeObject, delimiter: string) {\n if (parts.length <= partIndex) {\n return;\n }\n\n const end = partIndex === parts.length - 1;\n const partName = parts[partIndex];\n\n for (let i = 0; i < nodeTree.length; i++) {\n if (nodeTree[i].node.name !== parts[partIndex]) {\n continue;\n }\n if (end && nodeTree[i].node.id !== obj.id) {\n // Another node with the same name.\n nodeTree.push(new TreeNode(obj, partName, parent));\n return;\n }\n ServiceUtils.nestedTraverse(nodeTree[i].children, partIndex + 1, parts,\n obj, nodeTree[i].node, delimiter);\n return;\n }\n\n if (nodeTree.filter(n => n.node.name === partName).length === 0) {\n if (end) {\n nodeTree.push(new TreeNode(obj, partName, parent));\n return;\n }\n const newPartName = parts[partIndex] + delimiter + parts[partIndex + 1];\n ServiceUtils.nestedTraverse(nodeTree, 0, [newPartName, ...parts.slice(partIndex + 2)],\n obj, parent, delimiter);\n }\n }\n\n static getTreeNodeObject(nodeTree: TreeNode[], id: string): TreeNode {\n for (let i = 0; i < nodeTree.length; i++) {\n if (nodeTree[i].node.id === id) {\n return nodeTree[i];\n } else if (nodeTree[i].children != null) {\n const node = ServiceUtils.getTreeNodeObject(nodeTree[i].children, id);\n if (node !== null) {\n return node;\n }\n }\n }\n return null;\n }\n}\n","import { CryptoService } from '../abstractions/crypto.service';\n\nexport class ContainerService {\n constructor(private cryptoService: CryptoService) {\n }\n\n // deprecated, use attachToGlobal instead\n attachToWindow(win: any) {\n this.attachToGlobal(win);\n }\n\n attachToGlobal(global: any) {\n if (!global.bitwardenContainerService) {\n global.bitwardenContainerService = this;\n }\n }\n\n getCryptoService(): CryptoService {\n return this.cryptoService;\n }\n}\n","import * as bigInt from 'big-integer';\n\nimport { EncryptionType } from '../enums/encryptionType';\nimport { HashPurpose } from '../enums/hashPurpose';\nimport { KdfType } from '../enums/kdfType';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncryptedObject } from '../models/domain/encryptedObject';\nimport { EncString } from '../models/domain/encString';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\nimport { ProfileOrganizationResponse } from '../models/response/profileOrganizationResponse';\n\nimport { CryptoService as CryptoServiceAbstraction } from '../abstractions/crypto.service';\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { LogService } from '../abstractions/log.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport {\n KeySuffixOptions,\n StorageService,\n} from '../abstractions/storage.service';\n\nimport { ConstantsService } from './constants.service';\n\nimport { sequentialize } from '../misc/sequentialize';\nimport { Utils } from '../misc/utils';\nimport { EEFLongWordList } from '../misc/wordlist';\n\nexport const Keys = {\n key: 'key', // Master Key\n encOrgKeys: 'encOrgKeys',\n encPrivateKey: 'encPrivateKey',\n encKey: 'encKey', // Generated Symmetric Key\n keyHash: 'keyHash',\n};\n\nexport class CryptoService implements CryptoServiceAbstraction {\n private key: SymmetricCryptoKey;\n private encKey: SymmetricCryptoKey;\n private legacyEtmKey: SymmetricCryptoKey;\n private keyHash: string;\n private publicKey: ArrayBuffer;\n private privateKey: ArrayBuffer;\n private orgKeys: Map;\n\n constructor(private storageService: StorageService, protected secureStorageService: StorageService,\n private cryptoFunctionService: CryptoFunctionService, protected platformUtilService: PlatformUtilsService,\n protected logService: LogService) {\n }\n\n async setKey(key: SymmetricCryptoKey): Promise {\n this.key = key;\n\n await this.storeKey(key);\n }\n\n setKeyHash(keyHash: string): Promise<{}> {\n this.keyHash = keyHash;\n return this.storageService.save(Keys.keyHash, keyHash);\n }\n\n async setEncKey(encKey: string): Promise<{}> {\n if (encKey == null) {\n return;\n }\n\n await this.storageService.save(Keys.encKey, encKey);\n this.encKey = null;\n }\n\n async setEncPrivateKey(encPrivateKey: string): Promise<{}> {\n if (encPrivateKey == null) {\n return;\n }\n\n await this.storageService.save(Keys.encPrivateKey, encPrivateKey);\n this.privateKey = null;\n }\n\n setOrgKeys(orgs: ProfileOrganizationResponse[]): Promise<{}> {\n const orgKeys: any = {};\n orgs.forEach(org => {\n orgKeys[org.id] = org.key;\n });\n\n this.orgKeys = null;\n return this.storageService.save(Keys.encOrgKeys, orgKeys);\n }\n\n async getKey(keySuffix?: KeySuffixOptions): Promise {\n if (this.key != null) {\n return this.key;\n }\n\n keySuffix ||= 'auto';\n const symmetricKey = await this.getKeyFromStorage(keySuffix);\n\n if (symmetricKey != null) {\n this.setKey(symmetricKey);\n }\n\n return symmetricKey;\n }\n\n async getKeyFromStorage(keySuffix: KeySuffixOptions): Promise {\n const key = await this.retrieveKeyFromStorage(keySuffix);\n if (key != null) {\n\n const symmetricKey = new SymmetricCryptoKey(Utils.fromB64ToArray(key).buffer);\n\n if (!await this.validateKey(symmetricKey)) {\n this.logService.warning('Wrong key, throwing away stored key');\n this.secureStorageService.remove(Keys.key, { keySuffix: keySuffix });\n return null;\n }\n\n return symmetricKey;\n }\n return null;\n }\n\n async getKeyHash(): Promise {\n if (this.keyHash != null) {\n return this.keyHash;\n }\n\n const keyHash = await this.storageService.get(Keys.keyHash);\n if (keyHash != null) {\n this.keyHash = keyHash;\n }\n\n return keyHash == null ? null : this.keyHash;\n }\n\n async compareAndUpdateKeyHash(masterPassword: string, key: SymmetricCryptoKey): Promise {\n const storedKeyHash = await this.getKeyHash();\n if (masterPassword != null && storedKeyHash != null) {\n const localKeyHash = await this.hashPassword(masterPassword, key, HashPurpose.LocalAuthorization);\n if (localKeyHash != null && storedKeyHash === localKeyHash) {\n return true;\n }\n\n // TODO: remove serverKeyHash check in 1-2 releases after everyone's keyHash has been updated\n const serverKeyHash = await this.hashPassword(masterPassword, key, HashPurpose.ServerAuthorization);\n if (serverKeyHash != null && storedKeyHash === serverKeyHash) {\n await this.setKeyHash(localKeyHash);\n return true;\n }\n }\n\n return false;\n }\n\n @sequentialize(() => 'getEncKey')\n async getEncKey(key: SymmetricCryptoKey = null): Promise {\n if (this.encKey != null) {\n return this.encKey;\n }\n\n const encKey = await this.storageService.get(Keys.encKey);\n if (encKey == null) {\n return null;\n }\n\n if (key == null) {\n key = await this.getKey();\n }\n if (key == null) {\n return null;\n }\n\n let decEncKey: ArrayBuffer;\n const encKeyCipher = new EncString(encKey);\n if (encKeyCipher.encryptionType === EncryptionType.AesCbc256_B64) {\n decEncKey = await this.decryptToBytes(encKeyCipher, key);\n } else if (encKeyCipher.encryptionType === EncryptionType.AesCbc256_HmacSha256_B64) {\n const newKey = await this.stretchKey(key);\n decEncKey = await this.decryptToBytes(encKeyCipher, newKey);\n } else {\n throw new Error('Unsupported encKey type.');\n }\n\n if (decEncKey == null) {\n return null;\n }\n this.encKey = new SymmetricCryptoKey(decEncKey);\n return this.encKey;\n }\n\n async getPublicKey(): Promise {\n if (this.publicKey != null) {\n return this.publicKey;\n }\n\n const privateKey = await this.getPrivateKey();\n if (privateKey == null) {\n return null;\n }\n\n this.publicKey = await this.cryptoFunctionService.rsaExtractPublicKey(privateKey);\n return this.publicKey;\n }\n\n async getPrivateKey(): Promise {\n if (this.privateKey != null) {\n return this.privateKey;\n }\n\n const encPrivateKey = await this.storageService.get(Keys.encPrivateKey);\n if (encPrivateKey == null) {\n return null;\n }\n\n this.privateKey = await this.decryptToBytes(new EncString(encPrivateKey), null);\n return this.privateKey;\n }\n\n async getFingerprint(userId: string, publicKey?: ArrayBuffer): Promise {\n if (publicKey == null) {\n publicKey = await this.getPublicKey();\n }\n if (publicKey === null) {\n throw new Error('No public key available.');\n }\n const keyFingerprint = await this.cryptoFunctionService.hash(publicKey, 'sha256');\n const userFingerprint = await this.cryptoFunctionService.hkdfExpand(keyFingerprint, userId, 32, 'sha256');\n return this.hashPhrase(userFingerprint);\n }\n\n @sequentialize(() => 'getOrgKeys')\n async getOrgKeys(): Promise> {\n if (this.orgKeys != null && this.orgKeys.size > 0) {\n return this.orgKeys;\n }\n\n const encOrgKeys = await this.storageService.get(Keys.encOrgKeys);\n if (encOrgKeys == null) {\n return null;\n }\n\n const orgKeys: Map = new Map();\n let setKey = false;\n\n for (const orgId in encOrgKeys) {\n if (!encOrgKeys.hasOwnProperty(orgId)) {\n continue;\n }\n\n const decValue = await this.rsaDecrypt(encOrgKeys[orgId]);\n orgKeys.set(orgId, new SymmetricCryptoKey(decValue));\n setKey = true;\n }\n\n if (setKey) {\n this.orgKeys = orgKeys;\n }\n\n return this.orgKeys;\n }\n\n async getOrgKey(orgId: string): Promise {\n if (orgId == null) {\n return null;\n }\n\n const orgKeys = await this.getOrgKeys();\n if (orgKeys == null || !orgKeys.has(orgId)) {\n return null;\n }\n\n return orgKeys.get(orgId);\n }\n\n async hasKey(): Promise {\n return this.hasKeyInMemory() || await this.hasKeyStored('auto') || await this.hasKeyStored('biometric');\n }\n\n hasKeyInMemory(): boolean {\n return this.key != null;\n }\n\n hasKeyStored(keySuffix: KeySuffixOptions): Promise {\n return this.secureStorageService.has(Keys.key, { keySuffix: keySuffix });\n }\n\n async hasEncKey(): Promise {\n const encKey = await this.storageService.get(Keys.encKey);\n return encKey != null;\n }\n\n async clearKey(clearSecretStorage: boolean = true): Promise {\n this.key = this.legacyEtmKey = null;\n if (clearSecretStorage) {\n this.clearStoredKey('auto');\n this.clearStoredKey('biometric');\n }\n }\n\n async clearStoredKey(keySuffix: KeySuffixOptions) {\n await this.secureStorageService.remove(Keys.key, { keySuffix: keySuffix });\n }\n\n clearKeyHash(): Promise {\n this.keyHash = null;\n return this.storageService.remove(Keys.keyHash);\n }\n\n clearEncKey(memoryOnly?: boolean): Promise {\n this.encKey = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encKey);\n }\n\n clearKeyPair(memoryOnly?: boolean): Promise {\n this.privateKey = null;\n this.publicKey = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encPrivateKey);\n }\n\n clearOrgKeys(memoryOnly?: boolean): Promise {\n this.orgKeys = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encOrgKeys);\n }\n\n clearPinProtectedKey(): Promise {\n return this.storageService.remove(ConstantsService.pinProtectedKey);\n }\n\n async clearKeys(): Promise {\n await this.clearKey();\n await this.clearKeyHash();\n await this.clearOrgKeys();\n await this.clearEncKey();\n await this.clearKeyPair();\n await this.clearPinProtectedKey();\n }\n\n async toggleKey(): Promise {\n const key = await this.getKey();\n\n await this.setKey(key);\n }\n\n async makeKey(password: string, salt: string, kdf: KdfType, kdfIterations: number):\n Promise {\n let key: ArrayBuffer = null;\n if (kdf == null || kdf === KdfType.PBKDF2_SHA256) {\n if (kdfIterations == null) {\n kdfIterations = 5000;\n } else if (kdfIterations < 5000) {\n throw new Error('PBKDF2 iteration minimum is 5000.');\n }\n key = await this.cryptoFunctionService.pbkdf2(password, salt, 'sha256', kdfIterations);\n } else {\n throw new Error('Unknown Kdf.');\n }\n return new SymmetricCryptoKey(key);\n }\n\n async makeKeyFromPin(pin: string, salt: string, kdf: KdfType, kdfIterations: number,\n protectedKeyCs: EncString = null):\n Promise {\n if (protectedKeyCs == null) {\n const pinProtectedKey = await this.storageService.get(ConstantsService.pinProtectedKey);\n if (pinProtectedKey == null) {\n throw new Error('No PIN protected key found.');\n }\n protectedKeyCs = new EncString(pinProtectedKey);\n }\n const pinKey = await this.makePinKey(pin, salt, kdf, kdfIterations);\n const decKey = await this.decryptToBytes(protectedKeyCs, pinKey);\n return new SymmetricCryptoKey(decKey);\n }\n\n async makeShareKey(): Promise<[EncString, SymmetricCryptoKey]> {\n const shareKey = await this.cryptoFunctionService.randomBytes(64);\n const publicKey = await this.getPublicKey();\n const encShareKey = await this.rsaEncrypt(shareKey, publicKey);\n return [encShareKey, new SymmetricCryptoKey(shareKey)];\n }\n\n async makeKeyPair(key?: SymmetricCryptoKey): Promise<[string, EncString]> {\n const keyPair = await this.cryptoFunctionService.rsaGenerateKeyPair(2048);\n const publicB64 = Utils.fromBufferToB64(keyPair[0]);\n const privateEnc = await this.encrypt(keyPair[1], key);\n return [publicB64, privateEnc];\n }\n\n async makePinKey(pin: string, salt: string, kdf: KdfType, kdfIterations: number): Promise {\n const pinKey = await this.makeKey(pin, salt, kdf, kdfIterations);\n return await this.stretchKey(pinKey);\n }\n\n async makeSendKey(keyMaterial: ArrayBuffer): Promise {\n const sendKey = await this.cryptoFunctionService.hkdf(keyMaterial, 'bitwarden-send', 'send', 64, 'sha256');\n return new SymmetricCryptoKey(sendKey);\n }\n\n async hashPassword(password: string, key: SymmetricCryptoKey, hashPurpose?: HashPurpose): Promise {\n if (key == null) {\n key = await this.getKey();\n }\n if (password == null || key == null) {\n throw new Error('Invalid parameters.');\n }\n\n const iterations = hashPurpose === HashPurpose.LocalAuthorization ? 2 : 1;\n const hash = await this.cryptoFunctionService.pbkdf2(key.key, password, 'sha256', iterations);\n return Utils.fromBufferToB64(hash);\n }\n\n async makeEncKey(key: SymmetricCryptoKey): Promise<[SymmetricCryptoKey, EncString]> {\n const theKey = await this.getKeyForEncryption(key);\n const encKey = await this.cryptoFunctionService.randomBytes(64);\n return this.buildEncKey(theKey, encKey);\n }\n\n async remakeEncKey(key: SymmetricCryptoKey, encKey?: SymmetricCryptoKey): Promise<[SymmetricCryptoKey, EncString]> {\n if (encKey == null) {\n encKey = await this.getEncKey();\n }\n return this.buildEncKey(key, encKey.key);\n }\n\n async encrypt(plainValue: string | ArrayBuffer, key?: SymmetricCryptoKey): Promise {\n if (plainValue == null) {\n return Promise.resolve(null);\n }\n\n let plainBuf: ArrayBuffer;\n if (typeof (plainValue) === 'string') {\n plainBuf = Utils.fromUtf8ToArray(plainValue).buffer;\n } else {\n plainBuf = plainValue;\n }\n\n const encObj = await this.aesEncrypt(plainBuf, key);\n const iv = Utils.fromBufferToB64(encObj.iv);\n const data = Utils.fromBufferToB64(encObj.data);\n const mac = encObj.mac != null ? Utils.fromBufferToB64(encObj.mac) : null;\n return new EncString(encObj.key.encType, data, iv, mac);\n }\n\n async encryptToBytes(plainValue: ArrayBuffer, key?: SymmetricCryptoKey): Promise {\n const encValue = await this.aesEncrypt(plainValue, key);\n let macLen = 0;\n if (encValue.mac != null) {\n macLen = encValue.mac.byteLength;\n }\n\n const encBytes = new Uint8Array(1 + encValue.iv.byteLength + macLen + encValue.data.byteLength);\n encBytes.set([encValue.key.encType]);\n encBytes.set(new Uint8Array(encValue.iv), 1);\n if (encValue.mac != null) {\n encBytes.set(new Uint8Array(encValue.mac), 1 + encValue.iv.byteLength);\n }\n\n encBytes.set(new Uint8Array(encValue.data), 1 + encValue.iv.byteLength + macLen);\n return new EncArrayBuffer(encBytes.buffer);\n }\n\n async rsaEncrypt(data: ArrayBuffer, publicKey?: ArrayBuffer): Promise {\n if (publicKey == null) {\n publicKey = await this.getPublicKey();\n }\n if (publicKey == null) {\n throw new Error('Public key unavailable.');\n }\n\n const encBytes = await this.cryptoFunctionService.rsaEncrypt(data, publicKey, 'sha1');\n return new EncString(EncryptionType.Rsa2048_OaepSha1_B64, Utils.fromBufferToB64(encBytes));\n }\n\n async rsaDecrypt(encValue: string, privateKeyValue?: ArrayBuffer): Promise {\n const headerPieces = encValue.split('.');\n let encType: EncryptionType = null;\n let encPieces: string[];\n\n if (headerPieces.length === 1) {\n encType = EncryptionType.Rsa2048_OaepSha256_B64;\n encPieces = [headerPieces[0]];\n } else if (headerPieces.length === 2) {\n try {\n encType = parseInt(headerPieces[0], null);\n encPieces = headerPieces[1].split('|');\n } catch (e) { }\n }\n\n switch (encType) {\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_B64:\n // HmacSha256 types are deprecated\n case EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:\n break;\n default:\n throw new Error('encType unavailable.');\n }\n\n if (encPieces == null || encPieces.length <= 0) {\n throw new Error('encPieces unavailable.');\n }\n\n const data = Utils.fromB64ToArray(encPieces[0]).buffer;\n const privateKey = privateKeyValue ?? await this.getPrivateKey();\n if (privateKey == null) {\n throw new Error('No private key.');\n }\n\n let alg: 'sha1' | 'sha256' = 'sha1';\n switch (encType) {\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:\n alg = 'sha256';\n break;\n case EncryptionType.Rsa2048_OaepSha1_B64:\n case EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:\n break;\n default:\n throw new Error('encType unavailable.');\n }\n\n return this.cryptoFunctionService.rsaDecrypt(data, privateKey, alg);\n }\n\n async decryptToBytes(encString: EncString, key?: SymmetricCryptoKey): Promise {\n const iv = Utils.fromB64ToArray(encString.iv).buffer;\n const data = Utils.fromB64ToArray(encString.data).buffer;\n const mac = encString.mac ? Utils.fromB64ToArray(encString.mac).buffer : null;\n const decipher = await this.aesDecryptToBytes(encString.encryptionType, data, iv, mac, key);\n if (decipher == null) {\n return null;\n }\n\n return decipher;\n }\n\n async decryptToUtf8(encString: EncString, key?: SymmetricCryptoKey): Promise {\n return await this.aesDecryptToUtf8(encString.encryptionType, encString.data,\n encString.iv, encString.mac, key);\n }\n\n async decryptFromBytes(encBuf: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n if (encBuf == null) {\n throw new Error('no encBuf.');\n }\n\n const encBytes = new Uint8Array(encBuf);\n const encType = encBytes[0];\n let ctBytes: Uint8Array = null;\n let ivBytes: Uint8Array = null;\n let macBytes: Uint8Array = null;\n\n switch (encType) {\n case EncryptionType.AesCbc128_HmacSha256_B64:\n case EncryptionType.AesCbc256_HmacSha256_B64:\n if (encBytes.length <= 49) { // 1 + 16 + 32 + ctLength\n return null;\n }\n\n ivBytes = encBytes.slice(1, 17);\n macBytes = encBytes.slice(17, 49);\n ctBytes = encBytes.slice(49);\n break;\n case EncryptionType.AesCbc256_B64:\n if (encBytes.length <= 17) { // 1 + 16 + ctLength\n return null;\n }\n\n ivBytes = encBytes.slice(1, 17);\n ctBytes = encBytes.slice(17);\n break;\n default:\n return null;\n }\n\n return await this.aesDecryptToBytes(encType, ctBytes.buffer, ivBytes.buffer,\n macBytes != null ? macBytes.buffer : null, key);\n }\n\n // EFForg/OpenWireless\n // ref https://github.com/EFForg/OpenWireless/blob/master/app/js/diceware.js\n async randomNumber(min: number, max: number): Promise {\n let rval = 0;\n const range = max - min + 1;\n const bitsNeeded = Math.ceil(Math.log2(range));\n if (bitsNeeded > 53) {\n throw new Error('We cannot generate numbers larger than 53 bits.');\n }\n\n const bytesNeeded = Math.ceil(bitsNeeded / 8);\n const mask = Math.pow(2, bitsNeeded) - 1;\n // 7776 -> (2^13 = 8192) -1 == 8191 or 0x00001111 11111111\n\n // Fill a byte array with N random numbers\n const byteArray = new Uint8Array(await this.cryptoFunctionService.randomBytes(bytesNeeded));\n\n let p = (bytesNeeded - 1) * 8;\n for (let i = 0; i < bytesNeeded; i++) {\n rval += byteArray[i] * Math.pow(2, p);\n p -= 8;\n }\n\n // Use & to apply the mask and reduce the number of recursive lookups\n // tslint:disable-next-line\n rval = rval & mask;\n\n if (rval >= range) {\n // Integer out of acceptable range\n return this.randomNumber(min, max);\n }\n\n // Return an integer that falls within the range\n return min + rval;\n }\n\n async validateKey(key: SymmetricCryptoKey) {\n try {\n const encPrivateKey = await this.storageService.get(Keys.encPrivateKey);\n const encKey = await this.getEncKey(key);\n if (encPrivateKey == null || encKey == null) {\n return false;\n }\n\n const privateKey = await this.decryptToBytes(new EncString(encPrivateKey), encKey);\n await this.cryptoFunctionService.rsaExtractPublicKey(privateKey);\n } catch (e) {\n return false;\n }\n\n return true;\n }\n\n // Helpers\n\n protected async storeKey(key: SymmetricCryptoKey) {\n if (await this.shouldStoreKey('auto') || await this.shouldStoreKey('biometric')) {\n this.secureStorageService.save(Keys.key, key.keyB64);\n } else {\n this.secureStorageService.remove(Keys.key);\n }\n }\n\n protected async shouldStoreKey(keySuffix: KeySuffixOptions) {\n let shouldStoreKey = false;\n if (keySuffix === 'auto') {\n const vaultTimeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n shouldStoreKey = vaultTimeout == null;\n } else if (keySuffix === 'biometric') {\n const biometricUnlock = await this.storageService.get(ConstantsService.biometricUnlockKey);\n shouldStoreKey = biometricUnlock && this.platformUtilService.supportsSecureStorage();\n }\n return shouldStoreKey;\n }\n\n protected retrieveKeyFromStorage(keySuffix: KeySuffixOptions) {\n return this.secureStorageService.get(Keys.key, { keySuffix: keySuffix });\n }\n\n private async aesEncrypt(data: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n const obj = new EncryptedObject();\n obj.key = await this.getKeyForEncryption(key);\n obj.iv = await this.cryptoFunctionService.randomBytes(16);\n obj.data = await this.cryptoFunctionService.aesEncrypt(data, obj.iv, obj.key.encKey);\n\n if (obj.key.macKey != null) {\n const macData = new Uint8Array(obj.iv.byteLength + obj.data.byteLength);\n macData.set(new Uint8Array(obj.iv), 0);\n macData.set(new Uint8Array(obj.data), obj.iv.byteLength);\n obj.mac = await this.cryptoFunctionService.hmac(macData.buffer, obj.key.macKey, 'sha256');\n }\n\n return obj;\n }\n\n private async aesDecryptToUtf8(encType: EncryptionType, data: string, iv: string, mac: string,\n key: SymmetricCryptoKey): Promise {\n const keyForEnc = await this.getKeyForEncryption(key);\n const theKey = this.resolveLegacyKey(encType, keyForEnc);\n\n if (theKey.macKey != null && mac == null) {\n this.logService.error('mac required.');\n return null;\n }\n\n if (theKey.encType !== encType) {\n this.logService.error('encType unavailable.');\n return null;\n }\n\n const fastParams = this.cryptoFunctionService.aesDecryptFastParameters(data, iv, mac, theKey);\n if (fastParams.macKey != null && fastParams.mac != null) {\n const computedMac = await this.cryptoFunctionService.hmacFast(fastParams.macData,\n fastParams.macKey, 'sha256');\n const macsEqual = await this.cryptoFunctionService.compareFast(fastParams.mac, computedMac);\n if (!macsEqual) {\n this.logService.error('mac failed.');\n return null;\n }\n }\n\n return this.cryptoFunctionService.aesDecryptFast(fastParams);\n }\n\n private async aesDecryptToBytes(encType: EncryptionType, data: ArrayBuffer, iv: ArrayBuffer,\n mac: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n const keyForEnc = await this.getKeyForEncryption(key);\n const theKey = this.resolveLegacyKey(encType, keyForEnc);\n\n if (theKey.macKey != null && mac == null) {\n return null;\n }\n\n if (theKey.encType !== encType) {\n return null;\n }\n\n if (theKey.macKey != null && mac != null) {\n const macData = new Uint8Array(iv.byteLength + data.byteLength);\n macData.set(new Uint8Array(iv), 0);\n macData.set(new Uint8Array(data), iv.byteLength);\n const computedMac = await this.cryptoFunctionService.hmac(macData.buffer, theKey.macKey, 'sha256');\n if (computedMac === null) {\n return null;\n }\n\n const macsMatch = await this.cryptoFunctionService.compare(mac, computedMac);\n if (!macsMatch) {\n this.logService.error('mac failed.');\n return null;\n }\n }\n\n return await this.cryptoFunctionService.aesDecrypt(data, iv, theKey.encKey);\n }\n\n private async getKeyForEncryption(key?: SymmetricCryptoKey): Promise {\n if (key != null) {\n return key;\n }\n\n const encKey = await this.getEncKey();\n if (encKey != null) {\n return encKey;\n }\n\n return await this.getKey();\n }\n\n private resolveLegacyKey(encType: EncryptionType, key: SymmetricCryptoKey): SymmetricCryptoKey {\n if (encType === EncryptionType.AesCbc128_HmacSha256_B64 &&\n key.encType === EncryptionType.AesCbc256_B64) {\n // Old encrypt-then-mac scheme, make a new key\n if (this.legacyEtmKey == null) {\n this.legacyEtmKey = new SymmetricCryptoKey(key.key, EncryptionType.AesCbc128_HmacSha256_B64);\n }\n return this.legacyEtmKey;\n }\n\n return key;\n }\n\n private async stretchKey(key: SymmetricCryptoKey): Promise {\n const newKey = new Uint8Array(64);\n const encKey = await this.cryptoFunctionService.hkdfExpand(key.key, 'enc', 32, 'sha256');\n const macKey = await this.cryptoFunctionService.hkdfExpand(key.key, 'mac', 32, 'sha256');\n newKey.set(new Uint8Array(encKey));\n newKey.set(new Uint8Array(macKey), 32);\n return new SymmetricCryptoKey(newKey.buffer);\n }\n\n private async hashPhrase(hash: ArrayBuffer, minimumEntropy: number = 64) {\n const entropyPerWord = Math.log(EEFLongWordList.length) / Math.log(2);\n let numWords = Math.ceil(minimumEntropy / entropyPerWord);\n\n const hashArr = Array.from(new Uint8Array(hash));\n const entropyAvailable = hashArr.length * 4;\n if (numWords * entropyPerWord > entropyAvailable) {\n throw new Error('Output entropy of hash function is too small');\n }\n\n const phrase: string[] = [];\n let hashNumber = bigInt.fromArray(hashArr, 256);\n while (numWords--) {\n const remainder = hashNumber.mod(EEFLongWordList.length);\n hashNumber = hashNumber.divide(EEFLongWordList.length);\n phrase.push(EEFLongWordList[remainder as any]);\n }\n return phrase;\n }\n\n private async buildEncKey(key: SymmetricCryptoKey, encKey: ArrayBuffer)\n : Promise<[SymmetricCryptoKey, EncString]> {\n let encKeyEnc: EncString = null;\n if (key.key.byteLength === 32) {\n const newKey = await this.stretchKey(key);\n encKeyEnc = await this.encrypt(encKey, newKey);\n } else if (key.key.byteLength === 64) {\n encKeyEnc = await this.encrypt(encKey, key);\n } else {\n throw new Error('Invalid key size.');\n }\n return [new SymmetricCryptoKey(encKey), encKeyEnc];\n }\n}\n","// EFF's Long Wordlist from https://www.eff.org/dice\nexport const EEFLongWordList = [\n 'abacus',\n 'abdomen',\n 'abdominal',\n 'abide',\n 'abiding',\n 'ability',\n 'ablaze',\n 'able',\n 'abnormal',\n 'abrasion',\n 'abrasive',\n 'abreast',\n 'abridge',\n 'abroad',\n 'abruptly',\n 'absence',\n 'absentee',\n 'absently',\n 'absinthe',\n 'absolute',\n 'absolve',\n 'abstain',\n 'abstract',\n 'absurd',\n 'accent',\n 'acclaim',\n 'acclimate',\n 'accompany',\n 'account',\n 'accuracy',\n 'accurate',\n 'accustom',\n 'acetone',\n 'achiness',\n 'aching',\n 'acid',\n 'acorn',\n 'acquaint',\n 'acquire',\n 'acre',\n 'acrobat',\n 'acronym',\n 'acting',\n 'action',\n 'activate',\n 'activator',\n 'active',\n 'activism',\n 'activist',\n 'activity',\n 'actress',\n 'acts',\n 'acutely',\n 'acuteness',\n 'aeration',\n 'aerobics',\n 'aerosol',\n 'aerospace',\n 'afar',\n 'affair',\n 'affected',\n 'affecting',\n 'affection',\n 'affidavit',\n 'affiliate',\n 'affirm',\n 'affix',\n 'afflicted',\n 'affluent',\n 'afford',\n 'affront',\n 'aflame',\n 'afloat',\n 'aflutter',\n 'afoot',\n 'afraid',\n 'afterglow',\n 'afterlife',\n 'aftermath',\n 'aftermost',\n 'afternoon',\n 'aged',\n 'ageless',\n 'agency',\n 'agenda',\n 'agent',\n 'aggregate',\n 'aghast',\n 'agile',\n 'agility',\n 'aging',\n 'agnostic',\n 'agonize',\n 'agonizing',\n 'agony',\n 'agreeable',\n 'agreeably',\n 'agreed',\n 'agreeing',\n 'agreement',\n 'aground',\n 'ahead',\n 'ahoy',\n 'aide',\n 'aids',\n 'aim',\n 'ajar',\n 'alabaster',\n 'alarm',\n 'albatross',\n 'album',\n 'alfalfa',\n 'algebra',\n 'algorithm',\n 'alias',\n 'alibi',\n 'alienable',\n 'alienate',\n 'aliens',\n 'alike',\n 'alive',\n 'alkaline',\n 'alkalize',\n 'almanac',\n 'almighty',\n 'almost',\n 'aloe',\n 'aloft',\n 'aloha',\n 'alone',\n 'alongside',\n 'aloof',\n 'alphabet',\n 'alright',\n 'although',\n 'altitude',\n 'alto',\n 'aluminum',\n 'alumni',\n 'always',\n 'amaretto',\n 'amaze',\n 'amazingly',\n 'amber',\n 'ambiance',\n 'ambiguity',\n 'ambiguous',\n 'ambition',\n 'ambitious',\n 'ambulance',\n 'ambush',\n 'amendable',\n 'amendment',\n 'amends',\n 'amenity',\n 'amiable',\n 'amicably',\n 'amid',\n 'amigo',\n 'amino',\n 'amiss',\n 'ammonia',\n 'ammonium',\n 'amnesty',\n 'amniotic',\n 'among',\n 'amount',\n 'amperage',\n 'ample',\n 'amplifier',\n 'amplify',\n 'amply',\n 'amuck',\n 'amulet',\n 'amusable',\n 'amused',\n 'amusement',\n 'amuser',\n 'amusing',\n 'anaconda',\n 'anaerobic',\n 'anagram',\n 'anatomist',\n 'anatomy',\n 'anchor',\n 'anchovy',\n 'ancient',\n 'android',\n 'anemia',\n 'anemic',\n 'aneurism',\n 'anew',\n 'angelfish',\n 'angelic',\n 'anger',\n 'angled',\n 'angler',\n 'angles',\n 'angling',\n 'angrily',\n 'angriness',\n 'anguished',\n 'angular',\n 'animal',\n 'animate',\n 'animating',\n 'animation',\n 'animator',\n 'anime',\n 'animosity',\n 'ankle',\n 'annex',\n 'annotate',\n 'announcer',\n 'annoying',\n 'annually',\n 'annuity',\n 'anointer',\n 'another',\n 'answering',\n 'antacid',\n 'antarctic',\n 'anteater',\n 'antelope',\n 'antennae',\n 'anthem',\n 'anthill',\n 'anthology',\n 'antibody',\n 'antics',\n 'antidote',\n 'antihero',\n 'antiquely',\n 'antiques',\n 'antiquity',\n 'antirust',\n 'antitoxic',\n 'antitrust',\n 'antiviral',\n 'antivirus',\n 'antler',\n 'antonym',\n 'antsy',\n 'anvil',\n 'anybody',\n 'anyhow',\n 'anymore',\n 'anyone',\n 'anyplace',\n 'anything',\n 'anytime',\n 'anyway',\n 'anywhere',\n 'aorta',\n 'apache',\n 'apostle',\n 'appealing',\n 'appear',\n 'appease',\n 'appeasing',\n 'appendage',\n 'appendix',\n 'appetite',\n 'appetizer',\n 'applaud',\n 'applause',\n 'apple',\n 'appliance',\n 'applicant',\n 'applied',\n 'apply',\n 'appointee',\n 'appraisal',\n 'appraiser',\n 'apprehend',\n 'approach',\n 'approval',\n 'approve',\n 'apricot',\n 'april',\n 'apron',\n 'aptitude',\n 'aptly',\n 'aqua',\n 'aqueduct',\n 'arbitrary',\n 'arbitrate',\n 'ardently',\n 'area',\n 'arena',\n 'arguable',\n 'arguably',\n 'argue',\n 'arise',\n 'armadillo',\n 'armband',\n 'armchair',\n 'armed',\n 'armful',\n 'armhole',\n 'arming',\n 'armless',\n 'armoire',\n 'armored',\n 'armory',\n 'armrest',\n 'army',\n 'aroma',\n 'arose',\n 'around',\n 'arousal',\n 'arrange',\n 'array',\n 'arrest',\n 'arrival',\n 'arrive',\n 'arrogance',\n 'arrogant',\n 'arson',\n 'art',\n 'ascend',\n 'ascension',\n 'ascent',\n 'ascertain',\n 'ashamed',\n 'ashen',\n 'ashes',\n 'ashy',\n 'aside',\n 'askew',\n 'asleep',\n 'asparagus',\n 'aspect',\n 'aspirate',\n 'aspire',\n 'aspirin',\n 'astonish',\n 'astound',\n 'astride',\n 'astrology',\n 'astronaut',\n 'astronomy',\n 'astute',\n 'atlantic',\n 'atlas',\n 'atom',\n 'atonable',\n 'atop',\n 'atrium',\n 'atrocious',\n 'atrophy',\n 'attach',\n 'attain',\n 'attempt',\n 'attendant',\n 'attendee',\n 'attention',\n 'attentive',\n 'attest',\n 'attic',\n 'attire',\n 'attitude',\n 'attractor',\n 'attribute',\n 'atypical',\n 'auction',\n 'audacious',\n 'audacity',\n 'audible',\n 'audibly',\n 'audience',\n 'audio',\n 'audition',\n 'augmented',\n 'august',\n 'authentic',\n 'author',\n 'autism',\n 'autistic',\n 'autograph',\n 'automaker',\n 'automated',\n 'automatic',\n 'autopilot',\n 'available',\n 'avalanche',\n 'avatar',\n 'avenge',\n 'avenging',\n 'avenue',\n 'average',\n 'aversion',\n 'avert',\n 'aviation',\n 'aviator',\n 'avid',\n 'avoid',\n 'await',\n 'awaken',\n 'award',\n 'aware',\n 'awhile',\n 'awkward',\n 'awning',\n 'awoke',\n 'awry',\n 'axis',\n 'babble',\n 'babbling',\n 'babied',\n 'baboon',\n 'backache',\n 'backboard',\n 'backboned',\n 'backdrop',\n 'backed',\n 'backer',\n 'backfield',\n 'backfire',\n 'backhand',\n 'backing',\n 'backlands',\n 'backlash',\n 'backless',\n 'backlight',\n 'backlit',\n 'backlog',\n 'backpack',\n 'backpedal',\n 'backrest',\n 'backroom',\n 'backshift',\n 'backside',\n 'backslid',\n 'backspace',\n 'backspin',\n 'backstab',\n 'backstage',\n 'backtalk',\n 'backtrack',\n 'backup',\n 'backward',\n 'backwash',\n 'backwater',\n 'backyard',\n 'bacon',\n 'bacteria',\n 'bacterium',\n 'badass',\n 'badge',\n 'badland',\n 'badly',\n 'badness',\n 'baffle',\n 'baffling',\n 'bagel',\n 'bagful',\n 'baggage',\n 'bagged',\n 'baggie',\n 'bagginess',\n 'bagging',\n 'baggy',\n 'bagpipe',\n 'baguette',\n 'baked',\n 'bakery',\n 'bakeshop',\n 'baking',\n 'balance',\n 'balancing',\n 'balcony',\n 'balmy',\n 'balsamic',\n 'bamboo',\n 'banana',\n 'banish',\n 'banister',\n 'banjo',\n 'bankable',\n 'bankbook',\n 'banked',\n 'banker',\n 'banking',\n 'banknote',\n 'bankroll',\n 'banner',\n 'bannister',\n 'banshee',\n 'banter',\n 'barbecue',\n 'barbed',\n 'barbell',\n 'barber',\n 'barcode',\n 'barge',\n 'bargraph',\n 'barista',\n 'baritone',\n 'barley',\n 'barmaid',\n 'barman',\n 'barn',\n 'barometer',\n 'barrack',\n 'barracuda',\n 'barrel',\n 'barrette',\n 'barricade',\n 'barrier',\n 'barstool',\n 'bartender',\n 'barterer',\n 'bash',\n 'basically',\n 'basics',\n 'basil',\n 'basin',\n 'basis',\n 'basket',\n 'batboy',\n 'batch',\n 'bath',\n 'baton',\n 'bats',\n 'battalion',\n 'battered',\n 'battering',\n 'battery',\n 'batting',\n 'battle',\n 'bauble',\n 'bazooka',\n 'blabber',\n 'bladder',\n 'blade',\n 'blah',\n 'blame',\n 'blaming',\n 'blanching',\n 'blandness',\n 'blank',\n 'blaspheme',\n 'blasphemy',\n 'blast',\n 'blatancy',\n 'blatantly',\n 'blazer',\n 'blazing',\n 'bleach',\n 'bleak',\n 'bleep',\n 'blemish',\n 'blend',\n 'bless',\n 'blighted',\n 'blimp',\n 'bling',\n 'blinked',\n 'blinker',\n 'blinking',\n 'blinks',\n 'blip',\n 'blissful',\n 'blitz',\n 'blizzard',\n 'bloated',\n 'bloating',\n 'blob',\n 'blog',\n 'bloomers',\n 'blooming',\n 'blooper',\n 'blot',\n 'blouse',\n 'blubber',\n 'bluff',\n 'bluish',\n 'blunderer',\n 'blunt',\n 'blurb',\n 'blurred',\n 'blurry',\n 'blurt',\n 'blush',\n 'blustery',\n 'boaster',\n 'boastful',\n 'boasting',\n 'boat',\n 'bobbed',\n 'bobbing',\n 'bobble',\n 'bobcat',\n 'bobsled',\n 'bobtail',\n 'bodacious',\n 'body',\n 'bogged',\n 'boggle',\n 'bogus',\n 'boil',\n 'bok',\n 'bolster',\n 'bolt',\n 'bonanza',\n 'bonded',\n 'bonding',\n 'bondless',\n 'boned',\n 'bonehead',\n 'boneless',\n 'bonelike',\n 'boney',\n 'bonfire',\n 'bonnet',\n 'bonsai',\n 'bonus',\n 'bony',\n 'boogeyman',\n 'boogieman',\n 'book',\n 'boondocks',\n 'booted',\n 'booth',\n 'bootie',\n 'booting',\n 'bootlace',\n 'bootleg',\n 'boots',\n 'boozy',\n 'borax',\n 'boring',\n 'borough',\n 'borrower',\n 'borrowing',\n 'boss',\n 'botanical',\n 'botanist',\n 'botany',\n 'botch',\n 'both',\n 'bottle',\n 'bottling',\n 'bottom',\n 'bounce',\n 'bouncing',\n 'bouncy',\n 'bounding',\n 'boundless',\n 'bountiful',\n 'bovine',\n 'boxcar',\n 'boxer',\n 'boxing',\n 'boxlike',\n 'boxy',\n 'breach',\n 'breath',\n 'breeches',\n 'breeching',\n 'breeder',\n 'breeding',\n 'breeze',\n 'breezy',\n 'brethren',\n 'brewery',\n 'brewing',\n 'briar',\n 'bribe',\n 'brick',\n 'bride',\n 'bridged',\n 'brigade',\n 'bright',\n 'brilliant',\n 'brim',\n 'bring',\n 'brink',\n 'brisket',\n 'briskly',\n 'briskness',\n 'bristle',\n 'brittle',\n 'broadband',\n 'broadcast',\n 'broaden',\n 'broadly',\n 'broadness',\n 'broadside',\n 'broadways',\n 'broiler',\n 'broiling',\n 'broken',\n 'broker',\n 'bronchial',\n 'bronco',\n 'bronze',\n 'bronzing',\n 'brook',\n 'broom',\n 'brought',\n 'browbeat',\n 'brownnose',\n 'browse',\n 'browsing',\n 'bruising',\n 'brunch',\n 'brunette',\n 'brunt',\n 'brush',\n 'brussels',\n 'brute',\n 'brutishly',\n 'bubble',\n 'bubbling',\n 'bubbly',\n 'buccaneer',\n 'bucked',\n 'bucket',\n 'buckle',\n 'buckshot',\n 'buckskin',\n 'bucktooth',\n 'buckwheat',\n 'buddhism',\n 'buddhist',\n 'budding',\n 'buddy',\n 'budget',\n 'buffalo',\n 'buffed',\n 'buffer',\n 'buffing',\n 'buffoon',\n 'buggy',\n 'bulb',\n 'bulge',\n 'bulginess',\n 'bulgur',\n 'bulk',\n 'bulldog',\n 'bulldozer',\n 'bullfight',\n 'bullfrog',\n 'bullhorn',\n 'bullion',\n 'bullish',\n 'bullpen',\n 'bullring',\n 'bullseye',\n 'bullwhip',\n 'bully',\n 'bunch',\n 'bundle',\n 'bungee',\n 'bunion',\n 'bunkbed',\n 'bunkhouse',\n 'bunkmate',\n 'bunny',\n 'bunt',\n 'busboy',\n 'bush',\n 'busily',\n 'busload',\n 'bust',\n 'busybody',\n 'buzz',\n 'cabana',\n 'cabbage',\n 'cabbie',\n 'cabdriver',\n 'cable',\n 'caboose',\n 'cache',\n 'cackle',\n 'cacti',\n 'cactus',\n 'caddie',\n 'caddy',\n 'cadet',\n 'cadillac',\n 'cadmium',\n 'cage',\n 'cahoots',\n 'cake',\n 'calamari',\n 'calamity',\n 'calcium',\n 'calculate',\n 'calculus',\n 'caliber',\n 'calibrate',\n 'calm',\n 'caloric',\n 'calorie',\n 'calzone',\n 'camcorder',\n 'cameo',\n 'camera',\n 'camisole',\n 'camper',\n 'campfire',\n 'camping',\n 'campsite',\n 'campus',\n 'canal',\n 'canary',\n 'cancel',\n 'candied',\n 'candle',\n 'candy',\n 'cane',\n 'canine',\n 'canister',\n 'cannabis',\n 'canned',\n 'canning',\n 'cannon',\n 'cannot',\n 'canola',\n 'canon',\n 'canopener',\n 'canopy',\n 'canteen',\n 'canyon',\n 'capable',\n 'capably',\n 'capacity',\n 'cape',\n 'capillary',\n 'capital',\n 'capitol',\n 'capped',\n 'capricorn',\n 'capsize',\n 'capsule',\n 'caption',\n 'captivate',\n 'captive',\n 'captivity',\n 'capture',\n 'caramel',\n 'carat',\n 'caravan',\n 'carbon',\n 'cardboard',\n 'carded',\n 'cardiac',\n 'cardigan',\n 'cardinal',\n 'cardstock',\n 'carefully',\n 'caregiver',\n 'careless',\n 'caress',\n 'caretaker',\n 'cargo',\n 'caring',\n 'carless',\n 'carload',\n 'carmaker',\n 'carnage',\n 'carnation',\n 'carnival',\n 'carnivore',\n 'carol',\n 'carpenter',\n 'carpentry',\n 'carpool',\n 'carport',\n 'carried',\n 'carrot',\n 'carrousel',\n 'carry',\n 'cartel',\n 'cartload',\n 'carton',\n 'cartoon',\n 'cartridge',\n 'cartwheel',\n 'carve',\n 'carving',\n 'carwash',\n 'cascade',\n 'case',\n 'cash',\n 'casing',\n 'casino',\n 'casket',\n 'cassette',\n 'casually',\n 'casualty',\n 'catacomb',\n 'catalog',\n 'catalyst',\n 'catalyze',\n 'catapult',\n 'cataract',\n 'catatonic',\n 'catcall',\n 'catchable',\n 'catcher',\n 'catching',\n 'catchy',\n 'caterer',\n 'catering',\n 'catfight',\n 'catfish',\n 'cathedral',\n 'cathouse',\n 'catlike',\n 'catnap',\n 'catnip',\n 'catsup',\n 'cattail',\n 'cattishly',\n 'cattle',\n 'catty',\n 'catwalk',\n 'caucasian',\n 'caucus',\n 'causal',\n 'causation',\n 'cause',\n 'causing',\n 'cauterize',\n 'caution',\n 'cautious',\n 'cavalier',\n 'cavalry',\n 'caviar',\n 'cavity',\n 'cedar',\n 'celery',\n 'celestial',\n 'celibacy',\n 'celibate',\n 'celtic',\n 'cement',\n 'census',\n 'ceramics',\n 'ceremony',\n 'certainly',\n 'certainty',\n 'certified',\n 'certify',\n 'cesarean',\n 'cesspool',\n 'chafe',\n 'chaffing',\n 'chain',\n 'chair',\n 'chalice',\n 'challenge',\n 'chamber',\n 'chamomile',\n 'champion',\n 'chance',\n 'change',\n 'channel',\n 'chant',\n 'chaos',\n 'chaperone',\n 'chaplain',\n 'chapped',\n 'chaps',\n 'chapter',\n 'character',\n 'charbroil',\n 'charcoal',\n 'charger',\n 'charging',\n 'chariot',\n 'charity',\n 'charm',\n 'charred',\n 'charter',\n 'charting',\n 'chase',\n 'chasing',\n 'chaste',\n 'chastise',\n 'chastity',\n 'chatroom',\n 'chatter',\n 'chatting',\n 'chatty',\n 'cheating',\n 'cheddar',\n 'cheek',\n 'cheer',\n 'cheese',\n 'cheesy',\n 'chef',\n 'chemicals',\n 'chemist',\n 'chemo',\n 'cherisher',\n 'cherub',\n 'chess',\n 'chest',\n 'chevron',\n 'chevy',\n 'chewable',\n 'chewer',\n 'chewing',\n 'chewy',\n 'chief',\n 'chihuahua',\n 'childcare',\n 'childhood',\n 'childish',\n 'childless',\n 'childlike',\n 'chili',\n 'chill',\n 'chimp',\n 'chip',\n 'chirping',\n 'chirpy',\n 'chitchat',\n 'chivalry',\n 'chive',\n 'chloride',\n 'chlorine',\n 'choice',\n 'chokehold',\n 'choking',\n 'chomp',\n 'chooser',\n 'choosing',\n 'choosy',\n 'chop',\n 'chosen',\n 'chowder',\n 'chowtime',\n 'chrome',\n 'chubby',\n 'chuck',\n 'chug',\n 'chummy',\n 'chump',\n 'chunk',\n 'churn',\n 'chute',\n 'cider',\n 'cilantro',\n 'cinch',\n 'cinema',\n 'cinnamon',\n 'circle',\n 'circling',\n 'circular',\n 'circulate',\n 'circus',\n 'citable',\n 'citadel',\n 'citation',\n 'citizen',\n 'citric',\n 'citrus',\n 'city',\n 'civic',\n 'civil',\n 'clad',\n 'claim',\n 'clambake',\n 'clammy',\n 'clamor',\n 'clamp',\n 'clamshell',\n 'clang',\n 'clanking',\n 'clapped',\n 'clapper',\n 'clapping',\n 'clarify',\n 'clarinet',\n 'clarity',\n 'clash',\n 'clasp',\n 'class',\n 'clatter',\n 'clause',\n 'clavicle',\n 'claw',\n 'clay',\n 'clean',\n 'clear',\n 'cleat',\n 'cleaver',\n 'cleft',\n 'clench',\n 'clergyman',\n 'clerical',\n 'clerk',\n 'clever',\n 'clicker',\n 'client',\n 'climate',\n 'climatic',\n 'cling',\n 'clinic',\n 'clinking',\n 'clip',\n 'clique',\n 'cloak',\n 'clobber',\n 'clock',\n 'clone',\n 'cloning',\n 'closable',\n 'closure',\n 'clothes',\n 'clothing',\n 'cloud',\n 'clover',\n 'clubbed',\n 'clubbing',\n 'clubhouse',\n 'clump',\n 'clumsily',\n 'clumsy',\n 'clunky',\n 'clustered',\n 'clutch',\n 'clutter',\n 'coach',\n 'coagulant',\n 'coastal',\n 'coaster',\n 'coasting',\n 'coastland',\n 'coastline',\n 'coat',\n 'coauthor',\n 'cobalt',\n 'cobbler',\n 'cobweb',\n 'cocoa',\n 'coconut',\n 'cod',\n 'coeditor',\n 'coerce',\n 'coexist',\n 'coffee',\n 'cofounder',\n 'cognition',\n 'cognitive',\n 'cogwheel',\n 'coherence',\n 'coherent',\n 'cohesive',\n 'coil',\n 'coke',\n 'cola',\n 'cold',\n 'coleslaw',\n 'coliseum',\n 'collage',\n 'collapse',\n 'collar',\n 'collected',\n 'collector',\n 'collide',\n 'collie',\n 'collision',\n 'colonial',\n 'colonist',\n 'colonize',\n 'colony',\n 'colossal',\n 'colt',\n 'coma',\n 'come',\n 'comfort',\n 'comfy',\n 'comic',\n 'coming',\n 'comma',\n 'commence',\n 'commend',\n 'comment',\n 'commerce',\n 'commode',\n 'commodity',\n 'commodore',\n 'common',\n 'commotion',\n 'commute',\n 'commuting',\n 'compacted',\n 'compacter',\n 'compactly',\n 'compactor',\n 'companion',\n 'company',\n 'compare',\n 'compel',\n 'compile',\n 'comply',\n 'component',\n 'composed',\n 'composer',\n 'composite',\n 'compost',\n 'composure',\n 'compound',\n 'compress',\n 'comprised',\n 'computer',\n 'computing',\n 'comrade',\n 'concave',\n 'conceal',\n 'conceded',\n 'concept',\n 'concerned',\n 'concert',\n 'conch',\n 'concierge',\n 'concise',\n 'conclude',\n 'concrete',\n 'concur',\n 'condense',\n 'condiment',\n 'condition',\n 'condone',\n 'conducive',\n 'conductor',\n 'conduit',\n 'cone',\n 'confess',\n 'confetti',\n 'confidant',\n 'confident',\n 'confider',\n 'confiding',\n 'configure',\n 'confined',\n 'confining',\n 'confirm',\n 'conflict',\n 'conform',\n 'confound',\n 'confront',\n 'confused',\n 'confusing',\n 'confusion',\n 'congenial',\n 'congested',\n 'congrats',\n 'congress',\n 'conical',\n 'conjoined',\n 'conjure',\n 'conjuror',\n 'connected',\n 'connector',\n 'consensus',\n 'consent',\n 'console',\n 'consoling',\n 'consonant',\n 'constable',\n 'constant',\n 'constrain',\n 'constrict',\n 'construct',\n 'consult',\n 'consumer',\n 'consuming',\n 'contact',\n 'container',\n 'contempt',\n 'contend',\n 'contented',\n 'contently',\n 'contents',\n 'contest',\n 'context',\n 'contort',\n 'contour',\n 'contrite',\n 'control',\n 'contusion',\n 'convene',\n 'convent',\n 'copartner',\n 'cope',\n 'copied',\n 'copier',\n 'copilot',\n 'coping',\n 'copious',\n 'copper',\n 'copy',\n 'coral',\n 'cork',\n 'cornball',\n 'cornbread',\n 'corncob',\n 'cornea',\n 'corned',\n 'corner',\n 'cornfield',\n 'cornflake',\n 'cornhusk',\n 'cornmeal',\n 'cornstalk',\n 'corny',\n 'coronary',\n 'coroner',\n 'corporal',\n 'corporate',\n 'corral',\n 'correct',\n 'corridor',\n 'corrode',\n 'corroding',\n 'corrosive',\n 'corsage',\n 'corset',\n 'cortex',\n 'cosigner',\n 'cosmetics',\n 'cosmic',\n 'cosmos',\n 'cosponsor',\n 'cost',\n 'cottage',\n 'cotton',\n 'couch',\n 'cough',\n 'could',\n 'countable',\n 'countdown',\n 'counting',\n 'countless',\n 'country',\n 'county',\n 'courier',\n 'covenant',\n 'cover',\n 'coveted',\n 'coveting',\n 'coyness',\n 'cozily',\n 'coziness',\n 'cozy',\n 'crabbing',\n 'crabgrass',\n 'crablike',\n 'crabmeat',\n 'cradle',\n 'cradling',\n 'crafter',\n 'craftily',\n 'craftsman',\n 'craftwork',\n 'crafty',\n 'cramp',\n 'cranberry',\n 'crane',\n 'cranial',\n 'cranium',\n 'crank',\n 'crate',\n 'crave',\n 'craving',\n 'crawfish',\n 'crawlers',\n 'crawling',\n 'crayfish',\n 'crayon',\n 'crazed',\n 'crazily',\n 'craziness',\n 'crazy',\n 'creamed',\n 'creamer',\n 'creamlike',\n 'crease',\n 'creasing',\n 'creatable',\n 'create',\n 'creation',\n 'creative',\n 'creature',\n 'credible',\n 'credibly',\n 'credit',\n 'creed',\n 'creme',\n 'creole',\n 'crepe',\n 'crept',\n 'crescent',\n 'crested',\n 'cresting',\n 'crestless',\n 'crevice',\n 'crewless',\n 'crewman',\n 'crewmate',\n 'crib',\n 'cricket',\n 'cried',\n 'crier',\n 'crimp',\n 'crimson',\n 'cringe',\n 'cringing',\n 'crinkle',\n 'crinkly',\n 'crisped',\n 'crisping',\n 'crisply',\n 'crispness',\n 'crispy',\n 'criteria',\n 'critter',\n 'croak',\n 'crock',\n 'crook',\n 'croon',\n 'crop',\n 'cross',\n 'crouch',\n 'crouton',\n 'crowbar',\n 'crowd',\n 'crown',\n 'crucial',\n 'crudely',\n 'crudeness',\n 'cruelly',\n 'cruelness',\n 'cruelty',\n 'crumb',\n 'crummiest',\n 'crummy',\n 'crumpet',\n 'crumpled',\n 'cruncher',\n 'crunching',\n 'crunchy',\n 'crusader',\n 'crushable',\n 'crushed',\n 'crusher',\n 'crushing',\n 'crust',\n 'crux',\n 'crying',\n 'cryptic',\n 'crystal',\n 'cubbyhole',\n 'cube',\n 'cubical',\n 'cubicle',\n 'cucumber',\n 'cuddle',\n 'cuddly',\n 'cufflink',\n 'culinary',\n 'culminate',\n 'culpable',\n 'culprit',\n 'cultivate',\n 'cultural',\n 'culture',\n 'cupbearer',\n 'cupcake',\n 'cupid',\n 'cupped',\n 'cupping',\n 'curable',\n 'curator',\n 'curdle',\n 'cure',\n 'curfew',\n 'curing',\n 'curled',\n 'curler',\n 'curliness',\n 'curling',\n 'curly',\n 'curry',\n 'curse',\n 'cursive',\n 'cursor',\n 'curtain',\n 'curtly',\n 'curtsy',\n 'curvature',\n 'curve',\n 'curvy',\n 'cushy',\n 'cusp',\n 'cussed',\n 'custard',\n 'custodian',\n 'custody',\n 'customary',\n 'customer',\n 'customize',\n 'customs',\n 'cut',\n 'cycle',\n 'cyclic',\n 'cycling',\n 'cyclist',\n 'cylinder',\n 'cymbal',\n 'cytoplasm',\n 'cytoplast',\n 'dab',\n 'dad',\n 'daffodil',\n 'dagger',\n 'daily',\n 'daintily',\n 'dainty',\n 'dairy',\n 'daisy',\n 'dallying',\n 'dance',\n 'dancing',\n 'dandelion',\n 'dander',\n 'dandruff',\n 'dandy',\n 'danger',\n 'dangle',\n 'dangling',\n 'daredevil',\n 'dares',\n 'daringly',\n 'darkened',\n 'darkening',\n 'darkish',\n 'darkness',\n 'darkroom',\n 'darling',\n 'darn',\n 'dart',\n 'darwinism',\n 'dash',\n 'dastardly',\n 'data',\n 'datebook',\n 'dating',\n 'daughter',\n 'daunting',\n 'dawdler',\n 'dawn',\n 'daybed',\n 'daybreak',\n 'daycare',\n 'daydream',\n 'daylight',\n 'daylong',\n 'dayroom',\n 'daytime',\n 'dazzler',\n 'dazzling',\n 'deacon',\n 'deafening',\n 'deafness',\n 'dealer',\n 'dealing',\n 'dealmaker',\n 'dealt',\n 'dean',\n 'debatable',\n 'debate',\n 'debating',\n 'debit',\n 'debrief',\n 'debtless',\n 'debtor',\n 'debug',\n 'debunk',\n 'decade',\n 'decaf',\n 'decal',\n 'decathlon',\n 'decay',\n 'deceased',\n 'deceit',\n 'deceiver',\n 'deceiving',\n 'december',\n 'decency',\n 'decent',\n 'deception',\n 'deceptive',\n 'decibel',\n 'decidable',\n 'decimal',\n 'decimeter',\n 'decipher',\n 'deck',\n 'declared',\n 'decline',\n 'decode',\n 'decompose',\n 'decorated',\n 'decorator',\n 'decoy',\n 'decrease',\n 'decree',\n 'dedicate',\n 'dedicator',\n 'deduce',\n 'deduct',\n 'deed',\n 'deem',\n 'deepen',\n 'deeply',\n 'deepness',\n 'deface',\n 'defacing',\n 'defame',\n 'default',\n 'defeat',\n 'defection',\n 'defective',\n 'defendant',\n 'defender',\n 'defense',\n 'defensive',\n 'deferral',\n 'deferred',\n 'defiance',\n 'defiant',\n 'defile',\n 'defiling',\n 'define',\n 'definite',\n 'deflate',\n 'deflation',\n 'deflator',\n 'deflected',\n 'deflector',\n 'defog',\n 'deforest',\n 'defraud',\n 'defrost',\n 'deftly',\n 'defuse',\n 'defy',\n 'degraded',\n 'degrading',\n 'degrease',\n 'degree',\n 'dehydrate',\n 'deity',\n 'dejected',\n 'delay',\n 'delegate',\n 'delegator',\n 'delete',\n 'deletion',\n 'delicacy',\n 'delicate',\n 'delicious',\n 'delighted',\n 'delirious',\n 'delirium',\n 'deliverer',\n 'delivery',\n 'delouse',\n 'delta',\n 'deluge',\n 'delusion',\n 'deluxe',\n 'demanding',\n 'demeaning',\n 'demeanor',\n 'demise',\n 'democracy',\n 'democrat',\n 'demote',\n 'demotion',\n 'demystify',\n 'denatured',\n 'deniable',\n 'denial',\n 'denim',\n 'denote',\n 'dense',\n 'density',\n 'dental',\n 'dentist',\n 'denture',\n 'deny',\n 'deodorant',\n 'deodorize',\n 'departed',\n 'departure',\n 'depict',\n 'deplete',\n 'depletion',\n 'deplored',\n 'deploy',\n 'deport',\n 'depose',\n 'depraved',\n 'depravity',\n 'deprecate',\n 'depress',\n 'deprive',\n 'depth',\n 'deputize',\n 'deputy',\n 'derail',\n 'deranged',\n 'derby',\n 'derived',\n 'desecrate',\n 'deserve',\n 'deserving',\n 'designate',\n 'designed',\n 'designer',\n 'designing',\n 'deskbound',\n 'desktop',\n 'deskwork',\n 'desolate',\n 'despair',\n 'despise',\n 'despite',\n 'destiny',\n 'destitute',\n 'destruct',\n 'detached',\n 'detail',\n 'detection',\n 'detective',\n 'detector',\n 'detention',\n 'detergent',\n 'detest',\n 'detonate',\n 'detonator',\n 'detoxify',\n 'detract',\n 'deuce',\n 'devalue',\n 'deviancy',\n 'deviant',\n 'deviate',\n 'deviation',\n 'deviator',\n 'device',\n 'devious',\n 'devotedly',\n 'devotee',\n 'devotion',\n 'devourer',\n 'devouring',\n 'devoutly',\n 'dexterity',\n 'dexterous',\n 'diabetes',\n 'diabetic',\n 'diabolic',\n 'diagnoses',\n 'diagnosis',\n 'diagram',\n 'dial',\n 'diameter',\n 'diaper',\n 'diaphragm',\n 'diary',\n 'dice',\n 'dicing',\n 'dictate',\n 'dictation',\n 'dictator',\n 'difficult',\n 'diffused',\n 'diffuser',\n 'diffusion',\n 'diffusive',\n 'dig',\n 'dilation',\n 'diligence',\n 'diligent',\n 'dill',\n 'dilute',\n 'dime',\n 'diminish',\n 'dimly',\n 'dimmed',\n 'dimmer',\n 'dimness',\n 'dimple',\n 'diner',\n 'dingbat',\n 'dinghy',\n 'dinginess',\n 'dingo',\n 'dingy',\n 'dining',\n 'dinner',\n 'diocese',\n 'dioxide',\n 'diploma',\n 'dipped',\n 'dipper',\n 'dipping',\n 'directed',\n 'direction',\n 'directive',\n 'directly',\n 'directory',\n 'direness',\n 'dirtiness',\n 'disabled',\n 'disagree',\n 'disallow',\n 'disarm',\n 'disarray',\n 'disaster',\n 'disband',\n 'disbelief',\n 'disburse',\n 'discard',\n 'discern',\n 'discharge',\n 'disclose',\n 'discolor',\n 'discount',\n 'discourse',\n 'discover',\n 'discuss',\n 'disdain',\n 'disengage',\n 'disfigure',\n 'disgrace',\n 'dish',\n 'disinfect',\n 'disjoin',\n 'disk',\n 'dislike',\n 'disliking',\n 'dislocate',\n 'dislodge',\n 'disloyal',\n 'dismantle',\n 'dismay',\n 'dismiss',\n 'dismount',\n 'disobey',\n 'disorder',\n 'disown',\n 'disparate',\n 'disparity',\n 'dispatch',\n 'dispense',\n 'dispersal',\n 'dispersed',\n 'disperser',\n 'displace',\n 'display',\n 'displease',\n 'disposal',\n 'dispose',\n 'disprove',\n 'dispute',\n 'disregard',\n 'disrupt',\n 'dissuade',\n 'distance',\n 'distant',\n 'distaste',\n 'distill',\n 'distinct',\n 'distort',\n 'distract',\n 'distress',\n 'district',\n 'distrust',\n 'ditch',\n 'ditto',\n 'ditzy',\n 'dividable',\n 'divided',\n 'dividend',\n 'dividers',\n 'dividing',\n 'divinely',\n 'diving',\n 'divinity',\n 'divisible',\n 'divisibly',\n 'division',\n 'divisive',\n 'divorcee',\n 'dizziness',\n 'dizzy',\n 'doable',\n 'docile',\n 'dock',\n 'doctrine',\n 'document',\n 'dodge',\n 'dodgy',\n 'doily',\n 'doing',\n 'dole',\n 'dollar',\n 'dollhouse',\n 'dollop',\n 'dolly',\n 'dolphin',\n 'domain',\n 'domelike',\n 'domestic',\n 'dominion',\n 'dominoes',\n 'donated',\n 'donation',\n 'donator',\n 'donor',\n 'donut',\n 'doodle',\n 'doorbell',\n 'doorframe',\n 'doorknob',\n 'doorman',\n 'doormat',\n 'doornail',\n 'doorpost',\n 'doorstep',\n 'doorstop',\n 'doorway',\n 'doozy',\n 'dork',\n 'dormitory',\n 'dorsal',\n 'dosage',\n 'dose',\n 'dotted',\n 'doubling',\n 'douche',\n 'dove',\n 'down',\n 'dowry',\n 'doze',\n 'drab',\n 'dragging',\n 'dragonfly',\n 'dragonish',\n 'dragster',\n 'drainable',\n 'drainage',\n 'drained',\n 'drainer',\n 'drainpipe',\n 'dramatic',\n 'dramatize',\n 'drank',\n 'drapery',\n 'drastic',\n 'draw',\n 'dreaded',\n 'dreadful',\n 'dreadlock',\n 'dreamboat',\n 'dreamily',\n 'dreamland',\n 'dreamless',\n 'dreamlike',\n 'dreamt',\n 'dreamy',\n 'drearily',\n 'dreary',\n 'drench',\n 'dress',\n 'drew',\n 'dribble',\n 'dried',\n 'drier',\n 'drift',\n 'driller',\n 'drilling',\n 'drinkable',\n 'drinking',\n 'dripping',\n 'drippy',\n 'drivable',\n 'driven',\n 'driver',\n 'driveway',\n 'driving',\n 'drizzle',\n 'drizzly',\n 'drone',\n 'drool',\n 'droop',\n 'drop-down',\n 'dropbox',\n 'dropkick',\n 'droplet',\n 'dropout',\n 'dropper',\n 'drove',\n 'drown',\n 'drowsily',\n 'drudge',\n 'drum',\n 'dry',\n 'dubbed',\n 'dubiously',\n 'duchess',\n 'duckbill',\n 'ducking',\n 'duckling',\n 'ducktail',\n 'ducky',\n 'duct',\n 'dude',\n 'duffel',\n 'dugout',\n 'duh',\n 'duke',\n 'duller',\n 'dullness',\n 'duly',\n 'dumping',\n 'dumpling',\n 'dumpster',\n 'duo',\n 'dupe',\n 'duplex',\n 'duplicate',\n 'duplicity',\n 'durable',\n 'durably',\n 'duration',\n 'duress',\n 'during',\n 'dusk',\n 'dust',\n 'dutiful',\n 'duty',\n 'duvet',\n 'dwarf',\n 'dweeb',\n 'dwelled',\n 'dweller',\n 'dwelling',\n 'dwindle',\n 'dwindling',\n 'dynamic',\n 'dynamite',\n 'dynasty',\n 'dyslexia',\n 'dyslexic',\n 'each',\n 'eagle',\n 'earache',\n 'eardrum',\n 'earflap',\n 'earful',\n 'earlobe',\n 'early',\n 'earmark',\n 'earmuff',\n 'earphone',\n 'earpiece',\n 'earplugs',\n 'earring',\n 'earshot',\n 'earthen',\n 'earthlike',\n 'earthling',\n 'earthly',\n 'earthworm',\n 'earthy',\n 'earwig',\n 'easeful',\n 'easel',\n 'easiest',\n 'easily',\n 'easiness',\n 'easing',\n 'eastbound',\n 'eastcoast',\n 'easter',\n 'eastward',\n 'eatable',\n 'eaten',\n 'eatery',\n 'eating',\n 'eats',\n 'ebay',\n 'ebony',\n 'ebook',\n 'ecard',\n 'eccentric',\n 'echo',\n 'eclair',\n 'eclipse',\n 'ecologist',\n 'ecology',\n 'economic',\n 'economist',\n 'economy',\n 'ecosphere',\n 'ecosystem',\n 'edge',\n 'edginess',\n 'edging',\n 'edgy',\n 'edition',\n 'editor',\n 'educated',\n 'education',\n 'educator',\n 'eel',\n 'effective',\n 'effects',\n 'efficient',\n 'effort',\n 'eggbeater',\n 'egging',\n 'eggnog',\n 'eggplant',\n 'eggshell',\n 'egomaniac',\n 'egotism',\n 'egotistic',\n 'either',\n 'eject',\n 'elaborate',\n 'elastic',\n 'elated',\n 'elbow',\n 'eldercare',\n 'elderly',\n 'eldest',\n 'electable',\n 'election',\n 'elective',\n 'elephant',\n 'elevate',\n 'elevating',\n 'elevation',\n 'elevator',\n 'eleven',\n 'elf',\n 'eligible',\n 'eligibly',\n 'eliminate',\n 'elite',\n 'elitism',\n 'elixir',\n 'elk',\n 'ellipse',\n 'elliptic',\n 'elm',\n 'elongated',\n 'elope',\n 'eloquence',\n 'eloquent',\n 'elsewhere',\n 'elude',\n 'elusive',\n 'elves',\n 'email',\n 'embargo',\n 'embark',\n 'embassy',\n 'embattled',\n 'embellish',\n 'ember',\n 'embezzle',\n 'emblaze',\n 'emblem',\n 'embody',\n 'embolism',\n 'emboss',\n 'embroider',\n 'emcee',\n 'emerald',\n 'emergency',\n 'emission',\n 'emit',\n 'emote',\n 'emoticon',\n 'emotion',\n 'empathic',\n 'empathy',\n 'emperor',\n 'emphases',\n 'emphasis',\n 'emphasize',\n 'emphatic',\n 'empirical',\n 'employed',\n 'employee',\n 'employer',\n 'emporium',\n 'empower',\n 'emptier',\n 'emptiness',\n 'empty',\n 'emu',\n 'enable',\n 'enactment',\n 'enamel',\n 'enchanted',\n 'enchilada',\n 'encircle',\n 'enclose',\n 'enclosure',\n 'encode',\n 'encore',\n 'encounter',\n 'encourage',\n 'encroach',\n 'encrust',\n 'encrypt',\n 'endanger',\n 'endeared',\n 'endearing',\n 'ended',\n 'ending',\n 'endless',\n 'endnote',\n 'endocrine',\n 'endorphin',\n 'endorse',\n 'endowment',\n 'endpoint',\n 'endurable',\n 'endurance',\n 'enduring',\n 'energetic',\n 'energize',\n 'energy',\n 'enforced',\n 'enforcer',\n 'engaged',\n 'engaging',\n 'engine',\n 'engorge',\n 'engraved',\n 'engraver',\n 'engraving',\n 'engross',\n 'engulf',\n 'enhance',\n 'enigmatic',\n 'enjoyable',\n 'enjoyably',\n 'enjoyer',\n 'enjoying',\n 'enjoyment',\n 'enlarged',\n 'enlarging',\n 'enlighten',\n 'enlisted',\n 'enquirer',\n 'enrage',\n 'enrich',\n 'enroll',\n 'enslave',\n 'ensnare',\n 'ensure',\n 'entail',\n 'entangled',\n 'entering',\n 'entertain',\n 'enticing',\n 'entire',\n 'entitle',\n 'entity',\n 'entomb',\n 'entourage',\n 'entrap',\n 'entree',\n 'entrench',\n 'entrust',\n 'entryway',\n 'entwine',\n 'enunciate',\n 'envelope',\n 'enviable',\n 'enviably',\n 'envious',\n 'envision',\n 'envoy',\n 'envy',\n 'enzyme',\n 'epic',\n 'epidemic',\n 'epidermal',\n 'epidermis',\n 'epidural',\n 'epilepsy',\n 'epileptic',\n 'epilogue',\n 'epiphany',\n 'episode',\n 'equal',\n 'equate',\n 'equation',\n 'equator',\n 'equinox',\n 'equipment',\n 'equity',\n 'equivocal',\n 'eradicate',\n 'erasable',\n 'erased',\n 'eraser',\n 'erasure',\n 'ergonomic',\n 'errand',\n 'errant',\n 'erratic',\n 'error',\n 'erupt',\n 'escalate',\n 'escalator',\n 'escapable',\n 'escapade',\n 'escapist',\n 'escargot',\n 'eskimo',\n 'esophagus',\n 'espionage',\n 'espresso',\n 'esquire',\n 'essay',\n 'essence',\n 'essential',\n 'establish',\n 'estate',\n 'esteemed',\n 'estimate',\n 'estimator',\n 'estranged',\n 'estrogen',\n 'etching',\n 'eternal',\n 'eternity',\n 'ethanol',\n 'ether',\n 'ethically',\n 'ethics',\n 'euphemism',\n 'evacuate',\n 'evacuee',\n 'evade',\n 'evaluate',\n 'evaluator',\n 'evaporate',\n 'evasion',\n 'evasive',\n 'even',\n 'everglade',\n 'evergreen',\n 'everybody',\n 'everyday',\n 'everyone',\n 'evict',\n 'evidence',\n 'evident',\n 'evil',\n 'evoke',\n 'evolution',\n 'evolve',\n 'exact',\n 'exalted',\n 'example',\n 'excavate',\n 'excavator',\n 'exceeding',\n 'exception',\n 'excess',\n 'exchange',\n 'excitable',\n 'exciting',\n 'exclaim',\n 'exclude',\n 'excluding',\n 'exclusion',\n 'exclusive',\n 'excretion',\n 'excretory',\n 'excursion',\n 'excusable',\n 'excusably',\n 'excuse',\n 'exemplary',\n 'exemplify',\n 'exemption',\n 'exerciser',\n 'exert',\n 'exes',\n 'exfoliate',\n 'exhale',\n 'exhaust',\n 'exhume',\n 'exile',\n 'existing',\n 'exit',\n 'exodus',\n 'exonerate',\n 'exorcism',\n 'exorcist',\n 'expand',\n 'expanse',\n 'expansion',\n 'expansive',\n 'expectant',\n 'expedited',\n 'expediter',\n 'expel',\n 'expend',\n 'expenses',\n 'expensive',\n 'expert',\n 'expire',\n 'expiring',\n 'explain',\n 'expletive',\n 'explicit',\n 'explode',\n 'exploit',\n 'explore',\n 'exploring',\n 'exponent',\n 'exporter',\n 'exposable',\n 'expose',\n 'exposure',\n 'express',\n 'expulsion',\n 'exquisite',\n 'extended',\n 'extending',\n 'extent',\n 'extenuate',\n 'exterior',\n 'external',\n 'extinct',\n 'extortion',\n 'extradite',\n 'extras',\n 'extrovert',\n 'extrude',\n 'extruding',\n 'exuberant',\n 'fable',\n 'fabric',\n 'fabulous',\n 'facebook',\n 'facecloth',\n 'facedown',\n 'faceless',\n 'facelift',\n 'faceplate',\n 'faceted',\n 'facial',\n 'facility',\n 'facing',\n 'facsimile',\n 'faction',\n 'factoid',\n 'factor',\n 'factsheet',\n 'factual',\n 'faculty',\n 'fade',\n 'fading',\n 'failing',\n 'falcon',\n 'fall',\n 'false',\n 'falsify',\n 'fame',\n 'familiar',\n 'family',\n 'famine',\n 'famished',\n 'fanatic',\n 'fancied',\n 'fanciness',\n 'fancy',\n 'fanfare',\n 'fang',\n 'fanning',\n 'fantasize',\n 'fantastic',\n 'fantasy',\n 'fascism',\n 'fastball',\n 'faster',\n 'fasting',\n 'fastness',\n 'faucet',\n 'favorable',\n 'favorably',\n 'favored',\n 'favoring',\n 'favorite',\n 'fax',\n 'feast',\n 'federal',\n 'fedora',\n 'feeble',\n 'feed',\n 'feel',\n 'feisty',\n 'feline',\n 'felt-tip',\n 'feminine',\n 'feminism',\n 'feminist',\n 'feminize',\n 'femur',\n 'fence',\n 'fencing',\n 'fender',\n 'ferment',\n 'fernlike',\n 'ferocious',\n 'ferocity',\n 'ferret',\n 'ferris',\n 'ferry',\n 'fervor',\n 'fester',\n 'festival',\n 'festive',\n 'festivity',\n 'fetal',\n 'fetch',\n 'fever',\n 'fiber',\n 'fiction',\n 'fiddle',\n 'fiddling',\n 'fidelity',\n 'fidgeting',\n 'fidgety',\n 'fifteen',\n 'fifth',\n 'fiftieth',\n 'fifty',\n 'figment',\n 'figure',\n 'figurine',\n 'filing',\n 'filled',\n 'filler',\n 'filling',\n 'film',\n 'filter',\n 'filth',\n 'filtrate',\n 'finale',\n 'finalist',\n 'finalize',\n 'finally',\n 'finance',\n 'financial',\n 'finch',\n 'fineness',\n 'finer',\n 'finicky',\n 'finished',\n 'finisher',\n 'finishing',\n 'finite',\n 'finless',\n 'finlike',\n 'fiscally',\n 'fit',\n 'five',\n 'flaccid',\n 'flagman',\n 'flagpole',\n 'flagship',\n 'flagstick',\n 'flagstone',\n 'flail',\n 'flakily',\n 'flaky',\n 'flame',\n 'flammable',\n 'flanked',\n 'flanking',\n 'flannels',\n 'flap',\n 'flaring',\n 'flashback',\n 'flashbulb',\n 'flashcard',\n 'flashily',\n 'flashing',\n 'flashy',\n 'flask',\n 'flatbed',\n 'flatfoot',\n 'flatly',\n 'flatness',\n 'flatten',\n 'flattered',\n 'flatterer',\n 'flattery',\n 'flattop',\n 'flatware',\n 'flatworm',\n 'flavored',\n 'flavorful',\n 'flavoring',\n 'flaxseed',\n 'fled',\n 'fleshed',\n 'fleshy',\n 'flick',\n 'flier',\n 'flight',\n 'flinch',\n 'fling',\n 'flint',\n 'flip',\n 'flirt',\n 'float',\n 'flock',\n 'flogging',\n 'flop',\n 'floral',\n 'florist',\n 'floss',\n 'flounder',\n 'flyable',\n 'flyaway',\n 'flyer',\n 'flying',\n 'flyover',\n 'flypaper',\n 'foam',\n 'foe',\n 'fog',\n 'foil',\n 'folic',\n 'folk',\n 'follicle',\n 'follow',\n 'fondling',\n 'fondly',\n 'fondness',\n 'fondue',\n 'font',\n 'food',\n 'fool',\n 'footage',\n 'football',\n 'footbath',\n 'footboard',\n 'footer',\n 'footgear',\n 'foothill',\n 'foothold',\n 'footing',\n 'footless',\n 'footman',\n 'footnote',\n 'footpad',\n 'footpath',\n 'footprint',\n 'footrest',\n 'footsie',\n 'footsore',\n 'footwear',\n 'footwork',\n 'fossil',\n 'foster',\n 'founder',\n 'founding',\n 'fountain',\n 'fox',\n 'foyer',\n 'fraction',\n 'fracture',\n 'fragile',\n 'fragility',\n 'fragment',\n 'fragrance',\n 'fragrant',\n 'frail',\n 'frame',\n 'framing',\n 'frantic',\n 'fraternal',\n 'frayed',\n 'fraying',\n 'frays',\n 'freckled',\n 'freckles',\n 'freebase',\n 'freebee',\n 'freebie',\n 'freedom',\n 'freefall',\n 'freehand',\n 'freeing',\n 'freeload',\n 'freely',\n 'freemason',\n 'freeness',\n 'freestyle',\n 'freeware',\n 'freeway',\n 'freewill',\n 'freezable',\n 'freezing',\n 'freight',\n 'french',\n 'frenzied',\n 'frenzy',\n 'frequency',\n 'frequent',\n 'fresh',\n 'fretful',\n 'fretted',\n 'friction',\n 'friday',\n 'fridge',\n 'fried',\n 'friend',\n 'frighten',\n 'frightful',\n 'frigidity',\n 'frigidly',\n 'frill',\n 'fringe',\n 'frisbee',\n 'frisk',\n 'fritter',\n 'frivolous',\n 'frolic',\n 'from',\n 'front',\n 'frostbite',\n 'frosted',\n 'frostily',\n 'frosting',\n 'frostlike',\n 'frosty',\n 'froth',\n 'frown',\n 'frozen',\n 'fructose',\n 'frugality',\n 'frugally',\n 'fruit',\n 'frustrate',\n 'frying',\n 'gab',\n 'gaffe',\n 'gag',\n 'gainfully',\n 'gaining',\n 'gains',\n 'gala',\n 'gallantly',\n 'galleria',\n 'gallery',\n 'galley',\n 'gallon',\n 'gallows',\n 'gallstone',\n 'galore',\n 'galvanize',\n 'gambling',\n 'game',\n 'gaming',\n 'gamma',\n 'gander',\n 'gangly',\n 'gangrene',\n 'gangway',\n 'gap',\n 'garage',\n 'garbage',\n 'garden',\n 'gargle',\n 'garland',\n 'garlic',\n 'garment',\n 'garnet',\n 'garnish',\n 'garter',\n 'gas',\n 'gatherer',\n 'gathering',\n 'gating',\n 'gauging',\n 'gauntlet',\n 'gauze',\n 'gave',\n 'gawk',\n 'gazing',\n 'gear',\n 'gecko',\n 'geek',\n 'geiger',\n 'gem',\n 'gender',\n 'generic',\n 'generous',\n 'genetics',\n 'genre',\n 'gentile',\n 'gentleman',\n 'gently',\n 'gents',\n 'geography',\n 'geologic',\n 'geologist',\n 'geology',\n 'geometric',\n 'geometry',\n 'geranium',\n 'gerbil',\n 'geriatric',\n 'germicide',\n 'germinate',\n 'germless',\n 'germproof',\n 'gestate',\n 'gestation',\n 'gesture',\n 'getaway',\n 'getting',\n 'getup',\n 'giant',\n 'gibberish',\n 'giblet',\n 'giddily',\n 'giddiness',\n 'giddy',\n 'gift',\n 'gigabyte',\n 'gigahertz',\n 'gigantic',\n 'giggle',\n 'giggling',\n 'giggly',\n 'gigolo',\n 'gilled',\n 'gills',\n 'gimmick',\n 'girdle',\n 'giveaway',\n 'given',\n 'giver',\n 'giving',\n 'gizmo',\n 'gizzard',\n 'glacial',\n 'glacier',\n 'glade',\n 'gladiator',\n 'gladly',\n 'glamorous',\n 'glamour',\n 'glance',\n 'glancing',\n 'glandular',\n 'glare',\n 'glaring',\n 'glass',\n 'glaucoma',\n 'glazing',\n 'gleaming',\n 'gleeful',\n 'glider',\n 'gliding',\n 'glimmer',\n 'glimpse',\n 'glisten',\n 'glitch',\n 'glitter',\n 'glitzy',\n 'gloater',\n 'gloating',\n 'gloomily',\n 'gloomy',\n 'glorified',\n 'glorifier',\n 'glorify',\n 'glorious',\n 'glory',\n 'gloss',\n 'glove',\n 'glowing',\n 'glowworm',\n 'glucose',\n 'glue',\n 'gluten',\n 'glutinous',\n 'glutton',\n 'gnarly',\n 'gnat',\n 'goal',\n 'goatskin',\n 'goes',\n 'goggles',\n 'going',\n 'goldfish',\n 'goldmine',\n 'goldsmith',\n 'golf',\n 'goliath',\n 'gonad',\n 'gondola',\n 'gone',\n 'gong',\n 'good',\n 'gooey',\n 'goofball',\n 'goofiness',\n 'goofy',\n 'google',\n 'goon',\n 'gopher',\n 'gore',\n 'gorged',\n 'gorgeous',\n 'gory',\n 'gosling',\n 'gossip',\n 'gothic',\n 'gotten',\n 'gout',\n 'gown',\n 'grab',\n 'graceful',\n 'graceless',\n 'gracious',\n 'gradation',\n 'graded',\n 'grader',\n 'gradient',\n 'grading',\n 'gradually',\n 'graduate',\n 'graffiti',\n 'grafted',\n 'grafting',\n 'grain',\n 'granddad',\n 'grandkid',\n 'grandly',\n 'grandma',\n 'grandpa',\n 'grandson',\n 'granite',\n 'granny',\n 'granola',\n 'grant',\n 'granular',\n 'grape',\n 'graph',\n 'grapple',\n 'grappling',\n 'grasp',\n 'grass',\n 'gratified',\n 'gratify',\n 'grating',\n 'gratitude',\n 'gratuity',\n 'gravel',\n 'graveness',\n 'graves',\n 'graveyard',\n 'gravitate',\n 'gravity',\n 'gravy',\n 'gray',\n 'grazing',\n 'greasily',\n 'greedily',\n 'greedless',\n 'greedy',\n 'green',\n 'greeter',\n 'greeting',\n 'grew',\n 'greyhound',\n 'grid',\n 'grief',\n 'grievance',\n 'grieving',\n 'grievous',\n 'grill',\n 'grimace',\n 'grimacing',\n 'grime',\n 'griminess',\n 'grimy',\n 'grinch',\n 'grinning',\n 'grip',\n 'gristle',\n 'grit',\n 'groggily',\n 'groggy',\n 'groin',\n 'groom',\n 'groove',\n 'grooving',\n 'groovy',\n 'grope',\n 'ground',\n 'grouped',\n 'grout',\n 'grove',\n 'grower',\n 'growing',\n 'growl',\n 'grub',\n 'grudge',\n 'grudging',\n 'grueling',\n 'gruffly',\n 'grumble',\n 'grumbling',\n 'grumbly',\n 'grumpily',\n 'grunge',\n 'grunt',\n 'guacamole',\n 'guidable',\n 'guidance',\n 'guide',\n 'guiding',\n 'guileless',\n 'guise',\n 'gulf',\n 'gullible',\n 'gully',\n 'gulp',\n 'gumball',\n 'gumdrop',\n 'gumminess',\n 'gumming',\n 'gummy',\n 'gurgle',\n 'gurgling',\n 'guru',\n 'gush',\n 'gusto',\n 'gusty',\n 'gutless',\n 'guts',\n 'gutter',\n 'guy',\n 'guzzler',\n 'gyration',\n 'habitable',\n 'habitant',\n 'habitat',\n 'habitual',\n 'hacked',\n 'hacker',\n 'hacking',\n 'hacksaw',\n 'had',\n 'haggler',\n 'haiku',\n 'half',\n 'halogen',\n 'halt',\n 'halved',\n 'halves',\n 'hamburger',\n 'hamlet',\n 'hammock',\n 'hamper',\n 'hamster',\n 'hamstring',\n 'handbag',\n 'handball',\n 'handbook',\n 'handbrake',\n 'handcart',\n 'handclap',\n 'handclasp',\n 'handcraft',\n 'handcuff',\n 'handed',\n 'handful',\n 'handgrip',\n 'handgun',\n 'handheld',\n 'handiness',\n 'handiwork',\n 'handlebar',\n 'handled',\n 'handler',\n 'handling',\n 'handmade',\n 'handoff',\n 'handpick',\n 'handprint',\n 'handrail',\n 'handsaw',\n 'handset',\n 'handsfree',\n 'handshake',\n 'handstand',\n 'handwash',\n 'handwork',\n 'handwoven',\n 'handwrite',\n 'handyman',\n 'hangnail',\n 'hangout',\n 'hangover',\n 'hangup',\n 'hankering',\n 'hankie',\n 'hanky',\n 'haphazard',\n 'happening',\n 'happier',\n 'happiest',\n 'happily',\n 'happiness',\n 'happy',\n 'harbor',\n 'hardcopy',\n 'hardcore',\n 'hardcover',\n 'harddisk',\n 'hardened',\n 'hardener',\n 'hardening',\n 'hardhat',\n 'hardhead',\n 'hardiness',\n 'hardly',\n 'hardness',\n 'hardship',\n 'hardware',\n 'hardwired',\n 'hardwood',\n 'hardy',\n 'harmful',\n 'harmless',\n 'harmonica',\n 'harmonics',\n 'harmonize',\n 'harmony',\n 'harness',\n 'harpist',\n 'harsh',\n 'harvest',\n 'hash',\n 'hassle',\n 'haste',\n 'hastily',\n 'hastiness',\n 'hasty',\n 'hatbox',\n 'hatchback',\n 'hatchery',\n 'hatchet',\n 'hatching',\n 'hatchling',\n 'hate',\n 'hatless',\n 'hatred',\n 'haunt',\n 'haven',\n 'hazard',\n 'hazelnut',\n 'hazily',\n 'haziness',\n 'hazing',\n 'hazy',\n 'headache',\n 'headband',\n 'headboard',\n 'headcount',\n 'headdress',\n 'headed',\n 'header',\n 'headfirst',\n 'headgear',\n 'heading',\n 'headlamp',\n 'headless',\n 'headlock',\n 'headphone',\n 'headpiece',\n 'headrest',\n 'headroom',\n 'headscarf',\n 'headset',\n 'headsman',\n 'headstand',\n 'headstone',\n 'headway',\n 'headwear',\n 'heap',\n 'heat',\n 'heave',\n 'heavily',\n 'heaviness',\n 'heaving',\n 'hedge',\n 'hedging',\n 'heftiness',\n 'hefty',\n 'helium',\n 'helmet',\n 'helper',\n 'helpful',\n 'helping',\n 'helpless',\n 'helpline',\n 'hemlock',\n 'hemstitch',\n 'hence',\n 'henchman',\n 'henna',\n 'herald',\n 'herbal',\n 'herbicide',\n 'herbs',\n 'heritage',\n 'hermit',\n 'heroics',\n 'heroism',\n 'herring',\n 'herself',\n 'hertz',\n 'hesitancy',\n 'hesitant',\n 'hesitate',\n 'hexagon',\n 'hexagram',\n 'hubcap',\n 'huddle',\n 'huddling',\n 'huff',\n 'hug',\n 'hula',\n 'hulk',\n 'hull',\n 'human',\n 'humble',\n 'humbling',\n 'humbly',\n 'humid',\n 'humiliate',\n 'humility',\n 'humming',\n 'hummus',\n 'humongous',\n 'humorist',\n 'humorless',\n 'humorous',\n 'humpback',\n 'humped',\n 'humvee',\n 'hunchback',\n 'hundredth',\n 'hunger',\n 'hungrily',\n 'hungry',\n 'hunk',\n 'hunter',\n 'hunting',\n 'huntress',\n 'huntsman',\n 'hurdle',\n 'hurled',\n 'hurler',\n 'hurling',\n 'hurray',\n 'hurricane',\n 'hurried',\n 'hurry',\n 'hurt',\n 'husband',\n 'hush',\n 'husked',\n 'huskiness',\n 'hut',\n 'hybrid',\n 'hydrant',\n 'hydrated',\n 'hydration',\n 'hydrogen',\n 'hydroxide',\n 'hyperlink',\n 'hypertext',\n 'hyphen',\n 'hypnoses',\n 'hypnosis',\n 'hypnotic',\n 'hypnotism',\n 'hypnotist',\n 'hypnotize',\n 'hypocrisy',\n 'hypocrite',\n 'ibuprofen',\n 'ice',\n 'iciness',\n 'icing',\n 'icky',\n 'icon',\n 'icy',\n 'idealism',\n 'idealist',\n 'idealize',\n 'ideally',\n 'idealness',\n 'identical',\n 'identify',\n 'identity',\n 'ideology',\n 'idiocy',\n 'idiom',\n 'idly',\n 'igloo',\n 'ignition',\n 'ignore',\n 'iguana',\n 'illicitly',\n 'illusion',\n 'illusive',\n 'image',\n 'imaginary',\n 'imagines',\n 'imaging',\n 'imbecile',\n 'imitate',\n 'imitation',\n 'immature',\n 'immerse',\n 'immersion',\n 'imminent',\n 'immobile',\n 'immodest',\n 'immorally',\n 'immortal',\n 'immovable',\n 'immovably',\n 'immunity',\n 'immunize',\n 'impaired',\n 'impale',\n 'impart',\n 'impatient',\n 'impeach',\n 'impeding',\n 'impending',\n 'imperfect',\n 'imperial',\n 'impish',\n 'implant',\n 'implement',\n 'implicate',\n 'implicit',\n 'implode',\n 'implosion',\n 'implosive',\n 'imply',\n 'impolite',\n 'important',\n 'importer',\n 'impose',\n 'imposing',\n 'impotence',\n 'impotency',\n 'impotent',\n 'impound',\n 'imprecise',\n 'imprint',\n 'imprison',\n 'impromptu',\n 'improper',\n 'improve',\n 'improving',\n 'improvise',\n 'imprudent',\n 'impulse',\n 'impulsive',\n 'impure',\n 'impurity',\n 'iodine',\n 'iodize',\n 'ion',\n 'ipad',\n 'iphone',\n 'ipod',\n 'irate',\n 'irk',\n 'iron',\n 'irregular',\n 'irrigate',\n 'irritable',\n 'irritably',\n 'irritant',\n 'irritate',\n 'islamic',\n 'islamist',\n 'isolated',\n 'isolating',\n 'isolation',\n 'isotope',\n 'issue',\n 'issuing',\n 'italicize',\n 'italics',\n 'item',\n 'itinerary',\n 'itunes',\n 'ivory',\n 'ivy',\n 'jab',\n 'jackal',\n 'jacket',\n 'jackknife',\n 'jackpot',\n 'jailbird',\n 'jailbreak',\n 'jailer',\n 'jailhouse',\n 'jalapeno',\n 'jam',\n 'janitor',\n 'january',\n 'jargon',\n 'jarring',\n 'jasmine',\n 'jaundice',\n 'jaunt',\n 'java',\n 'jawed',\n 'jawless',\n 'jawline',\n 'jaws',\n 'jaybird',\n 'jaywalker',\n 'jazz',\n 'jeep',\n 'jeeringly',\n 'jellied',\n 'jelly',\n 'jersey',\n 'jester',\n 'jet',\n 'jiffy',\n 'jigsaw',\n 'jimmy',\n 'jingle',\n 'jingling',\n 'jinx',\n 'jitters',\n 'jittery',\n 'job',\n 'jockey',\n 'jockstrap',\n 'jogger',\n 'jogging',\n 'john',\n 'joining',\n 'jokester',\n 'jokingly',\n 'jolliness',\n 'jolly',\n 'jolt',\n 'jot',\n 'jovial',\n 'joyfully',\n 'joylessly',\n 'joyous',\n 'joyride',\n 'joystick',\n 'jubilance',\n 'jubilant',\n 'judge',\n 'judgingly',\n 'judicial',\n 'judiciary',\n 'judo',\n 'juggle',\n 'juggling',\n 'jugular',\n 'juice',\n 'juiciness',\n 'juicy',\n 'jujitsu',\n 'jukebox',\n 'july',\n 'jumble',\n 'jumbo',\n 'jump',\n 'junction',\n 'juncture',\n 'june',\n 'junior',\n 'juniper',\n 'junkie',\n 'junkman',\n 'junkyard',\n 'jurist',\n 'juror',\n 'jury',\n 'justice',\n 'justifier',\n 'justify',\n 'justly',\n 'justness',\n 'juvenile',\n 'kabob',\n 'kangaroo',\n 'karaoke',\n 'karate',\n 'karma',\n 'kebab',\n 'keenly',\n 'keenness',\n 'keep',\n 'keg',\n 'kelp',\n 'kennel',\n 'kept',\n 'kerchief',\n 'kerosene',\n 'kettle',\n 'kick',\n 'kiln',\n 'kilobyte',\n 'kilogram',\n 'kilometer',\n 'kilowatt',\n 'kilt',\n 'kimono',\n 'kindle',\n 'kindling',\n 'kindly',\n 'kindness',\n 'kindred',\n 'kinetic',\n 'kinfolk',\n 'king',\n 'kinship',\n 'kinsman',\n 'kinswoman',\n 'kissable',\n 'kisser',\n 'kissing',\n 'kitchen',\n 'kite',\n 'kitten',\n 'kitty',\n 'kiwi',\n 'kleenex',\n 'knapsack',\n 'knee',\n 'knelt',\n 'knickers',\n 'knoll',\n 'koala',\n 'kooky',\n 'kosher',\n 'krypton',\n 'kudos',\n 'kung',\n 'labored',\n 'laborer',\n 'laboring',\n 'laborious',\n 'labrador',\n 'ladder',\n 'ladies',\n 'ladle',\n 'ladybug',\n 'ladylike',\n 'lagged',\n 'lagging',\n 'lagoon',\n 'lair',\n 'lake',\n 'lance',\n 'landed',\n 'landfall',\n 'landfill',\n 'landing',\n 'landlady',\n 'landless',\n 'landline',\n 'landlord',\n 'landmark',\n 'landmass',\n 'landmine',\n 'landowner',\n 'landscape',\n 'landside',\n 'landslide',\n 'language',\n 'lankiness',\n 'lanky',\n 'lantern',\n 'lapdog',\n 'lapel',\n 'lapped',\n 'lapping',\n 'laptop',\n 'lard',\n 'large',\n 'lark',\n 'lash',\n 'lasso',\n 'last',\n 'latch',\n 'late',\n 'lather',\n 'latitude',\n 'latrine',\n 'latter',\n 'latticed',\n 'launch',\n 'launder',\n 'laundry',\n 'laurel',\n 'lavender',\n 'lavish',\n 'laxative',\n 'lazily',\n 'laziness',\n 'lazy',\n 'lecturer',\n 'left',\n 'legacy',\n 'legal',\n 'legend',\n 'legged',\n 'leggings',\n 'legible',\n 'legibly',\n 'legislate',\n 'lego',\n 'legroom',\n 'legume',\n 'legwarmer',\n 'legwork',\n 'lemon',\n 'lend',\n 'length',\n 'lens',\n 'lent',\n 'leotard',\n 'lesser',\n 'letdown',\n 'lethargic',\n 'lethargy',\n 'letter',\n 'lettuce',\n 'level',\n 'leverage',\n 'levers',\n 'levitate',\n 'levitator',\n 'liability',\n 'liable',\n 'liberty',\n 'librarian',\n 'library',\n 'licking',\n 'licorice',\n 'lid',\n 'life',\n 'lifter',\n 'lifting',\n 'liftoff',\n 'ligament',\n 'likely',\n 'likeness',\n 'likewise',\n 'liking',\n 'lilac',\n 'lilly',\n 'lily',\n 'limb',\n 'limeade',\n 'limelight',\n 'limes',\n 'limit',\n 'limping',\n 'limpness',\n 'line',\n 'lingo',\n 'linguini',\n 'linguist',\n 'lining',\n 'linked',\n 'linoleum',\n 'linseed',\n 'lint',\n 'lion',\n 'lip',\n 'liquefy',\n 'liqueur',\n 'liquid',\n 'lisp',\n 'list',\n 'litigate',\n 'litigator',\n 'litmus',\n 'litter',\n 'little',\n 'livable',\n 'lived',\n 'lively',\n 'liver',\n 'livestock',\n 'lividly',\n 'living',\n 'lizard',\n 'lubricant',\n 'lubricate',\n 'lucid',\n 'luckily',\n 'luckiness',\n 'luckless',\n 'lucrative',\n 'ludicrous',\n 'lugged',\n 'lukewarm',\n 'lullaby',\n 'lumber',\n 'luminance',\n 'luminous',\n 'lumpiness',\n 'lumping',\n 'lumpish',\n 'lunacy',\n 'lunar',\n 'lunchbox',\n 'luncheon',\n 'lunchroom',\n 'lunchtime',\n 'lung',\n 'lurch',\n 'lure',\n 'luridness',\n 'lurk',\n 'lushly',\n 'lushness',\n 'luster',\n 'lustfully',\n 'lustily',\n 'lustiness',\n 'lustrous',\n 'lusty',\n 'luxurious',\n 'luxury',\n 'lying',\n 'lyrically',\n 'lyricism',\n 'lyricist',\n 'lyrics',\n 'macarena',\n 'macaroni',\n 'macaw',\n 'mace',\n 'machine',\n 'machinist',\n 'magazine',\n 'magenta',\n 'maggot',\n 'magical',\n 'magician',\n 'magma',\n 'magnesium',\n 'magnetic',\n 'magnetism',\n 'magnetize',\n 'magnifier',\n 'magnify',\n 'magnitude',\n 'magnolia',\n 'mahogany',\n 'maimed',\n 'majestic',\n 'majesty',\n 'majorette',\n 'majority',\n 'makeover',\n 'maker',\n 'makeshift',\n 'making',\n 'malformed',\n 'malt',\n 'mama',\n 'mammal',\n 'mammary',\n 'mammogram',\n 'manager',\n 'managing',\n 'manatee',\n 'mandarin',\n 'mandate',\n 'mandatory',\n 'mandolin',\n 'manger',\n 'mangle',\n 'mango',\n 'mangy',\n 'manhandle',\n 'manhole',\n 'manhood',\n 'manhunt',\n 'manicotti',\n 'manicure',\n 'manifesto',\n 'manila',\n 'mankind',\n 'manlike',\n 'manliness',\n 'manly',\n 'manmade',\n 'manned',\n 'mannish',\n 'manor',\n 'manpower',\n 'mantis',\n 'mantra',\n 'manual',\n 'many',\n 'map',\n 'marathon',\n 'marauding',\n 'marbled',\n 'marbles',\n 'marbling',\n 'march',\n 'mardi',\n 'margarine',\n 'margarita',\n 'margin',\n 'marigold',\n 'marina',\n 'marine',\n 'marital',\n 'maritime',\n 'marlin',\n 'marmalade',\n 'maroon',\n 'married',\n 'marrow',\n 'marry',\n 'marshland',\n 'marshy',\n 'marsupial',\n 'marvelous',\n 'marxism',\n 'mascot',\n 'masculine',\n 'mashed',\n 'mashing',\n 'massager',\n 'masses',\n 'massive',\n 'mastiff',\n 'matador',\n 'matchbook',\n 'matchbox',\n 'matcher',\n 'matching',\n 'matchless',\n 'material',\n 'maternal',\n 'maternity',\n 'math',\n 'mating',\n 'matriarch',\n 'matrimony',\n 'matrix',\n 'matron',\n 'matted',\n 'matter',\n 'maturely',\n 'maturing',\n 'maturity',\n 'mauve',\n 'maverick',\n 'maximize',\n 'maximum',\n 'maybe',\n 'mayday',\n 'mayflower',\n 'moaner',\n 'moaning',\n 'mobile',\n 'mobility',\n 'mobilize',\n 'mobster',\n 'mocha',\n 'mocker',\n 'mockup',\n 'modified',\n 'modify',\n 'modular',\n 'modulator',\n 'module',\n 'moisten',\n 'moistness',\n 'moisture',\n 'molar',\n 'molasses',\n 'mold',\n 'molecular',\n 'molecule',\n 'molehill',\n 'mollusk',\n 'mom',\n 'monastery',\n 'monday',\n 'monetary',\n 'monetize',\n 'moneybags',\n 'moneyless',\n 'moneywise',\n 'mongoose',\n 'mongrel',\n 'monitor',\n 'monkhood',\n 'monogamy',\n 'monogram',\n 'monologue',\n 'monopoly',\n 'monorail',\n 'monotone',\n 'monotype',\n 'monoxide',\n 'monsieur',\n 'monsoon',\n 'monstrous',\n 'monthly',\n 'monument',\n 'moocher',\n 'moodiness',\n 'moody',\n 'mooing',\n 'moonbeam',\n 'mooned',\n 'moonlight',\n 'moonlike',\n 'moonlit',\n 'moonrise',\n 'moonscape',\n 'moonshine',\n 'moonstone',\n 'moonwalk',\n 'mop',\n 'morale',\n 'morality',\n 'morally',\n 'morbidity',\n 'morbidly',\n 'morphine',\n 'morphing',\n 'morse',\n 'mortality',\n 'mortally',\n 'mortician',\n 'mortified',\n 'mortify',\n 'mortuary',\n 'mosaic',\n 'mossy',\n 'most',\n 'mothball',\n 'mothproof',\n 'motion',\n 'motivate',\n 'motivator',\n 'motive',\n 'motocross',\n 'motor',\n 'motto',\n 'mountable',\n 'mountain',\n 'mounted',\n 'mounting',\n 'mourner',\n 'mournful',\n 'mouse',\n 'mousiness',\n 'moustache',\n 'mousy',\n 'mouth',\n 'movable',\n 'move',\n 'movie',\n 'moving',\n 'mower',\n 'mowing',\n 'much',\n 'muck',\n 'mud',\n 'mug',\n 'mulberry',\n 'mulch',\n 'mule',\n 'mulled',\n 'mullets',\n 'multiple',\n 'multiply',\n 'multitask',\n 'multitude',\n 'mumble',\n 'mumbling',\n 'mumbo',\n 'mummified',\n 'mummify',\n 'mummy',\n 'mumps',\n 'munchkin',\n 'mundane',\n 'municipal',\n 'muppet',\n 'mural',\n 'murkiness',\n 'murky',\n 'murmuring',\n 'muscular',\n 'museum',\n 'mushily',\n 'mushiness',\n 'mushroom',\n 'mushy',\n 'music',\n 'musket',\n 'muskiness',\n 'musky',\n 'mustang',\n 'mustard',\n 'muster',\n 'mustiness',\n 'musty',\n 'mutable',\n 'mutate',\n 'mutation',\n 'mute',\n 'mutilated',\n 'mutilator',\n 'mutiny',\n 'mutt',\n 'mutual',\n 'muzzle',\n 'myself',\n 'myspace',\n 'mystified',\n 'mystify',\n 'myth',\n 'nacho',\n 'nag',\n 'nail',\n 'name',\n 'naming',\n 'nanny',\n 'nanometer',\n 'nape',\n 'napkin',\n 'napped',\n 'napping',\n 'nappy',\n 'narrow',\n 'nastily',\n 'nastiness',\n 'national',\n 'native',\n 'nativity',\n 'natural',\n 'nature',\n 'naturist',\n 'nautical',\n 'navigate',\n 'navigator',\n 'navy',\n 'nearby',\n 'nearest',\n 'nearly',\n 'nearness',\n 'neatly',\n 'neatness',\n 'nebula',\n 'nebulizer',\n 'nectar',\n 'negate',\n 'negation',\n 'negative',\n 'neglector',\n 'negligee',\n 'negligent',\n 'negotiate',\n 'nemeses',\n 'nemesis',\n 'neon',\n 'nephew',\n 'nerd',\n 'nervous',\n 'nervy',\n 'nest',\n 'net',\n 'neurology',\n 'neuron',\n 'neurosis',\n 'neurotic',\n 'neuter',\n 'neutron',\n 'never',\n 'next',\n 'nibble',\n 'nickname',\n 'nicotine',\n 'niece',\n 'nifty',\n 'nimble',\n 'nimbly',\n 'nineteen',\n 'ninetieth',\n 'ninja',\n 'nintendo',\n 'ninth',\n 'nuclear',\n 'nuclei',\n 'nucleus',\n 'nugget',\n 'nullify',\n 'number',\n 'numbing',\n 'numbly',\n 'numbness',\n 'numeral',\n 'numerate',\n 'numerator',\n 'numeric',\n 'numerous',\n 'nuptials',\n 'nursery',\n 'nursing',\n 'nurture',\n 'nutcase',\n 'nutlike',\n 'nutmeg',\n 'nutrient',\n 'nutshell',\n 'nuttiness',\n 'nutty',\n 'nuzzle',\n 'nylon',\n 'oaf',\n 'oak',\n 'oasis',\n 'oat',\n 'obedience',\n 'obedient',\n 'obituary',\n 'object',\n 'obligate',\n 'obliged',\n 'oblivion',\n 'oblivious',\n 'oblong',\n 'obnoxious',\n 'oboe',\n 'obscure',\n 'obscurity',\n 'observant',\n 'observer',\n 'observing',\n 'obsessed',\n 'obsession',\n 'obsessive',\n 'obsolete',\n 'obstacle',\n 'obstinate',\n 'obstruct',\n 'obtain',\n 'obtrusive',\n 'obtuse',\n 'obvious',\n 'occultist',\n 'occupancy',\n 'occupant',\n 'occupier',\n 'occupy',\n 'ocean',\n 'ocelot',\n 'octagon',\n 'octane',\n 'october',\n 'octopus',\n 'ogle',\n 'oil',\n 'oink',\n 'ointment',\n 'okay',\n 'old',\n 'olive',\n 'olympics',\n 'omega',\n 'omen',\n 'ominous',\n 'omission',\n 'omit',\n 'omnivore',\n 'onboard',\n 'oncoming',\n 'ongoing',\n 'onion',\n 'online',\n 'onlooker',\n 'only',\n 'onscreen',\n 'onset',\n 'onshore',\n 'onslaught',\n 'onstage',\n 'onto',\n 'onward',\n 'onyx',\n 'oops',\n 'ooze',\n 'oozy',\n 'opacity',\n 'opal',\n 'open',\n 'operable',\n 'operate',\n 'operating',\n 'operation',\n 'operative',\n 'operator',\n 'opium',\n 'opossum',\n 'opponent',\n 'oppose',\n 'opposing',\n 'opposite',\n 'oppressed',\n 'oppressor',\n 'opt',\n 'opulently',\n 'osmosis',\n 'other',\n 'otter',\n 'ouch',\n 'ought',\n 'ounce',\n 'outage',\n 'outback',\n 'outbid',\n 'outboard',\n 'outbound',\n 'outbreak',\n 'outburst',\n 'outcast',\n 'outclass',\n 'outcome',\n 'outdated',\n 'outdoors',\n 'outer',\n 'outfield',\n 'outfit',\n 'outflank',\n 'outgoing',\n 'outgrow',\n 'outhouse',\n 'outing',\n 'outlast',\n 'outlet',\n 'outline',\n 'outlook',\n 'outlying',\n 'outmatch',\n 'outmost',\n 'outnumber',\n 'outplayed',\n 'outpost',\n 'outpour',\n 'output',\n 'outrage',\n 'outrank',\n 'outreach',\n 'outright',\n 'outscore',\n 'outsell',\n 'outshine',\n 'outshoot',\n 'outsider',\n 'outskirts',\n 'outsmart',\n 'outsource',\n 'outspoken',\n 'outtakes',\n 'outthink',\n 'outward',\n 'outweigh',\n 'outwit',\n 'oval',\n 'ovary',\n 'oven',\n 'overact',\n 'overall',\n 'overarch',\n 'overbid',\n 'overbill',\n 'overbite',\n 'overblown',\n 'overboard',\n 'overbook',\n 'overbuilt',\n 'overcast',\n 'overcoat',\n 'overcome',\n 'overcook',\n 'overcrowd',\n 'overdraft',\n 'overdrawn',\n 'overdress',\n 'overdrive',\n 'overdue',\n 'overeager',\n 'overeater',\n 'overexert',\n 'overfed',\n 'overfeed',\n 'overfill',\n 'overflow',\n 'overfull',\n 'overgrown',\n 'overhand',\n 'overhang',\n 'overhaul',\n 'overhead',\n 'overhear',\n 'overheat',\n 'overhung',\n 'overjoyed',\n 'overkill',\n 'overlabor',\n 'overlaid',\n 'overlap',\n 'overlay',\n 'overload',\n 'overlook',\n 'overlord',\n 'overlying',\n 'overnight',\n 'overpass',\n 'overpay',\n 'overplant',\n 'overplay',\n 'overpower',\n 'overprice',\n 'overrate',\n 'overreach',\n 'overreact',\n 'override',\n 'overripe',\n 'overrule',\n 'overrun',\n 'overshoot',\n 'overshot',\n 'oversight',\n 'oversized',\n 'oversleep',\n 'oversold',\n 'overspend',\n 'overstate',\n 'overstay',\n 'overstep',\n 'overstock',\n 'overstuff',\n 'oversweet',\n 'overtake',\n 'overthrow',\n 'overtime',\n 'overtly',\n 'overtone',\n 'overture',\n 'overturn',\n 'overuse',\n 'overvalue',\n 'overview',\n 'overwrite',\n 'owl',\n 'oxford',\n 'oxidant',\n 'oxidation',\n 'oxidize',\n 'oxidizing',\n 'oxygen',\n 'oxymoron',\n 'oyster',\n 'ozone',\n 'paced',\n 'pacemaker',\n 'pacific',\n 'pacifier',\n 'pacifism',\n 'pacifist',\n 'pacify',\n 'padded',\n 'padding',\n 'paddle',\n 'paddling',\n 'padlock',\n 'pagan',\n 'pager',\n 'paging',\n 'pajamas',\n 'palace',\n 'palatable',\n 'palm',\n 'palpable',\n 'palpitate',\n 'paltry',\n 'pampered',\n 'pamperer',\n 'pampers',\n 'pamphlet',\n 'panama',\n 'pancake',\n 'pancreas',\n 'panda',\n 'pandemic',\n 'pang',\n 'panhandle',\n 'panic',\n 'panning',\n 'panorama',\n 'panoramic',\n 'panther',\n 'pantomime',\n 'pantry',\n 'pants',\n 'pantyhose',\n 'paparazzi',\n 'papaya',\n 'paper',\n 'paprika',\n 'papyrus',\n 'parabola',\n 'parachute',\n 'parade',\n 'paradox',\n 'paragraph',\n 'parakeet',\n 'paralegal',\n 'paralyses',\n 'paralysis',\n 'paralyze',\n 'paramedic',\n 'parameter',\n 'paramount',\n 'parasail',\n 'parasite',\n 'parasitic',\n 'parcel',\n 'parched',\n 'parchment',\n 'pardon',\n 'parish',\n 'parka',\n 'parking',\n 'parkway',\n 'parlor',\n 'parmesan',\n 'parole',\n 'parrot',\n 'parsley',\n 'parsnip',\n 'partake',\n 'parted',\n 'parting',\n 'partition',\n 'partly',\n 'partner',\n 'partridge',\n 'party',\n 'passable',\n 'passably',\n 'passage',\n 'passcode',\n 'passenger',\n 'passerby',\n 'passing',\n 'passion',\n 'passive',\n 'passivism',\n 'passover',\n 'passport',\n 'password',\n 'pasta',\n 'pasted',\n 'pastel',\n 'pastime',\n 'pastor',\n 'pastrami',\n 'pasture',\n 'pasty',\n 'patchwork',\n 'patchy',\n 'paternal',\n 'paternity',\n 'path',\n 'patience',\n 'patient',\n 'patio',\n 'patriarch',\n 'patriot',\n 'patrol',\n 'patronage',\n 'patronize',\n 'pauper',\n 'pavement',\n 'paver',\n 'pavestone',\n 'pavilion',\n 'paving',\n 'pawing',\n 'payable',\n 'payback',\n 'paycheck',\n 'payday',\n 'payee',\n 'payer',\n 'paying',\n 'payment',\n 'payphone',\n 'payroll',\n 'pebble',\n 'pebbly',\n 'pecan',\n 'pectin',\n 'peculiar',\n 'peddling',\n 'pediatric',\n 'pedicure',\n 'pedigree',\n 'pedometer',\n 'pegboard',\n 'pelican',\n 'pellet',\n 'pelt',\n 'pelvis',\n 'penalize',\n 'penalty',\n 'pencil',\n 'pendant',\n 'pending',\n 'penholder',\n 'penknife',\n 'pennant',\n 'penniless',\n 'penny',\n 'penpal',\n 'pension',\n 'pentagon',\n 'pentagram',\n 'pep',\n 'perceive',\n 'percent',\n 'perch',\n 'percolate',\n 'perennial',\n 'perfected',\n 'perfectly',\n 'perfume',\n 'periscope',\n 'perish',\n 'perjurer',\n 'perjury',\n 'perkiness',\n 'perky',\n 'perm',\n 'peroxide',\n 'perpetual',\n 'perplexed',\n 'persecute',\n 'persevere',\n 'persuaded',\n 'persuader',\n 'pesky',\n 'peso',\n 'pessimism',\n 'pessimist',\n 'pester',\n 'pesticide',\n 'petal',\n 'petite',\n 'petition',\n 'petri',\n 'petroleum',\n 'petted',\n 'petticoat',\n 'pettiness',\n 'petty',\n 'petunia',\n 'phantom',\n 'phobia',\n 'phoenix',\n 'phonebook',\n 'phoney',\n 'phonics',\n 'phoniness',\n 'phony',\n 'phosphate',\n 'photo',\n 'phrase',\n 'phrasing',\n 'placard',\n 'placate',\n 'placidly',\n 'plank',\n 'planner',\n 'plant',\n 'plasma',\n 'plaster',\n 'plastic',\n 'plated',\n 'platform',\n 'plating',\n 'platinum',\n 'platonic',\n 'platter',\n 'platypus',\n 'plausible',\n 'plausibly',\n 'playable',\n 'playback',\n 'player',\n 'playful',\n 'playgroup',\n 'playhouse',\n 'playing',\n 'playlist',\n 'playmaker',\n 'playmate',\n 'playoff',\n 'playpen',\n 'playroom',\n 'playset',\n 'plaything',\n 'playtime',\n 'plaza',\n 'pleading',\n 'pleat',\n 'pledge',\n 'plentiful',\n 'plenty',\n 'plethora',\n 'plexiglas',\n 'pliable',\n 'plod',\n 'plop',\n 'plot',\n 'plow',\n 'ploy',\n 'pluck',\n 'plug',\n 'plunder',\n 'plunging',\n 'plural',\n 'plus',\n 'plutonium',\n 'plywood',\n 'poach',\n 'pod',\n 'poem',\n 'poet',\n 'pogo',\n 'pointed',\n 'pointer',\n 'pointing',\n 'pointless',\n 'pointy',\n 'poise',\n 'poison',\n 'poker',\n 'poking',\n 'polar',\n 'police',\n 'policy',\n 'polio',\n 'polish',\n 'politely',\n 'polka',\n 'polo',\n 'polyester',\n 'polygon',\n 'polygraph',\n 'polymer',\n 'poncho',\n 'pond',\n 'pony',\n 'popcorn',\n 'pope',\n 'poplar',\n 'popper',\n 'poppy',\n 'popsicle',\n 'populace',\n 'popular',\n 'populate',\n 'porcupine',\n 'pork',\n 'porous',\n 'porridge',\n 'portable',\n 'portal',\n 'portfolio',\n 'porthole',\n 'portion',\n 'portly',\n 'portside',\n 'poser',\n 'posh',\n 'posing',\n 'possible',\n 'possibly',\n 'possum',\n 'postage',\n 'postal',\n 'postbox',\n 'postcard',\n 'posted',\n 'poster',\n 'posting',\n 'postnasal',\n 'posture',\n 'postwar',\n 'pouch',\n 'pounce',\n 'pouncing',\n 'pound',\n 'pouring',\n 'pout',\n 'powdered',\n 'powdering',\n 'powdery',\n 'power',\n 'powwow',\n 'pox',\n 'praising',\n 'prance',\n 'prancing',\n 'pranker',\n 'prankish',\n 'prankster',\n 'prayer',\n 'praying',\n 'preacher',\n 'preaching',\n 'preachy',\n 'preamble',\n 'precinct',\n 'precise',\n 'precision',\n 'precook',\n 'precut',\n 'predator',\n 'predefine',\n 'predict',\n 'preface',\n 'prefix',\n 'preflight',\n 'preformed',\n 'pregame',\n 'pregnancy',\n 'pregnant',\n 'preheated',\n 'prelaunch',\n 'prelaw',\n 'prelude',\n 'premiere',\n 'premises',\n 'premium',\n 'prenatal',\n 'preoccupy',\n 'preorder',\n 'prepaid',\n 'prepay',\n 'preplan',\n 'preppy',\n 'preschool',\n 'prescribe',\n 'preseason',\n 'preset',\n 'preshow',\n 'president',\n 'presoak',\n 'press',\n 'presume',\n 'presuming',\n 'preteen',\n 'pretended',\n 'pretender',\n 'pretense',\n 'pretext',\n 'pretty',\n 'pretzel',\n 'prevail',\n 'prevalent',\n 'prevent',\n 'preview',\n 'previous',\n 'prewar',\n 'prewashed',\n 'prideful',\n 'pried',\n 'primal',\n 'primarily',\n 'primary',\n 'primate',\n 'primer',\n 'primp',\n 'princess',\n 'print',\n 'prior',\n 'prism',\n 'prison',\n 'prissy',\n 'pristine',\n 'privacy',\n 'private',\n 'privatize',\n 'prize',\n 'proactive',\n 'probable',\n 'probably',\n 'probation',\n 'probe',\n 'probing',\n 'probiotic',\n 'problem',\n 'procedure',\n 'process',\n 'proclaim',\n 'procreate',\n 'procurer',\n 'prodigal',\n 'prodigy',\n 'produce',\n 'product',\n 'profane',\n 'profanity',\n 'professed',\n 'professor',\n 'profile',\n 'profound',\n 'profusely',\n 'progeny',\n 'prognosis',\n 'program',\n 'progress',\n 'projector',\n 'prologue',\n 'prolonged',\n 'promenade',\n 'prominent',\n 'promoter',\n 'promotion',\n 'prompter',\n 'promptly',\n 'prone',\n 'prong',\n 'pronounce',\n 'pronto',\n 'proofing',\n 'proofread',\n 'proofs',\n 'propeller',\n 'properly',\n 'property',\n 'proponent',\n 'proposal',\n 'propose',\n 'props',\n 'prorate',\n 'protector',\n 'protegee',\n 'proton',\n 'prototype',\n 'protozoan',\n 'protract',\n 'protrude',\n 'proud',\n 'provable',\n 'proved',\n 'proven',\n 'provided',\n 'provider',\n 'providing',\n 'province',\n 'proving',\n 'provoke',\n 'provoking',\n 'provolone',\n 'prowess',\n 'prowler',\n 'prowling',\n 'proximity',\n 'proxy',\n 'prozac',\n 'prude',\n 'prudishly',\n 'prune',\n 'pruning',\n 'pry',\n 'psychic',\n 'public',\n 'publisher',\n 'pucker',\n 'pueblo',\n 'pug',\n 'pull',\n 'pulmonary',\n 'pulp',\n 'pulsate',\n 'pulse',\n 'pulverize',\n 'puma',\n 'pumice',\n 'pummel',\n 'punch',\n 'punctual',\n 'punctuate',\n 'punctured',\n 'pungent',\n 'punisher',\n 'punk',\n 'pupil',\n 'puppet',\n 'puppy',\n 'purchase',\n 'pureblood',\n 'purebred',\n 'purely',\n 'pureness',\n 'purgatory',\n 'purge',\n 'purging',\n 'purifier',\n 'purify',\n 'purist',\n 'puritan',\n 'purity',\n 'purple',\n 'purplish',\n 'purposely',\n 'purr',\n 'purse',\n 'pursuable',\n 'pursuant',\n 'pursuit',\n 'purveyor',\n 'pushcart',\n 'pushchair',\n 'pusher',\n 'pushiness',\n 'pushing',\n 'pushover',\n 'pushpin',\n 'pushup',\n 'pushy',\n 'putdown',\n 'putt',\n 'puzzle',\n 'puzzling',\n 'pyramid',\n 'pyromania',\n 'python',\n 'quack',\n 'quadrant',\n 'quail',\n 'quaintly',\n 'quake',\n 'quaking',\n 'qualified',\n 'qualifier',\n 'qualify',\n 'quality',\n 'qualm',\n 'quantum',\n 'quarrel',\n 'quarry',\n 'quartered',\n 'quarterly',\n 'quarters',\n 'quartet',\n 'quench',\n 'query',\n 'quicken',\n 'quickly',\n 'quickness',\n 'quicksand',\n 'quickstep',\n 'quiet',\n 'quill',\n 'quilt',\n 'quintet',\n 'quintuple',\n 'quirk',\n 'quit',\n 'quiver',\n 'quizzical',\n 'quotable',\n 'quotation',\n 'quote',\n 'rabid',\n 'race',\n 'racing',\n 'racism',\n 'rack',\n 'racoon',\n 'radar',\n 'radial',\n 'radiance',\n 'radiantly',\n 'radiated',\n 'radiation',\n 'radiator',\n 'radio',\n 'radish',\n 'raffle',\n 'raft',\n 'rage',\n 'ragged',\n 'raging',\n 'ragweed',\n 'raider',\n 'railcar',\n 'railing',\n 'railroad',\n 'railway',\n 'raisin',\n 'rake',\n 'raking',\n 'rally',\n 'ramble',\n 'rambling',\n 'ramp',\n 'ramrod',\n 'ranch',\n 'rancidity',\n 'random',\n 'ranged',\n 'ranger',\n 'ranging',\n 'ranked',\n 'ranking',\n 'ransack',\n 'ranting',\n 'rants',\n 'rare',\n 'rarity',\n 'rascal',\n 'rash',\n 'rasping',\n 'ravage',\n 'raven',\n 'ravine',\n 'raving',\n 'ravioli',\n 'ravishing',\n 'reabsorb',\n 'reach',\n 'reacquire',\n 'reaction',\n 'reactive',\n 'reactor',\n 'reaffirm',\n 'ream',\n 'reanalyze',\n 'reappear',\n 'reapply',\n 'reappoint',\n 'reapprove',\n 'rearrange',\n 'rearview',\n 'reason',\n 'reassign',\n 'reassure',\n 'reattach',\n 'reawake',\n 'rebalance',\n 'rebate',\n 'rebel',\n 'rebirth',\n 'reboot',\n 'reborn',\n 'rebound',\n 'rebuff',\n 'rebuild',\n 'rebuilt',\n 'reburial',\n 'rebuttal',\n 'recall',\n 'recant',\n 'recapture',\n 'recast',\n 'recede',\n 'recent',\n 'recess',\n 'recharger',\n 'recipient',\n 'recital',\n 'recite',\n 'reckless',\n 'reclaim',\n 'recliner',\n 'reclining',\n 'recluse',\n 'reclusive',\n 'recognize',\n 'recoil',\n 'recollect',\n 'recolor',\n 'reconcile',\n 'reconfirm',\n 'reconvene',\n 'recopy',\n 'record',\n 'recount',\n 'recoup',\n 'recovery',\n 'recreate',\n 'rectal',\n 'rectangle',\n 'rectified',\n 'rectify',\n 'recycled',\n 'recycler',\n 'recycling',\n 'reemerge',\n 'reenact',\n 'reenter',\n 'reentry',\n 'reexamine',\n 'referable',\n 'referee',\n 'reference',\n 'refill',\n 'refinance',\n 'refined',\n 'refinery',\n 'refining',\n 'refinish',\n 'reflected',\n 'reflector',\n 'reflex',\n 'reflux',\n 'refocus',\n 'refold',\n 'reforest',\n 'reformat',\n 'reformed',\n 'reformer',\n 'reformist',\n 'refract',\n 'refrain',\n 'refreeze',\n 'refresh',\n 'refried',\n 'refueling',\n 'refund',\n 'refurbish',\n 'refurnish',\n 'refusal',\n 'refuse',\n 'refusing',\n 'refutable',\n 'refute',\n 'regain',\n 'regalia',\n 'regally',\n 'reggae',\n 'regime',\n 'region',\n 'register',\n 'registrar',\n 'registry',\n 'regress',\n 'regretful',\n 'regroup',\n 'regular',\n 'regulate',\n 'regulator',\n 'rehab',\n 'reheat',\n 'rehire',\n 'rehydrate',\n 'reimburse',\n 'reissue',\n 'reiterate',\n 'rejoice',\n 'rejoicing',\n 'rejoin',\n 'rekindle',\n 'relapse',\n 'relapsing',\n 'relatable',\n 'related',\n 'relation',\n 'relative',\n 'relax',\n 'relay',\n 'relearn',\n 'release',\n 'relenting',\n 'reliable',\n 'reliably',\n 'reliance',\n 'reliant',\n 'relic',\n 'relieve',\n 'relieving',\n 'relight',\n 'relish',\n 'relive',\n 'reload',\n 'relocate',\n 'relock',\n 'reluctant',\n 'rely',\n 'remake',\n 'remark',\n 'remarry',\n 'rematch',\n 'remedial',\n 'remedy',\n 'remember',\n 'reminder',\n 'remindful',\n 'remission',\n 'remix',\n 'remnant',\n 'remodeler',\n 'remold',\n 'remorse',\n 'remote',\n 'removable',\n 'removal',\n 'removed',\n 'remover',\n 'removing',\n 'rename',\n 'renderer',\n 'rendering',\n 'rendition',\n 'renegade',\n 'renewable',\n 'renewably',\n 'renewal',\n 'renewed',\n 'renounce',\n 'renovate',\n 'renovator',\n 'rentable',\n 'rental',\n 'rented',\n 'renter',\n 'reoccupy',\n 'reoccur',\n 'reopen',\n 'reorder',\n 'repackage',\n 'repacking',\n 'repaint',\n 'repair',\n 'repave',\n 'repaying',\n 'repayment',\n 'repeal',\n 'repeated',\n 'repeater',\n 'repent',\n 'rephrase',\n 'replace',\n 'replay',\n 'replica',\n 'reply',\n 'reporter',\n 'repose',\n 'repossess',\n 'repost',\n 'repressed',\n 'reprimand',\n 'reprint',\n 'reprise',\n 'reproach',\n 'reprocess',\n 'reproduce',\n 'reprogram',\n 'reps',\n 'reptile',\n 'reptilian',\n 'repugnant',\n 'repulsion',\n 'repulsive',\n 'repurpose',\n 'reputable',\n 'reputably',\n 'request',\n 'require',\n 'requisite',\n 'reroute',\n 'rerun',\n 'resale',\n 'resample',\n 'rescuer',\n 'reseal',\n 'research',\n 'reselect',\n 'reseller',\n 'resemble',\n 'resend',\n 'resent',\n 'reset',\n 'reshape',\n 'reshoot',\n 'reshuffle',\n 'residence',\n 'residency',\n 'resident',\n 'residual',\n 'residue',\n 'resigned',\n 'resilient',\n 'resistant',\n 'resisting',\n 'resize',\n 'resolute',\n 'resolved',\n 'resonant',\n 'resonate',\n 'resort',\n 'resource',\n 'respect',\n 'resubmit',\n 'result',\n 'resume',\n 'resupply',\n 'resurface',\n 'resurrect',\n 'retail',\n 'retainer',\n 'retaining',\n 'retake',\n 'retaliate',\n 'retention',\n 'rethink',\n 'retinal',\n 'retired',\n 'retiree',\n 'retiring',\n 'retold',\n 'retool',\n 'retorted',\n 'retouch',\n 'retrace',\n 'retract',\n 'retrain',\n 'retread',\n 'retreat',\n 'retrial',\n 'retrieval',\n 'retriever',\n 'retry',\n 'return',\n 'retying',\n 'retype',\n 'reunion',\n 'reunite',\n 'reusable',\n 'reuse',\n 'reveal',\n 'reveler',\n 'revenge',\n 'revenue',\n 'reverb',\n 'revered',\n 'reverence',\n 'reverend',\n 'reversal',\n 'reverse',\n 'reversing',\n 'reversion',\n 'revert',\n 'revisable',\n 'revise',\n 'revision',\n 'revisit',\n 'revivable',\n 'revival',\n 'reviver',\n 'reviving',\n 'revocable',\n 'revoke',\n 'revolt',\n 'revolver',\n 'revolving',\n 'reward',\n 'rewash',\n 'rewind',\n 'rewire',\n 'reword',\n 'rework',\n 'rewrap',\n 'rewrite',\n 'rhyme',\n 'ribbon',\n 'ribcage',\n 'rice',\n 'riches',\n 'richly',\n 'richness',\n 'rickety',\n 'ricotta',\n 'riddance',\n 'ridden',\n 'ride',\n 'riding',\n 'rifling',\n 'rift',\n 'rigging',\n 'rigid',\n 'rigor',\n 'rimless',\n 'rimmed',\n 'rind',\n 'rink',\n 'rinse',\n 'rinsing',\n 'riot',\n 'ripcord',\n 'ripeness',\n 'ripening',\n 'ripping',\n 'ripple',\n 'rippling',\n 'riptide',\n 'rise',\n 'rising',\n 'risk',\n 'risotto',\n 'ritalin',\n 'ritzy',\n 'rival',\n 'riverbank',\n 'riverbed',\n 'riverboat',\n 'riverside',\n 'riveter',\n 'riveting',\n 'roamer',\n 'roaming',\n 'roast',\n 'robbing',\n 'robe',\n 'robin',\n 'robotics',\n 'robust',\n 'rockband',\n 'rocker',\n 'rocket',\n 'rockfish',\n 'rockiness',\n 'rocking',\n 'rocklike',\n 'rockslide',\n 'rockstar',\n 'rocky',\n 'rogue',\n 'roman',\n 'romp',\n 'rope',\n 'roping',\n 'roster',\n 'rosy',\n 'rotten',\n 'rotting',\n 'rotunda',\n 'roulette',\n 'rounding',\n 'roundish',\n 'roundness',\n 'roundup',\n 'roundworm',\n 'routine',\n 'routing',\n 'rover',\n 'roving',\n 'royal',\n 'rubbed',\n 'rubber',\n 'rubbing',\n 'rubble',\n 'rubdown',\n 'ruby',\n 'ruckus',\n 'rudder',\n 'rug',\n 'ruined',\n 'rule',\n 'rumble',\n 'rumbling',\n 'rummage',\n 'rumor',\n 'runaround',\n 'rundown',\n 'runner',\n 'running',\n 'runny',\n 'runt',\n 'runway',\n 'rupture',\n 'rural',\n 'ruse',\n 'rush',\n 'rust',\n 'rut',\n 'sabbath',\n 'sabotage',\n 'sacrament',\n 'sacred',\n 'sacrifice',\n 'sadden',\n 'saddlebag',\n 'saddled',\n 'saddling',\n 'sadly',\n 'sadness',\n 'safari',\n 'safeguard',\n 'safehouse',\n 'safely',\n 'safeness',\n 'saffron',\n 'saga',\n 'sage',\n 'sagging',\n 'saggy',\n 'said',\n 'saint',\n 'sake',\n 'salad',\n 'salami',\n 'salaried',\n 'salary',\n 'saline',\n 'salon',\n 'saloon',\n 'salsa',\n 'salt',\n 'salutary',\n 'salute',\n 'salvage',\n 'salvaging',\n 'salvation',\n 'same',\n 'sample',\n 'sampling',\n 'sanction',\n 'sanctity',\n 'sanctuary',\n 'sandal',\n 'sandbag',\n 'sandbank',\n 'sandbar',\n 'sandblast',\n 'sandbox',\n 'sanded',\n 'sandfish',\n 'sanding',\n 'sandlot',\n 'sandpaper',\n 'sandpit',\n 'sandstone',\n 'sandstorm',\n 'sandworm',\n 'sandy',\n 'sanitary',\n 'sanitizer',\n 'sank',\n 'santa',\n 'sapling',\n 'sappiness',\n 'sappy',\n 'sarcasm',\n 'sarcastic',\n 'sardine',\n 'sash',\n 'sasquatch',\n 'sassy',\n 'satchel',\n 'satiable',\n 'satin',\n 'satirical',\n 'satisfied',\n 'satisfy',\n 'saturate',\n 'saturday',\n 'sauciness',\n 'saucy',\n 'sauna',\n 'savage',\n 'savanna',\n 'saved',\n 'savings',\n 'savior',\n 'savor',\n 'saxophone',\n 'say',\n 'scabbed',\n 'scabby',\n 'scalded',\n 'scalding',\n 'scale',\n 'scaling',\n 'scallion',\n 'scallop',\n 'scalping',\n 'scam',\n 'scandal',\n 'scanner',\n 'scanning',\n 'scant',\n 'scapegoat',\n 'scarce',\n 'scarcity',\n 'scarecrow',\n 'scared',\n 'scarf',\n 'scarily',\n 'scariness',\n 'scarring',\n 'scary',\n 'scavenger',\n 'scenic',\n 'schedule',\n 'schematic',\n 'scheme',\n 'scheming',\n 'schilling',\n 'schnapps',\n 'scholar',\n 'science',\n 'scientist',\n 'scion',\n 'scoff',\n 'scolding',\n 'scone',\n 'scoop',\n 'scooter',\n 'scope',\n 'scorch',\n 'scorebook',\n 'scorecard',\n 'scored',\n 'scoreless',\n 'scorer',\n 'scoring',\n 'scorn',\n 'scorpion',\n 'scotch',\n 'scoundrel',\n 'scoured',\n 'scouring',\n 'scouting',\n 'scouts',\n 'scowling',\n 'scrabble',\n 'scraggly',\n 'scrambled',\n 'scrambler',\n 'scrap',\n 'scratch',\n 'scrawny',\n 'screen',\n 'scribble',\n 'scribe',\n 'scribing',\n 'scrimmage',\n 'script',\n 'scroll',\n 'scrooge',\n 'scrounger',\n 'scrubbed',\n 'scrubber',\n 'scruffy',\n 'scrunch',\n 'scrutiny',\n 'scuba',\n 'scuff',\n 'sculptor',\n 'sculpture',\n 'scurvy',\n 'scuttle',\n 'secluded',\n 'secluding',\n 'seclusion',\n 'second',\n 'secrecy',\n 'secret',\n 'sectional',\n 'sector',\n 'secular',\n 'securely',\n 'security',\n 'sedan',\n 'sedate',\n 'sedation',\n 'sedative',\n 'sediment',\n 'seduce',\n 'seducing',\n 'segment',\n 'seismic',\n 'seizing',\n 'seldom',\n 'selected',\n 'selection',\n 'selective',\n 'selector',\n 'self',\n 'seltzer',\n 'semantic',\n 'semester',\n 'semicolon',\n 'semifinal',\n 'seminar',\n 'semisoft',\n 'semisweet',\n 'senate',\n 'senator',\n 'send',\n 'senior',\n 'senorita',\n 'sensation',\n 'sensitive',\n 'sensitize',\n 'sensually',\n 'sensuous',\n 'sepia',\n 'september',\n 'septic',\n 'septum',\n 'sequel',\n 'sequence',\n 'sequester',\n 'series',\n 'sermon',\n 'serotonin',\n 'serpent',\n 'serrated',\n 'serve',\n 'service',\n 'serving',\n 'sesame',\n 'sessions',\n 'setback',\n 'setting',\n 'settle',\n 'settling',\n 'setup',\n 'sevenfold',\n 'seventeen',\n 'seventh',\n 'seventy',\n 'severity',\n 'shabby',\n 'shack',\n 'shaded',\n 'shadily',\n 'shadiness',\n 'shading',\n 'shadow',\n 'shady',\n 'shaft',\n 'shakable',\n 'shakily',\n 'shakiness',\n 'shaking',\n 'shaky',\n 'shale',\n 'shallot',\n 'shallow',\n 'shame',\n 'shampoo',\n 'shamrock',\n 'shank',\n 'shanty',\n 'shape',\n 'shaping',\n 'share',\n 'sharpener',\n 'sharper',\n 'sharpie',\n 'sharply',\n 'sharpness',\n 'shawl',\n 'sheath',\n 'shed',\n 'sheep',\n 'sheet',\n 'shelf',\n 'shell',\n 'shelter',\n 'shelve',\n 'shelving',\n 'sherry',\n 'shield',\n 'shifter',\n 'shifting',\n 'shiftless',\n 'shifty',\n 'shimmer',\n 'shimmy',\n 'shindig',\n 'shine',\n 'shingle',\n 'shininess',\n 'shining',\n 'shiny',\n 'ship',\n 'shirt',\n 'shivering',\n 'shock',\n 'shone',\n 'shoplift',\n 'shopper',\n 'shopping',\n 'shoptalk',\n 'shore',\n 'shortage',\n 'shortcake',\n 'shortcut',\n 'shorten',\n 'shorter',\n 'shorthand',\n 'shortlist',\n 'shortly',\n 'shortness',\n 'shorts',\n 'shortwave',\n 'shorty',\n 'shout',\n 'shove',\n 'showbiz',\n 'showcase',\n 'showdown',\n 'shower',\n 'showgirl',\n 'showing',\n 'showman',\n 'shown',\n 'showoff',\n 'showpiece',\n 'showplace',\n 'showroom',\n 'showy',\n 'shrank',\n 'shrapnel',\n 'shredder',\n 'shredding',\n 'shrewdly',\n 'shriek',\n 'shrill',\n 'shrimp',\n 'shrine',\n 'shrink',\n 'shrivel',\n 'shrouded',\n 'shrubbery',\n 'shrubs',\n 'shrug',\n 'shrunk',\n 'shucking',\n 'shudder',\n 'shuffle',\n 'shuffling',\n 'shun',\n 'shush',\n 'shut',\n 'shy',\n 'siamese',\n 'siberian',\n 'sibling',\n 'siding',\n 'sierra',\n 'siesta',\n 'sift',\n 'sighing',\n 'silenced',\n 'silencer',\n 'silent',\n 'silica',\n 'silicon',\n 'silk',\n 'silliness',\n 'silly',\n 'silo',\n 'silt',\n 'silver',\n 'similarly',\n 'simile',\n 'simmering',\n 'simple',\n 'simplify',\n 'simply',\n 'sincere',\n 'sincerity',\n 'singer',\n 'singing',\n 'single',\n 'singular',\n 'sinister',\n 'sinless',\n 'sinner',\n 'sinuous',\n 'sip',\n 'siren',\n 'sister',\n 'sitcom',\n 'sitter',\n 'sitting',\n 'situated',\n 'situation',\n 'sixfold',\n 'sixteen',\n 'sixth',\n 'sixties',\n 'sixtieth',\n 'sixtyfold',\n 'sizable',\n 'sizably',\n 'size',\n 'sizing',\n 'sizzle',\n 'sizzling',\n 'skater',\n 'skating',\n 'skedaddle',\n 'skeletal',\n 'skeleton',\n 'skeptic',\n 'sketch',\n 'skewed',\n 'skewer',\n 'skid',\n 'skied',\n 'skier',\n 'skies',\n 'skiing',\n 'skilled',\n 'skillet',\n 'skillful',\n 'skimmed',\n 'skimmer',\n 'skimming',\n 'skimpily',\n 'skincare',\n 'skinhead',\n 'skinless',\n 'skinning',\n 'skinny',\n 'skintight',\n 'skipper',\n 'skipping',\n 'skirmish',\n 'skirt',\n 'skittle',\n 'skydiver',\n 'skylight',\n 'skyline',\n 'skype',\n 'skyrocket',\n 'skyward',\n 'slab',\n 'slacked',\n 'slacker',\n 'slacking',\n 'slackness',\n 'slacks',\n 'slain',\n 'slam',\n 'slander',\n 'slang',\n 'slapping',\n 'slapstick',\n 'slashed',\n 'slashing',\n 'slate',\n 'slather',\n 'slaw',\n 'sled',\n 'sleek',\n 'sleep',\n 'sleet',\n 'sleeve',\n 'slept',\n 'sliceable',\n 'sliced',\n 'slicer',\n 'slicing',\n 'slick',\n 'slider',\n 'slideshow',\n 'sliding',\n 'slighted',\n 'slighting',\n 'slightly',\n 'slimness',\n 'slimy',\n 'slinging',\n 'slingshot',\n 'slinky',\n 'slip',\n 'slit',\n 'sliver',\n 'slobbery',\n 'slogan',\n 'sloped',\n 'sloping',\n 'sloppily',\n 'sloppy',\n 'slot',\n 'slouching',\n 'slouchy',\n 'sludge',\n 'slug',\n 'slum',\n 'slurp',\n 'slush',\n 'sly',\n 'small',\n 'smartly',\n 'smartness',\n 'smasher',\n 'smashing',\n 'smashup',\n 'smell',\n 'smelting',\n 'smile',\n 'smilingly',\n 'smirk',\n 'smite',\n 'smith',\n 'smitten',\n 'smock',\n 'smog',\n 'smoked',\n 'smokeless',\n 'smokiness',\n 'smoking',\n 'smoky',\n 'smolder',\n 'smooth',\n 'smother',\n 'smudge',\n 'smudgy',\n 'smuggler',\n 'smuggling',\n 'smugly',\n 'smugness',\n 'snack',\n 'snagged',\n 'snaking',\n 'snap',\n 'snare',\n 'snarl',\n 'snazzy',\n 'sneak',\n 'sneer',\n 'sneeze',\n 'sneezing',\n 'snide',\n 'sniff',\n 'snippet',\n 'snipping',\n 'snitch',\n 'snooper',\n 'snooze',\n 'snore',\n 'snoring',\n 'snorkel',\n 'snort',\n 'snout',\n 'snowbird',\n 'snowboard',\n 'snowbound',\n 'snowcap',\n 'snowdrift',\n 'snowdrop',\n 'snowfall',\n 'snowfield',\n 'snowflake',\n 'snowiness',\n 'snowless',\n 'snowman',\n 'snowplow',\n 'snowshoe',\n 'snowstorm',\n 'snowsuit',\n 'snowy',\n 'snub',\n 'snuff',\n 'snuggle',\n 'snugly',\n 'snugness',\n 'speak',\n 'spearfish',\n 'spearhead',\n 'spearman',\n 'spearmint',\n 'species',\n 'specimen',\n 'specked',\n 'speckled',\n 'specks',\n 'spectacle',\n 'spectator',\n 'spectrum',\n 'speculate',\n 'speech',\n 'speed',\n 'spellbind',\n 'speller',\n 'spelling',\n 'spendable',\n 'spender',\n 'spending',\n 'spent',\n 'spew',\n 'sphere',\n 'spherical',\n 'sphinx',\n 'spider',\n 'spied',\n 'spiffy',\n 'spill',\n 'spilt',\n 'spinach',\n 'spinal',\n 'spindle',\n 'spinner',\n 'spinning',\n 'spinout',\n 'spinster',\n 'spiny',\n 'spiral',\n 'spirited',\n 'spiritism',\n 'spirits',\n 'spiritual',\n 'splashed',\n 'splashing',\n 'splashy',\n 'splatter',\n 'spleen',\n 'splendid',\n 'splendor',\n 'splice',\n 'splicing',\n 'splinter',\n 'splotchy',\n 'splurge',\n 'spoilage',\n 'spoiled',\n 'spoiler',\n 'spoiling',\n 'spoils',\n 'spoken',\n 'spokesman',\n 'sponge',\n 'spongy',\n 'sponsor',\n 'spoof',\n 'spookily',\n 'spooky',\n 'spool',\n 'spoon',\n 'spore',\n 'sporting',\n 'sports',\n 'sporty',\n 'spotless',\n 'spotlight',\n 'spotted',\n 'spotter',\n 'spotting',\n 'spotty',\n 'spousal',\n 'spouse',\n 'spout',\n 'sprain',\n 'sprang',\n 'sprawl',\n 'spray',\n 'spree',\n 'sprig',\n 'spring',\n 'sprinkled',\n 'sprinkler',\n 'sprint',\n 'sprite',\n 'sprout',\n 'spruce',\n 'sprung',\n 'spry',\n 'spud',\n 'spur',\n 'sputter',\n 'spyglass',\n 'squabble',\n 'squad',\n 'squall',\n 'squander',\n 'squash',\n 'squatted',\n 'squatter',\n 'squatting',\n 'squeak',\n 'squealer',\n 'squealing',\n 'squeamish',\n 'squeegee',\n 'squeeze',\n 'squeezing',\n 'squid',\n 'squiggle',\n 'squiggly',\n 'squint',\n 'squire',\n 'squirt',\n 'squishier',\n 'squishy',\n 'stability',\n 'stabilize',\n 'stable',\n 'stack',\n 'stadium',\n 'staff',\n 'stage',\n 'staging',\n 'stagnant',\n 'stagnate',\n 'stainable',\n 'stained',\n 'staining',\n 'stainless',\n 'stalemate',\n 'staleness',\n 'stalling',\n 'stallion',\n 'stamina',\n 'stammer',\n 'stamp',\n 'stand',\n 'stank',\n 'staple',\n 'stapling',\n 'starboard',\n 'starch',\n 'stardom',\n 'stardust',\n 'starfish',\n 'stargazer',\n 'staring',\n 'stark',\n 'starless',\n 'starlet',\n 'starlight',\n 'starlit',\n 'starring',\n 'starry',\n 'starship',\n 'starter',\n 'starting',\n 'startle',\n 'startling',\n 'startup',\n 'starved',\n 'starving',\n 'stash',\n 'state',\n 'static',\n 'statistic',\n 'statue',\n 'stature',\n 'status',\n 'statute',\n 'statutory',\n 'staunch',\n 'stays',\n 'steadfast',\n 'steadier',\n 'steadily',\n 'steadying',\n 'steam',\n 'steed',\n 'steep',\n 'steerable',\n 'steering',\n 'steersman',\n 'stegosaur',\n 'stellar',\n 'stem',\n 'stench',\n 'stencil',\n 'step',\n 'stereo',\n 'sterile',\n 'sterility',\n 'sterilize',\n 'sterling',\n 'sternness',\n 'sternum',\n 'stew',\n 'stick',\n 'stiffen',\n 'stiffly',\n 'stiffness',\n 'stifle',\n 'stifling',\n 'stillness',\n 'stilt',\n 'stimulant',\n 'stimulate',\n 'stimuli',\n 'stimulus',\n 'stinger',\n 'stingily',\n 'stinging',\n 'stingray',\n 'stingy',\n 'stinking',\n 'stinky',\n 'stipend',\n 'stipulate',\n 'stir',\n 'stitch',\n 'stock',\n 'stoic',\n 'stoke',\n 'stole',\n 'stomp',\n 'stonewall',\n 'stoneware',\n 'stonework',\n 'stoning',\n 'stony',\n 'stood',\n 'stooge',\n 'stool',\n 'stoop',\n 'stoplight',\n 'stoppable',\n 'stoppage',\n 'stopped',\n 'stopper',\n 'stopping',\n 'stopwatch',\n 'storable',\n 'storage',\n 'storeroom',\n 'storewide',\n 'storm',\n 'stout',\n 'stove',\n 'stowaway',\n 'stowing',\n 'straddle',\n 'straggler',\n 'strained',\n 'strainer',\n 'straining',\n 'strangely',\n 'stranger',\n 'strangle',\n 'strategic',\n 'strategy',\n 'stratus',\n 'straw',\n 'stray',\n 'streak',\n 'stream',\n 'street',\n 'strength',\n 'strenuous',\n 'strep',\n 'stress',\n 'stretch',\n 'strewn',\n 'stricken',\n 'strict',\n 'stride',\n 'strife',\n 'strike',\n 'striking',\n 'strive',\n 'striving',\n 'strobe',\n 'strode',\n 'stroller',\n 'strongbox',\n 'strongly',\n 'strongman',\n 'struck',\n 'structure',\n 'strudel',\n 'struggle',\n 'strum',\n 'strung',\n 'strut',\n 'stubbed',\n 'stubble',\n 'stubbly',\n 'stubborn',\n 'stucco',\n 'stuck',\n 'student',\n 'studied',\n 'studio',\n 'study',\n 'stuffed',\n 'stuffing',\n 'stuffy',\n 'stumble',\n 'stumbling',\n 'stump',\n 'stung',\n 'stunned',\n 'stunner',\n 'stunning',\n 'stunt',\n 'stupor',\n 'sturdily',\n 'sturdy',\n 'styling',\n 'stylishly',\n 'stylist',\n 'stylized',\n 'stylus',\n 'suave',\n 'subarctic',\n 'subatomic',\n 'subdivide',\n 'subdued',\n 'subduing',\n 'subfloor',\n 'subgroup',\n 'subheader',\n 'subject',\n 'sublease',\n 'sublet',\n 'sublevel',\n 'sublime',\n 'submarine',\n 'submerge',\n 'submersed',\n 'submitter',\n 'subpanel',\n 'subpar',\n 'subplot',\n 'subprime',\n 'subscribe',\n 'subscript',\n 'subsector',\n 'subside',\n 'subsiding',\n 'subsidize',\n 'subsidy',\n 'subsoil',\n 'subsonic',\n 'substance',\n 'subsystem',\n 'subtext',\n 'subtitle',\n 'subtly',\n 'subtotal',\n 'subtract',\n 'subtype',\n 'suburb',\n 'subway',\n 'subwoofer',\n 'subzero',\n 'succulent',\n 'such',\n 'suction',\n 'sudden',\n 'sudoku',\n 'suds',\n 'sufferer',\n 'suffering',\n 'suffice',\n 'suffix',\n 'suffocate',\n 'suffrage',\n 'sugar',\n 'suggest',\n 'suing',\n 'suitable',\n 'suitably',\n 'suitcase',\n 'suitor',\n 'sulfate',\n 'sulfide',\n 'sulfite',\n 'sulfur',\n 'sulk',\n 'sullen',\n 'sulphate',\n 'sulphuric',\n 'sultry',\n 'superbowl',\n 'superglue',\n 'superhero',\n 'superior',\n 'superjet',\n 'superman',\n 'supermom',\n 'supernova',\n 'supervise',\n 'supper',\n 'supplier',\n 'supply',\n 'support',\n 'supremacy',\n 'supreme',\n 'surcharge',\n 'surely',\n 'sureness',\n 'surface',\n 'surfacing',\n 'surfboard',\n 'surfer',\n 'surgery',\n 'surgical',\n 'surging',\n 'surname',\n 'surpass',\n 'surplus',\n 'surprise',\n 'surreal',\n 'surrender',\n 'surrogate',\n 'surround',\n 'survey',\n 'survival',\n 'survive',\n 'surviving',\n 'survivor',\n 'sushi',\n 'suspect',\n 'suspend',\n 'suspense',\n 'sustained',\n 'sustainer',\n 'swab',\n 'swaddling',\n 'swagger',\n 'swampland',\n 'swan',\n 'swapping',\n 'swarm',\n 'sway',\n 'swear',\n 'sweat',\n 'sweep',\n 'swell',\n 'swept',\n 'swerve',\n 'swifter',\n 'swiftly',\n 'swiftness',\n 'swimmable',\n 'swimmer',\n 'swimming',\n 'swimsuit',\n 'swimwear',\n 'swinger',\n 'swinging',\n 'swipe',\n 'swirl',\n 'switch',\n 'swivel',\n 'swizzle',\n 'swooned',\n 'swoop',\n 'swoosh',\n 'swore',\n 'sworn',\n 'swung',\n 'sycamore',\n 'sympathy',\n 'symphonic',\n 'symphony',\n 'symptom',\n 'synapse',\n 'syndrome',\n 'synergy',\n 'synopses',\n 'synopsis',\n 'synthesis',\n 'synthetic',\n 'syrup',\n 'system',\n 't-shirt',\n 'tabasco',\n 'tabby',\n 'tableful',\n 'tables',\n 'tablet',\n 'tableware',\n 'tabloid',\n 'tackiness',\n 'tacking',\n 'tackle',\n 'tackling',\n 'tacky',\n 'taco',\n 'tactful',\n 'tactical',\n 'tactics',\n 'tactile',\n 'tactless',\n 'tadpole',\n 'taekwondo',\n 'tag',\n 'tainted',\n 'take',\n 'taking',\n 'talcum',\n 'talisman',\n 'tall',\n 'talon',\n 'tamale',\n 'tameness',\n 'tamer',\n 'tamper',\n 'tank',\n 'tanned',\n 'tannery',\n 'tanning',\n 'tantrum',\n 'tapeless',\n 'tapered',\n 'tapering',\n 'tapestry',\n 'tapioca',\n 'tapping',\n 'taps',\n 'tarantula',\n 'target',\n 'tarmac',\n 'tarnish',\n 'tarot',\n 'tartar',\n 'tartly',\n 'tartness',\n 'task',\n 'tassel',\n 'taste',\n 'tastiness',\n 'tasting',\n 'tasty',\n 'tattered',\n 'tattle',\n 'tattling',\n 'tattoo',\n 'taunt',\n 'tavern',\n 'thank',\n 'that',\n 'thaw',\n 'theater',\n 'theatrics',\n 'thee',\n 'theft',\n 'theme',\n 'theology',\n 'theorize',\n 'thermal',\n 'thermos',\n 'thesaurus',\n 'these',\n 'thesis',\n 'thespian',\n 'thicken',\n 'thicket',\n 'thickness',\n 'thieving',\n 'thievish',\n 'thigh',\n 'thimble',\n 'thing',\n 'think',\n 'thinly',\n 'thinner',\n 'thinness',\n 'thinning',\n 'thirstily',\n 'thirsting',\n 'thirsty',\n 'thirteen',\n 'thirty',\n 'thong',\n 'thorn',\n 'those',\n 'thousand',\n 'thrash',\n 'thread',\n 'threaten',\n 'threefold',\n 'thrift',\n 'thrill',\n 'thrive',\n 'thriving',\n 'throat',\n 'throbbing',\n 'throng',\n 'throttle',\n 'throwaway',\n 'throwback',\n 'thrower',\n 'throwing',\n 'thud',\n 'thumb',\n 'thumping',\n 'thursday',\n 'thus',\n 'thwarting',\n 'thyself',\n 'tiara',\n 'tibia',\n 'tidal',\n 'tidbit',\n 'tidiness',\n 'tidings',\n 'tidy',\n 'tiger',\n 'tighten',\n 'tightly',\n 'tightness',\n 'tightrope',\n 'tightwad',\n 'tigress',\n 'tile',\n 'tiling',\n 'till',\n 'tilt',\n 'timid',\n 'timing',\n 'timothy',\n 'tinderbox',\n 'tinfoil',\n 'tingle',\n 'tingling',\n 'tingly',\n 'tinker',\n 'tinkling',\n 'tinsel',\n 'tinsmith',\n 'tint',\n 'tinwork',\n 'tiny',\n 'tipoff',\n 'tipped',\n 'tipper',\n 'tipping',\n 'tiptoeing',\n 'tiptop',\n 'tiring',\n 'tissue',\n 'trace',\n 'tracing',\n 'track',\n 'traction',\n 'tractor',\n 'trade',\n 'trading',\n 'tradition',\n 'traffic',\n 'tragedy',\n 'trailing',\n 'trailside',\n 'train',\n 'traitor',\n 'trance',\n 'tranquil',\n 'transfer',\n 'transform',\n 'translate',\n 'transpire',\n 'transport',\n 'transpose',\n 'trapdoor',\n 'trapeze',\n 'trapezoid',\n 'trapped',\n 'trapper',\n 'trapping',\n 'traps',\n 'trash',\n 'travel',\n 'traverse',\n 'travesty',\n 'tray',\n 'treachery',\n 'treading',\n 'treadmill',\n 'treason',\n 'treat',\n 'treble',\n 'tree',\n 'trekker',\n 'tremble',\n 'trembling',\n 'tremor',\n 'trench',\n 'trend',\n 'trespass',\n 'triage',\n 'trial',\n 'triangle',\n 'tribesman',\n 'tribunal',\n 'tribune',\n 'tributary',\n 'tribute',\n 'triceps',\n 'trickery',\n 'trickily',\n 'tricking',\n 'trickle',\n 'trickster',\n 'tricky',\n 'tricolor',\n 'tricycle',\n 'trident',\n 'tried',\n 'trifle',\n 'trifocals',\n 'trillion',\n 'trilogy',\n 'trimester',\n 'trimmer',\n 'trimming',\n 'trimness',\n 'trinity',\n 'trio',\n 'tripod',\n 'tripping',\n 'triumph',\n 'trivial',\n 'trodden',\n 'trolling',\n 'trombone',\n 'trophy',\n 'tropical',\n 'tropics',\n 'trouble',\n 'troubling',\n 'trough',\n 'trousers',\n 'trout',\n 'trowel',\n 'truce',\n 'truck',\n 'truffle',\n 'trump',\n 'trunks',\n 'trustable',\n 'trustee',\n 'trustful',\n 'trusting',\n 'trustless',\n 'truth',\n 'try',\n 'tubby',\n 'tubeless',\n 'tubular',\n 'tucking',\n 'tuesday',\n 'tug',\n 'tuition',\n 'tulip',\n 'tumble',\n 'tumbling',\n 'tummy',\n 'turban',\n 'turbine',\n 'turbofan',\n 'turbojet',\n 'turbulent',\n 'turf',\n 'turkey',\n 'turmoil',\n 'turret',\n 'turtle',\n 'tusk',\n 'tutor',\n 'tutu',\n 'tux',\n 'tweak',\n 'tweed',\n 'tweet',\n 'tweezers',\n 'twelve',\n 'twentieth',\n 'twenty',\n 'twerp',\n 'twice',\n 'twiddle',\n 'twiddling',\n 'twig',\n 'twilight',\n 'twine',\n 'twins',\n 'twirl',\n 'twistable',\n 'twisted',\n 'twister',\n 'twisting',\n 'twisty',\n 'twitch',\n 'twitter',\n 'tycoon',\n 'tying',\n 'tyke',\n 'udder',\n 'ultimate',\n 'ultimatum',\n 'ultra',\n 'umbilical',\n 'umbrella',\n 'umpire',\n 'unabashed',\n 'unable',\n 'unadorned',\n 'unadvised',\n 'unafraid',\n 'unaired',\n 'unaligned',\n 'unaltered',\n 'unarmored',\n 'unashamed',\n 'unaudited',\n 'unawake',\n 'unaware',\n 'unbaked',\n 'unbalance',\n 'unbeaten',\n 'unbend',\n 'unbent',\n 'unbiased',\n 'unbitten',\n 'unblended',\n 'unblessed',\n 'unblock',\n 'unbolted',\n 'unbounded',\n 'unboxed',\n 'unbraided',\n 'unbridle',\n 'unbroken',\n 'unbuckled',\n 'unbundle',\n 'unburned',\n 'unbutton',\n 'uncanny',\n 'uncapped',\n 'uncaring',\n 'uncertain',\n 'unchain',\n 'unchanged',\n 'uncharted',\n 'uncheck',\n 'uncivil',\n 'unclad',\n 'unclaimed',\n 'unclamped',\n 'unclasp',\n 'uncle',\n 'unclip',\n 'uncloak',\n 'unclog',\n 'unclothed',\n 'uncoated',\n 'uncoiled',\n 'uncolored',\n 'uncombed',\n 'uncommon',\n 'uncooked',\n 'uncork',\n 'uncorrupt',\n 'uncounted',\n 'uncouple',\n 'uncouth',\n 'uncover',\n 'uncross',\n 'uncrown',\n 'uncrushed',\n 'uncured',\n 'uncurious',\n 'uncurled',\n 'uncut',\n 'undamaged',\n 'undated',\n 'undaunted',\n 'undead',\n 'undecided',\n 'undefined',\n 'underage',\n 'underarm',\n 'undercoat',\n 'undercook',\n 'undercut',\n 'underdog',\n 'underdone',\n 'underfed',\n 'underfeed',\n 'underfoot',\n 'undergo',\n 'undergrad',\n 'underhand',\n 'underline',\n 'underling',\n 'undermine',\n 'undermost',\n 'underpaid',\n 'underpass',\n 'underpay',\n 'underrate',\n 'undertake',\n 'undertone',\n 'undertook',\n 'undertow',\n 'underuse',\n 'underwear',\n 'underwent',\n 'underwire',\n 'undesired',\n 'undiluted',\n 'undivided',\n 'undocked',\n 'undoing',\n 'undone',\n 'undrafted',\n 'undress',\n 'undrilled',\n 'undusted',\n 'undying',\n 'unearned',\n 'unearth',\n 'unease',\n 'uneasily',\n 'uneasy',\n 'uneatable',\n 'uneaten',\n 'unedited',\n 'unelected',\n 'unending',\n 'unengaged',\n 'unenvied',\n 'unequal',\n 'unethical',\n 'uneven',\n 'unexpired',\n 'unexposed',\n 'unfailing',\n 'unfair',\n 'unfasten',\n 'unfazed',\n 'unfeeling',\n 'unfiled',\n 'unfilled',\n 'unfitted',\n 'unfitting',\n 'unfixable',\n 'unfixed',\n 'unflawed',\n 'unfocused',\n 'unfold',\n 'unfounded',\n 'unframed',\n 'unfreeze',\n 'unfrosted',\n 'unfrozen',\n 'unfunded',\n 'unglazed',\n 'ungloved',\n 'unglue',\n 'ungodly',\n 'ungraded',\n 'ungreased',\n 'unguarded',\n 'unguided',\n 'unhappily',\n 'unhappy',\n 'unharmed',\n 'unhealthy',\n 'unheard',\n 'unhearing',\n 'unheated',\n 'unhelpful',\n 'unhidden',\n 'unhinge',\n 'unhitched',\n 'unholy',\n 'unhook',\n 'unicorn',\n 'unicycle',\n 'unified',\n 'unifier',\n 'uniformed',\n 'uniformly',\n 'unify',\n 'unimpeded',\n 'uninjured',\n 'uninstall',\n 'uninsured',\n 'uninvited',\n 'union',\n 'uniquely',\n 'unisexual',\n 'unison',\n 'unissued',\n 'unit',\n 'universal',\n 'universe',\n 'unjustly',\n 'unkempt',\n 'unkind',\n 'unknotted',\n 'unknowing',\n 'unknown',\n 'unlaced',\n 'unlatch',\n 'unlawful',\n 'unleaded',\n 'unlearned',\n 'unleash',\n 'unless',\n 'unleveled',\n 'unlighted',\n 'unlikable',\n 'unlimited',\n 'unlined',\n 'unlinked',\n 'unlisted',\n 'unlit',\n 'unlivable',\n 'unloaded',\n 'unloader',\n 'unlocked',\n 'unlocking',\n 'unlovable',\n 'unloved',\n 'unlovely',\n 'unloving',\n 'unluckily',\n 'unlucky',\n 'unmade',\n 'unmanaged',\n 'unmanned',\n 'unmapped',\n 'unmarked',\n 'unmasked',\n 'unmasking',\n 'unmatched',\n 'unmindful',\n 'unmixable',\n 'unmixed',\n 'unmolded',\n 'unmoral',\n 'unmovable',\n 'unmoved',\n 'unmoving',\n 'unnamable',\n 'unnamed',\n 'unnatural',\n 'unneeded',\n 'unnerve',\n 'unnerving',\n 'unnoticed',\n 'unopened',\n 'unopposed',\n 'unpack',\n 'unpadded',\n 'unpaid',\n 'unpainted',\n 'unpaired',\n 'unpaved',\n 'unpeeled',\n 'unpicked',\n 'unpiloted',\n 'unpinned',\n 'unplanned',\n 'unplanted',\n 'unpleased',\n 'unpledged',\n 'unplowed',\n 'unplug',\n 'unpopular',\n 'unproven',\n 'unquote',\n 'unranked',\n 'unrated',\n 'unraveled',\n 'unreached',\n 'unread',\n 'unreal',\n 'unreeling',\n 'unrefined',\n 'unrelated',\n 'unrented',\n 'unrest',\n 'unretired',\n 'unrevised',\n 'unrigged',\n 'unripe',\n 'unrivaled',\n 'unroasted',\n 'unrobed',\n 'unroll',\n 'unruffled',\n 'unruly',\n 'unrushed',\n 'unsaddle',\n 'unsafe',\n 'unsaid',\n 'unsalted',\n 'unsaved',\n 'unsavory',\n 'unscathed',\n 'unscented',\n 'unscrew',\n 'unsealed',\n 'unseated',\n 'unsecured',\n 'unseeing',\n 'unseemly',\n 'unseen',\n 'unselect',\n 'unselfish',\n 'unsent',\n 'unsettled',\n 'unshackle',\n 'unshaken',\n 'unshaved',\n 'unshaven',\n 'unsheathe',\n 'unshipped',\n 'unsightly',\n 'unsigned',\n 'unskilled',\n 'unsliced',\n 'unsmooth',\n 'unsnap',\n 'unsocial',\n 'unsoiled',\n 'unsold',\n 'unsolved',\n 'unsorted',\n 'unspoiled',\n 'unspoken',\n 'unstable',\n 'unstaffed',\n 'unstamped',\n 'unsteady',\n 'unsterile',\n 'unstirred',\n 'unstitch',\n 'unstopped',\n 'unstuck',\n 'unstuffed',\n 'unstylish',\n 'unsubtle',\n 'unsubtly',\n 'unsuited',\n 'unsure',\n 'unsworn',\n 'untagged',\n 'untainted',\n 'untaken',\n 'untamed',\n 'untangled',\n 'untapped',\n 'untaxed',\n 'unthawed',\n 'unthread',\n 'untidy',\n 'untie',\n 'until',\n 'untimed',\n 'untimely',\n 'untitled',\n 'untoasted',\n 'untold',\n 'untouched',\n 'untracked',\n 'untrained',\n 'untreated',\n 'untried',\n 'untrimmed',\n 'untrue',\n 'untruth',\n 'unturned',\n 'untwist',\n 'untying',\n 'unusable',\n 'unused',\n 'unusual',\n 'unvalued',\n 'unvaried',\n 'unvarying',\n 'unveiled',\n 'unveiling',\n 'unvented',\n 'unviable',\n 'unvisited',\n 'unvocal',\n 'unwanted',\n 'unwarlike',\n 'unwary',\n 'unwashed',\n 'unwatched',\n 'unweave',\n 'unwed',\n 'unwelcome',\n 'unwell',\n 'unwieldy',\n 'unwilling',\n 'unwind',\n 'unwired',\n 'unwitting',\n 'unwomanly',\n 'unworldly',\n 'unworn',\n 'unworried',\n 'unworthy',\n 'unwound',\n 'unwoven',\n 'unwrapped',\n 'unwritten',\n 'unzip',\n 'upbeat',\n 'upchuck',\n 'upcoming',\n 'upcountry',\n 'update',\n 'upfront',\n 'upgrade',\n 'upheaval',\n 'upheld',\n 'uphill',\n 'uphold',\n 'uplifted',\n 'uplifting',\n 'upload',\n 'upon',\n 'upper',\n 'upright',\n 'uprising',\n 'upriver',\n 'uproar',\n 'uproot',\n 'upscale',\n 'upside',\n 'upstage',\n 'upstairs',\n 'upstart',\n 'upstate',\n 'upstream',\n 'upstroke',\n 'upswing',\n 'uptake',\n 'uptight',\n 'uptown',\n 'upturned',\n 'upward',\n 'upwind',\n 'uranium',\n 'urban',\n 'urchin',\n 'urethane',\n 'urgency',\n 'urgent',\n 'urging',\n 'urologist',\n 'urology',\n 'usable',\n 'usage',\n 'useable',\n 'used',\n 'uselessly',\n 'user',\n 'usher',\n 'usual',\n 'utensil',\n 'utility',\n 'utilize',\n 'utmost',\n 'utopia',\n 'utter',\n 'vacancy',\n 'vacant',\n 'vacate',\n 'vacation',\n 'vagabond',\n 'vagrancy',\n 'vagrantly',\n 'vaguely',\n 'vagueness',\n 'valiant',\n 'valid',\n 'valium',\n 'valley',\n 'valuables',\n 'value',\n 'vanilla',\n 'vanish',\n 'vanity',\n 'vanquish',\n 'vantage',\n 'vaporizer',\n 'variable',\n 'variably',\n 'varied',\n 'variety',\n 'various',\n 'varmint',\n 'varnish',\n 'varsity',\n 'varying',\n 'vascular',\n 'vaseline',\n 'vastly',\n 'vastness',\n 'veal',\n 'vegan',\n 'veggie',\n 'vehicular',\n 'velcro',\n 'velocity',\n 'velvet',\n 'vendetta',\n 'vending',\n 'vendor',\n 'veneering',\n 'vengeful',\n 'venomous',\n 'ventricle',\n 'venture',\n 'venue',\n 'venus',\n 'verbalize',\n 'verbally',\n 'verbose',\n 'verdict',\n 'verify',\n 'verse',\n 'version',\n 'versus',\n 'vertebrae',\n 'vertical',\n 'vertigo',\n 'very',\n 'vessel',\n 'vest',\n 'veteran',\n 'veto',\n 'vexingly',\n 'viability',\n 'viable',\n 'vibes',\n 'vice',\n 'vicinity',\n 'victory',\n 'video',\n 'viewable',\n 'viewer',\n 'viewing',\n 'viewless',\n 'viewpoint',\n 'vigorous',\n 'village',\n 'villain',\n 'vindicate',\n 'vineyard',\n 'vintage',\n 'violate',\n 'violation',\n 'violator',\n 'violet',\n 'violin',\n 'viper',\n 'viral',\n 'virtual',\n 'virtuous',\n 'virus',\n 'visa',\n 'viscosity',\n 'viscous',\n 'viselike',\n 'visible',\n 'visibly',\n 'vision',\n 'visiting',\n 'visitor',\n 'visor',\n 'vista',\n 'vitality',\n 'vitalize',\n 'vitally',\n 'vitamins',\n 'vivacious',\n 'vividly',\n 'vividness',\n 'vixen',\n 'vocalist',\n 'vocalize',\n 'vocally',\n 'vocation',\n 'voice',\n 'voicing',\n 'void',\n 'volatile',\n 'volley',\n 'voltage',\n 'volumes',\n 'voter',\n 'voting',\n 'voucher',\n 'vowed',\n 'vowel',\n 'voyage',\n 'wackiness',\n 'wad',\n 'wafer',\n 'waffle',\n 'waged',\n 'wager',\n 'wages',\n 'waggle',\n 'wagon',\n 'wake',\n 'waking',\n 'walk',\n 'walmart',\n 'walnut',\n 'walrus',\n 'waltz',\n 'wand',\n 'wannabe',\n 'wanted',\n 'wanting',\n 'wasabi',\n 'washable',\n 'washbasin',\n 'washboard',\n 'washbowl',\n 'washcloth',\n 'washday',\n 'washed',\n 'washer',\n 'washhouse',\n 'washing',\n 'washout',\n 'washroom',\n 'washstand',\n 'washtub',\n 'wasp',\n 'wasting',\n 'watch',\n 'water',\n 'waviness',\n 'waving',\n 'wavy',\n 'whacking',\n 'whacky',\n 'wham',\n 'wharf',\n 'wheat',\n 'whenever',\n 'whiff',\n 'whimsical',\n 'whinny',\n 'whiny',\n 'whisking',\n 'whoever',\n 'whole',\n 'whomever',\n 'whoopee',\n 'whooping',\n 'whoops',\n 'why',\n 'wick',\n 'widely',\n 'widen',\n 'widget',\n 'widow',\n 'width',\n 'wieldable',\n 'wielder',\n 'wife',\n 'wifi',\n 'wikipedia',\n 'wildcard',\n 'wildcat',\n 'wilder',\n 'wildfire',\n 'wildfowl',\n 'wildland',\n 'wildlife',\n 'wildly',\n 'wildness',\n 'willed',\n 'willfully',\n 'willing',\n 'willow',\n 'willpower',\n 'wilt',\n 'wimp',\n 'wince',\n 'wincing',\n 'wind',\n 'wing',\n 'winking',\n 'winner',\n 'winnings',\n 'winter',\n 'wipe',\n 'wired',\n 'wireless',\n 'wiring',\n 'wiry',\n 'wisdom',\n 'wise',\n 'wish',\n 'wisplike',\n 'wispy',\n 'wistful',\n 'wizard',\n 'wobble',\n 'wobbling',\n 'wobbly',\n 'wok',\n 'wolf',\n 'wolverine',\n 'womanhood',\n 'womankind',\n 'womanless',\n 'womanlike',\n 'womanly',\n 'womb',\n 'woof',\n 'wooing',\n 'wool',\n 'woozy',\n 'word',\n 'work',\n 'worried',\n 'worrier',\n 'worrisome',\n 'worry',\n 'worsening',\n 'worshiper',\n 'worst',\n 'wound',\n 'woven',\n 'wow',\n 'wrangle',\n 'wrath',\n 'wreath',\n 'wreckage',\n 'wrecker',\n 'wrecking',\n 'wrench',\n 'wriggle',\n 'wriggly',\n 'wrinkle',\n 'wrinkly',\n 'wrist',\n 'writing',\n 'written',\n 'wrongdoer',\n 'wronged',\n 'wrongful',\n 'wrongly',\n 'wrongness',\n 'wrought',\n 'xbox',\n 'xerox',\n 'yahoo',\n 'yam',\n 'yanking',\n 'yapping',\n 'yard',\n 'yarn',\n 'yeah',\n 'yearbook',\n 'yearling',\n 'yearly',\n 'yearning',\n 'yeast',\n 'yelling',\n 'yelp',\n 'yen',\n 'yesterday',\n 'yiddish',\n 'yield',\n 'yin',\n 'yippee',\n 'yo-yo',\n 'yodel',\n 'yoga',\n 'yogurt',\n 'yonder',\n 'yoyo',\n 'yummy',\n 'zap',\n 'zealous',\n 'zebra',\n 'zen',\n 'zeppelin',\n 'zero',\n 'zestfully',\n 'zesty',\n 'zigzagged',\n 'zipfile',\n 'zipping',\n 'zippy',\n 'zips',\n 'zit',\n 'zodiac',\n 'zombie',\n 'zone',\n 'zoning',\n 'zookeeper',\n 'zoologist',\n 'zoology',\n 'zoom',\n];\n","import { EnvironmentUrls } from '../models/domain/environmentUrls';\n\nimport { ConstantsService } from './constants.service';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { EnvironmentService as EnvironmentServiceAbstraction } from '../abstractions/environment.service';\nimport { NotificationsService } from '../abstractions/notifications.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nexport class EnvironmentService implements EnvironmentServiceAbstraction {\n baseUrl: string;\n webVaultUrl: string;\n apiUrl: string;\n identityUrl: string;\n iconsUrl: string;\n notificationsUrl: string;\n eventsUrl: string;\n enterpriseUrl: string;\n\n constructor(private apiService: ApiService, private storageService: StorageService,\n private notificationsService: NotificationsService) { }\n\n getWebVaultUrl(): string {\n if (this.webVaultUrl != null) {\n return this.webVaultUrl;\n } else if (this.baseUrl) {\n return this.baseUrl;\n }\n return null;\n }\n\n async setUrlsFromStorage(): Promise {\n const urlsObj: any = await this.storageService.get(ConstantsService.environmentUrlsKey);\n const urls = urlsObj || {\n base: null,\n api: null,\n identity: null,\n icons: null,\n notifications: null,\n events: null,\n webVault: null,\n enterprise: null,\n };\n\n const envUrls = new EnvironmentUrls();\n\n if (urls.base) {\n this.baseUrl = envUrls.base = urls.base;\n this.apiService.setUrls(envUrls);\n return;\n }\n\n this.webVaultUrl = urls.webVault;\n this.apiUrl = envUrls.api = urls.api;\n this.identityUrl = envUrls.identity = urls.identity;\n this.iconsUrl = urls.icons;\n this.notificationsUrl = urls.notifications;\n this.eventsUrl = envUrls.events = urls.events;\n this.enterpriseUrl = urls.enterprise;\n this.apiService.setUrls(envUrls);\n }\n\n async setUrls(urls: any): Promise {\n urls.base = this.formatUrl(urls.base);\n urls.webVault = this.formatUrl(urls.webVault);\n urls.api = this.formatUrl(urls.api);\n urls.identity = this.formatUrl(urls.identity);\n urls.icons = this.formatUrl(urls.icons);\n urls.notifications = this.formatUrl(urls.notifications);\n urls.events = this.formatUrl(urls.events);\n urls.enterprise = this.formatUrl(urls.enterprise);\n\n await this.storageService.save(ConstantsService.environmentUrlsKey, {\n base: urls.base,\n api: urls.api,\n identity: urls.identity,\n webVault: urls.webVault,\n icons: urls.icons,\n notifications: urls.notifications,\n events: urls.events,\n enterprise: urls.enterprise,\n });\n\n this.baseUrl = urls.base;\n this.webVaultUrl = urls.webVault;\n this.apiUrl = urls.api;\n this.identityUrl = urls.identity;\n this.iconsUrl = urls.icons;\n this.notificationsUrl = urls.notifications;\n this.eventsUrl = urls.events;\n this.enterpriseUrl = urls.enterprise;\n\n const envUrls = new EnvironmentUrls();\n if (this.baseUrl) {\n envUrls.base = this.baseUrl;\n } else {\n envUrls.api = this.apiUrl;\n envUrls.identity = this.identityUrl;\n envUrls.events = this.eventsUrl;\n }\n\n this.apiService.setUrls(envUrls);\n if (this.notificationsService != null) {\n this.notificationsService.init(this);\n }\n return urls;\n }\n\n private formatUrl(url: string): string {\n if (url == null || url === '') {\n return null;\n }\n\n url = url.replace(/\\/+$/g, '');\n if (!url.startsWith('http://') && !url.startsWith('https://')) {\n url = 'https://' + url;\n }\n\n return url.trim();\n }\n}\n","import { FolderData } from '../models/data/folderData';\n\nimport { Folder } from '../models/domain/folder';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { FolderRequest } from '../models/request/folderRequest';\n\nimport { FolderResponse } from '../models/response/folderResponse';\n\nimport { FolderView } from '../models/view/folderView';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService as FolderServiceAbstraction } from '../abstractions/folder.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\nimport { CipherData } from '../models/data/cipherData';\n\nimport { ServiceUtils } from '../misc/serviceUtils';\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n foldersPrefix: 'folders_',\n ciphersPrefix: 'ciphers_',\n};\nconst NestingDelimiter = '/';\n\nexport class FolderService implements FolderServiceAbstraction {\n decryptedFolderCache: FolderView[];\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private apiService: ApiService, private storageService: StorageService,\n private i18nService: I18nService, private cipherService: CipherService) { }\n\n clearCache(): void {\n this.decryptedFolderCache = null;\n }\n\n async encrypt(model: FolderView, key?: SymmetricCryptoKey): Promise {\n const folder = new Folder();\n folder.id = model.id;\n folder.name = await this.cryptoService.encrypt(model.name, key);\n return folder;\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n if (folders == null || !folders.hasOwnProperty(id)) {\n return null;\n }\n\n return new Folder(folders[id]);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n const response: Folder[] = [];\n for (const id in folders) {\n if (folders.hasOwnProperty(id)) {\n response.push(new Folder(folders[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n if (this.decryptedFolderCache != null) {\n return this.decryptedFolderCache;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const decFolders: FolderView[] = [];\n const promises: Promise[] = [];\n const folders = await this.getAll();\n folders.forEach(folder => {\n promises.push(folder.decrypt().then(f => decFolders.push(f)));\n });\n\n await Promise.all(promises);\n decFolders.sort(Utils.getSortFunction(this.i18nService, 'name'));\n\n const noneFolder = new FolderView();\n noneFolder.name = this.i18nService.t('noneFolder');\n decFolders.push(noneFolder);\n\n this.decryptedFolderCache = decFolders;\n return this.decryptedFolderCache;\n }\n\n async getAllNested(): Promise[]> {\n const folders = await this.getAllDecrypted();\n const nodes: TreeNode[] = [];\n folders.forEach(f => {\n const folderCopy = new FolderView();\n folderCopy.id = f.id;\n folderCopy.revisionDate = f.revisionDate;\n const parts = f.name != null ? f.name.replace(/^\\/+|\\/+$/g, '').split(NestingDelimiter) : [];\n ServiceUtils.nestedTraverse(nodes, 0, parts, folderCopy, null, NestingDelimiter);\n });\n return nodes;\n }\n\n async getNested(id: string): Promise> {\n const folders = await this.getAllNested();\n return ServiceUtils.getTreeNodeObject(folders, id) as TreeNode;\n }\n\n async saveWithServer(folder: Folder): Promise {\n const request = new FolderRequest(folder);\n\n let response: FolderResponse;\n if (folder.id == null) {\n response = await this.apiService.postFolder(request);\n folder.id = response.id;\n } else {\n response = await this.apiService.putFolder(folder.id, request);\n }\n\n const userId = await this.userService.getUserId();\n const data = new FolderData(response, userId);\n await this.upsert(data);\n }\n\n async upsert(folder: FolderData | FolderData[]): Promise {\n const userId = await this.userService.getUserId();\n let folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n if (folders == null) {\n folders = {};\n }\n\n if (folder instanceof FolderData) {\n const f = folder as FolderData;\n folders[f.id] = f;\n } else {\n (folder as FolderData[]).forEach(f => {\n folders[f.id] = f;\n });\n }\n\n await this.storageService.save(Keys.foldersPrefix + userId, folders);\n this.decryptedFolderCache = null;\n }\n\n async replace(folders: { [id: string]: FolderData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.foldersPrefix + userId, folders);\n this.decryptedFolderCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.foldersPrefix + userId);\n this.decryptedFolderCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n if (folders == null) {\n return;\n }\n\n if (typeof id === 'string') {\n if (folders[id] == null) {\n return;\n }\n delete folders[id];\n } else {\n (id as string[]).forEach(i => {\n delete folders[i];\n });\n }\n\n await this.storageService.save(Keys.foldersPrefix + userId, folders);\n this.decryptedFolderCache = null;\n\n // Items in a deleted folder are re-assigned to \"No Folder\"\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(Keys.ciphersPrefix + userId);\n if (ciphers != null) {\n const updates: CipherData[] = [];\n for (const cId in ciphers) {\n if (ciphers[cId].folderId === id) {\n ciphers[cId].folderId = null;\n updates.push(ciphers[cId]);\n }\n }\n if (updates.length > 0) {\n this.cipherService.upsert(updates);\n }\n }\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteFolder(id);\n await this.delete(id);\n }\n}\n","import { I18nService as I18nServiceAbstraction } from '../abstractions/i18n.service';\n\nexport class I18nService implements I18nServiceAbstraction {\n locale: string;\n // First locale is the default (English)\n supportedTranslationLocales: string[] = ['en'];\n translationLocale: string;\n collator: Intl.Collator;\n localeNames = new Map([\n ['af', 'Afrikaans'],\n ['be', 'Беларуская'],\n ['bg', 'български'],\n ['ca', 'català'],\n ['cs', 'čeština'],\n ['da', 'dansk'],\n ['de', 'Deutsch'],\n ['el', 'Ελληνικά'],\n ['en', 'English'],\n ['en-GB', 'English (British)'],\n ['eo', 'Esperanto'],\n ['es', 'español'],\n ['et', 'eesti'],\n ['fa', 'فارسی'],\n ['fi', 'suomi'],\n ['fr', 'français'],\n ['he', 'עברית'],\n ['hi', 'हिन्दी'],\n ['hr', 'hrvatski'],\n ['hu', 'magyar'],\n ['id', 'Bahasa Indonesia'],\n ['it', 'italiano'],\n ['ja', '日本語'],\n ['ko', '한국어'],\n ['lv', 'Latvietis'],\n ['ml', 'മലയാളം'],\n ['nb', 'norsk (bokmål)'],\n ['nl', 'Nederlands'],\n ['pl', 'polski'],\n ['pt-BR', 'português do Brasil'],\n ['pt-PT', 'português'],\n ['ro', 'română'],\n ['ru', 'русский'],\n ['sk', 'slovenčina'],\n ['sr', 'Српски'],\n ['sv', 'svenska'],\n ['th', 'ไทย'],\n ['tr', 'Türkçe'],\n ['uk', 'українська'],\n ['vi', 'Tiếng Việt'],\n ['zh-CN', '中文(中国大陆)'],\n ['zh-TW', '中文(台灣)'],\n ]);\n\n protected inited: boolean;\n protected defaultMessages: any = {};\n protected localeMessages: any = {};\n\n constructor(protected systemLanguage: string, protected localesDirectory: string,\n protected getLocalesJson: (formattedLocale: string) => Promise) {\n this.systemLanguage = systemLanguage.replace('_', '-');\n }\n\n async init(locale?: string) {\n if (this.inited) {\n throw new Error('i18n already initialized.');\n }\n if (this.supportedTranslationLocales == null || this.supportedTranslationLocales.length === 0) {\n throw new Error('supportedTranslationLocales not set.');\n }\n\n this.inited = true;\n this.locale = this.translationLocale = locale != null ? locale : this.systemLanguage;\n\n try {\n this.collator = new Intl.Collator(this.locale, { numeric: true, sensitivity: 'base' });\n } catch {\n this.collator = null;\n }\n\n if (this.supportedTranslationLocales.indexOf(this.translationLocale) === -1) {\n this.translationLocale = this.translationLocale.slice(0, 2);\n\n if (this.supportedTranslationLocales.indexOf(this.translationLocale) === -1) {\n this.translationLocale = this.supportedTranslationLocales[0];\n }\n }\n\n if (this.localesDirectory != null) {\n await this.loadMessages(this.translationLocale, this.localeMessages);\n if (this.translationLocale !== this.supportedTranslationLocales[0]) {\n await this.loadMessages(this.supportedTranslationLocales[0], this.defaultMessages);\n }\n }\n }\n\n t(id: string, p1?: string, p2?: string, p3?: string): string {\n return this.translate(id, p1, p2, p3);\n }\n\n translate(id: string, p1?: string, p2?: string, p3?: string): string {\n let result: string;\n if (this.localeMessages.hasOwnProperty(id) && this.localeMessages[id]) {\n result = this.localeMessages[id];\n } else if (this.defaultMessages.hasOwnProperty(id) && this.defaultMessages[id]) {\n result = this.defaultMessages[id];\n } else {\n result = '';\n }\n\n if (result !== '') {\n if (p1 != null) {\n result = result.split('__$1__').join(p1);\n }\n if (p2 != null) {\n result = result.split('__$2__').join(p2);\n }\n if (p3 != null) {\n result = result.split('__$3__').join(p3);\n }\n }\n\n return result;\n }\n\n private async loadMessages(locale: string, messagesObj: any): Promise {\n const formattedLocale = locale.replace('-', '_');\n const locales = await this.getLocalesJson(formattedLocale);\n for (const prop in locales) {\n if (!locales.hasOwnProperty(prop)) {\n continue;\n }\n messagesObj[prop] = locales[prop].message;\n\n if (locales[prop].placeholders) {\n for (const placeProp in locales[prop].placeholders) {\n if (!locales[prop].placeholders.hasOwnProperty(placeProp) ||\n !locales[prop].placeholders[placeProp].content) {\n continue;\n }\n\n const replaceToken = '\\\\$' + placeProp.toUpperCase() + '\\\\$';\n let replaceContent = locales[prop].placeholders[placeProp].content;\n if (replaceContent === '$1' || replaceContent === '$2' || replaceContent === '$3') {\n replaceContent = '__$' + replaceContent + '__';\n }\n messagesObj[prop] = messagesObj[prop].replace(new RegExp(replaceToken, 'g'), replaceContent);\n }\n }\n }\n }\n\n}\n","import * as zxcvbn from 'zxcvbn';\n\nimport { EncString } from '../models/domain/encString';\nimport { GeneratedPasswordHistory } from '../models/domain/generatedPasswordHistory';\nimport { PasswordGeneratorPolicyOptions } from '../models/domain/passwordGeneratorPolicyOptions';\nimport { Policy } from '../models/domain/policy';\n\nimport { CryptoService } from '../abstractions/crypto.service';\nimport {\n PasswordGenerationService as PasswordGenerationServiceAbstraction,\n} from '../abstractions/passwordGeneration.service';\nimport { PolicyService } from '../abstractions/policy.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nimport { EEFLongWordList } from '../misc/wordlist';\n\nimport { PolicyType } from '../enums/policyType';\n\nconst DefaultOptions = {\n length: 14,\n ambiguous: false,\n number: true,\n minNumber: 1,\n uppercase: true,\n minUppercase: 0,\n lowercase: true,\n minLowercase: 0,\n special: false,\n minSpecial: 1,\n type: 'password',\n numWords: 3,\n wordSeparator: '-',\n capitalize: false,\n includeNumber: false,\n};\n\nconst Keys = {\n options: 'passwordGenerationOptions',\n history: 'generatedPasswordHistory',\n};\n\nconst MaxPasswordsInHistory = 100;\n\nexport class PasswordGenerationService implements PasswordGenerationServiceAbstraction {\n private optionsCache: any;\n private history: GeneratedPasswordHistory[];\n\n constructor(private cryptoService: CryptoService, private storageService: StorageService,\n private policyService: PolicyService) { }\n\n async generatePassword(options: any): Promise {\n // overload defaults with given options\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.type === 'passphrase') {\n return this.generatePassphrase(options);\n }\n\n // sanitize\n this.sanitizePasswordLength(o, true);\n\n const minLength: number = o.minUppercase + o.minLowercase + o.minNumber + o.minSpecial;\n if (o.length < minLength) {\n o.length = minLength;\n }\n\n const positions: string[] = [];\n if (o.lowercase && o.minLowercase > 0) {\n for (let i = 0; i < o.minLowercase; i++) {\n positions.push('l');\n }\n }\n if (o.uppercase && o.minUppercase > 0) {\n for (let i = 0; i < o.minUppercase; i++) {\n positions.push('u');\n }\n }\n if (o.number && o.minNumber > 0) {\n for (let i = 0; i < o.minNumber; i++) {\n positions.push('n');\n }\n }\n if (o.special && o.minSpecial > 0) {\n for (let i = 0; i < o.minSpecial; i++) {\n positions.push('s');\n }\n }\n while (positions.length < o.length) {\n positions.push('a');\n }\n\n // shuffle\n await this.shuffleArray(positions);\n\n // build out the char sets\n let allCharSet = '';\n\n let lowercaseCharSet = 'abcdefghijkmnopqrstuvwxyz';\n if (o.ambiguous) {\n lowercaseCharSet += 'l';\n }\n if (o.lowercase) {\n allCharSet += lowercaseCharSet;\n }\n\n let uppercaseCharSet = 'ABCDEFGHJKLMNPQRSTUVWXYZ';\n if (o.ambiguous) {\n uppercaseCharSet += 'IO';\n }\n if (o.uppercase) {\n allCharSet += uppercaseCharSet;\n }\n\n let numberCharSet = '23456789';\n if (o.ambiguous) {\n numberCharSet += '01';\n }\n if (o.number) {\n allCharSet += numberCharSet;\n }\n\n const specialCharSet = '!@#$%^&*';\n if (o.special) {\n allCharSet += specialCharSet;\n }\n\n let password = '';\n for (let i = 0; i < o.length; i++) {\n let positionChars: string;\n switch (positions[i]) {\n case 'l':\n positionChars = lowercaseCharSet;\n break;\n case 'u':\n positionChars = uppercaseCharSet;\n break;\n case 'n':\n positionChars = numberCharSet;\n break;\n case 's':\n positionChars = specialCharSet;\n break;\n case 'a':\n positionChars = allCharSet;\n break;\n default:\n break;\n }\n\n const randomCharIndex = await this.cryptoService.randomNumber(0, positionChars.length - 1);\n password += positionChars.charAt(randomCharIndex);\n }\n\n return password;\n }\n\n async generatePassphrase(options: any): Promise {\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.numWords == null || o.numWords <= 2) {\n o.numWords = DefaultOptions.numWords;\n }\n if (o.wordSeparator == null || o.wordSeparator.length === 0 || o.wordSeparator.length > 1) {\n o.wordSeparator = ' ';\n }\n if (o.capitalize == null) {\n o.capitalize = false;\n }\n if (o.includeNumber == null) {\n o.includeNumber = false;\n }\n\n const listLength = EEFLongWordList.length - 1;\n const wordList = new Array(o.numWords);\n for (let i = 0; i < o.numWords; i++) {\n const wordIndex = await this.cryptoService.randomNumber(0, listLength);\n if (o.capitalize) {\n wordList[i] = this.capitalize(EEFLongWordList[wordIndex]);\n } else {\n wordList[i] = EEFLongWordList[wordIndex];\n }\n }\n\n if (o.includeNumber) {\n await this.appendRandomNumberToRandomWord(wordList);\n }\n return wordList.join(o.wordSeparator);\n }\n\n async getOptions(): Promise<[any, PasswordGeneratorPolicyOptions]> {\n if (this.optionsCache == null) {\n const options = await this.storageService.get(Keys.options);\n if (options == null) {\n this.optionsCache = DefaultOptions;\n } else {\n this.optionsCache = Object.assign({}, DefaultOptions, options);\n }\n }\n const enforcedOptions = await this.enforcePasswordGeneratorPoliciesOnOptions(this.optionsCache);\n this.optionsCache = enforcedOptions[0];\n return [this.optionsCache, enforcedOptions[1]];\n }\n\n async enforcePasswordGeneratorPoliciesOnOptions(options: any): Promise<[any, PasswordGeneratorPolicyOptions]> {\n let enforcedPolicyOptions = await this.getPasswordGeneratorPolicyOptions();\n if (enforcedPolicyOptions != null) {\n if (options.length < enforcedPolicyOptions.minLength) {\n options.length = enforcedPolicyOptions.minLength;\n }\n\n if (enforcedPolicyOptions.useUppercase) {\n options.uppercase = true;\n }\n\n if (enforcedPolicyOptions.useLowercase) {\n options.lowercase = true;\n }\n\n if (enforcedPolicyOptions.useNumbers) {\n options.number = true;\n }\n\n if (options.minNumber < enforcedPolicyOptions.numberCount) {\n options.minNumber = enforcedPolicyOptions.numberCount;\n }\n\n if (enforcedPolicyOptions.useSpecial) {\n options.special = true;\n }\n\n if (options.minSpecial < enforcedPolicyOptions.specialCount) {\n options.minSpecial = enforcedPolicyOptions.specialCount;\n }\n\n // Must normalize these fields because the receiving call expects all options to pass the current rules\n if (options.minSpecial + options.minNumber > options.length) {\n options.minSpecial = options.length - options.minNumber;\n }\n\n if (options.numWords < enforcedPolicyOptions.minNumberWords) {\n options.numWords = enforcedPolicyOptions.minNumberWords;\n }\n\n if (enforcedPolicyOptions.capitalize) {\n options.capitalize = true;\n }\n\n if (enforcedPolicyOptions.includeNumber) {\n options.includeNumber = true;\n }\n\n // Force default type if password/passphrase selected via policy\n if (enforcedPolicyOptions.defaultType === 'password' ||\n enforcedPolicyOptions.defaultType === 'passphrase') {\n options.type = enforcedPolicyOptions.defaultType;\n }\n } else { // UI layer expects an instantiated object to prevent more explicit null checks\n enforcedPolicyOptions = new PasswordGeneratorPolicyOptions();\n }\n return [options, enforcedPolicyOptions];\n }\n\n async getPasswordGeneratorPolicyOptions(): Promise {\n const policies: Policy[] = this.policyService == null ? null :\n await this.policyService.getAll(PolicyType.PasswordGenerator);\n let enforcedOptions: PasswordGeneratorPolicyOptions = null;\n\n if (policies == null || policies.length === 0) {\n return enforcedOptions;\n }\n\n policies.forEach(currentPolicy => {\n if (!currentPolicy.enabled || currentPolicy.data == null) {\n return;\n }\n\n if (enforcedOptions == null) {\n enforcedOptions = new PasswordGeneratorPolicyOptions();\n }\n\n // Password wins in multi-org collisions\n if (currentPolicy.data.defaultType != null && enforcedOptions.defaultType !== 'password') {\n enforcedOptions.defaultType = currentPolicy.data.defaultType;\n }\n\n if (currentPolicy.data.minLength != null\n && currentPolicy.data.minLength > enforcedOptions.minLength) {\n enforcedOptions.minLength = currentPolicy.data.minLength;\n }\n\n if (currentPolicy.data.useUpper) {\n enforcedOptions.useUppercase = true;\n }\n\n if (currentPolicy.data.useLower) {\n enforcedOptions.useLowercase = true;\n }\n\n if (currentPolicy.data.useNumbers) {\n enforcedOptions.useNumbers = true;\n }\n\n if (currentPolicy.data.minNumbers != null\n && currentPolicy.data.minNumbers > enforcedOptions.numberCount) {\n enforcedOptions.numberCount = currentPolicy.data.minNumbers;\n }\n\n if (currentPolicy.data.useSpecial) {\n enforcedOptions.useSpecial = true;\n }\n\n if (currentPolicy.data.minSpecial != null\n && currentPolicy.data.minSpecial > enforcedOptions.specialCount) {\n enforcedOptions.specialCount = currentPolicy.data.minSpecial;\n }\n\n if (currentPolicy.data.minNumberWords != null\n && currentPolicy.data.minNumberWords > enforcedOptions.minNumberWords) {\n enforcedOptions.minNumberWords = currentPolicy.data.minNumberWords;\n }\n\n if (currentPolicy.data.capitalize) {\n enforcedOptions.capitalize = true;\n }\n\n if (currentPolicy.data.includeNumber) {\n enforcedOptions.includeNumber = true;\n }\n });\n\n return enforcedOptions;\n }\n\n async saveOptions(options: any) {\n await this.storageService.save(Keys.options, options);\n this.optionsCache = options;\n }\n\n async getHistory(): Promise {\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n return new Array();\n }\n\n if (!this.history) {\n const encrypted = await this.storageService.get(Keys.history);\n this.history = await this.decryptHistory(encrypted);\n }\n\n return this.history || new Array();\n }\n\n async addHistory(password: string): Promise {\n // Cannot add new history if no key is available\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n return;\n }\n\n const currentHistory = await this.getHistory();\n\n // Prevent duplicates\n if (this.matchesPrevious(password, currentHistory)) {\n return;\n }\n\n currentHistory.unshift(new GeneratedPasswordHistory(password, Date.now()));\n\n // Remove old items.\n if (currentHistory.length > MaxPasswordsInHistory) {\n currentHistory.pop();\n }\n\n const newHistory = await this.encryptHistory(currentHistory);\n return await this.storageService.save(Keys.history, newHistory);\n }\n\n async clear(): Promise {\n this.history = [];\n return await this.storageService.remove(Keys.history);\n }\n\n passwordStrength(password: string, userInputs: string[] = null): zxcvbn.ZXCVBNResult {\n if (password == null || password.length === 0) {\n return null;\n }\n let globalUserInputs = ['bitwarden', 'bit', 'warden'];\n if (userInputs != null && userInputs.length > 0) {\n globalUserInputs = globalUserInputs.concat(userInputs);\n }\n // Use a hash set to get rid of any duplicate user inputs\n const finalUserInputs = Array.from(new Set(globalUserInputs));\n const result = zxcvbn(password, finalUserInputs);\n return result;\n }\n\n normalizeOptions(options: any, enforcedPolicyOptions: PasswordGeneratorPolicyOptions) {\n options.minLowercase = 0;\n options.minUppercase = 0;\n\n if (!options.length || options.length < 5) {\n options.length = 5;\n } else if (options.length > 128) {\n options.length = 128;\n }\n\n if (options.length < enforcedPolicyOptions.minLength) {\n options.length = enforcedPolicyOptions.minLength;\n }\n\n if (!options.minNumber) {\n options.minNumber = 0;\n } else if (options.minNumber > options.length) {\n options.minNumber = options.length;\n } else if (options.minNumber > 9) {\n options.minNumber = 9;\n }\n\n if (options.minNumber < enforcedPolicyOptions.numberCount) {\n options.minNumber = enforcedPolicyOptions.numberCount;\n }\n\n if (!options.minSpecial) {\n options.minSpecial = 0;\n } else if (options.minSpecial > options.length) {\n options.minSpecial = options.length;\n } else if (options.minSpecial > 9) {\n options.minSpecial = 9;\n }\n\n if (options.minSpecial < enforcedPolicyOptions.specialCount) {\n options.minSpecial = enforcedPolicyOptions.specialCount;\n }\n\n if (options.minSpecial + options.minNumber > options.length) {\n options.minSpecial = options.length - options.minNumber;\n }\n\n if (options.numWords == null || options.length < 3) {\n options.numWords = 3;\n } else if (options.numWords > 20) {\n options.numWords = 20;\n }\n\n if (options.numWords < enforcedPolicyOptions.minNumberWords) {\n options.numWords = enforcedPolicyOptions.minNumberWords;\n }\n\n if (options.wordSeparator != null && options.wordSeparator.length > 1) {\n options.wordSeparator = options.wordSeparator[0];\n }\n\n this.sanitizePasswordLength(options, false);\n }\n\n private capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n private async appendRandomNumberToRandomWord(wordList: string[]) {\n if (wordList == null || wordList.length <= 0) {\n return;\n }\n const index = await this.cryptoService.randomNumber(0, wordList.length - 1);\n const num = await this.cryptoService.randomNumber(0, 9);\n wordList[index] = wordList[index] + num;\n }\n\n private async encryptHistory(history: GeneratedPasswordHistory[]): Promise {\n if (history == null || history.length === 0) {\n return Promise.resolve([]);\n }\n\n const promises = history.map(async item => {\n const encrypted = await this.cryptoService.encrypt(item.password);\n return new GeneratedPasswordHistory(encrypted.encryptedString, item.date);\n });\n\n return await Promise.all(promises);\n }\n\n private async decryptHistory(history: GeneratedPasswordHistory[]): Promise {\n if (history == null || history.length === 0) {\n return Promise.resolve([]);\n }\n\n const promises = history.map(async item => {\n const decrypted = await this.cryptoService.decryptToUtf8(new EncString(item.password));\n return new GeneratedPasswordHistory(decrypted, item.date);\n });\n\n return await Promise.all(promises);\n }\n\n private matchesPrevious(password: string, history: GeneratedPasswordHistory[]): boolean {\n if (history == null || history.length === 0) {\n return false;\n }\n\n return history[history.length - 1].password === password;\n }\n\n // ref: https://stackoverflow.com/a/12646864/1090359\n private async shuffleArray(array: string[]) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = await this.cryptoService.randomNumber(0, i);\n [array[i], array[j]] = [array[j], array[i]];\n }\n }\n\n private sanitizePasswordLength(options: any, forGeneration: boolean) {\n let minUppercaseCalc = 0;\n let minLowercaseCalc = 0;\n let minNumberCalc: number = options.minNumber;\n let minSpecialCalc: number = options.minSpecial;\n\n if (options.uppercase && options.minUppercase <= 0) {\n minUppercaseCalc = 1;\n } else if (!options.uppercase) {\n minUppercaseCalc = 0;\n }\n\n if (options.lowercase && options.minLowercase <= 0) {\n minLowercaseCalc = 1;\n } else if (!options.lowercase) {\n minLowercaseCalc = 0;\n }\n\n if (options.number && options.minNumber <= 0) {\n minNumberCalc = 1;\n } else if (!options.number) {\n minNumberCalc = 0;\n }\n\n if (options.special && options.minSpecial <= 0) {\n minSpecialCalc = 1;\n } else if (!options.special) {\n minSpecialCalc = 0;\n }\n\n // This should never happen but is a final safety net\n if (!options.length || options.length < 1) {\n options.length = 10;\n }\n\n const minLength: number = minUppercaseCalc + minLowercaseCalc + minNumberCalc + minSpecialCalc;\n // Normalize and Generation both require this modification\n if (options.length < minLength) {\n options.length = minLength;\n }\n\n // Apply other changes if the options object passed in is for generation\n if (forGeneration) {\n options.minUppercase = minUppercaseCalc;\n options.minLowercase = minLowercaseCalc;\n options.minNumber = minNumberCalc;\n options.minSpecial = minSpecialCalc;\n }\n }\n}\n","import { SettingsService as SettingsServiceAbstraction } from '../abstractions/settings.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nconst Keys = {\n settingsPrefix: 'settings_',\n equivalentDomains: 'equivalentDomains',\n};\n\nexport class SettingsService implements SettingsServiceAbstraction {\n private settingsCache: any;\n\n constructor(private userService: UserService, private storageService: StorageService) {\n }\n\n clearCache(): void {\n this.settingsCache = null;\n }\n\n getEquivalentDomains(): Promise {\n return this.getSettingsKey(Keys.equivalentDomains);\n }\n\n async setEquivalentDomains(equivalentDomains: string[][]): Promise {\n await this.setSettingsKey(Keys.equivalentDomains, equivalentDomains);\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.settingsPrefix + userId);\n this.clearCache();\n }\n\n // Helpers\n\n private async getSettings(): Promise {\n if (this.settingsCache == null) {\n const userId = await this.userService.getUserId();\n this.settingsCache = this.storageService.get(Keys.settingsPrefix + userId);\n }\n return this.settingsCache;\n }\n\n private async getSettingsKey(key: string): Promise {\n const settings = await this.getSettings();\n if (settings != null && settings[key]) {\n return settings[key];\n }\n return null;\n }\n\n private async setSettingsKey(key: string, value: any): Promise {\n const userId = await this.userService.getUserId();\n let settings = await this.getSettings();\n if (!settings) {\n settings = {};\n }\n\n settings[key] = value;\n await this.storageService.save(Keys.settingsPrefix + userId, settings);\n this.settingsCache = settings;\n }\n}\n","import { StateService as StateServiceAbstraction } from '../abstractions/state.service';\n\nexport class StateService implements StateServiceAbstraction {\n private state: any = {};\n\n get(key: string): Promise {\n if (this.state.hasOwnProperty(key)) {\n return Promise.resolve(this.state[key]);\n }\n return Promise.resolve(null);\n }\n\n save(key: string, obj: any): Promise {\n this.state[key] = obj;\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n delete this.state[key];\n return Promise.resolve();\n }\n\n purge(): Promise {\n this.state = {};\n return Promise.resolve();\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CollectionService } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService } from '../abstractions/folder.service';\nimport { MessagingService } from '../abstractions/messaging.service';\nimport { PolicyService } from '../abstractions/policy.service';\nimport { SendService } from '../abstractions/send.service';\nimport { SettingsService } from '../abstractions/settings.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { SyncService as SyncServiceAbstraction } from '../abstractions/sync.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { CipherData } from '../models/data/cipherData';\nimport { CollectionData } from '../models/data/collectionData';\nimport { FolderData } from '../models/data/folderData';\nimport { OrganizationData } from '../models/data/organizationData';\nimport { PolicyData } from '../models/data/policyData';\nimport { SendData } from '../models/data/sendData';\n\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport { CollectionDetailsResponse } from '../models/response/collectionResponse';\nimport { DomainsResponse } from '../models/response/domainsResponse';\nimport { FolderResponse } from '../models/response/folderResponse';\nimport {\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from '../models/response/notificationResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { SendResponse } from '../models/response/sendResponse';\n\nconst Keys = {\n lastSyncPrefix: 'lastSync_',\n};\n\nexport class SyncService implements SyncServiceAbstraction {\n syncInProgress: boolean = false;\n\n constructor(private userService: UserService, private apiService: ApiService,\n private settingsService: SettingsService, private folderService: FolderService,\n private cipherService: CipherService, private cryptoService: CryptoService,\n private collectionService: CollectionService, private storageService: StorageService,\n private messagingService: MessagingService, private policyService: PolicyService,\n private sendService: SendService, private logoutCallback: (expired: boolean) => Promise) {\n }\n\n async getLastSync(): Promise {\n const userId = await this.userService.getUserId();\n if (userId == null) {\n return null;\n }\n\n const lastSync = await this.storageService.get(Keys.lastSyncPrefix + userId);\n if (lastSync) {\n return new Date(lastSync);\n }\n\n return null;\n }\n\n async setLastSync(date: Date): Promise {\n const userId = await this.userService.getUserId();\n if (userId == null) {\n return;\n }\n\n await this.storageService.save(Keys.lastSyncPrefix + userId, date.toJSON());\n }\n\n async fullSync(forceSync: boolean, allowThrowOnError = false): Promise {\n this.syncStarted();\n const isAuthenticated = await this.userService.isAuthenticated();\n if (!isAuthenticated) {\n return this.syncCompleted(false);\n }\n\n const now = new Date();\n let needsSync = false;\n try {\n needsSync = await this.needsSyncing(forceSync);\n } catch (e) {\n if (allowThrowOnError) {\n throw e;\n }\n }\n\n if (!needsSync) {\n await this.setLastSync(now);\n return this.syncCompleted(false);\n }\n\n const userId = await this.userService.getUserId();\n try {\n const response = await this.apiService.getSync();\n\n await this.syncProfile(response.profile);\n await this.syncFolders(userId, response.folders);\n await this.syncCollections(response.collections);\n await this.syncCiphers(userId, response.ciphers);\n await this.syncSends(userId, response.sends);\n await this.syncSettings(userId, response.domains);\n await this.syncPolicies(response.policies);\n\n await this.setLastSync(now);\n return this.syncCompleted(true);\n } catch (e) {\n if (allowThrowOnError) {\n throw e;\n } else {\n return this.syncCompleted(false);\n }\n }\n }\n\n async syncUpsertFolder(notification: SyncFolderNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n try {\n const localFolder = await this.folderService.get(notification.id);\n if ((!isEdit && localFolder == null) ||\n (isEdit && localFolder != null && localFolder.revisionDate < notification.revisionDate)) {\n const remoteFolder = await this.apiService.getFolder(notification.id);\n if (remoteFolder != null) {\n const userId = await this.userService.getUserId();\n await this.folderService.upsert(new FolderData(remoteFolder, userId));\n this.messagingService.send('syncedUpsertedFolder', { folderId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch { }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteFolder(notification: SyncFolderNotification): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n await this.folderService.delete(notification.id);\n this.messagingService.send('syncedDeletedFolder', { folderId: notification.id });\n this.syncCompleted(true);\n return true;\n }\n return this.syncCompleted(false);\n }\n\n async syncUpsertCipher(notification: SyncCipherNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n try {\n let shouldUpdate = true;\n const localCipher = await this.cipherService.get(notification.id);\n if (localCipher != null && localCipher.revisionDate >= notification.revisionDate) {\n shouldUpdate = false;\n }\n\n let checkCollections = false;\n if (shouldUpdate) {\n if (isEdit) {\n shouldUpdate = localCipher != null;\n checkCollections = true;\n } else {\n if (notification.collectionIds == null || notification.organizationId == null) {\n shouldUpdate = localCipher == null;\n } else {\n shouldUpdate = false;\n checkCollections = true;\n }\n }\n }\n\n if (!shouldUpdate && checkCollections && notification.organizationId != null &&\n notification.collectionIds != null && notification.collectionIds.length > 0) {\n const collections = await this.collectionService.getAll();\n if (collections != null) {\n for (let i = 0; i < collections.length; i++) {\n if (notification.collectionIds.indexOf(collections[i].id) > -1) {\n shouldUpdate = true;\n break;\n }\n }\n }\n }\n\n if (shouldUpdate) {\n const remoteCipher = await this.apiService.getCipher(notification.id);\n if (remoteCipher != null) {\n const userId = await this.userService.getUserId();\n await this.cipherService.upsert(new CipherData(remoteCipher, userId));\n this.messagingService.send('syncedUpsertedCipher', { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch (e) {\n if (e != null && e.statusCode === 404 && isEdit) {\n await this.cipherService.delete(notification.id);\n this.messagingService.send('syncedDeletedCipher', { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteCipher(notification: SyncCipherNotification): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n await this.cipherService.delete(notification.id);\n this.messagingService.send('syncedDeletedCipher', { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n return this.syncCompleted(false);\n }\n\n async syncUpsertSend(notification: SyncSendNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n try {\n const localSend = await this.sendService.get(notification.id);\n if ((!isEdit && localSend == null) ||\n (isEdit && localSend != null && localSend.revisionDate < notification.revisionDate)) {\n const remoteSend = await this.apiService.getSend(notification.id);\n if (remoteSend != null) {\n const userId = await this.userService.getUserId();\n await this.sendService.upsert(new SendData(remoteSend, userId));\n this.messagingService.send('syncedUpsertedSend', { sendId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch { }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteSend(notification: SyncSendNotification): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n await this.sendService.delete(notification.id);\n this.messagingService.send('syncedDeletedSend', { sendId: notification.id });\n this.syncCompleted(true);\n return true;\n }\n return this.syncCompleted(false);\n }\n\n // Helpers\n\n private syncStarted() {\n this.syncInProgress = true;\n this.messagingService.send('syncStarted');\n }\n\n private syncCompleted(successfully: boolean): boolean {\n this.syncInProgress = false;\n this.messagingService.send('syncCompleted', { successfully: successfully });\n return successfully;\n }\n\n private async needsSyncing(forceSync: boolean) {\n if (forceSync) {\n return true;\n }\n\n const lastSync = await this.getLastSync();\n if (lastSync == null || lastSync.getTime() === 0) {\n return true;\n }\n\n const response = await this.apiService.getAccountRevisionDate();\n if (new Date(response) <= lastSync) {\n return false;\n }\n return true;\n }\n\n private async syncProfile(response: ProfileResponse) {\n const stamp = await this.userService.getSecurityStamp();\n if (stamp != null && stamp !== response.securityStamp) {\n if (this.logoutCallback != null) {\n await this.logoutCallback(true);\n }\n\n throw new Error('Stamp has changed');\n }\n\n await this.cryptoService.setEncKey(response.key);\n await this.cryptoService.setEncPrivateKey(response.privateKey);\n await this.cryptoService.setOrgKeys(response.organizations);\n await this.userService.setSecurityStamp(response.securityStamp);\n await this.userService.setEmailVerified(response.emailVerified);\n\n const organizations: { [id: string]: OrganizationData; } = {};\n response.organizations.forEach(o => {\n organizations[o.id] = new OrganizationData(o);\n });\n return await this.userService.replaceOrganizations(organizations);\n }\n\n private async syncFolders(userId: string, response: FolderResponse[]) {\n const folders: { [id: string]: FolderData; } = {};\n response.forEach(f => {\n folders[f.id] = new FolderData(f, userId);\n });\n return await this.folderService.replace(folders);\n }\n\n private async syncCollections(response: CollectionDetailsResponse[]) {\n const collections: { [id: string]: CollectionData; } = {};\n response.forEach(c => {\n collections[c.id] = new CollectionData(c);\n });\n return await this.collectionService.replace(collections);\n }\n\n private async syncCiphers(userId: string, response: CipherResponse[]) {\n const ciphers: { [id: string]: CipherData; } = {};\n response.forEach(c => {\n ciphers[c.id] = new CipherData(c, userId);\n });\n return await this.cipherService.replace(ciphers);\n }\n\n private async syncSends(userId: string, response: SendResponse[]) {\n const sends: { [id: string]: SendData; } = {};\n response.forEach(s => {\n sends[s.id] = new SendData(s, userId);\n });\n return await this.sendService.replace(sends);\n }\n\n private async syncSettings(userId: string, response: DomainsResponse) {\n let eqDomains: string[][] = [];\n if (response != null && response.equivalentDomains != null) {\n eqDomains = eqDomains.concat(response.equivalentDomains);\n }\n\n if (response != null && response.globalEquivalentDomains != null) {\n response.globalEquivalentDomains.forEach(global => {\n if (global.domains.length > 0) {\n eqDomains.push(global.domains);\n }\n });\n }\n\n return this.settingsService.setEquivalentDomains(eqDomains);\n }\n\n private async syncPolicies(response: PolicyResponse[]) {\n const policies: { [id: string]: PolicyData; } = {};\n if (response != null) {\n response.forEach(p => {\n policies[p.id] = new PolicyData(p);\n });\n }\n return await this.policyService.replace(policies);\n }\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendFileData } from './sendFileData';\nimport { SendTextData } from './sendTextData';\n\nimport { SendResponse } from '../response/sendResponse';\n\nexport class SendData {\n id: string;\n accessId: string;\n userId: string;\n type: SendType;\n name: string;\n notes: string;\n file: SendFileData;\n text: SendTextData;\n key: string;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: string;\n expirationDate: string;\n deletionDate: string;\n password: string;\n disabled: boolean;\n hideEmail: boolean;\n\n constructor(response?: SendResponse, userId?: string) {\n if (response == null) {\n return;\n }\n\n this.id = response.id;\n this.accessId = response.accessId;\n this.userId = userId;\n this.type = response.type;\n this.name = response.name;\n this.notes = response.notes;\n this.key = response.key;\n this.maxAccessCount = response.maxAccessCount;\n this.accessCount = response.accessCount;\n this.revisionDate = response.revisionDate;\n this.expirationDate = response.expirationDate;\n this.deletionDate = response.deletionDate;\n this.password = response.password;\n this.disabled = response.disable;\n this.hideEmail = response.hideEmail;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendTextData(response.text);\n break;\n case SendType.File:\n this.file = new SendFileData(response.file);\n break;\n default:\n break;\n }\n }\n}\n","import { ConstantsService } from './constants.service';\n\nimport { StorageService } from '../abstractions/storage.service';\nimport { TokenService as TokenServiceAbstraction } from '../abstractions/token.service';\n\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n accessToken: 'accessToken',\n refreshToken: 'refreshToken',\n twoFactorTokenPrefix: 'twoFactorToken_',\n};\n\nexport class TokenService implements TokenServiceAbstraction {\n token: string;\n decodedToken: any;\n refreshToken: string;\n\n constructor(private storageService: StorageService) {\n }\n\n async setTokens(accessToken: string, refreshToken: string): Promise {\n await this.setToken(accessToken);\n await this.setRefreshToken(refreshToken);\n }\n\n async setToken(token: string): Promise {\n this.token = token;\n this.decodedToken = null;\n\n if (await this.skipTokenStorage()) {\n // if we have a vault timeout and the action is log out, don't store token\n return;\n }\n\n return this.storageService.save(Keys.accessToken, token);\n }\n\n async getToken(): Promise {\n if (this.token != null) {\n return this.token;\n }\n\n this.token = await this.storageService.get(Keys.accessToken);\n return this.token;\n }\n\n async setRefreshToken(refreshToken: string): Promise {\n this.refreshToken = refreshToken;\n\n if (await this.skipTokenStorage()) {\n // if we have a vault timeout and the action is log out, don't store token\n return;\n }\n\n return this.storageService.save(Keys.refreshToken, refreshToken);\n }\n\n async getRefreshToken(): Promise {\n if (this.refreshToken != null) {\n return this.refreshToken;\n }\n\n this.refreshToken = await this.storageService.get(Keys.refreshToken);\n return this.refreshToken;\n }\n\n async toggleTokens(): Promise {\n const token = await this.getToken();\n const refreshToken = await this.getRefreshToken();\n const timeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n const action = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n if ((timeout != null || timeout === 0) && action === 'logOut') {\n // if we have a vault timeout and the action is log out, reset tokens\n await this.clearToken();\n this.token = token;\n this.refreshToken = refreshToken;\n return;\n }\n\n await this.setToken(token);\n await this.setRefreshToken(refreshToken);\n }\n\n setTwoFactorToken(token: string, email: string): Promise {\n return this.storageService.save(Keys.twoFactorTokenPrefix + email, token);\n }\n\n getTwoFactorToken(email: string): Promise {\n return this.storageService.get(Keys.twoFactorTokenPrefix + email);\n }\n\n clearTwoFactorToken(email: string): Promise {\n return this.storageService.remove(Keys.twoFactorTokenPrefix + email);\n }\n\n async clearToken(): Promise {\n this.token = null;\n this.decodedToken = null;\n this.refreshToken = null;\n\n await this.storageService.remove(Keys.accessToken);\n await this.storageService.remove(Keys.refreshToken);\n }\n\n // jwthelper methods\n // ref https://github.com/auth0/angular-jwt/blob/master/src/angularJwt/services/jwt.js\n\n decodeToken(): any {\n if (this.decodedToken) {\n return this.decodedToken;\n }\n\n if (this.token == null) {\n throw new Error('Token not found.');\n }\n\n const parts = this.token.split('.');\n if (parts.length !== 3) {\n throw new Error('JWT must have 3 parts');\n }\n\n const decoded = Utils.fromUrlB64ToUtf8(parts[1]);\n if (decoded == null) {\n throw new Error('Cannot decode the token');\n }\n\n this.decodedToken = JSON.parse(decoded);\n return this.decodedToken;\n }\n\n getTokenExpirationDate(): Date {\n const decoded = this.decodeToken();\n if (typeof decoded.exp === 'undefined') {\n return null;\n }\n\n const d = new Date(0); // The 0 here is the key, which sets the date to the epoch\n d.setUTCSeconds(decoded.exp);\n return d;\n }\n\n tokenSecondsRemaining(offsetSeconds: number = 0): number {\n const d = this.getTokenExpirationDate();\n if (d == null) {\n return 0;\n }\n\n const msRemaining = d.valueOf() - (new Date().valueOf() + (offsetSeconds * 1000));\n return Math.round(msRemaining / 1000);\n }\n\n tokenNeedsRefresh(minutes: number = 5): boolean {\n const sRemaining = this.tokenSecondsRemaining();\n return sRemaining < (60 * minutes);\n }\n\n getUserId(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.sub === 'undefined') {\n throw new Error('No user id found');\n }\n\n return decoded.sub as string;\n }\n\n getEmail(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.email === 'undefined') {\n throw new Error('No email found');\n }\n\n return decoded.email as string;\n }\n\n getEmailVerified(): boolean {\n const decoded = this.decodeToken();\n if (typeof decoded.email_verified === 'undefined') {\n throw new Error('No email verification found');\n }\n\n return decoded.email_verified as boolean;\n }\n\n getName(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.name === 'undefined') {\n return null;\n }\n\n return decoded.name as string;\n }\n\n getPremium(): boolean {\n const decoded = this.decodeToken();\n if (typeof decoded.premium === 'undefined') {\n return false;\n }\n\n return decoded.premium as boolean;\n }\n\n getIssuer(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.iss === 'undefined') {\n throw new Error('No issuer found');\n }\n\n return decoded.iss as string;\n }\n\n private async skipTokenStorage(): Promise {\n const timeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n const action = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n return timeout != null && action === 'logOut';\n }\n}\n","import { ConstantsService } from './constants.service';\n\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { TotpService as TotpServiceAbstraction } from '../abstractions/totp.service';\n\nimport { Utils } from '../misc/utils';\n\nconst B32Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';\nconst SteamChars = '23456789BCDFGHJKMNPQRTVWXY';\n\nexport class TotpService implements TotpServiceAbstraction {\n constructor(private storageService: StorageService, private cryptoFunctionService: CryptoFunctionService) { }\n\n async getCode(key: string): Promise {\n if (key == null) {\n return null;\n }\n let period = 30;\n let alg: 'sha1' | 'sha256' | 'sha512' = 'sha1';\n let digits = 6;\n let keyB32 = key;\n const isOtpAuth = key.toLowerCase().indexOf('otpauth://') === 0;\n const isSteamAuth = !isOtpAuth && key.toLowerCase().indexOf('steam://') === 0;\n if (isOtpAuth) {\n const params = Utils.getQueryParams(key);\n if (params.has('digits') && params.get('digits') != null) {\n try {\n const digitParams = parseInt(params.get('digits').trim(), null);\n if (digitParams > 10) {\n digits = 10;\n } else if (digitParams > 0) {\n digits = digitParams;\n }\n } catch { }\n }\n if (params.has('period') && params.get('period') != null) {\n try {\n const periodParam = parseInt(params.get('period').trim(), null);\n if (periodParam > 0) {\n period = periodParam;\n }\n } catch { }\n }\n if (params.has('secret') && params.get('secret') != null) {\n keyB32 = params.get('secret');\n }\n if (params.has('algorithm') && params.get('algorithm') != null) {\n const algParam = params.get('algorithm').toLowerCase();\n if (algParam === 'sha1' || algParam === 'sha256' || algParam === 'sha512') {\n alg = algParam;\n }\n }\n } else if (isSteamAuth) {\n keyB32 = key.substr('steam://'.length);\n digits = 5;\n }\n\n const epoch = Math.round(new Date().getTime() / 1000.0);\n const timeHex = this.leftPad(this.decToHex(Math.floor(epoch / period)), 16, '0');\n const timeBytes = Utils.fromHexToArray(timeHex);\n const keyBytes = this.b32ToBytes(keyB32);\n\n if (!keyBytes.length || !timeBytes.length) {\n return null;\n }\n\n const hash = await this.sign(keyBytes, timeBytes, alg);\n if (hash.length === 0) {\n return null;\n }\n\n /* tslint:disable */\n const offset = (hash[hash.length - 1] & 0xf);\n const binary = ((hash[offset] & 0x7f) << 24) | ((hash[offset + 1] & 0xff) << 16) |\n ((hash[offset + 2] & 0xff) << 8) | (hash[offset + 3] & 0xff);\n /* tslint:enable */\n\n let otp = '';\n if (isSteamAuth) {\n // tslint:disable-next-line\n let fullCode = binary & 0x7fffffff;\n for (let i = 0; i < digits; i++) {\n otp += SteamChars[fullCode % SteamChars.length];\n fullCode = Math.trunc(fullCode / SteamChars.length);\n }\n } else {\n otp = (binary % Math.pow(10, digits)).toString();\n otp = this.leftPad(otp, digits, '0');\n }\n\n return otp;\n }\n\n getTimeInterval(key: string): number {\n let period = 30;\n if (key != null && key.toLowerCase().indexOf('otpauth://') === 0) {\n const params = Utils.getQueryParams(key);\n if (params.has('period') && params.get('period') != null) {\n try {\n period = parseInt(params.get('period').trim(), null);\n } catch { }\n }\n }\n return period;\n }\n\n async isAutoCopyEnabled(): Promise {\n return !(await this.storageService.get(ConstantsService.disableAutoTotpCopyKey));\n }\n\n // Helpers\n\n private leftPad(s: string, l: number, p: string): string {\n if (l + 1 >= s.length) {\n s = Array(l + 1 - s.length).join(p) + s;\n }\n return s;\n }\n\n private decToHex(d: number): string {\n return (d < 15.5 ? '0' : '') + Math.round(d).toString(16);\n }\n\n private b32ToHex(s: string): string {\n s = s.toUpperCase();\n let cleanedInput = '';\n\n for (let i = 0; i < s.length; i++) {\n if (B32Chars.indexOf(s[i]) < 0) {\n continue;\n }\n\n cleanedInput += s[i];\n }\n s = cleanedInput;\n\n let bits = '';\n let hex = '';\n for (let i = 0; i < s.length; i++) {\n const byteIndex = B32Chars.indexOf(s.charAt(i));\n if (byteIndex < 0) {\n continue;\n }\n bits += this.leftPad(byteIndex.toString(2), 5, '0');\n }\n for (let i = 0; i + 4 <= bits.length; i += 4) {\n const chunk = bits.substr(i, 4);\n hex = hex + parseInt(chunk, 2).toString(16);\n }\n return hex;\n }\n\n private b32ToBytes(s: string): Uint8Array {\n return Utils.fromHexToArray(this.b32ToHex(s));\n }\n\n private async sign(keyBytes: Uint8Array, timeBytes: Uint8Array, alg: 'sha1' | 'sha256' | 'sha512') {\n const signature = await this.cryptoFunctionService.hmac(timeBytes.buffer, keyBytes.buffer, alg);\n return new Uint8Array(signature);\n }\n}\n","import { StorageService } from '../abstractions/storage.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService as UserServiceAbstraction } from '../abstractions/user.service';\n\nimport { OrganizationData } from '../models/data/organizationData';\nimport { Organization } from '../models/domain/organization';\n\nimport { KdfType } from '../enums/kdfType';\n\nconst Keys = {\n userId: 'userId',\n userEmail: 'userEmail',\n stamp: 'securityStamp',\n kdf: 'kdf',\n kdfIterations: 'kdfIterations',\n organizationsPrefix: 'organizations_',\n emailVerified: 'emailVerified',\n};\n\nexport class UserService implements UserServiceAbstraction {\n private userId: string;\n private email: string;\n private stamp: string;\n private kdf: KdfType;\n private kdfIterations: number;\n private emailVerified: boolean;\n\n constructor(private tokenService: TokenService, private storageService: StorageService) { }\n\n async setInformation(userId: string, email: string, kdf: KdfType, kdfIterations: number): Promise {\n this.email = email;\n this.userId = userId;\n this.kdf = kdf;\n this.kdfIterations = kdfIterations;\n\n await this.storageService.save(Keys.userEmail, email);\n await this.storageService.save(Keys.userId, userId);\n await this.storageService.save(Keys.kdf, kdf);\n await this.storageService.save(Keys.kdfIterations, kdfIterations);\n }\n\n setSecurityStamp(stamp: string): Promise {\n this.stamp = stamp;\n return this.storageService.save(Keys.stamp, stamp);\n }\n\n setEmailVerified(emailVerified: boolean) {\n this.emailVerified = emailVerified;\n return this.storageService.save(Keys.emailVerified, emailVerified);\n }\n\n async getUserId(): Promise {\n if (this.userId == null) {\n this.userId = await this.storageService.get(Keys.userId);\n }\n return this.userId;\n }\n\n async getEmail(): Promise {\n if (this.email == null) {\n this.email = await this.storageService.get(Keys.userEmail);\n }\n return this.email;\n }\n\n async getSecurityStamp(): Promise {\n if (this.stamp == null) {\n this.stamp = await this.storageService.get(Keys.stamp);\n }\n return this.stamp;\n }\n\n async getKdf(): Promise {\n if (this.kdf == null) {\n this.kdf = await this.storageService.get(Keys.kdf);\n }\n return this.kdf;\n }\n\n async getKdfIterations(): Promise {\n if (this.kdfIterations == null) {\n this.kdfIterations = await this.storageService.get(Keys.kdfIterations);\n }\n return this.kdfIterations;\n }\n\n async getEmailVerified(): Promise {\n if (this.emailVerified == null) {\n this.emailVerified = await this.storageService.get(Keys.emailVerified);\n }\n return this.emailVerified;\n }\n\n async clear(): Promise {\n const userId = await this.getUserId();\n\n await this.storageService.remove(Keys.userId);\n await this.storageService.remove(Keys.userEmail);\n await this.storageService.remove(Keys.stamp);\n await this.storageService.remove(Keys.kdf);\n await this.storageService.remove(Keys.kdfIterations);\n await this.clearOrganizations(userId);\n\n this.userId = this.email = this.stamp = null;\n this.kdf = null;\n this.kdfIterations = null;\n }\n\n async isAuthenticated(): Promise {\n const token = await this.tokenService.getToken();\n if (token == null) {\n return false;\n }\n\n const userId = await this.getUserId();\n return userId != null;\n }\n\n async canAccessPremium(): Promise {\n const authed = await this.isAuthenticated();\n if (!authed) {\n return false;\n }\n\n const tokenPremium = this.tokenService.getPremium();\n if (tokenPremium) {\n return true;\n }\n\n const orgs = await this.getAllOrganizations();\n for (let i = 0; i < orgs.length; i++) {\n if (orgs[i].usersGetPremium && orgs[i].enabled) {\n return true;\n }\n }\n return false;\n }\n\n async getOrganization(id: string): Promise {\n const userId = await this.getUserId();\n const organizations = await this.storageService.get<{ [id: string]: OrganizationData; }>(\n Keys.organizationsPrefix + userId);\n if (organizations == null || !organizations.hasOwnProperty(id)) {\n return null;\n }\n\n return new Organization(organizations[id]);\n }\n\n async getAllOrganizations(): Promise {\n const userId = await this.getUserId();\n const organizations = await this.storageService.get<{ [id: string]: OrganizationData; }>(\n Keys.organizationsPrefix + userId);\n const response: Organization[] = [];\n for (const id in organizations) {\n if (organizations.hasOwnProperty(id)) {\n response.push(new Organization(organizations[id]));\n }\n }\n return response;\n }\n\n async replaceOrganizations(organizations: { [id: string]: OrganizationData; }): Promise {\n const userId = await this.getUserId();\n await this.storageService.save(Keys.organizationsPrefix + userId, organizations);\n }\n\n async clearOrganizations(userId: string): Promise {\n await this.storageService.remove(Keys.organizationsPrefix + userId);\n }\n}\n","import { ConstantsService } from './constants.service';\n\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CollectionService } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService } from '../abstractions/folder.service';\nimport { MessagingService } from '../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { SearchService } from '../abstractions/search.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService } from '../abstractions/user.service';\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from '../abstractions/vaultTimeout.service';\n\nimport { EncString } from '../models/domain/encString';\n\nexport class VaultTimeoutService implements VaultTimeoutServiceAbstraction {\n pinProtectedKey: EncString = null;\n biometricLocked: boolean = true;\n everBeenUnlocked: boolean = false;\n\n private inited = false;\n\n constructor(private cipherService: CipherService, private folderService: FolderService,\n private collectionService: CollectionService, private cryptoService: CryptoService,\n protected platformUtilsService: PlatformUtilsService, private storageService: StorageService,\n private messagingService: MessagingService, private searchService: SearchService,\n private userService: UserService, private tokenService: TokenService,\n private lockedCallback: () => Promise = null, private loggedOutCallback: () => Promise = null) {\n }\n\n init(checkOnInterval: boolean) {\n if (this.inited) {\n return;\n }\n\n this.inited = true;\n if (checkOnInterval) {\n this.startCheck();\n }\n }\n\n startCheck() {\n this.checkVaultTimeout();\n setInterval(() => this.checkVaultTimeout(), 10 * 1000); // check every 10 seconds\n }\n\n // Keys aren't stored for a device that is locked or logged out.\n async isLocked(): Promise {\n // Handle never lock startup situation\n if (await this.cryptoService.hasKeyStored('auto') && !this.everBeenUnlocked) {\n await this.cryptoService.getKey('auto');\n }\n\n return !this.cryptoService.hasKeyInMemory();\n }\n\n async checkVaultTimeout(): Promise {\n if (await this.platformUtilsService.isViewOpen()) {\n // Do not lock\n return;\n }\n\n // \"is logged out check\" - similar to isLocked, below\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n\n if (await this.isLocked()) {\n return;\n }\n\n // This has the potential to be removed. Evaluate after all platforms complete with auto-logout\n let vaultTimeout = this.platformUtilsService.lockTimeout();\n if (vaultTimeout == null) {\n vaultTimeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n }\n\n if (vaultTimeout == null || vaultTimeout < 0) {\n return;\n }\n\n const lastActive = await this.storageService.get(ConstantsService.lastActiveKey);\n if (lastActive == null) {\n return;\n }\n\n const vaultTimeoutSeconds = vaultTimeout * 60;\n const diffSeconds = ((new Date()).getTime() - lastActive) / 1000;\n if (diffSeconds >= vaultTimeoutSeconds) {\n // Pivot based on the saved vault timeout action\n const timeoutAction = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n timeoutAction === 'logOut' ? await this.logOut() : await this.lock(true);\n }\n }\n\n async lock(allowSoftLock = false): Promise {\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n\n this.biometricLocked = true;\n this.everBeenUnlocked = true;\n await this.cryptoService.clearKey(false);\n await this.cryptoService.clearOrgKeys(true);\n await this.cryptoService.clearKeyPair(true);\n await this.cryptoService.clearEncKey(true);\n\n this.folderService.clearCache();\n this.cipherService.clearCache();\n this.collectionService.clearCache();\n this.searchService.clearIndex();\n this.messagingService.send('locked');\n if (this.lockedCallback != null) {\n await this.lockedCallback();\n }\n }\n\n async logOut(): Promise {\n if (this.loggedOutCallback != null) {\n await this.loggedOutCallback();\n }\n }\n\n async setVaultTimeoutOptions(timeout: number, action: string): Promise {\n await this.storageService.save(ConstantsService.vaultTimeoutKey, timeout);\n await this.storageService.save(ConstantsService.vaultTimeoutActionKey, action);\n await this.cryptoService.toggleKey();\n await this.tokenService.toggleTokens();\n }\n\n async isPinLockSet(): Promise<[boolean, boolean]> {\n const protectedPin = await this.storageService.get(ConstantsService.protectedPin);\n const pinProtectedKey = await this.storageService.get(ConstantsService.pinProtectedKey);\n return [protectedPin != null, pinProtectedKey != null];\n }\n\n async isBiometricLockSet(): Promise {\n return await this.storageService.get(ConstantsService.biometricUnlockKey);\n }\n\n clear(): Promise {\n this.everBeenUnlocked = false;\n this.pinProtectedKey = null;\n return this.storageService.remove(ConstantsService.protectedPin);\n }\n}\n","import { LogLevelType } from '../enums/logLevelType';\n\nimport { LogService as LogServiceAbstraction } from '../abstractions/log.service';\n\nimport * as hrtime from 'browser-hrtime';\n\nexport class ConsoleLogService implements LogServiceAbstraction {\n protected timersMap: Map = new Map();\n\n constructor(protected isDev: boolean, protected filter: (level: LogLevelType) => boolean = null) { }\n\n debug(message: string) {\n if (!this.isDev) {\n return;\n }\n this.write(LogLevelType.Debug, message);\n }\n\n info(message: string) {\n this.write(LogLevelType.Info, message);\n }\n\n warning(message: string) {\n this.write(LogLevelType.Warning, message);\n }\n\n error(message: string) {\n this.write(LogLevelType.Error, message);\n }\n\n write(level: LogLevelType, message: string) {\n if (this.filter != null && this.filter(level)) {\n return;\n }\n\n switch (level) {\n case LogLevelType.Debug:\n // tslint:disable-next-line\n console.log(message);\n break;\n case LogLevelType.Info:\n // tslint:disable-next-line\n console.log(message);\n break;\n case LogLevelType.Warning:\n // tslint:disable-next-line\n console.warn(message);\n break;\n case LogLevelType.Error:\n // tslint:disable-next-line\n console.error(message);\n break;\n default:\n break;\n }\n }\n\n time(label: string = 'default') {\n if (!this.timersMap.has(label)) {\n this.timersMap.set(label, hrtime());\n }\n }\n\n timeEnd(label: string = 'default'): [number, number] {\n const elapsed = hrtime(this.timersMap.get(label));\n this.timersMap.delete(label);\n this.write(LogLevelType.Info, `${label}: ${elapsed[0] * 1000 + elapsed[1] / 10e6}ms`);\n return elapsed;\n }\n}\n","export enum LogLevelType {\n Debug,\n Info,\n Warning,\n Error,\n}\n","import { Cipher } from './cipher';\n\nimport { CipherView } from '../view/cipherView';\n\nimport { Cipher as CipherDomain } from '../domain/cipher';\n\nexport class CipherWithIds extends Cipher {\n id: string;\n collectionIds: string[];\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CipherView | CipherDomain) {\n this.id = o.id;\n super.build(o);\n this.collectionIds = o.collectionIds;\n }\n}\n","import { Collection } from './collection';\n\nimport { CollectionView } from '../view/collectionView';\n\nimport { Collection as CollectionDomain } from '../domain/collection';\n\nexport class CollectionWithId extends Collection {\n id: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CollectionView | CollectionDomain) {\n this.id = o.id;\n super.build(o);\n }\n}\n","import { Folder } from './folder';\n\nimport { FolderView } from '../view/folderView';\n\nimport { Folder as FolderDomain } from '../domain/folder';\n\nexport class FolderWithId extends Folder {\n id: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: FolderView | FolderDomain) {\n this.id = o.id;\n super.build(o);\n }\n}\n","import { ImportResult } from '../../models/domain/importResult';\nimport { BaseImporter } from '../baseImporter';\nimport { Importer } from '../importer';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { FieldType } from '../../enums/fieldType';\nimport { CipherView } from '../../models/view';\nimport { CipherImportContext } from './cipherImportContext';\n\nexport const IgnoredProperties = ['ainfo', 'autosubmit', 'notesplain', 'ps', 'scope', 'tags', 'title', 'uuid', 'notes'];\n\nexport abstract class OnePasswordCsvImporter extends BaseImporter implements Importer {\n protected loginPropertyParsers = [this.setLoginUsername, this.setLoginPassword, this.setLoginUris];\n protected creditCardPropertyParsers = [this.setCreditCardNumber, this.setCreditCardVerification, this.setCreditCardCardholderName, this.setCreditCardExpiry];\n protected identityPropertyParsers = [this.setIdentityFirstName, this.setIdentityInitial, this.setIdentityLastName, this.setIdentityUserName, this.setIdentityEmail, this.setIdentityPhone, this.setIdentityCompany];\n\n abstract setCipherType(value: any, cipher: CipherView): void;\n\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true, {\n quoteChar: '\"',\n escapeChar: '\\\\',\n });\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.isNullOrWhitespace(this.getProp(value, 'title'))) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.getProp(value, 'title'), '--');\n\n this.setNotes(value, cipher);\n\n this.setCipherType(value, cipher);\n\n let altUsername: string = null;\n for (const property in value) {\n if (!value.hasOwnProperty(property) || this.isNullOrWhitespace(value[property])) {\n continue;\n }\n\n const context = new CipherImportContext(value, property, cipher);\n if (cipher.type === CipherType.Login && this.setKnownLoginValue(context)) {\n continue;\n } else if (cipher.type === CipherType.Card && this.setKnownCreditCardValue(context)) {\n continue;\n } else if (cipher.type === CipherType.Identity && this.setKnownIdentityValue(context)) {\n continue;\n }\n\n altUsername = this.setUnknownValue(context, altUsername);\n }\n\n if (cipher.type === CipherType.Login && !this.isNullOrWhitespace(altUsername) &&\n this.isNullOrWhitespace(cipher.login.username) && altUsername.indexOf('://') === -1) {\n cipher.login.username = altUsername;\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n protected getProp(obj: any, name: string): any {\n const lowerObj = Object.entries(obj).reduce((agg: any, entry: [string, any]) => {\n agg[entry[0].toLowerCase()] = entry[1];\n return agg;\n }, {});\n return lowerObj[name.toLowerCase()];\n }\n\n protected getPropByRegexp(obj: any, regexp: RegExp): any {\n const matchingKeys = Object.keys(obj).reduce((agg: string[], key: string) => {\n if (key.match(regexp)) {\n agg.push(key);\n }\n return agg;\n }, []);\n if (matchingKeys.length === 0) {\n return null;\n } else {\n return obj[matchingKeys[0]];\n }\n }\n\n protected getPropIncluding(obj: any, name: string): any {\n const includesMap = Object.keys(obj).reduce((agg: string[], entry: string) => {\n if (entry.toLowerCase().includes(name.toLowerCase())) {\n agg.push(entry);\n }\n return agg;\n }, []);\n if (includesMap.length === 0) {\n return null;\n } else {\n return obj[includesMap[0]];\n }\n }\n\n protected setNotes(importRecord: any, cipher: CipherView) {\n cipher.notes = this.getValueOrDefault(this.getProp(importRecord, 'notesPlain'), '') + '\\n' +\n this.getValueOrDefault(this.getProp(importRecord, 'notes'), '') + '\\n';\n cipher.notes.trim();\n\n }\n\n protected setKnownLoginValue(context: CipherImportContext): boolean {\n return this.loginPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setKnownCreditCardValue(context: CipherImportContext): boolean {\n return this.creditCardPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setKnownIdentityValue(context: CipherImportContext): boolean {\n return this.identityPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setUnknownValue(context: CipherImportContext, altUsername: string): string {\n if (IgnoredProperties.indexOf(context.lowerProperty) === -1 && !context.lowerProperty.startsWith('section:') &&\n !context.lowerProperty.startsWith('section ')) {\n if (altUsername == null && context.lowerProperty === 'email') {\n return context.importRecord[context.property];\n }\n else if (context.lowerProperty === 'created date' || context.lowerProperty === 'modified date') {\n const readableDate = new Date(parseInt(context.importRecord[context.property], 10) * 1000).toUTCString();\n this.processKvp(context.cipher, '1Password ' + context.property, readableDate);\n return null;\n }\n if (context.lowerProperty.includes('password') || context.lowerProperty.includes('key') || context.lowerProperty.includes('secret')) {\n this.processKvp(context.cipher, context.property, context.importRecord[context.property], FieldType.Hidden);\n } else {\n this.processKvp(context.cipher, context.property, context.importRecord[context.property]);\n }\n }\n return null;\n }\n\n protected setIdentityFirstName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.firstName) && context.lowerProperty.includes('first name')) {\n context.cipher.identity.firstName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityInitial(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.middleName) && context.lowerProperty.includes('initial')) {\n context.cipher.identity.middleName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityLastName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.lastName) && context.lowerProperty.includes('last name')) {\n context.cipher.identity.lastName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityUserName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.username) && context.lowerProperty.includes('username')) {\n context.cipher.identity.username = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityCompany(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.company) && context.lowerProperty.includes('company')) {\n context.cipher.identity.company = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityPhone(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.phone) && context.lowerProperty.includes('default phone')) {\n context.cipher.identity.phone = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityEmail(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.email) && context.lowerProperty.includes('email')) {\n context.cipher.identity.email = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardNumber(context: CipherImportContext): boolean {\n if (this.isNullOrWhitespace(context.cipher.card.number) && context.lowerProperty.includes('number')) {\n context.cipher.card.number = context.importRecord[context.property];\n context.cipher.card.brand = this.getCardBrand(context.cipher.card.number);\n return true;\n }\n return false;\n }\n\n protected setCreditCardVerification(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.code) && context.lowerProperty.includes('verification number')) {\n context.cipher.card.code = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardCardholderName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.cardholderName) && context.lowerProperty.includes('cardholder name')) {\n context.cipher.card.cardholderName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardExpiry(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.expiration) && context.lowerProperty.includes('expiry date') &&\n context.importRecord[context.property].length === 7) {\n context.cipher.card.expMonth = (context.importRecord[context.property] as string).substr(0, 2);\n if (context.cipher.card.expMonth[0] === '0') {\n context.cipher.card.expMonth = context.cipher.card.expMonth.substr(1, 1);\n }\n context.cipher.card.expYear = (context.importRecord[context.property] as string).substr(3, 4);\n return true;\n }\n return false;\n }\n\n protected setLoginPassword(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.login.password) && context.lowerProperty === 'password') {\n context.cipher.login.password = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setLoginUsername(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.login.username) && context.lowerProperty === 'username') {\n context.cipher.login.username = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setLoginUris(context: CipherImportContext) {\n if ((context.cipher.login.uris == null || context.cipher.login.uris.length === 0) && context.lowerProperty === 'urls') {\n const urls = context.importRecord[context.property].split(this.newLineRegex);\n context.cipher.login.uris = this.makeUriArray(urls);\n return true;\n } else if ((context.lowerProperty === 'url')) {\n if (context.cipher.login.uris == null) {\n context.cipher.login.uris = [];\n }\n context.cipher.login.uris.concat(this.makeUriArray(context.importRecord[context.property]));\n return true;\n }\n return false;\n }\n}\n","export { AttachmentView } from './attachmentView';\nexport { CardView } from './cardView';\nexport { CipherView } from './cipherView';\nexport { FieldView } from './fieldView';\nexport { IdentityView } from './identityView';\nexport { LoginUriView } from './loginUriView';\nexport { LoginView } from './loginView';\nexport { SecureNoteView } from './secureNoteView';\nexport { View } from './view';\n","export enum NotificationType {\n SyncCipherUpdate = 0,\n SyncCipherCreate = 1,\n SyncLoginDelete = 2,\n SyncFolderDelete = 3,\n SyncCiphers = 4,\n\n SyncVault = 5,\n SyncOrgKeys = 6,\n SyncFolderCreate = 7,\n SyncFolderUpdate = 8,\n SyncCipherDelete = 9,\n SyncSettings = 10,\n\n LogOut = 11,\n\n SyncSendCreate = 12,\n SyncSendUpdate = 13,\n SyncSendDelete = 14,\n}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport 'bootstrap';\nimport 'jquery';\nimport 'popper.js';\n\n// tslint:disable-next-line\nrequire('../scss/styles.scss');\n\nimport { AppModule } from './app.module';\n\nif (process.env.ENV === 'production') {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule, { preserveWhitespaces: true });\n","// extracted by mini-css-extract-plugin\nexport {};","import { ToasterModule } from 'angular2-toaster';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\n\nimport { AppRoutingModule } from './app-routing.module';\n\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\nimport { ServicesModule } from './services/services.module';\n\nimport { AppComponent } from './app.component';\nimport { ModalComponent } from './modal.component';\n\nimport { AvatarComponent } from './components/avatar.component';\nimport { PasswordStrengthComponent } from './components/password-strength.component';\n\nimport { FooterComponent } from './layouts/footer.component';\nimport { FrontendLayoutComponent } from './layouts/frontend-layout.component';\nimport { NavbarComponent } from './layouts/navbar.component';\nimport { OrganizationLayoutComponent } from './layouts/organization-layout.component';\nimport { UserLayoutComponent } from './layouts/user-layout.component';\n\nimport { AcceptEmergencyComponent } from './accounts/accept-emergency.component';\nimport { AcceptOrganizationComponent } from './accounts/accept-organization.component';\nimport { HintComponent } from './accounts/hint.component';\nimport { LockComponent } from './accounts/lock.component';\nimport { LoginComponent } from './accounts/login.component';\nimport { RecoverDeleteComponent } from './accounts/recover-delete.component';\nimport { RecoverTwoFactorComponent } from './accounts/recover-two-factor.component';\nimport { RegisterComponent } from './accounts/register.component';\nimport { SetPasswordComponent } from './accounts/set-password.component';\nimport { SsoComponent } from './accounts/sso.component';\nimport { TwoFactorOptionsComponent } from './accounts/two-factor-options.component';\nimport { TwoFactorComponent } from './accounts/two-factor.component';\nimport { VerifyEmailTokenComponent } from './accounts/verify-email-token.component';\nimport { VerifyRecoverDeleteComponent } from './accounts/verify-recover-delete.component';\n\nimport { BulkConfirmComponent as OrgBulkConfirmComponent } from './organizations/manage/bulk/bulk-confirm.component';\nimport { BulkRemoveComponent as OrgBulkRemoveComponent } from './organizations/manage/bulk/bulk-remove.component';\nimport { BulkStatusComponent as OrgBulkStatusComponent } from './organizations/manage/bulk/bulk-status.component';\nimport {\n CollectionAddEditComponent as OrgCollectionAddEditComponent,\n} from './organizations/manage/collection-add-edit.component';\nimport { CollectionsComponent as OrgManageCollectionsComponent } from './organizations/manage/collections.component';\nimport { EntityEventsComponent as OrgEntityEventsComponent } from './organizations/manage/entity-events.component';\nimport { EntityUsersComponent as OrgEntityUsersComponent } from './organizations/manage/entity-users.component';\nimport { EventsComponent as OrgEventsComponent } from './organizations/manage/events.component';\nimport { GroupAddEditComponent as OrgGroupAddEditComponent } from './organizations/manage/group-add-edit.component';\nimport { GroupsComponent as OrgGroupsComponent } from './organizations/manage/groups.component';\nimport { ManageComponent as OrgManageComponent } from './organizations/manage/manage.component';\nimport { PeopleComponent as OrgPeopleComponent } from './organizations/manage/people.component';\nimport { PoliciesComponent as OrgPoliciesComponent } from './organizations/manage/policies.component';\nimport { PolicyEditComponent as OrgPolicyEditComponent } from './organizations/manage/policy-edit.component';\nimport { ResetPasswordComponent as OrgResetPasswordComponent } from './organizations/manage/reset-password.component';\nimport { UserAddEditComponent as OrgUserAddEditComponent } from './organizations/manage/user-add-edit.component';\nimport { UserConfirmComponent as OrgUserConfirmComponent } from './organizations/manage/user-confirm.component';\nimport { UserGroupsComponent as OrgUserGroupsComponent } from './organizations/manage/user-groups.component';\n\nimport { AccountComponent as OrgAccountComponent } from './organizations/settings/account.component';\nimport { AdjustSeatsComponent } from './organizations/settings/adjust-seats.component';\nimport { ChangePlanComponent } from './organizations/settings/change-plan.component';\nimport { DeleteOrganizationComponent } from './organizations/settings/delete-organization.component';\nimport { DownloadLicenseComponent } from './organizations/settings/download-license.component';\nimport { OrganizationBillingComponent } from './organizations/settings/organization-billing.component';\nimport { OrganizationSubscriptionComponent } from './organizations/settings/organization-subscription.component';\nimport { SettingsComponent as OrgSettingComponent } from './organizations/settings/settings.component';\nimport {\n TwoFactorSetupComponent as OrgTwoFactorSetupComponent,\n} from './organizations/settings/two-factor-setup.component';\n\nimport { ExportComponent as OrgExportComponent } from './organizations/tools/export.component';\nimport {\n ExposedPasswordsReportComponent as OrgExposedPasswordsReportComponent,\n} from './organizations/tools/exposed-passwords-report.component';\nimport { ImportComponent as OrgImportComponent } from './organizations/tools/import.component';\nimport {\n InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent,\n} from './organizations/tools/inactive-two-factor-report.component';\nimport {\n ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent,\n} from './organizations/tools/reused-passwords-report.component';\nimport { ToolsComponent as OrgToolsComponent } from './organizations/tools/tools.component';\nimport {\n UnsecuredWebsitesReportComponent as OrgUnsecuredWebsitesReportComponent,\n} from './organizations/tools/unsecured-websites-report.component';\nimport {\n WeakPasswordsReportComponent as OrgWeakPasswordsReportComponent,\n} from './organizations/tools/weak-passwords-report.component';\n\nimport { AddEditComponent as OrgAddEditComponent } from './organizations/vault/add-edit.component';\nimport { AttachmentsComponent as OrgAttachmentsComponent } from './organizations/vault/attachments.component';\nimport { CiphersComponent as OrgCiphersComponent } from './organizations/vault/ciphers.component';\nimport { CollectionsComponent as OrgCollectionsComponent } from './organizations/vault/collections.component';\nimport { GroupingsComponent as OrgGroupingsComponent } from './organizations/vault/groupings.component';\nimport { VaultComponent as OrgVaultComponent } from './organizations/vault/vault.component';\n\nimport { AccessComponent } from './send/access.component';\nimport { AddEditComponent as SendAddEditComponent } from './send/add-edit.component';\nimport { SendComponent } from './send/send.component';\n\nimport { AccountComponent } from './settings/account.component';\nimport { AddCreditComponent } from './settings/add-credit.component';\nimport { AdjustPaymentComponent } from './settings/adjust-payment.component';\nimport { AdjustStorageComponent } from './settings/adjust-storage.component';\nimport { ApiKeyComponent } from './settings/api-key.component';\nimport { ChangeEmailComponent } from './settings/change-email.component';\nimport { ChangeKdfComponent } from './settings/change-kdf.component';\nimport { ChangePasswordComponent } from './settings/change-password.component';\nimport { CreateOrganizationComponent } from './settings/create-organization.component';\nimport { DeauthorizeSessionsComponent } from './settings/deauthorize-sessions.component';\nimport { DeleteAccountComponent } from './settings/delete-account.component';\nimport { DomainRulesComponent } from './settings/domain-rules.component';\nimport { EmergencyAccessAddEditComponent } from './settings/emergency-access-add-edit.component';\nimport { EmergencyAccessAttachmentsComponent } from './settings/emergency-access-attachments.component';\nimport { EmergencyAccessConfirmComponent } from './settings/emergency-access-confirm.component';\nimport { EmergencyAccessTakeoverComponent } from './settings/emergency-access-takeover.component';\nimport { EmergencyAccessViewComponent } from './settings/emergency-access-view.component';\nimport { EmergencyAccessComponent } from './settings/emergency-access.component';\nimport { EmergencyAddEditComponent } from './settings/emergency-add-edit.component';\nimport { LinkSsoComponent } from './settings/link-sso.component';\nimport { OptionsComponent } from './settings/options.component';\nimport { OrganizationPlansComponent } from './settings/organization-plans.component';\nimport { OrganizationsComponent } from './settings/organizations.component';\nimport { PaymentComponent } from './settings/payment.component';\nimport { PremiumComponent } from './settings/premium.component';\nimport { ProfileComponent } from './settings/profile.component';\nimport { PurgeVaultComponent } from './settings/purge-vault.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { TaxInfoComponent } from './settings/tax-info.component';\nimport { TwoFactorAuthenticatorComponent } from './settings/two-factor-authenticator.component';\nimport { TwoFactorDuoComponent } from './settings/two-factor-duo.component';\nimport { TwoFactorEmailComponent } from './settings/two-factor-email.component';\nimport { TwoFactorRecoveryComponent } from './settings/two-factor-recovery.component';\nimport { TwoFactorSetupComponent } from './settings/two-factor-setup.component';\nimport { TwoFactorVerifyComponent } from './settings/two-factor-verify.component';\nimport { TwoFactorWebAuthnComponent } from './settings/two-factor-webauthn.component';\nimport { TwoFactorYubiKeyComponent } from './settings/two-factor-yubikey.component';\nimport { UpdateKeyComponent } from './settings/update-key.component';\nimport { UpdateLicenseComponent } from './settings/update-license.component';\nimport { UserBillingComponent } from './settings/user-billing.component';\nimport { UserSubscriptionComponent } from './settings/user-subscription.component';\nimport { VerifyEmailComponent } from './settings/verify-email.component';\n\nimport { BreachReportComponent } from './tools/breach-report.component';\nimport { ExportComponent } from './tools/export.component';\nimport { ExposedPasswordsReportComponent } from './tools/exposed-passwords-report.component';\nimport { ImportComponent } from './tools/import.component';\nimport { InactiveTwoFactorReportComponent } from './tools/inactive-two-factor-report.component';\nimport { PasswordGeneratorHistoryComponent } from './tools/password-generator-history.component';\nimport { PasswordGeneratorComponent } from './tools/password-generator.component';\nimport { ReusedPasswordsReportComponent } from './tools/reused-passwords-report.component';\nimport { ToolsComponent } from './tools/tools.component';\nimport { UnsecuredWebsitesReportComponent } from './tools/unsecured-websites-report.component';\nimport { WeakPasswordsReportComponent } from './tools/weak-passwords-report.component';\n\nimport { AddEditComponent } from './vault/add-edit.component';\nimport { AttachmentsComponent } from './vault/attachments.component';\nimport { BulkActionsComponent } from './vault/bulk-actions.component';\nimport { BulkDeleteComponent } from './vault/bulk-delete.component';\nimport { BulkMoveComponent } from './vault/bulk-move.component';\nimport { BulkRestoreComponent } from './vault/bulk-restore.component';\nimport { BulkShareComponent } from './vault/bulk-share.component';\nimport { CiphersComponent } from './vault/ciphers.component';\nimport { CollectionsComponent } from './vault/collections.component';\nimport { FolderAddEditComponent } from './vault/folder-add-edit.component';\nimport { GroupingsComponent } from './vault/groupings.component';\nimport { SendInfoComponent } from './vault/send-info.component';\nimport { ShareComponent } from './vault/share.component';\nimport { VaultComponent } from './vault/vault.component';\n\nimport { CalloutComponent } from 'jslib-angular/components/callout.component';\nimport { IconComponent } from 'jslib-angular/components/icon.component';\n\nimport { A11yTitleDirective } from 'jslib-angular/directives/a11y-title.directive';\nimport { ApiActionDirective } from 'jslib-angular/directives/api-action.directive';\nimport { AutofocusDirective } from 'jslib-angular/directives/autofocus.directive';\nimport { BlurClickDirective } from 'jslib-angular/directives/blur-click.directive';\nimport { BoxRowDirective } from 'jslib-angular/directives/box-row.directive';\nimport { FallbackSrcDirective } from 'jslib-angular/directives/fallback-src.directive';\nimport { InputVerbatimDirective } from 'jslib-angular/directives/input-verbatim.directive';\nimport { SelectCopyDirective } from 'jslib-angular/directives/select-copy.directive';\nimport { StopClickDirective } from 'jslib-angular/directives/stop-click.directive';\nimport { StopPropDirective } from 'jslib-angular/directives/stop-prop.directive';\nimport { TrueFalseValueDirective } from 'jslib-angular/directives/true-false-value.directive';\n\nimport { ColorPasswordPipe } from 'jslib-angular/pipes/color-password.pipe';\nimport { I18nPipe } from 'jslib-angular/pipes/i18n.pipe';\nimport { SearchCiphersPipe } from 'jslib-angular/pipes/search-ciphers.pipe';\nimport { SearchPipe } from 'jslib-angular/pipes/search.pipe';\n\nimport {\n DatePipe,\n registerLocaleData,\n} from '@angular/common';\nimport localeBg from '@angular/common/locales/bg';\nimport localeCa from '@angular/common/locales/ca';\nimport localeCs from '@angular/common/locales/cs';\nimport localeDa from '@angular/common/locales/da';\nimport localeDe from '@angular/common/locales/de';\nimport localeEl from '@angular/common/locales/el';\nimport localeEnGb from '@angular/common/locales/en-GB';\nimport localeEnIn from '@angular/common/locales/en-IN';\nimport localeEo from '@angular/common/locales/eo';\nimport localeEs from '@angular/common/locales/es';\nimport localeEt from '@angular/common/locales/et';\nimport localeFi from '@angular/common/locales/fi';\nimport localeFr from '@angular/common/locales/fr';\nimport localeHe from '@angular/common/locales/he';\nimport localeHr from '@angular/common/locales/hr';\nimport localeHu from '@angular/common/locales/hu';\nimport localeId from '@angular/common/locales/id';\nimport localeIt from '@angular/common/locales/it';\nimport localeJa from '@angular/common/locales/ja';\nimport localeKo from '@angular/common/locales/ko';\nimport localeLv from '@angular/common/locales/lv';\nimport localeMl from '@angular/common/locales/ml';\nimport localeNb from '@angular/common/locales/nb';\nimport localeNl from '@angular/common/locales/nl';\nimport localePl from '@angular/common/locales/pl';\nimport localePtBr from '@angular/common/locales/pt';\nimport localePtPt from '@angular/common/locales/pt-PT';\nimport localeRo from '@angular/common/locales/ro';\nimport localeRu from '@angular/common/locales/ru';\nimport localeSk from '@angular/common/locales/sk';\nimport localeSr from '@angular/common/locales/sr';\nimport localeSv from '@angular/common/locales/sv';\nimport localeTr from '@angular/common/locales/tr';\nimport localeUk from '@angular/common/locales/uk';\nimport localeZhCn from '@angular/common/locales/zh-Hans';\nimport localeZhTw from '@angular/common/locales/zh-Hant';\n\nregisterLocaleData(localeCa, 'ca');\nregisterLocaleData(localeCs, 'cs');\nregisterLocaleData(localeBg, 'bg');\nregisterLocaleData(localeDa, 'da');\nregisterLocaleData(localeDe, 'de');\nregisterLocaleData(localeEl, 'el');\nregisterLocaleData(localeEnGb, 'en-GB');\nregisterLocaleData(localeEnIn, 'en-IN');\nregisterLocaleData(localeEs, 'es');\nregisterLocaleData(localeEt, 'et');\nregisterLocaleData(localeEo, 'eo');\nregisterLocaleData(localeFi, 'fi');\nregisterLocaleData(localeFr, 'fr');\nregisterLocaleData(localeHe, 'he');\nregisterLocaleData(localeHr, 'hr');\nregisterLocaleData(localeHu, 'hu');\nregisterLocaleData(localeId, 'id');\nregisterLocaleData(localeIt, 'it');\nregisterLocaleData(localeJa, 'ja');\nregisterLocaleData(localeKo, 'ko');\nregisterLocaleData(localeLv, 'lv');\nregisterLocaleData(localeMl, 'ml');\nregisterLocaleData(localeNb, 'nb');\nregisterLocaleData(localeNl, 'nl');\nregisterLocaleData(localePl, 'pl');\nregisterLocaleData(localePtBr, 'pt-BR');\nregisterLocaleData(localePtPt, 'pt-PT');\nregisterLocaleData(localeRo, 'ro');\nregisterLocaleData(localeRu, 'ru');\nregisterLocaleData(localeSk, 'sk');\nregisterLocaleData(localeSr, 'sr');\nregisterLocaleData(localeSv, 'sv');\nregisterLocaleData(localeTr, 'tr');\nregisterLocaleData(localeUk, 'uk');\nregisterLocaleData(localeZhCn, 'zh-CN');\nregisterLocaleData(localeZhTw, 'zh-TW');\n\n@NgModule({\n imports: [\n BrowserModule,\n BrowserAnimationsModule,\n FormsModule,\n AppRoutingModule,\n ServicesModule,\n ToasterModule.forRoot(),\n InfiniteScrollModule,\n DragDropModule,\n ],\n declarations: [\n A11yTitleDirective,\n AcceptEmergencyComponent,\n AccessComponent,\n AcceptOrganizationComponent,\n AccountComponent,\n SetPasswordComponent,\n AddCreditComponent,\n AddEditComponent,\n AdjustPaymentComponent,\n AdjustSeatsComponent,\n AdjustStorageComponent,\n ApiActionDirective,\n ApiKeyComponent,\n AppComponent,\n AttachmentsComponent,\n AutofocusDirective,\n AvatarComponent,\n BlurClickDirective,\n BoxRowDirective,\n BreachReportComponent,\n BulkActionsComponent,\n BulkDeleteComponent,\n BulkMoveComponent,\n BulkRestoreComponent,\n BulkShareComponent,\n CalloutComponent,\n ChangeEmailComponent,\n ChangeKdfComponent,\n ChangePasswordComponent,\n ChangePlanComponent,\n CiphersComponent,\n CollectionsComponent,\n ColorPasswordPipe,\n CreateOrganizationComponent,\n DeauthorizeSessionsComponent,\n DeleteAccountComponent,\n DeleteOrganizationComponent,\n DomainRulesComponent,\n DownloadLicenseComponent,\n EmergencyAccessAddEditComponent,\n EmergencyAccessAttachmentsComponent,\n EmergencyAccessComponent,\n EmergencyAccessConfirmComponent,\n EmergencyAccessTakeoverComponent,\n EmergencyAccessViewComponent,\n EmergencyAddEditComponent,\n ExportComponent,\n ExposedPasswordsReportComponent,\n FallbackSrcDirective,\n FolderAddEditComponent,\n FooterComponent,\n FrontendLayoutComponent,\n GroupingsComponent,\n HintComponent,\n I18nPipe,\n IconComponent,\n ImportComponent,\n InactiveTwoFactorReportComponent,\n InputVerbatimDirective,\n LinkSsoComponent,\n LockComponent,\n LoginComponent,\n ModalComponent,\n NavbarComponent,\n OptionsComponent,\n OrgAccountComponent,\n OrgAddEditComponent,\n OrganizationBillingComponent,\n OrganizationPlansComponent,\n OrganizationSubscriptionComponent,\n OrgAttachmentsComponent,\n OrgBulkStatusComponent,\n OrgBulkConfirmComponent,\n OrgBulkRemoveComponent,\n OrgCiphersComponent,\n OrgCollectionAddEditComponent,\n OrgCollectionsComponent,\n OrgEntityEventsComponent,\n OrgEntityUsersComponent,\n OrgEventsComponent,\n OrgExportComponent,\n OrgExposedPasswordsReportComponent,\n OrgImportComponent,\n OrgInactiveTwoFactorReportComponent,\n OrgGroupAddEditComponent,\n OrgGroupingsComponent,\n OrgGroupsComponent,\n OrgManageCollectionsComponent,\n OrgManageComponent,\n OrgPeopleComponent,\n OrgPolicyEditComponent,\n OrgPoliciesComponent,\n OrgResetPasswordComponent,\n OrgReusedPasswordsReportComponent,\n OrgSettingComponent,\n OrgToolsComponent,\n OrgTwoFactorSetupComponent,\n OrgUserAddEditComponent,\n OrgUserConfirmComponent,\n OrgUserGroupsComponent,\n OrganizationsComponent,\n OrganizationLayoutComponent,\n OrgUnsecuredWebsitesReportComponent,\n OrgVaultComponent,\n OrgWeakPasswordsReportComponent,\n PasswordGeneratorComponent,\n PasswordGeneratorHistoryComponent,\n PasswordStrengthComponent,\n PaymentComponent,\n PremiumComponent,\n ProfileComponent,\n PurgeVaultComponent,\n RecoverDeleteComponent,\n RecoverTwoFactorComponent,\n RegisterComponent,\n ReusedPasswordsReportComponent,\n SearchCiphersPipe,\n SearchPipe,\n SelectCopyDirective,\n SendAddEditComponent,\n SendComponent,\n SendInfoComponent,\n SettingsComponent,\n ShareComponent,\n SsoComponent,\n StopClickDirective,\n StopPropDirective,\n TaxInfoComponent,\n ToolsComponent,\n TrueFalseValueDirective,\n TwoFactorAuthenticatorComponent,\n TwoFactorComponent,\n TwoFactorDuoComponent,\n TwoFactorEmailComponent,\n TwoFactorOptionsComponent,\n TwoFactorRecoveryComponent,\n TwoFactorSetupComponent,\n TwoFactorVerifyComponent,\n TwoFactorWebAuthnComponent,\n TwoFactorYubiKeyComponent,\n UnsecuredWebsitesReportComponent,\n UpdateKeyComponent,\n UpdateLicenseComponent,\n UserBillingComponent,\n UserLayoutComponent,\n UserSubscriptionComponent,\n VaultComponent,\n VerifyEmailComponent,\n VerifyEmailTokenComponent,\n VerifyRecoverDeleteComponent,\n WeakPasswordsReportComponent,\n ],\n entryComponents: [\n AddEditComponent,\n ApiKeyComponent,\n AttachmentsComponent,\n BulkActionsComponent,\n BulkDeleteComponent,\n BulkMoveComponent,\n BulkRestoreComponent,\n BulkShareComponent,\n CollectionsComponent,\n DeauthorizeSessionsComponent,\n DeleteAccountComponent,\n DeleteOrganizationComponent,\n EmergencyAccessAddEditComponent,\n EmergencyAccessAttachmentsComponent,\n EmergencyAccessConfirmComponent,\n EmergencyAccessTakeoverComponent,\n EmergencyAddEditComponent,\n FolderAddEditComponent,\n ModalComponent,\n OrgAddEditComponent,\n OrgAttachmentsComponent,\n OrgBulkStatusComponent,\n OrgBulkConfirmComponent,\n OrgBulkRemoveComponent,\n OrgCollectionAddEditComponent,\n OrgCollectionsComponent,\n OrgEntityEventsComponent,\n OrgEntityUsersComponent,\n OrgGroupAddEditComponent,\n OrgPolicyEditComponent,\n OrgResetPasswordComponent,\n OrgUserAddEditComponent,\n OrgUserConfirmComponent,\n OrgUserGroupsComponent,\n PasswordGeneratorHistoryComponent,\n PurgeVaultComponent,\n SendAddEditComponent,\n ShareComponent,\n TwoFactorAuthenticatorComponent,\n TwoFactorDuoComponent,\n TwoFactorEmailComponent,\n TwoFactorOptionsComponent,\n TwoFactorRecoveryComponent,\n TwoFactorWebAuthnComponent,\n TwoFactorYubiKeyComponent,\n UpdateKeyComponent,\n ],\n providers: [DatePipe, SearchPipe],\n bootstrap: [AppComponent],\n})\nexport class AppModule { }\n","import { NgModule } from '@angular/core';\nimport {\n RouterModule,\n Routes,\n} from '@angular/router';\n\nimport { FrontendLayoutComponent } from './layouts/frontend-layout.component';\nimport { OrganizationLayoutComponent } from './layouts/organization-layout.component';\nimport { UserLayoutComponent } from './layouts/user-layout.component';\n\nimport { AcceptEmergencyComponent } from './accounts/accept-emergency.component';\nimport { AcceptOrganizationComponent } from './accounts/accept-organization.component';\nimport { HintComponent } from './accounts/hint.component';\nimport { LockComponent } from './accounts/lock.component';\nimport { LoginComponent } from './accounts/login.component';\nimport { RecoverDeleteComponent } from './accounts/recover-delete.component';\nimport { RecoverTwoFactorComponent } from './accounts/recover-two-factor.component';\nimport { RegisterComponent } from './accounts/register.component';\nimport { SetPasswordComponent } from './accounts/set-password.component';\nimport { SsoComponent } from './accounts/sso.component';\nimport { TwoFactorComponent } from './accounts/two-factor.component';\nimport { VerifyEmailTokenComponent } from './accounts/verify-email-token.component';\nimport { VerifyRecoverDeleteComponent } from './accounts/verify-recover-delete.component';\n\nimport { CollectionsComponent as OrgManageCollectionsComponent } from './organizations/manage/collections.component';\nimport { EventsComponent as OrgEventsComponent } from './organizations/manage/events.component';\nimport { GroupsComponent as OrgGroupsComponent } from './organizations/manage/groups.component';\nimport { ManageComponent as OrgManageComponent } from './organizations/manage/manage.component';\nimport { PeopleComponent as OrgPeopleComponent } from './organizations/manage/people.component';\nimport { PoliciesComponent as OrgPoliciesComponent } from './organizations/manage/policies.component';\n\nimport { AccountComponent as OrgAccountComponent } from './organizations/settings/account.component';\nimport { OrganizationBillingComponent } from './organizations/settings/organization-billing.component';\nimport { OrganizationSubscriptionComponent } from './organizations/settings/organization-subscription.component';\nimport { SettingsComponent as OrgSettingsComponent } from './organizations/settings/settings.component';\nimport {\n TwoFactorSetupComponent as OrgTwoFactorSetupComponent,\n} from './organizations/settings/two-factor-setup.component';\n\nimport { ExportComponent as OrgExportComponent } from './organizations/tools/export.component';\nimport {\n ExposedPasswordsReportComponent as OrgExposedPasswordsReportComponent,\n} from './organizations/tools/exposed-passwords-report.component';\nimport { ImportComponent as OrgImportComponent } from './organizations/tools/import.component';\nimport {\n InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent,\n} from './organizations/tools/inactive-two-factor-report.component';\nimport {\n ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent,\n} from './organizations/tools/reused-passwords-report.component';\nimport { ToolsComponent as OrgToolsComponent } from './organizations/tools/tools.component';\nimport {\n UnsecuredWebsitesReportComponent as OrgUnsecuredWebsitesReportComponent,\n} from './organizations/tools/unsecured-websites-report.component';\nimport {\n WeakPasswordsReportComponent as OrgWeakPasswordsReportComponent,\n} from './organizations/tools/weak-passwords-report.component';\n\nimport { VaultComponent as OrgVaultComponent } from './organizations/vault/vault.component';\n\nimport { AccessComponent } from './send/access.component';\nimport { SendComponent } from './send/send.component';\n\nimport { AccountComponent } from './settings/account.component';\nimport { CreateOrganizationComponent } from './settings/create-organization.component';\nimport { DomainRulesComponent } from './settings/domain-rules.component';\nimport { OptionsComponent } from './settings/options.component';\nimport { OrganizationsComponent } from './settings/organizations.component';\nimport { PremiumComponent } from './settings/premium.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { TwoFactorSetupComponent } from './settings/two-factor-setup.component';\nimport { UserBillingComponent } from './settings/user-billing.component';\nimport { UserSubscriptionComponent } from './settings/user-subscription.component';\n\nimport { BreachReportComponent } from './tools/breach-report.component';\nimport { ExportComponent } from './tools/export.component';\nimport { ExposedPasswordsReportComponent } from './tools/exposed-passwords-report.component';\nimport { ImportComponent } from './tools/import.component';\nimport { InactiveTwoFactorReportComponent } from './tools/inactive-two-factor-report.component';\nimport { PasswordGeneratorComponent } from './tools/password-generator.component';\nimport { ReusedPasswordsReportComponent } from './tools/reused-passwords-report.component';\nimport { ToolsComponent } from './tools/tools.component';\nimport { UnsecuredWebsitesReportComponent } from './tools/unsecured-websites-report.component';\nimport { WeakPasswordsReportComponent } from './tools/weak-passwords-report.component';\n\nimport { VaultComponent } from './vault/vault.component';\n\nimport { OrganizationGuardService } from './services/organization-guard.service';\nimport { OrganizationTypeGuardService } from './services/organization-type-guard.service';\n\nimport { AuthGuardService } from 'jslib-angular/services/auth-guard.service';\nimport { LockGuardService } from 'jslib-angular/services/lock-guard.service';\nimport { UnauthGuardService } from 'jslib-angular/services/unauth-guard.service';\n\nimport { Permissions } from 'jslib-common/enums/permissions';\n\nimport { EmergencyAccessViewComponent } from './settings/emergency-access-view.component';\nimport { EmergencyAccessComponent } from './settings/emergency-access.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: FrontendLayoutComponent,\n children: [\n { path: '', pathMatch: 'full', component: LoginComponent, canActivate: [UnauthGuardService] },\n { path: '2fa', component: TwoFactorComponent, canActivate: [UnauthGuardService] },\n {\n path: 'register', component: RegisterComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'createAccount' },\n },\n {\n path: 'sso', component: SsoComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'enterpriseSingleSignOn' },\n },\n {\n path: 'set-password', component: SetPasswordComponent,\n data: { titleId: 'setMasterPassword' },\n },\n {\n path: 'hint', component: HintComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'passwordHint' },\n },\n {\n path: 'lock',\n component: LockComponent,\n canActivate: [LockGuardService],\n },\n { path: 'verify-email', component: VerifyEmailTokenComponent },\n {\n path: 'accept-organization',\n component: AcceptOrganizationComponent,\n data: { titleId: 'joinOrganization' },\n },\n {\n path: 'accept-emergency',\n component: AcceptEmergencyComponent,\n data: { titleId: 'acceptEmergency' },\n },\n { path: 'recover', pathMatch: 'full', redirectTo: 'recover-2fa' },\n {\n path: 'recover-2fa',\n component: RecoverTwoFactorComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'recoverAccountTwoStep' },\n },\n {\n path: 'recover-delete',\n component: RecoverDeleteComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'deleteAccount' },\n },\n {\n path: 'verify-recover-delete',\n component: VerifyRecoverDeleteComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'deleteAccount' },\n },\n {\n path: 'send/:sendId/:key',\n component: AccessComponent,\n data: { title: 'Bitwarden Send' },\n },\n ],\n },\n {\n path: '',\n component: UserLayoutComponent,\n canActivate: [AuthGuardService],\n children: [\n { path: 'vault', component: VaultComponent, data: { titleId: 'myVault' } },\n { path: 'sends', component: SendComponent, data: { title: 'Send' } },\n {\n path: 'settings',\n component: SettingsComponent,\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'account' },\n { path: 'account', component: AccountComponent, data: { titleId: 'myAccount' } },\n { path: 'options', component: OptionsComponent, data: { titleId: 'options' } },\n { path: 'domain-rules', component: DomainRulesComponent, data: { titleId: 'domainRules' } },\n { path: 'two-factor', component: TwoFactorSetupComponent, data: { titleId: 'twoStepLogin' } },\n { path: 'premium', component: PremiumComponent, data: { titleId: 'goPremium' } },\n { path: 'billing', component: UserBillingComponent, data: { titleId: 'billing' } },\n {\n path: 'subscription',\n component: UserSubscriptionComponent,\n data: { titleId: 'premiumMembership' },\n },\n { path: 'organizations', component: OrganizationsComponent, data: { titleId: 'organizations' } },\n {\n path: 'create-organization',\n component: CreateOrganizationComponent,\n data: { titleId: 'newOrganization' },\n },\n {\n path: 'emergency-access',\n children: [\n {\n path: '',\n component: EmergencyAccessComponent,\n data: { titleId: 'emergencyAccess' },\n },\n {\n path: ':id',\n component: EmergencyAccessViewComponent,\n data: { titleId: 'emergencyAccess' },\n },\n ],\n },\n ],\n },\n {\n path: 'tools',\n component: ToolsComponent,\n canActivate: [AuthGuardService],\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'generator' },\n { path: 'import', component: ImportComponent, data: { titleId: 'importData' } },\n { path: 'export', component: ExportComponent, data: { titleId: 'exportVault' } },\n {\n path: 'generator',\n component: PasswordGeneratorComponent,\n data: { titleId: 'passwordGenerator' },\n },\n { path: 'breach-report', component: BreachReportComponent, data: { titleId: 'dataBreachReport' } },\n {\n path: 'reused-passwords-report',\n component: ReusedPasswordsReportComponent,\n data: { titleId: 'reusedPasswordsReport' },\n },\n {\n path: 'unsecured-websites-report',\n component: UnsecuredWebsitesReportComponent,\n data: { titleId: 'unsecuredWebsitesReport' },\n },\n {\n path: 'weak-passwords-report',\n component: WeakPasswordsReportComponent,\n data: { titleId: 'weakPasswordsReport' },\n },\n {\n path: 'exposed-passwords-report',\n component: ExposedPasswordsReportComponent,\n data: { titleId: 'exposedPasswordsReport' },\n },\n {\n path: 'inactive-two-factor-report',\n component: InactiveTwoFactorReportComponent,\n data: { titleId: 'inactive2faReport' },\n },\n ],\n },\n ],\n },\n {\n path: 'organizations/:organizationId',\n component: OrganizationLayoutComponent,\n canActivate: [AuthGuardService, OrganizationGuardService],\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'vault' },\n { path: 'vault', component: OrgVaultComponent, data: { titleId: 'vault' } },\n {\n path: 'tools',\n component: OrgToolsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: { permissions: [Permissions.AccessImportExport, Permissions.AccessReports] },\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'import',\n },\n {\n path: 'import',\n component: OrgImportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'importData',\n permissions: [Permissions.AccessImportExport],\n },\n },\n {\n path: 'export',\n component: OrgExportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'exportVault',\n permissions: [Permissions.AccessImportExport],\n },\n },\n {\n path: 'exposed-passwords-report',\n component: OrgExposedPasswordsReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'exposedPasswordsReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'inactive-two-factor-report',\n component: OrgInactiveTwoFactorReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'inactive2faReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'reused-passwords-report',\n component: OrgReusedPasswordsReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'reusedPasswordsReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'unsecured-websites-report',\n component: OrgUnsecuredWebsitesReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'unsecuredWebsitesReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'weak-passwords-report',\n component: OrgWeakPasswordsReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'weakPasswordsReport',\n permissions: [Permissions.AccessReports],\n },\n },\n ],\n },\n {\n path: 'manage',\n component: OrgManageComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n permissions: [\n Permissions.ManageAssignedCollections,\n Permissions.ManageAllCollections,\n Permissions.AccessEventLogs,\n Permissions.ManageGroups,\n Permissions.ManageUsers,\n Permissions.ManagePolicies,\n ],\n },\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'people',\n },\n {\n path: 'collections',\n component: OrgManageCollectionsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'collections',\n permissions: [Permissions.ManageAssignedCollections, Permissions.ManageAllCollections],\n },\n },\n {\n path: 'events',\n component: OrgEventsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'eventLogs',\n permissions: [Permissions.AccessEventLogs],\n },\n },\n {\n path: 'groups',\n component: OrgGroupsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'groups',\n permissions: [Permissions.ManageGroups],\n },\n },\n {\n path: 'people',\n component: OrgPeopleComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'people',\n permissions: [Permissions.ManageUsers, Permissions.ManageUsersPassword],\n },\n },\n {\n path: 'policies',\n component: OrgPoliciesComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'policies',\n permissions: [Permissions.ManagePolicies],\n },\n },\n ],\n },\n {\n path: 'settings',\n component: OrgSettingsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: { permissions: [Permissions.ManageOrganization] },\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'account' },\n { path: 'account', component: OrgAccountComponent, data: { titleId: 'myOrganization' } },\n { path: 'two-factor', component: OrgTwoFactorSetupComponent, data: { titleId: 'twoStepLogin' } },\n {\n path: 'billing',\n component: OrganizationBillingComponent,\n data: { titleId: 'billing' },\n },\n {\n path: 'subscription',\n component: OrganizationSubscriptionComponent,\n data: { titleId: 'subscription' },\n },\n ],\n },\n ],\n },\n { path: '**', redirectTo: '' },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, {\n useHash: true,\n paramsInheritanceStrategy: 'always',\n /*enableTracing: true,*/\n })],\n exports: [RouterModule],\n})\nexport class AppRoutingModule { }\n","import { BroadcasterService as BroadcasterServiceAbstraction } from '../abstractions/broadcaster.service';\n\nexport class BroadcasterService implements BroadcasterServiceAbstraction {\n subscribers: Map any> = new Map any>();\n\n send(message: any, id?: string) {\n if (id != null) {\n if (this.subscribers.has(id)) {\n this.subscribers.get(id)(message);\n }\n return;\n }\n\n this.subscribers.forEach(value => {\n value(message);\n });\n }\n\n subscribe(id: string, messageCallback: (message: any) => any) {\n this.subscribers.set(id, messageCallback);\n }\n\n unsubscribe(id: string) {\n if (this.subscribers.has(id)) {\n this.subscribers.delete(id);\n }\n }\n}\n","export function getDomain(host: string): string | null {\n return null;\n}\n","export class EmergencyAccessAcceptRequest {\n token: string;\n}\n","export class OrganizationUserAcceptRequest {\n token: string;\n}\n","import { Router } from '@angular/router';\n\nimport { PasswordHintRequest } from 'jslib-common/models/request/passwordHintRequest';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nexport class HintComponent {\n email: string = '';\n formPromise: Promise;\n\n protected successRoute = 'login';\n protected onSuccessfulSubmit: () => void;\n\n constructor(protected router: Router, protected i18nService: I18nService,\n protected apiService: ApiService, protected platformUtilsService: PlatformUtilsService) { }\n\n async submit() {\n if (this.email == null || this.email === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('emailRequired'));\n return;\n }\n if (this.email.indexOf('@') === -1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidEmail'));\n return;\n }\n\n try {\n this.formPromise = this.apiService.postPasswordHint(new PasswordHintRequest(this.email));\n await this.formPromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('masterPassSent'));\n if (this.onSuccessfulSubmit != null) {\n this.onSuccessfulSubmit();\n } else if (this.router != null) {\n this.router.navigate([this.successRoute]);\n }\n } catch { }\n }\n}\n","export class PasswordHintRequest {\n email: string;\n\n constructor(email: string) {\n this.email = email;\n }\n}\n","import { Directive, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { HashPurpose } from 'jslib-common/enums/hashPurpose';\n\n@Directive()\nexport class LockComponent implements OnInit {\n masterPassword: string = '';\n pin: string = '';\n showPassword: boolean = false;\n email: string;\n pinLock: boolean = false;\n webVaultHostname: string = '';\n formPromise: Promise;\n supportsBiometric: boolean;\n biometricLock: boolean;\n biometricText: string;\n\n protected successRoute: string = 'vault';\n protected onSuccessfulSubmit: () => void;\n\n private invalidPinAttempts = 0;\n private pinSet: [boolean, boolean];\n\n constructor(protected router: Router, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected messagingService: MessagingService,\n protected userService: UserService, protected cryptoService: CryptoService,\n protected storageService: StorageService, protected vaultTimeoutService: VaultTimeoutService,\n protected environmentService: EnvironmentService, protected stateService: StateService,\n protected apiService: ApiService) { }\n\n async ngOnInit() {\n this.pinSet = await this.vaultTimeoutService.isPinLockSet();\n this.pinLock = (this.pinSet[0] && this.vaultTimeoutService.pinProtectedKey != null) || this.pinSet[1];\n this.supportsBiometric = await this.platformUtilsService.supportsBiometric();\n this.biometricLock = await this.vaultTimeoutService.isBiometricLockSet() &&\n (await this.cryptoService.hasKeyStored('biometric') || !this.platformUtilsService.supportsSecureStorage());\n this.biometricText = await this.storageService.get(ConstantsService.biometricText);\n this.email = await this.userService.getEmail();\n let vaultUrl = this.environmentService.getWebVaultUrl();\n if (vaultUrl == null) {\n vaultUrl = 'https://bitwarden.com';\n }\n this.webVaultHostname = Utils.getHostname(vaultUrl);\n }\n\n async submit() {\n if (this.pinLock && (this.pin == null || this.pin === '')) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('pinRequired'));\n return;\n }\n if (!this.pinLock && (this.masterPassword == null || this.masterPassword === '')) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const kdf = await this.userService.getKdf();\n const kdfIterations = await this.userService.getKdfIterations();\n\n if (this.pinLock) {\n let failed = true;\n try {\n if (this.pinSet[0]) {\n const key = await this.cryptoService.makeKeyFromPin(this.pin, this.email, kdf, kdfIterations,\n this.vaultTimeoutService.pinProtectedKey);\n const encKey = await this.cryptoService.getEncKey(key);\n const protectedPin = await this.storageService.get(ConstantsService.protectedPin);\n const decPin = await this.cryptoService.decryptToUtf8(new EncString(protectedPin), encKey);\n failed = decPin !== this.pin;\n if (!failed) {\n await this.setKeyAndContinue(key);\n }\n } else {\n const key = await this.cryptoService.makeKeyFromPin(this.pin, this.email, kdf, kdfIterations);\n failed = false;\n await this.setKeyAndContinue(key);\n }\n } catch {\n failed = true;\n }\n\n if (failed) {\n this.invalidPinAttempts++;\n if (this.invalidPinAttempts >= 5) {\n this.messagingService.send('logout');\n return;\n }\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidPin'));\n }\n } else {\n const key = await this.cryptoService.makeKey(this.masterPassword, this.email, kdf, kdfIterations);\n const storedKeyHash = await this.cryptoService.getKeyHash();\n\n let passwordValid = false;\n\n if (storedKeyHash != null) {\n passwordValid = await this.cryptoService.compareAndUpdateKeyHash(this.masterPassword, key);\n } else {\n const request = new PasswordVerificationRequest();\n const serverKeyHash = await this.cryptoService.hashPassword(this.masterPassword, key,\n HashPurpose.ServerAuthorization);\n request.masterPasswordHash = serverKeyHash;\n try {\n this.formPromise = this.apiService.postAccountVerifyPassword(request);\n await this.formPromise;\n passwordValid = true;\n const localKeyHash = await this.cryptoService.hashPassword(this.masterPassword, key,\n HashPurpose.LocalAuthorization);\n await this.cryptoService.setKeyHash(localKeyHash);\n } catch { }\n }\n\n if (passwordValid) {\n if (this.pinSet[0]) {\n const protectedPin = await this.storageService.get(ConstantsService.protectedPin);\n const encKey = await this.cryptoService.getEncKey(key);\n const decPin = await this.cryptoService.decryptToUtf8(new EncString(protectedPin), encKey);\n const pinKey = await this.cryptoService.makePinKey(decPin, this.email, kdf, kdfIterations);\n this.vaultTimeoutService.pinProtectedKey = await this.cryptoService.encrypt(key.key, pinKey);\n }\n this.setKeyAndContinue(key);\n } else {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidMasterPassword'));\n }\n }\n }\n\n async logOut() {\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('logOutConfirmation'),\n this.i18nService.t('logOut'), this.i18nService.t('logOut'), this.i18nService.t('cancel'));\n if (confirmed) {\n this.messagingService.send('logout');\n }\n }\n\n async unlockBiometric() {\n if (!this.biometricLock) {\n return;\n }\n\n const success = (await this.cryptoService.getKey('biometric')) != null;\n\n if (success) {\n await this.doContinue();\n }\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById(this.pinLock ? 'pin' : 'masterPassword').focus();\n }\n\n private async setKeyAndContinue(key: SymmetricCryptoKey) {\n await this.cryptoService.setKey(key);\n this.doContinue();\n }\n\n private async doContinue() {\n this.vaultTimeoutService.biometricLocked = false;\n this.vaultTimeoutService.everBeenUnlocked = true;\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n this.messagingService.send('unlocked');\n if (this.onSuccessfulSubmit != null) {\n this.onSuccessfulSubmit();\n } else if (this.router != null) {\n this.router.navigate([this.successRoute]);\n }\n }\n}\n","import {\n Directive,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { Router } from '@angular/router';\n\nimport { AuthResult } from 'jslib-common/models/domain/authResult';\n\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nconst Keys = {\n rememberedEmail: 'rememberedEmail',\n rememberEmail: 'rememberEmail',\n};\n\n@Directive()\nexport class LoginComponent implements OnInit {\n @Input() email: string = '';\n @Input() rememberEmail = true;\n\n masterPassword: string = '';\n showPassword: boolean = false;\n formPromise: Promise;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n onSuccessfulLoginTwoFactorNavigate: () => Promise;\n\n protected twoFactorRoute = '2fa';\n protected successRoute = 'vault';\n\n constructor(protected authService: AuthService, protected router: Router,\n protected platformUtilsService: PlatformUtilsService, protected i18nService: I18nService,\n protected stateService: StateService, protected environmentService: EnvironmentService,\n protected passwordGenerationService: PasswordGenerationService,\n protected cryptoFunctionService: CryptoFunctionService, private storageService: StorageService) { }\n\n async ngOnInit() {\n if (this.email == null || this.email === '') {\n this.email = await this.storageService.get(Keys.rememberedEmail);\n if (this.email == null) {\n this.email = '';\n }\n }\n this.rememberEmail = await this.storageService.get(Keys.rememberEmail);\n if (this.rememberEmail == null) {\n this.rememberEmail = true;\n }\n if (Utils.isBrowser) {\n document.getElementById(this.email == null || this.email === '' ? 'email' : 'masterPassword').focus();\n }\n }\n\n async submit() {\n if (this.email == null || this.email === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('emailRequired'));\n return;\n }\n if (this.email.indexOf('@') === -1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidEmail'));\n return;\n }\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n try {\n this.formPromise = this.authService.logIn(this.email, this.masterPassword);\n const response = await this.formPromise;\n await this.storageService.save(Keys.rememberEmail, this.rememberEmail);\n if (this.rememberEmail) {\n await this.storageService.save(Keys.rememberedEmail, this.email);\n } else {\n await this.storageService.remove(Keys.rememberedEmail);\n }\n if (response.twoFactor) {\n if (this.onSuccessfulLoginTwoFactorNavigate != null) {\n this.onSuccessfulLoginTwoFactorNavigate();\n } else {\n this.router.navigate([this.twoFactorRoute]);\n }\n } else {\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n } catch { }\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById('masterPassword').focus();\n }\n\n async launchSsoBrowser(clientId: string, ssoRedirectUri: string) {\n // Generate necessary sso params\n const passwordOptions: any = {\n type: 'password',\n length: 64,\n uppercase: true,\n lowercase: true,\n numbers: true,\n special: false,\n };\n const state = await this.passwordGenerationService.generatePassword(passwordOptions);\n const ssoCodeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions);\n const codeVerifierHash = await this.cryptoFunctionService.hash(ssoCodeVerifier, 'sha256');\n const codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash);\n\n // Save sso params\n await this.storageService.save(ConstantsService.ssoStateKey, state);\n await this.storageService.save(ConstantsService.ssoCodeVerifierKey, ssoCodeVerifier);\n\n // Build URI\n const webUrl = this.environmentService.getWebVaultUrl() == null ? 'https://vault.bitwarden.com' :\n this.environmentService.getWebVaultUrl();\n\n // Launch browser\n this.platformUtilsService.launchUri(webUrl + '/#/sso?clientId=' + clientId +\n '&redirectUri=' + encodeURIComponent(ssoRedirectUri) +\n '&state=' + state + '&codeChallenge=' + codeChallenge);\n }\n}\n","export class DeleteRecoverRequest {\n email: string;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class TwoFactorRecoveryRequest extends PasswordVerificationRequest {\n recoveryCode: string;\n email: string;\n}\n","import { Router } from '@angular/router';\n\nimport { KeysRequest } from 'jslib-common/models/request/keysRequest';\nimport { ReferenceEventRequest } from 'jslib-common/models/request/referenceEventRequest';\nimport { RegisterRequest } from 'jslib-common/models/request/registerRequest';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\n\nimport { KdfType } from 'jslib-common/enums/kdfType';\n\nexport class RegisterComponent {\n name: string = '';\n email: string = '';\n masterPassword: string = '';\n confirmMasterPassword: string = '';\n hint: string = '';\n showPassword: boolean = false;\n formPromise: Promise;\n masterPasswordScore: number;\n referenceData: ReferenceEventRequest;\n showTerms = false;\n acceptPolicies: boolean = false;\n\n protected successRoute = 'login';\n private masterPasswordStrengthTimeout: any;\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected cryptoService: CryptoService,\n protected apiService: ApiService, protected stateService: StateService,\n protected platformUtilsService: PlatformUtilsService,\n protected passwordGenerationService: PasswordGenerationService) {\n this.showTerms = false;\n }\n\n get masterPasswordScoreWidth() {\n return this.masterPasswordScore == null ? 0 : (this.masterPasswordScore + 1) * 20;\n }\n\n get masterPasswordScoreColor() {\n switch (this.masterPasswordScore) {\n case 4:\n return 'success';\n case 3:\n return 'primary';\n case 2:\n return 'warning';\n default:\n return 'danger';\n }\n }\n\n get masterPasswordScoreText() {\n switch (this.masterPasswordScore) {\n case 4:\n return this.i18nService.t('strong');\n case 3:\n return this.i18nService.t('good');\n case 2:\n return this.i18nService.t('weak');\n default:\n return this.masterPasswordScore != null ? this.i18nService.t('weak') : null;\n }\n }\n\n async submit() {\n if (typeof crypto.subtle === 'undefined') {\n this.platformUtilsService.showToast('error', \"This browser requires HTTPS to use the web vault\",\n \"Check the Vaultwarden wiki for details on how to enable it\");\n return;\n }\n\n if (!this.acceptPolicies && this.showTerms) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('acceptPoliciesError'));\n return;\n }\n\n if (this.email == null || this.email === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('emailRequired'));\n return;\n }\n if (this.email.indexOf('@') === -1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidEmail'));\n return;\n }\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n if (this.masterPassword.length < 8) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassLength'));\n return;\n }\n if (this.masterPassword !== this.confirmMasterPassword) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassDoesntMatch'));\n return;\n }\n\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n if (strengthResult != null && strengthResult.score < 3) {\n const result = await this.platformUtilsService.showDialog(this.i18nService.t('weakMasterPasswordDesc'),\n this.i18nService.t('weakMasterPassword'), this.i18nService.t('yes'), this.i18nService.t('no'),\n 'warning');\n if (!result) {\n return;\n }\n }\n\n if (this.hint === this.masterPassword) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), this.i18nService.t('hintEqualsPassword'));\n return;\n }\n\n this.name = this.name === '' ? null : this.name;\n this.email = this.email.trim().toLowerCase();\n const kdf = KdfType.PBKDF2_SHA256;\n const useLowerKdf = this.platformUtilsService.isIE();\n const kdfIterations = useLowerKdf ? 10000 : 100000;\n const key = await this.cryptoService.makeKey(this.masterPassword, this.email, kdf, kdfIterations);\n const encKey = await this.cryptoService.makeEncKey(key);\n const hashedPassword = await this.cryptoService.hashPassword(this.masterPassword, key);\n const keys = await this.cryptoService.makeKeyPair(encKey[0]);\n const request = new RegisterRequest(this.email, this.name, hashedPassword,\n this.hint, encKey[1].encryptedString, kdf, kdfIterations, this.referenceData);\n request.keys = new KeysRequest(keys[0], keys[1].encryptedString);\n const orgInvite = await this.stateService.get('orgInvitation');\n console.log(orgInvite);\n if (orgInvite != null && orgInvite.token != null && orgInvite.organizationUserId != null) {\n request.token = orgInvite.token;\n request.organizationUserId = orgInvite.organizationUserId;\n }\n\n try {\n this.formPromise = this.apiService.postRegister(request);\n await this.formPromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('newAccountCreated'));\n this.router.navigate([this.successRoute], { queryParams: { email: this.email } });\n } catch { }\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? 'masterPasswordRetype' : 'masterPassword').focus();\n }\n\n updatePasswordStrength() {\n if (this.masterPasswordStrengthTimeout != null) {\n clearTimeout(this.masterPasswordStrengthTimeout);\n }\n this.masterPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(this.email.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/));\n }\n if (this.name != null && this.name !== '') {\n userInput = userInput.concat(this.name.trim().toLowerCase().split(' '));\n }\n return userInput;\n }\n}\n","import { KeysRequest } from './keysRequest';\nimport { ReferenceEventRequest } from './referenceEventRequest';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class RegisterRequest {\n name: string;\n email: string;\n masterPasswordHash: string;\n masterPasswordHint: string;\n key: string;\n keys: KeysRequest;\n token: string;\n organizationUserId: string;\n kdf: KdfType;\n kdfIterations: number;\n referenceData: ReferenceEventRequest;\n\n constructor(email: string, name: string, masterPasswordHash: string, masterPasswordHint: string, key: string,\n kdf: KdfType, kdfIterations: number, referenceData: ReferenceEventRequest) {\n this.name = name;\n this.email = email;\n this.masterPasswordHash = masterPasswordHash;\n this.masterPasswordHint = masterPasswordHint ? masterPasswordHint : null;\n this.key = key;\n this.kdf = kdf;\n this.kdfIterations = kdfIterations;\n this.referenceData = referenceData;\n }\n}\n","export class ReferenceEventRequest {\n id: string;\n layout: string;\n flow: string;\n}\n","import { Directive } from '@angular/core';\nimport {\n ActivatedRoute,\n Router\n} from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { KeysRequest } from 'jslib-common/models/request/keysRequest';\nimport { SetPasswordRequest } from 'jslib-common/models/request/setPasswordRequest';\n\nimport { ChangePasswordComponent as BaseChangePasswordComponent } from './change-password.component';\n\nimport { HashPurpose } from 'jslib-common/enums/hashPurpose';\nimport { KdfType } from 'jslib-common/enums/kdfType';\n\n@Directive()\nexport class SetPasswordComponent extends BaseChangePasswordComponent {\n syncLoading: boolean = true;\n showPassword: boolean = false;\n hint: string = '';\n identifier: string = null;\n\n onSuccessfulChangePassword: () => Promise;\n successRoute = 'vault';\n\n constructor(i18nService: I18nService, cryptoService: CryptoService, messagingService: MessagingService,\n userService: UserService, passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService, private router: Router,\n private apiService: ApiService, private syncService: SyncService, private route: ActivatedRoute) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService);\n }\n\n async ngOnInit() {\n await this.syncService.fullSync(true);\n this.syncLoading = false;\n\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n }\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n\n super.ngOnInit();\n }\n\n async setupSubmitActions() {\n this.kdf = KdfType.PBKDF2_SHA256;\n const useLowerKdf = this.platformUtilsService.isIE();\n this.kdfIterations = useLowerKdf ? 10000 : 100000;\n return true;\n }\n\n async performSubmitActions(masterPasswordHash: string, key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]) {\n const request = new SetPasswordRequest();\n request.masterPasswordHash = masterPasswordHash;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHint = this.hint;\n request.kdf = this.kdf;\n request.kdfIterations = this.kdfIterations;\n request.orgIdentifier = this.identifier;\n\n const keys = await this.cryptoService.makeKeyPair(encKey[0]);\n request.keys = new KeysRequest(keys[0], keys[1].encryptedString);\n\n try {\n this.formPromise = this.apiService.setPassword(request);\n await this.formPromise;\n\n await this.userService.setInformation(await this.userService.getUserId(), await this.userService.getEmail(),\n this.kdf, this.kdfIterations);\n await this.cryptoService.setKey(key);\n await this.cryptoService.setEncKey(encKey[1].encryptedString);\n await this.cryptoService.setEncPrivateKey(keys[1].encryptedString);\n\n const localKeyHash = await this.cryptoService.hashPassword(this.masterPassword, key,\n HashPurpose.LocalAuthorization);\n await this.cryptoService.setKeyHash(localKeyHash);\n\n if (this.onSuccessfulChangePassword != null) {\n this.onSuccessfulChangePassword();\n } else {\n this.router.navigate([this.successRoute]);\n }\n } catch {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? 'masterPasswordRetype' : 'masterPassword').focus();\n }\n}\n","import { KeysRequest } from './keysRequest';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class SetPasswordRequest {\n masterPasswordHash: string;\n key: string;\n masterPasswordHint: string;\n keys: KeysRequest;\n kdf: KdfType;\n kdfIterations: number;\n orgIdentifier: string;\n}\n","import {\n Directive,\n EventEmitter,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n@Directive()\nexport class TwoFactorOptionsComponent implements OnInit {\n @Output() onProviderSelected = new EventEmitter();\n @Output() onRecoverSelected = new EventEmitter();\n\n providers: any[] = [];\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected win: Window) { }\n\n ngOnInit() {\n this.providers = this.authService.getSupportedTwoFactorProviders(this.win);\n }\n\n choose(p: any) {\n this.onProviderSelected.emit(p.type);\n }\n\n recover() {\n this.platformUtilsService.launchUri('https://help.bitwarden.com/article/lost-two-step-device/');\n this.onRecoverSelected.emit();\n }\n}\n","import {\n Component,\n ComponentFactoryResolver,\n EventEmitter,\n OnDestroy,\n Output,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\n\n@Component({\n selector: 'app-modal',\n template: ``,\n})\nexport class ModalComponent implements OnDestroy {\n @Output() onClose = new EventEmitter();\n @Output() onClosed = new EventEmitter();\n @Output() onShow = new EventEmitter();\n @Output() onShown = new EventEmitter();\n @ViewChild('container', { read: ViewContainerRef, static: true }) container: ViewContainerRef;\n parentContainer: ViewContainerRef = null;\n fade: boolean = true;\n\n constructor(protected componentFactoryResolver: ComponentFactoryResolver,\n protected messagingService: MessagingService) { }\n\n ngOnDestroy() {\n document.body.classList.remove('modal-open');\n document.body.removeChild(document.querySelector('.modal-backdrop'));\n }\n\n show(type: Type, parentContainer: ViewContainerRef, fade: boolean = true,\n setComponentParameters: (component: T) => void = null): T {\n this.onShow.emit();\n this.messagingService.send('modalShow');\n this.parentContainer = parentContainer;\n this.fade = fade;\n\n document.body.classList.add('modal-open');\n const backdrop = document.createElement('div');\n backdrop.className = 'modal-backdrop' + (this.fade ? ' fade' : '');\n document.body.appendChild(backdrop);\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(type);\n const componentRef = this.container.createComponent(factory);\n if (setComponentParameters != null) {\n setComponentParameters(componentRef.instance);\n }\n\n document.querySelector('.modal-dialog').addEventListener('click', (e: Event) => {\n e.stopPropagation();\n });\n\n const modals = Array.from(document.querySelectorAll('.modal, .modal *[data-dismiss=\"modal\"]'));\n for (const closeElement of modals) {\n closeElement.addEventListener('click', event => {\n this.close();\n });\n }\n\n this.onShown.emit();\n this.messagingService.send('modalShown');\n return componentRef.instance;\n }\n\n close() {\n this.onClose.emit();\n this.messagingService.send('modalClose');\n this.onClosed.emit();\n this.messagingService.send('modalClosed');\n if (this.parentContainer != null) {\n this.parentContainer.clear();\n }\n }\n}\n","import { Directive, OnDestroy, OnInit } from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorEmailRequest } from 'jslib-common/models/request/twoFactorEmailRequest';\n\nimport { AuthResult } from 'jslib-common/models/domain';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { TwoFactorProviders } from 'jslib-common/services/auth.service';\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport * as DuoWebSDK from 'duo_web_sdk';\nimport { WebAuthn } from 'jslib-common/misc/webauthn';\n\n@Directive()\nexport class TwoFactorComponent implements OnInit, OnDestroy {\n token: string = '';\n remember: boolean = false;\n webAuthnReady: boolean = false;\n webAuthnNewTab: boolean = false;\n providers = TwoFactorProviders;\n providerType = TwoFactorProviderType;\n selectedProviderType: TwoFactorProviderType = TwoFactorProviderType.Authenticator;\n webAuthnSupported: boolean = false;\n webAuthn: WebAuthn = null;\n title: string = '';\n twoFactorEmail: string = null;\n formPromise: Promise;\n emailPromise: Promise;\n identifier: string = null;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n\n protected loginRoute = 'login';\n protected successRoute = 'vault';\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected apiService: ApiService,\n protected platformUtilsService: PlatformUtilsService, protected win: Window,\n protected environmentService: EnvironmentService, protected stateService: StateService,\n protected storageService: StorageService, protected route: ActivatedRoute) {\n this.webAuthnSupported = this.platformUtilsService.supportsWebAuthn(win);\n }\n\n async ngOnInit() {\n if (!this.authing || this.authService.twoFactorProvidersData == null) {\n this.router.navigate([this.loginRoute]);\n return;\n }\n\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n }\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n\n if (this.needsLock) {\n this.successRoute = 'lock';\n }\n\n if (this.win != null && this.webAuthnSupported) {\n let webVaultUrl = this.environmentService.getWebVaultUrl();\n if (webVaultUrl == null) {\n webVaultUrl = 'https://vault.bitwarden.com';\n }\n this.webAuthn = new WebAuthn(this.win, webVaultUrl, this.webAuthnNewTab, this.platformUtilsService,\n this.i18nService, (token: string) => {\n this.token = token;\n this.submit();\n }, (error: string) => {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), error);\n }, (info: string) => {\n if (info === 'ready') {\n this.webAuthnReady = true;\n }\n }\n );\n }\n\n this.selectedProviderType = this.authService.getDefaultTwoFactorProvider(this.webAuthnSupported);\n await this.init();\n }\n\n ngOnDestroy(): void {\n this.cleanupWebAuthn();\n this.webAuthn = null;\n }\n\n async init() {\n if (this.selectedProviderType == null) {\n this.title = this.i18nService.t('loginUnavailable');\n return;\n }\n\n this.cleanupWebAuthn();\n this.title = (TwoFactorProviders as any)[this.selectedProviderType].name;\n const providerData = this.authService.twoFactorProvidersData.get(this.selectedProviderType);\n switch (this.selectedProviderType) {\n case TwoFactorProviderType.WebAuthn:\n if (!this.webAuthnNewTab) {\n setTimeout(() => {\n this.authWebAuthn();\n }, 500);\n }\n break;\n case TwoFactorProviderType.Duo:\n case TwoFactorProviderType.OrganizationDuo:\n setTimeout(() => {\n DuoWebSDK.init({\n iframe: undefined,\n host: providerData.Host,\n sig_request: providerData.Signature,\n submit_callback: async (f: HTMLFormElement) => {\n const sig = f.querySelector('input[name=\"sig_response\"]') as HTMLInputElement;\n if (sig != null) {\n this.token = sig.value;\n await this.submit();\n }\n },\n });\n }, 0);\n break;\n case TwoFactorProviderType.Email:\n this.twoFactorEmail = providerData.Email;\n if (this.authService.twoFactorProvidersData.size > 1) {\n await this.sendEmail(false);\n }\n break;\n default:\n break;\n }\n }\n\n async submit() {\n if (this.token == null || this.token === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('verificationCodeRequired'));\n return;\n }\n\n if (this.selectedProviderType === TwoFactorProviderType.WebAuthn) {\n if (this.webAuthn != null) {\n this.webAuthn.stop();\n } else {\n return;\n }\n } else if (this.selectedProviderType === TwoFactorProviderType.Email ||\n this.selectedProviderType === TwoFactorProviderType.Authenticator) {\n this.token = this.token.replace(' ', '').trim();\n }\n\n try {\n await this.doSubmit();\n } catch {\n if (this.selectedProviderType === TwoFactorProviderType.WebAuthn && this.webAuthn != null) {\n this.webAuthn.start();\n }\n }\n }\n\n async doSubmit() {\n this.formPromise = this.authService.logInTwoFactor(this.selectedProviderType, this.token, this.remember);\n const response: AuthResult = await this.formPromise;\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n if (response.resetMasterPassword) {\n this.successRoute = 'set-password';\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute], {\n queryParams: {\n identifier: this.identifier,\n },\n });\n }\n }\n\n async sendEmail(doToast: boolean) {\n if (this.selectedProviderType !== TwoFactorProviderType.Email) {\n return;\n }\n\n if (this.emailPromise != null) {\n return;\n }\n\n try {\n const request = new TwoFactorEmailRequest(this.authService.email, this.authService.masterPasswordHash);\n this.emailPromise = this.apiService.postTwoFactorEmail(request);\n await this.emailPromise;\n if (doToast) {\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t('verificationCodeEmailSent', this.twoFactorEmail));\n }\n } catch { }\n\n this.emailPromise = null;\n }\n\n authWebAuthn() {\n const providerData = this.authService.twoFactorProvidersData.get(this.selectedProviderType);\n\n if (!this.webAuthnSupported || this.webAuthn == null) {\n return;\n }\n\n this.webAuthn.init(providerData);\n }\n\n private cleanupWebAuthn() {\n if (this.webAuthn != null) {\n this.webAuthn.stop();\n this.webAuthn.cleanup();\n }\n }\n\n get authing(): boolean {\n return this.authService.authingWithPassword() || this.authService.authingWithSso() || this.authService.authingWithApiKey();\n }\n\n get needsLock(): boolean {\n return this.authService.authingWithSso() || this.authService.authingWithApiKey();\n }\n}\n","import { DeviceType } from '../../enums/deviceType';\n\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nexport class DeviceRequest {\n type: DeviceType;\n name: string;\n identifier: string;\n pushToken?: string;\n\n constructor(appId: string, platformUtilsService: PlatformUtilsService) {\n this.type = platformUtilsService.getDevice();\n this.name = platformUtilsService.getDeviceString();\n this.identifier = appId;\n this.pushToken = null;\n }\n}\n","export class PreloginRequest {\n email: string;\n\n constructor(email: string) {\n this.email = email;\n }\n}\n","import { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nimport { DeviceRequest } from './deviceRequest';\n\nexport class TokenRequest {\n email: string;\n masterPasswordHash: string;\n code: string;\n codeVerifier: string;\n redirectUri: string;\n clientId: string;\n clientSecret: string;\n token: string;\n provider: TwoFactorProviderType;\n remember: boolean;\n device?: DeviceRequest;\n\n constructor(credentials: string[], codes: string[], clientIdClientSecret: string[], provider: TwoFactorProviderType,\n token: string, remember: boolean, device?: DeviceRequest) {\n if (credentials != null && credentials.length > 1) {\n this.email = credentials[0];\n this.masterPasswordHash = credentials[1];\n } else if (codes != null && codes.length > 2) {\n this.code = codes[0];\n this.codeVerifier = codes[1];\n this.redirectUri = codes[2];\n } else if (clientIdClientSecret != null && clientIdClientSecret.length > 1) {\n this.clientId = clientIdClientSecret[0];\n this.clientSecret = clientIdClientSecret[1];\n }\n this.token = token;\n this.provider = provider;\n this.remember = remember;\n this.device = device != null ? device : null;\n }\n\n toIdentityToken(clientId: string) {\n const obj: any = {\n scope: 'api offline_access',\n client_id: clientId,\n };\n\n if (this.clientSecret != null) {\n obj.scope = clientId.startsWith('organization') ? 'api.organization' : 'api';\n obj.grant_type = 'client_credentials';\n obj.client_secret = this.clientSecret;\n } else if (this.masterPasswordHash != null && this.email != null) {\n obj.grant_type = 'password';\n obj.username = this.email;\n obj.password = this.masterPasswordHash;\n } else if (this.code != null && this.codeVerifier != null && this.redirectUri != null) {\n obj.grant_type = 'authorization_code';\n obj.code = this.code;\n obj.code_verifier = this.codeVerifier;\n obj.redirect_uri = this.redirectUri;\n } else {\n throw new Error('must provide credentials or codes');\n }\n\n if (this.device) {\n obj.deviceType = this.device.type;\n obj.deviceIdentifier = this.device.identifier;\n obj.deviceName = this.device.name;\n // no push tokens for browser apps yet\n // obj.devicePushToken = this.device.pushToken;\n }\n\n if (this.token && this.provider != null) {\n obj.twoFactorToken = this.token;\n obj.twoFactorProvider = this.provider;\n obj.twoFactorRemember = this.remember ? '1' : '0';\n }\n\n return obj;\n }\n\n alterIdentityTokenHeaders(headers: Headers) {\n if (this.clientSecret == null && this.masterPasswordHash != null && this.email != null) {\n headers.set('Auth-Email', this.email);\n }\n }\n}\n","import { I18nService } from '../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\n\nexport class WebAuthn {\n private iframe: HTMLIFrameElement = null;\n private connectorLink: HTMLAnchorElement;\n private parseFunction = this.parseMessage.bind(this);\n\n constructor(private win: Window, private webVaultUrl: string, private webAuthnNewTab: boolean,\n private platformUtilsService: PlatformUtilsService, private i18nService: I18nService,\n private successCallback: Function, private errorCallback: Function, private infoCallback: Function) {\n this.connectorLink = win.document.createElement('a');\n }\n\n init(data: any): void {\n const params = new URLSearchParams({\n data: this.base64Encode(JSON.stringify(data)),\n parent: encodeURIComponent(this.win.document.location.href),\n btnText: encodeURIComponent(this.i18nService.t('webAuthnAuthenticate')),\n v: '1',\n });\n\n if (this.webAuthnNewTab) {\n // Firefox fallback which opens the webauthn page in a new tab\n params.append('locale', this.i18nService.translationLocale);\n this.platformUtilsService.launchUri(`${this.webVaultUrl}/webauthn-fallback-connector.html?${params}`);\n } else {\n this.connectorLink.href = `${this.webVaultUrl}/webauthn-connector.html?${params}`;\n this.iframe = this.win.document.getElementById('webauthn_iframe') as HTMLIFrameElement;\n this.iframe.allow = 'publickey-credentials-get ' + new URL(this.webVaultUrl).origin;\n this.iframe.src = this.connectorLink.href;\n\n this.win.addEventListener('message', this.parseFunction, false);\n }\n }\n\n stop() {\n this.sendMessage('stop');\n }\n\n start() {\n this.sendMessage('start');\n }\n\n sendMessage(message: any) {\n if (!this.iframe || !this.iframe.src || !this.iframe.contentWindow) {\n return;\n }\n\n this.iframe.contentWindow.postMessage(message, this.iframe.src);\n }\n\n base64Encode(str: string): string {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => {\n return String.fromCharCode(('0x' + p1) as any);\n }));\n }\n\n cleanup() {\n this.win.removeEventListener('message', this.parseFunction, false);\n }\n\n private parseMessage(event: MessageEvent) {\n if (!this.validMessage(event)) {\n return;\n }\n\n const parts: string[] = event.data.split('|');\n if (parts[0] === 'success' && this.successCallback) {\n this.successCallback(parts[1]);\n } else if (parts[0] === 'error' && this.errorCallback) {\n this.errorCallback(parts[1]);\n } else if (parts[0] === 'info' && this.infoCallback) {\n this.infoCallback(parts[1]);\n }\n }\n\n private validMessage(event: MessageEvent) {\n if (event.origin == null || event.origin === '' || event.origin !== (this.connectorLink as any).origin ||\n event.data == null || typeof (event.data) !== 'string') {\n return false;\n }\n\n return event.data.indexOf('success|') === 0 || event.data.indexOf('error|') === 0 ||\n event.data.indexOf('info|') === 0;\n }\n}\n","export class VerifyEmailRequest {\n userId: string;\n token: string;\n\n constructor(userId: string, token: string) {\n this.userId = userId;\n this.token = token;\n }\n}\n","export class VerifyDeleteRecoverRequest {\n userId: string;\n token: string;\n\n constructor(userId: string, token: string) {\n this.userId = userId;\n this.token = token;\n }\n}\n","import { EventType } from '../../enums/eventType';\n\nexport class EventView {\n message: string;\n humanReadableMessage: string;\n appIcon: string;\n appName: string;\n userId: string;\n userName: string;\n userEmail: string;\n date: string;\n ip: string;\n type: EventType;\n\n constructor(data: Required) {\n this.message = data.message;\n this.humanReadableMessage = data.humanReadableMessage;\n this.appIcon = data.appIcon;\n this.appName = data.appName;\n this.userId = data.userId;\n this.userName = data.userName;\n this.userEmail = data.userEmail;\n this.date = data.date;\n this.ip = data.ip;\n this.type = data.type;\n }\n}\n","import { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nexport class GroupRequest {\n name: string;\n accessAll: boolean;\n externalId: string;\n collections: SelectionReadOnlyRequest[] = [];\n}\n","export class OrganizationUserConfirmRequest {\n key: string;\n}\n","type OrganizationUserBulkRequestEntry = {\n id: string;\n key: string;\n};\n\nexport class OrganizationUserBulkConfirmRequest {\n keys: OrganizationUserBulkRequestEntry[];\n\n constructor(keys: OrganizationUserBulkRequestEntry[]) {\n this.keys = keys;\n }\n}\n","export class OrganizationUserResetPasswordRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","import { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class OrganizationUserInviteRequest {\n emails: string[] = [];\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n permissions: PermissionsApi;\n}\n","import { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class OrganizationUserUpdateRequest {\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n permissions: PermissionsApi;\n}\n","export class OrganizationUserUpdateGroupsRequest {\n groupIds: string[] = [];\n}\n","export abstract class AppIdService {\n getAppId: () => Promise;\n getAnonymousAppId: () => Promise;\n}\n","import { LogLevelType } from '../enums/logLevelType';\n\nexport abstract class LogService {\n debug: (message: string) => void;\n info: (message: string) => void;\n warning: (message: string) => void;\n error: (message: string) => void;\n write: (level: LogLevelType, message: string) => void;\n time: (label: string) => void;\n timeEnd: (label: string) => [number, number];\n}\n","import { PolicyType } from '../../enums/policyType';\n\nexport class PolicyRequest {\n type: PolicyType;\n enabled: boolean;\n data: any;\n}\n","import { OrganizationKeysRequest } from './organizationKeysRequest';\n\nexport class OrganizationUpdateRequest {\n name: string;\n identifier: string;\n businessName: string;\n billingEmail: string;\n keys: OrganizationKeysRequest;\n}\n","export enum TransactionType {\n Charge = 0,\n Credit = 1,\n PromotionalCredit = 2,\n ReferralCredit = 3,\n Refund = 4,\n}\n","export class VerifyBankRequest {\n amount1: number;\n amount2: number;\n}\n","export class BitPayInvoiceRequest {\n userId: string;\n organizationId: string;\n credit: boolean;\n amount: number;\n returnUrl: string;\n name: string;\n email: string;\n}\n","import { PaymentMethodType } from '../../enums/paymentMethodType';\nimport { OrganizationTaxInfoUpdateRequest } from '../request/organizationTaxInfoUpdateRequest';\n\nexport class PaymentRequest extends OrganizationTaxInfoUpdateRequest {\n paymentMethodType: PaymentMethodType;\n paymentToken: string;\n}\n","import { PaymentMethodType } from '../../enums/paymentMethodType';\nimport { PlanType } from '../../enums/planType';\n\nimport { OrganizationKeysRequest } from './organizationKeysRequest';\n\nexport class OrganizationCreateRequest {\n name: string;\n businessName: string;\n billingEmail: string;\n planType: PlanType;\n key: string;\n keys: OrganizationKeysRequest;\n paymentMethodType: PaymentMethodType;\n paymentToken: string;\n additionalSeats: number;\n additionalStorageGb: number;\n premiumAccessAddon: boolean;\n collectionName: string;\n taxIdNumber: string;\n billingAddressLine1: string;\n billingAddressLine2: string;\n billingAddressCity: string;\n billingAddressState: string;\n billingAddressPostalCode: string;\n billingAddressCountry: string;\n}\n","import { PlanType } from '../../enums/planType';\n\nimport { OrganizationKeysRequest } from './organizationKeysRequest';\n\nexport class OrganizationUpgradeRequest {\n businessName: string;\n planType: PlanType;\n additionalSeats: number;\n additionalStorageGb: number;\n premiumAccessAddon: boolean;\n billingAddressCountry: string;\n billingAddressPostalCode: string;\n keys: OrganizationKeysRequest;\n}\n","export class SeatRequest {\n seatAdjustment: number;\n}\n","export class StorageRequest {\n storageGbAdjustment: number;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorDuoRequest extends PasswordVerificationRequest {\n integrationKey: string;\n secretKey: string;\n host: string;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class TwoFactorProviderRequest extends PasswordVerificationRequest {\n type: TwoFactorProviderType;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorAuthenticatorRequest extends PasswordVerificationRequest {\n token: string;\n key: string;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorEmailRequest extends PasswordVerificationRequest {\n token: string;\n email: string;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorWebAuthnDeleteRequest extends PasswordVerificationRequest {\n id: number;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorWebAuthnRequest extends PasswordVerificationRequest {\n deviceResponse: PublicKeyCredential;\n name: string;\n id: number;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorYubioOtpRequest extends PasswordVerificationRequest {\n key1: string;\n key2: string;\n key3: string;\n key4: string;\n key5: string;\n nfc: boolean;\n}\n","import {\n Directive,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { ExportService } from 'jslib-common/abstractions/export.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { EventType } from 'jslib-common/enums/eventType';\nimport { HashPurpose } from 'jslib-common/enums/hashPurpose';\n\n@Directive()\nexport class ExportComponent {\n @Output() onSaved = new EventEmitter();\n\n formPromise: Promise;\n masterPassword: string;\n format: 'json' | 'encrypted_json' | 'csv' = 'json';\n showPassword = false;\n\n constructor(protected cryptoService: CryptoService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected exportService: ExportService,\n protected eventService: EventService, protected win: Window) { }\n\n get encryptedFormat() {\n return this.format === 'encrypted_json';\n }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidMasterPassword'));\n return;\n }\n\n const acceptedWarning = await this.warningDialog();\n if (!acceptedWarning) {\n return;\n }\n\n const passwordValid = await this.cryptoService.compareAndUpdateKeyHash(this.masterPassword, null);\n if (passwordValid) {\n try {\n this.formPromise = this.getExportData();\n const data = await this.formPromise;\n this.downloadFile(data);\n this.saved();\n await this.collectEvent();\n } catch { }\n } else {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidMasterPassword'));\n }\n }\n\n async warningDialog() {\n if (this.encryptedFormat) {\n return await this.platformUtilsService.showDialog(\n '

' + this.i18nService.t('encExportKeyWarningDesc') +\n '

' + this.i18nService.t('encExportAccountWarningDesc'),\n this.i18nService.t('confirmVaultExport'), this.i18nService.t('exportVault'),\n this.i18nService.t('cancel'), 'warning',\n true);\n } else {\n return await this.platformUtilsService.showDialog(\n this.i18nService.t('exportWarningDesc'),\n this.i18nService.t('confirmVaultExport'), this.i18nService.t('exportVault'),\n this.i18nService.t('cancel'), 'warning');\n }\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById('masterPassword').focus();\n }\n\n protected saved() {\n this.onSaved.emit();\n }\n\n protected getExportData() {\n return this.exportService.getExport(this.format);\n }\n\n protected getFileName(prefix?: string) {\n let extension = this.format;\n if (this.format === 'encrypted_json') {\n if (prefix == null) {\n prefix = 'encrypted';\n } else {\n prefix = 'encrypted_' + prefix;\n }\n extension = 'json';\n }\n return this.exportService.getFileName(prefix, extension);\n }\n\n protected async collectEvent(): Promise {\n await this.eventService.collect(EventType.User_ClientExportedVault);\n }\n\n private downloadFile(csv: string): void {\n const fileName = this.getFileName();\n this.platformUtilsService.saveFile(this.win, csv, { type: 'text/plain' }, fileName);\n }\n}\n","export class AttachmentRequest {\n fileName: string;\n key: string;\n fileSize: number;\n adminRequest: boolean;\n}\n","import {\n CdkDragDrop,\n moveItemInArray,\n} from '@angular/cdk/drag-drop';\nimport {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { CipherRepromptType } from 'jslib-common/enums/cipherRepromptType';\nimport { CipherType } from 'jslib-common/enums/cipherType';\nimport { EventType } from 'jslib-common/enums/eventType';\nimport { FieldType } from 'jslib-common/enums/fieldType';\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { SecureNoteType } from 'jslib-common/enums/secureNoteType';\nimport { UriMatchType } from 'jslib-common/enums/uriMatchType';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\n\nimport { CardView } from 'jslib-common/models/view/cardView';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\nimport { FieldView } from 'jslib-common/models/view/fieldView';\nimport { FolderView } from 'jslib-common/models/view/folderView';\nimport { IdentityView } from 'jslib-common/models/view/identityView';\nimport { LoginUriView } from 'jslib-common/models/view/loginUriView';\nimport { LoginView } from 'jslib-common/models/view/loginView';\nimport { SecureNoteView } from 'jslib-common/models/view/secureNoteView';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Directive()\nexport class AddEditComponent implements OnInit {\n @Input() cloneMode: boolean = false;\n @Input() folderId: string = null;\n @Input() cipherId: string;\n @Input() type: CipherType;\n @Input() collectionIds: string[];\n @Input() organizationId: string = null;\n @Output() onSavedCipher = new EventEmitter();\n @Output() onDeletedCipher = new EventEmitter();\n @Output() onRestoredCipher = new EventEmitter();\n @Output() onCancelled = new EventEmitter();\n @Output() onEditAttachments = new EventEmitter();\n @Output() onShareCipher = new EventEmitter();\n @Output() onEditCollections = new EventEmitter();\n @Output() onGeneratePassword = new EventEmitter();\n\n editMode: boolean = false;\n cipher: CipherView;\n folders: FolderView[];\n collections: CollectionView[] = [];\n title: string;\n formPromise: Promise;\n deletePromise: Promise;\n restorePromise: Promise;\n checkPasswordPromise: Promise;\n showPassword: boolean = false;\n showCardNumber: boolean = false;\n showCardCode: boolean = false;\n cipherType = CipherType;\n fieldType = FieldType;\n addFieldType: FieldType = FieldType.Text;\n typeOptions: any[];\n cardBrandOptions: any[];\n cardExpMonthOptions: any[];\n identityTitleOptions: any[];\n addFieldTypeOptions: any[];\n uriMatchOptions: any[];\n ownershipOptions: any[] = [];\n autofillOnPageLoadOptions: any[];\n currentDate = new Date();\n allowPersonal = true;\n reprompt: boolean = false;\n\n protected writeableCollections: CollectionView[];\n private previousCipherId: string;\n\n constructor(protected cipherService: CipherService, protected folderService: FolderService,\n protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected auditService: AuditService, protected stateService: StateService,\n protected userService: UserService, protected collectionService: CollectionService,\n protected messagingService: MessagingService, protected eventService: EventService,\n protected policyService: PolicyService) {\n this.typeOptions = [\n { name: i18nService.t('typeLogin'), value: CipherType.Login },\n { name: i18nService.t('typeCard'), value: CipherType.Card },\n { name: i18nService.t('typeIdentity'), value: CipherType.Identity },\n { name: i18nService.t('typeSecureNote'), value: CipherType.SecureNote },\n ];\n this.cardBrandOptions = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: 'Visa', value: 'Visa' },\n { name: 'Mastercard', value: 'Mastercard' },\n { name: 'American Express', value: 'Amex' },\n { name: 'Discover', value: 'Discover' },\n { name: 'Diners Club', value: 'Diners Club' },\n { name: 'JCB', value: 'JCB' },\n { name: 'Maestro', value: 'Maestro' },\n { name: 'UnionPay', value: 'UnionPay' },\n { name: i18nService.t('other'), value: 'Other' },\n ];\n this.cardExpMonthOptions = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: '01 - ' + i18nService.t('january'), value: '1' },\n { name: '02 - ' + i18nService.t('february'), value: '2' },\n { name: '03 - ' + i18nService.t('march'), value: '3' },\n { name: '04 - ' + i18nService.t('april'), value: '4' },\n { name: '05 - ' + i18nService.t('may'), value: '5' },\n { name: '06 - ' + i18nService.t('june'), value: '6' },\n { name: '07 - ' + i18nService.t('july'), value: '7' },\n { name: '08 - ' + i18nService.t('august'), value: '8' },\n { name: '09 - ' + i18nService.t('september'), value: '9' },\n { name: '10 - ' + i18nService.t('october'), value: '10' },\n { name: '11 - ' + i18nService.t('november'), value: '11' },\n { name: '12 - ' + i18nService.t('december'), value: '12' },\n ];\n this.identityTitleOptions = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: i18nService.t('mr'), value: i18nService.t('mr') },\n { name: i18nService.t('mrs'), value: i18nService.t('mrs') },\n { name: i18nService.t('ms'), value: i18nService.t('ms') },\n { name: i18nService.t('dr'), value: i18nService.t('dr') },\n ];\n this.addFieldTypeOptions = [\n { name: i18nService.t('cfTypeText'), value: FieldType.Text },\n { name: i18nService.t('cfTypeHidden'), value: FieldType.Hidden },\n { name: i18nService.t('cfTypeBoolean'), value: FieldType.Boolean },\n ];\n this.uriMatchOptions = [\n { name: i18nService.t('defaultMatchDetection'), value: null },\n { name: i18nService.t('baseDomain'), value: UriMatchType.Domain },\n { name: i18nService.t('host'), value: UriMatchType.Host },\n { name: i18nService.t('startsWith'), value: UriMatchType.StartsWith },\n { name: i18nService.t('regEx'), value: UriMatchType.RegularExpression },\n { name: i18nService.t('exact'), value: UriMatchType.Exact },\n { name: i18nService.t('never'), value: UriMatchType.Never },\n ];\n this.autofillOnPageLoadOptions = [\n { name: i18nService.t('autoFillOnPageLoadUseDefault'), value: null },\n { name: i18nService.t('autoFillOnPageLoadYes'), value: true },\n { name: i18nService.t('autoFillOnPageLoadNo'), value: false },\n ];\n }\n\n async ngOnInit() {\n await this.init();\n }\n\n async init() {\n const policies = await this.policyService.getAll(PolicyType.PersonalOwnership);\n const myEmail = await this.userService.getEmail();\n this.ownershipOptions.push({ name: myEmail, value: null });\n const orgs = await this.userService.getAllOrganizations();\n orgs.sort(Utils.getSortFunction(this.i18nService, 'name')).forEach(o => {\n if (o.enabled && o.status === OrganizationUserStatusType.Confirmed) {\n this.ownershipOptions.push({ name: o.name, value: o.id });\n if (policies != null && o.usePolicies && !o.canManagePolicies && this.allowPersonal) {\n for (const policy of policies) {\n if (policy.organizationId === o.id && policy.enabled) {\n this.allowPersonal = false;\n this.ownershipOptions.splice(0, 1);\n // Default to the organization who owns this policy for now (if necessary)\n if (this.organizationId == null) {\n this.organizationId = o.id;\n }\n break;\n }\n }\n }\n }\n });\n this.writeableCollections = await this.loadCollections();\n }\n\n async load() {\n this.editMode = this.cipherId != null;\n if (this.editMode) {\n this.editMode = true;\n if (this.cloneMode) {\n this.cloneMode = true;\n this.title = this.i18nService.t('addItem');\n } else {\n this.title = this.i18nService.t('editItem');\n }\n } else {\n this.title = this.i18nService.t('addItem');\n }\n\n const addEditCipherInfo: any = await this.stateService.get('addEditCipherInfo');\n if (addEditCipherInfo != null) {\n this.cipher = addEditCipherInfo.cipher;\n this.collectionIds = addEditCipherInfo.collectionIds;\n }\n await this.stateService.remove('addEditCipherInfo');\n\n if (this.cipher == null) {\n if (this.editMode) {\n const cipher = await this.loadCipher();\n this.cipher = await cipher.decrypt();\n\n // Adjust Cipher Name if Cloning\n if (this.cloneMode) {\n this.cipher.name += ' - ' + this.i18nService.t('clone');\n // If not allowing personal ownership, update cipher's org Id to prompt downstream changes\n if (this.cipher.organizationId == null && !this.allowPersonal) {\n this.cipher.organizationId = this.organizationId;\n }\n }\n } else {\n this.cipher = new CipherView();\n this.cipher.organizationId = this.organizationId == null ? null : this.organizationId;\n this.cipher.folderId = this.folderId;\n this.cipher.type = this.type == null ? CipherType.Login : this.type;\n this.cipher.login = new LoginView();\n this.cipher.login.uris = [new LoginUriView()];\n this.cipher.card = new CardView();\n this.cipher.identity = new IdentityView();\n this.cipher.secureNote = new SecureNoteView();\n this.cipher.secureNote.type = SecureNoteType.Generic;\n this.cipher.reprompt = CipherRepromptType.None;\n }\n }\n\n if (this.cipher != null && (!this.editMode || addEditCipherInfo != null || this.cloneMode)) {\n await this.organizationChanged();\n if (this.collectionIds != null && this.collectionIds.length > 0 && this.collections.length > 0) {\n this.collections.forEach(c => {\n if (this.collectionIds.indexOf(c.id) > -1) {\n (c as any).checked = true;\n }\n });\n }\n }\n\n this.folders = await this.folderService.getAllDecrypted();\n\n if (this.editMode && this.previousCipherId !== this.cipherId) {\n this.eventService.collect(EventType.Cipher_ClientViewed, this.cipherId);\n }\n this.previousCipherId = this.cipherId;\n this.reprompt = this.cipher.reprompt !== CipherRepromptType.None;\n }\n\n async submit(): Promise {\n if (this.cipher.isDeleted) {\n return this.restore();\n }\n\n if (this.cipher.name == null || this.cipher.name === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nameRequired'));\n return false;\n }\n\n if ((!this.editMode || this.cloneMode) && !this.allowPersonal && this.cipher.organizationId == null) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('personalOwnershipSubmitError'));\n return false;\n }\n\n if ((!this.editMode || this.cloneMode) && this.cipher.type === CipherType.Login &&\n this.cipher.login.uris != null && this.cipher.login.uris.length === 1 &&\n (this.cipher.login.uris[0].uri == null || this.cipher.login.uris[0].uri === '')) {\n this.cipher.login.uris = null;\n }\n\n // Allows saving of selected collections during \"Add\" and \"Clone\" flows\n if ((!this.editMode || this.cloneMode) && this.cipher.organizationId != null) {\n this.cipher.collectionIds = this.collections == null ? [] :\n this.collections.filter(c => (c as any).checked).map(c => c.id);\n }\n\n // Clear current Cipher Id to trigger \"Add\" cipher flow\n if (this.cloneMode) {\n this.cipher.id = null;\n }\n\n const cipher = await this.encryptCipher();\n try {\n this.formPromise = this.saveCipher(cipher);\n await this.formPromise;\n this.cipher.id = cipher.id;\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.editMode && !this.cloneMode ? 'editedItem' : 'addedItem'));\n this.onSavedCipher.emit(this.cipher);\n this.messagingService.send(this.editMode && !this.cloneMode ? 'editedCipher' : 'addedCipher');\n return true;\n } catch { }\n\n return false;\n }\n\n addUri() {\n if (this.cipher.type !== CipherType.Login) {\n return;\n }\n\n if (this.cipher.login.uris == null) {\n this.cipher.login.uris = [];\n }\n\n this.cipher.login.uris.push(new LoginUriView());\n }\n\n removeUri(uri: LoginUriView) {\n if (this.cipher.type !== CipherType.Login || this.cipher.login.uris == null) {\n return;\n }\n\n const i = this.cipher.login.uris.indexOf(uri);\n if (i > -1) {\n this.cipher.login.uris.splice(i, 1);\n }\n }\n\n addField() {\n if (this.cipher.fields == null) {\n this.cipher.fields = [];\n }\n\n const f = new FieldView();\n f.type = this.addFieldType;\n f.newField = true;\n this.cipher.fields.push(f);\n }\n\n removeField(field: FieldView) {\n const i = this.cipher.fields.indexOf(field);\n if (i > -1) {\n this.cipher.fields.splice(i, 1);\n }\n }\n\n trackByFunction(index: number, item: any) {\n return index;\n }\n\n cancel() {\n this.onCancelled.emit(this.cipher);\n }\n\n attachments() {\n this.onEditAttachments.emit(this.cipher);\n }\n\n share() {\n this.onShareCipher.emit(this.cipher);\n }\n\n editCollections() {\n this.onEditCollections.emit(this.cipher);\n }\n\n async delete(): Promise {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(this.cipher.isDeleted ? 'permanentlyDeleteItemConfirmation' : 'deleteItemConfirmation'),\n this.i18nService.t('deleteItem'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.deleteCipher();\n await this.deletePromise;\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.cipher.isDeleted ? 'permanentlyDeletedItem' : 'deletedItem'));\n this.onDeletedCipher.emit(this.cipher);\n this.messagingService.send(this.cipher.isDeleted ? 'permanentlyDeletedCipher' : 'deletedCipher');\n } catch { }\n\n return true;\n }\n\n async restore(): Promise {\n if (!this.cipher.isDeleted) {\n return false;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('restoreItemConfirmation'), this.i18nService.t('restoreItem'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.restorePromise = this.restoreCipher();\n await this.restorePromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('restoredItem'));\n this.onRestoredCipher.emit(this.cipher);\n this.messagingService.send('restoredCipher');\n } catch { }\n\n return true;\n }\n\n async generatePassword(): Promise {\n if (this.cipher.login != null && this.cipher.login.password != null && this.cipher.login.password.length) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('overwritePasswordConfirmation'), this.i18nService.t('overwritePassword'),\n this.i18nService.t('yes'), this.i18nService.t('no'));\n if (!confirmed) {\n return false;\n }\n }\n\n this.onGeneratePassword.emit();\n return true;\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById('loginPassword').focus();\n if (this.editMode && this.showPassword) {\n this.eventService.collect(EventType.Cipher_ClientToggledPasswordVisible, this.cipherId);\n }\n }\n\n async toggleCardNumber() {\n this.showCardNumber = !this.showCardNumber;\n if (this.showCardNumber) {\n this.eventService.collect(EventType.Cipher_ClientToggledCardNumberVisible, this.cipherId);\n }\n }\n\n toggleCardCode() {\n this.showCardCode = !this.showCardCode;\n document.getElementById('cardCode').focus();\n if (this.editMode && this.showCardCode) {\n this.eventService.collect(EventType.Cipher_ClientToggledCardCodeVisible, this.cipherId);\n }\n }\n\n toggleFieldValue(field: FieldView) {\n const f = (field as any);\n f.showValue = !f.showValue;\n if (this.editMode && f.showValue) {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, this.cipherId);\n }\n }\n\n toggleUriOptions(uri: LoginUriView) {\n const u = (uri as any);\n u.showOptions = u.showOptions == null && uri.match != null ? false : !u.showOptions;\n }\n\n loginUriMatchChanged(uri: LoginUriView) {\n const u = (uri as any);\n u.showOptions = u.showOptions == null ? true : u.showOptions;\n }\n\n drop(event: CdkDragDrop) {\n moveItemInArray(this.cipher.fields, event.previousIndex, event.currentIndex);\n }\n\n async organizationChanged() {\n if (this.writeableCollections != null) {\n this.writeableCollections.forEach(c => (c as any).checked = false);\n }\n if (this.cipher.organizationId != null) {\n this.collections = this.writeableCollections.filter(c => c.organizationId === this.cipher.organizationId);\n const org = await this.userService.getOrganization(this.cipher.organizationId);\n if (org != null) {\n this.cipher.organizationUseTotp = org.useTotp;\n }\n } else {\n this.collections = [];\n }\n }\n\n async checkPassword() {\n if (this.checkPasswordPromise != null) {\n return;\n }\n\n if (this.cipher.login == null || this.cipher.login.password == null || this.cipher.login.password === '') {\n return;\n }\n\n this.checkPasswordPromise = this.auditService.passwordLeaked(this.cipher.login.password);\n const matches = await this.checkPasswordPromise;\n this.checkPasswordPromise = null;\n\n if (matches > 0) {\n this.platformUtilsService.showToast('warning', null,\n this.i18nService.t('passwordExposed', matches.toString()));\n } else {\n this.platformUtilsService.showToast('success', null, this.i18nService.t('passwordSafe'));\n }\n }\n\n repromptChanged() {\n this.reprompt = !this.reprompt;\n if (this.reprompt) {\n this.cipher.reprompt = CipherRepromptType.Password;\n } else {\n this.cipher.reprompt = CipherRepromptType.None;\n }\n }\n\n protected async loadCollections() {\n const allCollections = await this.collectionService.getAllDecrypted();\n return allCollections.filter(c => !c.readOnly);\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected encryptCipher() {\n return this.cipherService.encrypt(this.cipher);\n }\n\n protected saveCipher(cipher: Cipher) {\n return this.cipherService.saveWithServer(cipher);\n }\n\n protected deleteCipher() {\n return this.cipher.isDeleted ? this.cipherService.deleteWithServer(this.cipher.id)\n : this.cipherService.softDeleteWithServer(this.cipher.id);\n }\n\n protected restoreCipher() {\n return this.cipherService.restoreWithServer(this.cipher.id);\n }\n}\n","export { AttachmentResponse } from './attachmentResponse';\nexport { CipherResponse } from './cipherResponse';\nexport { CollectionResponse } from './collectionResponse';\nexport { DeviceResponse } from './deviceResponse';\nexport { DomainsResponse } from './domainsResponse';\nexport { ErrorResponse } from './errorResponse';\nexport { FolderResponse } from './folderResponse';\nexport { GlobalDomainResponse } from './globalDomainResponse';\nexport { IdentityTokenResponse } from './identityTokenResponse';\nexport { IdentityTwoFactorResponse } from './identityTwoFactorResponse';\nexport { KeysResponse } from './keysResponse';\nexport { ListResponse } from './listResponse';\nexport { ProfileOrganizationResponse } from './profileOrganizationResponse';\nexport { ProfileResponse } from './profileResponse';\nexport { SyncResponse } from './syncResponse';\n","import { BaseResponse } from './baseResponse';\n\nexport class PasswordHistoryResponse extends BaseResponse {\n password: string;\n lastUsedDate: string;\n\n constructor(response: any) {\n super(response);\n this.password = this.getResponseProperty('Password');\n this.lastUsedDate = this.getResponseProperty('LastUsedDate');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { DeviceType } from '../../enums/deviceType';\n\nexport class DeviceResponse extends BaseResponse {\n id: string;\n name: number;\n identifier: string;\n type: DeviceType;\n creationDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.identifier = this.getResponseProperty('Identifier');\n this.type = this.getResponseProperty('Type');\n this.creationDate = this.getResponseProperty('CreationDate');\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { SearchService } from 'jslib-common/abstractions/search.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Directive()\nexport class CiphersComponent {\n @Input() activeCipherId: string = null;\n @Output() onCipherClicked = new EventEmitter();\n @Output() onCipherRightClicked = new EventEmitter();\n @Output() onAddCipher = new EventEmitter();\n @Output() onAddCipherOptions = new EventEmitter();\n\n loaded: boolean = false;\n ciphers: CipherView[] = [];\n pagedCiphers: CipherView[] = [];\n searchText: string;\n searchPlaceholder: string = null;\n filter: (cipher: CipherView) => boolean = null;\n deleted: boolean = false;\n\n protected searchPending = false;\n protected didScroll = false;\n protected pageSize = 100;\n\n private searchTimeout: any = null;\n private pagedCiphersCount = 0;\n private refreshing = false;\n\n constructor(protected searchService: SearchService) { }\n\n async load(filter: (cipher: CipherView) => boolean = null, deleted: boolean = false) {\n this.deleted = deleted || false;\n await this.applyFilter(filter);\n this.loaded = true;\n }\n\n loadMore() {\n if (this.ciphers.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedCiphers.length;\n let pagedSize = this.pageSize;\n if (this.refreshing && pagedLength === 0 && this.pagedCiphersCount > this.pageSize) {\n pagedSize = this.pagedCiphersCount;\n }\n if (this.ciphers.length > pagedLength) {\n this.pagedCiphers = this.pagedCiphers.concat(this.ciphers.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedCiphersCount = this.pagedCiphers.length;\n this.didScroll = this.pagedCiphers.length > this.pageSize;\n }\n\n async reload(filter: (cipher: CipherView) => boolean = null, deleted: boolean = false) {\n this.loaded = false;\n this.ciphers = [];\n await this.load(filter, deleted);\n }\n\n async refresh() {\n try {\n this.refreshing = true;\n await this.reload(this.filter, this.deleted);\n } finally {\n this.refreshing = false;\n }\n }\n\n async applyFilter(filter: (cipher: CipherView) => boolean = null) {\n this.filter = filter;\n await this.search(null);\n }\n\n async search(timeout: number = null, indexedCiphers?: CipherView[]) {\n this.searchPending = false;\n if (this.searchTimeout != null) {\n clearTimeout(this.searchTimeout);\n }\n const deletedFilter: (cipher: CipherView) => boolean = c => c.isDeleted === this.deleted;\n if (timeout == null) {\n this.ciphers = await this.searchService.searchCiphers(this.searchText, [this.filter, deletedFilter], indexedCiphers);\n await this.resetPaging();\n return;\n }\n this.searchPending = true;\n this.searchTimeout = setTimeout(async () => {\n this.ciphers = await this.searchService.searchCiphers(this.searchText, [this.filter, deletedFilter], indexedCiphers);\n await this.resetPaging();\n this.searchPending = false;\n }, timeout);\n }\n\n selectCipher(cipher: CipherView) {\n this.onCipherClicked.emit(cipher);\n }\n\n rightClickCipher(cipher: CipherView) {\n this.onCipherRightClicked.emit(cipher);\n }\n\n addCipher() {\n this.onAddCipher.emit();\n }\n\n addCipherOptions() {\n this.onAddCipherOptions.emit();\n }\n\n isSearching() {\n return !this.searchPending && this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.ciphers.length > this.pageSize;\n }\n\n async resetPaging() {\n this.pagedCiphers = [];\n this.loadMore();\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\n\n@Directive()\nexport class CollectionsComponent implements OnInit {\n @Input() cipherId: string;\n @Input() allowSelectNone = false;\n @Output() onSavedCollections = new EventEmitter();\n\n formPromise: Promise;\n cipher: CipherView;\n collectionIds: string[];\n collections: CollectionView[] = [];\n\n protected cipherDomain: Cipher;\n\n constructor(protected collectionService: CollectionService, protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService, protected cipherService: CipherService) { }\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n this.cipherDomain = await this.loadCipher();\n this.collectionIds = this.loadCipherCollections();\n this.cipher = await this.cipherDomain.decrypt();\n this.collections = await this.loadCollections();\n\n this.collections.forEach(c => (c as any).checked = false);\n if (this.collectionIds != null) {\n this.collections.forEach(c => {\n (c as any).checked = this.collectionIds != null && this.collectionIds.indexOf(c.id) > -1;\n });\n }\n }\n\n async submit() {\n const selectedCollectionIds = this.collections\n .filter(c => !!(c as any).checked)\n .map(c => c.id);\n if (!this.allowSelectNone && selectedCollectionIds.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectOneCollection'));\n return;\n }\n this.cipherDomain.collectionIds = selectedCollectionIds;\n try {\n this.formPromise = this.saveCollections();\n await this.formPromise;\n this.onSavedCollections.emit();\n this.platformUtilsService.showToast('success', null, this.i18nService.t('editedItem'));\n } catch { }\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected loadCipherCollections() {\n return this.cipherDomain.collectionIds;\n }\n\n protected async loadCollections() {\n const allCollections = await this.collectionService.getAllDecrypted();\n return allCollections.filter(c => !c.readOnly && c.organizationId === this.cipher.organizationId);\n }\n\n protected saveCollections() {\n return this.cipherService.saveCollectionsWithServer(this.cipherDomain);\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\nimport { FolderView } from 'jslib-common/models/view/folderView';\n\nimport { TreeNode } from 'jslib-common/models/domain/treeNode';\n\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\n@Directive()\nexport class GroupingsComponent {\n @Input() showFolders = true;\n @Input() showCollections = true;\n @Input() showFavorites = true;\n @Input() showTrash = true;\n\n @Output() onAllClicked = new EventEmitter();\n @Output() onFavoritesClicked = new EventEmitter();\n @Output() onTrashClicked = new EventEmitter();\n @Output() onCipherTypeClicked = new EventEmitter();\n @Output() onFolderClicked = new EventEmitter();\n @Output() onAddFolder = new EventEmitter();\n @Output() onEditFolder = new EventEmitter();\n @Output() onCollectionClicked = new EventEmitter();\n\n folders: FolderView[];\n nestedFolders: TreeNode[];\n collections: CollectionView[];\n nestedCollections: TreeNode[];\n loaded: boolean = false;\n cipherType = CipherType;\n selectedAll: boolean = false;\n selectedFavorites: boolean = false;\n selectedTrash: boolean = false;\n selectedType: CipherType = null;\n selectedFolder: boolean = false;\n selectedFolderId: string = null;\n selectedCollectionId: string = null;\n\n private collapsedGroupings: Set;\n private collapsedGroupingsKey: string;\n\n constructor(protected collectionService: CollectionService, protected folderService: FolderService,\n protected storageService: StorageService, protected userService: UserService) { }\n\n async load(setLoaded = true) {\n const userId = await this.userService.getUserId();\n this.collapsedGroupingsKey = ConstantsService.collapsedGroupingsKey + '_' + userId;\n const collapsedGroupings = await this.storageService.get(this.collapsedGroupingsKey);\n if (collapsedGroupings == null) {\n this.collapsedGroupings = new Set();\n } else {\n this.collapsedGroupings = new Set(collapsedGroupings);\n }\n\n await this.loadFolders();\n await this.loadCollections();\n\n if (setLoaded) {\n this.loaded = true;\n }\n }\n\n async loadCollections(organizationId?: string) {\n if (!this.showCollections) {\n return;\n }\n const collections = await this.collectionService.getAllDecrypted();\n if (organizationId != null) {\n this.collections = collections.filter(c => c.organizationId === organizationId);\n } else {\n this.collections = collections;\n }\n this.nestedCollections = await this.collectionService.getAllNested(this.collections);\n }\n\n async loadFolders() {\n if (!this.showFolders) {\n return;\n }\n this.folders = await this.folderService.getAllDecrypted();\n this.nestedFolders = await this.folderService.getAllNested();\n }\n\n selectAll() {\n this.clearSelections();\n this.selectedAll = true;\n this.onAllClicked.emit();\n }\n\n selectFavorites() {\n this.clearSelections();\n this.selectedFavorites = true;\n this.onFavoritesClicked.emit();\n }\n\n selectTrash() {\n this.clearSelections();\n this.selectedTrash = true;\n this.onTrashClicked.emit();\n }\n\n selectType(type: CipherType) {\n this.clearSelections();\n this.selectedType = type;\n this.onCipherTypeClicked.emit(type);\n }\n\n selectFolder(folder: FolderView) {\n this.clearSelections();\n this.selectedFolder = true;\n this.selectedFolderId = folder.id;\n this.onFolderClicked.emit(folder);\n }\n\n addFolder() {\n this.onAddFolder.emit();\n }\n\n editFolder(folder: FolderView) {\n this.onEditFolder.emit(folder);\n }\n\n selectCollection(collection: CollectionView) {\n this.clearSelections();\n this.selectedCollectionId = collection.id;\n this.onCollectionClicked.emit(collection);\n }\n\n clearSelections() {\n this.selectedAll = false;\n this.selectedFavorites = false;\n this.selectedTrash = false;\n this.selectedType = null;\n this.selectedFolder = false;\n this.selectedFolderId = null;\n this.selectedCollectionId = null;\n }\n\n collapse(grouping: FolderView | CollectionView, idPrefix = '') {\n if (grouping.id == null) {\n return;\n }\n const id = idPrefix + grouping.id;\n if (this.isCollapsed(grouping, idPrefix)) {\n this.collapsedGroupings.delete(id);\n } else {\n this.collapsedGroupings.add(id);\n }\n this.storageService.save(this.collapsedGroupingsKey, this.collapsedGroupings);\n }\n\n isCollapsed(grouping: FolderView | CollectionView, idPrefix = '') {\n return this.collapsedGroupings.has(idPrefix + grouping.id);\n }\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendAccessResponse } from '../response/sendAccessResponse';\n\nimport { SendAccessView } from '../view/sendAccessView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SendFile } from './sendFile';\nimport { SendText } from './sendText';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class SendAccess extends Domain {\n id: string;\n type: SendType;\n name: EncString;\n file: SendFile;\n text: SendText;\n expirationDate: Date;\n creatorIdentifier: string;\n\n constructor(obj?: SendAccessResponse, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n name: null,\n expirationDate: null,\n creatorIdentifier: null,\n }, alreadyEncrypted, ['id', 'expirationDate', 'creatorIdentifier']);\n\n this.type = obj.type;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendText(obj.text, alreadyEncrypted);\n break;\n case SendType.File:\n this.file = new SendFile(obj.file, alreadyEncrypted);\n break;\n default:\n break;\n }\n }\n\n async decrypt(key: SymmetricCryptoKey): Promise {\n const model = new SendAccessView(this);\n\n await this.decryptObj(model, {\n name: null,\n }, null, key);\n\n switch (this.type) {\n case SendType.File:\n model.file = await this.file.decrypt(key);\n break;\n case SendType.Text:\n model.text = await this.text.decrypt(key);\n break;\n default:\n break;\n }\n\n return model;\n }\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendAccess } from '../domain/sendAccess';\n\nimport { SendFileView } from './sendFileView';\nimport { SendTextView } from './sendTextView';\nimport { View } from './view';\n\nexport class SendAccessView implements View {\n id: string = null;\n name: string = null;\n type: SendType = null;\n text = new SendTextView();\n file = new SendFileView();\n expirationDate: Date = null;\n creatorIdentifier: string = null;\n\n constructor(s?: SendAccess) {\n if (!s) {\n return;\n }\n\n this.id = s.id;\n this.type = s.type;\n this.expirationDate = s.expirationDate;\n this.creatorIdentifier = s.creatorIdentifier;\n }\n}\n","export class SendAccessRequest {\n password: string;\n}\n","import {\n Directive,\n NgZone,\n OnInit,\n} from '@angular/core';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { SendType } from 'jslib-common/enums/sendType';\n\nimport { SendView } from 'jslib-common/models/view/sendView';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { SendService } from 'jslib-common/abstractions/send.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Directive()\nexport class SendComponent implements OnInit {\n\n disableSend = false;\n sendType = SendType;\n loaded = false;\n loading = true;\n refreshing = false;\n expired: boolean = false;\n type: SendType = null;\n sends: SendView[] = [];\n filteredSends: SendView[] = [];\n searchText: string;\n selectedType: SendType;\n selectedAll: boolean;\n searchPlaceholder: string;\n filter: (cipher: SendView) => boolean;\n searchPending = false;\n hasSearched = false; // search() function called - returns true if text qualifies for search\n\n actionPromise: any;\n onSuccessfulRemovePassword: () => Promise;\n onSuccessfulDelete: () => Promise;\n onSuccessfulLoad: () => Promise;\n\n private searchTimeout: any;\n\n constructor(protected sendService: SendService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected environmentService: EnvironmentService,\n protected ngZone: NgZone, protected searchService: SearchService,\n protected policyService: PolicyService, protected userService: UserService) { }\n\n async ngOnInit() {\n const policies = await this.policyService.getAll(PolicyType.DisableSend);\n const organizations = await this.userService.getAllOrganizations();\n this.disableSend = organizations.some(o => {\n return o.enabled &&\n o.status === OrganizationUserStatusType.Confirmed &&\n o.usePolicies &&\n !o.canManagePolicies &&\n policies.some(p => p.organizationId === o.id && p.enabled);\n });\n }\n\n async load(filter: (send: SendView) => boolean = null) {\n this.loading = true;\n const sends = await this.sendService.getAllDecrypted();\n this.sends = sends;\n if (this.onSuccessfulLoad != null) {\n await this.onSuccessfulLoad();\n } else {\n // Default action\n this.selectAll();\n }\n this.loading = false;\n this.loaded = true;\n }\n\n async reload(filter: (send: SendView) => boolean = null) {\n this.loaded = false;\n this.sends = [];\n await this.load(filter);\n }\n\n async refresh() {\n try {\n this.refreshing = true;\n await this.reload(this.filter);\n } finally {\n this.refreshing = false;\n }\n }\n\n async applyFilter(filter: (send: SendView) => boolean = null) {\n this.filter = filter;\n await this.search(null);\n }\n\n async search(timeout: number = null) {\n this.searchPending = false;\n if (this.searchTimeout != null) {\n clearTimeout(this.searchTimeout);\n }\n if (timeout == null) {\n this.hasSearched = this.searchService.isSearchable(this.searchText);\n this.filteredSends = this.sends.filter(s => this.filter == null || this.filter(s));\n this.applyTextSearch();\n return;\n }\n this.searchPending = true;\n this.searchTimeout = setTimeout(async () => {\n this.hasSearched = this.searchService.isSearchable(this.searchText);\n this.filteredSends = this.sends.filter(s => this.filter == null || this.filter(s));\n this.applyTextSearch();\n this.searchPending = false;\n }, timeout);\n }\n\n async removePassword(s: SendView): Promise {\n if (this.actionPromise != null || s.password == null) {\n return;\n }\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('removePasswordConfirmation'),\n this.i18nService.t('removePassword'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.sendService.removePasswordWithServer(s.id);\n await this.actionPromise;\n if (this.onSuccessfulRemovePassword != null) {\n this.onSuccessfulRemovePassword();\n } else {\n // Default actions\n this.platformUtilsService.showToast('success', null, this.i18nService.t('removedPassword'));\n await this.load();\n }\n } catch { }\n this.actionPromise = null;\n }\n\n async delete(s: SendView): Promise {\n if (this.actionPromise != null) {\n return false;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteSendConfirmation'),\n this.i18nService.t('deleteSend'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.sendService.deleteWithServer(s.id);\n await this.actionPromise;\n\n if (this.onSuccessfulDelete != null) {\n this.onSuccessfulDelete();\n } else {\n // Default actions\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedSend'));\n await this.refresh();\n }\n } catch { }\n this.actionPromise = null;\n return true;\n }\n\n copy(s: SendView) {\n let sendLinkBaseUrl = 'https://send.bitwarden.com/#';\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n if (webVaultUrl != null) {\n sendLinkBaseUrl = webVaultUrl + '/#/send/';\n }\n const link = sendLinkBaseUrl + s.accessId + '/' + s.urlB64Key;\n this.platformUtilsService.copyToClipboard(link);\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t('valueCopied', this.i18nService.t('sendLink')));\n }\n\n searchTextChanged() {\n this.search(200);\n }\n\n selectAll() {\n this.clearSelections();\n this.selectedAll = true;\n this.applyFilter(null);\n }\n\n selectType(type: SendType) {\n this.clearSelections();\n this.selectedType = type;\n this.applyFilter(s => s.type === type);\n }\n\n clearSelections() {\n this.selectedAll = false;\n this.selectedType = null;\n }\n\n private applyTextSearch() {\n if (this.searchText != null) {\n this.filteredSends = this.searchService.searchSends(this.filteredSends, this.searchText);\n }\n }\n}\n","import { DatePipe } from '@angular/common';\nimport {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output\n} from '@angular/core';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { SendType } from 'jslib-common/enums/sendType';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SendService } from 'jslib-common/abstractions/send.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { SendFileView } from 'jslib-common/models/view/sendFileView';\nimport { SendTextView } from 'jslib-common/models/view/sendTextView';\nimport { SendView } from 'jslib-common/models/view/sendView';\n\nimport { EncArrayBuffer } from 'jslib-common/models/domain/encArrayBuffer';\nimport { Send } from 'jslib-common/models/domain/send';\n\n// TimeOption is used for the dropdown implementation of custom times\n// Standard = displayed time; Military = stored time\ninterface TimeOption {\n standard: string;\n military: string;\n}\n\nenum DateField {\n DeletionDate = 'deletion',\n ExpriationDate = 'expiration',\n}\n\n@Directive()\nexport class AddEditComponent implements OnInit {\n @Input() sendId: string;\n @Input() type: SendType;\n\n @Output() onSavedSend = new EventEmitter();\n @Output() onDeletedSend = new EventEmitter();\n @Output() onCancelled = new EventEmitter();\n\n copyLink = false;\n disableSend = false;\n disableHideEmail = false;\n send: SendView;\n deletionDate: string;\n deletionDateFallback: string;\n deletionTimeFallback: string;\n expirationDate: string = null;\n expirationDateFallback: string;\n expirationTimeFallback: string;\n hasPassword: boolean;\n password: string;\n showPassword = false;\n formPromise: Promise;\n deletePromise: Promise;\n sendType = SendType;\n typeOptions: any[];\n deletionDateOptions: any[];\n expirationDateOptions: any[];\n deletionDateSelect = 168;\n expirationDateSelect: number = null;\n canAccessPremium = true;\n emailVerified = true;\n alertShown = false;\n showOptions = false;\n\n safariDeletionTime: string;\n safariExpirationTime: string;\n safariDeletionTimeOptions: TimeOption[];\n safariExpirationTimeOptions: TimeOption[];\n\n private sendLinkBaseUrl: string;\n\n constructor(protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected environmentService: EnvironmentService, protected datePipe: DatePipe,\n protected sendService: SendService, protected userService: UserService,\n protected messagingService: MessagingService, protected policyService: PolicyService) {\n this.typeOptions = [\n { name: i18nService.t('sendTypeFile'), value: SendType.File },\n { name: i18nService.t('sendTypeText'), value: SendType.Text },\n ];\n this.deletionDateOptions = this.expirationDateOptions = [\n { name: i18nService.t('oneHour'), value: 1 },\n { name: i18nService.t('oneDay'), value: 24 },\n { name: i18nService.t('days', '2'), value: 48 },\n { name: i18nService.t('days', '3'), value: 72 },\n { name: i18nService.t('days', '7'), value: 168 },\n { name: i18nService.t('days', '30'), value: 720 },\n { name: i18nService.t('custom'), value: 0 },\n ];\n this.expirationDateOptions = [\n { name: i18nService.t('never'), value: null },\n ].concat([...this.deletionDateOptions]);\n\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n if (webVaultUrl == null) {\n this.sendLinkBaseUrl = 'https://send.bitwarden.com/#';\n } else {\n this.sendLinkBaseUrl = webVaultUrl + '/#/send/';\n }\n }\n\n get link(): string {\n if (this.send.id != null && this.send.accessId != null) {\n return this.sendLinkBaseUrl + this.send.accessId + '/' + this.send.urlB64Key;\n }\n return null;\n }\n\n get isSafari() {\n return this.platformUtilsService.isSafari();\n }\n\n get isDateTimeLocalSupported(): boolean {\n return !(this.platformUtilsService.isFirefox() || this.platformUtilsService.isSafari());\n }\n\n async ngOnInit() {\n await this.load();\n }\n\n get editMode(): boolean {\n return this.sendId != null;\n }\n\n get title(): string {\n return this.i18nService.t(\n this.editMode ?\n 'editSend' :\n 'createSend'\n );\n }\n\n get expirationDateTimeFallback() {\n return this.nullOrWhiteSpaceCount([this.expirationDateFallback, this.expirationTimeFallback]) > 0 ?\n null :\n `${this.formatDateFallbacks(this.expirationDateFallback)}T${this.expirationTimeFallback}`;\n }\n\n get deletionDateTimeFallback() {\n return this.nullOrWhiteSpaceCount([this.deletionDateFallback, this.deletionTimeFallback]) > 0 ?\n null :\n `${this.formatDateFallbacks(this.deletionDateFallback)}T${this.deletionTimeFallback}`;\n }\n\n async load() {\n const disableSendPolicies = await this.policyService.getAll(PolicyType.DisableSend);\n const organizations = await this.userService.getAllOrganizations();\n this.disableSend = organizations.some(o => {\n return o.enabled &&\n o.status === OrganizationUserStatusType.Confirmed &&\n o.usePolicies &&\n !o.canManagePolicies &&\n disableSendPolicies.some(p => p.organizationId === o.id && p.enabled);\n });\n\n const sendOptionsPolicies = await this.policyService.getAll(PolicyType.SendOptions);\n this.disableHideEmail = await organizations.some(o => {\n return o.enabled &&\n o.status === OrganizationUserStatusType.Confirmed &&\n o.usePolicies &&\n !o.canManagePolicies &&\n sendOptionsPolicies.some(p => p.organizationId === o.id && p.enabled && p.data.disableHideEmail);\n });\n\n this.canAccessPremium = await this.userService.canAccessPremium();\n this.emailVerified = await this.userService.getEmailVerified();\n if (!this.canAccessPremium || !this.emailVerified) {\n this.type = SendType.Text;\n }\n\n if (this.send == null) {\n if (this.editMode) {\n const send = await this.loadSend();\n this.send = await send.decrypt();\n } else {\n this.send = new SendView();\n this.send.type = this.type == null ? SendType.File : this.type;\n this.send.file = new SendFileView();\n this.send.text = new SendTextView();\n this.send.deletionDate = new Date();\n this.send.deletionDate.setDate(this.send.deletionDate.getDate() + 7);\n }\n }\n\n this.hasPassword = this.send.password != null && this.send.password.trim() !== '';\n\n // Parse dates\n if (!this.isDateTimeLocalSupported) {\n const deletionDateParts = this.dateToSplitString(this.send.deletionDate);\n if (deletionDateParts !== undefined && deletionDateParts.length > 0) {\n this.deletionDateFallback = deletionDateParts[0];\n this.deletionTimeFallback = deletionDateParts[1];\n if (this.isSafari) {\n this.safariDeletionTime = this.deletionTimeFallback;\n }\n }\n\n const expirationDateParts = this.dateToSplitString(this.send.expirationDate);\n if (expirationDateParts !== undefined && expirationDateParts.length > 0) {\n this.expirationDateFallback = expirationDateParts[0];\n this.expirationTimeFallback = expirationDateParts[1];\n if (this.isSafari) {\n this.safariExpirationTime = this.expirationTimeFallback;\n }\n }\n } else {\n this.deletionDate = this.dateToString(this.send.deletionDate);\n this.expirationDate = this.dateToString(this.send.expirationDate);\n }\n\n if (this.isSafari) {\n this.safariDeletionTimeOptions = this.safariTimeOptions(DateField.DeletionDate);\n this.safariExpirationTimeOptions = this.safariTimeOptions(DateField.ExpriationDate);\n }\n }\n\n async submit(): Promise {\n if (!this.isDateTimeLocalSupported) {\n if (this.isSafari) {\n this.expirationTimeFallback = this.safariExpirationTime ?? this.expirationTimeFallback;\n this.deletionTimeFallback = this.safariDeletionTime ?? this.deletionTimeFallback;\n }\n this.deletionDate = this.deletionDateTimeFallback;\n if (this.expirationDateTimeFallback != null && isNaN(Date.parse(this.expirationDateTimeFallback))) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('expirationDateIsInvalid'));\n return;\n }\n if (isNaN(Date.parse(this.deletionDateTimeFallback))) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('deletionDateIsInvalid'));\n return;\n }\n if (this.nullOrWhiteSpaceCount([this.expirationDateFallback, this.expirationTimeFallback]) === 1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('expirationDateAndTimeRequired'));\n return;\n }\n if (this.editMode || this.expirationDateSelect === 0) {\n this.expirationDate = this.expirationDateTimeFallback;\n }\n }\n\n if (this.disableSend) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('sendDisabledWarning'));\n return false;\n }\n\n if (this.send.name == null || this.send.name === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nameRequired'));\n return false;\n }\n\n let file: File = null;\n if (this.send.type === SendType.File && !this.editMode) {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n file = files[0];\n if (files[0].size > 524288000) { // 500 MB\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('maxFileSize'));\n return;\n }\n }\n\n if (!this.editMode) {\n const now = new Date();\n if (this.deletionDateSelect > 0) {\n const d = new Date();\n d.setHours(now.getHours() + this.deletionDateSelect);\n this.deletionDate = this.dateToString(d);\n }\n if (this.expirationDateSelect != null && this.expirationDateSelect > 0) {\n const d = new Date();\n d.setHours(now.getHours() + this.expirationDateSelect);\n this.expirationDate = this.dateToString(d);\n }\n }\n\n if (this.password != null && this.password.trim() === '') {\n this.password = null;\n }\n\n this.formPromise = this.encryptSend(file)\n .then(async encSend => {\n const uploadPromise = this.sendService.saveWithServer(encSend);\n await uploadPromise;\n if (this.send.id == null) {\n this.send.id = encSend[0].id;\n }\n if (this.send.accessId == null) {\n this.send.accessId = encSend[0].accessId;\n }\n this.onSavedSend.emit(this.send);\n if (this.copyLink && this.link != null) {\n const copySuccess = await this.copyLinkToClipboard(this.link);\n if (copySuccess ?? true) {\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.editMode ? 'editedSend' : 'createdSend'));\n } else {\n await this.platformUtilsService.showDialog(\n this.i18nService.t(this.editMode ? 'editedSend' : 'createdSend'), null,\n this.i18nService.t('ok'), null, 'success', null);\n await this.copyLinkToClipboard(this.link);\n }\n }\n });\n\n try {\n await this.formPromise;\n return true;\n } catch { }\n return false;\n }\n\n clearExpiration() {\n this.expirationDate = null;\n this.expirationDateFallback = null;\n this.expirationTimeFallback = null;\n this.safariExpirationTime = null;\n }\n\n async copyLinkToClipboard(link: string): Promise {\n return Promise.resolve(this.platformUtilsService.copyToClipboard(link));\n }\n\n async delete(): Promise {\n if (this.deletePromise != null) {\n return false;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteSendConfirmation'),\n this.i18nService.t('deleteSend'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.sendService.deleteWithServer(this.send.id);\n await this.deletePromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedSend'));\n await this.load();\n this.onDeletedSend.emit(this.send);\n return true;\n } catch { }\n\n return false;\n }\n\n typeChanged() {\n if (this.send.type === SendType.File && !this.alertShown)\n {\n if (!this.canAccessPremium) {\n this.alertShown = true;\n this.messagingService.send('premiumRequired');\n } else if (!this.emailVerified) {\n this.alertShown = true;\n this.messagingService.send('emailVerificationRequired');\n }\n }\n }\n\n toggleOptions() {\n this.showOptions = !this.showOptions;\n }\n\n expirationDateFallbackChanged() {\n this.isSafari ?\n this.safariExpirationTime = this.safariExpirationTime ?? '00:00' :\n this.expirationTimeFallback = this.expirationTimeFallback ?? this.datePipe.transform(new Date(), 'HH:mm');\n }\n\n protected async loadSend(): Promise {\n return this.sendService.get(this.sendId);\n }\n\n protected async encryptSend(file: File): Promise<[Send, EncArrayBuffer]> {\n const sendData = await this.sendService.encrypt(this.send, file, this.password, null);\n\n // Parse dates\n try {\n sendData[0].deletionDate = this.deletionDate == null ? null : new Date(this.deletionDate);\n } catch {\n sendData[0].deletionDate = null;\n }\n try {\n sendData[0].expirationDate = this.expirationDate == null ? null : new Date(this.expirationDate);\n } catch {\n sendData[0].expirationDate = null;\n }\n\n return sendData;\n }\n\n protected dateToString(d: Date) {\n return d == null ? null : this.datePipe.transform(d, 'yyyy-MM-ddTHH:mm');\n }\n\n protected formatDateFallbacks(dateString: string) {\n try {\n // The Firefox date picker doesn't supply a time, safari's polyfill does.\n // Unknown if Safari's native date picker will or not when it releases.\n if (!this.isSafari) {\n dateString += ' 00:00';\n }\n return this.datePipe.transform(new Date(dateString), 'yyyy-MM-dd');\n } catch {\n // this should never happen\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('dateParsingError'));\n }\n }\n\n protected dateToSplitString(d: Date) {\n if (d != null) {\n const date = !this.isSafari ?\n this.datePipe.transform(d, 'yyyy-MM-dd') :\n this.datePipe.transform(d, 'MM/dd/yyyy');\n const time = this.datePipe.transform(d, 'HH:mm');\n return [date, time];\n }\n }\n\n protected togglePasswordVisible() {\n this.showPassword = !this.showPassword;\n document.getElementById('password').focus();\n }\n\n protected nullOrWhiteSpaceCount(strarray: string[]): number {\n return strarray.filter(str => str == null || str.trim() === '').length;\n }\n\n protected safariTimeOptions(field: DateField): TimeOption[] {\n // init individual arrays for major sort groups\n const noon: TimeOption[] = [];\n const midnight: TimeOption[] = [];\n const ams: TimeOption[] = [];\n const pms: TimeOption[] = [];\n\n // determine minute skip (5 min, 10 min, 15 min, etc.)\n const minuteIncrementer = 15;\n\n // loop through each hour on a 12 hour system\n for (let h = 1; h <= 12; h++) {\n // loop through each minute in the hour using the skip to incriment\n for (let m = 0; m < 60; m += minuteIncrementer) {\n // init the final strings that will be added to the lists\n let hour = h.toString();\n let minutes = m.toString();\n\n // add prepending 0s to single digit hours/minutes\n if (h < 10) {\n hour = '0' + hour;\n }\n if (m < 10) {\n minutes = '0' + minutes;\n }\n\n // build time strings and push to relevant sort groups\n if (h === 12) {\n const midnightOption: TimeOption = {\n standard: `${hour}:${minutes} AM`,\n military: `00:${minutes}`,\n };\n midnight.push(midnightOption);\n\n const noonOption: TimeOption = {\n standard: `${hour}:${minutes} PM`,\n military: `${hour}:${minutes}`,\n };\n noon.push(noonOption);\n } else {\n const amOption: TimeOption = {\n standard: `${hour}:${minutes} AM`,\n military: `${hour}:${minutes}`,\n };\n ams.push(amOption);\n\n const pmOption: TimeOption = {\n standard: `${hour}:${minutes} PM`,\n military: `${h + 12}:${minutes}`,\n };\n pms.push(pmOption);\n }\n }\n }\n\n // bring all the arrays together in the right order\n const validTimes = [...midnight, ...ams, ...noon, ...pms];\n\n // determine if an unsupported value already exists on the send & add that to the top of the option list\n // example: if the Send was created with a different client\n if (field === DateField.ExpriationDate && this.expirationDateTimeFallback != null && this.editMode) {\n const previousValue: TimeOption = {\n standard: this.datePipe.transform(this.expirationDateTimeFallback, 'hh:mm a'),\n military: this.datePipe.transform(this.expirationDateTimeFallback, 'HH:mm'),\n };\n return [previousValue, { standard: null, military: null }, ...validTimes];\n } else if (field === DateField.DeletionDate && this.deletionDateTimeFallback != null && this.editMode) {\n const previousValue: TimeOption = {\n standard: this.datePipe.transform(this.deletionDateTimeFallback, 'hh:mm a'),\n military: this.datePipe.transform(this.deletionDateTimeFallback, 'HH:mm'),\n };\n return [previousValue, ...validTimes];\n } else {\n return [{ standard: null, military: null }, ...validTimes];\n }\n }\n}\n","export class UpdateProfileRequest {\n name: string;\n masterPasswordHint: string;\n culture = 'en-US'; // deprecated\n\n constructor(name: string, masterPasswordHint: string) {\n this.name = name;\n this.masterPasswordHint = masterPasswordHint ? masterPasswordHint : null;\n }\n}\n","import { EmailTokenRequest } from './emailTokenRequest';\n\nexport class EmailRequest extends EmailTokenRequest {\n newMasterPasswordHash: string;\n token: string;\n key: string;\n}\n","import { PasswordRequest } from './passwordRequest';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class KdfRequest extends PasswordRequest {\n kdf: KdfType;\n kdfIterations: number;\n}\n","export class UpdateDomainsRequest {\n equivalentDomains: string[][];\n excludedGlobalEquivalentDomains: number[];\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { PasswordGeneratorPolicyOptions } from 'jslib-common/models/domain/passwordGeneratorPolicyOptions';\n\n@Directive()\nexport class PasswordGeneratorComponent implements OnInit {\n @Input() showSelect: boolean = false;\n @Output() onSelected = new EventEmitter();\n\n options: any = {};\n password: string = '-';\n showOptions = false;\n avoidAmbiguous = false;\n enforcedPolicyOptions: PasswordGeneratorPolicyOptions;\n\n constructor(protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService, protected i18nService: I18nService,\n private win: Window) { }\n\n async ngOnInit() {\n const optionsResponse = await this.passwordGenerationService.getOptions();\n this.options = optionsResponse[0];\n this.enforcedPolicyOptions = optionsResponse[1];\n this.avoidAmbiguous = !this.options.ambiguous;\n this.options.type = this.options.type === 'passphrase' ? 'passphrase' : 'password';\n this.password = await this.passwordGenerationService.generatePassword(this.options);\n await this.passwordGenerationService.addHistory(this.password);\n }\n\n async sliderChanged() {\n this.saveOptions(false);\n await this.passwordGenerationService.addHistory(this.password);\n }\n\n async sliderInput() {\n this.normalizeOptions();\n this.password = await this.passwordGenerationService.generatePassword(this.options);\n }\n\n async saveOptions(regenerate: boolean = true) {\n this.normalizeOptions();\n await this.passwordGenerationService.saveOptions(this.options);\n\n if (regenerate) {\n await this.regenerate();\n }\n }\n\n async regenerate() {\n this.password = await this.passwordGenerationService.generatePassword(this.options);\n await this.passwordGenerationService.addHistory(this.password);\n }\n\n copy() {\n const copyOptions = this.win != null ? { window: this.win } : null;\n this.platformUtilsService.copyToClipboard(this.password, copyOptions);\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t('password')));\n }\n\n select() {\n this.onSelected.emit(this.password);\n }\n\n toggleOptions() {\n this.showOptions = !this.showOptions;\n }\n\n private normalizeOptions() {\n // Application level normalize options depedent on class variables\n this.options.ambiguous = !this.avoidAmbiguous;\n\n if (!this.options.uppercase && !this.options.lowercase && !this.options.number && !this.options.special) {\n this.options.lowercase = true;\n if (this.win != null) {\n const lowercase = this.win.document.querySelector('#lowercase') as HTMLInputElement;\n if (lowercase) {\n lowercase.checked = true;\n }\n }\n }\n\n this.passwordGenerationService.normalizeOptions(this.options, this.enforcedPolicyOptions);\n }\n}\n","import { Directive, OnInit } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { GeneratedPasswordHistory } from 'jslib-common/models/domain/generatedPasswordHistory';\n\n@Directive()\nexport class PasswordGeneratorHistoryComponent implements OnInit {\n history: GeneratedPasswordHistory[] = [];\n\n constructor(protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService, protected i18nService: I18nService,\n private win: Window) { }\n\n async ngOnInit() {\n this.history = await this.passwordGenerationService.getHistory();\n }\n\n clear() {\n this.history = [];\n this.passwordGenerationService.clear();\n }\n\n copy(password: string) {\n const copyOptions = this.win != null ? { window: this.win } : null;\n this.platformUtilsService.copyToClipboard(password, copyOptions);\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t('password')));\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { FolderView } from 'jslib-common/models/view/folderView';\n\n@Directive()\nexport class FolderAddEditComponent implements OnInit {\n @Input() folderId: string;\n @Output() onSavedFolder = new EventEmitter();\n @Output() onDeletedFolder = new EventEmitter();\n\n editMode: boolean = false;\n folder: FolderView = new FolderView();\n title: string;\n formPromise: Promise;\n deletePromise: Promise;\n\n constructor(protected folderService: FolderService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n await this.init();\n }\n\n async submit(): Promise {\n if (this.folder.name == null || this.folder.name === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nameRequired'));\n return false;\n }\n\n try {\n const folder = await this.folderService.encrypt(this.folder);\n this.formPromise = this.folderService.saveWithServer(folder);\n await this.formPromise;\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.editMode ? 'editedFolder' : 'addedFolder'));\n this.onSavedFolder.emit(this.folder);\n return true;\n } catch { }\n\n return false;\n }\n\n async delete(): Promise {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteFolderConfirmation'), this.i18nService.t('deleteFolder'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.folderService.deleteWithServer(this.folder.id);\n await this.deletePromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedFolder'));\n this.onDeletedFolder.emit(this.folder);\n } catch { }\n\n return true;\n }\n\n protected async init() {\n this.editMode = this.folderId != null;\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editFolder');\n const folder = await this.folderService.get(this.folderId);\n this.folder = await folder.decrypt();\n } else {\n this.title = this.i18nService.t('addFolder');\n }\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Directive()\nexport class ShareComponent implements OnInit {\n @Input() cipherId: string;\n @Input() organizationId: string;\n @Output() onSharedCipher = new EventEmitter();\n\n formPromise: Promise;\n cipher: CipherView;\n collections: CollectionView[] = [];\n organizations: Organization[] = [];\n\n protected writeableCollections: CollectionView[] = [];\n\n constructor(protected collectionService: CollectionService, protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService, protected userService: UserService,\n protected cipherService: CipherService) { }\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n const allCollections = await this.collectionService.getAllDecrypted();\n this.writeableCollections = allCollections.map(c => c).filter(c => !c.readOnly);\n const orgs = await this.userService.getAllOrganizations();\n this.organizations = orgs.sort(Utils.getSortFunction(this.i18nService, 'name'))\n .filter(o => o.enabled && o.status === OrganizationUserStatusType.Confirmed);\n\n const cipherDomain = await this.cipherService.get(this.cipherId);\n this.cipher = await cipherDomain.decrypt();\n if (this.organizationId == null && this.organizations.length > 0) {\n this.organizationId = this.organizations[0].id;\n }\n this.filterCollections();\n }\n\n filterCollections() {\n this.writeableCollections.forEach(c => (c as any).checked = false);\n if (this.organizationId == null || this.writeableCollections.length === 0) {\n this.collections = [];\n } else {\n this.collections = this.writeableCollections.filter(c => c.organizationId === this.organizationId);\n }\n }\n\n async submit(): Promise {\n const selectedCollectionIds = this.collections\n .filter(c => !!(c as any).checked)\n .map(c => c.id);\n if (selectedCollectionIds.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectOneCollection'));\n return;\n }\n\n const cipherDomain = await this.cipherService.get(this.cipherId);\n const cipherView = await cipherDomain.decrypt();\n\n try {\n this.formPromise = this.cipherService.shareWithServer(cipherView, this.organizationId,\n selectedCollectionIds).then(async () => {\n this.onSharedCipher.emit();\n this.platformUtilsService.showToast('success', null, this.i18nService.t('sharedItem'));\n });\n await this.formPromise;\n return true;\n } catch { }\n return false;\n }\n\n get canSave() {\n if (this.collections != null) {\n for (let i = 0; i < this.collections.length; i++) {\n if ((this.collections[i] as any).checked) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","export { AttachmentData } from './attachmentData';\nexport { CardData } from './cardData';\nexport { CipherData } from './cipherData';\nexport { CollectionData } from './collectionData';\nexport { FieldData } from './fieldData';\nexport { FolderData } from './folderData';\nexport { IdentityData } from './identityData';\nexport { LoginData } from './loginData';\nexport { LoginUriData } from './loginUriData';\nexport { SecureNoteData } from './secureNoteData';\n","export { Attachment } from './attachment';\nexport { AuthResult } from './authResult';\nexport { Card } from './card';\nexport { Cipher } from './cipher';\nexport { EncString } from './encString';\nexport { Collection } from './collection';\nexport { EncryptedObject } from './encryptedObject';\nexport { EnvironmentUrls } from './environmentUrls';\nexport { Field } from './field';\nexport { Folder } from './folder';\nexport { Identity } from './identity';\nexport { Login } from './login';\nexport { LoginUri } from './loginUri';\nexport { GeneratedPasswordHistory } from './generatedPasswordHistory';\nexport { SecureNote } from './secureNote';\nexport { SymmetricCryptoKey } from './symmetricCryptoKey';\n","export class EmergencyAccessConfirmRequest {\n key: string;\n}\n","import { EmergencyAccessType } from '../../enums/emergencyAccessType';\n\nexport class EmergencyAccessInviteRequest {\n email: string;\n type: EmergencyAccessType;\n waitTimeDays: number;\n}\n","export class EmergencyAccessPasswordRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","import {\n APP_INITIALIZER,\n LOCALE_ID,\n NgModule,\n} from '@angular/core';\n\nimport { ToasterModule } from 'angular2-toaster';\n\nimport { BroadcasterMessagingService } from '../../services/broadcasterMessaging.service';\nimport { HtmlStorageService } from '../../services/htmlStorage.service';\nimport { I18nService } from '../../services/i18n.service';\nimport { MemoryStorageService } from '../../services/memoryStorage.service';\nimport { WebPlatformUtilsService } from '../../services/webPlatformUtils.service';\n\nimport { EventService } from './event.service';\nimport { OrganizationGuardService } from './organization-guard.service';\nimport { OrganizationTypeGuardService } from './organization-type-guard.service';\nimport { RouterService } from './router.service';\n\nimport { AuthGuardService } from 'jslib-angular/services/auth-guard.service';\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\nimport { LockGuardService } from 'jslib-angular/services/lock-guard.service';\nimport { UnauthGuardService } from 'jslib-angular/services/unauth-guard.service';\nimport { ValidationService } from 'jslib-angular/services/validation.service';\n\nimport { ApiService } from 'jslib-common/services/api.service';\nimport { AppIdService } from 'jslib-common/services/appId.service';\nimport { AuditService } from 'jslib-common/services/audit.service';\nimport { AuthService } from 'jslib-common/services/auth.service';\nimport { CipherService } from 'jslib-common/services/cipher.service';\nimport { CollectionService } from 'jslib-common/services/collection.service';\nimport { ConsoleLogService } from 'jslib-common/services/consoleLog.service';\nimport { ConstantsService } from 'jslib-common/services/constants.service';\nimport { ContainerService } from 'jslib-common/services/container.service';\nimport { CryptoService } from 'jslib-common/services/crypto.service';\nimport { EnvironmentService } from 'jslib-common/services/environment.service';\nimport { EventService as EventLoggingService } from 'jslib-common/services/event.service';\nimport { ExportService } from 'jslib-common/services/export.service';\nimport { FileUploadService } from 'jslib-common/services/fileUpload.service';\nimport { FolderService } from 'jslib-common/services/folder.service';\nimport { ImportService } from 'jslib-common/services/import.service';\nimport { NotificationsService } from 'jslib-common/services/notifications.service';\nimport { PasswordGenerationService } from 'jslib-common/services/passwordGeneration.service';\nimport { PasswordRepromptService } from 'jslib-common/services/passwordReprompt.service';\nimport { PolicyService } from 'jslib-common/services/policy.service';\nimport { SearchService } from 'jslib-common/services/search.service';\nimport { SendService } from 'jslib-common/services/send.service';\nimport { SettingsService } from 'jslib-common/services/settings.service';\nimport { StateService } from 'jslib-common/services/state.service';\nimport { SyncService } from 'jslib-common/services/sync.service';\nimport { TokenService } from 'jslib-common/services/token.service';\nimport { TotpService } from 'jslib-common/services/totp.service';\nimport { UserService } from 'jslib-common/services/user.service';\nimport { VaultTimeoutService } from 'jslib-common/services/vaultTimeout.service';\nimport { WebCryptoFunctionService } from 'jslib-common/services/webCryptoFunction.service';\n\nimport { ApiService as ApiServiceAbstraction } from 'jslib-common/abstractions/api.service';\nimport { AuditService as AuditServiceAbstraction } from 'jslib-common/abstractions/audit.service';\nimport { AuthService as AuthServiceAbstraction } from 'jslib-common/abstractions/auth.service';\nimport { CipherService as CipherServiceAbstraction } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService as CollectionServiceAbstraction } from 'jslib-common/abstractions/collection.service';\nimport { CryptoService as CryptoServiceAbstraction } from 'jslib-common/abstractions/crypto.service';\nimport { CryptoFunctionService as CryptoFunctionServiceAbstraction } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { EnvironmentService as EnvironmentServiceAbstraction } from 'jslib-common/abstractions/environment.service';\nimport { EventService as EventLoggingServiceAbstraction } from 'jslib-common/abstractions/event.service';\nimport { ExportService as ExportServiceAbstraction } from 'jslib-common/abstractions/export.service';\nimport { FileUploadService as FileUploadServiceAbstraction } from 'jslib-common/abstractions/fileUpload.service';\nimport { FolderService as FolderServiceAbstraction } from 'jslib-common/abstractions/folder.service';\nimport { I18nService as I18nServiceAbstraction } from 'jslib-common/abstractions/i18n.service';\nimport { ImportService as ImportServiceAbstraction } from 'jslib-common/abstractions/import.service';\nimport { MessagingService as MessagingServiceAbstraction } from 'jslib-common/abstractions/messaging.service';\nimport { NotificationsService as NotificationsServiceAbstraction } from 'jslib-common/abstractions/notifications.service';\nimport {\n PasswordGenerationService as PasswordGenerationServiceAbstraction,\n} from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PasswordRepromptService as PasswordRepromptServiceAbstraction } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { PlatformUtilsService as PlatformUtilsServiceAbstraction } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService as PolicyServiceAbstraction } from 'jslib-common/abstractions/policy.service';\nimport { SearchService as SearchServiceAbstraction } from 'jslib-common/abstractions/search.service';\nimport { SendService as SendServiceAbstraction } from 'jslib-common/abstractions/send.service';\nimport { SettingsService as SettingsServiceAbstraction } from 'jslib-common/abstractions/settings.service';\nimport { StateService as StateServiceAbstraction } from 'jslib-common/abstractions/state.service';\nimport { StorageService as StorageServiceAbstraction } from 'jslib-common/abstractions/storage.service';\nimport { SyncService as SyncServiceAbstraction } from 'jslib-common/abstractions/sync.service';\nimport { TokenService as TokenServiceAbstraction } from 'jslib-common/abstractions/token.service';\nimport { TotpService as TotpServiceAbstraction } from 'jslib-common/abstractions/totp.service';\nimport { UserService as UserServiceAbstraction } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from 'jslib-common/abstractions/vaultTimeout.service';\n\nconst i18nService = new I18nService(window.navigator.language, 'locales');\nconst stateService = new StateService();\nconst broadcasterService = new BroadcasterService();\nconst messagingService = new BroadcasterMessagingService(broadcasterService);\nconst consoleLogService = new ConsoleLogService(false);\nconst platformUtilsService = new WebPlatformUtilsService(i18nService, messagingService, consoleLogService);\nconst storageService: StorageServiceAbstraction = new HtmlStorageService(platformUtilsService);\nconst secureStorageService: StorageServiceAbstraction = new MemoryStorageService();\nconst cryptoFunctionService: CryptoFunctionServiceAbstraction = new WebCryptoFunctionService(window,\n platformUtilsService);\nconst cryptoService = new CryptoService(storageService,\n platformUtilsService.isDev() ? storageService : secureStorageService, cryptoFunctionService, platformUtilsService,\n consoleLogService);\nconst tokenService = new TokenService(storageService);\nconst appIdService = new AppIdService(storageService);\nconst apiService = new ApiService(tokenService, platformUtilsService,\n async (expired: boolean) => messagingService.send('logout', { expired: expired }));\nconst userService = new UserService(tokenService, storageService);\nconst settingsService = new SettingsService(userService, storageService);\nexport let searchService: SearchService = null;\nconst fileUploadService = new FileUploadService(consoleLogService, apiService);\nconst cipherService = new CipherService(cryptoService, userService, settingsService,\n apiService, fileUploadService, storageService, i18nService, () => searchService);\nconst folderService = new FolderService(cryptoService, userService, apiService, storageService,\n i18nService, cipherService);\nconst collectionService = new CollectionService(cryptoService, userService, storageService, i18nService);\nsearchService = new SearchService(cipherService, consoleLogService, i18nService);\nconst policyService = new PolicyService(userService, storageService);\nconst sendService = new SendService(cryptoService, userService, apiService, fileUploadService, storageService,\n i18nService, cryptoFunctionService);\nconst vaultTimeoutService = new VaultTimeoutService(cipherService, folderService, collectionService,\n cryptoService, platformUtilsService, storageService, messagingService, searchService, userService, tokenService,\n null, async () => messagingService.send('logout', { expired: false }));\nconst syncService = new SyncService(userService, apiService, settingsService,\n folderService, cipherService, cryptoService, collectionService, storageService, messagingService, policyService,\n sendService, async (expired: boolean) => messagingService.send('logout', { expired: expired }));\nconst passwordGenerationService = new PasswordGenerationService(cryptoService, storageService, policyService);\nconst totpService = new TotpService(storageService, cryptoFunctionService);\nconst containerService = new ContainerService(cryptoService);\nconst authService = new AuthService(cryptoService, apiService,\n userService, tokenService, appIdService, i18nService, platformUtilsService, messagingService, vaultTimeoutService,\n consoleLogService);\nconst exportService = new ExportService(folderService, cipherService, apiService, cryptoService);\nconst importService = new ImportService(cipherService, folderService, apiService, i18nService, collectionService,\n platformUtilsService, cryptoService);\nconst notificationsService = new NotificationsService(userService, syncService, appIdService,\n apiService, vaultTimeoutService, async () => messagingService.send('logout', { expired: true }), consoleLogService);\nconst environmentService = new EnvironmentService(apiService, storageService, notificationsService);\nconst auditService = new AuditService(cryptoFunctionService, apiService);\nconst eventLoggingService = new EventLoggingService(storageService, apiService, userService, cipherService);\nconst passwordRepromptService = new PasswordRepromptService(i18nService, cryptoService, platformUtilsService);\n\ncontainerService.attachToWindow(window);\n\nexport function initFactory(): Function {\n function getBaseUrl() {\n // If the base URL is `https://bitwarden.example.com/base/path/`,\n // `window.location.href` should have one of the following forms:\n //\n // - `https://bitwarden.example.com/base/path/`\n // - `https://bitwarden.example.com/base/path/#/some/route[?queryParam=...]`\n //\n // We want to get to just `https://bitwarden.example.com/base/path`.\n let baseUrl = window.location.href;\n baseUrl = baseUrl.replace(/#.*/, ''); // Strip off `#` and everything after.\n baseUrl = baseUrl.replace(/\\/+$/, ''); // Trim any trailing `/` chars.\n return baseUrl;\n }\n return async () => {\n await (storageService as HtmlStorageService).init();\n\n environmentService.baseUrl = getBaseUrl();\n apiService.setUrls({\n base: environmentService.baseUrl,\n api: null,\n identity: null,\n events: null,\n });\n setTimeout(() => notificationsService.init(environmentService), 3000);\n\n vaultTimeoutService.init(true);\n const locale = await storageService.get(ConstantsService.localeKey);\n await i18nService.init(locale);\n eventLoggingService.init(true);\n authService.init();\n const htmlEl = window.document.documentElement;\n htmlEl.classList.add('locale_' + i18nService.translationLocale);\n let theme = await storageService.get(ConstantsService.themeKey);\n if (theme == null) {\n theme = 'light';\n }\n htmlEl.classList.add('theme_' + theme);\n stateService.save(ConstantsService.disableFaviconKey,\n await storageService.get(ConstantsService.disableFaviconKey));\n stateService.save('enableGravatars', await storageService.get('enableGravatars'));\n };\n}\n\n@NgModule({\n imports: [\n ToasterModule,\n ],\n declarations: [],\n providers: [\n ValidationService,\n AuthGuardService,\n OrganizationGuardService,\n OrganizationTypeGuardService,\n UnauthGuardService,\n RouterService,\n EventService,\n LockGuardService,\n { provide: AuditServiceAbstraction, useValue: auditService },\n { provide: AuthServiceAbstraction, useValue: authService },\n { provide: CipherServiceAbstraction, useValue: cipherService },\n { provide: FolderServiceAbstraction, useValue: folderService },\n { provide: CollectionServiceAbstraction, useValue: collectionService },\n { provide: EnvironmentServiceAbstraction, useValue: environmentService },\n { provide: TotpServiceAbstraction, useValue: totpService },\n { provide: TokenServiceAbstraction, useValue: tokenService },\n { provide: I18nServiceAbstraction, useValue: i18nService },\n { provide: CryptoServiceAbstraction, useValue: cryptoService },\n { provide: PlatformUtilsServiceAbstraction, useValue: platformUtilsService },\n { provide: PasswordGenerationServiceAbstraction, useValue: passwordGenerationService },\n { provide: ApiServiceAbstraction, useValue: apiService },\n { provide: FileUploadServiceAbstraction, useValue: fileUploadService },\n { provide: SyncServiceAbstraction, useValue: syncService },\n { provide: UserServiceAbstraction, useValue: userService },\n { provide: MessagingServiceAbstraction, useValue: messagingService },\n { provide: BroadcasterService, useValue: broadcasterService },\n { provide: SettingsServiceAbstraction, useValue: settingsService },\n { provide: VaultTimeoutServiceAbstraction, useValue: vaultTimeoutService },\n { provide: StorageServiceAbstraction, useValue: storageService },\n { provide: StateServiceAbstraction, useValue: stateService },\n { provide: ExportServiceAbstraction, useValue: exportService },\n { provide: SearchServiceAbstraction, useValue: searchService },\n { provide: ImportServiceAbstraction, useValue: importService },\n { provide: NotificationsServiceAbstraction, useValue: notificationsService },\n { provide: CryptoFunctionServiceAbstraction, useValue: cryptoFunctionService },\n { provide: EventLoggingServiceAbstraction, useValue: eventLoggingService },\n { provide: PolicyServiceAbstraction, useValue: policyService },\n { provide: SendServiceAbstraction, useValue: sendService },\n { provide: PasswordRepromptServiceAbstraction, useValue: passwordRepromptService },\n {\n provide: APP_INITIALIZER,\n useFactory: initFactory,\n deps: [],\n multi: true,\n },\n {\n provide: LOCALE_ID,\n useFactory: () => i18nService.translationLocale,\n deps: [],\n },\n ],\n})\nexport class ServicesModule {\n}\n","import { MessagingService } from 'jslib-common/abstractions/messaging.service';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\n\nexport class BroadcasterMessagingService implements MessagingService {\n constructor(private broadcasterService: BroadcasterService) { }\n\n send(subscriber: string, arg: any = {}) {\n const message = Object.assign({}, { command: subscriber }, arg);\n this.broadcasterService.send(message);\n }\n}\n","import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { ConstantsService } from 'jslib-common/services';\n\nexport class HtmlStorageService implements StorageService {\n private localStorageKeys = new Set(['appId', 'anonymousAppId', 'rememberedEmail', 'passwordGenerationOptions',\n ConstantsService.disableFaviconKey, 'rememberEmail', 'enableGravatars', 'enableFullWidth',\n ConstantsService.localeKey, ConstantsService.autoConfirmFingerprints,\n ConstantsService.vaultTimeoutKey, ConstantsService.vaultTimeoutActionKey, ConstantsService.ssoCodeVerifierKey,\n ConstantsService.ssoStateKey, 'ssoOrgIdentifier']);\n private localStorageStartsWithKeys = ['twoFactorToken_', ConstantsService.collapsedGroupingsKey + '_'];\n private memoryStorageStartsWithKeys = ['ciphers_', 'folders_', 'collections_', 'settings_', 'lastSync_'];\n private memoryStorage = new Map();\n\n constructor(private platformUtilsService: PlatformUtilsService) { }\n\n async init() {\n // LockOption -> VaultTimeout (uses the same legacy string value for backwards compat)\n const vaultTimeout = await this.get(ConstantsService.vaultTimeoutKey);\n if (vaultTimeout == null && !this.platformUtilsService.isDev()) {\n await this.save(ConstantsService.vaultTimeoutKey, 15);\n }\n\n // Default Action to lock\n const vaultTimeoutAction = await this.get(ConstantsService.vaultTimeoutActionKey);\n if (vaultTimeoutAction == null) {\n await this.save(ConstantsService.vaultTimeoutActionKey, 'lock');\n }\n }\n\n get(key: string): Promise {\n let json: string = null;\n if (this.isLocalStorage(key)) {\n json = window.localStorage.getItem(key);\n } else if (this.isMemoryStorage(key)) {\n json = this.memoryStorage.get(key);\n } else {\n json = window.sessionStorage.getItem(key);\n }\n if (json != null) {\n const obj = JSON.parse(json);\n return Promise.resolve(obj as T);\n }\n return Promise.resolve(null);\n }\n\n async has(key: string): Promise {\n return await this.get(key) != null;\n }\n\n save(key: string, obj: any): Promise {\n if (obj == null) {\n return this.remove(key);\n }\n\n if (obj instanceof Set) {\n obj = Array.from(obj);\n }\n\n const json = JSON.stringify(obj);\n if (this.isLocalStorage(key)) {\n window.localStorage.setItem(key, json);\n } else if (this.isMemoryStorage(key)) {\n this.memoryStorage.set(key, json);\n } else {\n window.sessionStorage.setItem(key, json);\n }\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n if (this.isLocalStorage(key)) {\n window.localStorage.removeItem(key);\n } else if (this.isMemoryStorage(key)) {\n this.memoryStorage.delete(key);\n } else {\n window.sessionStorage.removeItem(key);\n }\n return Promise.resolve();\n }\n\n private isLocalStorage(key: string): boolean {\n if (this.localStorageKeys.has(key)) {\n return true;\n }\n for (const swKey of this.localStorageStartsWithKeys) {\n if (key.startsWith(swKey)) {\n return true;\n }\n }\n return false;\n }\n\n private isMemoryStorage(key: string): boolean {\n for (const swKey of this.memoryStorageStartsWithKeys) {\n if (key.startsWith(swKey)) {\n return true;\n }\n }\n return false;\n }\n}\n","export { ApiService } from './api.service';\nexport { AppIdService } from './appId.service';\nexport { AuditService } from './audit.service';\nexport { AuthService } from './auth.service';\nexport { CipherService } from './cipher.service';\nexport { CollectionService } from './collection.service';\nexport { ConstantsService } from './constants.service';\nexport { ContainerService } from './container.service';\nexport { CryptoService } from './crypto.service';\nexport { EnvironmentService } from './environment.service';\nexport { FolderService } from './folder.service';\nexport { I18nService } from './i18n.service';\nexport { PasswordGenerationService } from './passwordGeneration.service';\nexport { SettingsService } from './settings.service';\nexport { StateService } from './state.service';\nexport { SyncService } from './sync.service';\nexport { TokenService } from './token.service';\nexport { TotpService } from './totp.service';\nexport { UserService } from './user.service';\nexport { VaultTimeoutService } from './vaultTimeout.service';\n","import { BaseResponse } from './baseResponse';\n\nexport class ApiKeyResponse extends BaseResponse {\n apiKey: string;\n\n constructor(response: any) {\n super(response);\n this.apiKey = this.getResponseProperty('ApiKey');\n }\n}\n","import { FileUploadType } from '../../enums/fileUploadType';\nimport { BaseResponse } from './baseResponse';\nimport { CipherResponse } from './cipherResponse';\n\nexport class AttachmentUploadDataResponse extends BaseResponse {\n attachmentId: string;\n fileUploadType: FileUploadType;\n cipherResponse: CipherResponse;\n cipherMiniResponse: CipherResponse;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.attachmentId = this.getResponseProperty('AttachmentId');\n this.fileUploadType = this.getResponseProperty('FileUploadType');\n const cipherResponse = this.getResponseProperty('CipherResponse');\n const cipherMiniResponse = this.getResponseProperty('CipherMiniResponse');\n this.cipherResponse = cipherResponse == null ? null : new CipherResponse(cipherResponse);\n this.cipherMiniResponse = cipherMiniResponse == null ? null : new CipherResponse(cipherMiniResponse);\n this.url = this.getResponseProperty('Url');\n }\n\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { PaymentMethodType } from '../../enums/paymentMethodType';\nimport { TransactionType } from '../../enums/transactionType';\n\nexport class BillingResponse extends BaseResponse {\n balance: number;\n paymentSource: BillingSourceResponse;\n invoices: BillingInvoiceResponse[] = [];\n transactions: BillingTransactionResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.balance = this.getResponseProperty('Balance');\n const paymentSource = this.getResponseProperty('PaymentSource');\n const transactions = this.getResponseProperty('Transactions');\n const invoices = this.getResponseProperty('Invoices');\n this.paymentSource = paymentSource == null ? null : new BillingSourceResponse(paymentSource);\n if (transactions != null) {\n this.transactions = transactions.map((t: any) => new BillingTransactionResponse(t));\n }\n if (invoices != null) {\n this.invoices = invoices.map((i: any) => new BillingInvoiceResponse(i));\n }\n }\n}\n\nexport class BillingSourceResponse extends BaseResponse {\n type: PaymentMethodType;\n cardBrand: string;\n description: string;\n needsVerification: boolean;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.cardBrand = this.getResponseProperty('CardBrand');\n this.description = this.getResponseProperty('Description');\n this.needsVerification = this.getResponseProperty('NeedsVerification');\n }\n}\n\nexport class BillingInvoiceResponse extends BaseResponse {\n url: string;\n pdfUrl: string;\n number: string;\n paid: boolean;\n date: string;\n amount: number;\n\n constructor(response: any) {\n super(response);\n this.url = this.getResponseProperty('Url');\n this.pdfUrl = this.getResponseProperty('PdfUrl');\n this.number = this.getResponseProperty('Number');\n this.paid = this.getResponseProperty('Paid');\n this.date = this.getResponseProperty('Date');\n this.amount = this.getResponseProperty('Amount');\n }\n}\n\nexport class BillingTransactionResponse extends BaseResponse {\n createdDate: string;\n amount: number;\n refunded: boolean;\n partiallyRefunded: boolean;\n refundedAmount: number;\n type: TransactionType;\n paymentMethodType: PaymentMethodType;\n details: string;\n\n constructor(response: any) {\n super(response);\n this.createdDate = this.getResponseProperty('CreatedDate');\n this.amount = this.getResponseProperty('Amount');\n this.refunded = this.getResponseProperty('Refunded');\n this.partiallyRefunded = this.getResponseProperty('PartiallyRefunded');\n this.refundedAmount = this.getResponseProperty('RefundedAmount');\n this.type = this.getResponseProperty('Type');\n this.paymentMethodType = this.getResponseProperty('PaymentMethodType');\n this.details = this.getResponseProperty('Details');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class BreachAccountResponse extends BaseResponse {\n addedDate: string;\n breachDate: string;\n dataClasses: string[];\n description: string;\n domain: string;\n isActive: boolean;\n isVerified: boolean;\n logoPath: string;\n modifiedDate: string;\n name: string;\n pwnCount: number;\n title: string;\n\n constructor(response: any) {\n super(response);\n this.addedDate = this.getResponseProperty('AddedDate');\n this.breachDate = this.getResponseProperty('BreachDate');\n this.dataClasses = this.getResponseProperty('DataClasses');\n this.description = this.getResponseProperty('Description');\n this.domain = this.getResponseProperty('Domain');\n this.isActive = this.getResponseProperty('IsActive');\n this.isVerified = this.getResponseProperty('IsVerified');\n this.logoPath = this.getResponseProperty('LogoPath');\n this.modifiedDate = this.getResponseProperty('ModifiedDate');\n this.name = this.getResponseProperty('Name');\n this.pwnCount = this.getResponseProperty('PwnCount');\n this.title = this.getResponseProperty('Title');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { DeviceType } from '../../enums/deviceType';\nimport { EventType } from '../../enums/eventType';\n\nexport class EventResponse extends BaseResponse {\n type: EventType;\n userId: string;\n organizationId: string;\n cipherId: string;\n collectionId: string;\n groupId: string;\n policyId: string;\n organizationUserId: string;\n actingUserId: string;\n date: string;\n deviceType: DeviceType;\n ipAddress: string;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.userId = this.getResponseProperty('UserId');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.cipherId = this.getResponseProperty('CipherId');\n this.collectionId = this.getResponseProperty('CollectionId');\n this.groupId = this.getResponseProperty('GroupId');\n this.policyId = this.getResponseProperty('PolicyId');\n this.organizationUserId = this.getResponseProperty('OrganizationUserId');\n this.actingUserId = this.getResponseProperty('ActingUserId');\n this.date = this.getResponseProperty('Date');\n this.deviceType = this.getResponseProperty('DeviceType');\n this.ipAddress = this.getResponseProperty('IpAddress');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nexport class GroupResponse extends BaseResponse {\n id: string;\n organizationId: string;\n name: string;\n accessAll: boolean;\n externalId: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.name = this.getResponseProperty('Name');\n this.accessAll = this.getResponseProperty('AccessAll');\n this.externalId = this.getResponseProperty('ExternalId');\n }\n}\n\nexport class GroupDetailsResponse extends GroupResponse {\n collections: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const collections = this.getResponseProperty('Collections');\n if (collections != null) {\n this.collections = collections.map((c: any) => new SelectionReadOnlyResponse(c));\n }\n }\n}\n","import { KeysResponse } from './keysResponse';\n\nexport class OrganizationKeysResponse extends KeysResponse {\n constructor(response: any) {\n super(response);\n }\n}\n","import { OrganizationResponse } from './organizationResponse';\nimport {\n BillingSubscriptionResponse,\n BillingSubscriptionUpcomingInvoiceResponse,\n} from './subscriptionResponse';\n\nexport class OrganizationSubscriptionResponse extends OrganizationResponse {\n storageName: string;\n storageGb: number;\n subscription: BillingSubscriptionResponse;\n upcomingInvoice: BillingSubscriptionUpcomingInvoiceResponse;\n expiration: string;\n\n constructor(response: any) {\n super(response);\n this.storageName = this.getResponseProperty('StorageName');\n this.storageGb = this.getResponseProperty('StorageGb');\n const subscription = this.getResponseProperty('Subscription');\n this.subscription = subscription == null ? null : new BillingSubscriptionResponse(subscription);\n const upcomingInvoice = this.getResponseProperty('UpcomingInvoice');\n this.upcomingInvoice = upcomingInvoice == null ? null :\n new BillingSubscriptionUpcomingInvoiceResponse(upcomingInvoice);\n this.expiration = this.getResponseProperty('Expiration');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class OrganizationUserBulkPublicKeyResponse extends BaseResponse {\n id: string;\n userId: string;\n key: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.key = this.getResponseProperty('Key');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class OrganizationUserBulkResponse extends BaseResponse {\n id: string;\n error: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.error = this.getResponseProperty('Error');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nimport { PermissionsApi } from '../api/permissionsApi';\n\nimport { KdfType } from '../../enums/kdfType';\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\n\nexport class OrganizationUserResponse extends BaseResponse {\n id: string;\n userId: string;\n type: OrganizationUserType;\n status: OrganizationUserStatusType;\n accessAll: boolean;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.type = this.getResponseProperty('Type');\n this.status = this.getResponseProperty('Status');\n this.permissions = new PermissionsApi(this.getResponseProperty('Permissions'));\n this.accessAll = this.getResponseProperty('AccessAll');\n this.resetPasswordEnrolled = this.getResponseProperty('ResetPasswordEnrolled');\n }\n}\n\nexport class OrganizationUserUserDetailsResponse extends OrganizationUserResponse {\n name: string;\n email: string;\n twoFactorEnabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.twoFactorEnabled = this.getResponseProperty('TwoFactorEnabled');\n }\n}\n\nexport class OrganizationUserDetailsResponse extends OrganizationUserResponse {\n collections: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const collections = this.getResponseProperty('Collections');\n if (collections != null) {\n this.collections = collections.map((c: any) => new SelectionReadOnlyResponse(c));\n }\n }\n}\n\nexport class OrganizationUserResetPasswordDetailsReponse extends BaseResponse {\n kdf: KdfType;\n kdfIterations: number;\n resetPasswordKey: string;\n encryptedPrivateKey: string;\n\n constructor(response: any) {\n super(response);\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n this.resetPasswordKey = this.getResponseProperty('ResetPasswordKey');\n this.encryptedPrivateKey = this.getResponseProperty('EncryptedPrivateKey');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { ProfileResponse } from './profileResponse';\n\nexport class PaymentResponse extends BaseResponse {\n userProfile: ProfileResponse;\n paymentIntentClientSecret: string;\n success: boolean;\n\n constructor(response: any) {\n super(response);\n const userProfile = this.getResponseProperty('UserProfile');\n if (userProfile != null) {\n this.userProfile = new ProfileResponse(userProfile);\n }\n this.paymentIntentClientSecret = this.getResponseProperty('PaymentIntentClientSecret');\n this.success = this.getResponseProperty('Success');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class PreloginResponse extends BaseResponse {\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { SendType } from '../../enums/sendType';\n\nimport { SendFileApi } from '../api/sendFileApi';\nimport { SendTextApi } from '../api/sendTextApi';\n\nexport class SendAccessResponse extends BaseResponse {\n id: string;\n type: SendType;\n name: string;\n file: SendFileApi;\n text: SendTextApi;\n expirationDate: Date;\n creatorIdentifier: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n\n const text = this.getResponseProperty('Text');\n if (text != null) {\n this.text = new SendTextApi(text);\n }\n\n const file = this.getResponseProperty('File');\n if (file != null) {\n this.file = new SendFileApi(file);\n }\n\n this.expirationDate = this.getResponseProperty('ExpirationDate');\n this.creatorIdentifier = this.getResponseProperty('CreatorIdentifier');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class SendFileDownloadDataResponse extends BaseResponse {\n\n id: string = null;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.url = this.getResponseProperty('Url');\n }\n}\n","import { FileUploadType } from '../../enums/fileUploadType';\n\nimport { BaseResponse } from './baseResponse';\nimport { SendResponse } from './sendResponse';\n\nexport class SendFileUploadDataResponse extends BaseResponse {\n\n fileUploadType: FileUploadType;\n sendResponse: SendResponse;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.fileUploadType = this.getResponseProperty('FileUploadType');\n const sendResponse = this.getResponseProperty('SendResponse');\n this.sendResponse = sendResponse == null ? null : new SendResponse(sendResponse);\n this.url = this.getResponseProperty('Url');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TaxInfoResponse extends BaseResponse {\n taxId: string;\n taxIdType: string;\n line1: string;\n line2: string;\n city: string;\n state: string;\n country: string;\n postalCode: string;\n\n constructor(response: any) {\n super(response);\n this.taxId = this.getResponseProperty('TaxIdNumber');\n this.taxIdType = this.getResponseProperty('TaxIdType');\n this.line1 = this.getResponseProperty('Line1');\n this.line2 = this.getResponseProperty('Line2');\n this.city = this.getResponseProperty('City');\n this.state = this.getResponseProperty('State');\n this.postalCode = this.getResponseProperty('PostalCode');\n this.country = this.getResponseProperty('Country');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TaxRateResponse extends BaseResponse {\n id: string;\n country: string;\n state: string;\n postalCode: string;\n rate: number;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.country = this.getResponseProperty('Country');\n this.state = this.getResponseProperty('State');\n this.postalCode = this.getResponseProperty('PostalCode');\n this.rate = this.getResponseProperty('Rate');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorAuthenticatorResponse extends BaseResponse {\n enabled: boolean;\n key: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.key = this.getResponseProperty('Key');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorDuoResponse extends BaseResponse {\n enabled: boolean;\n host: string;\n secretKey: string;\n integrationKey: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.host = this.getResponseProperty('Host');\n this.secretKey = this.getResponseProperty('SecretKey');\n this.integrationKey = this.getResponseProperty('IntegrationKey');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorEmailResponse extends BaseResponse {\n enabled: boolean;\n email: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.email = this.getResponseProperty('Email');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class TwoFactorProviderResponse extends BaseResponse {\n enabled: boolean;\n type: TwoFactorProviderType;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.type = this.getResponseProperty('Type');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorRecoverResponse extends BaseResponse {\n code: string;\n\n constructor(response: any) {\n super(response);\n this.code = this.getResponseProperty('Code');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorYubiKeyResponse extends BaseResponse {\n enabled: boolean;\n key1: string;\n key2: string;\n key3: string;\n key4: string;\n key5: string;\n nfc: boolean;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.key1 = this.getResponseProperty('Key1');\n this.key2 = this.getResponseProperty('Key2');\n this.key3 = this.getResponseProperty('Key3');\n this.key4 = this.getResponseProperty('Key4');\n this.key5 = this.getResponseProperty('Key5');\n this.nfc = this.getResponseProperty('Nfc');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class UserKeyResponse extends BaseResponse {\n userId: string;\n publicKey: string;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty('UserId');\n this.publicKey = this.getResponseProperty('PublicKey');\n }\n}\n","/**\n * Use as a Decorator on async functions, it will limit how many times the function can be\n * in-flight at a time.\n *\n * Calls beyond the limit will be queued, and run when one of the active calls finishes\n */\nexport function throttle(limit: number, throttleKey: (args: any[]) => string) {\n return (target: any, propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise>) => {\n const originalMethod: () => Promise = descriptor.value;\n const allThrottles = new Map void)[]>>();\n\n const getThrottles = (obj: any) => {\n let throttles = allThrottles.get(obj);\n if (throttles != null) {\n return throttles;\n }\n throttles = new Map void)[]>();\n allThrottles.set(obj, throttles);\n return throttles;\n };\n\n return {\n value: function(...args: any[]) {\n const throttles = getThrottles(this);\n const argsThrottleKey = throttleKey(args);\n let queue = throttles.get(argsThrottleKey);\n if (queue == null) {\n queue = [];\n throttles.set(argsThrottleKey, queue);\n }\n\n return new Promise((resolve, reject) => {\n const exec = () => {\n const onFinally = () => {\n queue.splice(queue.indexOf(exec), 1);\n if (queue.length >= limit) {\n queue[limit - 1]();\n } else if (queue.length === 0) {\n throttles.delete(argsThrottleKey);\n if (throttles.size === 0) {\n allThrottles.delete(this);\n }\n }\n };\n originalMethod.apply(this, args).then((val: any) => {\n onFinally();\n return val;\n }).catch((err: any) => {\n onFinally();\n throw err;\n }).then(resolve, reject);\n };\n queue.push(exec);\n if (queue.length <= limit) {\n exec();\n }\n });\n },\n };\n };\n}\n","export class CipherBulkMoveRequest {\n ids: string[];\n folderId: string;\n\n constructor(ids: string[], folderId: string) {\n this.ids = ids == null ? [] : ids;\n this.folderId = folderId;\n }\n}\n","export class CipherBulkRestoreRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","import { CipherWithIdRequest } from './cipherWithIdRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherBulkShareRequest {\n ciphers: CipherWithIdRequest[];\n collectionIds: string[];\n\n constructor(ciphers: Cipher[], collectionIds: string[]) {\n if (ciphers != null) {\n this.ciphers = [];\n ciphers.forEach(c => {\n this.ciphers.push(new CipherWithIdRequest(c));\n });\n }\n this.collectionIds = collectionIds;\n }\n}\n","import { CipherRequest } from './cipherRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherShareRequest {\n cipher: CipherRequest;\n collectionIds: string[];\n\n constructor(cipher: Cipher) {\n this.cipher = new CipherRequest(cipher);\n this.collectionIds = cipher.collectionIds;\n }\n}\n","import { CipherView } from '../view';\n\nconst CacheTTL = 3000;\n\nexport class SortedCiphersCache {\n private readonly sortedCiphersByUrl: Map = new Map();\n private readonly timeouts: Map = new Map();\n\n constructor(private readonly comparator: (a: CipherView, b: CipherView) => number) { }\n\n isCached(url: string) {\n return this.sortedCiphersByUrl.has(url);\n }\n\n addCiphers(url: string, ciphers: CipherView[]) {\n ciphers.sort(this.comparator);\n this.sortedCiphersByUrl.set(url, new Ciphers(ciphers));\n this.resetTimer(url);\n }\n\n getLastUsed(url: string) {\n this.resetTimer(url);\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getLastUsed() : null;\n }\n\n getLastLaunched(url: string) {\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getLastLaunched() : null;\n }\n\n getNext(url: string) {\n this.resetTimer(url);\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getNext() : null;\n }\n\n updateLastUsedIndex(url: string) {\n if (this.isCached(url)) {\n this.sortedCiphersByUrl.get(url).updateLastUsedIndex();\n }\n }\n\n clear() {\n this.sortedCiphersByUrl.clear();\n this.timeouts.clear();\n }\n\n private resetTimer(url: string) {\n clearTimeout(this.timeouts.get(url));\n this.timeouts.set(url, setTimeout(() => {\n this.sortedCiphersByUrl.delete(url);\n this.timeouts.delete(url);\n }, CacheTTL));\n }\n}\n\nclass Ciphers {\n lastUsedIndex = -1;\n\n constructor(private readonly ciphers: CipherView[]) { }\n\n getLastUsed() {\n this.lastUsedIndex = Math.max(this.lastUsedIndex, 0);\n return this.ciphers[this.lastUsedIndex];\n }\n\n getLastLaunched() {\n const usedCiphers = this.ciphers.filter(cipher => cipher.localData?.lastLaunched);\n const sortedCiphers = usedCiphers.sort((x, y) => y.localData.lastLaunched.valueOf() - x.localData.lastLaunched.valueOf());\n return sortedCiphers[0];\n }\n\n getNextIndex() {\n return (this.lastUsedIndex + 1) % this.ciphers.length;\n }\n\n getNext() {\n return this.ciphers[this.getNextIndex()];\n }\n\n updateLastUsedIndex() {\n this.lastUsedIndex = this.getNextIndex();\n }\n}\n","export class TreeNode {\n parent: T;\n node: T;\n children: TreeNode[] = [];\n\n constructor(node: T, name: string, parent: T) {\n this.parent = parent;\n this.node = node;\n this.node.name = name;\n }\n}\n\nexport interface ITreeNodeObject {\n id: string;\n name: string;\n}\n","export class EncArrayBuffer {\n constructor(public buffer: ArrayBuffer) { }\n}\n","import Domain from './domainBase';\n\nexport class PasswordGeneratorPolicyOptions extends Domain {\n defaultType: string = '';\n minLength: number = 0;\n useUppercase: boolean = false;\n useLowercase: boolean = false;\n useNumbers: boolean = false;\n numberCount: number = 0;\n useSpecial: boolean = false;\n specialCount: number = 0;\n minNumberWords: number = 0;\n capitalize: boolean = false;\n includeNumber: boolean = false;\n\n inEffect() {\n return this.defaultType !== '' ||\n this.minLength > 0 ||\n this.numberCount > 0 ||\n this.specialCount > 0 ||\n this.useUppercase ||\n this.useLowercase ||\n this.useNumbers ||\n this.useSpecial ||\n this.minNumberWords > 0 ||\n this.capitalize ||\n this.includeNumber;\n }\n}\n","import { ProfileOrganizationResponse } from '../response/profileOrganizationResponse';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class OrganizationData {\n id: string;\n name: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useBusinessPortal: boolean;\n useSso: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n hasPublicAndPrivateKeys: boolean;\n\n constructor(response: ProfileOrganizationResponse) {\n this.id = response.id;\n this.name = response.name;\n this.status = response.status;\n this.type = response.type;\n this.enabled = response.enabled;\n this.usePolicies = response.usePolicies;\n this.useGroups = response.useGroups;\n this.useDirectory = response.useDirectory;\n this.useEvents = response.useEvents;\n this.useTotp = response.useTotp;\n this.use2fa = response.use2fa;\n this.useApi = response.useApi;\n this.useBusinessPortal = response.useBusinessPortal;\n this.useSso = response.useSso;\n this.useResetPassword = response.useResetPassword;\n this.selfHost = response.selfHost;\n this.usersGetPremium = response.usersGetPremium;\n this.seats = response.seats;\n this.maxCollections = response.maxCollections;\n this.maxStorageGb = response.maxStorageGb;\n this.ssoBound = response.ssoBound;\n this.identifier = response.identifier;\n this.permissions = response.permissions;\n this.resetPasswordEnrolled = response.resetPasswordEnrolled;\n this.userId = response.userId;\n this.hasPublicAndPrivateKeys = response.hasPublicAndPrivateKeys;\n }\n}\n","import { SendFileApi } from '../api/sendFileApi';\n\nexport class SendFileData {\n id: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(data?: SendFileApi) {\n if (data == null) {\n return;\n }\n\n this.id = data.id;\n this.fileName = data.fileName;\n this.key = data.key;\n this.size = data.size;\n this.sizeName = data.sizeName;\n }\n}\n","import { SendTextApi } from '../api/sendTextApi';\n\nexport class SendTextData {\n text: string;\n hidden: boolean;\n\n constructor(data?: SendTextApi) {\n if (data == null) {\n return;\n }\n\n this.text = data.text;\n this.hidden = data.hidden;\n }\n}\n","import { I18nService as BaseI18nService } from 'jslib-common/services/i18n.service';\n\nexport class I18nService extends BaseI18nService {\n constructor(systemLanguage: string, localesDirectory: string) {\n super(systemLanguage || 'en-US', localesDirectory, async (formattedLocale: string) => {\n const filePath = this.localesDirectory + '/' + formattedLocale + '/messages.json?cache=' +\n process.env.CACHE_TAG;\n const localesResult = await fetch(filePath);\n const locales = await localesResult.json();\n return locales;\n });\n\n this.supportedTranslationLocales = [\n 'en', 'bg', 'ca', 'cs', 'da', 'de', 'el', 'eo', 'en-GB', 'en-IN', 'es', 'et', 'fi', 'fr', 'he', 'hr', 'hu', 'id', 'it', 'ja', 'ko', 'lv', 'ml', 'nb',\n 'nl', 'pl', 'pt-PT', 'pt-BR', 'ro', 'ru', 'sk', 'sr', 'sv', 'tr', 'uk', 'zh-CN', 'zh-TW',\n ];\n }\n}\n","import { StorageService } from 'jslib-common/abstractions/storage.service';\n\nexport class MemoryStorageService implements StorageService {\n private store = new Map();\n\n get(key: string): Promise {\n if (this.store.has(key)) {\n const obj = this.store.get(key);\n return Promise.resolve(obj as T);\n }\n return Promise.resolve(null);\n }\n\n async has(key: string): Promise {\n return this.get(key) != null;\n }\n\n save(key: string, obj: any): Promise {\n if (obj == null) {\n return this.remove(key);\n }\n this.store.set(key, obj);\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n this.store.delete(key);\n return Promise.resolve();\n }\n}\n","import Swal, { SweetAlertIcon } from 'sweetalert2';\n\nimport { DeviceType } from 'jslib-common/enums/deviceType';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nexport class WebPlatformUtilsService implements PlatformUtilsService {\n identityClientId: string = 'web';\n\n private browserCache: DeviceType = null;\n\n constructor(private i18nService: I18nService, private messagingService: MessagingService,\n private logService: LogService) { }\n\n getDevice(): DeviceType {\n if (this.browserCache != null) {\n return this.browserCache;\n }\n\n if (navigator.userAgent.indexOf(' Firefox/') !== -1 || navigator.userAgent.indexOf(' Gecko/') !== -1) {\n this.browserCache = DeviceType.FirefoxBrowser;\n } else if (navigator.userAgent.indexOf(' OPR/') >= 0) {\n this.browserCache = DeviceType.OperaBrowser;\n } else if (navigator.userAgent.indexOf(' Edg/') !== -1) {\n this.browserCache = DeviceType.EdgeBrowser;\n } else if (navigator.userAgent.indexOf(' Vivaldi/') !== -1) {\n this.browserCache = DeviceType.VivaldiBrowser;\n } else if (navigator.userAgent.indexOf(' Safari/') !== -1 && navigator.userAgent.indexOf('Chrome') === -1) {\n this.browserCache = DeviceType.SafariBrowser;\n } else if ((window as any).chrome && navigator.userAgent.indexOf(' Chrome/') !== -1) {\n this.browserCache = DeviceType.ChromeBrowser;\n } else if (navigator.userAgent.indexOf(' Trident/') !== -1) {\n this.browserCache = DeviceType.IEBrowser;\n } else {\n this.browserCache = DeviceType.UnknownBrowser;\n }\n\n return this.browserCache;\n }\n\n getDeviceString(): string {\n const device = DeviceType[this.getDevice()].toLowerCase();\n return device.replace('browser', '');\n }\n\n isFirefox(): boolean {\n return this.getDevice() === DeviceType.FirefoxBrowser;\n }\n\n isChrome(): boolean {\n return this.getDevice() === DeviceType.ChromeBrowser;\n }\n\n isEdge(): boolean {\n return this.getDevice() === DeviceType.EdgeBrowser;\n }\n\n isOpera(): boolean {\n return this.getDevice() === DeviceType.OperaBrowser;\n }\n\n isVivaldi(): boolean {\n return this.getDevice() === DeviceType.VivaldiBrowser;\n }\n\n isSafari(): boolean {\n return this.getDevice() === DeviceType.SafariBrowser;\n }\n\n isIE(): boolean {\n return this.getDevice() === DeviceType.IEBrowser;\n }\n\n isMacAppStore(): boolean {\n return false;\n }\n\n isViewOpen(): Promise {\n return Promise.resolve(false);\n }\n\n lockTimeout(): number {\n return null;\n }\n\n launchUri(uri: string, options?: any): void {\n const a = document.createElement('a');\n a.href = uri;\n if (options == null || !options.sameWindow) {\n a.target = '_blank';\n a.rel = 'noreferrer noopener';\n }\n a.classList.add('d-none');\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n\n saveFile(win: Window, blobData: any, blobOptions: any, fileName: string): void {\n let blob: Blob = null;\n let type: string = null;\n const fileNameLower = fileName.toLowerCase();\n let doDownload = true;\n if (fileNameLower.endsWith('.pdf')) {\n type = 'application/pdf';\n doDownload = false;\n } else if (fileNameLower.endsWith('.xlsx')) {\n type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n } else if (fileNameLower.endsWith('.docx')) {\n type = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n } else if (fileNameLower.endsWith('.pptx')) {\n type = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';\n } else if (fileNameLower.endsWith('.csv')) {\n type = 'text/csv';\n } else if (fileNameLower.endsWith('.png')) {\n type = 'image/png';\n } else if (fileNameLower.endsWith('.jpg') || fileNameLower.endsWith('.jpeg')) {\n type = 'image/jpeg';\n } else if (fileNameLower.endsWith('.gif')) {\n type = 'image/gif';\n }\n if (type != null) {\n blobOptions = blobOptions || {};\n if (blobOptions.type == null) {\n blobOptions.type = type;\n }\n }\n if (blobOptions != null && !this.isIE()) {\n blob = new Blob([blobData], blobOptions);\n } else {\n blob = new Blob([blobData]);\n }\n if (navigator.msSaveOrOpenBlob) {\n navigator.msSaveBlob(blob, fileName);\n } else {\n const a = win.document.createElement('a');\n if (doDownload) {\n a.download = fileName;\n } else if (!this.isSafari()) {\n a.target = '_blank';\n }\n a.href = URL.createObjectURL(blob);\n a.style.position = 'fixed';\n win.document.body.appendChild(a);\n a.click();\n win.document.body.removeChild(a);\n }\n }\n\n getApplicationVersion(): Promise {\n return Promise.resolve(process.env.APPLICATION_VERSION || '-');\n }\n\n supportsWebAuthn(win: Window): boolean {\n return (typeof(PublicKeyCredential) !== 'undefined');\n }\n\n supportsDuo(): boolean {\n return true;\n }\n\n showToast(type: 'error' | 'success' | 'warning' | 'info', title: string, text: string | string[],\n options?: any): void {\n this.messagingService.send('showToast', {\n text: text,\n title: title,\n type: type,\n options: options,\n });\n }\n\n async showDialog(body: string, title?: string, confirmText?: string, cancelText?: string, type?: string,\n bodyIsHtml: boolean = false) {\n let iconClasses: string = null;\n if (type != null) {\n // If you add custom types to this part, the type to SweetAlertIcon cast below needs to be changed.\n switch (type) {\n case 'success':\n iconClasses = 'fa-check text-success';\n break;\n case 'warning':\n iconClasses = 'fa-warning text-warning';\n break;\n case 'error':\n iconClasses = 'fa-bolt text-danger';\n break;\n case 'info':\n iconClasses = 'fa-info-circle text-info';\n break;\n default:\n break;\n }\n }\n\n const bootstrapModal = document.querySelector('div.modal');\n if (bootstrapModal != null) {\n bootstrapModal.removeAttribute('tabindex');\n }\n\n const iconHtmlStr = iconClasses != null ? `` : undefined;\n const confirmed = await Swal.fire({\n heightAuto: false,\n buttonsStyling: false,\n icon: type as SweetAlertIcon, // required to be any of the SweetAlertIcons to output the iconHtml.\n iconHtml: iconHtmlStr,\n text: bodyIsHtml ? null : body,\n html: bodyIsHtml ? body : null,\n titleText: title,\n showCancelButton: (cancelText != null),\n cancelButtonText: cancelText,\n showConfirmButton: true,\n confirmButtonText: confirmText == null ? this.i18nService.t('ok') : confirmText,\n });\n\n if (bootstrapModal != null) {\n bootstrapModal.setAttribute('tabindex', '-1');\n }\n\n return confirmed.value;\n }\n\n async showPasswordDialog(title: string, body: string, passwordValidation: (value: string) => Promise):\n Promise {\n const result = await Swal.fire({\n heightAuto: false,\n titleText: title,\n input: 'password',\n text: body,\n confirmButtonText: this.i18nService.t('ok'),\n showCancelButton: true,\n cancelButtonText: this.i18nService.t('cancel'),\n inputAttributes: {\n autocapitalize: 'off',\n autocorrect: 'off',\n },\n inputValidator: async (value: string): Promise => {\n if (await passwordValidation(value)) {\n return false;\n }\n\n return this.i18nService.t('invalidMasterPassword');\n },\n });\n\n return result.isConfirmed;\n }\n\n isDev(): boolean {\n return false;\n }\n\n // Even though Vaultwarden is self-hosted, returning true ends up enabling various license checks.\n isSelfHost(): boolean {\n return false;\n }\n\n copyToClipboard(text: string, options?: any): void | boolean {\n let win = window;\n let doc = window.document;\n if (options && (options.window || options.win)) {\n win = options.window || options.win;\n doc = win.document;\n } else if (options && options.doc) {\n doc = options.doc;\n }\n if ((win as any).clipboardData && (win as any).clipboardData.setData) {\n // IE specific code path to prevent textarea being shown while dialog is visible.\n (win as any).clipboardData.setData('Text', text);\n } else if (doc.queryCommandSupported && doc.queryCommandSupported('copy')) {\n const textarea = doc.createElement('textarea');\n textarea.textContent = text;\n // Prevent scrolling to bottom of page in MS Edge.\n textarea.style.position = 'fixed';\n let copyEl = doc.body;\n // For some reason copy command won't work when modal is open if appending to body\n if (doc.body.classList.contains('modal-open')) {\n copyEl = doc.body.querySelector('.modal');\n }\n copyEl.appendChild(textarea);\n textarea.select();\n let success = false;\n try {\n // Security exception may be thrown by some browsers.\n success = doc.execCommand('copy');\n if (!success) {\n this.logService.debug('Copy command unsupported or disabled.');\n }\n } catch (e) {\n // tslint:disable-next-line\n console.warn('Copy to clipboard failed.', e);\n } finally {\n copyEl.removeChild(textarea);\n }\n return success;\n }\n }\n\n readFromClipboard(options?: any): Promise {\n throw new Error('Cannot read from clipboard on web.');\n }\n\n supportsBiometric() {\n return Promise.resolve(false);\n }\n\n authenticateBiometric() {\n return Promise.resolve(false);\n }\n\n supportsSecureStorage() {\n return false;\n }\n\n getDefaultSystemTheme() {\n return Promise.resolve(null as 'light' | 'dark');\n }\n\n onDefaultSystemThemeChange() {\n /* noop */\n }\n}\n","import { EventType } from '../enums/eventType';\n\nimport { EventData } from '../models/data/eventData';\n\nimport { EventRequest } from '../models/request/eventRequest';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { EventService as EventServiceAbstraction } from '../abstractions/event.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { ConstantsService } from './constants.service';\n\nexport class EventService implements EventServiceAbstraction {\n private inited = false;\n\n constructor(private storageService: StorageService, private apiService: ApiService,\n private userService: UserService, private cipherService: CipherService) { }\n\n init(checkOnInterval: boolean) {\n if (this.inited) {\n return;\n }\n\n this.inited = true;\n if (checkOnInterval) {\n this.uploadEvents();\n setInterval(() => this.uploadEvents(), 60 * 1000); // check every 60 seconds\n }\n }\n\n async collect(eventType: EventType, cipherId: string = null, uploadImmediately = false): Promise {\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n const organizations = await this.userService.getAllOrganizations();\n if (organizations == null) {\n return;\n }\n const orgIds = new Set(organizations.filter(o => o.useEvents).map(o => o.id));\n if (orgIds.size === 0) {\n return;\n }\n if (cipherId != null) {\n const cipher = await this.cipherService.get(cipherId);\n if (cipher == null || cipher.organizationId == null || !orgIds.has(cipher.organizationId)) {\n return;\n }\n }\n let eventCollection = await this.storageService.get(ConstantsService.eventCollectionKey);\n if (eventCollection == null) {\n eventCollection = [];\n }\n const event = new EventData();\n event.type = eventType;\n event.cipherId = cipherId;\n event.date = new Date().toISOString();\n eventCollection.push(event);\n await this.storageService.save(ConstantsService.eventCollectionKey, eventCollection);\n if (uploadImmediately) {\n await this.uploadEvents();\n }\n }\n\n async uploadEvents(): Promise {\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n const eventCollection = await this.storageService.get(ConstantsService.eventCollectionKey);\n if (eventCollection == null || eventCollection.length === 0) {\n return;\n }\n const request = eventCollection.map(e => {\n const req = new EventRequest();\n req.type = e.type;\n req.cipherId = e.cipherId;\n req.date = e.date;\n return req;\n });\n try {\n await this.apiService.postEventsCollect(request);\n this.clearEvents();\n } catch { }\n }\n\n async clearEvents(): Promise {\n await this.storageService.remove(ConstantsService.eventCollectionKey);\n }\n}\n","import { EventType } from '../../enums/eventType';\n\nexport class EventData {\n type: EventType;\n cipherId: string;\n date: string;\n}\n","import { EventType } from '../../enums/eventType';\n\nexport class EventRequest {\n type: EventType;\n cipherId: string;\n date: string;\n}\n","import * as papa from 'papaparse';\n\nimport { CipherType } from '../enums/cipherType';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { ExportService as ExportServiceAbstraction } from '../abstractions/export.service';\nimport { FolderService } from '../abstractions/folder.service';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { CollectionView } from '../models/view/collectionView';\nimport { FolderView } from '../models/view/folderView';\n\nimport { Cipher } from '../models/domain/cipher';\nimport { Collection } from '../models/domain/collection';\nimport { Folder } from '../models/domain/folder';\n\nimport { CipherData } from '../models/data/cipherData';\nimport { CollectionData } from '../models/data/collectionData';\nimport { CollectionDetailsResponse } from '../models/response/collectionResponse';\n\nimport { CipherWithIds as CipherExport } from '../models/export/cipherWithIds';\nimport { CollectionWithId as CollectionExport } from '../models/export/collectionWithId';\nimport { Event } from '../models/export/event';\nimport { FolderWithId as FolderExport } from '../models/export/folderWithId';\nimport { EventView } from '../models/view/eventView';\n\nimport { Utils } from '../misc/utils';\n\nexport class ExportService implements ExportServiceAbstraction {\n constructor(private folderService: FolderService, private cipherService: CipherService,\n private apiService: ApiService, private cryptoService: CryptoService) { }\n\n async getExport(format: 'csv' | 'json' | 'encrypted_json' = 'csv'): Promise {\n if (format === 'encrypted_json') {\n return this.getEncryptedExport();\n } else {\n return this.getDecryptedExport(format);\n }\n }\n\n async getOrganizationExport(organizationId: string,\n format: 'csv' | 'json' | 'encrypted_json' = 'csv'): Promise {\n if (format === 'encrypted_json') {\n return this.getOrganizationEncryptedExport(organizationId);\n } else {\n return this.getOrganizationDecryptedExport(organizationId, format);\n }\n }\n\n async getEventExport(events: EventView[]): Promise {\n return papa.unparse(events.map(e => new Event(e)));\n }\n\n getFileName(prefix: string = null, extension: string = 'csv'): string {\n const now = new Date();\n const dateString =\n now.getFullYear() + '' + this.padNumber(now.getMonth() + 1, 2) + '' + this.padNumber(now.getDate(), 2) +\n this.padNumber(now.getHours(), 2) + '' + this.padNumber(now.getMinutes(), 2) +\n this.padNumber(now.getSeconds(), 2);\n\n return 'bitwarden' + (prefix ? ('_' + prefix) : '') + '_export_' + dateString + '.' + extension;\n }\n\n private async getDecryptedExport(format: 'json' | 'csv'): Promise {\n let decFolders: FolderView[] = [];\n let decCiphers: CipherView[] = [];\n const promises = [];\n\n promises.push(this.folderService.getAllDecrypted().then(folders => {\n decFolders = folders;\n }));\n\n promises.push(this.cipherService.getAllDecrypted().then(ciphers => {\n decCiphers = ciphers.filter(f => f.deletedDate == null);\n }));\n\n await Promise.all(promises);\n\n if (format === 'csv') {\n const foldersMap = new Map();\n decFolders.forEach(f => {\n if (f.id != null) {\n foldersMap.set(f.id, f);\n }\n });\n\n const exportCiphers: any[] = [];\n decCiphers.forEach(c => {\n // only export logins and secure notes\n if (c.type !== CipherType.Login && c.type !== CipherType.SecureNote) {\n return;\n }\n if (c.organizationId != null) {\n return;\n }\n\n const cipher: any = {};\n cipher.folder = c.folderId != null && foldersMap.has(c.folderId) ?\n foldersMap.get(c.folderId).name : null;\n cipher.favorite = c.favorite ? 1 : null;\n this.buildCommonCipher(cipher, c);\n exportCiphers.push(cipher);\n });\n\n return papa.unparse(exportCiphers);\n } else {\n const jsonDoc: any = {\n encrypted: false,\n folders: [],\n items: [],\n };\n\n decFolders.forEach(f => {\n if (f.id == null) {\n return;\n }\n const folder = new FolderExport();\n folder.build(f);\n jsonDoc.folders.push(folder);\n });\n\n decCiphers.forEach(c => {\n if (c.organizationId != null) {\n return;\n }\n const cipher = new CipherExport();\n cipher.build(c);\n cipher.collectionIds = null;\n jsonDoc.items.push(cipher);\n });\n\n return JSON.stringify(jsonDoc, null, ' ');\n }\n }\n\n private async getEncryptedExport(): Promise {\n let folders: Folder[] = [];\n let ciphers: Cipher[] = [];\n const promises = [];\n\n promises.push(this.folderService.getAll().then(f => {\n folders = f;\n }));\n\n promises.push(this.cipherService.getAll().then(c => {\n ciphers = c.filter(f => f.deletedDate == null);\n }));\n\n await Promise.all(promises);\n\n const encKeyValidation = await this.cryptoService.encrypt(Utils.newGuid());\n\n const jsonDoc: any = {\n encrypted: true,\n encKeyValidation_DO_NOT_EDIT: encKeyValidation.encryptedString,\n folders: [],\n items: [],\n };\n\n folders.forEach(f => {\n if (f.id == null) {\n return;\n }\n const folder = new FolderExport();\n folder.build(f);\n jsonDoc.folders.push(folder);\n });\n\n ciphers.forEach(c => {\n if (c.organizationId != null) {\n return;\n }\n const cipher = new CipherExport();\n cipher.build(c);\n cipher.collectionIds = null;\n jsonDoc.items.push(cipher);\n });\n\n return JSON.stringify(jsonDoc, null, ' ');\n }\n\n private async getOrganizationDecryptedExport(organizationId: string, format: 'json' | 'csv'): Promise {\n const decCollections: CollectionView[] = [];\n const decCiphers: CipherView[] = [];\n const promises = [];\n\n promises.push(this.apiService.getCollections(organizationId).then(collections => {\n const collectionPromises: any = [];\n if (collections != null && collections.data != null && collections.data.length > 0) {\n collections.data.forEach(c => {\n const collection = new Collection(new CollectionData(c as CollectionDetailsResponse));\n collectionPromises.push(collection.decrypt().then(decCol => {\n decCollections.push(decCol);\n }));\n });\n }\n return Promise.all(collectionPromises);\n }));\n\n promises.push(this.apiService.getCiphersOrganization(organizationId).then(ciphers => {\n const cipherPromises: any = [];\n if (ciphers != null && ciphers.data != null && ciphers.data.length > 0) {\n ciphers.data.filter(c => c.deletedDate === null).forEach(c => {\n const cipher = new Cipher(new CipherData(c));\n cipherPromises.push(cipher.decrypt().then(decCipher => {\n decCiphers.push(decCipher);\n }));\n });\n }\n return Promise.all(cipherPromises);\n }));\n\n await Promise.all(promises);\n\n if (format === 'csv') {\n const collectionsMap = new Map();\n decCollections.forEach(c => {\n collectionsMap.set(c.id, c);\n });\n\n const exportCiphers: any[] = [];\n decCiphers.forEach(c => {\n // only export logins and secure notes\n if (c.type !== CipherType.Login && c.type !== CipherType.SecureNote) {\n return;\n }\n\n const cipher: any = {};\n cipher.collections = [];\n if (c.collectionIds != null) {\n cipher.collections = c.collectionIds.filter(id => collectionsMap.has(id))\n .map(id => collectionsMap.get(id).name);\n }\n this.buildCommonCipher(cipher, c);\n exportCiphers.push(cipher);\n });\n\n return papa.unparse(exportCiphers);\n } else {\n const jsonDoc: any = {\n encrypted: false,\n collections: [],\n items: [],\n };\n\n decCollections.forEach(c => {\n const collection = new CollectionExport();\n collection.build(c);\n jsonDoc.collections.push(collection);\n });\n\n decCiphers.forEach(c => {\n const cipher = new CipherExport();\n cipher.build(c);\n jsonDoc.items.push(cipher);\n });\n return JSON.stringify(jsonDoc, null, ' ');\n }\n }\n\n private async getOrganizationEncryptedExport(organizationId: string): Promise {\n const collections: Collection[] = [];\n const ciphers: Cipher[] = [];\n const promises = [];\n\n promises.push(this.apiService.getCollections(organizationId).then(c => {\n const collectionPromises: any = [];\n if (c != null && c.data != null && c.data.length > 0) {\n c.data.forEach(r => {\n const collection = new Collection(new CollectionData(r as CollectionDetailsResponse));\n collections.push(collection);\n });\n }\n return Promise.all(collectionPromises);\n }));\n\n promises.push(this.apiService.getCiphersOrganization(organizationId).then(c => {\n const cipherPromises: any = [];\n if (c != null && c.data != null && c.data.length > 0) {\n c.data.filter(item => item.deletedDate === null).forEach(item => {\n const cipher = new Cipher(new CipherData(item));\n ciphers.push(cipher);\n });\n }\n return Promise.all(cipherPromises);\n }));\n\n await Promise.all(promises);\n\n const orgKey = await this.cryptoService.getOrgKey(organizationId);\n const encKeyValidation = await this.cryptoService.encrypt(Utils.newGuid(), orgKey);\n\n const jsonDoc: any = {\n encrypted: true,\n encKeyValidation_DO_NOT_EDIT: encKeyValidation.encryptedString,\n collections: [],\n items: [],\n };\n\n collections.forEach(c => {\n const collection = new CollectionExport();\n collection.build(c);\n jsonDoc.collections.push(collection);\n });\n\n ciphers.forEach(c => {\n const cipher = new CipherExport();\n cipher.build(c);\n jsonDoc.items.push(cipher);\n });\n return JSON.stringify(jsonDoc, null, ' ');\n }\n\n private padNumber(num: number, width: number, padCharacter: string = '0'): string {\n const numString = num.toString();\n return numString.length >= width ? numString :\n new Array(width - numString.length + 1).join(padCharacter) + numString;\n }\n\n private buildCommonCipher(cipher: any, c: CipherView) {\n cipher.type = null;\n cipher.name = c.name;\n cipher.notes = c.notes;\n cipher.fields = null;\n cipher.reprompt = c.reprompt;\n // Login props\n cipher.login_uri = null;\n cipher.login_username = null;\n cipher.login_password = null;\n cipher.login_totp = null;\n\n if (c.fields) {\n c.fields.forEach((f: any) => {\n if (!cipher.fields) {\n cipher.fields = '';\n } else {\n cipher.fields += '\\n';\n }\n\n cipher.fields += ((f.name || '') + ': ' + f.value);\n });\n }\n\n switch (c.type) {\n case CipherType.Login:\n cipher.type = 'login';\n cipher.login_username = c.login.username;\n cipher.login_password = c.login.password;\n cipher.login_totp = c.login.totp;\n\n if (c.login.uris) {\n cipher.login_uri = [];\n c.login.uris.forEach(u => {\n cipher.login_uri.push(u.uri);\n });\n }\n break;\n case CipherType.SecureNote:\n cipher.type = 'note';\n break;\n default:\n return;\n }\n\n return cipher;\n }\n}\n","import { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CipherType } from '../../enums/cipherType';\n\nimport { CipherView } from '../view/cipherView';\n\nimport { Cipher as CipherDomain } from '../domain/cipher';\nimport { EncString } from '../domain/encString';\n\nimport { Card } from './card';\nimport { Field } from './field';\nimport { Identity } from './identity';\nimport { Login } from './login';\nimport { SecureNote } from './secureNote';\n\nexport class Cipher {\n static template(): Cipher {\n const req = new Cipher();\n req.organizationId = null;\n req.collectionIds = null;\n req.folderId = null;\n req.type = CipherType.Login;\n req.name = 'Item name';\n req.notes = 'Some notes about this item.';\n req.favorite = false;\n req.fields = [];\n req.login = null;\n req.secureNote = null;\n req.card = null;\n req.identity = null;\n req.reprompt = CipherRepromptType.None;\n return req;\n }\n\n static toView(req: Cipher, view = new CipherView()) {\n view.type = req.type;\n view.folderId = req.folderId;\n if (view.organizationId == null) {\n view.organizationId = req.organizationId;\n }\n if (view.collectionIds || req.collectionIds) {\n const set = new Set((view.collectionIds ?? []).concat(req.collectionIds ?? []));\n view.collectionIds = Array.from(set.values());\n }\n view.name = req.name;\n view.notes = req.notes;\n view.favorite = req.favorite;\n view.reprompt = req.reprompt ?? CipherRepromptType.None;\n\n if (req.fields != null) {\n view.fields = req.fields.map(f => Field.toView(f));\n }\n\n switch (req.type) {\n case CipherType.Login:\n view.login = Login.toView(req.login);\n break;\n case CipherType.SecureNote:\n view.secureNote = SecureNote.toView(req.secureNote);\n break;\n case CipherType.Card:\n view.card = Card.toView(req.card);\n break;\n case CipherType.Identity:\n view.identity = Identity.toView(req.identity);\n break;\n }\n\n return view;\n }\n\n static toDomain(req: Cipher, domain = new CipherDomain()) {\n domain.type = req.type;\n domain.folderId = req.folderId;\n if (domain.organizationId == null) {\n domain.organizationId = req.organizationId;\n }\n domain.name = req.name != null ? new EncString(req.name) : null;\n domain.notes = req.notes != null ? new EncString(req.notes) : null;\n domain.favorite = req.favorite;\n domain.reprompt = req.reprompt ?? CipherRepromptType.None;\n\n if (req.fields != null) {\n domain.fields = req.fields.map(f => Field.toDomain(f));\n }\n\n switch (req.type) {\n case CipherType.Login:\n domain.login = Login.toDomain(req.login);\n break;\n case CipherType.SecureNote:\n domain.secureNote = SecureNote.toDomain(req.secureNote);\n break;\n case CipherType.Card:\n domain.card = Card.toDomain(req.card);\n break;\n case CipherType.Identity:\n domain.identity = Identity.toDomain(req.identity);\n break;\n }\n\n return domain;\n }\n\n type: CipherType;\n folderId: string;\n organizationId: string;\n collectionIds: string[];\n name: string;\n notes: string;\n favorite: boolean;\n fields: Field[];\n login: Login;\n secureNote: SecureNote;\n card: Card;\n identity: Identity;\n reprompt: CipherRepromptType;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CipherView | CipherDomain) {\n this.organizationId = o.organizationId;\n this.folderId = o.folderId;\n this.type = o.type;\n this.reprompt = o.reprompt;\n\n if (o instanceof CipherView) {\n this.name = o.name;\n this.notes = o.notes;\n } else {\n this.name = o.name?.encryptedString;\n this.notes = o.notes?.encryptedString;\n }\n\n this.favorite = o.favorite;\n\n if (o.fields != null) {\n if (o instanceof CipherView) {\n this.fields = o.fields.map(f => new Field(f));\n } else {\n this.fields = o.fields.map(f => new Field(f));\n }\n }\n\n switch (o.type) {\n case CipherType.Login:\n this.login = new Login(o.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNote(o.secureNote);\n break;\n case CipherType.Card:\n this.card = new Card(o.card);\n break;\n case CipherType.Identity:\n this.identity = new Identity(o.identity);\n break;\n }\n }\n}\n","import { CardView } from '../view/cardView';\n\nimport { Card as CardDomain } from '../domain/card';\nimport { EncString } from '../domain/encString';\n\nexport class Card {\n static template(): Card {\n const req = new Card();\n req.cardholderName = 'John Doe';\n req.brand = 'visa';\n req.number = '4242424242424242';\n req.expMonth = '04';\n req.expYear = '2023';\n req.code = '123';\n return req;\n }\n\n static toView(req: Card, view = new CardView()) {\n view.cardholderName = req.cardholderName;\n view.brand = req.brand;\n view.number = req.number;\n view.expMonth = req.expMonth;\n view.expYear = req.expYear;\n view.code = req.code;\n return view;\n }\n\n static toDomain(req: Card, domain = new CardDomain()) {\n domain.cardholderName = req.cardholderName != null ? new EncString(req.cardholderName) : null;\n domain.brand = req.brand != null ? new EncString(req.brand) : null;\n domain.number = req.number != null ? new EncString(req.number) : null;\n domain.expMonth = req.expMonth != null ? new EncString(req.expMonth) : null;\n domain.expYear = req.expYear != null ? new EncString(req.expYear) : null;\n domain.code = req.code != null ? new EncString(req.code) : null;\n return domain;\n }\n\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(o?: CardView | CardDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof CardView) {\n this.cardholderName = o.cardholderName;\n this.brand = o.brand;\n this.number = o.number;\n this.expMonth = o.expMonth;\n this.expYear = o.expYear;\n this.code = o.code;\n } else {\n this.cardholderName = o.cardholderName?.encryptedString;\n this.brand = o.brand?.encryptedString;\n this.number = o.number?.encryptedString;\n this.expMonth = o.expMonth?.encryptedString;\n this.expYear = o.expYear?.encryptedString;\n this.code = o.code?.encryptedString;\n }\n }\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { FieldView } from '../view/fieldView';\n\nimport { EncString } from '../domain/encString';\nimport { Field as FieldDomain } from '../domain/field';\n\nexport class Field {\n static template(): Field {\n const req = new Field();\n req.name = 'Field name';\n req.value = 'Some value';\n req.type = FieldType.Text;\n return req;\n }\n\n static toView(req: Field, view = new FieldView()) {\n view.type = req.type;\n view.value = req.value;\n view.name = req.name;\n return view;\n }\n\n static toDomain(req: Field, domain = new FieldDomain()) {\n domain.type = req.type;\n domain.value = req.value != null ? new EncString(req.value) : null;\n domain.name = req.name != null ? new EncString(req.name) : null;\n return domain;\n }\n\n name: string;\n value: string;\n type: FieldType;\n\n constructor(o?: FieldView | FieldDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof FieldView) {\n this.name = o.name;\n this.value = o.value;\n } else {\n this.name = o.name?.encryptedString;\n this.value = o.value?.encryptedString;\n }\n this.type = o.type;\n }\n}\n","import { IdentityView } from '../view/identityView';\n\nimport { EncString } from '../domain/encString';\nimport { Identity as IdentityDomain } from '../domain/identity';\n\nexport class Identity {\n static template(): Identity {\n const req = new Identity();\n req.title = 'Mr';\n req.firstName = 'John';\n req.middleName = 'William';\n req.lastName = 'Doe';\n req.address1 = '123 Any St';\n req.address2 = 'Apt #123';\n req.address3 = null;\n req.city = 'New York';\n req.state = 'NY';\n req.postalCode = '10001';\n req.country = 'US';\n req.company = 'Acme Inc.';\n req.email = 'john@company.com';\n req.phone = '5555551234';\n req.ssn = '000-123-4567';\n req.username = 'jdoe';\n req.passportNumber = 'US-123456789';\n req.licenseNumber = 'D123-12-123-12333';\n return req;\n }\n\n static toView(req: Identity, view = new IdentityView()) {\n view.title = req.title;\n view.firstName = req.firstName;\n view.middleName = req.middleName;\n view.lastName = req.lastName;\n view.address1 = req.address1;\n view.address2 = req.address2;\n view.address3 = req.address3;\n view.city = req.city;\n view.state = req.state;\n view.postalCode = req.postalCode;\n view.country = req.country;\n view.company = req.company;\n view.email = req.email;\n view.phone = req.phone;\n view.ssn = req.ssn;\n view.username = req.username;\n view.passportNumber = req.passportNumber;\n view.licenseNumber = req.licenseNumber;\n return view;\n }\n\n static toDomain(req: Identity, domain = new IdentityDomain()) {\n domain.title = req.title != null ? new EncString(req.title) : null;\n domain.firstName = req.firstName != null ? new EncString(req.firstName) : null;\n domain.middleName = req.middleName != null ? new EncString(req.middleName) : null;\n domain.lastName = req.lastName != null ? new EncString(req.lastName) : null;\n domain.address1 = req.address1 != null ? new EncString(req.address1) : null;\n domain.address2 = req.address2 != null ? new EncString(req.address2) : null;\n domain.address3 = req.address3 != null ? new EncString(req.address3) : null;\n domain.city = req.city != null ? new EncString(req.city) : null;\n domain.state = req.state != null ? new EncString(req.state) : null;\n domain.postalCode = req.postalCode != null ? new EncString(req.postalCode) : null;\n domain.country = req.country != null ? new EncString(req.country) : null;\n domain.company = req.company != null ? new EncString(req.company) : null;\n domain.email = req.email != null ? new EncString(req.email) : null;\n domain.phone = req.phone != null ? new EncString(req.phone) : null;\n domain.ssn = req.ssn != null ? new EncString(req.ssn) : null;\n domain.username = req.username != null ? new EncString(req.username) : null;\n domain.passportNumber = req.passportNumber != null ? new EncString(req.passportNumber) : null;\n domain.licenseNumber = req.licenseNumber != null ? new EncString(req.licenseNumber) : null;\n return domain;\n }\n\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(o?: IdentityView | IdentityDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof IdentityView) {\n this.title = o.title;\n this.firstName = o.firstName;\n this.middleName = o.middleName;\n this.lastName = o.lastName;\n this.address1 = o.address1;\n this.address2 = o.address2;\n this.address3 = o.address3;\n this.city = o.city;\n this.state = o.state;\n this.postalCode = o.postalCode;\n this.country = o.country;\n this.company = o.company;\n this.email = o.email;\n this.phone = o.phone;\n this.ssn = o.ssn;\n this.username = o.username;\n this.passportNumber = o.passportNumber;\n this.licenseNumber = o.licenseNumber;\n } else {\n this.title = o.title?.encryptedString;\n this.firstName = o.firstName?.encryptedString;\n this.middleName = o.middleName?.encryptedString;\n this.lastName = o.lastName?.encryptedString;\n this.address1 = o.address1?.encryptedString;\n this.address2 = o.address2?.encryptedString;\n this.address3 = o.address3?.encryptedString;\n this.city = o.city?.encryptedString;\n this.state = o.state?.encryptedString;\n this.postalCode = o.postalCode?.encryptedString;\n this.country = o.country?.encryptedString;\n this.company = o.company?.encryptedString;\n this.email = o.email?.encryptedString;\n this.phone = o.phone?.encryptedString;\n this.ssn = o.ssn?.encryptedString;\n this.username = o.username?.encryptedString;\n this.passportNumber = o.passportNumber?.encryptedString;\n this.licenseNumber = o.licenseNumber?.encryptedString;\n }\n }\n}\n","import { LoginUri } from './loginUri';\n\nimport { LoginView } from '../view/loginView';\n\nimport { EncString } from '../domain/encString';\nimport { Login as LoginDomain } from '../domain/login';\n\nexport class Login {\n static template(): Login {\n const req = new Login();\n req.uris = [];\n req.username = 'jdoe';\n req.password = 'myp@ssword123';\n req.totp = 'JBSWY3DPEHPK3PXP';\n return req;\n }\n\n static toView(req: Login, view = new LoginView()) {\n if (req.uris != null) {\n view.uris = req.uris.map(u => LoginUri.toView(u));\n }\n view.username = req.username;\n view.password = req.password;\n view.totp = req.totp;\n return view;\n }\n\n static toDomain(req: Login, domain = new LoginDomain()) {\n if (req.uris != null) {\n domain.uris = req.uris.map(u => LoginUri.toDomain(u));\n }\n domain.username = req.username != null ? new EncString(req.username) : null;\n domain.password = req.password != null ? new EncString(req.password) : null;\n domain.totp = req.totp != null ? new EncString(req.totp) : null;\n return domain;\n }\n\n uris: LoginUri[];\n username: string;\n password: string;\n totp: string;\n\n constructor(o?: LoginView | LoginDomain) {\n if (o == null) {\n return;\n }\n\n if (o.uris != null) {\n if (o instanceof LoginView) {\n this.uris = o.uris.map(u => new LoginUri(u));\n } else {\n this.uris = o.uris.map(u => new LoginUri(u));\n }\n }\n\n if (o instanceof LoginView) {\n this.username = o.username;\n this.password = o.password;\n this.totp = o.totp;\n } else {\n this.username = o.username?.encryptedString;\n this.password = o.password?.encryptedString;\n this.totp = o.totp?.encryptedString;\n }\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriView } from '../view/loginUriView';\n\nimport { EncString } from '../domain/encString';\nimport { LoginUri as LoginUriDomain } from '../domain/loginUri';\n\nexport class LoginUri {\n static template(): LoginUri {\n const req = new LoginUri();\n req.uri = 'https://google.com';\n req.match = null;\n return req;\n }\n\n static toView(req: LoginUri, view = new LoginUriView()) {\n view.uri = req.uri;\n view.match = req.match;\n return view;\n }\n\n static toDomain(req: LoginUri, domain = new LoginUriDomain()) {\n domain.uri = req.uri != null ? new EncString(req.uri) : null;\n domain.match = req.match;\n return domain;\n }\n\n uri: string;\n match: UriMatchType = null;\n\n constructor(o?: LoginUriView | LoginUriDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof LoginUriView) {\n this.uri = o.uri;\n } else {\n this.uri = o.uri?.encryptedString;\n }\n this.match = o.match;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteView } from '../view/secureNoteView';\n\nimport { SecureNote as SecureNoteDomain } from '../domain/secureNote';\n\nexport class SecureNote {\n static template(): SecureNote {\n const req = new SecureNote();\n req.type = SecureNoteType.Generic;\n return req;\n }\n\n static toView(req: SecureNote, view = new SecureNoteView()) {\n view.type = req.type;\n return view;\n }\n\n static toDomain(req: SecureNote, view = new SecureNoteDomain()) {\n view.type = req.type;\n return view;\n }\n\n type: SecureNoteType;\n\n constructor(o?: SecureNoteView | SecureNoteDomain) {\n if (o == null) {\n return;\n }\n\n this.type = o.type;\n }\n}\n","import { CollectionView } from '../view/collectionView';\n\nimport { Collection as CollectionDomain } from '../domain/collection';\nimport { EncString } from '../domain/encString';\n\nexport class Collection {\n static template(): Collection {\n const req = new Collection();\n req.organizationId = '00000000-0000-0000-0000-000000000000';\n req.name = 'Collection name';\n req.externalId = null;\n return req;\n }\n\n static toView(req: Collection, view = new CollectionView()) {\n view.name = req.name;\n view.externalId = req.externalId;\n if (view.organizationId == null) {\n view.organizationId = req.organizationId;\n }\n return view;\n }\n\n static toDomain(req: Collection, domain = new CollectionDomain()) {\n domain.name = req.name != null ? new EncString(req.name) : null;\n domain.externalId = req.externalId;\n if (domain.organizationId == null) {\n domain.organizationId = req.organizationId;\n }\n return domain;\n }\n\n organizationId: string;\n name: string;\n externalId: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CollectionView | CollectionDomain) {\n this.organizationId = o.organizationId;\n if (o instanceof CollectionView) {\n this.name = o.name;\n } else {\n this.name = o.name?.encryptedString;\n }\n this.externalId = o.externalId;\n }\n}\n","import { EventType } from '../../enums/eventType';\nimport { EventView } from '../view/eventView';\n\nexport class Event {\n message: string;\n appIcon: string;\n appName: string;\n userId: string;\n userName: string;\n userEmail: string;\n date: string;\n ip: string;\n type: string;\n\n constructor(event: EventView) {\n this.message = event.humanReadableMessage;\n this.appIcon = event.appIcon;\n this.appName = event.appName;\n this.userId = event.userId;\n this.userName = event.userName;\n this.userEmail = event.userEmail;\n this.date = event.date;\n this.ip = event.ip;\n this.type = EventType[event.type];\n }\n}\n","import { FolderView } from '../view/folderView';\n\nimport { EncString } from '../domain/encString';\nimport { Folder as FolderDomain } from '../domain/folder';\n\nexport class Folder {\n static template(): Folder {\n const req = new Folder();\n req.name = 'Folder name';\n return req;\n }\n\n static toView(req: Folder, view = new FolderView()) {\n view.name = req.name;\n return view;\n }\n\n static toDomain(req: Folder, domain = new FolderDomain()) {\n domain.name = req.name != null ? new EncString(req.name) : null;\n return domain;\n }\n\n name: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: FolderView | FolderDomain) {\n if (o instanceof FolderView) {\n this.name = o.name;\n } else {\n this.name = o.name?.encryptedString;\n }\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { FileUploadService as FileUploadServiceAbstraction } from '../abstractions/fileUpload.service';\nimport { LogService } from '../abstractions/log.service';\n\nimport { FileUploadType } from '../enums/fileUploadType';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncString } from '../models/domain/encString';\n\nimport { AttachmentUploadDataResponse } from '../models/response/attachmentUploadDataResponse';\nimport { SendFileUploadDataResponse } from '../models/response/sendFileUploadDataResponse';\n\nimport { AzureFileUploadService } from './azureFileUpload.service';\nimport { BitwardenFileUploadService } from './bitwardenFileUpload.service';\n\nexport class FileUploadService implements FileUploadServiceAbstraction {\n private azureFileUploadService: AzureFileUploadService;\n private bitwardenFileUploadService: BitwardenFileUploadService;\n\n constructor(private logService: LogService, private apiService: ApiService) {\n this.azureFileUploadService = new AzureFileUploadService(logService);\n this.bitwardenFileUploadService = new BitwardenFileUploadService(apiService);\n }\n\n async uploadSendFile(uploadData: SendFileUploadDataResponse, fileName: EncString, encryptedFileData: EncArrayBuffer) {\n try {\n switch (uploadData.fileUploadType) {\n case FileUploadType.Direct:\n await this.bitwardenFileUploadService.upload(fileName.encryptedString, encryptedFileData,\n fd => this.apiService.postSendFile(uploadData.sendResponse.id, uploadData.sendResponse.file.id, fd));\n break;\n case FileUploadType.Azure:\n const renewalCallback = async () => {\n const renewalResponse = await this.apiService.renewSendFileUploadUrl(uploadData.sendResponse.id,\n uploadData.sendResponse.file.id);\n return renewalResponse.url;\n };\n await this.azureFileUploadService.upload(uploadData.url, encryptedFileData,\n renewalCallback);\n break;\n default:\n throw new Error('Unknown file upload type');\n }\n } catch (e) {\n await this.apiService.deleteSend(uploadData.sendResponse.id);\n throw e;\n }\n }\n\n async uploadCipherAttachment(admin: boolean, uploadData: AttachmentUploadDataResponse, encryptedFileName: EncString,\n encryptedFileData: EncArrayBuffer) {\n const response = admin ? uploadData.cipherMiniResponse : uploadData.cipherResponse;\n try {\n switch (uploadData.fileUploadType) {\n case FileUploadType.Direct:\n await this.bitwardenFileUploadService.upload(encryptedFileName.encryptedString, encryptedFileData,\n fd => this.apiService.postAttachmentFile(response.id, uploadData.attachmentId, fd));\n break;\n case FileUploadType.Azure:\n const renewalCallback = async () => {\n const renewalResponse = await this.apiService.renewAttachmentUploadUrl(response.id,\n uploadData.attachmentId);\n return renewalResponse.url;\n };\n await this.azureFileUploadService.upload(uploadData.url, encryptedFileData, renewalCallback);\n break;\n default:\n throw new Error('Unknown file upload type.');\n }\n } catch (e) {\n if (admin) {\n await this.apiService.deleteCipherAttachmentAdmin(response.id, uploadData.attachmentId);\n } else {\n await this.apiService.deleteCipherAttachment(response.id, uploadData.attachmentId);\n }\n throw e;\n }\n }\n}\n","export enum FileUploadType {\n Direct = 0,\n Azure = 1,\n}\n","import { LogService } from '../abstractions/log.service';\n\nimport { Utils } from '../misc/utils';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\n\nconst MAX_SINGLE_BLOB_UPLOAD_SIZE = 256 * 1024 * 1024; // 256 MiB\nconst MAX_BLOCKS_PER_BLOB = 50000;\n\nexport class AzureFileUploadService {\n constructor(private logService: LogService) { }\n\n async upload(url: string, data: EncArrayBuffer, renewalCallback: () => Promise) {\n if (data.buffer.byteLength <= MAX_SINGLE_BLOB_UPLOAD_SIZE) {\n return await this.azureUploadBlob(url, data);\n } else {\n return await this.azureUploadBlocks(url, data, renewalCallback);\n }\n }\n private async azureUploadBlob(url: string, data: EncArrayBuffer) {\n const urlObject = Utils.getUrl(url);\n const headers = new Headers({\n 'x-ms-date': new Date().toUTCString(),\n 'x-ms-version': urlObject.searchParams.get('sv'),\n 'Content-Length': data.buffer.byteLength.toString(),\n 'x-ms-blob-type': 'BlockBlob',\n });\n\n const request = new Request(url, {\n body: data.buffer,\n cache: 'no-store',\n method: 'PUT',\n headers: headers,\n });\n\n const blobResponse = await fetch(request);\n\n if (blobResponse.status !== 201) {\n throw new Error(`Failed to create Azure blob: ${blobResponse.status}`);\n }\n }\n private async azureUploadBlocks(url: string, data: EncArrayBuffer, renewalCallback: () => Promise) {\n const baseUrl = Utils.getUrl(url);\n const blockSize = this.getMaxBlockSize(baseUrl.searchParams.get('sv'));\n let blockIndex = 0;\n const numBlocks = Math.ceil(data.buffer.byteLength / blockSize);\n const blocksStaged: string[] = [];\n\n if (numBlocks > MAX_BLOCKS_PER_BLOB) {\n throw new Error(`Cannot upload file, exceeds maximum size of ${blockSize * MAX_BLOCKS_PER_BLOB}`);\n }\n\n try {\n while (blockIndex < numBlocks) {\n url = await this.renewUrlIfNecessary(url, renewalCallback);\n const blockUrl = Utils.getUrl(url);\n const blockId = this.encodedBlockId(blockIndex);\n blockUrl.searchParams.append('comp', 'block');\n blockUrl.searchParams.append('blockid', blockId);\n const start = blockIndex * blockSize;\n const blockData = data.buffer.slice(start, start + blockSize);\n const blockHeaders = new Headers({\n 'x-ms-date': new Date().toUTCString(),\n 'x-ms-version': blockUrl.searchParams.get('sv'),\n 'Content-Length': blockData.byteLength.toString(),\n });\n\n const blockRequest = new Request(blockUrl.toString(), {\n body: blockData,\n cache: 'no-store',\n method: 'PUT',\n headers: blockHeaders,\n });\n\n const blockResponse = await fetch(blockRequest);\n\n if (blockResponse.status !== 201) {\n const message = `Unsuccessful block PUT. Received status ${blockResponse.status}`;\n this.logService.error(message + '\\n' + await blockResponse.json());\n throw new Error(message);\n }\n\n blocksStaged.push(blockId);\n blockIndex++;\n }\n\n url = await this.renewUrlIfNecessary(url, renewalCallback);\n const blockListUrl = Utils.getUrl(url);\n const blockListXml = this.blockListXml(blocksStaged);\n blockListUrl.searchParams.append('comp', 'blocklist');\n const headers = new Headers({\n 'x-ms-date': new Date().toUTCString(),\n 'x-ms-version': blockListUrl.searchParams.get('sv'),\n 'Content-Length': blockListXml.length.toString(),\n });\n\n const request = new Request(blockListUrl.toString(), {\n body: blockListXml,\n cache: 'no-store',\n method: 'PUT',\n headers: headers,\n });\n\n const response = await fetch(request);\n\n if (response.status !== 201) {\n const message = `Unsuccessful block list PUT. Received status ${response.status}`;\n this.logService.error(message + '\\n' + await response.json());\n throw new Error(message);\n }\n } catch (e) {\n throw e;\n }\n }\n\n private async renewUrlIfNecessary(url: string, renewalCallback: () => Promise): Promise {\n const urlObject = Utils.getUrl(url);\n const expiry = new Date(urlObject.searchParams.get('se') ?? '');\n\n if (isNaN(expiry.getTime())) {\n expiry.setTime(Date.now() + 3600000);\n }\n\n if (expiry.getTime() < Date.now() + 1000) {\n return await renewalCallback();\n }\n return url;\n }\n\n private encodedBlockId(blockIndex: number) {\n // Encoded blockId max size is 64, so pre-encoding max size is 48\n const utfBlockId = ('000000000000000000000000000000000000000000000000' + blockIndex.toString()).slice(-48);\n return Utils.fromUtf8ToB64(utfBlockId);\n }\n\n private blockListXml(blockIdList: string[]) {\n let xml = '';\n blockIdList.forEach(blockId => {\n xml += `${blockId}`;\n });\n xml += '';\n return xml;\n }\n\n private getMaxBlockSize(version: string) {\n if (Version.compare(version, '2019-12-12') >= 0) {\n return 4000 * 1024 * 1024; // 4000 MiB\n } else if (Version.compare(version, '2016-05-31') >= 0) {\n return 100 * 1024 * 1024; // 100 MiB\n } else {\n return 4 * 1024 * 1024; // 4 MiB\n }\n }\n}\n\nclass Version {\n /**\n * Compares two Azure Versions against each other\n * @param a Version to compare\n * @param b Version to compare\n * @returns a number less than zero if b is newer than a, 0 if equal,\n * and greater than zero if a is newer than b\n */\n static compare(a: Required | string, b: Required | string) {\n if (typeof (a) === 'string') {\n a = new Version(a);\n }\n\n if (typeof (b) === 'string') {\n b = new Version(b);\n }\n\n return a.year !== b.year ? a.year - b.year :\n a.month !== b.month ? a.month - b.month :\n a.day !== b.day ? a.day - b.day :\n 0;\n }\n year = 0;\n month = 0;\n day = 0;\n\n constructor(version: string) {\n try {\n const parts = version.split('-').map(v => Number.parseInt(v, 10));\n this.year = parts[0];\n this.month = parts[1];\n this.day = parts[2];\n } catch { }\n }\n /**\n * Compares two Azure Versions against each other\n * @param compareTo Version to compare against\n * @returns a number less than zero if compareTo is newer, 0 if equal,\n * and greater than zero if this is greater than compareTo\n */\n compare(compareTo: Required | string) {\n return Version.compare(this, compareTo);\n }\n}\n","import { ApiService } from '../abstractions/api.service';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\n\nimport { Utils } from '../misc/utils';\n\nexport class BitwardenFileUploadService\n{\n constructor(private apiService: ApiService) { }\n\n async upload(encryptedFileName: string, encryptedFileData: EncArrayBuffer, apiCall: (fd: FormData) => Promise) {\n const fd = new FormData();\n try {\n const blob = new Blob([encryptedFileData.buffer], { type: 'application/octet-stream' });\n fd.append('data', blob, encryptedFileName);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('data', Buffer.from(encryptedFileData.buffer) as any, {\n filepath: encryptedFileName,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n\n await apiCall(fd);\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CollectionService } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService } from '../abstractions/folder.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport {\n ImportOption,\n ImportService as ImportServiceAbstraction,\n} from '../abstractions/import.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\n\nimport { Utils } from '../misc/utils';\n\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CollectionRequest } from '../models/request/collectionRequest';\nimport { FolderRequest } from '../models/request/folderRequest';\nimport { ImportCiphersRequest } from '../models/request/importCiphersRequest';\nimport { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest';\nimport { KvpRequest } from '../models/request/kvpRequest';\n\nimport { ErrorResponse } from '../models/response/errorResponse';\nimport { CipherView } from '../models/view/cipherView';\n\nimport { AscendoCsvImporter } from '../importers/ascendoCsvImporter';\nimport { AvastCsvImporter } from '../importers/avastCsvImporter';\nimport { AvastJsonImporter } from '../importers/avastJsonImporter';\nimport { AviraCsvImporter } from '../importers/aviraCsvImporter';\nimport { BitwardenCsvImporter } from '../importers/bitwardenCsvImporter';\nimport { BitwardenJsonImporter } from '../importers/bitwardenJsonImporter';\nimport { BlackBerryCsvImporter } from '../importers/blackBerryCsvImporter';\nimport { BlurCsvImporter } from '../importers/blurCsvImporter';\nimport { ButtercupCsvImporter } from '../importers/buttercupCsvImporter';\nimport { ChromeCsvImporter } from '../importers/chromeCsvImporter';\nimport { ClipperzHtmlImporter } from '../importers/clipperzHtmlImporter';\nimport { CodebookCsvImporter } from '../importers/codebookCsvImporter';\nimport { DashlaneJsonImporter } from '../importers/dashlaneJsonImporter';\nimport { EncryptrCsvImporter } from '../importers/encryptrCsvImporter';\nimport { EnpassCsvImporter } from '../importers/enpassCsvImporter';\nimport { EnpassJsonImporter } from '../importers/enpassJsonImporter';\nimport { FirefoxCsvImporter } from '../importers/firefoxCsvImporter';\nimport { FSecureFskImporter } from '../importers/fsecureFskImporter';\nimport { GnomeJsonImporter } from '../importers/gnomeJsonImporter';\nimport { Importer } from '../importers/importer';\nimport { KasperskyTxtImporter } from '../importers/kasperskyTxtImporter';\nimport { KeePass2XmlImporter } from '../importers/keepass2XmlImporter';\nimport { KeePassXCsvImporter } from '../importers/keepassxCsvImporter';\nimport { KeeperCsvImporter } from '../importers/keeperCsvImporter';\nimport { LastPassCsvImporter } from '../importers/lastpassCsvImporter';\nimport { LogMeOnceCsvImporter } from '../importers/logMeOnceCsvImporter';\nimport { MeldiumCsvImporter } from '../importers/meldiumCsvImporter';\nimport { MSecureCsvImporter } from '../importers/msecureCsvImporter';\nimport { MykiCsvImporter } from '../importers/mykiCsvImporter';\nimport { NordPassCsvImporter } from '../importers/nordpassCsvImporter';\nimport { OnePassword1PifImporter } from '../importers/onepasswordImporters/onepassword1PifImporter';\nimport { OnePasswordMacCsvImporter } from '../importers/onepasswordImporters/onepasswordMacCsvImporter';\nimport { OnePasswordWinCsvImporter } from '../importers/onepasswordImporters/onepasswordWinCsvImporter';\nimport { PadlockCsvImporter } from '../importers/padlockCsvImporter';\nimport { PassKeepCsvImporter } from '../importers/passkeepCsvImporter';\nimport { PassmanJsonImporter } from '../importers/passmanJsonImporter';\nimport { PasspackCsvImporter } from '../importers/passpackCsvImporter';\nimport { PasswordAgentCsvImporter } from '../importers/passwordAgentCsvImporter';\nimport { PasswordBossJsonImporter } from '../importers/passwordBossJsonImporter';\nimport { PasswordDragonXmlImporter } from '../importers/passwordDragonXmlImporter';\nimport { PasswordSafeXmlImporter } from '../importers/passwordSafeXmlImporter';\nimport { PasswordWalletTxtImporter } from '../importers/passwordWalletTxtImporter';\nimport { RememBearCsvImporter } from '../importers/rememBearCsvImporter';\nimport { RoboFormCsvImporter } from '../importers/roboformCsvImporter';\nimport { SafeInCloudXmlImporter } from '../importers/safeInCloudXmlImporter';\nimport { SaferPassCsvImporter } from '../importers/saferpassCsvImport';\nimport { SecureSafeCsvImporter } from '../importers/secureSafeCsvImporter';\nimport { SplashIdCsvImporter } from '../importers/splashIdCsvImporter';\nimport { StickyPasswordXmlImporter } from '../importers/stickyPasswordXmlImporter';\nimport { TrueKeyCsvImporter } from '../importers/truekeyCsvImporter';\nimport { UpmCsvImporter } from '../importers/upmCsvImporter';\nimport { YotiCsvImporter } from '../importers/yotiCsvImporter';\nimport { ZohoVaultCsvImporter } from '../importers/zohoVaultCsvImporter';\n\nexport class ImportService implements ImportServiceAbstraction {\n featuredImportOptions = [\n { id: 'bitwardenjson', name: 'Bitwarden (json)' },\n { id: 'bitwardencsv', name: 'Bitwarden (csv)' },\n { id: 'lastpasscsv', name: 'LastPass (csv)' },\n { id: 'chromecsv', name: 'Chrome (csv)' },\n { id: 'firefoxcsv', name: 'Firefox (csv)' },\n { id: 'keepass2xml', name: 'KeePass 2 (xml)' },\n { id: '1password1pif', name: '1Password (1pif)' },\n { id: 'dashlanejson', name: 'Dashlane (json)' },\n ];\n\n regularImportOptions: ImportOption[] = [\n { id: 'keepassxcsv', name: 'KeePassX (csv)' },\n { id: '1passwordwincsv', name: '1Password 6 and 7 Windows (csv)' },\n { id: '1passwordmaccsv', name: '1Password 6 and 7 Mac (csv)' },\n { id: 'roboformcsv', name: 'RoboForm (csv)' },\n { id: 'keepercsv', name: 'Keeper (csv)' },\n { id: 'enpasscsv', name: 'Enpass (csv)' },\n { id: 'enpassjson', name: 'Enpass (json)' },\n { id: 'safeincloudxml', name: 'SafeInCloud (xml)' },\n { id: 'pwsafexml', name: 'Password Safe (xml)' },\n { id: 'stickypasswordxml', name: 'Sticky Password (xml)' },\n { id: 'msecurecsv', name: 'mSecure (csv)' },\n { id: 'truekeycsv', name: 'True Key (csv)' },\n { id: 'passwordbossjson', name: 'Password Boss (json)' },\n { id: 'zohovaultcsv', name: 'Zoho Vault (csv)' },\n { id: 'splashidcsv', name: 'SplashID (csv)' },\n { id: 'passworddragonxml', name: 'Password Dragon (xml)' },\n { id: 'padlockcsv', name: 'Padlock (csv)' },\n { id: 'passboltcsv', name: 'Passbolt (csv)' },\n { id: 'clipperzhtml', name: 'Clipperz (html)' },\n { id: 'aviracsv', name: 'Avira (csv)' },\n { id: 'saferpasscsv', name: 'SaferPass (csv)' },\n { id: 'upmcsv', name: 'Universal Password Manager (csv)' },\n { id: 'ascendocsv', name: 'Ascendo DataVault (csv)' },\n { id: 'meldiumcsv', name: 'Meldium (csv)' },\n { id: 'passkeepcsv', name: 'PassKeep (csv)' },\n { id: 'operacsv', name: 'Opera (csv)' },\n { id: 'vivaldicsv', name: 'Vivaldi (csv)' },\n { id: 'gnomejson', name: 'GNOME Passwords and Keys/Seahorse (json)' },\n { id: 'blurcsv', name: 'Blur (csv)' },\n { id: 'passwordagentcsv', name: 'Password Agent (csv)' },\n { id: 'passpackcsv', name: 'Passpack (csv)' },\n { id: 'passmanjson', name: 'Passman (json)' },\n { id: 'avastcsv', name: 'Avast Passwords (csv)' },\n { id: 'avastjson', name: 'Avast Passwords (json)' },\n { id: 'fsecurefsk', name: 'F-Secure KEY (fsk)' },\n { id: 'kasperskytxt', name: 'Kaspersky Password Manager (txt)' },\n { id: 'remembearcsv', name: 'RememBear (csv)' },\n { id: 'passwordwallettxt', name: 'PasswordWallet (txt)' },\n { id: 'mykicsv', name: 'Myki (csv)' },\n { id: 'securesafecsv', name: 'SecureSafe (csv)' },\n { id: 'logmeoncecsv', name: 'LogMeOnce (csv)' },\n { id: 'blackberrycsv', name: 'BlackBerry Password Keeper (csv)' },\n { id: 'buttercupcsv', name: 'Buttercup (csv)' },\n { id: 'codebookcsv', name: 'Codebook (csv)' },\n { id: 'encryptrcsv', name: 'Encryptr (csv)' },\n { id: 'yoticsv', name: 'Yoti (csv)' },\n { id: 'nordpasscsv', name: 'Nordpass (csv)' },\n ];\n\n constructor(private cipherService: CipherService, private folderService: FolderService,\n private apiService: ApiService, private i18nService: I18nService,\n private collectionService: CollectionService, private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService) { }\n\n getImportOptions(): ImportOption[] {\n return this.featuredImportOptions.concat(this.regularImportOptions);\n }\n\n async import(importer: Importer, fileContents: string, organizationId: string = null): Promise {\n const importResult = await importer.parse(fileContents);\n if (importResult.success) {\n if (importResult.folders.length === 0 && importResult.ciphers.length === 0) {\n return new Error(this.i18nService.t('importNothingError'));\n } else if (importResult.ciphers.length > 0) {\n const halfway = Math.floor(importResult.ciphers.length / 2);\n const last = importResult.ciphers.length - 1;\n\n if (this.badData(importResult.ciphers[0]) &&\n this.badData(importResult.ciphers[halfway]) &&\n this.badData(importResult.ciphers[last])) {\n return new Error(this.i18nService.t('importFormatError'));\n }\n }\n try {\n await this.postImport(importResult, organizationId);\n } catch (error) {\n const errorResponse = new ErrorResponse(error, 400);\n return this.handleServerError(errorResponse, importResult);\n }\n return null;\n } else {\n if (!Utils.isNullOrWhitespace(importResult.errorMessage)) {\n return new Error(importResult.errorMessage);\n } else {\n return new Error(this.i18nService.t('importFormatError'));\n }\n }\n }\n\n getImporter(format: string, organizationId: string = null): Importer {\n const importer = this.getImporterInstance(format);\n if (importer == null) {\n return null;\n }\n importer.organizationId = organizationId;\n return importer;\n }\n\n private getImporterInstance(format: string) {\n if (format == null || format === '') {\n return null;\n }\n\n switch (format) {\n case 'bitwardencsv':\n return new BitwardenCsvImporter();\n case 'bitwardenjson':\n return new BitwardenJsonImporter(this.cryptoService, this.i18nService);\n case 'lastpasscsv':\n case 'passboltcsv':\n return new LastPassCsvImporter();\n case 'keepassxcsv':\n return new KeePassXCsvImporter();\n case 'aviracsv':\n return new AviraCsvImporter();\n case 'blurcsv':\n return new BlurCsvImporter();\n case 'safeincloudxml':\n return new SafeInCloudXmlImporter();\n case 'padlockcsv':\n return new PadlockCsvImporter();\n case 'keepass2xml':\n return new KeePass2XmlImporter();\n case 'chromecsv':\n case 'operacsv':\n case 'vivaldicsv':\n return new ChromeCsvImporter();\n case 'firefoxcsv':\n return new FirefoxCsvImporter();\n case 'upmcsv':\n return new UpmCsvImporter();\n case 'saferpasscsv':\n return new SaferPassCsvImporter();\n case 'meldiumcsv':\n return new MeldiumCsvImporter();\n case '1password1pif':\n return new OnePassword1PifImporter();\n case '1passwordwincsv':\n return new OnePasswordWinCsvImporter();\n case '1passwordmaccsv':\n return new OnePasswordMacCsvImporter();\n case 'keepercsv':\n return new KeeperCsvImporter();\n case 'passworddragonxml':\n return new PasswordDragonXmlImporter();\n case 'enpasscsv':\n return new EnpassCsvImporter();\n case 'enpassjson':\n return new EnpassJsonImporter();\n case 'pwsafexml':\n return new PasswordSafeXmlImporter();\n case 'dashlanejson':\n return new DashlaneJsonImporter();\n case 'msecurecsv':\n return new MSecureCsvImporter();\n case 'stickypasswordxml':\n return new StickyPasswordXmlImporter();\n case 'truekeycsv':\n return new TrueKeyCsvImporter();\n case 'clipperzhtml':\n return new ClipperzHtmlImporter();\n case 'roboformcsv':\n return new RoboFormCsvImporter();\n case 'ascendocsv':\n return new AscendoCsvImporter();\n case 'passwordbossjson':\n return new PasswordBossJsonImporter();\n case 'zohovaultcsv':\n return new ZohoVaultCsvImporter();\n case 'splashidcsv':\n return new SplashIdCsvImporter();\n case 'passkeepcsv':\n return new PassKeepCsvImporter();\n case 'gnomejson':\n return new GnomeJsonImporter();\n case 'passwordagentcsv':\n return new PasswordAgentCsvImporter();\n case 'passpackcsv':\n return new PasspackCsvImporter();\n case 'passmanjson':\n return new PassmanJsonImporter();\n case 'avastcsv':\n return new AvastCsvImporter();\n case 'avastjson':\n return new AvastJsonImporter();\n case 'fsecurefsk':\n return new FSecureFskImporter();\n case 'kasperskytxt':\n return new KasperskyTxtImporter();\n case 'remembearcsv':\n return new RememBearCsvImporter();\n case 'passwordwallettxt':\n return new PasswordWalletTxtImporter();\n case 'mykicsv':\n return new MykiCsvImporter();\n case 'securesafecsv':\n return new SecureSafeCsvImporter();\n case 'logmeoncecsv':\n return new LogMeOnceCsvImporter();\n case 'blackberrycsv':\n return new BlackBerryCsvImporter();\n case 'buttercupcsv':\n return new ButtercupCsvImporter();\n case 'codebookcsv':\n return new CodebookCsvImporter();\n case 'encryptrcsv':\n return new EncryptrCsvImporter();\n case 'yoticsv':\n return new YotiCsvImporter();\n case 'nordpasscsv':\n return new NordPassCsvImporter();\n default:\n return null;\n }\n }\n\n private async postImport(importResult: ImportResult, organizationId: string = null) {\n if (organizationId == null) {\n const request = new ImportCiphersRequest();\n for (let i = 0; i < importResult.ciphers.length; i++) {\n const c = await this.cipherService.encrypt(importResult.ciphers[i]);\n request.ciphers.push(new CipherRequest(c));\n }\n if (importResult.folders != null) {\n for (let i = 0; i < importResult.folders.length; i++) {\n const f = await this.folderService.encrypt(importResult.folders[i]);\n request.folders.push(new FolderRequest(f));\n }\n }\n if (importResult.folderRelationships != null) {\n importResult.folderRelationships.forEach(r =>\n request.folderRelationships.push(new KvpRequest(r[0], r[1])));\n }\n return await this.apiService.postImportCiphers(request);\n } else {\n const request = new ImportOrganizationCiphersRequest();\n for (let i = 0; i < importResult.ciphers.length; i++) {\n importResult.ciphers[i].organizationId = organizationId;\n const c = await this.cipherService.encrypt(importResult.ciphers[i]);\n request.ciphers.push(new CipherRequest(c));\n }\n if (importResult.collections != null) {\n for (let i = 0; i < importResult.collections.length; i++) {\n importResult.collections[i].organizationId = organizationId;\n const c = await this.collectionService.encrypt(importResult.collections[i]);\n request.collections.push(new CollectionRequest(c));\n }\n }\n if (importResult.collectionRelationships != null) {\n importResult.collectionRelationships.forEach(r =>\n request.collectionRelationships.push(new KvpRequest(r[0], r[1])));\n }\n return await this.apiService.postImportOrganizationCiphers(organizationId, request);\n }\n }\n\n private badData(c: CipherView) {\n return (c.name == null || c.name === '--') &&\n (c.type === CipherType.Login && c.login != null && Utils.isNullOrWhitespace(c.login.password));\n }\n\n private handleServerError(errorResponse: ErrorResponse, importResult: ImportResult): Error {\n if (errorResponse.validationErrors == null) {\n return new Error(errorResponse.message);\n }\n\n let errorMessage = '';\n\n Object.entries(errorResponse.validationErrors).forEach(([key, value], index) => {\n let item;\n let itemType;\n const i = Number(key.match(/[0-9]+/)[0]);\n\n switch (key.match(/^\\w+/)[0]) {\n case 'Ciphers':\n item = importResult.ciphers[i];\n itemType = CipherType[item.type];\n break;\n case 'Folders':\n item = importResult.folders[i];\n itemType = 'Folder';\n break;\n case 'Collections':\n item = importResult.collections[i];\n itemType = 'Collection';\n break;\n default:\n return;\n }\n\n if (index > 0) {\n errorMessage += '\\n\\n';\n }\n\n if (itemType !== 'Folder' && itemType !== 'Collection') {\n errorMessage += '[' + (i + 1) + '] ';\n }\n\n errorMessage += '[' + itemType + '] \"' + item.name + '\": ' + value;\n });\n\n return new Error(errorMessage);\n }\n}\n","import { CipherRequest } from './cipherRequest';\nimport { FolderRequest } from './folderRequest';\nimport { KvpRequest } from './kvpRequest';\n\nexport class ImportCiphersRequest {\n ciphers: CipherRequest[] = [];\n folders: FolderRequest[] = [];\n folderRelationships: KvpRequest[] = [];\n}\n","import { CipherRequest } from './cipherRequest';\nimport { CollectionRequest } from './collectionRequest';\nimport { KvpRequest } from './kvpRequest';\n\nexport class ImportOrganizationCiphersRequest {\n ciphers: CipherRequest[] = [];\n collections: CollectionRequest[] = [];\n collectionRelationships: KvpRequest[] = [];\n}\n","export class KvpRequest {\n key: TK;\n value: TV;\n\n constructor(key: TK, value: TV) {\n this.key = key;\n this.value = value;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class AscendoCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 2) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 1]);\n cipher.name = this.getValueOrDefault(value[0], '--');\n\n if (value.length > 2 && (value.length % 2) === 0) {\n for (let i = 0; i < value.length - 2; i += 2) {\n const val: string = value[i + 2];\n const field: string = value[i + 1];\n if (this.isNullOrWhitespace(val) || this.isNullOrWhitespace(field)) {\n continue;\n }\n\n const fieldLower = field.toLowerCase();\n if (cipher.login.password == null && this.passwordFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.password = this.getValueOrDefault(val);\n } else if (cipher.login.username == null &&\n this.usernameFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.username = this.getValueOrDefault(val);\n } else if ((cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.uris = this.makeUriArray(val);\n } else {\n this.processKvp(cipher, field, val);\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class AvastCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name);\n cipher.login.uris = this.makeUriArray(value.web);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.login);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class AvastJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n if (results.logins != null) {\n results.logins.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.custName);\n cipher.notes = this.getValueOrDefault(value.note);\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.password = this.getValueOrDefault(value.pwd);\n cipher.login.username = this.getValueOrDefault(value.loginName);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (results.notes != null) {\n results.notes.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.name = this.getValueOrDefault(value.label);\n cipher.notes = this.getValueOrDefault(value.text);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (results.cards != null) {\n results.cards.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.Card;\n cipher.name = this.getValueOrDefault(value.custName);\n cipher.notes = this.getValueOrDefault(value.note);\n cipher.card.cardholderName = this.getValueOrDefault(value.holderName);\n cipher.card.number = this.getValueOrDefault(value.cardNumber);\n cipher.card.code = this.getValueOrDefault(value.cvv);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n if (value.expirationDate != null) {\n if (value.expirationDate.month != null) {\n cipher.card.expMonth = value.expirationDate.month + '';\n }\n if (value.expirationDate.year != null) {\n cipher.card.expYear = value.expirationDate.year + '';\n }\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class AviraCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name,\n this.getValueOrDefault(this.nameFromUrl(value.website), '--'));\n cipher.login.uris = this.makeUriArray(value.website);\n cipher.login.password = this.getValueOrDefault(value.password);\n\n if (this.isNullOrWhitespace(value.username) && !this.isNullOrWhitespace(value.secondary_username)) {\n cipher.login.username = value.secondary_username;\n } else {\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.notes = this.getValueOrDefault(value.secondary_username);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { CollectionView } from '../models/view/collectionView';\nimport { FieldView } from '../models/view/fieldView';\nimport { FolderView } from '../models/view/folderView';\nimport { LoginView } from '../models/view/loginView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherRepromptType } from '../enums/cipherRepromptType';\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class BitwardenCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.organization && !this.isNullOrWhitespace(value.collections)) {\n const collections = (value.collections as string).split(',');\n collections.forEach(col => {\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === col) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = col;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else if (!this.organization) {\n this.processFolder(result, value.folder);\n }\n\n const cipher = new CipherView();\n cipher.favorite = !this.organization && this.getValueOrDefault(value.favorite, '0') !== '0' ? true : false;\n cipher.type = CipherType.Login;\n cipher.notes = this.getValueOrDefault(value.notes);\n cipher.name = this.getValueOrDefault(value.name, '--');\n try {\n cipher.reprompt = parseInt(this.getValueOrDefault(value.reprompt, CipherRepromptType.None.toString()), 10);\n } catch (e) {\n // tslint:disable-next-line\n console.error('Unable to parse reprompt value', e);\n cipher.reprompt = CipherRepromptType.None;\n }\n\n if (!this.isNullOrWhitespace(value.fields)) {\n const fields = this.splitNewLine(value.fields);\n for (let i = 0; i < fields.length; i++) {\n if (this.isNullOrWhitespace(fields[i])) {\n continue;\n }\n\n const delimPosition = fields[i].lastIndexOf(': ');\n if (delimPosition === -1) {\n continue;\n }\n\n if (cipher.fields == null) {\n cipher.fields = [];\n }\n\n const field = new FieldView();\n field.name = fields[i].substr(0, delimPosition);\n field.value = null;\n field.type = FieldType.Text;\n if (fields[i].length > (delimPosition + 2)) {\n field.value = fields[i].substr(delimPosition + 2);\n }\n cipher.fields.push(field);\n }\n }\n\n const valueType = value.type != null ? value.type.toLowerCase() : null;\n switch (valueType) {\n case 'note':\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n break;\n default:\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n cipher.login.totp = this.getValueOrDefault(value.login_totp || value.totp);\n cipher.login.username = this.getValueOrDefault(value.login_username || value.username);\n cipher.login.password = this.getValueOrDefault(value.login_password || value.password);\n const uris = this.parseSingleRowCsv(value.login_uri || value.uri);\n cipher.login.uris = this.makeUriArray(uris);\n break;\n }\n\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { EncString } from '../models/domain/encString';\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherWithIds } from '../models/export/cipherWithIds';\nimport { CollectionWithId } from '../models/export/collectionWithId';\nimport { FolderWithId } from '../models/export/folderWithId';\n\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\n\nexport class BitwardenJsonImporter extends BaseImporter implements Importer {\n private results: any;\n private result: ImportResult;\n\n constructor(private cryptoService: CryptoService, private i18nService: I18nService) {\n super();\n }\n\n async parse(data: string): Promise {\n this.result = new ImportResult();\n this.results = JSON.parse(data);\n if (this.results == null || this.results.items == null || this.results.items.length === 0) {\n this.result.success = false;\n return this.result;\n }\n\n if (this.results.encrypted) {\n await this.parseEncrypted();\n } else {\n this.parseDecrypted();\n }\n\n return this.result;\n }\n\n private async parseEncrypted() {\n if (this.results.encKeyValidation_DO_NOT_EDIT != null) {\n const orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n const encKeyValidation = new EncString(this.results.encKeyValidation_DO_NOT_EDIT);\n const encKeyValidationDecrypt = await this.cryptoService.decryptToUtf8(encKeyValidation, orgKey);\n if (encKeyValidationDecrypt === null) {\n this.result.success = false;\n this.result.errorMessage = this.i18nService.t('importEncKeyError');\n return;\n }\n }\n\n const groupingsMap = new Map();\n\n if (this.organization && this.results.collections != null) {\n for (const c of this.results.collections as CollectionWithId[]) {\n const collection = CollectionWithId.toDomain(c);\n if (collection != null) {\n collection.id = null;\n collection.organizationId = this.organizationId;\n const view = await collection.decrypt();\n groupingsMap.set(c.id, this.result.collections.length);\n this.result.collections.push(view);\n }\n }\n } else if (!this.organization && this.results.folders != null) {\n for (const f of this.results.folders as FolderWithId[]) {\n const folder = FolderWithId.toDomain(f);\n if (folder != null) {\n folder.id = null;\n const view = await folder.decrypt();\n groupingsMap.set(f.id, this.result.folders.length);\n this.result.folders.push(view);\n }\n }\n }\n\n for (const c of this.results.items as CipherWithIds[]) {\n const cipher = CipherWithIds.toDomain(c);\n // reset ids incase they were set for some reason\n cipher.id = null;\n cipher.folderId = null;\n cipher.organizationId = this.organizationId;\n cipher.collectionIds = null;\n\n // make sure password history is limited\n if (cipher.passwordHistory != null && cipher.passwordHistory.length > 5) {\n cipher.passwordHistory = cipher.passwordHistory.slice(0, 5);\n }\n\n if (!this.organization && c.folderId != null && groupingsMap.has(c.folderId)) {\n this.result.folderRelationships.push([this.result.ciphers.length, groupingsMap.get(c.folderId)]);\n } else if (this.organization && c.collectionIds != null) {\n c.collectionIds.forEach(cId => {\n if (groupingsMap.has(cId)) {\n this.result.collectionRelationships.push([this.result.ciphers.length, groupingsMap.get(cId)]);\n }\n });\n }\n\n const view = await cipher.decrypt();\n this.cleanupCipher(view);\n this.result.ciphers.push(view);\n }\n\n this.result.success = true;\n }\n\n private parseDecrypted() {\n const groupingsMap = new Map();\n if (this.organization && this.results.collections != null) {\n this.results.collections.forEach((c: CollectionWithId) => {\n const collection = CollectionWithId.toView(c);\n if (collection != null) {\n collection.id = null;\n collection.organizationId = null;\n groupingsMap.set(c.id, this.result.collections.length);\n this.result.collections.push(collection);\n }\n });\n } else if (!this.organization && this.results.folders != null) {\n this.results.folders.forEach((f: FolderWithId) => {\n const folder = FolderWithId.toView(f);\n if (folder != null) {\n folder.id = null;\n groupingsMap.set(f.id, this.result.folders.length);\n this.result.folders.push(folder);\n }\n });\n }\n\n this.results.items.forEach((c: CipherWithIds) => {\n const cipher = CipherWithIds.toView(c);\n // reset ids incase they were set for some reason\n cipher.id = null;\n cipher.folderId = null;\n cipher.organizationId = null;\n cipher.collectionIds = null;\n\n // make sure password history is limited\n if (cipher.passwordHistory != null && cipher.passwordHistory.length > 5) {\n cipher.passwordHistory = cipher.passwordHistory.slice(0, 5);\n }\n\n if (!this.organization && c.folderId != null && groupingsMap.has(c.folderId)) {\n this.result.folderRelationships.push([this.result.ciphers.length, groupingsMap.get(c.folderId)]);\n } else if (this.organization && c.collectionIds != null) {\n c.collectionIds.forEach(cId => {\n if (groupingsMap.has(cId)) {\n this.result.collectionRelationships.push([this.result.ciphers.length, groupingsMap.get(cId)]);\n }\n });\n }\n\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n\n this.result.success = true;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class BlackBerryCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.grouping === 'list') {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.favorite = value.fav === '1';\n cipher.name = this.getValueOrDefault(value.name);\n cipher.notes = this.getValueOrDefault(value.extra);\n if (value.grouping !== 'note') {\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.username);\n }\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class BlurCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.label === 'null') {\n value.label = null;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.label,\n this.getValueOrDefault(this.nameFromUrl(value.domain), '--'));\n cipher.login.uris = this.makeUriArray(value.domain);\n cipher.login.password = this.getValueOrDefault(value.password);\n\n if (this.isNullOrWhitespace(value.email) && !this.isNullOrWhitespace(value.username)) {\n cipher.login.username = value.username;\n } else {\n cipher.login.username = this.getValueOrDefault(value.email);\n cipher.notes = this.getValueOrDefault(value.username);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nconst OfficialProps = [\n '!group_id', '!group_name', 'title', 'username', 'password', 'URL', 'id',\n];\n\nexport class ButtercupCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n this.processFolder(result, this.getValueOrDefault(value['!group_name']));\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.title, '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.URL);\n\n let processingCustomFields = false;\n for (const prop in value) {\n if (value.hasOwnProperty(prop)) {\n if (!processingCustomFields && OfficialProps.indexOf(prop) === -1) {\n processingCustomFields = true;\n }\n if (processingCustomFields) {\n this.processKvp(cipher, prop, value[prop]);\n }\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class ChromeCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class ClipperzHtmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const textarea = doc.querySelector('textarea');\n if (textarea == null || this.isNullOrWhitespace(textarea.textContent)) {\n result.errorMessage = 'Missing textarea.';\n result.success = false;\n return Promise.resolve(result);\n }\n\n const entries = JSON.parse(textarea.textContent);\n entries.forEach((entry: any) => {\n const cipher = this.initLoginCipher();\n if (!this.isNullOrWhitespace(entry.label)) {\n cipher.name = entry.label.split(' ')[0];\n }\n if (entry.data != null && !this.isNullOrWhitespace(entry.data.notes)) {\n cipher.notes = entry.data.notes.split('\\\\n').join('\\n');\n }\n\n if (entry.currentVersion != null && entry.currentVersion.fields != null) {\n for (const property in entry.currentVersion.fields) {\n if (!entry.currentVersion.fields.hasOwnProperty(property)) {\n continue;\n }\n\n const field = entry.currentVersion.fields[property];\n const actionType = field.actionType != null ? field.actionType.toLowerCase() : null;\n switch (actionType) {\n case 'password':\n cipher.login.password = this.getValueOrDefault(field.value);\n break;\n case 'email':\n case 'username':\n case 'user':\n case 'name':\n cipher.login.username = this.getValueOrDefault(field.value);\n break;\n case 'url':\n cipher.login.uris = this.makeUriArray(field.value);\n break;\n default:\n const labelLower = field.label != null ? field.label.toLowerCase() : null;\n if (cipher.login.password == null && this.passwordFieldNames.indexOf(labelLower) > -1) {\n cipher.login.password = this.getValueOrDefault(field.value);\n } else if (cipher.login.username == null &&\n this.usernameFieldNames.indexOf(labelLower) > -1) {\n cipher.login.username = this.getValueOrDefault(field.value);\n } else if ((cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(labelLower) > -1) {\n cipher.login.uris = this.makeUriArray(field.value);\n } else {\n this.processKvp(cipher, field.label, field.value);\n }\n break;\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class CodebookCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n this.processFolder(result, this.getValueOrDefault(value.Category));\n\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.Favorite) === 'True';\n cipher.name = this.getValueOrDefault(value.Entry, '--');\n cipher.notes = this.getValueOrDefault(value.Note);\n cipher.login.username = this.getValueOrDefault(value.Username, value.Email);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.totp = this.getValueOrDefault(value.TOTP);\n cipher.login.uris = this.makeUriArray(value.Website);\n\n if (!this.isNullOrWhitespace(value.Username)) {\n this.processKvp(cipher, 'Email', value.Email);\n }\n this.processKvp(cipher, 'Phone', value.Phone);\n this.processKvp(cipher, 'PIN', value.PIN);\n this.processKvp(cipher, 'Account', value.Account);\n this.processKvp(cipher, 'Date', value.Date);\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { IdentityView } from '../models/view/identityView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nconst HandledResults = new Set(['ADDRESS', 'AUTHENTIFIANT', 'BANKSTATEMENT', 'IDCARD', 'IDENTITY',\n 'PAYMENTMEANS_CREDITCARD', 'PAYMENTMEAN_PAYPAL', 'EMAIL']);\n\nexport class DashlaneJsonImporter extends BaseImporter implements Importer {\n private result: ImportResult;\n\n parse(data: string): Promise {\n this.result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.length === 0) {\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n if (results.ADDRESS != null) {\n this.processAddress(results.ADDRESS);\n }\n if (results.AUTHENTIFIANT != null) {\n this.processAuth(results.AUTHENTIFIANT);\n }\n if (results.BANKSTATEMENT != null) {\n this.processNote(results.BANKSTATEMENT, 'BankAccountName');\n }\n if (results.IDCARD != null) {\n this.processNote(results.IDCARD, 'Fullname');\n }\n if (results.PAYMENTMEANS_CREDITCARD != null) {\n this.processCard(results.PAYMENTMEANS_CREDITCARD);\n }\n if (results.IDENTITY != null) {\n this.processIdentity(results.IDENTITY);\n }\n\n for (const key in results) {\n if (results.hasOwnProperty(key) && !HandledResults.has(key)) {\n this.processNote(results[key], null, 'Generic Note');\n }\n }\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n private processAuth(results: any[]) {\n results.forEach((credential: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(credential.title);\n\n cipher.login.username = this.getValueOrDefault(credential.login,\n this.getValueOrDefault(credential.secondaryLogin));\n if (this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = this.getValueOrDefault(credential.email);\n } else if (!this.isNullOrWhitespace(credential.email)) {\n cipher.notes = ('Email: ' + credential.email + '\\n');\n }\n\n cipher.login.password = this.getValueOrDefault(credential.password);\n cipher.login.uris = this.makeUriArray(credential.domain);\n cipher.notes += this.getValueOrDefault(credential.note, '');\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processIdentity(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.name = this.getValueOrDefault(obj.fullName, '');\n const nameParts = cipher.name.split(' ');\n if (nameParts.length > 0) {\n cipher.identity.firstName = this.getValueOrDefault(nameParts[0]);\n }\n if (nameParts.length === 2) {\n cipher.identity.lastName = this.getValueOrDefault(nameParts[1]);\n } else if (nameParts.length === 3) {\n cipher.identity.middleName = this.getValueOrDefault(nameParts[1]);\n cipher.identity.lastName = this.getValueOrDefault(nameParts[2]);\n }\n cipher.identity.username = this.getValueOrDefault(obj.pseudo);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processAddress(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.name = this.getValueOrDefault(obj.addressName);\n cipher.identity.address1 = this.getValueOrDefault(obj.addressFull);\n cipher.identity.city = this.getValueOrDefault(obj.city);\n cipher.identity.state = this.getValueOrDefault(obj.state);\n cipher.identity.postalCode = this.getValueOrDefault(obj.zipcode);\n cipher.identity.country = this.getValueOrDefault(obj.country);\n if (cipher.identity.country != null) {\n cipher.identity.country = cipher.identity.country.toUpperCase();\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processCard(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n cipher.name = this.getValueOrDefault(obj.bank);\n cipher.card.number = this.getValueOrDefault(obj.cardNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.cardholderName = this.getValueOrDefault(obj.owner);\n if (!this.isNullOrWhitespace(cipher.card.brand)) {\n if (this.isNullOrWhitespace(cipher.name)) {\n cipher.name = cipher.card.brand;\n } else {\n cipher.name += (' - ' + cipher.card.brand);\n }\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processNote(results: any[], nameProperty: string, name: string = null) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.secureNote = new SecureNoteView();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n if (name != null) {\n cipher.name = name;\n } else {\n cipher.name = this.getValueOrDefault(obj[nameProperty]);\n }\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && key !== nameProperty) {\n this.processKvp(cipher, key, obj[key].toString());\n }\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class EncryptrCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Label, '--');\n cipher.notes = this.getValueOrDefault(value.Notes);\n const text = this.getValueOrDefault(value.Text);\n if (!this.isNullOrWhitespace(text)) {\n if (this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = text;\n } else {\n cipher.notes += ('\\n\\n' + text);\n }\n }\n\n const type = value['Entry Type'];\n if (type === 'Password') {\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value['Site URL']);\n } else if (type === 'Credit Card') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value['Name on card']);\n cipher.card.number = this.getValueOrDefault(value['Card Number']);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.CVV);\n const expiry = this.getValueOrDefault(value.Expiry);\n if (!this.isNullOrWhitespace(expiry)) {\n const expParts = expiry.split('/');\n if (expParts.length > 1) {\n cipher.card.expMonth = parseInt(expParts[0], null).toString();\n cipher.card.expYear = (2000 + parseInt(expParts[1], null)).toString();\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { CardView } from '../models/view/cardView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nexport class EnpassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let firstRow = true;\n results.forEach(value => {\n if (value.length < 2 || (firstRow && (value[0] === 'Title' || value[0] === 'title'))) {\n firstRow = false;\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 1]);\n cipher.name = this.getValueOrDefault(value[0], '--');\n\n if (value.length === 2 || (!this.containsField(value, 'username') &&\n !this.containsField(value, 'password') && !this.containsField(value, 'email') &&\n !this.containsField(value, 'url'))) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n }\n\n if (this.containsField(value, 'cardholder') && this.containsField(value, 'number') &&\n this.containsField(value, 'expiry date')) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n }\n\n if (value.length > 2 && (value.length % 2) === 0) {\n for (let i = 0; i < value.length - 2; i += 2) {\n const fieldValue: string = value[i + 2];\n if (this.isNullOrWhitespace(fieldValue)) {\n continue;\n }\n\n const fieldName: string = value[i + 1];\n const fieldNameLower = fieldName.toLowerCase();\n\n if (cipher.type === CipherType.Login) {\n if (fieldNameLower === 'url' && (cipher.login.uris == null || cipher.login.uris.length === 0)) {\n cipher.login.uris = this.makeUriArray(fieldValue);\n continue;\n } else if ((fieldNameLower === 'username' || fieldNameLower === 'email') &&\n this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = fieldValue;\n continue;\n } else if (fieldNameLower === 'password' && this.isNullOrWhitespace(cipher.login.password)) {\n cipher.login.password = fieldValue;\n continue;\n } else if (fieldNameLower === 'totp' && this.isNullOrWhitespace(cipher.login.totp)) {\n cipher.login.totp = fieldValue;\n continue;\n }\n } else if (cipher.type === CipherType.Card) {\n if (fieldNameLower === 'cardholder' && this.isNullOrWhitespace(cipher.card.cardholderName)) {\n cipher.card.cardholderName = fieldValue;\n continue;\n } else if (fieldNameLower === 'number' && this.isNullOrWhitespace(cipher.card.number)) {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n continue;\n } else if (fieldNameLower === 'cvc' && this.isNullOrWhitespace(cipher.card.code)) {\n cipher.card.code = fieldValue;\n continue;\n } else if (fieldNameLower === 'expiry date' && this.isNullOrWhitespace(cipher.card.expMonth) &&\n this.isNullOrWhitespace(cipher.card.expYear)) {\n if (this.setCardExpiration(cipher, fieldValue)) {\n continue;\n }\n } else if (fieldNameLower === 'type') {\n // Skip since brand was determined from number above\n continue;\n }\n }\n\n this.processKvp(cipher, fieldName, fieldValue);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private containsField(fields: any[], name: string) {\n if (fields == null || name == null) {\n return false;\n }\n return fields.filter(f => !this.isNullOrWhitespace(f) &&\n f.toLowerCase() === name.toLowerCase()).length > 0;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FolderView } from '../models/view/folderView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\n\nexport class EnpassJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null || results.items.length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n const foldersIndexMap = new Map();\n const folderTree = this.buildFolderTree(results.folders);\n this.flattenFolderTree(null, folderTree, foldersMap);\n foldersMap.forEach((val, key) => {\n foldersIndexMap.set(key, result.folders.length);\n const f = new FolderView();\n f.name = val;\n result.folders.push(f);\n });\n\n results.items.forEach((item: any) => {\n if (item.folders != null && item.folders.length > 0 && foldersIndexMap.has(item.folders[0])) {\n result.folderRelationships.push([result.ciphers.length, foldersIndexMap.get(item.folders[0])]);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(item.title);\n cipher.favorite = item.favorite > 0;\n\n if (item.template_type != null && item.fields != null && item.fields.length > 0) {\n if (item.template_type.indexOf('login.') === 0 || item.template_type.indexOf('password.') === 0) {\n this.processLogin(cipher, item.fields);\n } else if (item.template_type.indexOf('creditcard.') === 0) {\n this.processCard(cipher, item.fields);\n } else if (item.template_type.indexOf('identity.') < 0 &&\n item.fields.some((f: any) => f.type === 'password' && !this.isNullOrWhitespace(f.value))) {\n this.processLogin(cipher, item.fields);\n } else {\n this.processNote(cipher, item.fields);\n }\n }\n\n cipher.notes += ('\\n' + this.getValueOrDefault(item.note, ''));\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private processLogin(cipher: CipherView, fields: any[]) {\n const urls: string[] = [];\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === 'section') {\n return;\n }\n\n if ((field.type === 'username' || field.type === 'email') &&\n this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = field.value;\n } else if (field.type === 'password' && this.isNullOrWhitespace(cipher.login.password)) {\n cipher.login.password = field.value;\n } else if (field.type === 'totp' && this.isNullOrWhitespace(cipher.login.totp)) {\n cipher.login.totp = field.value;\n } else if (field.type === 'url') {\n urls.push(field.value);\n } else {\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n\n private processCard(cipher: CipherView, fields: any[]) {\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === 'section' || field.type === 'ccType') {\n return;\n }\n\n if (field.type === 'ccName' && this.isNullOrWhitespace(cipher.card.cardholderName)) {\n cipher.card.cardholderName = field.value;\n } else if (field.type === 'ccNumber' && this.isNullOrWhitespace(cipher.card.number)) {\n cipher.card.number = field.value;\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n } else if (field.type === 'ccCvc' && this.isNullOrWhitespace(cipher.card.code)) {\n cipher.card.code = field.value;\n } else if (field.type === 'ccExpiry' && this.isNullOrWhitespace(cipher.card.expYear)) {\n if (!this.setCardExpiration(cipher, field.value)) {\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n }\n } else {\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n }\n });\n }\n\n private processNote(cipher: CipherView, fields: any[]) {\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === 'section') {\n return;\n }\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n });\n }\n\n private buildFolderTree(folders: any[]): any[] {\n if (folders == null) {\n return [];\n }\n const folderTree: any[] = [];\n const map = new Map([]);\n folders.forEach((obj: any) => {\n map.set(obj.uuid, obj);\n obj.children = [];\n });\n folders.forEach((obj: any) => {\n if (obj.parent_uuid != null && obj.parent_uuid !== '' && map.has(obj.parent_uuid)) {\n map.get(obj.parent_uuid).children.push(obj);\n } else {\n folderTree.push(obj);\n }\n });\n return folderTree;\n }\n\n private flattenFolderTree(titlePrefix: string, tree: any[], map: Map) {\n if (tree == null) {\n return;\n }\n tree.forEach((f: any) => {\n if (f.title != null && f.title.trim() !== '') {\n let title = f.title.trim();\n if (titlePrefix != null && titlePrefix.trim() !== '') {\n title = titlePrefix + '/' + title;\n }\n map.set(f.uuid, title);\n if (f.children != null && f.children.length !== 0) {\n this.flattenFolderTree(title, f.children, map);\n }\n }\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class FirefoxCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.filter(value => {\n return value.url !== 'chrome://FirefoxAccounts';\n }).forEach(value => {\n const cipher = this.initLoginCipher();\n const url = this.getValueOrDefault(value.url, this.getValueOrDefault(value.hostname));\n cipher.name = this.getValueOrDefault(this.nameFromUrl(url), '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class FSecureFskImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.data == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n for (const key in results.data) {\n if (!results.data.hasOwnProperty(key)) {\n continue;\n }\n\n const value = results.data[key];\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.service);\n cipher.notes = this.getValueOrDefault(value.notes);\n\n if (value.style === 'website') {\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n } else if (value.style === 'creditcard') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.username);\n cipher.card.number = this.getValueOrDefault(value.creditNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.creditCvv);\n if (!this.isNullOrWhitespace(value.creditExpiry)) {\n if (!this.setCardExpiration(cipher, value.creditExpiry)) {\n this.processKvp(cipher, 'Expiration', value.creditExpiry);\n }\n }\n if (!this.isNullOrWhitespace(value.password)) {\n this.processKvp(cipher, 'PIN', value.password);\n }\n } else {\n continue;\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class GnomeJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || Object.keys(results).length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n for (const keyRing in results) {\n if (!results.hasOwnProperty(keyRing) || this.isNullOrWhitespace(keyRing) ||\n results[keyRing].length === 0) {\n continue;\n }\n\n results[keyRing].forEach((value: any) => {\n if (this.isNullOrWhitespace(value.display_name) || value.display_name.indexOf('http') !== 0) {\n return;\n }\n\n this.processFolder(result, keyRing);\n const cipher = this.initLoginCipher();\n cipher.name = value.display_name.replace('http://', '').replace('https://', '');\n if (cipher.name.length > 30) {\n cipher.name = cipher.name.substring(0, 30);\n }\n cipher.login.password = this.getValueOrDefault(value.secret);\n cipher.login.uris = this.makeUriArray(value.display_name);\n\n if (value.attributes != null) {\n cipher.login.username = value.attributes != null ?\n this.getValueOrDefault(value.attributes.username_value) : null;\n for (const attr in value.attributes) {\n if (!value.attributes.hasOwnProperty(attr) || attr === 'username_value' ||\n attr === 'xdg:schema') {\n continue;\n }\n this.processKvp(cipher, attr, value.attributes[attr]);\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nconst NotesHeader = 'Notes\\n\\n';\nconst ApplicationsHeader = 'Applications\\n\\n';\nconst WebsitesHeader = 'Websites\\n\\n';\nconst Delimiter = '\\n---\\n';\n\nexport class KasperskyTxtImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n\n let notesData: string;\n let applicationsData: string;\n let websitesData: string;\n let workingData = this.splitNewLine(data).join('\\n');\n\n if (workingData.indexOf(NotesHeader) !== -1) {\n const parts = workingData.split(NotesHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n notesData = parts[1];\n }\n }\n if (workingData.indexOf(ApplicationsHeader) !== -1) {\n const parts = workingData.split(ApplicationsHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n applicationsData = parts[1];\n }\n }\n if (workingData.indexOf(WebsitesHeader) === 0) {\n const parts = workingData.split(WebsitesHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n websitesData = parts[1];\n }\n }\n\n const notes = this.parseDataCategory(notesData);\n const applications = this.parseDataCategory(applicationsData);\n const websites = this.parseDataCategory(websitesData);\n\n notes.forEach(n => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(n.get('Name'));\n cipher.notes = this.getValueOrDefault(n.get('Text'));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n websites.concat(applications).forEach(w => {\n const cipher = this.initLoginCipher();\n const nameKey = w.has('Website name') ? 'Website name' : 'Application';\n cipher.name = this.getValueOrDefault(w.get(nameKey), '');\n if (!this.isNullOrWhitespace(w.get('Login name'))) {\n if (!this.isNullOrWhitespace(cipher.name)) {\n cipher.name += ': ';\n }\n cipher.name += w.get('Login name');\n }\n cipher.notes = this.getValueOrDefault(w.get('Comment'));\n if (w.has('Website URL')) {\n cipher.login.uris = this.makeUriArray(w.get('Website URL'));\n }\n cipher.login.username = this.getValueOrDefault(w.get('Login'));\n cipher.login.password = this.getValueOrDefault(w.get('Password'));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseDataCategory(data: string): Map[] {\n if (this.isNullOrWhitespace(data) || data.indexOf(Delimiter) === -1) {\n return [];\n }\n const items: Map[] = [];\n data.split(Delimiter).forEach(p => {\n if (p.indexOf('\\n') === -1) {\n return;\n }\n const item = new Map();\n let itemComment: string;\n let itemCommentKey: string;\n p.split('\\n').forEach(l => {\n if (itemComment != null) {\n itemComment += ('\\n' + l);\n return;\n }\n const colonIndex = l.indexOf(':');\n let key: string;\n let val: string;\n if (colonIndex === -1) {\n return;\n } else {\n key = l.substring(0, colonIndex);\n if (l.length > colonIndex + 1) {\n val = l.substring(colonIndex + 2);\n }\n }\n if (key != null) {\n item.set(key, val);\n }\n if (key === 'Comment' || key === 'Text') {\n itemComment = val;\n itemCommentKey = key;\n }\n });\n if (itemComment != null && itemCommentKey != null) {\n item.set(itemCommentKey, itemComment);\n }\n if (item.size === 0) {\n return;\n }\n items.push(item);\n });\n return items;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { FieldType } from '../enums/fieldType';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { FolderView } from '../models/view/folderView';\n\nexport class KeePass2XmlImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): Promise {\n const doc = this.parseXml(data);\n if (doc == null) {\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n const rootGroup = doc.querySelector('KeePassFile > Root > Group');\n if (rootGroup == null) {\n this.result.errorMessage = 'Missing `KeePassFile > Root > Group` node.';\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n this.traverse(rootGroup, true, '');\n\n if (this.organization) {\n this.moveFoldersToCollections(this.result);\n }\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n traverse(node: Element, isRootNode: boolean, groupPrefixName: string) {\n const folderIndex = this.result.folders.length;\n let groupName = groupPrefixName;\n\n if (!isRootNode) {\n if (groupName !== '') {\n groupName += '/';\n }\n const nameEl = this.querySelectorDirectChild(node, 'Name');\n groupName += nameEl == null ? '-' : nameEl.textContent;\n const folder = new FolderView();\n folder.name = groupName;\n this.result.folders.push(folder);\n }\n\n this.querySelectorAllDirectChild(node, 'Entry').forEach(entry => {\n const cipherIndex = this.result.ciphers.length;\n\n const cipher = this.initLoginCipher();\n this.querySelectorAllDirectChild(entry, 'String').forEach(entryString => {\n const valueEl = this.querySelectorDirectChild(entryString, 'Value');\n const value = valueEl != null ? valueEl.textContent : null;\n if (this.isNullOrWhitespace(value)) {\n return;\n }\n const keyEl = this.querySelectorDirectChild(entryString, 'Key');\n const key = keyEl != null ? keyEl.textContent : null;\n\n if (key === 'URL') {\n cipher.login.uris = this.makeUriArray(value);\n } else if (key === 'UserName') {\n cipher.login.username = value;\n } else if (key === 'Password') {\n cipher.login.password = value;\n } else if (key === 'otp') {\n cipher.login.totp = value.replace('key=', '');\n } else if (key === 'Title') {\n cipher.name = value;\n } else if (key === 'Notes') {\n cipher.notes += (value + '\\n');\n } else {\n let type = FieldType.Text;\n const attrs = (valueEl.attributes as any);\n if (attrs.length > 0 && attrs.ProtectInMemory != null &&\n attrs.ProtectInMemory.value === 'True') {\n type = FieldType.Hidden;\n }\n this.processKvp(cipher, key, value, type);\n }\n });\n\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n\n if (!isRootNode) {\n this.result.folderRelationships.push([cipherIndex, folderIndex]);\n }\n });\n\n this.querySelectorAllDirectChild(node, 'Group').forEach(group => {\n this.traverse(group, false, groupName);\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class KeePassXCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.isNullOrWhitespace(value.Title)) {\n return;\n }\n\n value.Group = !this.isNullOrWhitespace(value.Group) && value.Group.startsWith('Root/') ?\n value.Group.replace('Root/', '') : value.Group;\n const groupName = !this.isNullOrWhitespace(value.Group) ? value.Group : null;\n this.processFolder(result, groupName);\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.name = this.getValueOrDefault(value.Title, '--');\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { FolderView } from '../models/view/folderView';\n\nexport class KeeperCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 6) {\n return;\n }\n\n this.processFolder(result, value[0]);\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[5]) + '\\n';\n cipher.name = this.getValueOrDefault(value[1], '--');\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n\n if (value.length > 7) {\n // we have some custom fields.\n for (let i = 7; i < value.length; i = i + 2) {\n this.processKvp(cipher, value[i], value[i + 1]);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FolderView } from '../models/view/folderView';\nimport { IdentityView } from '../models/view/identityView';\nimport { LoginView } from '../models/view/loginView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class LastPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value, index) => {\n const cipherIndex = result.ciphers.length;\n let folderIndex = result.folders.length;\n let grouping = value.grouping;\n if (grouping != null) {\n grouping = grouping.replace(/\\\\/g, '/').replace(/[\\x00-\\x1F\\x7F-\\x9F]/g, '');\n }\n const hasFolder = this.getValueOrDefault(grouping, '(none)') !== '(none)';\n let addFolder = hasFolder;\n\n if (hasFolder) {\n for (let i = 0; i < result.folders.length; i++) {\n if (result.folders[i].name === grouping) {\n addFolder = false;\n folderIndex = i;\n break;\n }\n }\n }\n\n const cipher = this.buildBaseCipher(value);\n if (cipher.type === CipherType.Login) {\n cipher.notes = this.getValueOrDefault(value.extra);\n cipher.login = new LoginView();\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.totp = this.getValueOrDefault(value.totp);\n } else if (cipher.type === CipherType.SecureNote) {\n this.parseSecureNote(value, cipher);\n } else if (cipher.type === CipherType.Card) {\n cipher.card = this.parseCard(value);\n cipher.notes = this.getValueOrDefault(value.notes);\n } else if (cipher.type === CipherType.Identity) {\n cipher.identity = this.parseIdentity(value);\n cipher.notes = this.getValueOrDefault(value.notes);\n if (!this.isNullOrWhitespace(value.ccnum)) {\n // there is a card on this identity too\n const cardCipher = this.buildBaseCipher(value);\n cardCipher.identity = null;\n cardCipher.type = CipherType.Card;\n cardCipher.card = this.parseCard(value);\n result.ciphers.push(cardCipher);\n }\n }\n\n result.ciphers.push(cipher);\n\n if (addFolder) {\n const f = new FolderView();\n f.name = grouping;\n result.folders.push(f);\n }\n if (hasFolder) {\n result.folderRelationships.push([cipherIndex, folderIndex]);\n }\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private buildBaseCipher(value: any) {\n const cipher = new CipherView();\n if (value.hasOwnProperty('profilename') && value.hasOwnProperty('profilelanguage')) {\n // form fill\n cipher.favorite = false;\n cipher.name = this.getValueOrDefault(value.profilename, '--');\n cipher.type = CipherType.Card;\n\n if (!this.isNullOrWhitespace(value.title) || !this.isNullOrWhitespace(value.firstname) ||\n !this.isNullOrWhitespace(value.lastname) || !this.isNullOrWhitespace(value.address1) ||\n !this.isNullOrWhitespace(value.phone) || !this.isNullOrWhitespace(value.username) ||\n !this.isNullOrWhitespace(value.email)) {\n cipher.type = CipherType.Identity;\n }\n } else {\n // site or secure note\n cipher.favorite = !this.organization && this.getValueOrDefault(value.fav, '0') === '1';\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.type = value.url === 'http://sn' ? CipherType.SecureNote : CipherType.Login;\n }\n return cipher;\n }\n\n private parseCard(value: any): CardView {\n const card = new CardView();\n card.cardholderName = this.getValueOrDefault(value.ccname);\n card.number = this.getValueOrDefault(value.ccnum);\n card.code = this.getValueOrDefault(value.cccsc);\n card.brand = this.getCardBrand(value.ccnum);\n\n if (!this.isNullOrWhitespace(value.ccexp) && value.ccexp.indexOf('-') > -1) {\n const ccexpParts = (value.ccexp as string).split('-');\n if (ccexpParts.length > 1) {\n card.expYear = ccexpParts[0];\n card.expMonth = ccexpParts[1];\n if (card.expMonth.length === 2 && card.expMonth[0] === '0') {\n card.expMonth = card.expMonth[1];\n }\n }\n }\n\n return card;\n }\n\n private parseIdentity(value: any): IdentityView {\n const identity = new IdentityView();\n identity.title = this.getValueOrDefault(value.title);\n identity.firstName = this.getValueOrDefault(value.firstname);\n identity.middleName = this.getValueOrDefault(value.middlename);\n identity.lastName = this.getValueOrDefault(value.lastname);\n identity.username = this.getValueOrDefault(value.username);\n identity.company = this.getValueOrDefault(value.company);\n identity.ssn = this.getValueOrDefault(value.ssn);\n identity.address1 = this.getValueOrDefault(value.address1);\n identity.address2 = this.getValueOrDefault(value.address2);\n identity.address3 = this.getValueOrDefault(value.address3);\n identity.city = this.getValueOrDefault(value.city);\n identity.state = this.getValueOrDefault(value.state);\n identity.postalCode = this.getValueOrDefault(value.zip);\n identity.country = this.getValueOrDefault(value.country);\n identity.email = this.getValueOrDefault(value.email);\n identity.phone = this.getValueOrDefault(value.phone);\n\n if (!this.isNullOrWhitespace(identity.title)) {\n identity.title = identity.title.charAt(0).toUpperCase() + identity.title.slice(1);\n }\n\n return identity;\n }\n\n private parseSecureNote(value: any, cipher: CipherView) {\n const extraParts = this.splitNewLine(value.extra);\n let processedNote = false;\n\n if (extraParts.length) {\n const typeParts = extraParts[0].split(':');\n if (typeParts.length > 1 && typeParts[0] === 'NoteType' &&\n (typeParts[1] === 'Credit Card' || typeParts[1] === 'Address')) {\n if (typeParts[1] === 'Credit Card') {\n const mappedData = this.parseSecureNoteMapping(cipher, extraParts, {\n 'Number': 'number',\n 'Name on Card': 'cardholderName',\n 'Security Code': 'code',\n // LP provides date in a format like 'June,2020'\n // Store in expMonth, then parse and modify\n 'Expiration Date': 'expMonth',\n });\n\n if (this.isNullOrWhitespace(mappedData.expMonth) || mappedData.expMonth === ',') {\n // No expiration data\n mappedData.expMonth = undefined;\n } else {\n const [monthString, year] = mappedData.expMonth.split(',');\n // Parse month name into number\n if (!this.isNullOrWhitespace(monthString)) {\n const month = new Date(Date.parse(monthString.trim() + ' 1, 2012')).getMonth() + 1;\n if (isNaN(month)) {\n mappedData.expMonth = undefined;\n } else {\n mappedData.expMonth = month.toString();\n }\n } else {\n mappedData.expMonth = undefined;\n }\n if (!this.isNullOrWhitespace(year)) {\n mappedData.expYear = year;\n }\n }\n\n cipher.type = CipherType.Card;\n cipher.card = mappedData;\n } else if (typeParts[1] === 'Address') {\n const mappedData = this.parseSecureNoteMapping(cipher, extraParts, {\n 'Title': 'title',\n 'First Name': 'firstName',\n 'Last Name': 'lastName',\n 'Middle Name': 'middleName',\n 'Company': 'company',\n 'Address 1': 'address1',\n 'Address 2': 'address2',\n 'Address 3': 'address3',\n 'City / Town': 'city',\n 'State': 'state',\n 'Zip / Postal Code': 'postalCode',\n 'Country': 'country',\n 'Email Address': 'email',\n 'Username': 'username',\n });\n cipher.type = CipherType.Identity;\n cipher.identity = mappedData;\n }\n processedNote = true;\n }\n }\n\n if (!processedNote) {\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.notes = this.getValueOrDefault(value.extra);\n }\n }\n\n private parseSecureNoteMapping(cipher: CipherView, extraParts: string[], map: any): T {\n const dataObj: any = {};\n\n let processingNotes = false;\n extraParts.forEach(extraPart => {\n let key: string = null;\n let val: string = null;\n if (!processingNotes) {\n if (this.isNullOrWhitespace(extraPart)) {\n return;\n }\n const colonIndex = extraPart.indexOf(':');\n if (colonIndex === -1) {\n key = extraPart;\n } else {\n key = extraPart.substring(0, colonIndex);\n if (extraPart.length > colonIndex) {\n val = extraPart.substring(colonIndex + 1);\n }\n }\n if (this.isNullOrWhitespace(key) || this.isNullOrWhitespace(val) || key === 'NoteType') {\n return;\n }\n }\n\n if (processingNotes) {\n cipher.notes += ('\\n' + extraPart);\n } else if (key === 'Notes') {\n if (!this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes += ('\\n' + val);\n } else {\n cipher.notes = val;\n }\n processingNotes = true;\n } else if (map.hasOwnProperty(key)) {\n dataObj[map[key]] = val;\n } else {\n this.processKvp(cipher, key, val);\n }\n });\n\n return dataObj;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class LogMeOnceCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 4) {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[1]);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class MeldiumCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.DisplayName, '--');\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.login.username = this.getValueOrDefault(value.UserName);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.Url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nexport class MSecureCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 3) {\n return;\n }\n\n const folderName = this.getValueOrDefault(value[0], 'Unassigned') !== 'Unassigned' ? value[0] : null;\n this.processFolder(result, folderName);\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[2], '--');\n\n if (value[1] === 'Web Logins' || value[1] === 'Login') {\n cipher.login.uris = this.makeUriArray(value[4]);\n cipher.login.username = this.getValueOrDefault(value[5]);\n cipher.login.password = this.getValueOrDefault(value[6]);\n cipher.notes = !this.isNullOrWhitespace(value[3]) ? value[3].split('\\\\n').join('\\n') : null;\n } else if (value.length > 3) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n for (let i = 3; i < value.length; i++) {\n if (!this.isNullOrWhitespace(value[i])) {\n cipher.notes += (value[i] + '\\n');\n }\n }\n }\n\n if (!this.isNullOrWhitespace(value[1]) && cipher.type !== CipherType.Login) {\n cipher.name = value[1] + ': ' + cipher.name;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { CardView } from '../models/view/cardView';\nimport { IdentityView } from '../models/view/identityView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class MykiCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.nickname, '--');\n cipher.notes = this.getValueOrDefault(value.additionalInfo);\n\n if (value.url !== undefined) {\n // Accounts\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.totp = this.getValueOrDefault(value.twoFactAuthToken);\n } else if (value.cardNumber !== undefined) {\n // Cards\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n cipher.card.cardholderName = this.getValueOrDefault(value.cardName);\n cipher.card.number = this.getValueOrDefault(value.cardNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.expMonth = this.getValueOrDefault(value.exp_month);\n cipher.card.expYear = this.getValueOrDefault(value.exp_year);\n cipher.card.code = this.getValueOrDefault(value.cvv);\n } else if (value.firstName !== undefined) {\n // Identities\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.identity.title = this.getValueOrDefault(value.title);\n cipher.identity.firstName = this.getValueOrDefault(value.firstName);\n cipher.identity.middleName = this.getValueOrDefault(value.middleName);\n cipher.identity.lastName = this.getValueOrDefault(value.lastName);\n cipher.identity.phone = this.getValueOrDefault(value.number);\n cipher.identity.email = this.getValueOrDefault(value.email);\n cipher.identity.address1 = this.getValueOrDefault(value.firstAddressLine);\n cipher.identity.address2 = this.getValueOrDefault(value.secondAddressLine);\n cipher.identity.city = this.getValueOrDefault(value.city);\n cipher.identity.country = this.getValueOrDefault(value.country);\n cipher.identity.postalCode = this.getValueOrDefault(value.zipCode);\n } else if (value.content !== undefined) {\n // Notes\n cipher.secureNote = new SecureNoteView();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.name = this.getValueOrDefault(value.title, '--');\n cipher.notes = this.getValueOrDefault(value.content);\n } else {\n return;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { LoginView } from '../models/view/loginView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\ntype nodePassCsvParsed = {\n name: string;\n url: string;\n username: string;\n password: string;\n note: string;\n cardholdername: string;\n cardnumber: string;\n cvc: string;\n expirydate: string;\n zipcode: string;\n folder: string;\n full_name: string;\n phone_number: string;\n email: string;\n address1: string;\n address2: string;\n city: string;\n country: string;\n state: string;\n};\n\nexport class NordPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results: nodePassCsvParsed[] = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(record => {\n\n const recordType = this.evaluateType(record);\n if (recordType === undefined) {\n return;\n }\n\n if (!this.organization) {\n this.processFolder(result, record.folder);\n }\n\n const cipher = new CipherView();\n cipher.name = this.getValueOrDefault(record.name, '--');\n cipher.notes = this.getValueOrDefault(record.note);\n\n switch (recordType) {\n case CipherType.Login:\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n cipher.login.username = this.getValueOrDefault(record.username);\n cipher.login.password = this.getValueOrDefault(record.password);\n cipher.login.uris = this.makeUriArray(record.url);\n break;\n case CipherType.Card:\n cipher.type = CipherType.Card;\n cipher.card.cardholderName = this.getValueOrDefault(record.cardholdername);\n cipher.card.number = this.getValueOrDefault(record.cardnumber);\n cipher.card.code = this.getValueOrDefault(record.cvc);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n this.setCardExpiration(cipher, record.expirydate);\n break;\n\n case CipherType.Identity:\n cipher.type = CipherType.Identity;\n\n this.processName(cipher, this.getValueOrDefault(record.full_name));\n cipher.identity.address1 = this.getValueOrDefault(record.address1);\n cipher.identity.address2 = this.getValueOrDefault(record.address2);\n cipher.identity.city = this.getValueOrDefault(record.city);\n cipher.identity.state = this.getValueOrDefault(record.state);\n cipher.identity.postalCode = this.getValueOrDefault(record.zipcode);\n cipher.identity.country = this.getValueOrDefault(record.country);\n if (cipher.identity.country != null) {\n cipher.identity.country = cipher.identity.country.toUpperCase();\n }\n cipher.identity.email = this.getValueOrDefault(record.email);\n cipher.identity.phone = this.getValueOrDefault(record.phone_number);\n break;\n case CipherType.SecureNote:\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n break;\n default:\n break;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private evaluateType(record: nodePassCsvParsed): CipherType {\n\n if (!this.isNullOrWhitespace(record.username)) {\n return CipherType.Login;\n }\n\n if (!this.isNullOrWhitespace(record.cardnumber)) {\n return CipherType.Card;\n }\n\n if (!this.isNullOrWhitespace(record.full_name)) {\n return CipherType.Identity;\n }\n\n if (!this.isNullOrWhitespace(record.note)) {\n return CipherType.SecureNote;\n }\n\n return undefined;\n }\n\n private processName(cipher: CipherView, fullName: string) {\n\n if (this.isNullOrWhitespace(fullName)) {\n return;\n }\n\n const nameParts = fullName.split(' ');\n if (nameParts.length > 0) {\n cipher.identity.firstName = this.getValueOrDefault(nameParts[0]);\n }\n if (nameParts.length === 2) {\n cipher.identity.lastName = this.getValueOrDefault(nameParts[1]);\n } else if (nameParts.length >= 3) {\n cipher.identity.middleName = this.getValueOrDefault(nameParts[1]);\n cipher.identity.lastName = nameParts.slice(2, nameParts.length).join(' ');\n }\n }\n}\n","import { BaseImporter } from '../baseImporter';\nimport { Importer } from '../importer';\n\nimport { ImportResult } from '../../models/domain/importResult';\n\nimport { CardView } from '../../models/view/cardView';\nimport { CipherView } from '../../models/view/cipherView';\nimport { IdentityView } from '../../models/view/identityView';\nimport { PasswordHistoryView } from '../../models/view/passwordHistoryView';\nimport { SecureNoteView } from '../../models/view/secureNoteView';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { FieldType } from '../../enums/fieldType';\nimport { SecureNoteType } from '../../enums/secureNoteType';\n\nexport class OnePassword1PifImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): Promise {\n data.split(this.newLineRegex).forEach(line => {\n if (this.isNullOrWhitespace(line) || line[0] !== '{') {\n return;\n }\n const item = JSON.parse(line);\n if (item.trashed === true) {\n return;\n }\n const cipher = this.initLoginCipher();\n\n if (this.isNullOrWhitespace(item.hmac)) {\n this.processStandardItem(item, cipher);\n } else {\n this.processWinOpVaultItem(item, cipher);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n private processWinOpVaultItem(item: any, cipher: CipherView) {\n if (item.overview != null) {\n cipher.name = this.getValueOrDefault(item.overview.title);\n if (item.overview.URLs != null) {\n const urls: string[] = [];\n item.overview.URLs.forEach((url: any) => {\n if (!this.isNullOrWhitespace(url.u)) {\n urls.push(url.u);\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n }\n\n if (item.details != null) {\n if (item.details.passwordHistory != null) {\n this.parsePasswordHistory(item.details.passwordHistory, cipher);\n }\n if (!this.isNullOrWhitespace(item.details.ccnum) || !this.isNullOrWhitespace(item.details.cvv)) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n } else if (!this.isNullOrWhitespace(item.details.firstname) ||\n !this.isNullOrWhitespace(item.details.address1)) {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n }\n if (cipher.type === CipherType.Login && !this.isNullOrWhitespace(item.details.password)) {\n cipher.login.password = item.details.password;\n }\n if (!this.isNullOrWhitespace(item.details.notesPlain)) {\n cipher.notes = item.details.notesPlain.split(this.newLineRegex).join('\\n') + '\\n';\n }\n if (item.details.fields != null) {\n this.parseFields(item.details.fields, cipher, 'designation', 'value', 'name');\n }\n if (item.details.sections != null) {\n item.details.sections.forEach((section: any) => {\n if (section.fields != null) {\n this.parseFields(section.fields, cipher, 'n', 'v', 't');\n }\n });\n }\n }\n }\n\n private processStandardItem(item: any, cipher: CipherView) {\n cipher.favorite = item.openContents && item.openContents.faveIndex ? true : false;\n cipher.name = this.getValueOrDefault(item.title);\n\n if (item.typeName === 'securenotes.SecureNote') {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n } else if (item.typeName === 'wallet.financial.CreditCard') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n } else if (item.typeName === 'identities.Identity') {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n } else {\n cipher.login.uris = this.makeUriArray(item.location);\n }\n\n if (item.secureContents != null) {\n if (item.secureContents.passwordHistory != null) {\n this.parsePasswordHistory(item.secureContents.passwordHistory, cipher);\n }\n if (!this.isNullOrWhitespace(item.secureContents.notesPlain)) {\n cipher.notes = item.secureContents.notesPlain.split(this.newLineRegex).join('\\n') + '\\n';\n }\n if (cipher.type === CipherType.Login) {\n if (!this.isNullOrWhitespace(item.secureContents.password)) {\n cipher.login.password = item.secureContents.password;\n }\n if (item.secureContents.URLs != null) {\n const urls: string[] = [];\n item.secureContents.URLs.forEach((u: any) => {\n if (!this.isNullOrWhitespace(u.url)) {\n urls.push(u.url);\n }\n });\n if (urls.length > 0) {\n cipher.login.uris = this.makeUriArray(urls);\n }\n }\n }\n if (item.secureContents.fields != null) {\n this.parseFields(item.secureContents.fields, cipher, 'designation', 'value', 'name');\n }\n if (item.secureContents.sections != null) {\n item.secureContents.sections.forEach((section: any) => {\n if (section.fields != null) {\n this.parseFields(section.fields, cipher, 'n', 'v', 't');\n }\n });\n }\n }\n }\n\n private parsePasswordHistory(items: any[], cipher: CipherView) {\n const maxSize = items.length > 5 ? 5 : items.length;\n cipher.passwordHistory = items\n .filter((h: any) => !this.isNullOrWhitespace(h.value) && h.time != null)\n .sort((a, b) => b.time - a.time)\n .slice(0, maxSize)\n .map((h: any) => {\n const ph = new PasswordHistoryView();\n ph.password = h.value;\n ph.lastUsedDate = new Date(('' + h.time).length >= 13 ? h.time : h.time * 1000);\n return ph;\n });\n }\n\n private parseFields(fields: any[], cipher: CipherView, designationKey: string, valueKey: string, nameKey: string) {\n fields.forEach((field: any) => {\n if (field[valueKey] == null || field[valueKey].toString().trim() === '') {\n return;\n }\n\n const fieldValue = field[valueKey].toString();\n const fieldDesignation = field[designationKey] != null ? field[designationKey].toString() : null;\n\n if (cipher.type === CipherType.Login) {\n if (this.isNullOrWhitespace(cipher.login.username) && fieldDesignation === 'username') {\n cipher.login.username = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.login.password) && fieldDesignation === 'password') {\n cipher.login.password = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.login.totp) && fieldDesignation != null &&\n fieldDesignation.startsWith('TOTP_')) {\n cipher.login.totp = fieldValue;\n return;\n }\n } else if (cipher.type === CipherType.Card) {\n if (this.isNullOrWhitespace(cipher.card.number) && fieldDesignation === 'ccnum') {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n return;\n } else if (this.isNullOrWhitespace(cipher.card.code) && fieldDesignation === 'cvv') {\n cipher.card.code = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.card.cardholderName) && fieldDesignation === 'cardholder') {\n cipher.card.cardholderName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.card.expiration) && fieldDesignation === 'expiry' &&\n fieldValue.length === 6) {\n cipher.card.expMonth = (fieldValue as string).substr(4, 2);\n if (cipher.card.expMonth[0] === '0') {\n cipher.card.expMonth = cipher.card.expMonth.substr(1, 1);\n }\n cipher.card.expYear = (fieldValue as string).substr(0, 4);\n return;\n } else if (fieldDesignation === 'type') {\n // Skip since brand was determined from number above\n return;\n }\n } else if (cipher.type === CipherType.Identity) {\n const identity = cipher.identity;\n if (this.isNullOrWhitespace(identity.firstName) && fieldDesignation === 'firstname') {\n identity.firstName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.lastName) && fieldDesignation === 'lastname') {\n identity.lastName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.middleName) && fieldDesignation === 'initial') {\n identity.middleName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.phone) && fieldDesignation === 'defphone') {\n identity.phone = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.company) && fieldDesignation === 'company') {\n identity.company = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.email) && fieldDesignation === 'email') {\n identity.email = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.username) && fieldDesignation === 'username') {\n identity.username = fieldValue;\n return;\n } else if (fieldDesignation === 'address') {\n // fieldValue is an object casted into a string, so access the plain value instead\n const { street, city, country, zip } = field[valueKey];\n identity.address1 = this.getValueOrDefault(street);\n identity.city = this.getValueOrDefault(city);\n if (!this.isNullOrWhitespace(country)) {\n identity.country = country.toUpperCase();\n }\n identity.postalCode = this.getValueOrDefault(zip);\n return;\n }\n }\n\n const fieldName = this.isNullOrWhitespace(field[nameKey]) ? 'no_name' : field[nameKey];\n if (fieldName === 'password' && cipher.passwordHistory != null &&\n cipher.passwordHistory.some(h => h.password === fieldValue)) {\n return;\n }\n\n const fieldType = field.k === 'concealed' ? FieldType.Hidden : FieldType.Text;\n this.processKvp(cipher, fieldName, fieldValue, fieldType);\n });\n }\n}\n","import { Importer } from '../importer';\nimport { IgnoredProperties, OnePasswordCsvImporter } from './onepasswordCsvImporter';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { CardView, CipherView, IdentityView } from '../../models/view';\n\nexport class OnePasswordMacCsvImporter extends OnePasswordCsvImporter implements Importer {\n setCipherType(value: any, cipher: CipherView) {\n const onePassType = this.getValueOrDefault(this.getProp(value, 'type'), 'Login');\n switch (onePassType) {\n case 'Credit Card':\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n IgnoredProperties.push('type');\n break;\n case 'Identity':\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n IgnoredProperties.push('type');\n break;\n case 'Login':\n case 'Secure Note':\n IgnoredProperties.push('type');\n default:\n break;\n }\n }\n}\n","import { CipherView } from '../../models/view';\n\nexport class CipherImportContext {\n lowerProperty: string;\n constructor(public importRecord: any, public property: string, public cipher: CipherView) {\n this.lowerProperty = property.toLowerCase();\n }\n}\n","export class View {\n}\n","import { Importer } from '../importer';\nimport { CipherImportContext } from './cipherImportContext';\nimport { OnePasswordCsvImporter } from './onepasswordCsvImporter';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { CardView, CipherView, IdentityView, LoginView } from '../../models/view';\n\nexport class OnePasswordWinCsvImporter extends OnePasswordCsvImporter implements Importer {\n constructor() {\n super();\n this.identityPropertyParsers.push(this.setIdentityAddress);\n }\n\n setCipherType(value: any, cipher: CipherView) {\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n\n if (!this.isNullOrWhitespace(this.getPropByRegexp(value, /\\d+: number/i)) &&\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /\\d+: expiry date/i))) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n }\n\n if (!this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: first name/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: initial/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: last name/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /internet \\d+: email/i))) {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n }\n }\n\n setIdentityAddress(context: CipherImportContext) {\n if (context.lowerProperty.match(/address \\d+: address/i)) {\n this.processKvp(context.cipher, 'address', context.importRecord[context.property]);\n return true;\n }\n return false;\n }\n\n setCreditCardExpiry(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.expiration) && context.lowerProperty.includes('expiry date')) {\n const expSplit = (context.importRecord[context.property] as string).split('/');\n context.cipher.card.expMonth = expSplit[0];\n if (context.cipher.card.expMonth[0] === '0' && context.cipher.card.expMonth.length === 2) {\n context.cipher.card.expMonth = context.cipher.card.expMonth.substr(1, 1);\n }\n context.cipher.card.expYear = expSplit[2].length > 4 ? expSplit[2].substr(0, 4) : expSplit[2];\n return true;\n }\n return false;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CollectionView } from '../models/view/collectionView';\nimport { FolderView } from '../models/view/folderView';\n\nexport class PadlockCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let headers: string[] = null;\n results.forEach(value => {\n if (headers == null) {\n headers = value.map((v: string) => v);\n return;\n }\n\n if (value.length < 2 || value.length !== headers.length) {\n return;\n }\n\n if (!this.isNullOrWhitespace(value[1])) {\n if (this.organization) {\n const tags = (value[1] as string).split(',');\n tags.forEach(tag => {\n tag = tag.trim();\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === tag) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = tag;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else {\n const tags = (value[1] as string).split(',');\n const tag = tags.length > 0 ? tags[0].trim() : null;\n this.processFolder(result, tag);\n }\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n\n for (let i = 2; i < value.length; i++) {\n const header = headers[i].trim().toLowerCase();\n if (this.isNullOrWhitespace(value[i]) || this.isNullOrWhitespace(header)) {\n continue;\n }\n\n if (this.usernameFieldNames.indexOf(header) > -1) {\n cipher.login.username = value[i];\n } else if (this.passwordFieldNames.indexOf(header) > -1) {\n cipher.login.password = value[i];\n } else if (this.uriFieldNames.indexOf(header) > -1) {\n cipher.login.uris = this.makeUriArray(value[i]);\n } else {\n this.processKvp(cipher, headers[i], value[i]);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PassKeepCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n this.processFolder(result, this.getValue('category', value));\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValue('description', value);\n cipher.name = this.getValueOrDefault(this.getValue('title', value), '--');\n cipher.login.username = this.getValue('username', value);\n cipher.login.password = this.getValue('password', value);\n cipher.login.uris = this.makeUriArray(this.getValue('site', value));\n this.processKvp(cipher, 'Password 2', this.getValue('password2', value));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private getValue(key: string, value: any) {\n return this.getValueOrDefault(value[key], this.getValueOrDefault(value[(' ' + key)]));\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PassmanJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((credential: any) => {\n if (credential.tags != null && credential.tags.length > 0) {\n const folderName = credential.tags[0].text;\n this.processFolder(result, folderName);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = credential.label;\n\n cipher.login.username = this.getValueOrDefault(credential.username);\n if (this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = this.getValueOrDefault(credential.email);\n } else if (!this.isNullOrWhitespace(credential.email)) {\n cipher.notes = ('Email: ' + credential.email + '\\n');\n }\n\n cipher.login.password = this.getValueOrDefault(credential.password);\n cipher.login.uris = this.makeUriArray(credential.url);\n cipher.notes += this.getValueOrDefault(credential.description, '');\n if (credential.otp != null) {\n cipher.login.totp = this.getValueOrDefault(credential.otp.secret);\n }\n\n if (credential.custom_fields != null) {\n credential.custom_fields.forEach((customField: any) => {\n switch (customField.field_type) {\n case 'text':\n case 'password':\n this.processKvp(cipher, customField.label, customField.value);\n break;\n }\n });\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CollectionView } from '../models/view/collectionView';\n\nexport class PasspackCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const tagsJson = !this.isNullOrWhitespace(value.Tags) ? JSON.parse(value.Tags) : null;\n const tags: string[] = tagsJson != null && tagsJson.tags != null && tagsJson.tags.length > 0 ?\n tagsJson.tags.map((tagJson: string) => {\n try {\n const t = JSON.parse(tagJson);\n return this.getValueOrDefault(t.tag);\n } catch { }\n return null;\n }).filter((t: string) => !this.isNullOrWhitespace(t)) : null;\n\n if (this.organization && tags != null && tags.length > 0) {\n tags.forEach(tag => {\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === tag) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = tag;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else if (!this.organization && tags != null && tags.length > 0) {\n this.processFolder(result, tags[0]);\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Notes, '');\n cipher.notes += ('\\n\\n' + this.getValueOrDefault(value['Shared Notes'], '') + '\\n');\n cipher.name = this.getValueOrDefault(value['Entry Name'], '--');\n cipher.login.username = this.getValueOrDefault(value['User ID']);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n\n if (value.__parsed_extra != null && value.__parsed_extra.length > 0) {\n value.__parsed_extra.forEach((extra: string) => {\n if (!this.isNullOrWhitespace(extra)) {\n cipher.notes += ('\\n' + extra);\n }\n });\n }\n\n const fieldsJson = !this.isNullOrWhitespace(value['Extra Fields']) ?\n JSON.parse(value['Extra Fields']) : null;\n const fields = fieldsJson != null && fieldsJson.extraFields != null &&\n fieldsJson.extraFields.length > 0 ? fieldsJson.extraFields.map((fieldJson: string) => {\n try {\n return JSON.parse(fieldJson);\n } catch { }\n return null;\n }) : null;\n if (fields != null) {\n fields.forEach((f: any) => {\n if (f != null) {\n this.processKvp(cipher, f.name, f.data);\n }\n });\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordAgentCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let newVersion = true;\n results.forEach(value => {\n if (value.length !== 5 && value.length < 9) {\n return;\n }\n const altFormat = value.length === 10 && value[0] === '0';\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[altFormat ? 1 : 0], '--');\n cipher.login.username = this.getValueOrDefault(value[altFormat ? 2 : 1]);\n cipher.login.password = this.getValueOrDefault(value[altFormat ? 3 : 2]);\n if (value.length === 5) {\n newVersion = false;\n cipher.notes = this.getValueOrDefault(value[4]);\n cipher.login.uris = this.makeUriArray(value[3]);\n } else {\n const folder = this.getValueOrDefault(value[altFormat ? 9 : 8], '(None)');\n let folderName = folder !== '(None)' ? folder.split('\\\\').join('/') : null;\n if (folderName != null) {\n folderName = folder.split(' > ').join('/');\n folderName = folder.split('>').join('/');\n }\n this.processFolder(result, folderName);\n cipher.notes = this.getValueOrDefault(value[altFormat ? 5 : 3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n }\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (newVersion && this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { FolderView } from '../models/view/folderView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class PasswordBossJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n results.folders.forEach((value: any) => {\n foldersMap.set(value.id, value.name);\n });\n const foldersIndexMap = new Map();\n foldersMap.forEach((val, key) => {\n foldersIndexMap.set(key, result.folders.length);\n const f = new FolderView();\n f.name = val;\n result.folders.push(f);\n });\n\n results.items.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.login.uris = this.makeUriArray(value.login_url);\n\n if (value.folder != null && foldersIndexMap.has(value.folder)) {\n result.folderRelationships.push([result.ciphers.length, foldersIndexMap.get(value.folder)]);\n }\n\n if (value.identifiers == null) {\n return;\n }\n\n if (!this.isNullOrWhitespace(value.identifiers.notes)) {\n cipher.notes = value.identifiers.notes.split('\\\\r\\\\n').join('\\n').split('\\\\n').join('\\n');\n }\n\n if (value.type === 'CreditCard') {\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n }\n\n for (const property in value.identifiers) {\n if (!value.identifiers.hasOwnProperty(property)) {\n continue;\n }\n const valObj = value.identifiers[property];\n const val = valObj != null ? valObj.toString() : null;\n if (this.isNullOrWhitespace(val) || property === 'notes' || property === 'ignoreItemInSecurityScore') {\n continue;\n }\n\n if (property === 'custom_fields') {\n valObj.forEach((cf: any) => {\n this.processKvp(cipher, cf.name, cf.value);\n });\n continue;\n }\n\n if (cipher.type === CipherType.Card) {\n if (property === 'cardNumber') {\n cipher.card.number = val;\n cipher.card.brand = this.getCardBrand(val);\n continue;\n } else if (property === 'nameOnCard') {\n cipher.card.cardholderName = val;\n continue;\n } else if (property === 'security_code') {\n cipher.card.code = val;\n continue;\n } else if (property === 'expires') {\n try {\n const expDate = new Date(val);\n cipher.card.expYear = expDate.getFullYear().toString();\n cipher.card.expMonth = (expDate.getMonth() + 1).toString();\n } catch { }\n continue;\n } else if (property === 'cardType') {\n continue;\n }\n } else {\n if ((property === 'username' || property === 'email') &&\n this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = val;\n continue;\n } else if (property === 'password') {\n cipher.login.password = val;\n continue;\n } else if (property === 'totp') {\n cipher.login.totp = val;\n continue;\n } else if ((cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(property) > -1) {\n cipher.login.uris = this.makeUriArray(val);\n continue;\n }\n }\n\n this.processKvp(cipher, property, val);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordDragonXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const records = doc.querySelectorAll('PasswordManager > record');\n Array.from(records).forEach(record => {\n const category = this.querySelectorDirectChild(record, 'Category');\n const categoryText = category != null && !this.isNullOrWhitespace(category.textContent) &&\n category.textContent !== 'Unfiled' ? category.textContent : null;\n this.processFolder(result, categoryText);\n\n const accountName = this.querySelectorDirectChild(record, 'Account-Name');\n const userId = this.querySelectorDirectChild(record, 'User-Id');\n const password = this.querySelectorDirectChild(record, 'Password');\n const url = this.querySelectorDirectChild(record, 'URL');\n const notes = this.querySelectorDirectChild(record, 'Notes');\n const cipher = this.initLoginCipher();\n cipher.name = accountName != null ? this.getValueOrDefault(accountName.textContent, '--') : '--';\n cipher.notes = notes != null ? this.getValueOrDefault(notes.textContent) : '';\n cipher.login.username = userId != null ? this.getValueOrDefault(userId.textContent) : null;\n cipher.login.password = password != null ? this.getValueOrDefault(password.textContent) : null;\n cipher.login.uris = url != null ? this.makeUriArray(url.textContent) : null;\n\n const attributes: string[] = [];\n for (let i = 1; i <= 10; i++) {\n attributes.push('Attribute-' + i);\n }\n\n this.querySelectorAllDirectChild(record, attributes.join(',')).forEach(attr => {\n if (this.isNullOrWhitespace(attr.textContent) || attr.textContent === 'null') {\n return;\n }\n this.processKvp(cipher, attr.tagName, attr.textContent);\n });\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordSafeXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const passwordSafe = doc.querySelector('passwordsafe');\n if (passwordSafe == null) {\n result.errorMessage = 'Missing `passwordsafe` node.';\n result.success = false;\n return Promise.resolve(result);\n }\n\n const notesDelimiter = passwordSafe.getAttribute('delimiter');\n const entries = doc.querySelectorAll('passwordsafe > entry');\n Array.from(entries).forEach(entry => {\n const group = this.querySelectorDirectChild(entry, 'group');\n const groupText = group != null && !this.isNullOrWhitespace(group.textContent) ?\n group.textContent.split('.').join('/') : null;\n this.processFolder(result, groupText);\n\n const title = this.querySelectorDirectChild(entry, 'title');\n const username = this.querySelectorDirectChild(entry, 'username');\n const email = this.querySelectorDirectChild(entry, 'email');\n const password = this.querySelectorDirectChild(entry, 'password');\n const url = this.querySelectorDirectChild(entry, 'url');\n const notes = this.querySelectorDirectChild(entry, 'notes');\n const cipher = this.initLoginCipher();\n cipher.name = title != null ? this.getValueOrDefault(title.textContent, '--') : '--';\n cipher.notes = notes != null ?\n this.getValueOrDefault(notes.textContent, '').split(notesDelimiter).join('\\n') : null;\n cipher.login.username = username != null ? this.getValueOrDefault(username.textContent) : null;\n cipher.login.password = password != null ? this.getValueOrDefault(password.textContent) : null;\n cipher.login.uris = url != null ? this.makeUriArray(url.textContent) : null;\n\n if (this.isNullOrWhitespace(cipher.login.username) && email != null) {\n cipher.login.username = this.getValueOrDefault(email.textContent);\n } else if (email != null && !this.isNullOrWhitespace(email.textContent)) {\n cipher.notes = this.isNullOrWhitespace(cipher.notes) ? 'Email: ' + email.textContent\n : (cipher.notes + '\\n' + 'Email: ' + email.textContent);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordWalletTxtImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 1) {\n return;\n }\n if (value.length > 5) {\n this.processFolder(result, value[5]);\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n if (value.length > 4) {\n cipher.notes = this.getValueOrDefault(value[4], '').split('¬').join('\\n');\n }\n if (value.length > 2) {\n cipher.login.username = this.getValueOrDefault(value[2]);\n }\n if (value.length > 3) {\n cipher.login.password = this.getValueOrDefault(value[3]);\n }\n if (value.length > 1) {\n cipher.login.uris = this.makeUriArray(value[1]);\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { CipherType } from '../enums/cipherType';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\n\nexport class RememBearCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.trash === 'true') {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name);\n cipher.notes = this.getValueOrDefault(value.notes);\n if (value.type === 'LoginItem') {\n cipher.login.uris = this.makeUriArray(value.website);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.username);\n } else if (value.type === 'CreditCardItem') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.cardholder);\n cipher.card.number = this.getValueOrDefault(value.number);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.verification);\n\n try {\n const expMonth = this.getValueOrDefault(value.expiryMonth);\n if (expMonth != null) {\n const expMonthNumber = parseInt(expMonth, null);\n if (expMonthNumber != null && expMonthNumber >= 1 && expMonthNumber <= 12) {\n cipher.card.expMonth = expMonthNumber.toString();\n }\n }\n } catch { }\n try {\n const expYear = this.getValueOrDefault(value.expiryYear);\n if (expYear != null) {\n const expYearNumber = parseInt(expYear, null);\n if (expYearNumber != null) {\n cipher.card.expYear = expYearNumber.toString();\n }\n }\n } catch { }\n\n const pin = this.getValueOrDefault(value.pin);\n if (pin != null) {\n this.processKvp(cipher, 'PIN', pin);\n }\n const zip = this.getValueOrDefault(value.zipCode);\n if (zip != null) {\n this.processKvp(cipher, 'Zip Code', zip);\n }\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class RoboFormCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let i = 1;\n results.forEach(value => {\n const folder = !this.isNullOrWhitespace(value.Folder) && value.Folder.startsWith('/') ?\n value.Folder.replace('/', '') : value.Folder;\n const folderName = !this.isNullOrWhitespace(folder) ? folder : null;\n this.processFolder(result, folderName);\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Note);\n cipher.name = this.getValueOrDefault(value.Name, '--');\n cipher.login.username = this.getValueOrDefault(value.Login);\n cipher.login.password = this.getValueOrDefault(value.Pwd);\n cipher.login.uris = this.makeUriArray(value.Url);\n\n if (!this.isNullOrWhitespace(value.Rf_fields)) {\n let fields: string[] = [value.Rf_fields];\n if (value.__parsed_extra != null && value.__parsed_extra.length > 0) {\n fields = fields.concat(value.__parsed_extra);\n }\n fields.forEach((field: string) => {\n const parts = field.split(':');\n if (parts.length < 3) {\n return;\n }\n const key = parts[0] === '-no-name-' ? null : parts[0];\n const val = parts.length === 4 && parts[2] === 'rck' ? parts[1] : parts[2];\n this.processKvp(cipher, key, val);\n });\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n\n if (i === results.length && cipher.name === '--' && this.isNullOrWhitespace(cipher.login.password)) {\n return;\n }\n\n result.ciphers.push(cipher);\n i++;\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { FolderView } from '../models/view/folderView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { FieldType } from '../enums';\nimport { CipherView, FieldView } from '../models/view';\n\nexport class SafeInCloudXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const db = doc.querySelector('database');\n if (db == null) {\n result.errorMessage = 'Missing `database` node.';\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n\n Array.from(doc.querySelectorAll('database > label')).forEach(labelEl => {\n const name = labelEl.getAttribute('name');\n const id = labelEl.getAttribute('id');\n if (!this.isNullOrWhitespace(name) && !this.isNullOrWhitespace(id)) {\n foldersMap.set(id, result.folders.length);\n const folder = new FolderView();\n folder.name = name;\n result.folders.push(folder);\n }\n });\n\n Array.from(doc.querySelectorAll('database > card')).forEach(cardEl => {\n if (cardEl.getAttribute('template') === 'true' || cardEl.getAttribute('deleted') === 'true') {\n return;\n }\n\n const labelIdEl = this.querySelectorDirectChild(cardEl, 'label_id');\n if (labelIdEl != null) {\n const labelId = labelIdEl.textContent;\n if (!this.isNullOrWhitespace(labelId) && foldersMap.has(labelId)) {\n result.folderRelationships.push([result.ciphers.length, foldersMap.get(labelId)]);\n }\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(cardEl.getAttribute('title'), '--');\n\n if (cardEl.getAttribute('star') === 'true') {\n cipher.favorite = true;\n }\n\n const cardType = cardEl.getAttribute('type');\n if (cardType === 'note') {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n } else {\n Array.from(this.querySelectorAllDirectChild(cardEl, 'field')).forEach(fieldEl => {\n const text = fieldEl.textContent;\n if (this.isNullOrWhitespace(text)) {\n return;\n }\n const name = fieldEl.getAttribute('name');\n const fieldType = this.getValueOrDefault(fieldEl.getAttribute('type'), '').toLowerCase();\n if (fieldType === 'login') {\n cipher.login.username = text;\n } else if (fieldType === 'password' || fieldType === 'secret') {\n // safeInCloud allows for more than one password. we just insert them here and find the one used as password later\n this.processKvp(cipher, name, text, FieldType.Hidden);\n } else if (fieldType === 'one_time_password') {\n cipher.login.totp = text;\n } else if (fieldType === 'notes') {\n cipher.notes += (text + '\\n');\n } else if (fieldType === 'weblogin' || fieldType === 'website') {\n cipher.login.uris = this.makeUriArray(text);\n }\n else {\n this.processKvp(cipher, name, text);\n }\n });\n }\n\n Array.from(this.querySelectorAllDirectChild(cardEl, 'notes')).forEach(notesEl => {\n cipher.notes += (notesEl.textContent + '\\n');\n });\n\n this.setPassword(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n // Choose a password from all passwords. Take one that has password in its name, or the first one if there is no such entry\n // if its name is password, we can safely remove it form the fields. otherwise, it would maybe be best to keep it as a hidden field\n setPassword(cipher: CipherView) {\n const candidates = cipher.fields.filter(field => field.type === FieldType.Hidden);\n if (!candidates.length) {\n return;\n }\n\n let choice: FieldView;\n for (const field of candidates) {\n if (this.passwordFieldNames.includes(field.name.toLowerCase())) {\n choice = field;\n cipher.fields = cipher.fields.filter(f => f !== choice);\n break;\n }\n }\n\n if (!choice) {\n choice = candidates[0];\n }\n\n cipher.login.password = choice.value;\n }\n}\n","export { CipherType } from './cipherType';\nexport { DeviceType } from './deviceType';\nexport { EncryptionType } from './encryptionType';\nexport { FieldType } from './fieldType';\nexport { LogLevelType } from './logLevelType';\nexport { SecureNoteType } from './secureNoteType';\nexport { TwoFactorProviderType } from './twoFactorProviderType';\nexport { UriMatchType } from './uriMatchType';\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class SaferPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.nameFromUrl(value.url), '--');\n cipher.notes = this.getValueOrDefault(value.notes);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class SecureSafeCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Title);\n cipher.notes = this.getValueOrDefault(value.Comment);\n cipher.login.uris = this.makeUriArray(value.Url);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.username = this.getValueOrDefault(value.Username);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\nimport { CipherView } from '../models/view/cipherView';\n\nexport class SplashIdCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 3) {\n return;\n }\n\n this.processFolder(result, this.getValueOrDefault(value[value.length - 1]));\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 2], '');\n cipher.name = this.getValueOrDefault(value[1], '--');\n\n if (value[0] === 'Web Logins' || value[0] === 'Servers' || value[0] === 'Email Accounts') {\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n this.parseFieldsToNotes(cipher, 5, value);\n } else {\n this.parseFieldsToNotes(cipher, 2, value);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseFieldsToNotes(cipher: CipherView, startIndex: number, value: any) {\n // last 3 rows do not get parsed\n for (let i = startIndex; i < value.length - 3; i++) {\n if (this.isNullOrWhitespace(value[i])) {\n continue;\n }\n cipher.notes += (value[i] + '\\n');\n }\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class StickyPasswordXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const loginNodes = doc.querySelectorAll('root > Database > Logins > Login');\n Array.from(loginNodes).forEach(loginNode => {\n const accountId = loginNode.getAttribute('ID');\n if (this.isNullOrWhitespace(accountId)) {\n return;\n }\n\n const usernameText = loginNode.getAttribute('Name');\n const passwordText = loginNode.getAttribute('Password');\n let titleText: string = null;\n let linkText: string = null;\n let notesText: string = null;\n let groupId: string = null;\n let groupText: string = null;\n\n const accountLogin = doc.querySelector('root > Database > Accounts > Account > ' +\n 'LoginLinks > Login[SourceLoginID=\"' + accountId + '\"]');\n if (accountLogin != null) {\n const account = accountLogin.parentElement.parentElement;\n if (account != null) {\n titleText = account.getAttribute('Name');\n linkText = account.getAttribute('Link');\n groupId = account.getAttribute('ParentID');\n notesText = account.getAttribute('Comments');\n if (!this.isNullOrWhitespace(notesText)) {\n notesText = notesText.split('/n').join('\\n');\n }\n }\n }\n\n if (!this.isNullOrWhitespace(groupId)) {\n groupText = this.buildGroupText(doc, groupId, '');\n this.processFolder(result, groupText);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(titleText, '--');\n cipher.notes = this.getValueOrDefault(notesText);\n cipher.login.username = this.getValueOrDefault(usernameText);\n cipher.login.password = this.getValueOrDefault(passwordText);\n cipher.login.uris = this.makeUriArray(linkText);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n buildGroupText(doc: Document, groupId: string, groupText: string): string {\n const group = doc.querySelector('root > Database > Groups > Group[ID=\"' + groupId + '\"]');\n if (group == null) {\n return groupText;\n }\n if (!this.isNullOrWhitespace(groupText)) {\n groupText = '/' + groupText;\n }\n groupText = group.getAttribute('Name') + groupText;\n return this.buildGroupText(doc, group.getAttribute('ParentID'), groupText);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nconst PropertiesToIgnore = ['kind', 'autologin', 'favorite', 'hexcolor', 'protectedwithpassword', 'subdomainonly',\n 'type', 'tk_export_version', 'note', 'title', 'document_content',\n];\n\nexport class TrueKeyCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.favorite, '').toLowerCase() === 'true';\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.notes = this.getValueOrDefault(value.memo, '');\n cipher.login.username = this.getValueOrDefault(value.login);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n\n if (value.kind !== 'login') {\n cipher.name = this.getValueOrDefault(value.title, '--');\n cipher.notes = this.getValueOrDefault(value.note, '');\n }\n\n if (value.kind === 'cc') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.cardholder);\n cipher.card.number = this.getValueOrDefault(value.number);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n if (!this.isNullOrWhitespace(value.expiryDate)) {\n try {\n const expDate = new Date(value.expiryDate);\n cipher.card.expYear = expDate.getFullYear().toString();\n cipher.card.expMonth = (expDate.getMonth() + 1).toString();\n } catch { }\n }\n } else if (value.kind !== 'login') {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n if (!this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = this.getValueOrDefault(value.document_content, '');\n }\n for (const property in value) {\n if (value.hasOwnProperty(property) && PropertiesToIgnore.indexOf(property.toLowerCase()) < 0 &&\n !this.isNullOrWhitespace(value[property])) {\n this.processKvp(cipher, property, value[property]);\n }\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class UpmCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length !== 5) {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n cipher.notes = this.getValueOrDefault(value[4]);\n cipher.login.username = this.getValueOrDefault(value[1]);\n cipher.login.password = this.getValueOrDefault(value[2]);\n cipher.login.uris = this.makeUriArray(value[3]);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class YotiCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Name, '--');\n cipher.login.username = this.getValueOrDefault(value['User name']);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\nimport { CipherView } from '../models/view';\n\nexport class ZohoVaultCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.isNullOrWhitespace(value['Password Name']) && this.isNullOrWhitespace(value['Secret Name'])) {\n return;\n }\n this.processFolder(result, this.getValueOrDefault(value.ChamberName));\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.Favorite, '0') === '1';\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.name = this.getValueOrDefault(\n value['Password Name'], this.getValueOrDefault(value['Secret Name'], '--'));\n cipher.login.uris = this.makeUriArray(\n this.getValueOrDefault(value['Password URL'], this.getValueOrDefault(value['Secret URL'])));\n this.parseData(cipher, value.SecretData);\n this.parseData(cipher, value.CustomData);\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseData(cipher: CipherView, data: string) {\n if (this.isNullOrWhitespace(data)) {\n return;\n }\n const dataLines = this.splitNewLine(data);\n dataLines.forEach(line => {\n const delimPosition = line.indexOf(':');\n if (delimPosition < 0) {\n return;\n }\n const field = line.substring(0, delimPosition);\n const value = line.length > delimPosition ? line.substring(delimPosition + 1) : null;\n if (this.isNullOrWhitespace(field) || this.isNullOrWhitespace(value) || field === 'SecretType') {\n return;\n }\n const fieldLower = field.toLowerCase();\n if (cipher.login.username == null && this.usernameFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.username = value;\n } else if (cipher.login.password == null && this.passwordFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.password = value;\n } else {\n this.processKvp(cipher, field, value);\n }\n });\n }\n}\n","import * as signalR from '@microsoft/signalr';\nimport * as signalRMsgPack from '@microsoft/signalr-protocol-msgpack';\n\nimport { NotificationType } from '../enums/notificationType';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { AppIdService } from '../abstractions/appId.service';\nimport { EnvironmentService } from '../abstractions/environment.service';\nimport { LogService } from '../abstractions/log.service';\nimport { NotificationsService as NotificationsServiceAbstraction } from '../abstractions/notifications.service';\nimport { SyncService } from '../abstractions/sync.service';\nimport { UserService } from '../abstractions/user.service';\nimport { VaultTimeoutService } from '../abstractions/vaultTimeout.service';\n\nimport {\n NotificationResponse,\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from '../models/response/notificationResponse';\n\nexport class NotificationsService implements NotificationsServiceAbstraction {\n private signalrConnection: signalR.HubConnection;\n private url: string;\n private connected = false;\n private inited = false;\n private inactive = false;\n private reconnectTimer: any = null;\n\n constructor(private userService: UserService, private syncService: SyncService,\n private appIdService: AppIdService, private apiService: ApiService,\n private vaultTimeoutService: VaultTimeoutService,\n private logoutCallback: () => Promise, private logService: LogService) {\n }\n\n async init(environmentService: EnvironmentService): Promise {\n this.inited = false;\n this.url = 'https://notifications.bitwarden.com';\n if (environmentService.notificationsUrl != null) {\n this.url = environmentService.notificationsUrl;\n } else if (environmentService.baseUrl != null) {\n this.url = environmentService.baseUrl + '/notifications';\n }\n\n // Set notifications server URL to `https://-` to effectively disable communication\n // with the notifications server from the client app\n if (this.url === 'https://-') {\n return;\n }\n\n if (this.signalrConnection != null) {\n this.signalrConnection.off('ReceiveMessage');\n this.signalrConnection.off('Heartbeat');\n await this.signalrConnection.stop();\n this.connected = false;\n this.signalrConnection = null;\n }\n\n this.signalrConnection = new signalR.HubConnectionBuilder()\n .withUrl(this.url + '/hub', {\n accessTokenFactory: () => this.apiService.getActiveBearerToken(),\n skipNegotiation: true,\n transport: signalR.HttpTransportType.WebSockets,\n })\n .withHubProtocol(new signalRMsgPack.MessagePackHubProtocol() as signalR.IHubProtocol)\n // .configureLogging(signalR.LogLevel.Trace)\n .build();\n\n this.signalrConnection.on('ReceiveMessage',\n (data: any) => this.processNotification(new NotificationResponse(data)));\n this.signalrConnection.on('Heartbeat',\n (data: any) => { /*console.log('Heartbeat!');*/ });\n this.signalrConnection.onclose(() => {\n this.connected = false;\n this.reconnect(true);\n });\n this.inited = true;\n if (await this.isAuthedAndUnlocked()) {\n await this.reconnect(false);\n }\n }\n\n async updateConnection(sync = false): Promise {\n if (!this.inited) {\n return;\n }\n try {\n if (await this.isAuthedAndUnlocked()) {\n await this.reconnect(sync);\n } else {\n await this.signalrConnection.stop();\n }\n } catch (e) {\n this.logService.error(e.toString());\n }\n }\n\n async reconnectFromActivity(): Promise {\n this.inactive = false;\n if (this.inited && !this.connected) {\n await this.reconnect(true);\n }\n }\n\n async disconnectFromInactivity(): Promise {\n this.inactive = true;\n if (this.inited && this.connected) {\n await this.signalrConnection.stop();\n }\n }\n\n private async processNotification(notification: NotificationResponse) {\n const appId = await this.appIdService.getAppId();\n if (notification == null || notification.contextId === appId) {\n return;\n }\n\n const isAuthenticated = await this.userService.isAuthenticated();\n const payloadUserId = notification.payload.userId || notification.payload.UserId;\n const myUserId = await this.userService.getUserId();\n if (isAuthenticated && payloadUserId != null && payloadUserId !== myUserId) {\n return;\n }\n\n switch (notification.type) {\n case NotificationType.SyncCipherCreate:\n case NotificationType.SyncCipherUpdate:\n await this.syncService.syncUpsertCipher(notification.payload as SyncCipherNotification,\n notification.type === NotificationType.SyncCipherUpdate);\n break;\n case NotificationType.SyncCipherDelete:\n case NotificationType.SyncLoginDelete:\n await this.syncService.syncDeleteCipher(notification.payload as SyncCipherNotification);\n break;\n case NotificationType.SyncFolderCreate:\n case NotificationType.SyncFolderUpdate:\n await this.syncService.syncUpsertFolder(notification.payload as SyncFolderNotification,\n notification.type === NotificationType.SyncFolderUpdate);\n break;\n case NotificationType.SyncFolderDelete:\n await this.syncService.syncDeleteFolder(notification.payload as SyncFolderNotification);\n break;\n case NotificationType.SyncVault:\n case NotificationType.SyncCiphers:\n case NotificationType.SyncSettings:\n if (isAuthenticated) {\n await this.syncService.fullSync(false);\n }\n break;\n case NotificationType.SyncOrgKeys:\n if (isAuthenticated) {\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n // Stop so a reconnect can be made\n await this.signalrConnection.stop();\n }\n break;\n case NotificationType.LogOut:\n if (isAuthenticated) {\n this.logoutCallback();\n }\n break;\n case NotificationType.SyncSendCreate:\n case NotificationType.SyncSendUpdate:\n await this.syncService.syncUpsertSend(notification.payload as SyncSendNotification,\n notification.type === NotificationType.SyncSendUpdate);\n break;\n case NotificationType.SyncSendDelete:\n await this.syncService.syncDeleteSend(notification.payload as SyncSendNotification);\n default:\n break;\n }\n }\n\n private async reconnect(sync: boolean) {\n if (this.reconnectTimer != null) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n if (this.connected || !this.inited || this.inactive) {\n return;\n }\n const authedAndUnlocked = await this.isAuthedAndUnlocked();\n if (!authedAndUnlocked) {\n return;\n }\n\n try {\n await this.signalrConnection.start();\n this.connected = true;\n if (sync) {\n await this.syncService.fullSync(false);\n }\n } catch { }\n\n if (!this.connected) {\n this.reconnectTimer = setTimeout(() => this.reconnect(sync), this.random(120000, 300000));\n }\n }\n\n private async isAuthedAndUnlocked() {\n if (await this.userService.isAuthenticated()) {\n const locked = await this.vaultTimeoutService.isLocked();\n return !locked;\n }\n return false;\n }\n\n private random(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { NotificationType } from '../../enums/notificationType';\n\nexport class NotificationResponse extends BaseResponse {\n contextId: string;\n type: NotificationType;\n payload: any;\n\n constructor(response: any) {\n super(response);\n this.contextId = this.getResponseProperty('ContextId');\n this.type = this.getResponseProperty('Type');\n\n const payload = this.getResponseProperty('Payload');\n switch (this.type) {\n case NotificationType.SyncCipherCreate:\n case NotificationType.SyncCipherDelete:\n case NotificationType.SyncCipherUpdate:\n case NotificationType.SyncLoginDelete:\n this.payload = new SyncCipherNotification(payload);\n break;\n case NotificationType.SyncFolderCreate:\n case NotificationType.SyncFolderDelete:\n case NotificationType.SyncFolderUpdate:\n this.payload = new SyncFolderNotification(payload);\n break;\n case NotificationType.SyncVault:\n case NotificationType.SyncCiphers:\n case NotificationType.SyncOrgKeys:\n case NotificationType.SyncSettings:\n case NotificationType.LogOut:\n this.payload = new UserNotification(payload);\n break;\n case NotificationType.SyncSendCreate:\n case NotificationType.SyncSendUpdate:\n case NotificationType.SyncSendDelete:\n this.payload = new SyncSendNotification(payload);\n default:\n break;\n }\n }\n}\n\nexport class SyncCipherNotification extends BaseResponse {\n id: string;\n userId: string;\n organizationId: string;\n collectionIds: string[];\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.collectionIds = this.getResponseProperty('CollectionIds');\n this.revisionDate = new Date(this.getResponseProperty('RevisionDate'));\n }\n}\n\nexport class SyncFolderNotification extends BaseResponse {\n id: string;\n userId: string;\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.revisionDate = new Date(this.getResponseProperty('RevisionDate'));\n }\n}\n\nexport class UserNotification extends BaseResponse {\n userId: string;\n date: Date;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty('UserId');\n this.date = new Date(this.getResponseProperty('Date'));\n }\n}\n\nexport class SyncSendNotification extends BaseResponse {\n id: string;\n userId: string;\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.revisionDate = new Date(this.getResponseProperty('RevisionDate'));\n }\n}\n","import { PlatformUtilsService } from '../abstractions';\n\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { PasswordRepromptService as PasswordRepromptServiceAbstraction } from '../abstractions/passwordReprompt.service';\n\nimport { HashPurpose } from '../enums/hashPurpose';\n\nexport class PasswordRepromptService implements PasswordRepromptServiceAbstraction {\n constructor(private i18nService: I18nService, private cryptoService: CryptoService,\n private platformUtilService: PlatformUtilsService) { }\n\n protectedFields() {\n return ['TOTP', 'Password', 'H_Field', 'Card Number', 'Security Code'];\n }\n\n async showPasswordPrompt() {\n const passwordValidator = (value: string) => {\n return this.cryptoService.compareAndUpdateKeyHash(value, null);\n };\n\n return this.platformUtilService.showPasswordDialog(this.i18nService.t('passwordConfirmation'), this.i18nService.t('passwordConfirmationDesc'), passwordValidator);\n }\n}\n","import { PolicyService as PolicyServiceAbstraction } from '../abstractions/policy.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { PolicyData } from '../models/data/policyData';\n\nimport { MasterPasswordPolicyOptions } from '../models/domain/masterPasswordPolicyOptions';\nimport { Policy } from '../models/domain/policy';\nimport { ResetPasswordPolicyOptions } from '../models/domain/resetPasswordPolicyOptions';\n\nimport { PolicyType } from '../enums/policyType';\n\nimport { ListResponse } from '../models/response/listResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\n\nconst Keys = {\n policiesPrefix: 'policies_',\n};\n\nexport class PolicyService implements PolicyServiceAbstraction {\n policyCache: Policy[];\n\n constructor(private userService: UserService, private storageService: StorageService) {\n }\n\n clearCache(): void {\n this.policyCache = null;\n }\n\n async getAll(type?: PolicyType): Promise {\n if (this.policyCache == null) {\n const userId = await this.userService.getUserId();\n const policies = await this.storageService.get<{ [id: string]: PolicyData; }>(\n Keys.policiesPrefix + userId);\n const response: Policy[] = [];\n for (const id in policies) {\n if (policies.hasOwnProperty(id)) {\n response.push(new Policy(policies[id]));\n }\n }\n this.policyCache = response;\n }\n if (type != null) {\n return this.policyCache.filter(p => p.type === type);\n } else {\n return this.policyCache;\n }\n }\n\n async replace(policies: { [id: string]: PolicyData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.policiesPrefix + userId, policies);\n this.policyCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.policiesPrefix + userId);\n this.policyCache = null;\n }\n\n async getMasterPasswordPolicyOptions(policies?: Policy[]): Promise {\n let enforcedOptions: MasterPasswordPolicyOptions = null;\n\n if (policies == null) {\n policies = await this.getAll(PolicyType.MasterPassword);\n } else {\n policies = policies.filter(p => p.type === PolicyType.MasterPassword);\n }\n\n if (policies == null || policies.length === 0) {\n return enforcedOptions;\n }\n\n policies.forEach(currentPolicy => {\n if (!currentPolicy.enabled || currentPolicy.data == null) {\n return;\n }\n\n if (enforcedOptions == null) {\n enforcedOptions = new MasterPasswordPolicyOptions();\n }\n\n if (currentPolicy.data.minComplexity != null\n && currentPolicy.data.minComplexity > enforcedOptions.minComplexity) {\n enforcedOptions.minComplexity = currentPolicy.data.minComplexity;\n }\n\n if (currentPolicy.data.minLength != null\n && currentPolicy.data.minLength > enforcedOptions.minLength) {\n enforcedOptions.minLength = currentPolicy.data.minLength;\n }\n\n if (currentPolicy.data.requireUpper) {\n enforcedOptions.requireUpper = true;\n }\n\n if (currentPolicy.data.requireLower) {\n enforcedOptions.requireLower = true;\n }\n\n if (currentPolicy.data.requireNumbers) {\n enforcedOptions.requireNumbers = true;\n }\n\n if (currentPolicy.data.requireSpecial) {\n enforcedOptions.requireSpecial = true;\n }\n });\n\n return enforcedOptions;\n }\n\n evaluateMasterPassword(passwordStrength: number, newPassword: string,\n enforcedPolicyOptions: MasterPasswordPolicyOptions): boolean {\n if (enforcedPolicyOptions == null) {\n return true;\n }\n\n if (enforcedPolicyOptions.minComplexity > 0 && enforcedPolicyOptions.minComplexity > passwordStrength) {\n return false;\n }\n\n if (enforcedPolicyOptions.minLength > 0 && enforcedPolicyOptions.minLength > newPassword.length) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireUpper && newPassword.toLocaleLowerCase() === newPassword) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireLower && newPassword.toLocaleUpperCase() === newPassword) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireNumbers && !(/[0-9]/.test(newPassword))) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireSpecial && !(/[!@#$%\\^&*]/g.test(newPassword))) {\n return false;\n }\n\n return true;\n }\n\n getResetPasswordPolicyOptions(policies: Policy[], orgId: string): [ResetPasswordPolicyOptions, boolean] {\n const resetPasswordPolicyOptions = new ResetPasswordPolicyOptions();\n\n if (policies == null || orgId == null) {\n return [resetPasswordPolicyOptions, false];\n }\n\n const policy = policies.find(p => p.organizationId === orgId && p.type === PolicyType.ResetPassword && p.enabled);\n resetPasswordPolicyOptions.autoEnrollEnabled = policy?.data?.autoEnrollEnabled ?? false;\n\n return [resetPasswordPolicyOptions, policy?.enabled ?? false];\n }\n\n mapPoliciesFromToken(policiesResponse: ListResponse): Policy[] {\n if (policiesResponse == null || policiesResponse.data == null) {\n return null;\n }\n\n const policiesData = policiesResponse.data.map(p => new PolicyData(p));\n return policiesData.map(p => new Policy(p));\n }\n}\n","import Domain from './domainBase';\n\nexport class MasterPasswordPolicyOptions extends Domain {\n minComplexity: number = 0;\n minLength: number = 0;\n requireUpper: boolean = false;\n requireLower: boolean = false;\n requireNumbers: boolean = false;\n requireSpecial: boolean = false;\n}\n","import Domain from './domainBase';\n\nexport class ResetPasswordPolicyOptions extends Domain {\n autoEnrollEnabled: boolean = false;\n}\n","import * as lunr from 'lunr';\n\nimport { CipherView } from '../models/view/cipherView';\n\nimport { CipherService } from '../abstractions/cipher.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { LogService } from '../abstractions/log.service';\nimport { SearchService as SearchServiceAbstraction } from '../abstractions/search.service';\n\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { UriMatchType } from '../enums/uriMatchType';\nimport { SendView } from '../models/view/sendView';\n\nexport class SearchService implements SearchServiceAbstraction {\n indexedEntityId?: string = null;\n private indexing = false;\n private index: lunr.Index = null;\n private searchableMinLength = 2;\n\n constructor(private cipherService: CipherService, private logService: LogService,\n private i18nService: I18nService) {\n if (['zh-CN', 'zh-TW'].indexOf(i18nService.locale) !== -1) {\n this.searchableMinLength = 1;\n }\n }\n\n clearIndex(): void {\n this.indexedEntityId = null;\n this.index = null;\n }\n\n isSearchable(query: string): boolean {\n const notSearchable = query == null || (this.index == null && query.length < this.searchableMinLength) ||\n (this.index != null && query.length < this.searchableMinLength && query.indexOf('>') !== 0);\n return !notSearchable;\n }\n\n async indexCiphers(indexedEntityId?: string, ciphers?: CipherView[]): Promise {\n if (this.indexing) {\n return;\n }\n\n this.logService.time('search indexing');\n this.indexing = true;\n this.indexedEntityId = indexedEntityId;\n this.index = null;\n const builder = new lunr.Builder();\n builder.ref('id');\n builder.field('shortid', { boost: 100, extractor: (c: CipherView) => c.id.substr(0, 8) });\n builder.field('name', { boost: 10 });\n builder.field('subtitle', {\n boost: 5,\n extractor: (c: CipherView) => {\n if (c.subTitle != null && c.type === CipherType.Card) {\n return c.subTitle.replace(/\\*/g, '');\n }\n return c.subTitle;\n },\n });\n builder.field('notes');\n builder.field('login.username', {\n extractor: (c: CipherView) => c.type === CipherType.Login && c.login != null ? c.login.username : null,\n });\n builder.field('login.uris', { boost: 2, extractor: (c: CipherView) => this.uriExtractor(c) });\n builder.field('fields', { extractor: (c: CipherView) => this.fieldExtractor(c, false) });\n builder.field('fields_joined', { extractor: (c: CipherView) => this.fieldExtractor(c, true) });\n builder.field('attachments', { extractor: (c: CipherView) => this.attachmentExtractor(c, false) });\n builder.field('attachments_joined',\n { extractor: (c: CipherView) => this.attachmentExtractor(c, true) });\n builder.field('organizationid', { extractor: (c: CipherView) => c.organizationId });\n ciphers = ciphers || await this.cipherService.getAllDecrypted();\n ciphers.forEach(c => builder.add(c));\n this.index = builder.build();\n\n this.indexing = false;\n\n this.logService.timeEnd('search indexing');\n }\n\n async searchCiphers(query: string,\n filter: (((cipher: CipherView) => boolean) | (((cipher: CipherView) => boolean)[])) = null,\n ciphers: CipherView[] = null):\n Promise {\n const results: CipherView[] = [];\n if (query != null) {\n query = query.trim().toLowerCase();\n }\n if (query === '') {\n query = null;\n }\n\n if (ciphers == null) {\n ciphers = await this.cipherService.getAllDecrypted();\n }\n\n if (filter != null && Array.isArray(filter) && filter.length > 0) {\n ciphers = ciphers.filter(c => filter.every(f => f == null || f(c)));\n } else if (filter != null) {\n ciphers = ciphers.filter(filter as (cipher: CipherView) => boolean);\n }\n\n if (!this.isSearchable(query)) {\n return ciphers;\n }\n\n if (this.indexing) {\n await new Promise(r => setTimeout(r, 250));\n if (this.indexing) {\n await new Promise(r => setTimeout(r, 500));\n }\n }\n\n const index = this.getIndexForSearch();\n if (index == null) {\n // Fall back to basic search if index is not available\n return this.searchCiphersBasic(ciphers, query);\n }\n\n const ciphersMap = new Map();\n ciphers.forEach(c => ciphersMap.set(c.id, c));\n\n let searchResults: lunr.Index.Result[] = null;\n const isQueryString = query != null && query.length > 1 && query.indexOf('>') === 0;\n if (isQueryString) {\n try {\n searchResults = index.search(query.substr(1).trim());\n } catch { }\n } else {\n // tslint:disable-next-line\n const soWild = lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING;\n searchResults = index.query(q => {\n lunr.tokenizer(query).forEach(token => {\n const t = token.toString();\n q.term(t, { fields: ['name'], wildcard: soWild });\n q.term(t, { fields: ['subtitle'], wildcard: soWild });\n q.term(t, { fields: ['login.uris'], wildcard: soWild });\n q.term(t, {});\n });\n });\n }\n\n if (searchResults != null) {\n searchResults.forEach(r => {\n if (ciphersMap.has(r.ref)) {\n results.push(ciphersMap.get(r.ref));\n }\n });\n }\n return results;\n }\n\n searchCiphersBasic(ciphers: CipherView[], query: string, deleted: boolean = false) {\n query = query.trim().toLowerCase();\n return ciphers.filter(c => {\n if (deleted !== c.isDeleted) {\n return false;\n }\n if (c.name != null && c.name.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (query.length >= 8 && c.id.startsWith(query)) {\n return true;\n }\n if (c.subTitle != null && c.subTitle.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (c.login && c.login.uri != null && c.login.uri.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n return false;\n });\n }\n\n searchSends(sends: SendView[], query: string) {\n query = query.trim().toLocaleLowerCase();\n\n return sends.filter(s => {\n if (s.name != null && s.name.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (query.length >= 8 && (s.id.startsWith(query) || s.accessId.toLocaleLowerCase().startsWith(query) || (s.file?.id != null && s.file.id.startsWith(query)))) {\n return true;\n }\n if (s.notes != null && s.notes.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (s.text?.text != null && s.text.text.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (s.file?.fileName != null && s.file.fileName.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n });\n }\n\n getIndexForSearch(): lunr.Index {\n return this.index;\n }\n\n private fieldExtractor(c: CipherView, joined: boolean) {\n if (!c.hasFields) {\n return null;\n }\n let fields: string[] = [];\n c.fields.forEach(f => {\n if (f.name != null) {\n fields.push(f.name);\n }\n if (f.type === FieldType.Text && f.value != null) {\n fields.push(f.value);\n }\n });\n fields = fields.filter(f => f.trim() !== '');\n if (fields.length === 0) {\n return null;\n }\n return joined ? fields.join(' ') : fields;\n }\n\n private attachmentExtractor(c: CipherView, joined: boolean) {\n if (!c.hasAttachments) {\n return null;\n }\n let attachments: string[] = [];\n c.attachments.forEach(a => {\n if (a != null && a.fileName != null) {\n if (joined && a.fileName.indexOf('.') > -1) {\n attachments.push(a.fileName.substr(0, a.fileName.lastIndexOf('.')));\n } else {\n attachments.push(a.fileName);\n }\n }\n });\n attachments = attachments.filter(f => f.trim() !== '');\n if (attachments.length === 0) {\n return null;\n }\n return joined ? attachments.join(' ') : attachments;\n }\n\n private uriExtractor(c: CipherView) {\n if (c.type !== CipherType.Login || c.login == null || !c.login.hasUris) {\n return null;\n }\n const uris: string[] = [];\n c.login.uris.forEach(u => {\n if (u.uri == null || u.uri === '') {\n return;\n }\n if (u.hostname != null) {\n uris.push(u.hostname);\n return;\n }\n let uri = u.uri;\n if (u.match !== UriMatchType.RegularExpression) {\n const protocolIndex = uri.indexOf('://');\n if (protocolIndex > -1) {\n uri = uri.substr(protocolIndex + 3);\n }\n const queryIndex = uri.search(/\\?|&|#/);\n if (queryIndex > -1) {\n uri = uri.substring(0, queryIndex);\n }\n }\n uris.push(uri);\n });\n return uris.length > 0 ? uris : null;\n }\n}\n","import { SendData } from '../models/data/sendData';\n\nimport { SendRequest } from '../models/request/sendRequest';\n\nimport { ErrorResponse } from '../models/response/errorResponse';\nimport { SendResponse } from '../models/response/sendResponse';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncString } from '../models/domain/encString';\nimport { Send } from '../models/domain/send';\nimport { SendFile } from '../models/domain/sendFile';\nimport { SendText } from '../models/domain/sendText';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { FileUploadType } from '../enums/fileUploadType';\nimport { SendType } from '../enums/sendType';\n\nimport { SendView } from '../models/view/sendView';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { FileUploadService } from '../abstractions/fileUpload.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { SendService as SendServiceAbstraction } from '../abstractions/send.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n sendsPrefix: 'sends_',\n};\n\nexport class SendService implements SendServiceAbstraction {\n decryptedSendCache: SendView[];\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private apiService: ApiService, private fileUploadService: FileUploadService,\n private storageService: StorageService, private i18nService: I18nService,\n private cryptoFunctionService: CryptoFunctionService) { }\n\n clearCache(): void {\n this.decryptedSendCache = null;\n }\n\n async encrypt(model: SendView, file: File | ArrayBuffer, password: string,\n key?: SymmetricCryptoKey): Promise<[Send, EncArrayBuffer]> {\n let fileData: EncArrayBuffer = null;\n const send = new Send();\n send.id = model.id;\n send.type = model.type;\n send.disabled = model.disabled;\n send.hideEmail = model.hideEmail;\n send.maxAccessCount = model.maxAccessCount;\n if (model.key == null) {\n model.key = await this.cryptoFunctionService.randomBytes(16);\n model.cryptoKey = await this.cryptoService.makeSendKey(model.key);\n }\n if (password != null) {\n const passwordHash = await this.cryptoFunctionService.pbkdf2(password, model.key, 'sha256', 100000);\n send.password = Utils.fromBufferToB64(passwordHash);\n }\n send.key = await this.cryptoService.encrypt(model.key, key);\n send.name = await this.cryptoService.encrypt(model.name, model.cryptoKey);\n send.notes = await this.cryptoService.encrypt(model.notes, model.cryptoKey);\n if (send.type === SendType.Text) {\n send.text = new SendText();\n send.text.text = await this.cryptoService.encrypt(model.text.text, model.cryptoKey);\n send.text.hidden = model.text.hidden;\n } else if (send.type === SendType.File) {\n send.file = new SendFile();\n if (file != null) {\n if (file instanceof ArrayBuffer) {\n const [name, data] = await this.encryptFileData(model.file.fileName, file, model.cryptoKey);\n send.file.fileName = name;\n fileData = data;\n } else {\n fileData = await this.parseFile(send, file, model.cryptoKey);\n }\n }\n }\n\n return [send, fileData];\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n if (sends == null || !sends.hasOwnProperty(id)) {\n return null;\n }\n\n return new Send(sends[id]);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n const response: Send[] = [];\n for (const id in sends) {\n if (sends.hasOwnProperty(id)) {\n response.push(new Send(sends[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n if (this.decryptedSendCache != null) {\n return this.decryptedSendCache;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const decSends: SendView[] = [];\n const promises: Promise[] = [];\n const sends = await this.getAll();\n sends.forEach(send => {\n promises.push(send.decrypt().then(f => decSends.push(f)));\n });\n\n await Promise.all(promises);\n decSends.sort(Utils.getSortFunction(this.i18nService, 'name'));\n\n this.decryptedSendCache = decSends;\n return this.decryptedSendCache;\n }\n\n async saveWithServer(sendData: [Send, EncArrayBuffer]): Promise {\n const request = new SendRequest(sendData[0], sendData[1]?.buffer.byteLength);\n let response: SendResponse;\n if (sendData[0].id == null) {\n if (sendData[0].type === SendType.Text) {\n response = await this.apiService.postSend(request);\n } else {\n try {\n const uploadDataResponse = await this.apiService.postFileTypeSend(request);\n response = uploadDataResponse.sendResponse;\n\n await this.fileUploadService.uploadSendFile(uploadDataResponse, sendData[0].file.fileName, sendData[1]);\n } catch (e) {\n if (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404) {\n response = await this.legacyServerSendFileUpload(sendData, request);\n } else if (e instanceof ErrorResponse) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n } else {\n throw e;\n }\n }\n }\n sendData[0].id = response.id;\n sendData[0].accessId = response.accessId;\n } else {\n response = await this.apiService.putSend(sendData[0].id, request);\n }\n\n const userId = await this.userService.getUserId();\n const data = new SendData(response, userId);\n await this.upsert(data);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async legacyServerSendFileUpload(sendData: [Send, EncArrayBuffer], request: SendRequest): Promise\n {\n const fd = new FormData();\n try {\n const blob = new Blob([sendData[1].buffer], { type: 'application/octet-stream' });\n fd.append('model', JSON.stringify(request));\n fd.append('data', blob, sendData[0].file.fileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('model', JSON.stringify(request));\n fd.append('data', Buffer.from(sendData[1].buffer) as any, {\n filepath: sendData[0].file.fileName.encryptedString,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n return await this.apiService.postSendFileLegacy(fd);\n }\n\n async upsert(send: SendData | SendData[]): Promise {\n const userId = await this.userService.getUserId();\n let sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n if (sends == null) {\n sends = {};\n }\n\n if (send instanceof SendData) {\n const s = send as SendData;\n sends[s.id] = s;\n } else {\n (send as SendData[]).forEach(s => {\n sends[s.id] = s;\n });\n }\n\n await this.storageService.save(Keys.sendsPrefix + userId, sends);\n this.decryptedSendCache = null;\n }\n\n async replace(sends: { [id: string]: SendData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.sendsPrefix + userId, sends);\n this.decryptedSendCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.sendsPrefix + userId);\n this.decryptedSendCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n if (sends == null) {\n return;\n }\n\n if (typeof id === 'string') {\n if (sends[id] == null) {\n return;\n }\n delete sends[id];\n } else {\n (id as string[]).forEach(i => {\n delete sends[i];\n });\n }\n\n await this.storageService.save(Keys.sendsPrefix + userId, sends);\n this.decryptedSendCache = null;\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteSend(id);\n await this.delete(id);\n }\n\n async removePasswordWithServer(id: string): Promise {\n const response = await this.apiService.putSendRemovePassword(id);\n const userId = await this.userService.getUserId();\n const data = new SendData(response, userId);\n await this.upsert(data);\n }\n\n private parseFile(send: Send, file: File, key: SymmetricCryptoKey): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(file);\n reader.onload = async evt => {\n try {\n const [name, data] = await this.encryptFileData(file.name, evt.target.result as ArrayBuffer, key);\n send.file.fileName = name;\n resolve(data);\n } catch (e) {\n reject(e);\n }\n };\n reader.onerror = evt => {\n reject('Error reading file.');\n };\n });\n }\n\n private async encryptFileData(fileName: string, data: ArrayBuffer,\n key: SymmetricCryptoKey): Promise<[EncString, EncArrayBuffer]> {\n const encFileName = await this.cryptoService.encrypt(fileName, key);\n const encFileData = await this.cryptoService.encryptToBytes(data, key);\n return [encFileName, encFileData];\n }\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendFileApi } from '../api/sendFileApi';\nimport { SendTextApi } from '../api/sendTextApi';\n\nimport { Send } from '../domain/send';\n\nexport class SendRequest {\n type: SendType;\n fileLength?: number;\n name: string;\n notes: string;\n key: string;\n maxAccessCount?: number;\n expirationDate: string;\n deletionDate: string;\n text: SendTextApi;\n file: SendFileApi;\n password: string;\n disabled: boolean;\n hideEmail: boolean;\n\n constructor(send: Send, fileLength?: number) {\n this.type = send.type;\n this.fileLength = fileLength;\n this.name = send.name ? send.name.encryptedString : null;\n this.notes = send.notes ? send.notes.encryptedString : null;\n this.maxAccessCount = send.maxAccessCount;\n this.expirationDate = send.expirationDate != null ? send.expirationDate.toISOString() : null;\n this.deletionDate = send.deletionDate != null ? send.deletionDate.toISOString() : null;\n this.key = send.key != null ? send.key.encryptedString : null;\n this.password = send.password;\n this.disabled = send.disabled;\n this.hideEmail = send.hideEmail;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendTextApi();\n this.text.text = send.text.text != null ? send.text.text.encryptedString : null;\n this.text.hidden = send.text.hidden;\n break;\n case SendType.File:\n this.file = new SendFileApi();\n this.file.fileName = send.file.fileName != null ? send.file.fileName.encryptedString : null;\n break;\n default:\n break;\n }\n }\n}\n","import { CryptoService } from '../../abstractions/crypto.service';\n\nimport { SendType } from '../../enums/sendType';\n\nimport { Utils } from '../../misc/utils';\n\nimport { SendData } from '../data/sendData';\n\nimport { SendView } from '../view/sendView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SendFile } from './sendFile';\nimport { SendText } from './sendText';\n\nexport class Send extends Domain {\n id: string;\n accessId: string;\n userId: string;\n type: SendType;\n name: EncString;\n notes: EncString;\n file: SendFile;\n text: SendText;\n key: EncString;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: Date;\n expirationDate: Date;\n deletionDate: Date;\n password: string;\n disabled: boolean;\n hideEmail: boolean;\n\n constructor(obj?: SendData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n accessId: null,\n userId: null,\n name: null,\n notes: null,\n key: null,\n }, alreadyEncrypted, ['id', 'accessId', 'userId']);\n\n this.type = obj.type;\n this.maxAccessCount = obj.maxAccessCount;\n this.accessCount = obj.accessCount;\n this.password = obj.password;\n this.disabled = obj.disabled;\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n this.deletionDate = obj.deletionDate != null ? new Date(obj.deletionDate) : null;\n this.expirationDate = obj.expirationDate != null ? new Date(obj.expirationDate) : null;\n this.hideEmail = obj.hideEmail;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendText(obj.text, alreadyEncrypted);\n break;\n case SendType.File:\n this.file = new SendFile(obj.file, alreadyEncrypted);\n break;\n default:\n break;\n }\n }\n\n async decrypt(): Promise {\n const model = new SendView(this);\n\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error('global bitwardenContainerService not initialized.');\n }\n\n try {\n model.key = await cryptoService.decryptToBytes(this.key, null);\n model.cryptoKey = await cryptoService.makeSendKey(model.key);\n } catch (e) {\n // TODO: error?\n }\n\n await this.decryptObj(model, {\n name: null,\n notes: null,\n }, null, model.cryptoKey);\n\n switch (this.type) {\n case SendType.File:\n model.file = await this.file.decrypt(model.cryptoKey);\n break;\n case SendType.Text:\n model.text = await this.text.decrypt(model.cryptoKey);\n break;\n default:\n break;\n }\n\n return model;\n }\n}\n","import * as forge from 'node-forge';\n\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\n\nimport { Utils } from '../misc/utils';\n\nimport { DecryptParameters } from '../models/domain/decryptParameters';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nexport class WebCryptoFunctionService implements CryptoFunctionService {\n private crypto: Crypto;\n private subtle: SubtleCrypto;\n private isIE: boolean;\n private isOldSafari: boolean;\n\n constructor(private win: Window, private platformUtilsService: PlatformUtilsService) {\n this.crypto = typeof win.crypto !== 'undefined' ? win.crypto : null;\n this.subtle = (!!this.crypto && typeof win.crypto.subtle !== 'undefined') ? win.crypto.subtle : null;\n this.isIE = platformUtilsService.isIE();\n const ua = win.navigator.userAgent;\n this.isOldSafari = platformUtilsService.isSafari() &&\n (ua.indexOf(' Version/10.') > -1 || ua.indexOf(' Version/9.') > -1);\n }\n\n async pbkdf2(password: string | ArrayBuffer, salt: string | ArrayBuffer, algorithm: 'sha256' | 'sha512',\n iterations: number): Promise {\n if (this.isIE || this.isOldSafari) {\n const forgeLen = algorithm === 'sha256' ? 32 : 64;\n const passwordBytes = this.toByteString(password);\n const saltBytes = this.toByteString(salt);\n const derivedKeyBytes = (forge as any).pbkdf2(passwordBytes, saltBytes, iterations, forgeLen, algorithm);\n return Utils.fromByteStringToArray(derivedKeyBytes).buffer;\n }\n\n const wcLen = algorithm === 'sha256' ? 256 : 512;\n const passwordBuf = this.toBuf(password);\n const saltBuf = this.toBuf(salt);\n\n const pbkdf2Params: Pbkdf2Params = {\n name: 'PBKDF2',\n salt: saltBuf,\n iterations: iterations,\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey('raw', passwordBuf, { name: 'PBKDF2' } as any,\n false, ['deriveBits']);\n return await this.subtle.deriveBits(pbkdf2Params, impKey, wcLen);\n }\n\n async hkdf(ikm: ArrayBuffer, salt: string | ArrayBuffer, info: string | ArrayBuffer,\n outputByteSize: number, algorithm: 'sha256' | 'sha512'): Promise {\n const saltBuf = this.toBuf(salt);\n const infoBuf = this.toBuf(info);\n\n const hkdfParams: HkdfParams = {\n name: 'HKDF',\n salt: saltBuf,\n info: infoBuf,\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey('raw', ikm, { name: 'HKDF' } as any,\n false, ['deriveBits']);\n return await this.subtle.deriveBits(hkdfParams as any, impKey, outputByteSize * 8);\n }\n\n // ref: https://tools.ietf.org/html/rfc5869\n async hkdfExpand(prk: ArrayBuffer, info: string | ArrayBuffer, outputByteSize: number,\n algorithm: 'sha256' | 'sha512'): Promise {\n const hashLen = algorithm === 'sha256' ? 32 : 64;\n if (outputByteSize > 255 * hashLen) {\n throw new Error('outputByteSize is too large.');\n }\n const prkArr = new Uint8Array(prk);\n if (prkArr.length < hashLen) {\n throw new Error('prk is too small.');\n }\n const infoBuf = this.toBuf(info);\n const infoArr = new Uint8Array(infoBuf);\n let runningOkmLength = 0;\n let previousT = new Uint8Array(0);\n const n = Math.ceil(outputByteSize / hashLen);\n const okm = new Uint8Array(n * hashLen);\n for (let i = 0; i < n; i++) {\n const t = new Uint8Array(previousT.length + infoArr.length + 1);\n t.set(previousT);\n t.set(infoArr, previousT.length);\n t.set([i + 1], t.length - 1);\n previousT = new Uint8Array(await this.hmac(t.buffer, prk, algorithm));\n okm.set(previousT, runningOkmLength);\n runningOkmLength += previousT.length;\n if (runningOkmLength >= outputByteSize) {\n break;\n }\n }\n return okm.slice(0, outputByteSize).buffer;\n }\n\n async hash(value: string | ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5'): Promise {\n if ((this.isIE && algorithm === 'sha1') || algorithm === 'md5') {\n const md = algorithm === 'md5' ? forge.md.md5.create() : forge.md.sha1.create();\n const valueBytes = this.toByteString(value);\n md.update(valueBytes, 'raw');\n return Utils.fromByteStringToArray(md.digest().data).buffer;\n }\n\n const valueBuf = this.toBuf(value);\n return await this.subtle.digest({ name: this.toWebCryptoAlgorithm(algorithm) }, valueBuf);\n }\n\n async hmac(value: ArrayBuffer, key: ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512'): Promise {\n if (this.isIE && algorithm === 'sha512') {\n const hmac = (forge as any).hmac.create();\n const keyBytes = this.toByteString(key);\n const valueBytes = this.toByteString(value);\n hmac.start(algorithm, keyBytes);\n hmac.update(valueBytes, 'raw');\n return Utils.fromByteStringToArray(hmac.digest().data).buffer;\n }\n\n const signingAlgorithm = {\n name: 'HMAC',\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey('raw', key, signingAlgorithm, false, ['sign']);\n return await this.subtle.sign(signingAlgorithm, impKey, value);\n }\n\n // Safely compare two values in a way that protects against timing attacks (Double HMAC Verification).\n // ref: https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/february/double-hmac-verification/\n // ref: https://paragonie.com/blog/2015/11/preventing-timing-attacks-on-string-comparison-with-double-hmac-strategy\n async compare(a: ArrayBuffer, b: ArrayBuffer): Promise {\n const macKey = await this.randomBytes(32);\n const signingAlgorithm = {\n name: 'HMAC',\n hash: { name: 'SHA-256' },\n };\n const impKey = await this.subtle.importKey('raw', macKey, signingAlgorithm, false, ['sign']);\n const mac1 = await this.subtle.sign(signingAlgorithm, impKey, a);\n const mac2 = await this.subtle.sign(signingAlgorithm, impKey, b);\n\n if (mac1.byteLength !== mac2.byteLength) {\n return false;\n }\n\n const arr1 = new Uint8Array(mac1);\n const arr2 = new Uint8Array(mac2);\n for (let i = 0; i < arr2.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n hmacFast(value: string, key: string, algorithm: 'sha1' | 'sha256' | 'sha512'): Promise {\n const hmac = (forge as any).hmac.create();\n hmac.start(algorithm, key);\n hmac.update(value);\n const bytes = hmac.digest().getBytes();\n return Promise.resolve(bytes);\n }\n\n async compareFast(a: string, b: string): Promise {\n const rand = await this.randomBytes(32);\n const bytes = new Uint32Array(rand);\n const buffer = forge.util.createBuffer();\n for (let i = 0; i < bytes.length; i++) {\n buffer.putInt32(bytes[i]);\n }\n const macKey = buffer.getBytes();\n\n const hmac = (forge as any).hmac.create();\n hmac.start('sha256', macKey);\n hmac.update(a);\n const mac1 = hmac.digest().getBytes();\n\n hmac.start(null, null);\n hmac.update(b);\n const mac2 = hmac.digest().getBytes();\n\n const equals = mac1 === mac2;\n return equals;\n }\n\n async aesEncrypt(data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer): Promise {\n const impKey = await this.subtle.importKey('raw', key, { name: 'AES-CBC' } as any, false, ['encrypt']);\n return await this.subtle.encrypt({ name: 'AES-CBC', iv: iv }, impKey, data);\n }\n\n aesDecryptFastParameters(data: string, iv: string, mac: string, key: SymmetricCryptoKey):\n DecryptParameters {\n const p = new DecryptParameters();\n if (key.meta != null) {\n p.encKey = key.meta.encKeyByteString;\n p.macKey = key.meta.macKeyByteString;\n }\n\n if (p.encKey == null) {\n p.encKey = forge.util.decode64(key.encKeyB64);\n }\n p.data = forge.util.decode64(data);\n p.iv = forge.util.decode64(iv);\n p.macData = p.iv + p.data;\n if (p.macKey == null && key.macKeyB64 != null) {\n p.macKey = forge.util.decode64(key.macKeyB64);\n }\n if (mac != null) {\n p.mac = forge.util.decode64(mac);\n }\n\n // cache byte string keys for later\n if (key.meta == null) {\n key.meta = {};\n }\n if (key.meta.encKeyByteString == null) {\n key.meta.encKeyByteString = p.encKey;\n }\n if (p.macKey != null && key.meta.macKeyByteString == null) {\n key.meta.macKeyByteString = p.macKey;\n }\n\n return p;\n }\n\n aesDecryptFast(parameters: DecryptParameters): Promise {\n const dataBuffer = (forge as any).util.createBuffer(parameters.data);\n const decipher = (forge as any).cipher.createDecipher('AES-CBC', parameters.encKey);\n decipher.start({ iv: parameters.iv });\n decipher.update(dataBuffer);\n decipher.finish();\n const val = decipher.output.toString('utf8');\n return Promise.resolve(val);\n }\n\n async aesDecrypt(data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer): Promise {\n const impKey = await this.subtle.importKey('raw', key, { name: 'AES-CBC' } as any, false, ['decrypt']);\n return await this.subtle.decrypt({ name: 'AES-CBC', iv: iv }, impKey, data);\n }\n\n async rsaEncrypt(data: ArrayBuffer, publicKey: ArrayBuffer, algorithm: 'sha1' | 'sha256'): Promise {\n // Note: Edge browser requires that we specify name and hash for both key import and decrypt.\n // We cannot use the proper types here.\n const rsaParams = {\n name: 'RSA-OAEP',\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n const impKey = await this.subtle.importKey('spki', publicKey, rsaParams, false, ['encrypt']);\n return await this.subtle.encrypt(rsaParams, impKey, data);\n }\n\n async rsaDecrypt(data: ArrayBuffer, privateKey: ArrayBuffer, algorithm: 'sha1' | 'sha256'): Promise {\n // Note: Edge browser requires that we specify name and hash for both key import and decrypt.\n // We cannot use the proper types here.\n const rsaParams = {\n name: 'RSA-OAEP',\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n const impKey = await this.subtle.importKey('pkcs8', privateKey, rsaParams, false, ['decrypt']);\n return await this.subtle.decrypt(rsaParams, impKey, data);\n }\n\n async rsaExtractPublicKey(privateKey: ArrayBuffer): Promise {\n const rsaParams = {\n name: 'RSA-OAEP',\n // Have to specify some algorithm\n hash: { name: this.toWebCryptoAlgorithm('sha1') },\n };\n const impPrivateKey = await this.subtle.importKey('pkcs8', privateKey, rsaParams, true, ['decrypt']);\n const jwkPrivateKey = await this.subtle.exportKey('jwk', impPrivateKey);\n const jwkPublicKeyParams = {\n kty: 'RSA',\n e: jwkPrivateKey.e,\n n: jwkPrivateKey.n,\n alg: 'RSA-OAEP',\n ext: true,\n };\n const impPublicKey = await this.subtle.importKey('jwk', jwkPublicKeyParams, rsaParams, true, ['encrypt']);\n return await this.subtle.exportKey('spki', impPublicKey);\n }\n\n async rsaGenerateKeyPair(length: 1024 | 2048 | 4096): Promise<[ArrayBuffer, ArrayBuffer]> {\n const rsaParams = {\n name: 'RSA-OAEP',\n modulusLength: length,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // 65537\n // Have to specify some algorithm\n hash: { name: this.toWebCryptoAlgorithm('sha1') },\n };\n const keyPair = (await this.subtle.generateKey(rsaParams, true, ['encrypt', 'decrypt'])) as CryptoKeyPair;\n const publicKey = await this.subtle.exportKey('spki', keyPair.publicKey);\n const privateKey = await this.subtle.exportKey('pkcs8', keyPair.privateKey);\n return [publicKey, privateKey];\n }\n\n randomBytes(length: number): Promise {\n const arr = new Uint8Array(length);\n this.crypto.getRandomValues(arr);\n return Promise.resolve(arr.buffer);\n }\n\n private toBuf(value: string | ArrayBuffer): ArrayBuffer {\n let buf: ArrayBuffer;\n if (typeof (value) === 'string') {\n buf = Utils.fromUtf8ToArray(value).buffer;\n } else {\n buf = value;\n }\n return buf;\n }\n\n private toByteString(value: string | ArrayBuffer): string {\n let bytes: string;\n if (typeof (value) === 'string') {\n bytes = forge.util.encodeUtf8(value);\n } else {\n bytes = Utils.fromBufferToByteString(value);\n }\n return bytes;\n }\n\n private toWebCryptoAlgorithm(algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5'): string {\n if (algorithm === 'md5') {\n throw new Error('MD5 is not supported in WebCrypto.');\n }\n return algorithm === 'sha1' ? 'SHA-1' : algorithm === 'sha256' ? 'SHA-256' : 'SHA-512';\n }\n}\n","export class DecryptParameters {\n encKey: T;\n data: T;\n iv: T;\n macKey: T;\n mac: T;\n macData: T;\n}\n","import { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncString } from '../models/domain/encString';\nimport { AttachmentUploadDataResponse } from '../models/response/attachmentUploadDataResponse';\nimport { SendFileUploadDataResponse } from '../models/response/sendFileUploadDataResponse';\n\nexport abstract class FileUploadService {\n uploadSendFile: (uploadData: SendFileUploadDataResponse, fileName: EncString,\n encryptedFileData: EncArrayBuffer) => Promise;\n uploadCipherAttachment: (admin: boolean, uploadData: AttachmentUploadDataResponse, fileName: EncString,\n encryptedFileData: EncArrayBuffer) => Promise;\n}\n","import * as jq from 'jquery';\nimport Swal from 'sweetalert2';\n\nimport {\n BodyOutputType,\n Toast,\n ToasterConfig,\n ToasterService,\n} from 'angular2-toaster';\n\nimport {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n SecurityContext,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport {\n NavigationEnd,\n Router,\n} from '@angular/router';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\n\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { NotificationsService } from 'jslib-common/abstractions/notifications.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { SettingsService } from 'jslib-common/abstractions/settings.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { RouterService } from './services/router.service';\n\nconst BroadcasterSubscriptionId = 'AppComponent';\nconst IdleTimeout = 60000 * 10; // 10 minutes\n\n@Component({\n selector: 'app-root',\n templateUrl: 'app.component.html',\n})\nexport class AppComponent implements OnDestroy, OnInit {\n toasterConfig: ToasterConfig = new ToasterConfig({\n showCloseButton: true,\n mouseoverTimerStop: true,\n animation: 'flyRight',\n limit: 5,\n });\n\n private lastActivity: number = null;\n private idleTimer: number = null;\n private isIdle = false;\n\n constructor(\n private broadcasterService: BroadcasterService, private userService: UserService,\n private tokenService: TokenService, private folderService: FolderService,\n private settingsService: SettingsService, private syncService: SyncService,\n private passwordGenerationService: PasswordGenerationService, private cipherService: CipherService,\n private authService: AuthService, private router: Router,\n private toasterService: ToasterService, private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService, private ngZone: NgZone,\n private vaultTimeoutService: VaultTimeoutService, private storageService: StorageService,\n private cryptoService: CryptoService, private collectionService: CollectionService,\n private sanitizer: DomSanitizer, private searchService: SearchService,\n private notificationsService: NotificationsService, private routerService: RouterService,\n private stateService: StateService, private eventService: EventService,\n private policyService: PolicyService) { }\n\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n window.onmousemove = () => this.recordActivity();\n window.onmousedown = () => this.recordActivity();\n window.ontouchstart = () => this.recordActivity();\n window.onclick = () => this.recordActivity();\n window.onscroll = () => this.recordActivity();\n window.onkeypress = () => this.recordActivity();\n });\n\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'loggedIn':\n case 'loggedOut':\n case 'unlocked':\n this.notificationsService.updateConnection(false);\n break;\n case 'authBlocked':\n this.router.navigate(['/']);\n break;\n case 'logout':\n this.logOut(!!message.expired);\n break;\n case 'lockVault':\n await this.vaultTimeoutService.lock();\n break;\n case 'locked':\n this.notificationsService.updateConnection(false);\n this.router.navigate(['lock']);\n break;\n case 'lockedUrl':\n window.setTimeout(() => this.routerService.setPreviousUrl(message.url), 500);\n break;\n case 'syncStarted':\n break;\n case 'syncCompleted':\n break;\n case 'upgradeOrganization':\n const upgradeConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('upgradeOrganizationDesc'), this.i18nService.t('upgradeOrganization'),\n this.i18nService.t('upgradeOrganization'), this.i18nService.t('cancel'));\n if (upgradeConfirmed) {\n this.router.navigate(['organizations', message.organizationId, 'settings', 'billing']);\n }\n break;\n case 'premiumRequired':\n const premiumConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('premiumRequiredDesc'), this.i18nService.t('premiumRequired'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'));\n if (premiumConfirmed) {\n this.router.navigate(['settings/premium']);\n }\n break;\n case 'emailVerificationRequired':\n const emailVerificationConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('emailVerificationRequiredDesc'),\n this.i18nService.t('emailVerificationRequired'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'));\n if (emailVerificationConfirmed) {\n this.platformUtilsService.launchUri('https://bitwarden.com/help/article/create-bitwarden-account/');\n }\n break;\n case 'showToast':\n if (typeof message.text === \"string\" && typeof crypto.subtle === 'undefined') {\n message.title=\"This browser requires HTTPS to use the web vault\";\n message.text=\"Check the Vaultwarden wiki for details on how to enable it\";\n }\n this.showToast(message);\n break;\n case 'setFullWidth':\n this.setFullWidth();\n break;\n default:\n break;\n }\n });\n });\n\n this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n const modals = Array.from(document.querySelectorAll('.modal'));\n for (const modal of modals) {\n (jq(modal) as any).modal('hide');\n }\n\n if (document.querySelector('.swal-modal') != null) {\n Swal.close(undefined);\n }\n }\n });\n\n this.setFullWidth();\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n private async logOut(expired: boolean) {\n await this.eventService.uploadEvents();\n const userId = await this.userService.getUserId();\n\n await Promise.all([\n this.eventService.clearEvents(),\n this.syncService.setLastSync(new Date(0)),\n this.tokenService.clearToken(),\n this.cryptoService.clearKeys(),\n this.userService.clear(),\n this.settingsService.clear(userId),\n this.cipherService.clear(userId),\n this.folderService.clear(userId),\n this.collectionService.clear(userId),\n this.policyService.clear(userId),\n this.passwordGenerationService.clear(),\n this.stateService.purge(),\n ]);\n\n this.searchService.clearIndex();\n this.authService.logOut(async () => {\n if (expired) {\n this.toasterService.popAsync('warning', this.i18nService.t('loggedOut'),\n this.i18nService.t('loginExpired'));\n }\n\n Swal.close();\n this.router.navigate(['/']);\n });\n }\n\n private async recordActivity() {\n const now = (new Date()).getTime();\n if (this.lastActivity != null && now - this.lastActivity < 250) {\n return;\n }\n\n this.lastActivity = now;\n this.storageService.save(ConstantsService.lastActiveKey, now);\n\n // Idle states\n if (this.isIdle) {\n this.isIdle = false;\n this.idleStateChanged();\n }\n if (this.idleTimer != null) {\n window.clearTimeout(this.idleTimer);\n this.idleTimer = null;\n }\n this.idleTimer = window.setTimeout(() => {\n if (!this.isIdle) {\n this.isIdle = true;\n this.idleStateChanged();\n }\n }, IdleTimeout);\n }\n\n private showToast(msg: any) {\n const toast: Toast = {\n type: msg.type,\n title: msg.title,\n };\n if (typeof (msg.text) === 'string') {\n toast.body = msg.text;\n } else if (msg.text.length === 1) {\n toast.body = msg.text[0];\n } else {\n let message = '';\n msg.text.forEach((t: string) =>\n message += ('

' + this.sanitizer.sanitize(SecurityContext.HTML, t) + '

'));\n toast.body = message;\n toast.bodyOutputType = BodyOutputType.TrustedHtml;\n }\n if (msg.options != null) {\n if (msg.options.trustedHtml === true) {\n toast.bodyOutputType = BodyOutputType.TrustedHtml;\n }\n if (msg.options.timeout != null && msg.options.timeout > 0) {\n toast.timeout = msg.options.timeout;\n }\n }\n this.toasterService.popAsync(toast);\n }\n\n private idleStateChanged() {\n if (this.isIdle) {\n this.notificationsService.disconnectFromInactivity();\n } else {\n this.notificationsService.reconnectFromActivity();\n }\n }\n\n private async setFullWidth() {\n const enableFullWidth = await this.storageService.get('enableFullWidth');\n if (enableFullWidth) {\n document.body.classList.add('full-width');\n } else {\n document.body.classList.remove('full-width');\n }\n }\n}\n"," ","import {\n Directive,\n ElementRef,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appBlurClick]',\n})\nexport class BlurClickDirective {\n constructor(private el: ElementRef) {\n }\n\n @HostListener('click') onClick() {\n this.el.nativeElement.blur();\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n OnInit,\n} from '@angular/core';\n\n@Directive({\n selector: '[appBoxRow]',\n})\nexport class BoxRowDirective implements OnInit {\n el: HTMLElement = null;\n formEls: Element[];\n\n constructor(private elRef: ElementRef) {\n this.el = elRef.nativeElement;\n }\n\n ngOnInit(): void {\n this.formEls = Array.from(this.el.querySelectorAll('input:not([type=\"hidden\"]), select, textarea'));\n this.formEls.forEach(formEl => {\n formEl.addEventListener('focus', (event: Event) => {\n this.el.classList.add('active');\n }, false);\n\n formEl.addEventListener('blur', (event: Event) => {\n this.el.classList.remove('active');\n }, false);\n });\n }\n\n @HostListener('click', ['$event']) onClick(event: Event) {\n const target = event.target as HTMLElement;\n if (target !== this.el && !target.classList.contains('progress') &&\n !target.classList.contains('progress-bar')) {\n return;\n }\n\n if (this.formEls.length > 0) {\n const formEl = (this.formEls[0] as HTMLElement);\n if (formEl.tagName.toLowerCase() === 'input') {\n const inputEl = (formEl as HTMLInputElement);\n if (inputEl.type != null && inputEl.type.toLowerCase() === 'checkbox') {\n inputEl.click();\n return;\n }\n }\n formEl.focus();\n }\n }\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Pipe({\n name: 'searchCiphers',\n})\nexport class SearchCiphersPipe implements PipeTransform {\n transform(ciphers: CipherView[], searchText: string, deleted: boolean = false): CipherView[] {\n if (ciphers == null || ciphers.length === 0) {\n return [];\n }\n\n if (searchText == null || searchText.length < 2) {\n return ciphers.filter(c => {\n return deleted !== c.isDeleted;\n });\n }\n\n searchText = searchText.trim().toLowerCase();\n return ciphers.filter(c => {\n if (deleted !== c.isDeleted) {\n return false;\n }\n if (c.name != null && c.name.toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (searchText.length >= 8 && c.id.startsWith(searchText)) {\n return true;\n }\n if (c.subTitle != null && c.subTitle.toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (c.login && c.login.uri != null && c.login.uri.toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n\n return false;\n });\n }\n}\n"],"sourceRoot":""}