diff --git a/extension/changelog.txt b/extension/changelog.txt index ec81c4289d6..c30014c94e1 100644 --- a/extension/changelog.txt +++ b/extension/changelog.txt @@ -84,7 +84,7 @@ version 8.1.3 on July 31, 2021: Enterprise EIS -version 8.1.1 on June 29, 2021: EKM setup with pass phrase +version 8.1.1 on June 29, 2021: EKM setup with passphrase version 8.1.0 on June 9, 2021: Fix settings layout @@ -114,7 +114,7 @@ version 7.9.8 on Oct 29, 2020: Custom SKS fix -version 7.9.6 on Oct 19, 2020: Preview attachments pass phrase +version 7.9.6 on Oct 19, 2020: Preview attachments passphrase version 7.9.5 on Oct 19, 2020: Wkd Advanced Lookup, UTF files @@ -186,7 +186,7 @@ version 7.5.9 on Feb 1, 2020: Fix pwd msg online reply -version 7.5.5 on Jan 9, 2020: Default don't remember pass phrase +version 7.5.5 on Jan 9, 2020: Default don't remember passphrase version 7.5.4 on Dec 27, 2019: Support ISO-2022-JP @@ -236,7 +236,7 @@ version 7.0.7 on Nov 5, 2019: Contact search bugfix -version 7.0.5 on Oct 18, 2019: Write pass phrase down +version 7.0.5 on Oct 18, 2019: Write passphrase down version 7.0.4 on Oct 10, 2019: Fix sendAs migration @@ -310,7 +310,7 @@ version 6.7.0 on March 23, 2019: Minimize compose window -version 6.6.8 on March 7, 2019: Fix decrypt files with session pass phrase +version 6.6.8 on March 7, 2019: Fix decrypt files with session passphrase version 6.6.7 on March 2, 2019: Bugfixes @@ -346,7 +346,7 @@ version 6.5.2 on January 6, 2019: Unicode fix -version 6.5.0 on January 4, 2019: Fix pass phrase change dialog +version 6.5.0 on January 4, 2019: Fix passphrase change dialog version 6.4.9 on January 2, 2019: Error handling @@ -462,7 +462,7 @@ version 5.9.0 on August 7, 2018: Attestation fix -version 5.8.8 on August 6, 2018: Pass phrase prompt +version 5.8.8 on August 6, 2018: Passphrase prompt version 5.8.7 on August 5, 2018: Key decrypted error @@ -596,7 +596,7 @@ internal: allow extension to work when block 3rd party cookies enabled internal: library upgrades, bugfixes and other maintenance version 5.2.7 on February 19, 2018: Session -reading: fixed decrypting when pass phrase is in session +reading: fixed decrypting when passphrase is in session version 5.2.6 on February 19, 2018: Unicode reading: fixed Russian and Chinese UTF from facebook @@ -622,7 +622,7 @@ tests: improve automated tests version 5.2.0 on February 11, 2018: Security security: double check passphrase strength when trying to back up imported key security -settings: rename to "test my pass phrase" +settings: rename to "test my passphrase" reading: support eM client compatibility version 5.1.9 on January 31, 2018: Public key management @@ -745,7 +745,7 @@ internal: fix key array migration missing key internal: update openpgp.js version 4.3.5 on July 21, 2017: Migration fix -internal: getting pass phrase during migrations fixed +internal: getting passphrase during migrations fixed version 4.3.4 on July 20, 2017: Attest fix setup: fixing attest element @@ -799,7 +799,7 @@ internal: better reporting of unhandled promise errors internal: prepare comose.js for desktop internal: libsync from desktop internal: consolidate new_message and reply_message into one template refactor -settings: Repeat password -> Repeat pass phrase placeholder backup +settings: Repeat password -> Repeat passphrase placeholder backup reading: fix formatting of password messages version 4.2.1 on June 25, 2017: Bugfixes @@ -846,7 +846,7 @@ composing: drag and drop attachments reading: recognize public keys sent as inner attachment of pgp message reading: recognize pubkeys inside encrypted messages reading: Compatibility issues with encrypted.asc -reading: enter pass phrase misbehaved with "show original message" +reading: enter passphrase misbehaved with "show original message" reading: "Forget passphrase when I close chrome" in firefox fixed setup: fix wording after setup done @@ -970,7 +970,7 @@ internal: document.body.append is not a function bug version 3.9.0 on March 30, 2017: Experimental Client settings: alternative email client reading: improve MIME support -setup: mention in backup email that it's protected by pass phrase +setup: mention in backup email that it's protected by passphrase version 3.8.9 on March 28, 2017: Fix xss security: fix xss issue outside of pgp blocks @@ -1151,7 +1151,7 @@ design: changed size of profile image on setup version 3.4.1 on February 19, 2017: User Friendly reading: badly displayed verification message result -reading: correct pass phrase will get rejected when opening email +reading: correct passphrase will get rejected when opening email reading: FlowCrypt failing to render decrypted messages reading: google auth keeps reappearing on spotty internet reading: switch-to-encrypted and show-original buttons improved @@ -1379,7 +1379,7 @@ reading: fixed issue with very large messages + more efficient reading: better message decrypting behavior on update or uninstall setup: checking public key fingerprints on keyserver setup: fixed bug in internal plugin messaging during setup -setup: evaluating pass phrase strength error fix +setup: evaluating passphrase strength error fix version 2.8.4 on December 29, 2016: Improved Message Detection reading: more robust and faster pgp block replacing @@ -1403,7 +1403,7 @@ setup: Public Key Server page blank screen fix setup: updated chrome content settings instructions setup: uninstall stats setup: uncaught exceptions handling -reading: fixed broken pass phrase dialog +reading: fixed broken passphrase dialog reading: improved compatibility with PGP/MIME composing: stopped repeated 404 errors when missing a draft @@ -1428,8 +1428,8 @@ setup: increased minimal passphrase strength setup: fixed broken pubkey submitting on keyservers page setup: fixed broken checkboxes on manual setup page -version 2.5.6 on December 14, 2016: Pass phrase change -setup: create a new backup on pass phrase change +version 2.5.6 on December 14, 2016: Passphrase change +setup: create a new backup on passphrase change setup: smoother plugin update: prompt to refresh gmail composing: opened compose window won't close - bugfix @@ -1479,7 +1479,7 @@ composing: first time users send button freeze fix version 2.4.0 on November 22, 2016: human feedback setup: guide user to send their first email -setup: explain what is pass phrase for +setup: explain what is passphrase for setup: suggest to refresh gmail window after installation setup: explain what is backup email for setup: centering loading symbol @@ -1570,13 +1570,13 @@ setup: don't rely on English language version 1.8.0 on April 17, 2016: Drafts composing: encrypted drafts functionality -setup: remember pass phrase and submit pubkey by default for new keys +setup: remember passphrase and submit pubkey by default for new keys version 1.7.0 on April 14, 2016: Contacts composing: search google contacts in new messge and reply box composing: add all recipients on group reply composing: change any recipient on reply -setup: changing pass phrase +setup: changing passphrase version 1.6.0 on April 11, 2016: Public key management setup: see and manage list of pubkeys @@ -1587,14 +1587,14 @@ composing: contacts search is case insensitive reading: load pgp pubkey blocs into pubkey cache version 1.5.0 on April 9, 2016: Private key best practices and backups -reading: better pass phrase dialog +reading: better passphrase dialog security: more and clearer setup and backup options -security: pass phrase strength bar + examples +security: passphrase strength bar + examples security: better always encrypting private key replying: triple recipient bugfix design: new logo -version 1.4.0 on Mar 27, 2016: Session based private key pass phrase +version 1.4.0 on Mar 27, 2016: Session based private key passphrase security: manual setup has option to forget passphrase security: session passphrase entering dialog reading: attachment file icons diff --git a/extension/chrome/elements/backup.htm b/extension/chrome/elements/backup.htm index 0851bc0fecb..afe1ae92349 100644 --- a/extension/chrome/elements/backup.htm +++ b/extension/chrome/elements/backup.htm @@ -13,10 +13,10 @@
- This backup is protected by your pass phrase. Please make sure to note your pass phrase down or you may lose access to your encrypted emails! + This backup is protected by your passphrase. Please make sure to note your passphrase down or you may lose access to your encrypted emails!
- +
Key Fingerprint:
diff --git a/extension/chrome/elements/backup.ts b/extension/chrome/elements/backup.ts index 34093c9f387..fe3675e49ef 100644 --- a/extension/chrome/elements/backup.ts +++ b/extension/chrome/elements/backup.ts @@ -83,10 +83,10 @@ View.run( private testPassphraseHandler = async () => { if (await KeyUtil.checkPassPhrase(this.armoredPrvBackup, String($('#pass_phrase').val()))) { - await Ui.modal.info('Success - your pass phrase matches this backup!'); + await Ui.modal.info('Success - your passphrase matches this backup!'); } else { await Ui.modal.warning( - "Pass phrase did not match. Please try again. If you forgot your pass phrase, please change it, so that you don't get" + + "Passphrase did not match. Please try again. If you forgot your passphrase, please change it, so that you don't get" + ' locked out of your encrypted messages.' ); } diff --git a/extension/chrome/elements/compose-modules/compose-draft-module.ts b/extension/chrome/elements/compose-modules/compose-draft-module.ts index bc2ba73e173..51ee98669fc 100644 --- a/extension/chrome/elements/compose-modules/compose-draft-module.ts +++ b/extension/chrome/elements/compose-modules/compose-draft-module.ts @@ -376,9 +376,9 @@ export class ComposeDraftModule extends ViewModule { Xss.sanitizeRender( this.view.S.cached('prompt'), ` -
Waiting for pass phrase to open draft...
+
Waiting for passphrase to open draft...
- +
` diff --git a/extension/chrome/elements/compose-modules/compose-err-module.ts b/extension/chrome/elements/compose-modules/compose-err-module.ts index 146760a3a4e..2f7dfab8d1a 100644 --- a/extension/chrome/elements/compose-modules/compose-err-module.ts +++ b/extension/chrome/elements/compose-modules/compose-err-module.ts @@ -174,7 +174,7 @@ export class ComposeErrModule extends ViewModule { if (pwd) { if (await this.view.storageModule.isPwdMatchingPassphrase(pwd)) { throw new ComposerUserError( - 'Please do not use your private key pass phrase as a password for this message.\n\n' + + 'Please do not use your private key passphrase as a password for this message.\n\n' + 'You should come up with some other unique password that you can share with recipient.' ); } diff --git a/extension/chrome/elements/compose-modules/compose-storage-module.ts b/extension/chrome/elements/compose-modules/compose-storage-module.ts index c4a76c6173f..07f7c34f2e7 100644 --- a/extension/chrome/elements/compose-modules/compose-storage-module.ts +++ b/extension/chrome/elements/compose-modules/compose-storage-module.ts @@ -80,8 +80,8 @@ export class ComposeStorageModule extends ViewModule { }; /** - * returns decrypted key (potentially using user-entered pass phrase) - * otherwise throws ComposerResetBtnTrigger when pass phrase not entered + * returns decrypted key (potentially using user-entered passphrase) + * otherwise throws ComposerResetBtnTrigger when passphrase not entered */ public decryptSenderKey = async (parsedKey: ParsedKeyInfo): Promise => { const passphrase = await this.passphraseGet(parsedKey.keyInfo); @@ -92,7 +92,7 @@ export class ComposeStorageModule extends ViewModule { return await this.decryptSenderKey(parsedKey); } else { // reset - no passphrase entered - throw new ComposerResetBtnTrigger('no pass phrase entered'); + throw new ComposerResetBtnTrigger('no passphrase entered'); } } else { if (!parsedKey.key.fullyDecrypted) { diff --git a/extension/chrome/elements/compose-modules/formatters/general-mail-formatter.ts b/extension/chrome/elements/compose-modules/formatters/general-mail-formatter.ts index b3c3091cc59..a6271402b40 100644 --- a/extension/chrome/elements/compose-modules/formatters/general-mail-formatter.ts +++ b/extension/chrome/elements/compose-modules/formatters/general-mail-formatter.ts @@ -85,7 +85,7 @@ export class GeneralMailFormatter { if (!parsedSenderPrv) { return undefined; } - // throws ComposerResetBtnTrigger when user closes pass phrase dialog without entering + // throws ComposerResetBtnTrigger when user closes passphrase dialog without entering return await view.storageModule.decryptSenderKey(parsedSenderPrv); } diff --git a/extension/chrome/elements/passphrase.htm b/extension/chrome/elements/passphrase.htm index 95b31cdfa00..17509c49bc8 100644 --- a/extension/chrome/elements/passphrase.htm +++ b/extension/chrome/elements/passphrase.htm @@ -38,9 +38,9 @@

Lost pass phrase?
+ >
Lost passphrase?
- Ask your IT staff for help if you lost your pass phrase. + Ask your IT staff for help if you lost your passphrase.
diff --git a/extension/chrome/elements/passphrase.ts b/extension/chrome/elements/passphrase.ts index 9b909361567..f30ef7a8ab5 100644 --- a/extension/chrome/elements/passphrase.ts +++ b/extension/chrome/elements/passphrase.ts @@ -105,7 +105,7 @@ View.run( if (this.keysWeNeedPassPhraseFor.length === 1) { html = `For key Fingerprint: ${Xss.escape(Str.spaced(this.keysWeNeedPassPhraseFor[0].fingerprints[0] || ''))}`; } else { - html = 'Pass phrase needed for any of the following keys:'; + html = 'Passphrase needed for any of the following keys:'; for (const i of this.keysWeNeedPassPhraseFor.keys()) { html += `
Fingerprint ${String(i + 1)}: ${Xss.escape( Str.spaced(this.keysWeNeedPassPhraseFor[i].fingerprints[0]) || '' @@ -146,12 +146,12 @@ View.run( Change Pass Phrase.
It will let you change it without knowing the previous one. When done, reset FlowCrypt on this device - and use the new pass phrase during the recovery step when + and use the new passphrase during the recovery step when you set up FlowCrypt on this device again.

If no: unfortunately, you will not be able to read previously encrypted emails regardless of what you do. You can reset FlowCrypt on this device - and then click Lost your pass phrase? during recovery step. + and then click Lost your passphrase? during recovery step.

`, true @@ -227,7 +227,7 @@ View.run( let unlockCount = 0; // may include non-matching keys const allPrivateKeys = await KeyStore.get(this.acctEmail); for (const keyinfo of allPrivateKeys) { - // if passphrase matches more keys, it will save the pass phrase for all keys + // if passphrase matches more keys, it will save the passphrase for all keys const prv = await KeyUtil.parse(keyinfo.private); try { if (await KeyUtil.decrypt(prv, pass)) { @@ -252,7 +252,7 @@ View.run( } } if (unlockCount && allPrivateKeys.length > 1) { - Ui.toast(`${unlockCount} of ${allPrivateKeys.length} keys ${unlockCount > 1 ? 'were' : 'was'} unlocked by this pass phrase`); + Ui.toast(`${unlockCount} of ${allPrivateKeys.length} keys ${unlockCount > 1 ? 'were' : 'was'} unlocked by this passphrase`); await this.closeDialogPageOpenedExternally(); } if (atLeastOneMatched) { diff --git a/extension/chrome/elements/pgp_block_modules/pgp-block-render-module.ts b/extension/chrome/elements/pgp_block_modules/pgp-block-render-module.ts index b559ee528b5..f9d2c8584c4 100644 --- a/extension/chrome/elements/pgp_block_modules/pgp-block-render-module.ts +++ b/extension/chrome/elements/pgp_block_modules/pgp-block-render-module.ts @@ -117,7 +117,7 @@ export class PgpBlockViewRenderModule { public renderPassphraseNeeded = (longids: string[]) => { const enterPp = `${Lang.pgpBlock.enterPassphrase} ${Lang.pgpBlock.toOpenMsg}`; - this.view.errorModule.renderErr(enterPp, undefined, 'pass phrase needed'); + this.view.errorModule.renderErr(enterPp, undefined, 'passphrase needed'); $('.enter_passphrase').on( 'click', this.view.setHandler(() => { diff --git a/extension/chrome/elements/shared/backup.template.htm b/extension/chrome/elements/shared/backup.template.htm index 9ad1e14b78a..8844f98d813 100644 --- a/extension/chrome/elements/shared/backup.template.htm +++ b/extension/chrome/elements/shared/backup.template.htm @@ -56,7 +56,7 @@

- Back up private key in your Gmail Inbox. The security depends on the strength of your pass phrase, which should be very long and hard to guess. + Back up private key in your Gmail Inbox. The security depends on the strength of your passphrase, which should be very long and hard to guess. Best option for most users.

@@ -72,7 +72,7 @@

- Manage the backup file yourself. To prevent data loss, you will need this file and your pass phrase if you ever lose your device or it stops + Manage the backup file yourself. To prevent data loss, you will need this file and your passphrase if you ever lose your device or it stops working.

diff --git a/extension/chrome/elements/shared/create_key.template.htm b/extension/chrome/elements/shared/create_key.template.htm index 9f96f9d33c9..6fbd8d61b44 100644 --- a/extension/chrome/elements/shared/create_key.template.htm +++ b/extension/chrome/elements/shared/create_key.template.htm @@ -1,12 +1,12 @@
- Choose pass phrase to protect your encrypted emails. choosing secure pass phrases + Choose passphrase to protect your encrypted emails. choosing secure passphrases
diff --git a/extension/chrome/emails/email_intro.template.htm b/extension/chrome/emails/email_intro.template.htm index 3731b4590c1..d4a13564a9c 100644 --- a/extension/chrome/emails/email_intro.template.htm +++ b/extension/chrome/emails/email_intro.template.htm @@ -2,11 +2,11 @@
- This email contains a key backup. It will help you access your encrypted messages from other computers (along with your pass phrase). You can safely leave + This email contains a key backup. It will help you access your encrypted messages from other computers (along with your passphrase). You can safely leave it in your inbox or archive it.

-
The key below is protected with pass phrase that only you know. You should make sure to note your pass phrase down.
+
The key below is protected with passphrase that only you know. You should make sure to note your passphrase down.

DO NOT DELETE THIS EMAIL. Email human@flowcrypt.com if you need help. We respond promptly. diff --git a/extension/chrome/settings/modules/add_key.htm b/extension/chrome/settings/modules/add_key.htm index 30ff0047375..8cc1adb8906 100644 --- a/extension/chrome/settings/modules/add_key.htm +++ b/extension/chrome/settings/modules/add_key.htm @@ -59,7 +59,7 @@

Add Private Key

- This key is unprotected. Create a pass phrase or + This key is unprotected. Create a passphrase or use a random one .
@@ -69,7 +69,7 @@

Add Private Key

diff --git a/extension/chrome/settings/modules/add_key.ts b/extension/chrome/settings/modules/add_key.ts index 0d79a8e90c3..227819287ea 100644 --- a/extension/chrome/settings/modules/add_key.ts +++ b/extension/chrome/settings/modules/add_key.ts @@ -119,7 +119,7 @@ export class AddKeyView extends View { private addPrivateKeyHandler = async (submitBtn: HTMLElement) => { if (submitBtn.className.includes('gray')) { - await Ui.modal.warning('Please double check the pass phrase input field for any issues.'); + await Ui.modal.warning('Please double check the passphrase input field for any issues.'); return; } try { diff --git a/extension/chrome/settings/modules/change_passphrase.htm b/extension/chrome/settings/modules/change_passphrase.htm index 6cc6ee253ff..a9ef0f5e611 100644 --- a/extension/chrome/settings/modules/change_passphrase.htm +++ b/extension/chrome/settings/modules/change_passphrase.htm @@ -16,9 +16,9 @@
-
Enter your current pass phrase
+
Enter your current passphrase
- +
@@ -27,20 +27,20 @@
- +
- +
-
Loss of this pass phrase cannot be recovered.
+
Loss of this passphrase cannot be recovered.
-
Please repeat it one more time. Make sure to note the pass phrase down.
+
Please repeat it one more time. Make sure to note the passphrase down.
- +
diff --git a/extension/chrome/settings/modules/change_passphrase.ts b/extension/chrome/settings/modules/change_passphrase.ts index 9c0ac87656b..e70d03c3fcd 100644 --- a/extension/chrome/settings/modules/change_passphrase.ts +++ b/extension/chrome/settings/modules/change_passphrase.ts @@ -48,10 +48,10 @@ View.run( const privateKeys = await KeyStore.get(this.acctEmail); if (privateKeys.length > 1) { $('#step_0_enter_current .sentence').text('Enter the current passphrase for your key'); - $('#step_0_enter_current #current_pass_phrase').attr('placeholder', 'Current key pass phrase'); - $('#step_1_enter_new #new_pass_phrase').attr('placeholder', 'Enter a new key pass phrase'); + $('#step_0_enter_current #current_pass_phrase').attr('placeholder', 'Current key passphrase'); + $('#step_1_enter_new #new_pass_phrase').attr('placeholder', 'Enter a new key passphrase'); } - // todo - should be working across all keys. Existing keys may be encrypted for various pass phrases, + // todo - should be working across all keys. Existing keys may be encrypted for various passphrases, // which will complicate UI once implemented this.mostUsefulPrv = KeyStoreUtil.chooseMostUseful(await KeyStoreUtil.parse(await KeyStore.getRequired(this.acctEmail)), 'EVEN-IF-UNUSABLE'); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion @@ -107,7 +107,7 @@ View.run( $('#new_pass_phrase').trigger('focus'); } else { await this.bruteForceProtection.passphraseCheckFailed(); - await Ui.modal.error('Pass phrase did not match, please try again.'); + await Ui.modal.error('Passphrase did not match, please try again.'); $('#current_pass_phrase').val('').trigger('focus'); } }; @@ -117,7 +117,7 @@ View.run( this.displayBlock('step_2_confirm_new'); $('#new_pass_phrase_confirm').trigger('focus'); } else { - await Ui.modal.warning('Please select a stronger pass phrase. Combinations of 4 to 5 uncommon words are the best.'); + await Ui.modal.warning('Please select a stronger passphrase. Combinations of 4 to 5 uncommon words are the best.'); } }; @@ -131,7 +131,7 @@ View.run( private actionDoChangePassPhraseHandler = async () => { const newPp = String($('#new_pass_phrase').val()); if (newPp !== $('#new_pass_phrase_confirm').val()) { - await Ui.modal.warning('The two pass phrases do not match, please try again.'); + await Ui.modal.warning('The two passphrases do not match, please try again.'); $('#new_pass_phrase_confirm').val(''); $('#new_pass_phrase_confirm').trigger('focus'); return; @@ -154,10 +154,10 @@ View.run( await PassphraseStore.set('session', this.acctEmail, this.mostUsefulPrv!.keyInfo, shouldSavePassphraseInStorage ? undefined : newPp); /* eslint-enable @typescript-eslint/no-non-null-assertion */ if (this.clientConfiguration.canBackupKeys()) { - await Ui.modal.info('Now that you changed your pass phrase, you should back up your key. New backup will be protected with new passphrase.'); + await Ui.modal.info('Now that you changed your passphrase, you should back up your key. New backup will be protected with new passphrase.'); Settings.redirectSubPage(this.acctEmail, this.parentTabId, '/chrome/settings/modules/backup.htm', '&action=backup_manual'); } else { - await Ui.modal.info('Pass phrase changed for this device'); + await Ui.modal.info('Passphrase changed for this device'); BrowserMsg.send.closePage(this.parentTabId); } }; diff --git a/extension/chrome/settings/modules/my_key.htm b/extension/chrome/settings/modules/my_key.htm index 1da60c7be2c..8a4da802442 100644 --- a/extension/chrome/settings/modules/my_key.htm +++ b/extension/chrome/settings/modules/my_key.htm @@ -48,7 +48,7 @@ >  revocation certificate
-

Private key pass phrase

+

Private key passphrase

- This key is unprotected. Create a pass phrase or + This key is unprotected. Create a passphrase or use a random one.
@@ -167,7 +167,7 @@

Set Up FlowCrypt

@@ -194,13 +194,13 @@

Set Up FlowCrypt

- Choose pass phrase to protect your encrypted emails. choosing secure pass phrases + Choose passphrase to protect your encrypted emails. choosing secure passphrases
Set Up FlowCrypt Set Up FlowCrypt

Your keys are managed with your organization's Email Key Manager.

@@ -231,15 +231,15 @@

Set Up FlowCrypt

-
Found of your account key. Enter your pass phrase to continue.
+
Found of your account key. Enter your passphrase to continue.
- +
diff --git a/extension/chrome/settings/setup.ts b/extension/chrome/settings/setup.ts index 5c9c47a375e..06932222db0 100644 --- a/extension/chrome/settings/setup.ts +++ b/extension/chrome/settings/setup.ts @@ -263,7 +263,7 @@ export class SetupView extends View { Change Pass Phrase.
It will let you change it without knowing the previous one. When done, reload this page - and use the new pass phrase. + and use the new passphrase.

If no: unfortunately, you will not be able to read previously encrypted emails regardless of what you do. You can skip recovery diff --git a/extension/chrome/settings/setup/setup-import-key.ts b/extension/chrome/settings/setup/setup-import-key.ts index 91f4862a9a5..2b185a25364 100644 --- a/extension/chrome/settings/setup/setup-import-key.ts +++ b/extension/chrome/settings/setup/setup-import-key.ts @@ -16,7 +16,7 @@ export class SetupImportKeyModule { public actionImportPrivateKeyHandle = async (button: HTMLElement) => { if (button.className.includes('gray')) { - await Ui.modal.warning('Please double check the pass phrase input field for any issues.'); + await Ui.modal.warning('Please double check the passphrase input field for any issues.'); return; } /* eslint-disable @typescript-eslint/naming-convention */ diff --git a/extension/chrome/settings/setup/setup-key-manager-autogen.ts b/extension/chrome/settings/setup/setup-key-manager-autogen.ts index bcf04b66593..a528578f150 100644 --- a/extension/chrome/settings/setup/setup-key-manager-autogen.ts +++ b/extension/chrome/settings/setup/setup-key-manager-autogen.ts @@ -127,6 +127,6 @@ export class SetupWithEmailKeyManagerModule { 'Failed to store newly generated key on FlowCrypt Email Key Manager', Lang.general.contactIfNeedAssistance(this.view.isCustomerUrlFesUsed()) ); - await saveKeysAndPassPhrase(this.view.acctEmail, [await KeyUtil.parse(generated.private)], setupOptions); // store encrypted key + pass phrase locally + await saveKeysAndPassPhrase(this.view.acctEmail, [await KeyUtil.parse(generated.private)], setupOptions); // store encrypted key + passphrase locally }; } diff --git a/extension/chrome/settings/setup/setup-recover-key.ts b/extension/chrome/settings/setup/setup-recover-key.ts index 2d8ce05ca61..cd03ab330dd 100644 --- a/extension/chrome/settings/setup/setup-recover-key.ts +++ b/extension/chrome/settings/setup/setup-recover-key.ts @@ -26,7 +26,7 @@ export class SetupRecoverKeyModule { return; } if (!passphrase) { - await Ui.modal.warning('Please enter the pass phrase you used when you first set up FlowCrypt, so that we can recover your original keys.'); + await Ui.modal.warning('Please enter the passphrase you used when you first set up FlowCrypt, so that we can recover your original keys.'); return; } let matchedPreviouslyRecoveredKey = false; @@ -47,13 +47,13 @@ export class SetupRecoverKeyModule { if (!newlyMatchingKeys.length) { if (matchedPreviouslyRecoveredKey) { $('#recovery_password').val(''); - await Ui.modal.warning('This is a correct pass phrase, but it matches a key that was already recovered. Please try another pass phrase.'); + await Ui.modal.warning('This is a correct passphrase, but it matches a key that was already recovered. Please try another passphrase.'); } else if (this.view.fetchedKeyBackupsUniqueLongids.length > 1) { await Ui.modal.warning( - `This pass phrase did not match any of your ${this.view.fetchedKeyBackupsUniqueLongids.length} backed up keys. Please try again.` + `This passphrase did not match any of your ${this.view.fetchedKeyBackupsUniqueLongids.length} backed up keys. Please try again.` ); } else { - await Ui.modal.warning('This pass phrase did not match your original setup. Please try again.'); + await Ui.modal.warning('This passphrase did not match your original setup. Please try again.'); } return; } @@ -107,7 +107,7 @@ export class SetupRecoverKeyModule { }) ); } else { - Xss.sanitizeRender('#step_2_recovery .recovery_status', `There ${txtKeysTeft} left to recover.

Try different pass phrases to unlock all backups.`); + Xss.sanitizeRender('#step_2_recovery .recovery_status', `There ${txtKeysTeft} left to recover.

Try different passphrases to unlock all backups.`); $('#step_2_recovery .line_skip_recovery').css('display', 'none'); } }; diff --git a/extension/chrome/settings/setup/setup-render.ts b/extension/chrome/settings/setup/setup-render.ts index 45c97e3f312..19c24a20ea9 100644 --- a/extension/chrome/settings/setup/setup-render.ts +++ b/extension/chrome/settings/setup/setup-render.ts @@ -54,7 +54,7 @@ export class SetupRenderModule { public renderSetupDone = async () => { const storedKeys = await KeyStore.get(this.view.acctEmail); if (this.view.fetchedKeyBackupsUniqueLongids.length > storedKeys.length) { - // recovery where not all keys were processed: some may have other pass phrase + // recovery where not all keys were processed: some may have other passphrase this.displayBlock('step_4_more_to_recover'); $('h1').text('More keys to recover'); $('.email').text(this.view.acctEmail); diff --git a/extension/chrome/texts/passphrase_help.htm b/extension/chrome/texts/passphrase_help.htm index efd15e45270..9696c608872 100644 --- a/extension/chrome/texts/passphrase_help.htm +++ b/extension/chrome/texts/passphrase_help.htm @@ -9,7 +9,7 @@ >

Combinations like that are memorable, easy to type and the most secure.

- In contrast, pass phrases like @ut0m4t3d, Honey167! or lA45pf8$d are a poor + In contrast, passphrases like @ut0m4t3d, Honey167! or lA45pf8$d are a poor choice when it comes to security. Because they are so short, on a fleet of 10,000 ordinary computers, these can be guessed in 7 seconds.

diff --git a/extension/js/common/assert.ts b/extension/js/common/assert.ts index e95aaecda03..66b91a4d27e 100644 --- a/extension/js/common/assert.ts +++ b/extension/js/common/assert.ts @@ -49,7 +49,7 @@ export class Assert { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion await Settings.renderSubPage(acctEmail, tabId!, '/chrome/settings/modules/change_passphrase.htm'); } else { - const msg = `Protect your key with a pass phrase to finish setup.`; + const msg = `Protect your key with a passphrase to finish setup.`; const r = await Ui.renderOverlayPromptAwaitUserChoice( { finishSetup: {}, later: { color: 'gray' } }, msg, diff --git a/extension/js/common/client-configuration.ts b/extension/js/common/client-configuration.ts index a0601a461c7..351a2ac44e1 100644 --- a/extension/js/common/client-configuration.ts +++ b/extension/js/common/client-configuration.ts @@ -128,7 +128,7 @@ export class ClientConfiguration { }; /** - * pass phrase session length to be configurable with client configuraiton + * passphrase session length to be configurable with client configuraiton * default 4 hours */ public getInMemoryPassPhraseSessionExpirationMs = (): number => { @@ -166,8 +166,8 @@ export class ClientConfiguration { }; /** - * Normally, during setup, "remember pass phrase" is unchecked - * This option will cause "remember pass phrase" option to be checked by default + * Normally, during setup, "remember passphrase" is unchecked + * This option will cause "remember passphrase" option to be checked by default * This behavior is also enabled as a byproduct of PASS_PHRASE_QUIET_AUTOGEN */ public rememberPassPhraseByDefault = (): boolean => { @@ -197,10 +197,10 @@ export class ClientConfiguration { }; /** - * When generating keys, user will not be prompted to choose a pass phrase - * Instead a pass phrase will be automatically generated, and stored locally - * The pass phrase will NOT be displayed to user, and it will never be asked of the user - * This creates the smoothest user experience, for organisations that use full-disk-encryption and don't need pass phrase protection + * When generating keys, user will not be prompted to choose a passphrase + * Instead a passphrase will be automatically generated, and stored locally + * The passphrase will NOT be displayed to user, and it will never be asked of the user + * This creates the smoothest user experience, for organisations that use full-disk-encryption and don't need passphrase protection */ public mustAutogenPassPhraseQuietly = (): boolean => { return this.usesKeyManager() && (this.clientConfigurationJson.flags || []).includes('PASS_PHRASE_QUIET_AUTOGEN'); diff --git a/extension/js/common/core/crypto/key.ts b/extension/js/common/core/crypto/key.ts index 07d5478b788..eb017bb436f 100644 --- a/extension/js/common/core/crypto/key.ts +++ b/extension/js/common/core/crypto/key.ts @@ -222,7 +222,7 @@ export class KeyUtil { // if (await KeyUtil.decrypt(parsed, passPhrase, undefined, 'OK-IF-ALREADY-DECRYPTED')) { allKeys.push(parsed); // } else { - // allErr.push(new Error(`Wrong pass phrase for OpenPGP key ${parsed.id} (${parsed.emails[0]})`)); + // allErr.push(new Error(`Wrong passphrase for OpenPGP key ${parsed.id} (${parsed.emails[0]})`)); // } } catch (e) { allErr.push(e as Error); diff --git a/extension/js/common/core/crypto/pgp/msg-util.ts b/extension/js/common/core/crypto/pgp/msg-util.ts index 00773e275b6..c724b57b471 100644 --- a/extension/js/common/core/crypto/pgp/msg-util.ts +++ b/extension/js/common/core/crypto/pgp/msg-util.ts @@ -207,7 +207,7 @@ export class MsgUtil { if (!keys.prvForDecryptDecrypted.length && (!msgPwd || prepared.isPkcs7)) { return { success: false, - error: { type: DecryptErrTypes.needPassphrase, message: 'Missing pass phrase' }, + error: { type: DecryptErrTypes.needPassphrase, message: 'Missing passphrase' }, longids, isEncrypted, }; diff --git a/extension/js/common/core/crypto/pgp/pgp-password.ts b/extension/js/common/core/crypto/pgp/pgp-password.ts index 464aa9bc487..e44290f1673 100644 --- a/extension/js/common/core/crypto/pgp/pgp-password.ts +++ b/extension/js/common/core/crypto/pgp/pgp-password.ts @@ -35,7 +35,7 @@ export class PgpPwd { ]; private static CRACK_TIME_WORDS_PASS_PHRASE = [ - // the requirements for a pass phrase are meant to be strict + // the requirements for a passphrase are meant to be strict { match: 'millenni', word: 'perfect', bar: 100, color: 'green', pass: true }, { match: 'centu', word: 'great', bar: 80, color: 'green', pass: true }, { match: 'year', word: 'good', bar: 60, color: 'orange', pass: true }, @@ -81,13 +81,13 @@ export class PgpPwd { 'words', 'in', 'them', - 'Best pass phrases are long', + 'Best passphrases are long', 'have several words', 'in them', 'bestpassphrasesarelong', 'haveseveralwords', 'inthem', - 'Loss of this pass phrase', + 'Loss of this passphrase', 'cannot be recovered', 'Note it down', 'on a paper', @@ -99,7 +99,7 @@ export class PgpPwd { 'set password', 'set pass word', 'setpassphrase', - 'set pass phrase', + 'set passphrase', 'set passphrase', ]; }; diff --git a/extension/js/common/lang.ts b/extension/js/common/lang.ts index fef5f946685..06d1e1a6a04 100644 --- a/extension/js/common/lang.ts +++ b/extension/js/common/lang.ts @@ -39,19 +39,19 @@ export const Lang = { confirmSkipRecovery: 'Your account will be set up for encryption again, but your previous encrypted emails will be unreadable. You will need to inform your encrypted contacts that you have a new key. Regular email will not be affected. Are you sure?', nBackupsAlreadyRecoveredOrLeft: (nGot: number, nBups: number, txtTeft: string) => - `You successfully recovered ${nGot} of ${nBups} backups. There ${txtTeft} left.

Try a different pass phrase to unlock all backups.`, + `You successfully recovered ${nGot} of ${nBups} backups. There ${txtTeft} left.

Try a different passphrase to unlock all backups.`, tryDifferentPassPhraseForRemainingBackups: - 'This pass phrase was already used to recover some of your backups.\n\nThe remaining backups use a different pass phrase.\n\nPlease try another one.\n\nYou can skip this step, but some of your encrypted email may not be readable.', + 'This passphrase was already used to recover some of your backups.\n\nThe remaining backups use a different passphrase.\n\nPlease try another one.\n\nYou can skip this step, but some of your encrypted email may not be readable.', creatingKeysNotAllowedPleaseImport: 'Creating keys is not allowed on your domain. Please import your keys.', keyBackupsNotAllowed: 'Key backups are not allowed on this domain.', prvHasFixableCompatIssue: 'This key has minor usability issues that can be fixed. This commonly happens when importing keys from Symantec™ PGP Desktop or other legacy software.It may be missing user IDs, a self-signature, or have an invalid user ID (e.g., a user ID with image data). It is also possible that the key is simply expired.', - ppMatchAllSet: "Your pass phrase matches. Good job! You're all set.", + ppMatchAllSet: "Your passphrase matches. Good job! You're all set.", noKeys: 'Keys for your account were not set up yet - please ask your systems administrator.', prvBackupToDesignatedMailboxEmailSubject: (acctEmail: string, fingerprint: string) => `FlowCrypt OpenPGP Private Key backup for user ${acctEmail} with id ${fingerprint}`, prvBackupToDesignatedMailboxEmailBody: - "Please keep this email and attachment in the mailbox for safekeeping. It will be needed if the user ever needs to set up FlowCrypt again or forgets their pass phrase. Without this, the user won't be able to read their emails.\n\nSee https://flowcrypt.com/docs/technical/enterprise/configuration/backup-to-designated-mailbox.html#account-recovery.", + "Please keep this email and attachment in the mailbox for safekeeping. It will be needed if the user ever needs to set up FlowCrypt again or forgets their passphrase. Without this, the user won't be able to read their emails.\n\nSee https://flowcrypt.com/docs/technical/enterprise/configuration/backup-to-designated-mailbox.html#account-recovery.", }, account: { googleAcctDisabledOrPolicy: `Your Google Account or Google Email seems to be disabled, or access to this app is disabled by your organisation admin policy. Contact your email administrator.`, @@ -144,13 +144,13 @@ export const Lang = { emailAliasChangedAskForReload: 'Your email aliases on Gmail have refreshed since the last time you used FlowCrypt.\nReload the compose window now?', }, passphraseRequired: { - sign: 'Enter FlowCrypt pass phrase to sign email', - draft: 'Enter FlowCrypt pass phrase to load a draft', - attachment: 'Enter FlowCrypt pass phrase to decrypt a file', - quote: 'Enter FlowCrypt pass phrase to load quoted content', - backup: 'Enter FlowCrypt pass phrase to back up', - updateKey: 'Enter FlowCrypt pass phrase to keep your account keys up to date', - email: 'Enter FlowCrypt pass phrase to read encrypted email', + sign: 'Enter FlowCrypt passphrase to sign email', + draft: 'Enter FlowCrypt passphrase to load a draft', + attachment: 'Enter FlowCrypt passphrase to decrypt a file', + quote: 'Enter FlowCrypt passphrase to load quoted content', + backup: 'Enter FlowCrypt passphrase to back up', + updateKey: 'Enter FlowCrypt passphrase to keep your account keys up to date', + email: 'Enter FlowCrypt passphrase to read encrypted email', }, settings: { deleteKeyConfirm: (fingerprint: string) => `Are you sure you want to remove encryption key with fingerprint ${fingerprint}?`, diff --git a/extension/js/common/platform/store/passphrase-store.ts b/extension/js/common/platform/store/passphrase-store.ts index 763f2e9606b..a4d59460f2a 100644 --- a/extension/js/common/platform/store/passphrase-store.ts +++ b/extension/js/common/platform/store/passphrase-store.ts @@ -8,7 +8,7 @@ import { InMemoryStore } from './in-memory-store.js'; import { ClientConfiguration } from '../../client-configuration.js'; /** - * Local or session store of pass phrases + * Local or session store of passphrases */ export class PassphraseStore extends AbstractStore { // if we implement (and migrate) password storage to use KeyIdentity instead of longid, we'll have `keyInfo: KeyIdentity` here diff --git a/extension/js/common/settings.ts b/extension/js/common/settings.ts index 311658ee1ff..1d5de8094af 100644 --- a/extension/js/common/settings.ts +++ b/extension/js/common/settings.ts @@ -132,7 +132,7 @@ export class Settings { if (!oldAcctEmailIndexPrefix) { throw new Error(`Filter is empty for account_email "${oldAcctEmail}"`); } - // in case the destination email address was already set up with an account, recover keys and pass phrases before it's overwritten + // in case the destination email address was already set up with an account, recover keys and passphrases before it's overwritten const oldAccountPrivateKeys = await KeyStore.get(oldAcctEmail); const newAccountPrivateKeys = await KeyStore.get(newAcctEmail); const oldAcctPassPhrases: KeyInfoWithIdentityAndOptionalPp[] = []; @@ -535,8 +535,8 @@ export class Settings { '', 'NOTE DOWN YOUR PASS PHRASE IN A SAFE PLACE THAT YOU CAN FIND LATER', '', - 'If this key was registered on a keyserver (typically they are), you will need this same key (and pass phrase!) to replace it.', - 'In other words, losing this key or pass phrase may cause people to have trouble writing you encrypted emails, even if you use another key (on FlowCrypt or elsewhere) later on!', + 'If this key was registered on a keyserver (typically they are), you will need this same key (and passphrase!) to replace it.', + 'In other words, losing this key or passphrase may cause people to have trouble writing you encrypted emails, even if you use another key (on FlowCrypt or elsewhere) later on!', '', 'acctEmail: ' + acctEmail, ]; diff --git a/extension/js/common/ui/backup-ui/backup-ui-automatic-module.ts b/extension/js/common/ui/backup-ui/backup-ui-automatic-module.ts index f2acd760b69..bb113ee2d5d 100644 --- a/extension/js/common/ui/backup-ui/backup-ui-automatic-module.ts +++ b/extension/js/common/ui/backup-ui/backup-ui-automatic-module.ts @@ -30,8 +30,8 @@ export class BackupUiAutomaticModule extends BackupUiModule { private setupCreateSimpleAutomaticInboxBackup = async () => { const prvs = await KeyStoreUtil.parse(await KeyStore.getRequired(this.ui.acctEmail)); if (prvs.find(prv => !prv.key.fullyEncrypted)) { - await Ui.modal.warning('Key not protected with a pass phrase, skipping'); - throw new UnreportableError('Key not protected with a pass phrase, skipping'); + await Ui.modal.warning('Key not protected with a passphrase, skipping'); + throw new UnreportableError('Key not protected with a passphrase, skipping'); } try { await this.ui.manualModule.doBackupOnEmailProvider(prvs.map(prv => prv.keyInfo)); diff --git a/extension/js/common/ui/backup-ui/backup-ui-manual-module.ts b/extension/js/common/ui/backup-ui/backup-ui-manual-module.ts index aabdf3383cd..fb02fb0d6c9 100644 --- a/extension/js/common/ui/backup-ui/backup-ui-manual-module.ts +++ b/extension/js/common/ui/backup-ui/backup-ui-manual-module.ts @@ -22,7 +22,7 @@ import { BackupUiModule } from './backup-ui-module.js'; import { Lang } from '../../../../js/common/lang.js'; import { MsgUtil } from '../../core/crypto/pgp/msg-util.js'; -const differentPassphrasesError = `Your keys are protected with different pass phrases.\n\nBacking them up together isn't supported yet.`; +const differentPassphrasesError = `Your keys are protected with different passphrases.\n\nBacking them up together isn't supported yet.`; export class BackupUiManualActionModule extends BackupUiModule { private ppChangedPromiseCancellation: PromiseCancellation = { cancel: false }; private readonly proceedBtn = $('#module_manual .action_manual_backup'); @@ -97,7 +97,7 @@ export class BackupUiManualActionModule extends BackupUiModule { for (const ki of keyInfosToBackup) { if (!(await this.isPrivateKeyEncrypted(ki))) { // todo: this check can also be moved to encryptForBackup method when we solve the same passphrase issue (#4060) - await Ui.modal.error("Sorry, cannot back up private key because it's not protected with a pass phrase."); + await Ui.modal.error("Sorry, cannot back up private key because it's not protected with a passphrase."); return; } } @@ -145,15 +145,15 @@ export class BackupUiManualActionModule extends BackupUiModule { return undefined; } if (checks.checkStrength && distinctPassphrases[0] && !Settings.evalPasswordStrength(distinctPassphrases[0]).word.pass) { - await Ui.modal.warning("Please change your pass phrase first.\n\nIt's too weak for this backup method."); - // Actually, until #956 is resolved, we can only modify the pass phrase of the first key + await Ui.modal.warning("Please change your passphrase first.\n\nIt's too weak for this backup method."); + // Actually, until #956 is resolved, we can only modify the passphrase of the first key if (this.ui.parentTabId && kisWithPp[0].passphrase === distinctPassphrases[0]) { Settings.redirectSubPage(this.ui.acctEmail, this.ui.parentTabId, '/chrome/settings/modules/change_passphrase.htm'); } return undefined; } if (distinctPassphrases.length === 1) { - // trying to apply the known pass phrase + // trying to apply the known passphrase for (const ki of kisWithPp.filter(ki => !ki.passphrase)) { if (await KeyUtil.decrypt(await KeyUtil.parse(ki.private), distinctPassphrases[0])) { ki.passphrase = distinctPassphrases[0]; @@ -166,7 +166,7 @@ export class BackupUiManualActionModule extends BackupUiModule { await Ui.modal.error(differentPassphrasesError); return undefined; } - // todo: reset invalid pass phrases (mismatch === true)? + // todo: reset invalid passphrases (mismatch === true)? const longids = kisMissingPp.map(ki => ki.longid); if (this.ui.parentTabId) { BrowserMsg.send.passphraseDialog(this.ui.parentTabId, { type: 'backup', longids }); @@ -174,10 +174,10 @@ export class BackupUiManualActionModule extends BackupUiModule { return undefined; } } else { - await Ui.modal.error(`Sorry, can't back up private key because its pass phrase can't be extracted. Please restart your browser and try again.`); + await Ui.modal.error(`Sorry, can't back up private key because its passphrase can't be extracted. Please restart your browser and try again.`); return undefined; } - // re-start the function recursively with newly discovered pass phrases + // re-start the function recursively with newly discovered passphrases // todo: #4059 however, this code is never actually executed, because our backup frame gets wiped out by the passphrase frame return await this.encryptForBackup(keyInfos, checks); } diff --git a/extension/js/common/ui/key-import-ui.ts b/extension/js/common/ui/key-import-ui.ts index 1b3bba4e0fa..6f7aba7cc52 100644 --- a/extension/js/common/ui/key-import-ui.ts +++ b/extension/js/common/ui/key-import-ui.ts @@ -411,7 +411,7 @@ export class KeyImportUi { private decryptAndEncryptAsNeeded = async (toDecrypt: Key, toEncrypt: Key, passphrase: string, contactSubsentence: string): Promise => { if (!passphrase) { - throw new UserAlert('Please enter a pass phrase to use with this key'); + throw new UserAlert('Please enter a passphrase to use with this key'); } try { if (toEncrypt.fullyDecrypted) { @@ -424,10 +424,10 @@ export class KeyImportUi { this.onBadPassphrase(); if (this.expectedLongid) { // todo - double check this line, should it not say `this.expectedLongid === PgpKey.longid() ? Or is that checked elsewhere beforehand? - throw new UserAlert(`This is the right key! However, the pass phrase does not match. Please try a different pass phrase. - Your original pass phrase might have been different then what you use now.`); + throw new UserAlert(`This is the right key! However, the passphrase does not match. Please try a different passphrase. + Your original passphrase might have been different then what you use now.`); } else { - throw new UserAlert('The pass phrase does not match. Please try a different pass phrase.'); + throw new UserAlert('The passphrase does not match. Please try a different passphrase.'); } } } else if (!toDecrypt.fullyDecrypted) { diff --git a/extension/js/common/ui/passphrase-ui.ts b/extension/js/common/ui/passphrase-ui.ts index 46738c99666..32f15e6149e 100644 --- a/extension/js/common/ui/passphrase-ui.ts +++ b/extension/js/common/ui/passphrase-ui.ts @@ -66,17 +66,17 @@ export const isCreatePrivateFormInputCorrect = async (section: string, clientCon const password1 = $(`#${section} .input_password`); const password2 = $(`#${section} .input_password2`); if (!password1.val()) { - await Ui.modal.warning('Pass phrase is needed to protect your private email. Please enter a pass phrase.'); + await Ui.modal.warning('Passphrase is needed to protect your private email. Please enter a passphrase.'); password1.trigger('focus'); return false; } if ($(`#${section} .action_proceed_private`).hasClass('gray')) { - await Ui.modal.warning('Pass phrase is not strong enough. Please make it stronger, by adding a few words.'); + await Ui.modal.warning('Passphrase is not strong enough. Please make it stronger, by adding a few words.'); password1.trigger('focus'); return false; } if (password1.val() !== password2.val()) { - await Ui.modal.warning('The pass phrases do not match. Please try again.'); + await Ui.modal.warning('The passphrases do not match. Please try again.'); password2.val('').trigger('focus'); return false; } @@ -87,7 +87,7 @@ export const isCreatePrivateFormInputCorrect = async (section: string, clientCon if (!clientConfiguration.usesKeyManager()) { const paperPassPhraseStickyNote = `

- Please write down your pass phrase and store it in safe place or even two. + Please write down your passphrase and store it in safe place or even two. It is needed in order to access your FlowCrypt account.
${notePp}
diff --git a/test/source/mock/google/exported-messages/message-export-15f7f0e992f2c830.json b/test/source/mock/google/exported-messages/message-export-15f7f0e992f2c830.json index c2fcc0ca3a3..114bd542faf 100644 --- a/test/source/mock/google/exported-messages/message-export-15f7f0e992f2c830.json +++ b/test/source/mock/google/exported-messages/message-export-15f7f0e992f2c830.json @@ -4,7 +4,7 @@ "id": "15f7f0e992f2c830", "threadId": "15f7f0e992f2c830", "labelIds": ["Label_1", "STARRED", "SENT", "INBOX"], - "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your pass phrase). You can safely leave it in your inbox or archive it. The key below", + "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your passphrase). You can safely leave it in your inbox or archive it. The key below", "payload": { "partId": "", "mimeType": "multipart/mixed", @@ -101,7 +101,7 @@ "id": "15f7f0e992f2c830", "threadId": "15f7f0e992f2c830", "labelIds": ["Label_1", "STARRED", "SENT", "INBOX"], - "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your pass phrase). You can safely leave it in your inbox or archive it. The key below", + "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your passphrase). You can safely leave it in your inbox or archive it. The key below", "sizeEstimate": 11111, "raw": "UmVjZWl2ZWQ6IGZyb20gNzE3Mjg0NzMwMjQ0DQoJbmFtZWQgdW5rbm93bg0KCWJ5IGdtYWlsYXBpLmdvb2dsZS5jb20NCgl3aXRoIEhUVFBSRVNUOw0KCVRodSwgMiBOb3YgMjAxNyAxNjoyNjoyMyAtMDcwMA0KQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7DQogYm91bmRhcnk9Ii0tLS1zaW5pa2FlbC0_PV8xLTE1MDk2NjUxODI4NTgwLjM1NDc0Mzk0MTQzMzkxNzUiDQpGcm9tOiBmbG93Y3J5cHQuY29tcGF0aWJpbGl0eUBnbWFpbC5jb20NClRvOiBmbG93Y3J5cHQuY29tcGF0aWJpbGl0eUBnbWFpbC5jb20NClN1YmplY3Q6IFlvdXIgRmxvd0NyeXB0IEJhY2t1cA0KRGF0ZTogVGh1LCAyIE5vdiAyMDE3IDE2OjI2OjIzIC0wNzAwDQpNZXNzYWdlLUlkOiA8Q0FLYnVMVG9jYl9RSEhMdU9faHJVNXViOXFQLVpyNkpTY2swblBkWlltNHRhaEpXXzlRQG1haWwuZ21haWwuY29tPg0KTUlNRS1WZXJzaW9uOiAxLjANCg0KLS0tLS0tc2luaWthZWwtPz1fMS0xNTA5NjY1MTgyODU4MC4zNTQ3NDM5NDE0MzM5MTc1DQpDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD11dGYtOA0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQ0KDQo8IS0tIEJ1c2luZXNzIFNvdXJjZSBMaWNlbnNlIDEuMCA9QzI9QTkgMjAxNi0yMDE3IEZsb3dDcnlwdCBMaW1pdGVkLiBVc2UgPQ0KbGltaXRhdGlvbnMgYXBwbHkuIENvbnRhY3QgaHVtYW5AZmxvd2NyeXB0LmNvbSAtLT4NCg0KPGRpdiBkaXI9M0QibHRyIj4NCiAgPGRpdiBzdHlsZT0zRCJmb250LXNpemU6MTIuOHB4Ij5UaGlzIGVtYWlsIGNvbnRhaW5zIGEga2V5IGJhY2t1cC4gSXQgd2lsbD0NCiBoZWxwIHlvdSBhY2Nlc3MgeW91ciBlbmNyeXB0ZWQgbWVzc2FnZXMgZnJvbSBvdGhlciBjb21wdXRlcnMgKGFsb25nIHdpdGggPQ0KeW91ciBwYXNzIHBocmFzZSkuIFlvdSBjYW4gc2FmZWx5IGxlYXZlIGl0IGluIHlvdXIgaW5ib3ggb3IgYXJjaGl2ZSBpdC49DQo8L2Rpdj4NCiAgPGJyPg0KICA8ZGl2IHN0eWxlPTNEImZvbnQtc2l6ZToxMi44cHgiPlRoZSBrZXkgYmVsb3cgaXMgcHJvdGVjdGVkIHdpdGggcGFzcyA9DQpwaHJhc2UgdGhhdCBvbmx5IHlvdSBrbm93LiBZb3Ugc2hvdWxkIG1ha2Ugc3VyZSB0byBub3RlIHlvdXIgcGFzcyBwaHJhc2UgPQ0KZG93bi48L2Rpdj4NCiAgPGJyPg0KICA8ZGl2IHN0eWxlPTNEImZvbnQtc2l6ZToxMi44cHg7Ij4NCiAgICA8c3BhbiBzdHlsZT0zRCJjb2xvcjogcmVkOyI-RE8gTk9UIERFTEVURSBUSElTIEVNQUlMLjwvc3Bhbj4gV3JpdGUgbWUgPQ0KYXQgaHVtYW5AZmxvd2NyeXB0LmNvbSBzbyB0aGF0IEkgY2FuIGhlbHAuIEkgcmVzcG9uZCB2ZXJ5IHByb21wdGx5Lg0KICA8L2Rpdj4NCjwvZGl2Pg0KLS0tLS0tc2luaWthZWwtPz1fMS0xNTA5NjY1MTgyODU4MC4zNTQ3NDM5NDE0MzM5MTc1DQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47DQogbmFtZT1jcnlwdHVwLWJhY2t1cC1mbG93Y3J5cHRjb21wYXRpYmlsaXR5Z21haWxjb20ua2V5DQpDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50Ow0KIGZpbGVuYW1lPWNyeXB0dXAtYmFja3VwLWZsb3djcnlwdGNvbXBhdGliaWxpdHlnbWFpbGNvbS5rZXkNClgtQXR0YWNobWVudC1JZDogZl90Y2RZelpzWHl3DQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQNCg0KTFMwdExTMUNSVWRKVGlCUVIxQWdVRkpKVmtGVVJTQkxSVmtnUWt4UFEwc3RMUzB0TFEwS1ZtVnljMmx2YmpvZ1JteHZkME55ZVhCMA0KSURVdU1DNDBJRWR0WVdsc0lFVnVZM0o1Y0hScGIyNGdabXh2ZDJOeWVYQjBMbU52YlEwS1EyOXRiV1Z1ZERvZ1UyVmhiV3hsYzNOcw0KZVNCelpXNWtMQ0J5WldObGFYWmxJR0Z1WkNCelpXRnlZMmdnWlc1amNubHdkR1ZrSUdWdFlXbHNEUW9OQ25oallVZENSbTQzY1ZZMA0KUWtWQlEyZExablZtUnpaNWMyVlNVRGxxUzFoYU1YcHlUVFZ6VVhSclIxZHBTMHhyY3pFM09UbHRNRXQzU1ZsMVFRcFJlVmwyZHpaag0KU1ZkaVRUSmtZM1ZDVGs5NldVaHpUSEZzZFhGdldHRkRSR0pWY0VzNGQwa3ZlRzVJTHpsYVNFUjViMjFyTUVGVFpIbEpNRXNLVDJkdQ0KTWtSeVdFWjVVM1ZTYkdkc1VHMXVUVkZHTjNab2NHNVlaV1pzY1hBNVluaFJPVzAwZVdsSVRWTXJSbEZoZWsxMlppOTZZM0pCUzB0bg0KQ21oUWVHTlpXRU14UWtwbVUzVmlOWFJxTVhKWk1qUkJVbkJMT1RGbVYwOVJUelpuUVVaVmRuQmxVMmxPYVV0aU4wTTBiRzFYZFV4bg0KTmpSVlRBcHFURlJNV0U4NVVDOHlWbk15UWtKSVQwRkRjeloxTUhCdFJHNUdkRVJ1Um14bFIweEROV3B5VERaV2RsRkVjRE5sYTBWMg0KWTNGalprTTFUVllLVWpCT05uVldWR1Z6VW1NMWFHeENkSGRvWWtkbk5FaDFTVFZqUmt4TUsycHJVbmRYWTFaVGJIVktVemxOVFhSMQ0KWnpKbFZUZEdRVmRKZWs5RENuaFhZU3RNWm1JNFkwaHdSV2MyWTJsa1IxTjRVMlUwT1hablMwdHllWE4yTlZCa1ZtWlBkVmhvVERZeg0KYVRSVVJXNUxSbk53VDFsQ09IRlllUW8xYmpOR2ExbEdMelZEY0ZsT0wwaFJZVzlEUTNoRVNWaE1SM0F6TTNVd00wOUpkR0ZrUVhSUg0KVlN0eFFVTmhSMjFTYUZGQk9YRjNaVFJwSzJzS1RGZE1NMjk0YjFOM1VTOWhaWGRpTTJaV2J5dExOM2xuUjA1c2RHczJjRzlJVUdOTQ0KTUdSVk5sWklXV1U0YURKTlEwVlBMekZNVWpkNVZuTkxDbGMwTjBJMFptZGtNMmgxV0dnNE5qaEJXRE5aVVc0MFVHUTJiWEZtZERSWA0KWkdORGRWSndSMHBuZGtwT1NIRXhPRXAyU1hselJIQm5jMHhUY1FwUlJqUTBXakJIVDBneWRsRnliazlvU25oSlYwNVZTMDRyVVc1Tg0KZVRoU1RqWlRXakZWUm04MFVDdDJaakY2T1RkWlNUSk5abkpOVEdaSVFpOEtWRlZ1YzNoVE5tWkhja3RvVGxaNFRqZEZWRWcyT1hBeQ0KY2trMlJqZ3pOa1ZhYUdWaVRGRkJVa0ZSUVVJdloydEVRMFI1ZFUxNmEyOU5VV3BEQ2xsTVZXUnNVR2hXYVdsdlVGRkJZaTlYVFdaaA0KYVVVMWJuUm1NM1V5VTJOdE1XMUhkVmhVVVhOVWJWVXllVlJpV1ROcFoxaFVTalpaU2tnMFF3cEdURUl4T0dZMmRTdE9hRnBpTUhJNQ0KTjB4MFpVWTBTbWwxVkhSdE5scEJOak5sYWxObmNDODFURzV6TVZvMWQxazNjRTFPVUhOSU1HTlVWVE1LVlhKR1VXZ3ZaMmh2ZUdGdQ0KVTBoaFRqRllVWEJoYjNaWmMwOUlabk5YWTFsNlFYaDBkbkZvUkZZeWRuRm1TV3hvYVV3MlJXUkZOMVp1T0RSRENsRkZNRGsyUjNVMA0KYVUxMFMxcFRXRU5FVlRsQ01WaE9NaXR5U3pKbEt6bGpNVzVSU0VGWWFrRnhORGwyT1ZkVmVuTjBlbXAyY2tOdFFtRnFWUXBIVXpaRA0KWTNrelZraFNaV3cwTlRoaWIwMU9UMXB4ZGt4UFFrTjBkelJ1ZURKSFJrUnpNVFphVVU1YVJubDNhakZ3VkdoRmVFdE5lRWhzYmtJSw0KVTNjMmRFMUtNRVpLUWtOck1rVTVVekk0UW5WMVpIVTJjMHBLWlhKYVIycFZTMGxoWm05VFEyTlBPSGR3ZG1sNGVrd3hjelJrY1Vweg0KSzJsSUNsSjJNRFI0Wmtock56aHlaMkZRTURFd1RuZHZjVWhxWkN0dmNITXJUbmhNYjBNNVpGTTFVR05FYlRsRFFYVkNlRkpxWmpsbg0KVTBvNFVXODRkd294YW1Wc1pHbzVNM0ZwV1ZVMFdqQlBPRGR5ZWxjclNVUllOa2RDU1dORk9FcG5hSEJQVHl0WVRYaE9NRzVtWWpKRg0KV25CclJtaENUR1UyTW1vS1NrOW5VWE5rYjFsNUsybENTMGRUWjNneWRXOUlTWFpwWm5ocGNUZ3lOMWhIUTFoVVdtMUlhMEYzV25sSw0KVUd3M2JYbHFZUzl4WkdsMVpHeEVDa1p1UW5SUFpYaFVibG8zTjBoWWJFWkRPWE0zTDFCSmRGcGFjVXR1U1ZCMVNVdG9jMWN2VkdzNA0KWm5wd1ZWQm1OMVYxTUhSVEwzWkRlbU00S3dwaFluSndVVTB5Y0hCSk4wODVNMnREUzBwa1dGWjZTMmx2UlRKTlpsWTFSR2hNYWs1UA0KWlRneVQxSlhXazgwZFhkRFp6SjFPRnBJYUVOUGVub0tUWE5OY0VGdE9EbG1LekZ1ZGs5UmRIWkNVemwyTkRWTmFGcGtZbTVrZDFCSQ0KVVVWbk1uQk5Oamc1V25oSWR6bEZaMUJwVDJoNVQwMUdSMDB4Q2pSMFFsb3phbGxtVUhoSGVGUlhOMDVhWm5KNVYxVlJlSFpUVTJ0Rw0KWVV4elVFMXFlRlJDT1ROVUwyWnpTbVJsVlVSSFMwcFNORFJqVW5kbFVBcEJWRkZYU3k5RlFtZDRNV1FyYWtwVlNFdFpiRFZoU0ZWNA0KWkV0TWRuZElNV2xyZW1kSWRVdHJZalJ3VmpCNVlWSnFUMDU1T0hORloxaFphMm9LU0c5SU1YRm1Xa0Z4WWtOdmNYSmhVbTl5VkVWbg0KVHpsUmRucGhURXRpT1dka1JHcEZUWGgxZWtWS2RVRXpVWGhRT1VoeFNGSTFZVlVyVkRodkNtaFljM001VTAxR1ZtcFdiMnMyZERreQ0KZGpaclpXVlZWbEpLV1hocWFHOVNUMXBPVldWTmQyWkpaeTlGVVVWWVFVTlJWVWxIYjJ0S2NXRlpRd28wVkZnelIyOU1WMkUxSzBKVQ0KZHpWRGFFdHBVa001Vms5NVJrNTJjVGhSTW1WMVFucFRVbTlaVUZsVlZUZGxhMFJoZDFWUlZTdFRRM0JPTUVrS00waFphVXBzUjNwRQ0KU2pkNmQwWjVZbVZGVFdSMk1VWTVORVkwVG1WbVVrOWtVa1pqVUhSNmNrRktORXhOTXpoNmIzRXlXVVZWZVVzNVVrNHdDbXhQTWtrNQ0KUWtaM016QkJVaXRRY3k5eGVIUndkRmQwZWs1WVFtOW9XWFZPVG5CaFduUXlWVTFqVFU5YWFGSlpiVWhLYW5FMU9XOUlOalZZT1Fvdg0KYkRoM1JXczBibmhuUm0xRGFtNXdTSGxIY0c0eWFuUmtUWFJTUkhKM1FXVklTMEpLTkZwUlZWWXpVMVV2WTJkd1l6QldXakp5Wnl0YQ0KY1V3S04ybEJWMlp2Wm05RUwwMHZNMkpGVDNVMlpWQnhZMnd5WWt0UGFIYzRVbFF3TjBOcGJXOTJTMVZqV0hWcWNEY3ZhSE5xTkRkNQ0KVGtkTFFWTnpDbkphVFhsS1dGUXJWbkZOUVM5TlYySXJLMnBQVlhkUmEwTjZObVJzZWswNFZ6VlZRekpsZW14dE1YVkpXQ3R1Y2xwdw0KTUV4dlYzcHhNbFpIUndwRlRtSkVjRzU1V0dnd1Z6TkdiVlpsVTJkM1pXb3hSbWMzUVVvMGQyUk1hMUI0WldJNU1UWlZSMDlPY2xWaQ0KUmxsU2RFVTNha0Z2TDJnNVl6TUthM1Z6THpoeWMzaE5WbVpVZGxGMUszUmFVRTgzYkdsWGVHaDFkVkpYWVVjcldVOUtaVEp6T0U1Wg0KZFhGc2VYbFFjSFpMVW5SSFNYRjVNell6Q21NNWFqVldibVp4VDJsc01WTjRRV3BGWjIwM1JUVkJTR3REWkZGRU1pOUNURFFyYUZKbA0KWlhneU4xZGxhbVZrVTBoU1ZubFJOazA0U0RCU1R3b3JORGhsWm14R1pXRkRWRlJYUlRrM01FaEpXakZvVFZGVVpqTmlURVZoUWpBNA0KTnpVNFZYVlpWbUUzWjJWR05tcFJiWEJuT0U5dWExSlFRbEVLWVdOUlNHZENUMVl4Um5wbU1HRnVNSFZOYUZaM01IWkNVVWxZTTFoaw0KWVV4bEszVldWWFYyYkRBd1ZrOU1RalJLUlhKRFVYcExSRWR6UVUxcUNrNHlkVVV4WTBGRFprRkZZWFZVVFdsck9Tc3ZSelYzY0RKbw0KVnpoS1QwOHhiWEpJTjJ4eE4zb3pVbnBvU2s0dlZtdFVSa1pUVDBkNUwyMUNNUXA1ZFRScGJtSXJkVFZoVm5sS1NVdzFiR3B6TDA1Qw0KYm04NVlpOWhSRTlWYlcxcFNIYzBiWGt3UzBOUlZtUkhUbUpzWlhSeFptcGxTbFkwWjAwS1NWRnVXRmxZYkZGblp6TTVPRXhDWVhkRA0KVGt4WlNHdGlMMlJFVGs4d1duTmlNMlJFWTI1c2QyUkRRa1JpTWpGM1dWaFNjRmx0YkhOaFdGSTFDa2xFZUcxaVJ6a3pXVE5LTldOSQ0KVVhWWk1qbDBZMGRHTUdGWFNuQmlSMnd3WlZWQ2JtSlhSbkJpUXpWcVlqSXdLM2R6UmpGQ1FrRkNRMEZCY0FwQ1VVcGFLelpzYWtKbg0KYzBwQ2QyZEVRV2RyVVhKaGQyNXVTbFZLVFdkalJVWlJaMHRCWjAxWFFXZEZRMGRSUlVOSGQwMURTR2RGUVVGTk4yMEtSQzg1Y1RVdw0KTjJ0VWMzQmxTbU5vUkU5eGVGWXJTRkpIYXpWTWEzSkJUbko0YXpCQk4wNXpSMDVDZEN0UVN5dFBaVGsyVURKc2FrdzNjeXRwQ2pNdw0KTUU0NFlUQjNVWGxzWVZCdE5XRTBLMFZRVmlzdldYRXZLelJGTDJoNWQyMXdMM2hXZFhwVlpsZEZVR2wzVUdKV1IzTmtObk42ZGtWSg0KV0FwTlp6TldZMlZIVWpaYVNITm5RWE14T1RaVGMwd3hUV0ZNWjJob2FHMTBhM0pRTDBseVUxVkxUbEIzUldsMWFVNW9VVlJyU1RSTw0KY25sWmJ6Z0tTRmxHUzFsdVEyOHpRbTVIUjNaUmIzRmpMMHRUY3pSQ2JDdHJRM1ZqWTFJeGFtTnJWRzVvU2pkdlZVeEZiM2haTmpKag0KYjBWa2VrRmxTa3BQQ25obUsyTkhNSEptVTNkTE5sZ3lVRlpoUWpOWFRWWkZibUpxWjFKSmJETnplbkIzUjFVeWMyNXZXazVyVDB0WA0KZFdGdGFqSmtWVGRUZVZaUVFRcFFPV2RRYjFsTVNUTmxkbVZGYm1OblVVOW1RbXR5VkcxcmRqZFhNbk42Y25aWWVXNUtXbkpNUWpsUQ0KY21FNVlrMTJkV3N5Y1ZSMU1HbERSbVlLTkdWMUszTmtWVEZwZWpoaVkzVmpNekppYms5VlNXdDVWRzVCYnk4MUx6SnBWM3BRWTNWWA0KTm14eFlscHhObE5FSzBoVlpHTlRXR1ZYVjB3eUNqY3hRMUZ0VW5OYWIxRk9Xa2d4VVV0alppOUhha3AxYkV4VFlVTk9WbWt6VVVoeA0KVFRGcE9HTkZjM1ZITlhGUFJrZzNWM2xPVldkcFJGTlVRZ292Um13NVEwRldaa2xCZG5kMFlUZHBZekZ3U1ZGblNsTlllVVpWUmxvdg0KTVZod1pXWm9WbVp6YlZOU1lWVlVZMnRSU0VwcFN6VnRVVUZQUmtvS00wdFRWV3hwVWtneE9VTk9VbnByUW5odGVGTkJOalZPWlhocQ0KYURoaVVXZFRka2w2VDNaR1NFUlRjVU52WWxoMWRVdDJWelp4ZFRoelQzTk5DbnBZZDFVNVlWSmlXVzVCWWsxWVVtaElia28zVHlzdg0KVUdObVpYUmxhVVEyZGtsVVRqVnJRVE5xZUc1RGRrODRXa1o1T0ZKcmExZFpTRlZNUWdwTlpYUmlhRlJMVVV4dU0yRnRiMlJJYTNKcA0KWkZoelJsSlFUV1pIYUdkU1dpczJiR1ZCVWtGQmNqaFpZVkJMU0dOSlpVUlVTVnByZG0xeVozTUtiQ3RtWWtWQlJsaFVVa1psVEVSRg0KTTBrNWVpOTBhazVwUWtweFkwWkRZazFYVUdOQmQyMUdkMVl3YmtnNFUwUmxURk5zVDNaeGNITkRaa1JQQ2xKcGFFdGlNVWd5VkdwUg0KT1UxRU1ITXZaMEYzUlM5cE5XVk1RblIxVWxoWk1sZHFPVVY1UTFsak0yZHhjVGRRUW1vclJuTXdjbkJ0TmsxWE1BcE5XbVZ1WVhvdg0KUTNFeEszUXJXakJQWkdVMVUwZGxTMWR6Tm1wdk1VZzRUM1V3ZUc5VFlYaGtUVW81UTBwdFQyVmFTMUZCVVcwNVZsRnJjVXNLUm5Zdw0KVEc1VmRrMVdTbGs1WjFGNVUwMDFZV3BVWkd4S1oyeEliekpQTlhWTmQzSmhSbFZTZFVoNlFrUjBZU3M1TVN0NWR6Wk1RVGMyUkVKbQ0KQ2tSMlQwcDBiVzFGU1hkRWMwRk9WM0JTTkhwWVUzSTJVRFZOYzJGSUswTXJiV0pUUTBkeFRYQnRlREpVV2paSFpIaFRWazVEUlU5VQ0KUW1wM2F3cHViVWx1Y0VKUFIwTk9ha0p2UW5kTVVVTlNOMjF6UkM5MVl5dG1jR2Q1WmtkVkx6bEljekp5Y201WFdIaEpSMnBPZUZCUA0KVDNnME5VeENOWEVLYzJadE1IZzBja3B4ZVRGT1dWRm5ZMVZDTTIxMFoyZFRjSEpEYmtnd1dIcDFVWFpHUjBaRFVEQXhVa1J4TmxOYQ0KTVVoeWJ5OTRObGQ1WWpCQ0Ntd3hRelZ3UVZodVpXZFNSRzVRUXpWUmNubzNRbVZ2VGsxTWVtNWtaVEU0WlhkTEwwVnZVVEF2VW14aw0KWlM5TGNGZHFXV2N4UlRCRk4yeGhWZ3BLYUVOTllrZHFSMmxIZWxabU5FbDNRMWxXU1U4NWRGaDJVakZzVmk5U2VFRnVNR0ZLTW1oMw0KUXk5MlVVMDBaRFZqUnpRMlNtUnJSM0pKV2trS01rNDFkeXRZV25OWGRtZEVjWFpzUlhsak1XdFBkR2xLTldOck5GSmFVM0ZDY0daVA0KTkRGQ2NIaG1aMEkxZVZseFNVbFVTa2hVZUdOdlVUbFhDbVZqYTFwUmVuVlpOaXRITkZvd1psSnJURlJrYkZFcmIzTkRSamxpV25wRw0KZVhsSk5UVk9SSFV4ZW5kemRIQlBOMlpxZHk5R1YzY3JVVE5ZTVFwR2MwVkJSVkZGUVVGbU5FcEJkMmhsWkhwMVYzUXhlSEpTUjBSNA0KTkhNMFpYQjBibWRrYkRSeGVrSXdkbEZ0UTFVeGJqQlhaVzVhYXpnMlEzVUtaR3BIY0RSS2RXeEhhRzVEZGxReGNHNDRUbWxLVWpsVA0KUVU4Mk5HdG9SVmhQWVdsMVJucFFTVzkzTlZwT1lqVTFUazFaVmxsbmEwaG5RVEJCQ21GS04yZFNVMGR6YkRkb2QwMVlSU3RFYUZNcg0KTml0VU9HOTVNMjFSZEUwMWVFcHZNM1pUVVdkeEt6TmhWa0pOYzFoUFRIRkJTbUl4VGxsRE1Rb3ZhMjFFTkVwM05tYzNSRk13YVhkRw0KZWtaT1NYWmFXSEJLUVUxQ1REQnZSV3g1UkV0R1FVTTVkRGRNYW1oc2RubDZlVk5oTWpOV1prTllNWE1LVXpCaVlUUlBPRzh5T1hSMg0KVldGNlRqVmtMMWhDWWxwd2VrRTNaelJEWVhOc1kzbEZObmg0V25ad05rbFFTRGN5ZDJkNmJGZG5UM1JSWW05eUNqZDJXbFpMWmpOSA0KY0hOUlZEQnlialZVZW1Wd05FRm9kbmd5WmpSVmRUUndTRlExY1RSQmExaFlNWFZSU2xST2JFSk1aa0ptVFV0aU9GQTBLd3B2VkRSRw0KV2pkR00zTnNNM2xpTDA5RVVqVk1VRVEzVTBWRVJrUjFla1JzZWxsU01XNXZkV0Z2UkZkeGVuSktVMEZwVkROWlpUVXJRVGMxSzJ3Sw0KUjJSU1ZrZEZVSFJ0VTFoR09XOWlaREJ6YURGek5ucHNTRzlPTUVRelVGUlliWFphVlRaSWFFeHRXWE5zT1dselNrTnZVekp3ZFRCdA0KYkZFMkNuUTNTbVEyVFU1bk5Fc3JMeXRoYTFaeWVsVlNXVFIzWVdKS1N6aFJPSEowTTJKc1ZVTkJaM280ZUV4aFdGbG1ObWR1ZFdOMw0KYW1odVIwRklkQXBpYVdSWVVGaHNaM0prUjJkcmIwTldla3hNTHk5VmQwUkpNWE5tWkU1VWVYWkxNRFJ3ZHprNFNVaDFjVUZCTDNKTA0KVFVWaGREWlFVV3BQTkhnS1dVZGhOalJ6U3prclNtZHBjR2ROUjBKdWIyRjFORUZ0UnpZMU1EbGtkVWRwVDFoVFdETlFObFozZWpObg0KYUZGWk5tZFpZVVpSYWt4a2JVTXpDbUZqZEVGVlNHazVOa0pxV1ZKb1VVVjNORGR3TVdnMGVVaGFRWHBEVmtwVWNtUjVaVzVGVkM5RQ0KY2tKMlRIaDBSbTVuV1UwNFVVZGFhVkZLVGdwdVV6bDBXR1pwT0c1MldtNDBjMjVVT0ZVMmRFODFRVVI0UldSUmJuTnplVkpPV0dzMA0KV0hscGFtSlNkMVF3TmtoM1ZFcHlURGRLYVRGNGQzWUtXWHA1WVcxSmJqQldZemRNUmxKR1dFeFFhRlp2VGpsS1pDdHFXbkUxVEU4NQ0KVVVGMFZVUXJVWGhRWTJoV1dtNHpZakZOU25adE5HbzRja0o1Q205bmVWVXZhMmxJYlVkUVZEZFJUR1pwTDJ4bFpWRXdUWE0zZDJKaw0KZEhoRU5EQkNkbVpLTVZORWExZHJVa2hNVXpsaWJFOHlRa05hTDFSblNnb3dPRzVtYWxjMmMyY3lhREl5ZEZKS2NIVkpObTlGWkVwTg0KZEZad2NHaDBTVlozV1ZoMFUzWnBWa2hCVDFoSVptNVJiVzlDZUhWdWQwOVlXalFLYjNsT1luTlRVV1ZrVG05dmIweDFWVzVCWW5KWg0KYW1Sa2RGZEVhVm95VTBSTk1FRTBXREZSY1U0d1pGZG1kRVE0VGxSbFluSjBhek51UkVKTENuVTFPU3MzYjA1Wk1uTlBaa3N5YlZndw0KWkRORVlYb3dRVmhzVVROV1dpOUhhSE0zY3pSUVlUbEJPRzUzVm5sRWVWRTVVME5qYmxVM1RVY3lMd3BOTUM5dVkwTnBkSFF6ZUVWUQ0KU0VoMWMwWkJSekJKVmtFemVGTnlWMU40VVhGS1p6SndkRFZHYm5FNE5qSlpZM1ZIVEV0SFRYbDVjMWhTZVdrS1JIVjJlbkF3UVVOVw0KV2tGcmRXVXZOMDVUTVRGdVdYTmFUR1J2V1hsTlFuWjBhaXRKTlZaTWJFUnlMM1J1UkRObVFXOUJRaXRZZFRoV01XNTBDazFZVDNJcg0KYmxndk4waENlbXBhWVRBM00zQmxUVlZMTW05eE1teEVhWGRhUlhoVE0zWk9Velp5ZUd0dFZHSnhUbkl6YWlzdmNVbGxSa2d3V1Fwbg0KVUdOak1rbE5kRWNyYkVFNFYwbHlhemg2Ylc1dlVXcFNibXRzT0hack5VTlBLM2xoTHl0WE1qZHNaVmszY2xSNU5XVm9hMnQ2YzJwQg0KT0VZS01GcHVka2t5YzA4M1VWUXdkMUpVZEZKaWJWTkNTa1JPTkZsU1NsZzJVRVJoZEdaR1ZISkNaRFJuUTBkUllVYzJZblF2VVcxbg0KY1hCb1p6Wk9Da1ZOYzBKak5qQnRRbFZCWTFwNU1tbzFWR2hqYkVGeVowY3ZkV2xGUzJzdlVYbzJSa3R6VWxSWE5XZFpURlZpWnpkdg0KV2t0ck16ZG9XbGd6TWdwTU5HdHpWVWhLY2xKSVVteFNiRGh3UXpWVVVWTk9SbVJtWmpGWmNGQnJkR1owZUZKT1RYZGxNalZxWkdReg0KT0VWTU9XZDNWM0IxVkc0MGVHNEtVUzlWZGxaeVFXdGhVMFY0U25wWGIwdDBSRlUwVXpCNVZHb3hjVlJaYVhSUU5GUllNa0pFY1ZaSQ0KWlhKMlNrRklhMUIyUzNvNWJteG1VbXgwQ2s5NlRHOVpjbXRzYTFSa1ptWlhhQzg0VGs1MVMwTndXWE5STWxSbGFVaHJOVzlOTVc1WA0KUm1oVFdXUTNWR1Y0UXpWWGRrRlFlRTVoY1V0RWFnbzRjRGxEUVZkMFVVMXpVakZPYTJ3M1RsTjZTbk5tVDFCT1lrUnJWSG8zYkdGMQ0KVlVkbVNHczRVa1p3YmsxRldFTTFkRmhOUVdkQlVEQXllRVVLV1VSTlVWaFNhMFZwZVhKT2VrVjRSRTFZVTA5bEt6SllkR2RSTVVNMA0KWmpGc1p6STFiR295U0RFdmVUVjZUbGh3V1hwWlpWcERTMmRXVTNwRENtWk5URFJWTTBGTU1VWTNOREF5VDNVeE1VRkRlRlZyUTJWbQ0KV1VaaWFUSTVaVlpvZG1aMEsyZzNVM1o0V1U5U1VYUnVhRVIzYzBabVFrSm5RZ3BEUVVGVVFsRktXaXMyYkd0RFVrTjBja05sWTJ4Ug0KYTNsQ2QwbGlSRUZCUVhWaVoxQXZhbEZQVFRGbWFsWnJWRk5MV2sxcmQzcDNLM2hTYjNVS1MxcG9XRVJHVEZCbGJITXpTRzVqWkhWUA0KUjNKMVNYTlRlVFpoTUdwdmJTdFlaMDVXUTBwdk1GWnhZbE5UUTA5eE1sTlJhREZoZDJZMmVGTldDbFZKVldneWFWVkJja1Z1WmtOMA0KUkdSUmVtcHhOeXRMUjJoeGVTOWpPSE42TTFGRk1YWkpjekpRWVRoNVJWZHFXVkJWYjNaQk56RkRNM2xwU1FwWWFYbFBUblpWVm1jeg0KTTIxQ1dYaFVNVk5tU2l0bFdVMUhiamwyUkdGaVkySk5jVTlLYUVadldDOXhVbVkxWmtJeWEweFVjM2wzWms1cWVFOEtSRlk0U3pneg0KT1dwTFNVUmpPVEYxVVZSTU0wWnRZVTVXV20xMVEwMDVVME5ZZUROVVdsZFhRMVIwWW5wQmRUZDJLM2xYUVUwM1kyZ3JaRXBzQ2pBdg0KVTFsbGJFNXZOSEIxVkdoS1VsVlVVa1pKWkN0U1RsTTVhSFZzT0RCWVZHbGhlRVl5TkVsU1pYaEVkbTl1Y0VOTmExVnVTRGx4VWxCeQ0KZWdwUldWTTViM05LZVdKUVoyOVpRbEY0VTBKd01HWnRXVGhLWkRaNGRrcHljMlJKYzNCTVNIVmllbXMyU1c1bVJXaEhaR1Z3TjNVeA0KYUdaWEwwa0tVMDFVY1hwUGVsRlJRMGRzYkZFdllVdHlUVkJNZG5BNU9VUkxaRUYzWm5GWVRrUktOR04wVFZsNlJtNVZOV2t6UzJacw0KU3l0VlpISnRaV3RCQ20xa1NsZE5lWGhYVEU4eVZuVkdLM0JyT1RBNFRGSnNiWFV6WjFSVFJWbHpaMEZhZFZsT05EUlZOSFpNVFVWRw0KTkdJdlJFeFNkVzVwTkhObVFnb3JaakYzZW0xVmRtUmpkV28xVmtoUlNUTjNNSFFyVUhsSWFrcFZka1ZxVGxWRFNsRmFRM2cyYVdSbQ0KVERSclJGSTJjMUJaYlVjeksyVmxlbEVLVDJkV1lYRk9kMDVxYkZRNGMyZHNWMmxyWVVkQ09Ya3dNMFZvUzJOVVNFbHhhbWczUzNKWA0KU2xWeFR6TlZZMmxVYUVaRlQyMHhhRVZUUVVJckNtSjNkbVZZZDFNMFNHRnlXRzVtYlhWVGNYWXJOR05tVEVnMk1raFRPVnBUWTNKWg0KYVRsR1dVSnNhM1JDYkZNNVdFZFVSazFKWWpjM2RrYzRVd29OQ2oxR01EWjREUW90TFMwdExVVk9SQ0JRUjFBZ1VGSkpWa0ZVUlNCTA0KUlZrZ1FreFBRMHN0TFMwdExRMEsNCi0tLS0tLXNpbmlrYWVsLT89XzEtMTUwOTY2NTE4Mjg1ODAuMzU0NzQzOTQxNDMzOTE3NS0tDQo=", "historyId": "1214302", diff --git a/test/source/mock/google/exported-messages/message-export-15f84afa553d8a83.json b/test/source/mock/google/exported-messages/message-export-15f84afa553d8a83.json index 3e9ed1c1eae..2c96328f036 100644 --- a/test/source/mock/google/exported-messages/message-export-15f84afa553d8a83.json +++ b/test/source/mock/google/exported-messages/message-export-15f84afa553d8a83.json @@ -4,7 +4,7 @@ "id": "15f84afa553d8a83", "threadId": "15f84afa553d8a83", "labelIds": ["Label_1", "STARRED", "SENT", "INBOX"], - "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your pass phrase). You can safely leave it in your inbox or archive it. The key below", + "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your passphrase). You can safely leave it in your inbox or archive it. The key below", "payload": { "partId": "", "mimeType": "multipart/mixed", @@ -101,7 +101,7 @@ "id": "15f84afa553d8a83", "threadId": "15f84afa553d8a83", "labelIds": ["Label_1", "STARRED", "SENT", "INBOX"], - "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your pass phrase). You can safely leave it in your inbox or archive it. The key below", + "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your passphrase). You can safely leave it in your inbox or archive it. The key below", "sizeEstimate": 11111, "raw": "UmVjZWl2ZWQ6IGZyb20gNzE3Mjg0NzMwMjQ0DQoJbmFtZWQgdW5rbm93bg0KCWJ5IGdtYWlsYXBpLmdvb2dsZS5jb20NCgl3aXRoIEhUVFBSRVNUOw0KCUZyaSwgMyBOb3YgMjAxNyAxODo0MDoyNCAtMDcwMA0KQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7DQogYm91bmRhcnk9Ii0tLS1zaW5pa2FlbC0_PV8xLTE1MDk3NTk2MjMwNjQwLjg5MzY4Mzc3MDQ3NDc0ODciDQpGcm9tOiBmbG93Y3J5cHQuY29tcGF0aWJpbGl0eUBnbWFpbC5jb20NClRvOiBmbG93Y3J5cHQuY29tcGF0aWJpbGl0eUBnbWFpbC5jb20NClN1YmplY3Q6IFlvdXIgRmxvd0NyeXB0IEJhY2t1cA0KRGF0ZTogRnJpLCAzIE5vdiAyMDE3IDE4OjQwOjI0IC0wNzAwDQpNZXNzYWdlLUlkOiA8Q0FLYnVMVHJPSkN0bjhPZ3FTazlheCtBcGszVEE2a0JyNGRFSmI2RDdVUlBtSmRpOVBnQG1haWwuZ21haWwuY29tPg0KTUlNRS1WZXJzaW9uOiAxLjANCg0KLS0tLS0tc2luaWthZWwtPz1fMS0xNTA5NzU5NjIzMDY0MC44OTM2ODM3NzA0NzQ3NDg3DQpDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD11dGYtOA0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQ0KDQo8IS0tIEJ1c2luZXNzIFNvdXJjZSBMaWNlbnNlIDEuMCA9QzI9QTkgMjAxNi0yMDE3IEZsb3dDcnlwdCBMaW1pdGVkLiBVc2UgPQ0KbGltaXRhdGlvbnMgYXBwbHkuIENvbnRhY3QgaHVtYW5AZmxvd2NyeXB0LmNvbSAtLT4NCg0KPGRpdiBkaXI9M0QibHRyIj4NCiAgPGRpdiBzdHlsZT0zRCJmb250LXNpemU6MTIuOHB4Ij5UaGlzIGVtYWlsIGNvbnRhaW5zIGEga2V5IGJhY2t1cC4gSXQgd2lsbD0NCiBoZWxwIHlvdSBhY2Nlc3MgeW91ciBlbmNyeXB0ZWQgbWVzc2FnZXMgZnJvbSBvdGhlciBjb21wdXRlcnMgKGFsb25nIHdpdGggPQ0KeW91ciBwYXNzIHBocmFzZSkuIFlvdSBjYW4gc2FmZWx5IGxlYXZlIGl0IGluIHlvdXIgaW5ib3ggb3IgYXJjaGl2ZSBpdC49DQo8L2Rpdj4NCiAgPGJyPg0KICA8ZGl2IHN0eWxlPTNEImZvbnQtc2l6ZToxMi44cHgiPlRoZSBrZXkgYmVsb3cgaXMgcHJvdGVjdGVkIHdpdGggcGFzcyA9DQpwaHJhc2UgdGhhdCBvbmx5IHlvdSBrbm93LiBZb3Ugc2hvdWxkIG1ha2Ugc3VyZSB0byBub3RlIHlvdXIgcGFzcyBwaHJhc2UgPQ0KZG93bi48L2Rpdj4NCiAgPGJyPg0KICA8ZGl2IHN0eWxlPTNEImZvbnQtc2l6ZToxMi44cHg7Ij4NCiAgICA8c3BhbiBzdHlsZT0zRCJjb2xvcjogcmVkOyI-RE8gTk9UIERFTEVURSBUSElTIEVNQUlMLjwvc3Bhbj4gV3JpdGUgbWUgPQ0KYXQgaHVtYW5AZmxvd2NyeXB0LmNvbSBzbyB0aGF0IEkgY2FuIGhlbHAuIEkgcmVzcG9uZCB2ZXJ5IHByb21wdGx5Lg0KICA8L2Rpdj4NCjwvZGl2Pg0KLS0tLS0tc2luaWthZWwtPz1fMS0xNTA5NzU5NjIzMDY0MC44OTM2ODM3NzA0NzQ3NDg3DQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47DQogbmFtZT1jcnlwdHVwLWJhY2t1cC1mbG93Y3J5cHRjb21wYXRpYmlsaXR5Z21haWxjb20ua2V5DQpDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50Ow0KIGZpbGVuYW1lPWNyeXB0dXAtYmFja3VwLWZsb3djcnlwdGNvbXBhdGliaWxpdHlnbWFpbGNvbS5rZXkNClgtQXR0YWNobWVudC1JZDogZl9OV0t4ekFjYUJLDQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQNCg0KTFMwdExTMUNSVWRKVGlCUVIxQWdVRkpKVmtGVVJTQkxSVmtnUWt4UFEwc3RMUzB0TFEwS1ZtVnljMmx2YmpvZ1JteHZkME55ZVhCMA0KSURVdU1DNDBJRWR0WVdsc0lFVnVZM0o1Y0hScGIyNGdabXh2ZDJOeWVYQjBMbU52YlEwS1EyOXRiV1Z1ZERvZ1UyVmhiV3hsYzNOcw0KZVNCelpXNWtMQ0J5WldObGFYWmxJR0Z1WkNCelpXRnlZMmdnWlc1amNubHdkR1ZrSUdWdFlXbHNEUW9OQ25oallVZENSbTQ1UjJ4Sg0KUWtWQlEybEJWVGg1YUhsdFRuRXliRlI0UlVjeFQxVXdXR3RoT1hSVlNqUkJOM2R6UkdoSVRtNTFhSGg2YWxaUU9BcFVSRzV3VjJJcg0KYTFFM2NFUm5halJUUldwWVZqVk9RVXRNVXpsSlUxSnphWHA0UlhaM2J6aElWM1ZzVERCcmJXMXNZVVZUWkRWdlRuZGpNeXNLVHpSRA0KZUZnelRUbHZUa1JoUlVoWWJYTndhRmQ1ZGtKMlZIaGtXbGN6WkRWSk9XUlVOSFpxU2k5d04wRjZibGs1T1RWaVMyaE1RMHMzUzNsdg0KQ2tvMlRHVXJTRGRKT0VWWVZXWk9Ra2xyU3pkQlZXMW9kSHBoU0RKVmJHaG1RblJLYkRNclZrczNiVUZxWlRaM1ozWm1OR0o2SzNoeg0KZFZvdmN3cEhiRkZCYUZGcWNsSmhlQzk2YWxSNFUwaGtSV3BDU2l0c01tZEpka051YTFabE5ta3ZRbU5xY1V4UlZYWklTbk5uZW1GTA0KY2lzelVta3lVWE1LUVdwV1RETk5kSE5PZVZWb1lUSlJTVzFyVjFOUU5qSktNamhCUjFObmF6VTFOblprT1VOUFVEZzVaSGhqYldoWQ0KYkcxbFZFMDBNRUV5T1VkakNuaE9lbTlDVlVSS2VHSllMeTluYXpGV1ZsaG9UMEU1TDBKck5rcEJVelJVSzIwelNXWjBTek5SU2s1RA0KTDNrclUyNXhSRlk1ZUhkQmJEUkxUUW80Y1VKM1pWVjBSa293V0RKRE5FUmlRemxGU1ZBNVJqSlRlVEpxVjJKTk9XTjFZVlJFTWpGdA0KYWxGa1QxVTFZMkpYYTBwV05EQklNa1puUlVnS1kySkxRamtyUjJ4TmJuUm5LM1JRVlVac2NrbEtVRk5MYUVSVlFrTjViVEo2VldKcg0KVjJ0Nk5qQTJjVFZYTlhad1UxVlBkU3N6UjJsV01saEdDbVZIZG5ZNVlXWnVUMjl2TTNKTWFsWlhORlZwYldORlJFeHllR2xGWkdOMA0KSzI5RVZFa3dXRkpPVkV4SlZVWjBXbk5yWkVWVlpUZHdVRzl4VndvMEsxUlFlamxIZUZWc1psQTVRM05wTVhCNWJHZElTR05zYmtVMw0KY3k5Q0sxb3JkR3BWVDNKb1NXRjVkelpxTUdSWmRHd3dla0pvVFdVeE5Fb0tkelV6Wms4dlFVdGxOR2gwYUZaWlQwZ3hiMm8yZWxOSw0KUzJWRmQwcFpaVGxHT0c5bWMxRkJVa0ZSUVVJdloydEVRMUJ2Vld4VU5FNW1lVGRuQ2xsUGRqVk9Oa1I2YW5KRWFHVkxOSGhEVEU1MA0KTDNFMmMyVm5Nbk5NV25SeFdVbGpTVlV2TlVGT2VHdGthRVZNYjNWREwyNHdPV1JQUWs1dFl3cFJjR2xUU1c1RFMxbEhibEJGU0hGeA0KUW1GalJrdEZkMXBKZUVncmVWVkJlalYzY2s1UVN6aElNSFprWm1oSFRHYzNXbGw2Y0ZWQ05rUldTbUVLU0c4eWIwNU5kVGxWYVZsbg0KTDBJM1pEUXlTMkp6YWtwMVZIRkVRbk12VFVOUmJuWlJjRFUzVFV4SU9EbFVPRUZ2VFRFclF6SnpVRnBDUWxCRENqVktSVFE0VGxKcw0KYTJSSWFqUlBUSFZzZEVGTFFUbFJOSGRJWkU0NWEzQnVaVkUzYTB0WEswOUZSVzQyZWpZMWRIWTJZVVpVUWpnNFEycGpaQXBMYTNaRQ0KVkZkdVIyOHlhemhFTURsSFlWSjNTMlZEVlROeVVFZEZaMUkyWTB4TFZsRjBaVms0ZGs0MWRIVmpXbWhpTVhWUFVWRlFLM1p6U3pBSw0KUWpGMFdrdFVWVVJZU2taSmNtWkNRVlUyTjFsTmQwZGtTekUyUWxOd04xTk1Ubmh5VW1Od2VFSnlRbEI2UmpCdmJDOUdLMjg0ZDA5UQ0KZVVVMkNqUXdUakZMTUZkRmVFMWtXVkZxZWtkVWFHRnFkekpuU1ZJeVEzbE5ka3hEUmt0dmFtMTBhbTF3TW5BNU0ydDZkbXRITkcxMQ0KYzFaaGVWRlNWUXBaV1hObFEzbFFiR1JEVlhweFFYcGtPWGRSZDFCWk4xbHROWFJ3VmpkeGNWSllaazV5YTNsc1JVSlZOazUzUmxneA0KUmpaaWVuQllXbVpGZUhVS0x6RnBhWE5aUjJWTVRsVnhNMGd4Ymt0d2NWVmtSM2RtTUhGeE5VUjFSVFJsUzJkR1ZuaENOekZNVW5SWQ0KYWk5aE9XMDBRbGt4ZDJkVFpUUkRDbHBXUzNod1JFTTFRa3hQU2tOc1VYazJPRFJyUzJSbFZuQldhVmhVYjNadU5FOW9ZbWxUWjFSNg0KYTFJd1JHaGtPVlJQYVhkYWJHNXVTWHAxUXdvck5YcG9hMk5tY0c1eGRWQlNibU54WmxKMlNtOXlVR3BJYkd0RlVXUjZjM2RvTmxwdw0KTnpkRlRTczNNVVZDVmxobVEyWkJSRmhhYXpSdE1HMEtPRmhQVVRGWE1qTlRSVGx4V1ZveFNYTXJVR2RCY2tOQlJVRjNVRVZ3SzI1bw0KVVhsR1QyUjJVaTl4TldkM0wxQndPVE5pYzJSWVEwWk1iRTVGQ2xoYVNVdzFUbXRXTTNsd1dtUk1XRVZ1UlZkamJFZEhOMkkyTkRGcg0KUjBOTVRta3hWRUV2Ulc1VWFISXdTazF5YkVWbldtcG5aa1pFY25RelZncHNlV1pGWkZWelUxSlNUa1ptUjFod01WUTNWbnBXZW5BMw0KUVdGRFV6aDJkbTVxTTNWb0wxVmxaV3RYUmtNeldWZFJlaXMwVEZncmVVTTRlbFlLTDFrMk1qRjNRbXRhVlZac2JFdFlSVU5FZW10SQ0KV0V0b1FXRTVkMUp1YjI0MVJqUllPSGQ1ZVdWT2J6VXJkSFZsZW5CdlFuRlFhM2RrVlRCeUNsQm5OblZtTDBoNGRXdGtOWE5aUzFCVg0KUVd4Sk5FMVJhWG94VFRCa1ZGaFRVa3BDZUUxNWRHOHphak42VUdJdmNuRk5jM04wWVM5b1MyOWFjUXBMUkd0cWVYbEZSVXBSYzBWQw0KTUVoRWJVdERVWEpEVWt0WU9XTndTbTFHVDBvMVkySnBORXR2U1dkR1FVaFplSEUxU210UFZGQjRkV0ZxZUZZS09GRkVNbEp1YTJ4VA0KU2tsWVdtNHZjU3RTYTBFME5VdFlZWFF4WTAxVWJWUmliVUpoWTI1TFpVcGFNbUZxUVhOb0wzQlhUa3czVlhSU1NFNTFDa3B3WlVaWA0KVVZBMWJIbERSMXBzTDBNeGVVRjRVa1Y0VTNGT1IyUnJhaXR2VldWSmF6QmhkbEJJVFZJNWRsTnVkM1ZoYlN0ME4za3liRnA0ZGdwaA0KYmpsQmVHTnZOelZ5Umsxek5taEhlRVZvVFZKb1MyVnNkVmRqWW5kWGFVRTFOVkZKWjFWUVV6QnhRMDF6WTBVMU5Fc3pUbmMzVVhkdw0KV2t3S09WVnlVMWRHVkhoS1VVVlZibFF5VmtwSFJrNTJOamxZV1VOaFRFbFhjMmRyTjJoTlRFbFRObTlRTmpKVVZUQnZOR1JPWjJsbg0KTkVrelRGVXZDbGRxUmtReU5EUXJRakJyU0ZKeU9XRmtUQzlWTjNaWWJtSjBWRkl5YjBGNlNqSTRNVFl2T1RoR2JHUnBNSFpZU1c5RA0KYlVWSkx6TXdRbkUwTkFwWE5scFdhVkV5VFVablRtWXdlRGw0Ym1JNVZFVnBOMVEzUld4SFpWcDZTbE5JU2tWSVF6VlpjVkpMU2xsaw0KZFhaRlUyOXBLMHRwYjNneWRITUtiMU5xVEhOeVZtZ3JhWFJqWTFaUk5FMUlTbUZYTTJwa01IbHFXbWMyZDFkTlVGWnJaa016Ym5wcQ0KVm5OMlRuWlhiVFZsV0dOaVUyZGhhblI0Q2xjdlNsWXhWMlV2ZVd0dE9HRXZZVFl6Wm1GeVQwWTFOazF1YTFkeVNHZDZNRWhHWlRsaQ0KU1V4UWNVbzFaa2Q2U2xJdldtWnRXbFpUT1hCa2FRbzVhblFyVm0xU1JVWnhhR2cxUTFWa2FVY3JVSGh4WlZkc1VHTXJTVVpxWjBGRw0KTm1JdlJFeG9SRWMxVDIwM1NtbEVkVnBoZEROdlkybFdlRm9LUXpaclZXbDBkSFpyVmtOb2NtMWxVbXAwYURKMmRtSldWVkp0YWxCbA0KWVM5NE1UTlZOVFZRVEc5WGVHdHBWbFV6ZGtRM0wwaDJMM05MYUZOSkNrMUpNMlJtVmpSd2ExWjJUMWxWUlhGVU9VSXdZelJVUjFSTA0KVTFCa1pqUmxUSGRpWWtKUGRVeERVVzlYYVVWc1RUaHVNMWhhTUcxaFZsZHJSUXBNZGtkcmRFcEtOVzh5WWtneVoxSmhVR3hUVHpRNA0KZVU1bVNsTllhMVV5VkhaRlUzQkNWRFJyVUhob2NDOURlV1V4TTAxc1pGUjVlRms1T1hVS1lVeGFVemxTWjFGbU0xSm5hV3RaZHpFcg0KVmxsVVZIZDZTbkI2VGs4d1duTmlNMlJFWTI1c2QyUkRRa1JpTWpGM1dWaFNjRmx0YkhOaFdGSTFDa2xFZUcxaVJ6a3pXVE5LTldOSQ0KVVhWWk1qbDBZMGRHTUdGWFNuQmlSMnd3WlZWQ2JtSlhSbkJpUXpWcVlqSXdLM2R6UmpGQ1FrRkNRMEZCY0FwQ1VVcGFMMUp3V0VKbg0KYzBwQ2QyZEVRV2RyVVdZNU5XOVdWV2wxY0RSblJVWlJaMHRCWjAxWFFXZEZRMGRSUlVOSGQwMURTR2RGUVVGSlRUQUtSQzl2UTNGSw0KZDJOTU1WRlJRVVIwVTJreFkySk9jMjB3Vm1kMmVUTnFkVEYzUkVvNFlVdDBRbTByVERSdGIxbG5aMDVuWmpKaWFtaGhORmQzQ25KYQ0KZVdsbWVHeERSRTkwUlUxSFJFSnRRMngxZUV0RlRIWm9iazR5U2xOa1JTOUxORmxUWkRkNFNtOHlPVmhETTJwWGRFSnVSM1pRZUM5VA0KWWdwQ1ZtMXlkakJMVDAxTFRXVTFaVzQyU2xWMWFDOVNjekJPYVhoTGVWb3ZTMU56T1ROWGMxRnBUbTlIVW1aUGVVUjVVakZtYjJndg0KV1c4NWNsZ0taM0ppVUZoemNFMUNhbFpPVDNNNWFtOUtVekEyUzBweU5FSm5jWFkzZGxWT1MyYzFZa1phTldkV1JTczBWVkZsTkZWNQ0KY1Rabk0yOW1NWFUxQ201MU1rVkRTVGcyV1RCelYyRjViV3BJZW5ka1pXWXJZV1JUT1RWMFRXRjNVbFZyYXpScGEzUlVXbTlCVFdOTA0KSzI0MVNUZE1UbWhWVVRkcWNncDFOVkIzV0doSlNHZEZWMEl3YVRsek4zbFZUSHA0VFhsb2RVRTJaM056YUdwYVdXMU1UalE0ZDI5Sg0KTHpsM0wxWjRja0ZNZEc0NVYxZFlOMlVLT1U1Q09HODFkbEZIWjA5b1drZEhWVUZhYURVNWVXOUtZVEJ3YnpWSVEwaElVbnBRV2xoMQ0KWVdNdlpHaFplV1ZPYWs4d1ZISklTV0pNT0dFeENuWktTR0ptUVdKU1pGVm9WMk5VT0ZkQkszQkJaR1ZLWlU0eU1HODNiemh3ZUZSVg0KVDAxc01HeGljV28xYW5KWFIzUnNXVm8wUmtseVZFY3ZaUXBRYW1obFJuaHhVa1pSYlVsdE1XOVFTM2c0UlhseFMzTXZUMnBwZVhSTQ0KYmxkeWRVbHdSVEZOTml0M2ExQmhhamxJYW1WaU9WVkJVSE5YYkVjS1owMWpaa1k0ZFZCNVN6WnFjelZaYW04eVRYZE5MM0JQT1VKSg0KWVhocmF6ZDRiR3R0WkU1eU0xTkhPR1kzZUhsR1ZrY3lRemhVUW5sc1VqbE9DbU13WjJ0Rk1pdERPVkJYTTFvNFluUkZOWFo2VDJoMg0KT1hSSE5qVldOMjVETjJwUUwwUm5iWGg1TnpSb1NXeEhha0Z4YkZCSlJWaDFja1ZKU3dwd01rOXZUbmMzT0VkWmFqZHRlVlZuWnpCcw0KZWxsbE4xUnNZMlpIYUdkU1dpOVNjRk5CVWtGQk16bEZOazFEVEVKd2FtOWtSVFlyZDBweVpIa0taekZhUW1OV2FrMDRTMGg2Y0RGUg0KVUdwME1rbEhRV2RNUldWV2NqQmtaa1U0UjNRdldUWnZUamhuYm5Wb1pXeDJhRlJLV1hJdmRYQjBiazFKQ2pKak0yTm9TSGNyVnk5aw0KVFRSQ1YzZDJabUZ6V0hWTFptZGpXbE5zY1hWTVRVeDJZVFpHUlZaaFlYWjBkWEZ1Y1M5V1ZXSlFRbUZWYkhwdVFnbzBNemhpZWtOTA0KTTJkS2NWSkhaRklyWW5NelF5dFBjWEJtUjBSck5ERjFXRGx1YjJOMmRtNHZVamhpVkVSSVVsUkZWRkJ3ZVhkQ2NXOUNVRWtLTTJsTQ0KYm5KRlZ6RjRibEJSY2pKU1NsZE1TakZvUlVoRmRqVnhlVUYwZFdob1VFNTJUbTB5Y1ZScFRFZFpOekJHTTFaWlZIVTFTV3REYm5sNg0KQ2xRclJWSnJXbTVIV0ZoUFdWVkNjVWxvUnpOdU5GTXpWMlZrUVRGbFdVZzBRemhOVFVwbFZVdFpVMlJ4T1hrelVVNUhRamcwZW1Odw0KUTFkdFN3cFRaV3RZVFRBNE1sSmlZV1o2T0VSbVUwWlVlbTRyY1d0R1kzRm9SU3N6VlRseVNFbEtSVTVhY0ZsM1ZEVkNiazlLZWpZeg0KYjFwRE9FRmpiMjRLVW5Oc01rbGljVXh6UWxkRlJHZG1hamxvV2xwemNqVTRPR2xMUzBaUFdIRkNVak5zTTFoV0wyMDJNMmxEYVdOVA0KWTJwaWJUUTVVbEYwUXpsdUNrOTNkRk5MY0VKNGMzQTJTbUZpY21KTGMwZFVXV3ROV0ZKRGRFSlRlV1ZETUU1blRYbE5lR2RRTURKeg0KTTFCM1JFdGhaM1JKYTJRMlVTczNUQXBZUlV4TVJHaDJVa1ZUV2pGSWJrSnZUVFZ3TVdKeE5WbHZVWGR1ZDJacGQwaGhZMnh1YjNwaw0KYW5CUGVHaE1jSFpRUm05Q1dGSjFTV2RoVjNNS2VEUjRRMHhKU0VkTVJDczRUM0oxVW5oeWFHSmlVRWhNT0V4UVFuaFlaMVJvY1Zobg0KZERkT2NYSlZWMWhtVm1KSVlXTXpRVzVwVUV0WGJ6WjJDbVpRVkVSd05WTmpOa1pNUVU1SWRVcG9UMXBEYzNST2FVUkJWbnBpTlhWQg0KVTNOVlNtb3dRalJpZURCcFowb3JNR3hxVVdKRlZUVk1SVWhKYWdwbFNrMUJSVkZGUVVGbU5FcEJkMmxXV0ZodEwySkViblY2UjBFdw0KYWxsTVRXbHVaRVZ5WXl0dlprdE5hRU5DTmpCVVNXaE9OM2RGTXpkNFptWUtRazUxTm5KcVNVOWtWSEF3YVc1SmJHeFlRV1ZpY1VjMg0KU2sxcFMwY3dSMk0xVEhSeGVISjFlSE0zTUZKcmVIWnVNWEU0TVROeWRETkZUMk5wQ2pCaVJWazJVWFk0TDNGVGIycHphMlZoTVVOWQ0KWW1KamJHcGFVRkZyY21WeE9UZGxUM0JpZUhOSGRFOWpkRkZHUzBJNFFteGhaM1JXTWk5Q1ZncFJhMWRrVFRSalkyZG9XRlIxTHpWMg0KU1hKd1VYWjZObEJDUlU4elMzSnhNMUY2WTFOdmVDODROeXRYYnl0alNFMUtaM0poUjJFeGJuTTRNbklLWlN0dE9EWk9UVU0wTjJGaQ0KVm5JNEswdFVMM1JUVUVoT1NWbHNURmRuVTBwSmJEa3piVVJKYTI5VlYxVkZaQzlCUkRkU2MwdDZaa3BMYWt0WENtZzVUMGx5Y3pKMQ0KVjA4MVpHZFhOWFpyZUVSMVptSk5ZME5KU2s5aVVuUnlNU3R6WVRoVVozWndjVFV3TkdGbGFtMWxhV2xFSzA5NGFTOURkd3BhYlVsSw0KTlc5bVQxSkVTMWw0TkRSTVluRXdXSGxDSzFsU1FtdG1WQ3QzTWk5WU5ITlRiVWxzUW1GNk1scFdPRzFTV1VkbFQyY3JiVTkwYm5NSw0KVTFoWVFrZFBSazUxVjI1VGREWkRSREl3UTNGcVZWSnpRMnRSU0VaaVFuWk5SMnA0TVRKRVVWUlJla3cwVUd0a1JIQklkWE5yV1ZCSQ0KTmt0M0NrdGpla0l3TlhVd2EwTkdVVWxPV1N0aGFuVklZbVZqY0ZaNU0xRjNObk5yVEU5QlV6SjFVa2h4YzNkS1EyZDBWM0JpYTBSVA0KVFdaU1ZVcFhaUXA2T0d4VGFEWXdWalZCTDFwUVpVMWlMMFkyTDA4MFpWQnhhM1pZWW5KSksyRnJMeXREY21zNWJrYzJSMVJKYldaTw0KV2tKSmJEQm5kRzVwZUc4S1VWRjVPVFpXTWpaMFQyNVdUMEZvZVd0U1NXbEtVMGxqVmpSRk1rMVFLM1pyYlRkRFlYUk1iVFJUUVU1UA0KYVRseE5VeGpjRmRrVkZKa2RYWXdDbTB3T1RCaWQwcG5jMmRPZURSbWVFZzJNR2xVV21aVksxSjJlWFYwYlVvMU56UnllbmczWXk4cg0KSzI5MWQyeDBSVEZuWkROSlltUXpNSGR4U3dwRWFUUTFZa1JQYnpWeUwycHBNVlZOY1RKdGRuZHRVWFZrVFRSa1pVaG9LMUpyWm10dg0KTm1kUlJVOUdPVFZ6WVdnNU9WWkZjMFk1WWpjNVFuQUtXbTF3WkVoTlpVdHVhM0p1TVVGaVZtMXBZMlZRVGpNcmJsTnpZakZDU21GSg0KUkhaWU9UZFlja2xLUmpsNk4wVldRVFZZTmtWbU1FRmtUR2xMQ25CVk5HTXhhMW93VTJ0aFVWQm9UR3d6YjAxNVlXaERaWG8wZG5CNg0KVkZvd2F6RTNiVmQ1UjFSWE9WZG5PRk5PZFdaMlVXaGxjRVJJWm5aRWJRcDBTemxxZERsWWRtRTJlRUZCVm1NMVFrVlBSMVkwVm5OWg0KWlZSamNub3dhM3BXUlhFNUwwUjZWRUpIU0hSd1JVcDZaREZKVG5GbmFuRXlVbmtLYzJOSFlrTmxOa2N4UTJaTE9VRk1WVVZKYzNCTw0KZUhCbEwwVlRTV3BVZUhjMWNFRXdNMHhqV0U4eVRVRmhOekV2VkZORU9FUlVjMmxQVm1wTENteHFhRTlHTVdnMFZVdzNNR05UTnpoMA0KZWxwS05rdDRSVWxIV2xKcWRscFJkeXRhWkc5V2JWTjNNRzQwY1hCRFRrdHlNMmR2WVVaNFVuTkdNQXBLTkRsaUwzSmllWFZhTTFveA0KV0c1elpEbHFlWFp2ZHpOaE5GUmtjbEJsWkhkeU1qQTRZblpsSzBOUlVHMUNOMk41TjIxbGFtOHJaR0pLYVVJS01uY3hNVlp6VW5abg0KUWtSRE1qZEtObWx2VG1Fd2NTOWhZeTluWkd4b05XUmFWak5uVjJRelExWXZhWHBLV1RGUmMwRllNREUwVEVaNk4zaEhDbFZKV2xCWQ0KTldNd04wZDJVVk5ZTkZGbFIxTnVNWGR0VEVkc1EyRTJTRGhQVVdKU2FYbzJOMGxtUWpkUE1GRkJjbGRYYVhaVFVrVldWRFpsTkFwaQ0KTVd4a1JsTnFORVZEYTJFeU5rOW5Sa3hUVGxCaFpteE5SMGRrUkRad1lrSnBRakIxZGs1cFVrVnVSRnBMY1Zwb2JsVktRekpFWkVOUw0KVG5BS1NrZFBLMjVwSzB0eldFaHlVbmxCZW1WNVZVWklVVUZqZEZOSVJuaFlkMlJsUW5oaVVHWk5TM1IwYjFsemFVRXZjRFIyZEZOeA0KTVZsTlMyOVZDbmhzUlZac1VURkljM2hRYUdod1JrMWpZVVJQU2tWVmRGWjVSbXhrVUZsM1VuZGxia1pqVUdSTGFGZGFNRzF1T1UxQw0KYTNCdFQxZFFOR3N5U3dweGRIazNURXR0YzB0MmNqazJVbVJGYWt4MVZuSllWbnBPZVV4TmMwUlFhRFZtYzJ4SWRYTXlZV3hYYW5reA0KTlRsa2RsZHBja3RFYlVOVFNYUUtjV1ZPU0dFMVdEVmhlREZ3ZDJSUU5YUkRlRTFRZDBFeFdVUjZkVTV0UzI5d1QyWnhaRkZ0U21OUg0KZFhGUVR5dHBNekpWWVhkUWNEWlVaR3QyQ2xJMlIwVTJiekozYkVscVpGYzJZME42VVhVMVRYbHdTMjl3YmtGa1l6TmtOVm8yV1hwTg0KTUhwT1kyeHlNVGRQTURGMmJrazFhME5FZFV4U2FncGxRVUp2VDB0V1ZITkpjalZ3VUZKNk1tZEdZV1oyVTA5MUwzVjFSMU4zVlRsUw0KYjJoTGJuVXpTa0ZISzI1MVYxY3lVell6TXpSWkwxSkRTVEVLTms5cFMwWk5kVk12Wlc1NllYTlNUVEl3WlV4U2JrdDFOVEpJYlVOVw0KVDFaTlJIZHBOMlZyTld0UEwwVXdla3hRVHpJMmVHSm1LemxhTmxOUkNsSldVRkpwVVdVMllqUXpTVXRyVVRaWlpHdEhSVzVXYTFSMw0KT1hOUVl6Wm5hSGQ1WkV0b1JYbGlOMUZYWWl0S1drdHRNVVIzYzBabVFrSm5RZ3BEUVVGVVFsRktXaTlTY0ZwRFVrSXZNMjFvVmxOTA0KTm01cFFVbGlSRUZCUVU1T2ExQXJkMWgzYzBVMGNHcG5ZWFUxWWt0TGNGUXhTVTFOVDJnS1RtSnROVEpUVlRGYWJrMXhPV3BNWlhsQw0KU1d0TlZYbDBObVY1YzJRdlIxWk5ObEZQZDBoVVkydGxTREZ1Yld4emRtRmlZbTlTYUZJck1HczJDbFJITkVKaWVpOW5kVU5wY0RacQ0KYnpaeE4ySXpWVEZLVjBoVUx6SkRUa0UyTmtrclQyOHZZMGxEZEhwRVFVVTNObVF5Yml0NVlUaFJjazVJVmdwd1ZsZ3dObmg1WldwaA0KUWpBNWJXaENjbHBxWmxWWmRXRnJUMGsxVTBKMWIxbGFaR1ZRWVZCMlJHeHVWRVF6WTNReFZWWTNRVkJpSzNsM2RFUUtNM2xxVFdVNQ0KTWs1TlNqTkZOMmt6TkZsSVVFZHRWRkJNVm05NmFUVXdSalo0TlhsSU9GQnJVbE5tYkdsdmQydFhNMVpsTldvelVHUkZkRlphQ2tObg0KZFhKV1dsSlRaMmhqVDJ0SGVGRjNha3RFS3pOcFJITm9UU3M1TlZrelRXaEdlak5NVkhCeldVWlVlazFKVkdweFkwUkNWbkV2ZHpSUA0KTVFwc2QwNUZkbFpxY0VaT2NEaG9aamw2WW5CVldIb3djR05UUW5WT05rVTVhVlpFVXpocU9FZDZaWEF4U1ZseVFqRm1MelU1YmtGVQ0KUW1FNGRYY0tkRXBVU1V4S09FMTJNSGQ2UW1Wc2VqZHpXbWRzVVU1YWVETTJTMUpxUXk5SWR6SmhaWEpWVlVaUmVrWnFTVE5hWVc4dg0KTkRsSVNteEZiVXhuQ2pkTE5qVjBWVkZUVFRGVWVqbEplVzAwTlZscVRIQnRTWHBxT1hrMlV6UnJXa1JhY1Zkd1dURlNjVlJzY2xCeA0KVEdOblNUWkhUWGQzZEZZelJRcDBhVkZHYTAwemRXbzBZakZ2UlVKdGVVNXZTbk5pVFRWamNFa3lXbkF3WjJjNVpGUnhaRXh2VVdaSg0KTkhCUmJqazBUVlZhVGl0a00ydGhVbUVLVlhKMUwzTm1LMUZwY2t3d1lVTXZVSEZRSzNnMmNXbFJNM1JtYVdVMWVuWkZOVTgxZG5CWg0KYWxkM01VWkNORGhwTjBSaE5tSTFhVzVZYVdOSENsUnliMnBQTms5bEwwSnlNWFJZVUdWbE5XVkZhak5TV1UxMVpUZDNOVVJKUWpjNA0KTTJjckx6SnNaVGRWWjJGRVp6Tklla3BuUlhVMGVUVjROZ29OQ2owclFUQkpEUW90TFMwdExVVk9SQ0JRUjFBZ1VGSkpWa0ZVUlNCTA0KUlZrZ1FreFBRMHN0TFMwdExRMEsNCi0tLS0tLXNpbmlrYWVsLT89XzEtMTUwOTc1OTYyMzA2NDAuODkzNjgzNzcwNDc0NzQ4Ny0tDQo=", "historyId": "1214295", diff --git a/test/source/mock/google/exported-messages/message-export-161e0ddd8b234e67.json b/test/source/mock/google/exported-messages/message-export-161e0ddd8b234e67.json index fea83a087c7..bc5d8e3a483 100644 --- a/test/source/mock/google/exported-messages/message-export-161e0ddd8b234e67.json +++ b/test/source/mock/google/exported-messages/message-export-161e0ddd8b234e67.json @@ -4,7 +4,7 @@ "id": "161e0ddd8b234e67", "threadId": "161e0ddd8b234e67", "labelIds": ["Label_1", "STARRED", "SENT", "INBOX"], - "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your pass phrase). You can safely leave it in your inbox or archive it. The key below", + "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your passphrase). You can safely leave it in your inbox or archive it. The key below", "payload": { "partId": "", "mimeType": "multipart/mixed", @@ -101,7 +101,7 @@ "id": "161e0ddd8b234e67", "threadId": "161e0ddd8b234e67", "labelIds": ["Label_1", "STARRED", "SENT", "INBOX"], - "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your pass phrase). You can safely leave it in your inbox or archive it. The key below", + "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your passphrase). You can safely leave it in your inbox or archive it. The key below", "sizeEstimate": 11083, "raw": "UmVjZWl2ZWQ6IGZyb20gNzE3Mjg0NzMwMjQ0DQoJbmFtZWQgdW5rbm93bg0KCWJ5IGdtYWlsYXBpLmdvb2dsZS5jb20NCgl3aXRoIEhUVFBSRVNUOw0KCVRodSwgMSBNYXIgMjAxOCAwMToyMTozMSAtMDgwMA0KQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7DQogYm91bmRhcnk9Ii0tLS1zaW5pa2FlbC0_PV8xLTE1MTk4OTYwODcxNTYwLjA4OTIyMjM5ODA4MzcwNDU4Ig0KRnJvbTogZmxvd2NyeXB0LmNvbXBhdGliaWxpdHlAZ21haWwuY29tDQpUbzogZmxvd2NyeXB0LmNvbXBhdGliaWxpdHlAZ21haWwuY29tDQpTdWJqZWN0OiBZb3VyIEZsb3dDcnlwdCBCYWNrdXANCkRhdGU6IFRodSwgMSBNYXIgMjAxOCAwMToyMTozMSAtMDgwMA0KTWVzc2FnZS1JZDogPENBS2J1TFRyd3YtaFFHUGNqRm5BNUZBcGFobzZndndfUncwY1FtT2N3djlGbUttYis0Z0BtYWlsLmdtYWlsLmNvbT4NCk1JTUUtVmVyc2lvbjogMS4wDQoNCi0tLS0tLXNpbmlrYWVsLT89XzEtMTUxOTg5NjA4NzE1NjAuMDg5MjIyMzk4MDgzNzA0NTgNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04DQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlDQoNCjwhLS0gPUMyPUE5IDIwMTYtMjAxOCBGbG93Q3J5cHQgTGltaXRlZC4gTGltaXRhdGlvbnMgYXBwbHkuIENvbnRhY3QgPQ0KaHVtYW5AZmxvd2NyeXB0LmNvbSAtLT4NCg0KPGRpdiBkaXI9M0QibHRyIj4NCiAgPGRpdiBzdHlsZT0zRCJmb250LXNpemU6MTIuOHB4Ij5UaGlzIGVtYWlsIGNvbnRhaW5zIGEga2V5IGJhY2t1cC4gSXQgd2lsbD0NCiBoZWxwIHlvdSBhY2Nlc3MgeW91ciBlbmNyeXB0ZWQgbWVzc2FnZXMgZnJvbSBvdGhlciBjb21wdXRlcnMgKGFsb25nIHdpdGggPQ0KeW91ciBwYXNzIHBocmFzZSkuIFlvdSBjYW4gc2FmZWx5IGxlYXZlIGl0IGluIHlvdXIgaW5ib3ggb3IgYXJjaGl2ZSBpdC49DQo8L2Rpdj4NCiAgPGJyPg0KICA8ZGl2IHN0eWxlPTNEImZvbnQtc2l6ZToxMi44cHgiPlRoZSBrZXkgYmVsb3cgaXMgcHJvdGVjdGVkIHdpdGggcGFzcyA9DQpwaHJhc2UgdGhhdCBvbmx5IHlvdSBrbm93LiBZb3Ugc2hvdWxkIG1ha2Ugc3VyZSB0byBub3RlIHlvdXIgcGFzcyBwaHJhc2UgPQ0KZG93bi48L2Rpdj4NCiAgPGJyPg0KICA8ZGl2IHN0eWxlPTNEImZvbnQtc2l6ZToxMi44cHg7Ij4NCiAgICA8c3BhbiBzdHlsZT0zRCJjb2xvcjogcmVkOyI-RE8gTk9UIERFTEVURSBUSElTIEVNQUlMLjwvc3Bhbj4gV3JpdGUgbWUgPQ0KYXQgaHVtYW5AZmxvd2NyeXB0LmNvbSBzbyB0aGF0IEkgY2FuIGhlbHAuIEkgcmVzcG9uZCB2ZXJ5IHByb21wdGx5Lg0KICA8L2Rpdj4NCjwvZGl2Pg0KLS0tLS0tc2luaWthZWwtPz1fMS0xNTE5ODk2MDg3MTU2MC4wODkyMjIzOTgwODM3MDQ1OA0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOw0KIG5hbWU9Y3J5cHR1cC1iYWNrdXAtZmxvd2NyeXB0Y29tcGF0aWJpbGl0eWdtYWlsY29tLmtleQ0KQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsNCiBmaWxlbmFtZT1jcnlwdHVwLWJhY2t1cC1mbG93Y3J5cHRjb21wYXRpYmlsaXR5Z21haWxjb20ua2V5DQpYLUF0dGFjaG1lbnQtSWQ6IGZfeVRZT1lzWnJCbg0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0DQoNCkxTMHRMUzFDUlVkSlRpQlFSMUFnVUZKSlZrRlVSU0JMUlZrZ1FreFBRMHN0TFMwdExRMEtWbVZ5YzJsdmJqb2dSbXh2ZDBOeWVYQjANCklEVXVNeTR6SUVkdFlXbHNJRVZ1WTNKNWNIUnBiMjRnWm14dmQyTnllWEIwTG1OdmJRMEtRMjl0YldWdWREb2dVMlZoYld4bGMzTnMNCmVTQnpaVzVrTENCeVpXTmxhWFpsSUdGdVpDQnpaV0Z5WTJnZ1pXNWpjbmx3ZEdWa0lHVnRZV2xzRFFvTkNuaGpZVWRDUm00M2NWWTANClFrVkJRMmRMWm5WbVJ6WjVjMlZTVURscVMxaGFNWHB5VFRWelVYUnJSMWRwUzB4cmN6RTNPVGx0TUV0M1NWbDFRUXBSZVZsMmR6WmoNClNWZGlUVEprWTNWQ1RrOTZXVWh6VEhGc2RYRnZXR0ZEUkdKVmNFczRkMGt2ZUc1SUx6bGFTRVI1YjIxck1FRlRaSGxKTUVzS1QyZHUNCk1rUnlXRVo1VTNWU2JHZHNVRzF1VFZGR04zWm9jRzVZWldac2NYQTVZbmhST1cwMGVXbElUVk1yUmxGaGVrMTJaaTk2WTNKQlMwdG4NCkNtaFFlR05aV0VNeFFrcG1VM1ZpTlhScU1YSlpNalJCVW5CTE9URm1WMDlSVHpablFVWlZkbkJsVTJsT2FVdGlOME0wYkcxWGRVeG4NCk5qUlZUQXBxVEZSTVdFODVVQzh5Vm5NeVFrSklUMEZEY3paMU1IQnRSRzVHZEVSdVJteGxSMHhETldweVREWldkbEZFY0RObGEwVjINClkzRmpaa00xVFZZS1VqQk9OblZXVkdWelVtTTFhR3hDZEhkb1lrZG5ORWgxU1RWalJreE1LMnByVW5kWFkxWlRiSFZLVXpsTlRYUjENClp6SmxWVGRHUVZkSmVrOURDbmhYWVN0TVptSTRZMGh3UldjMlkybGtSMU40VTJVME9YWm5TMHR5ZVhOMk5WQmtWbVpQZFZob1REWXoNCmFUUlVSVzVMUm5Od1QxbENPSEZZZVFvMWJqTkdhMWxHTHpWRGNGbE9MMGhSWVc5RFEzaEVTVmhNUjNBek0zVXdNMDlKZEdGa1FYUlINClZTdHhRVU5oUjIxU2FGRkJPWEYzWlRScEsyc0tURmRNTTI5NGIxTjNVUzloWlhkaU0yWldieXRMTjNsblIwNXNkR3MyY0c5SVVHTk0NCk1HUlZObFpJV1dVNGFESk5RMFZQTHpGTVVqZDVWbk5MQ2xjME4wSTBabWRrTTJoMVdHZzROamhCV0ROWlVXNDBVR1EyYlhGbWREUlgNClpHTkRkVkp3UjBwbmRrcE9TSEV4T0VwMlNYbHpSSEJuYzB4VGNRcFJSalEwV2pCSFQwZ3lkbEZ5Yms5b1NuaEpWMDVWUzA0clVXNU4NCmVUaFNUalpUV2pGVlJtODBVQ3QyWmpGNk9UZFpTVEpOWm5KTlRHWklRaThLVkZWdWMzaFRObVpIY2t0b1RsWjRUamRGVkVnMk9YQXkNCmNrazJSamd6TmtWYWFHVmlURkZCVWtGUlFVSXZaMnRFUTBWRWFrVjVWM28zVWpkWENsbEhkemhOVVhWaFdHcEVWRVp5Wlcxdk0yZFENClRWVlBNRlpFV0ZwME4ySmlVVFI1WjJOWVdGUnpZVGxTYm1scFVFZEZWa0prYTAxYVdpdElUd3A1ZVhka2IwNUZlbVJ4WnpaamNYbHMNCllubHVRVVZzVUhWYU5UTklMMng1YmxSRkszVmhTalJuZVZKSFVXcHlVbEUxVFVGeVZGaHJiMlJtTUdRS016SjJNbGcwTkU4MmVuUjQNClpsQnpSRGd4YzFKRU16a3dUVkJPZFRSVVdWUnFlWE5sTTFRd1JYVndiVFZsUVhoa2EweDROaTlhYlhwVlVsZGhDbTh5VW1ReVlVRlANCk5GUnNZMWR0UVVNNWJ6WjJPVzByYUhZNFkyNWxTbGxJT0dNMFFtODJUbkJRZW5OeGJHRkZha053YWpjd2FIUk5ka1owTHdwWk1qSlgNCmFuZG1hSGRoZFRsdVZqUkhVblVyVDJrdmVIaHhPVk5JT1ZSSFdVSmxhRUlyV2xwTE5VeHpPRFY0YWpCdkwwVjRUemxCVlZGQk1GSUsNCk16RjFhRFpsYTNSWFNXZDFSRFpHUjFGVmVTOXhTMGN5Wm5sVE4yZFBkWGM0VjBkSWNIWlVNeTkwVjBkd1RYZE1abTFDWjFKdVF6TnoNCldXOXNDbEptVW1GT00yZDJlVEU0WVdSQlIyMXZia3R3WkhsWFNFczBiVWRTWVhBMGIwb3pUREZhY0hkRGFUUllUbmxvVmtKeVNrSnYNCk5rNVRVSEF6WmdwNmFYazNNalpITkhoWFduQXZjVmhWZDIxVlRXVlRaMjlIWTB4aWIweHhaMUl3UkcxRloxRnBkSGxWUzNaeFVHeDMNClVVcHNjSGRaVERGclozb0taRVZSTWl0c1IwczVRMVZDYkVkc00yc3ZOMEpZWjFGWVRFNXphRFoxTVROcFUwcFFNazV1T0VGSFZHOHINClNHTkNia0YxYUVsUldXMW5kRFJKQ2tsUmVIWm9hazlRYlcxYWIxWnVaVUZWT1ZadGJ6VjNNaTlwZFhSeFJVeExTWGRhYjBreVkwZDQNCldWRlBXR05qVXpScVFVNDVPR1EwZWtadlJBcDBiamhXVDNKeFQyUnJhbXhLTkVkR1ltVjBRa3h1VldsVWEzUkNXRTQyZURoUFZtcGwNClJsSlVSSGRTV1dacVpqZG1VR1l5ZUdjME9HUXJRWFlLVWxJNVNreFBaRkJOUkhkaVZIUlRWVXRJZFRWRU4yVkRTVk5DUVd4dFdsa3YNClpVVjRNVWRDYURVMFMzaGtUVVJRZWk5amFVMVVUbkF3UWs5cENqTTVSVUk1VFRWaFMxWnJhRGhLWm1adWRHY3ZSMVJwVUVoUFVERXcNCk5ETkxTa3gwVG1wSWJHWnNPVFYyUW5oM1RqQnFORlY2VTNsYWNXUXlkQXBCTTI1dlRYaHVhRUpHTVVoUFYzZGFlRFpSVjBwTWNFUlQNClVXNXBhMWxDZWtGaFQwWkJjV3huVTBkbmR6WmxZVk5DV1VsWU5rVTFXaXRNVFVvS2VYcEtNMDFoYjBKWlRYSlJaMkUzV1ROaEszTnYNClZHVlZOREpxZFhwUFNEazFLM05IUjBoeFJtdG9XSFJEUzBScldUaHhRMUUyVGpKRlNIaE9Dbmx3Y0hsYWMydEpVRmQzTUhWV2VWRkQNCmMwTTRaRVJaYnpCVGIwRkNaakZRVm5GeE4wbG1SMnR0T1habVVuaERka2xRV0dwUVdtRlBRWGw2VFFvNWVrUkNlV1phZUhKS00wOTQNClRHUlNjMHBpTDBkalFUZzJUalpTTURoR01HRlFTVkJxVHl0TmFsSmxNR2hJTW1VNWVUTTBiREJFYm5OeVJHc0tkSFJvS3pkalZuVk0NClREbFFTSHA0T0U5Qk9YWktNbXBTUjBJdlJVOUdSV0ZhWjBobVdGZFVOV3h2TVZBMUwwSlJPWFJzZUhWWVRVZFphVU01Q2s1T1VXVkoNCmRGWk5PRkI2TUdOWWR6UkljSEpyUXpSa1ZtRktSMGRKU21oV1FsaHdVMHREWkZRdlZ6TnNSRWMyYjI5aGFHeHpNVE5JZUVodGVBcDUNCmFubzJiMDFyZG1kMFoxaHVjekpuWTFGaU0zWllWVlo0YWxoSlJrVnhMMjlMVjFCU01UQk9aRFZKWkdRdlVGWjBNazlHTWt0RVExZEYNCmJqRUtZVkJhZVV4YVIzUnZlV2h6VUVJNWRHMTVSblF6TkVsSmN6SnFNVmwwWjFwSE1DOHdOM0JQWVhkalUxQm1OMlZtVWxKWk5YRjINCmRtSk1kMHRXQ2xaT1Z6TjRaVFZHUVU0dmNrRlBibW92U0ZCM09VWnVjSGMxV25ORlF6RlpjSHB1TmpWTE1qWXlXR3RPZUV4MFFXbE0NClVtOTZUSFJoVlV0a1JBb3JUVUpEV1dwamJGcHVXRU5hTURZeWNWRllWbTB4Y0RjclFqQndaM2N6YkdoUk1VRjJiakl4U0RKQlVubHANCk9URlJjbXd5WjA4ME1tRnRaV1VLYjBWc2JsRmFXalZTTVRKWlVtWjJXVEJVUlZwdGRVZzRVakpZVTNjclRHVk1XVlF2UWk5a1VXbDQNClMwOXhMMXBhTWs1RVpYWjJRVlJ5ZVdkMENrMVlSek5pYTJoS1pXcEtOalZVVGxVMVNYZ3ZNRFZ6UldadlJtTXlOVUpNY0hsbFJVTlANCk1VZFhOMUZZVVZsUFMxaHVNVmc1WWtocGJWWkdOQXBqWmtnM01XMXBSVElyZEZSQlIyaEVMMHhRTDNWWVdGVkNjakZqUm01V2NWVm0NCmIzSnFVRTlNTTNkeVVtdFhZbkZ5TlVoamQzRlVNVXRtVURjS2FqVlJOMW94YURVMWIwWTFNVFF6UkcxNmRVZHNkVmhZUkU5S2RGZDINCmJreE9aWGQ2YWxwbGVUTkxObkYzU1RRMFpXZHZPRlpyTTFoWWJtNVBDbkkwVW5OdmIwWkNSM0pCTmxVcksxbENhMmhOWVVSNVdUTTQNClptNWFkREZqSzBwSE9VMVZSRUp5TUdaVmR6WTFXR2h0VkVaMllXZEpWbGRUYVFwNU4xWkhlWHBIYTNWM2FWZFFSbTFNTUROWFQzSkMNCk56UldialJFYUZWSVkxQnZOV0ZVZFZwMmRVeFRlWFZqWkhwRVJVMXNLM05FYW5CVFpsY0tObFZuV1N0dlJWVkpaamRJVmtSWlF6QlUNCk1HTTJXRkU0TUhvdlRrOHdXbk5pTTJSRVkyNXNkMlJEUWtSaU1qRjNXVmhTY0ZsdGJITmhXRkkxQ2tsRWVHMWlSemt6V1ROS05XTkkNClVYVlpNamwwWTBkR01HRlhTbkJpUjJ3d1pWVkNibUpYUm5CaVF6VnFZakl3SzNkelJqRkNRa0ZDUTBGQmNBcENVVXBhS3pac2FrSm4NCmMwcENkMmRFUVdkclVYSmhkMjV1U2xWS1RXZGpSVVpSWjB0QlowMVhRV2RGUTBkUlJVTkhkMDFEU0dkRlFVRk5OMjBLUkM4NWNUVXcNCk4ydFVjM0JsU21Ob1JFOXhlRllyU0ZKSGF6Vk1hM0pCVG5KNGF6QkJOMDV6UjA1Q2RDdFFTeXRQWlRrMlVESnNha3czY3l0cENqTXcNCk1FNDRZVEIzVVhsc1lWQnROV0UwSzBWUVZpc3ZXWEV2S3pSRkwyaDVkMjF3TDNoV2RYcFZabGRGVUdsM1VHSldSM05rTm5ONmRrVkoNCldBcE5aek5XWTJWSFVqWmFTSE5uUVhNeE9UWlRjMHd4VFdGTVoyaG9hRzEwYTNKUUwwbHlVMVZMVGxCM1JXbDFhVTVvVVZSclNUUk8NCmNubFpiemdLU0ZsR1MxbHVRMjh6UW01SFIzWlJiM0ZqTDB0VGN6UkNiQ3RyUTNWalkxSXhhbU5yVkc1b1NqZHZWVXhGYjNoWk5qSmoNCmIwVmtla0ZsU2twUENuaG1LMk5ITUhKbVUzZExObGd5VUZaaFFqTlhUVlpGYm1KcVoxSkpiRE56ZW5CM1IxVXljMjV2V2s1clQwdFgNCmRXRnRhakprVlRkVGVWWlFRUXBRT1dkUWIxbE1TVE5sZG1WRmJtTm5VVTltUW10eVZHMXJkamRYTW5ONmNuWlllVzVLV25KTVFqbFENCmNtRTVZazEyZFdzeWNWUjFNR2xEUm1ZS05HVjFLM05rVlRGcGVqaGlZM1ZqTXpKaWJrOVZTV3Q1Vkc1QmJ5ODFMekpwVjNwUVkzVlgNCk5teHhZbHB4TmxORUswaFZaR05UV0dWWFYwd3lDamN4UTFGdFVuTmFiMUZPV2tneFVVdGpaaTlIYWtwMWJFeFRZVU5PVm1relVVaHgNClRURnBPR05GYzNWSE5YRlBSa2czVjNsT1ZXZHBSRk5VUWdvdlJtdzVRMEZXWmtsQmRuZDBZVGRwWXpGd1NWRm5TbE5ZZVVaVlJsb3YNCk1WaHdaV1pvVm1aemJWTlNZVlZVWTJ0UlNFcHBTelZ0VVVGUFJrb0tNMHRUVld4cFVrZ3hPVU5PVW5wclFuaHRlRk5CTmpWT1pYaHENCmFEaGlVV2RUZGtsNlQzWkdTRVJUY1VOdllsaDFkVXQyVnpaeGRUaHpUM05OQ25wWWQxVTVZVkppV1c1QllrMVlVbWhJYmtvM1R5c3YNClVHTm1aWFJsYVVRMmRrbFVUalZyUVROcWVHNURkazg0V2taNU9GSnJhMWRaU0ZWTVFncE5aWFJpYUZSTFVVeHVNMkZ0YjJSSWEzSnANClpGaHpSbEpRVFdaSGFHZFNXaXMyYkdWQlVrRkJjamhaWVZCTFNHTkpaVVJVU1ZwcmRtMXlaM01LYkN0bVlrVkJSbGhVVWtabFRFUkYNCk0wazVlaTkwYWs1cFFrcHhZMFpEWWsxWFVHTkJkMjFHZDFZd2JrZzRVMFJsVEZOc1QzWnhjSE5EWmtSUENsSnBhRXRpTVVneVZHcFINCk9VMUVNSE12WjBGM1JTOXBOV1ZNUW5SMVVsaFpNbGRxT1VWNVExbGpNMmR4Y1RkUVFtb3JSbk13Y25CdE5rMVhNQXBOV21WdVlYb3YNClEzRXhLM1FyV2pCUFpHVTFVMGRsUzFkek5tcHZNVWc0VDNVd2VHOVRZWGhrVFVvNVEwcHRUMlZhUzFGQlVXMDVWbEZyY1VzS1JuWXcNClRHNVZkazFXU2xrNVoxRjVVMDAxWVdwVVpHeEtaMnhJYnpKUE5YVk5kM0poUmxWU2RVaDZRa1IwWVNzNU1TdDVkelpNUVRjMlJFSm0NCkNrUjJUMHAwYlcxRlNYZEVjMEZPVjNCU05IcFlVM0kyVURWTmMyRklLME1yYldKVFEwZHhUWEJ0ZURKVVdqWkhaSGhUVms1RFJVOVUNClFtcDNhd3B1YlVsdWNFSlBSME5PYWtKdlFuZE1VVU5TTjIxelJDOTFZeXRtY0dkNVprZFZMemxJY3pKeWNtNVhXSGhKUjJwT2VGQlANClQzZzBOVXhDTlhFS2MyWnRNSGcwY2tweGVURk9XVkZuWTFWQ00yMTBaMmRUY0hKRGJrZ3dXSHAxVVhaR1IwWkRVREF4VWtSeE5sTmENCk1VaHlieTk0TmxkNVlqQkNDbXd4UXpWd1FWaHVaV2RTUkc1UVF6VlJjbm8zUW1WdlRrMU1lbTVrWlRFNFpYZExMMFZ2VVRBdlVteGsNClpTOUxjRmRxV1djeFJUQkZOMnhoVmdwS2FFTk5Za2RxUjJsSGVsWm1ORWwzUTFsV1NVODVkRmgyVWpGc1ZpOVNlRUZ1TUdGS01taDMNClF5OTJVVTAwWkRWalJ6UTJTbVJyUjNKSldra0tNazQxZHl0WVduTlhkbWRFY1hac1JYbGpNV3RQZEdsS05XTnJORkphVTNGQ2NHWlQNCk5ERkNjSGhtWjBJMWVWbHhTVWxVU2toVWVHTnZVVGxYQ21WamExcFJlblZaTml0SE5Gb3dabEpyVEZSa2JGRXJiM05EUmpsaVducEcNCmVYbEpOVFZPUkhVeGVuZHpkSEJQTjJacWR5OUdWM2NyVVROWU1RcEdjMFZCUlZGRlFVRm1ORXBCZDJobFV6ZENTbWhJTlU1SVIwRTQNCk9GUXhLMGxNYzNWWVowWndNMmRTUkN0SU9VeE5VVUo0Y0ZaVGJWUkxZMDRLZW14clFtczNSM0pZUjBReFluWkxlSEUxVXpaVldUWmoNCk0zTnlWRzVLZFVWSmFVOVZNRVozTDBSV1l6STRPVW8wY1hsbllYb3hORlY0VVVneENtZzJablJzYWtGT1ZVeEhUbkp3UVdWUE1qa3cNClpsbE5TSGsyWmtzeFpVSXlUalo0ZERJNFVXOVJkSEpYVldNMVpGYzNhbE5IWlhaa1VtRm9SZ296VkRVNGRHMWpVME5aYUU5TFYySnENClpYRTRhbUpXVWxKNmMyVkVkVzEwTUZaVFRrdGpRMlpTUkZKVWJUTmlVbnBrTm5SeWJETkNjbXR5V0hJS0syOHZWbVp0S3pFMFlUWnMNCmJXNVlWVkpYTkdjMWFreFNLelJqV205R1dIaHVPRUZWUW10dVRtRjFUelZuYUhSRE9EUkxUM1JJWlc1eVlrdElDazlHZEhsc2JtbHoNCllqRnJhSFZKY2xwdGNpOUhTamxUVTNNcmFFNVdjM2xUS3prNWJtWnVVekpGYVRaemJVeE9Na2Q1ZWtack5VdFlUR3hWTWdvMVNYRm0NCloxbDFhR1ZSVGxkU1V6UjRlSFE1VEhsMksyRnhSRk15WVRkdFZVUlFORzFpTlc1b2VGVk5kVnBrTlVaVGVVMXJkVmxwTjNoNlV6VUsNCmMyUldkaXREZVdkTVlpOURURkJGZEhSbmFHYzNVRTlFVnpKVEsxRlNaVEprTjBOWVZEa3piRWREY2pneFoxZHBOR0p3T0hSMVlqbFcNCk1WTnVDbXRGTTJVeWVDOWpUeTlOV2pWdk5uQXdaV2gxV25KQlNsQlVaU3Q0SzFST01rbDNOR0Y2VkdzdmJHaFBjakIyVW1zMVJIVnoNClZIRnZMMVozTUFvMFdrUmFPRWh5UlcxUE56ZzRZMDVNY0VGM1ZXTkpOa3REV1U5eVZFRnFjRWxPTm0xc09VOW9hbWRaVTJ0SlFsUnoNCk1VdE9WRFpQZGxWcVZuSUtOVTgwTUVVM2EwNTFVM05RVTIwM1VGSXdWRWx1WW5aelVIWktaU3N6ZWtNM1dWTmtiVzFNTlRScFZVSjANClpGWnJSMFpqTDBRM09GTnJNMlJwQ2tsNGJsUlVUMFpHUjFCTE16UTBjelJNTDNwM1RGaDZSbEIxYVZCamFEaGFObTl5Vld0VldYTm0NCk5uaENjMUZaVUdkUmExUndVRUp3VkZkTlFRcGxlbmg0ZDNodlNYTk1jbkJIWkdGck1sbzRZelJwVURsc2ExaHJWMnhyYWxkeEt6Z3YNClZUWm1jVTU1WjI1Q1JrNDVMM2Q0UTNsblVXcDRNMkVLVERCMUszTjNVMjVZVWxoSU9IcHFZVTUyV25rd0szUk9iVkpGY25NelRsRkQNCmJGTjNWWE12VlhwMlEzQk5aVVp6V0c5dFJWVjZaRXR0TlZkVUNsUkNTMkZuZEVkblpWaHlMMWdyUlU5U2FEaGlMMUUyUTFsbk16Rm4NClJVZDJWRlptZWpZMGEweFBlVWxZWW1kd2VqaERXVU4zTkdkVVJrSnROQXBTV1UxcmFGWmlaV1YyYXpSMGFFRlBOVkpMTTNsRVVHMXYNClZWb3JaR0Y1VjA0elNUWmtiMGxvSzBzNGVXa3pTR2N6V1c5dVJrWTFSR01yVlhNS1lreFJRVGQ2YlUxM1VHTmlURnBCTTIxNVZtVXYNClRGUTFRelp6YTJKUWVYSklVREZMYW5KMU1VeEdXamhKVUVWUE1qVXlkbUo2UjB4REsweDNDbUZCTURaUkwzRlliVXh6ZDIxYWVIbG4NCmVISXhSamc1YlZKVFpYZGpNVTR3TlVoNE5IQTBhalowTUZvNU9HNTZZbUpYWVZKRFVHNTRXazVRUkFvM2VHcFNjRWhDYzBNMUx5dFkNCmJtdHFMMjl0ZW01U2RHaFVZelpvU0VzdmFuTlpkRzVrV0RWcGJYYzFaSFJPZEZWbk1rdzFOWGRQYlhkWlVtUUtjRzVYYTNsTVFuSlMNCk1rOWxTVTVqVlhOVVYySkhPVWRvYkhwSFRYSnNRamxzV0ZOMWNrSlRhemhEU0ZKbk9ITjBkWE5PV2pkVlVTOVdXVzFoQ25vdk5Xb3INCk1rZGxVVGxUVG5WeFJHaFFVVXdyY1dOR1pVSTFjVFpXWm1Nd2EwWlJUV3RVY0U5V1RrRjBiblphUlRrd1MxcHRSbFpoY3pSU1VRcGENCmNtcG1jbVp5Tm1jd1kwSnhOekpZY1haWWVWWm1SV0pFTWxaV0x5OUdNbXRRU0U1cGRXcEljV1JNVkRsUUwydEdOWGhoT0d4RlJIUksNClRFRUthVU14VjNKS1Qwc3pjbVp6UVc5TFVFOTJWM29yWWt4cGRUbE1LelJDTHk5RmVHZENRamhYT1ZCS1NIVnpVSE5SWW5GUVRIaGsNCkwyNXhNVXhwQ2xZeGF6UXlURUpRVG5SSE9XcEZUbXBvZUd4a0sxRlRXVlozV2twUk1FSnJRVzlKT1U4elZXcHRNMFJJZUdsb1dUTjENCk1VTnNXRGszV2s0d1NncE9jbTgzVXpsb2FFdGFNVWRPVGt4RWVEVTBOMWxNV1N0cVFTdFBUak13ZFhac09VWktZV053UjJOdmJtd3oNCmRYSnVaR0l6UzA1S2VVWXpiMVlLU2pka1ZHOUdhRzEzYTFORGRrWXJkakJpU1RkME1IaDRaR000ZVhSVlJXUktTMmhvVTBaSFUwY3cNCllTdE5WVkExUzBoVk1IVjVaV2hEUTBkVkNuRjFiakZxYUhWV1pXVkNSbUpoTHpoTE9XOUxSMEZpTVhwWk5UUlhaRlZEZEZoVFRXWkUNClIwZG9PRXN6TjFBcmVsRldaM2hXTm1oM1REZFdPUXB0VFhaRVRVTjBkVlZTYkZsT05FOHJWRTV3YVZGMVVWb3hPRUo2VTI0eGFXbGkNCmRsbE9ZVk5STkRWWGVXdHdkWFJOVjBsc1NXTk1ORWQ0TUdRS2QzcEhhbVZ5YjA5NlkzWXdkR05xTDJWSWEwZFVhMHhIUW14NU9UaEgNClQwbDFiMmxQWlVsT1JFbERSRnBHUXpWUlkwOHZVRWR2U3l0alIwcDVDa05ZYTNsaVdTdFFLMDlTVDB4a2NIaGtVMUZoUVVoNVpIVTENClZ6QnljRE5pV21OUU5HbFljblJsY0ROM016ZFlRM2Q0VXpkM2MwWm1Ra0puUWdwRFFVRlVRbEZLV2lzMmJHdERVa04wY2tObFkyeFINCmEzbENkMGxpUkVGQlFYVmlaMUF2YWxGUFRURm1hbFpyVkZOTFdrMXJkM3AzSzNoU2IzVUtTMXBvV0VSR1RGQmxiSE16U0c1alpIVlANClIzSjFTWE5UZVRaaE1HcHZiU3RZWjA1V1EwcHZNRlp4WWxOVFEwOXhNbE5SYURGaGQyWTJlRk5XQ2xWSlZXZ3lhVlZCY2tWdVprTjANClJHUlJlbXB4Tnl0TFIyaHhlUzlqT0hONk0xRkZNWFpKY3pKUVlUaDVSVmRxV1ZCVmIzWkJOekZETTNscFNRcFlhWGxQVG5aVlZtY3oNCk0yMUNXWGhVTVZObVNpdGxXVTFIYmpsMlJHRmlZMkpOY1U5S2FFWnZXQzl4VW1ZMVprSXlhMHhVYzNsM1prNXFlRThLUkZZNFN6Z3oNCk9XcExTVVJqT1RGMVVWUk1NMFp0WVU1V1dtMTFRMDA1VTBOWWVETlVXbGRYUTFSMFlucEJkVGQySzNsWFFVMDNZMmdyWkVwc0NqQXYNClUxbGxiRTV2TkhCMVZHaEtVbFZVVWtaSlpDdFNUbE01YUhWc09EQllWR2xoZUVZeU5FbFNaWGhFZG05dWNFTk5hMVZ1U0RseFVsQnkNCmVncFJXVk01YjNOS2VXSlFaMjlaUWxGNFUwSndNR1p0V1RoS1pEWjRka3B5YzJSSmMzQk1TSFZpZW1zMlNXNW1SV2hIWkdWd04zVXgNCmFHWlhMMGtLVTAxVWNYcFBlbEZSUTBkc2JGRXZZVXR5VFZCTWRuQTVPVVJMWkVGM1puRllUa1JLTkdOMFRWbDZSbTVWTldrelMyWnMNClN5dFZaSEp0Wld0QkNtMWtTbGROZVhoWFRFOHlWblZHSzNCck9UQTRURkpzYlhVeloxUlRSVmx6WjBGYWRWbE9ORFJWTkhaTVRVVkcNCk5HSXZSRXhTZFc1cE5ITm1RZ29yWmpGM2VtMVZkbVJqZFdvMVZraFJTVE4zTUhRclVIbElha3BWZGtWcVRsVkRTbEZhUTNnMmFXUm0NClREUnJSRkkyYzFCWmJVY3pLMlZsZWxFS1QyZFdZWEZPZDA1cWJGUTRjMmRzVjJscllVZENPWGt3TTBWb1MyTlVTRWx4YW1nM1MzSlgNClNsVnhUek5WWTJsVWFFWkZUMjB4YUVWVFFVSXJDbUozZG1WWWQxTTBTR0Z5V0c1bWJYVlRjWFlyTkdObVRFZzJNa2hUT1ZwVFkzSloNCmFUbEdXVUpzYTNSQ2JGTTVXRWRVUmsxSllqYzNka2M0VXdvTkNqMXVNR2dyRFFvdExTMHRMVVZPUkNCUVIxQWdVRkpKVmtGVVJTQkwNClJWa2dRa3hQUTBzdExTMHRMUTBLDQotLS0tLS1zaW5pa2FlbC0_PV8xLTE1MTk4OTYwODcxNTYwLjA4OTIyMjM5ODA4MzcwNDU4LS0NCg==", "historyId": "1214289", diff --git a/test/source/mock/google/exported-messages/message-export-1631d0d78df8dd16.json b/test/source/mock/google/exported-messages/message-export-1631d0d78df8dd16.json index c0a0802a4fe..1584349fd22 100644 --- a/test/source/mock/google/exported-messages/message-export-1631d0d78df8dd16.json +++ b/test/source/mock/google/exported-messages/message-export-1631d0d78df8dd16.json @@ -4,7 +4,7 @@ "id": "1631d0d78df8dd16", "threadId": "1631d0d78df8dd16", "labelIds": ["UNREAD", "SENT", "INBOX"], - "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your pass phrase). You can safely leave it in your inbox or archive it. The key below", + "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your passphrase). You can safely leave it in your inbox or archive it. The key below", "historyId": "1351", "internalDate": "1525200811000", "payload": { diff --git a/test/source/mock/google/exported-messages/message-export-16819bec18d4e011.json b/test/source/mock/google/exported-messages/message-export-16819bec18d4e011.json index 7e0de4d7470..249750a8a28 100644 --- a/test/source/mock/google/exported-messages/message-export-16819bec18d4e011.json +++ b/test/source/mock/google/exported-messages/message-export-16819bec18d4e011.json @@ -98,7 +98,7 @@ }, { "name": "Subject", - "value": "for ci tests that change pass phrase" + "value": "for ci tests that change passphrase" }, { "name": "To", diff --git a/test/source/mock/google/exported-messages/message-export-173fd735b2d9eaf4.json b/test/source/mock/google/exported-messages/message-export-173fd735b2d9eaf4.json index b3f9e970572..ce80bcbe4f7 100644 --- a/test/source/mock/google/exported-messages/message-export-173fd735b2d9eaf4.json +++ b/test/source/mock/google/exported-messages/message-export-173fd735b2d9eaf4.json @@ -4,7 +4,7 @@ "id": "173fd735b2d9eaf4", "threadId": "173fd735b2d9eaf4", "labelIds": ["SENT", "INBOX"], - "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your pass phrase). You can safely leave it in your inbox or archive it. The key below", + "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your passphrase). You can safely leave it in your inbox or archive it. The key below", "payload": { "partId": "", "mimeType": "multipart/mixed", @@ -109,7 +109,7 @@ "id": "173fd735b2d9eaf4", "threadId": "173fd735b2d9eaf4", "labelIds": ["SENT", "INBOX"], - "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your pass phrase). You can safely leave it in your inbox or archive it. The key below", + "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your passphrase). You can safely leave it in your inbox or archive it. The key below", "sizeEstimate": 3179, "raw": "UmVjZWl2ZWQ6IGZyb20gNzE3Mjg0NzMwMjQ0DQoJbmFtZWQgdW5rbm93bg0KCWJ5IGdtYWlsYXBpLmdvb2dsZS5jb20NCgl3aXRoIEhUVFBSRVNUOw0KCU1vbiwgMTcgQXVnIDIwMjAgMTA6MjQ6MjEgLTA3MDANCkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOw0KIGJvdW5kYXJ5PSItLS0tc2luaWthZWwtPz1fMS0xNTk3Njg1MDYxMzgxMC41NTk2OTgxNDg1OTk0NTc1Ig0KT3BlbnBncDogaWQ9MDc0ODFDOEFDRjlENDlGRQ0KRnJvbTogY2kudGVzdHMuZ21haWxAZmxvd2NyeXB0LmRldg0KVG86IGNpLnRlc3RzLmdtYWlsQGZsb3djcnlwdC5kZXYNClN1YmplY3Q6IFlvdXIgRmxvd0NyeXB0IEJhY2t1cA0KRGF0ZTogTW9uLCAxNyBBdWcgMjAyMCAxMDoyNDoyMSAtMDcwMA0KTWVzc2FnZS1JZDogPENBTzlGWTl0TlE3ZV9WPTgwK2EyMkoxMDhMbjV0RzZoaVpLLSt0a21HVndvNGZZckQzUUBtYWlsLmdtYWlsLmNvbT4NCk1JTUUtVmVyc2lvbjogMS4wDQoNCi0tLS0tLXNpbmlrYWVsLT89XzEtMTU5NzY4NTA2MTM4MTAuNTU5Njk4MTQ4NTk5NDU3NQ0KQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgNCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUNCg0KPCEtLSA9QzI9QTkgMjAxNi0yMDE4IEZsb3dDcnlwdCBMaW1pdGVkLiBMaW1pdGF0aW9ucyBhcHBseS4gQ29udGFjdCA9DQpodW1hbkBmbG93Y3J5cHQuY29tIC0tPg0KDQo8ZGl2IGRpcj0zRCJsdHIiPg0KICA8ZGl2IHN0eWxlPTNEImZvbnQtc2l6ZTogMTIuOHB4OyI-VGhpcyBlbWFpbCBjb250YWlucyBhIGtleSBiYWNrdXAuIEl0ID0NCndpbGwgaGVscCB5b3UgYWNjZXNzIHlvdXIgZW5jcnlwdGVkIG1lc3NhZ2VzIGZyb20NCiAgICBvdGhlciBjb21wdXRlcnMgKGFsb25nIHdpdGggeW91ciBwYXNzIHBocmFzZSkuIFlvdSBjYW4gc2FmZWx5IGxlYXZlIGl0ID0NCmluIHlvdXIgaW5ib3ggb3IgYXJjaGl2ZSBpdC48L2Rpdj4NCiAgPGJyPg0KICA8ZGl2IHN0eWxlPTNEImZvbnQtc2l6ZTogMTIuOHB4OyI-VGhlIGtleSBiZWxvdyBpcyBwcm90ZWN0ZWQgd2l0aCBwYXNzID0NCnBocmFzZSB0aGF0IG9ubHkgeW91IGtub3cuIFlvdSBzaG91bGQgbWFrZSBzdXJlIHRvDQogICAgbm90ZSB5b3VyIHBhc3MgcGhyYXNlIGRvd24uPC9kaXY-DQogIDxicj4NCiAgPGRpdiBzdHlsZT0zRCJmb250LXNpemU6IDEyLjhweDsiPg0KICAgIDxzcGFuIHN0eWxlPTNEImNvbG9yOiByZWQ7Ij5ETyBOT1QgREVMRVRFIFRISVMgRU1BSUwuPC9zcGFuPiBFbWFpbCA9DQpodW1hbkBmbG93Y3J5cHQuY29tIGlmIHlvdSBuZWVkIGhlbHAuIFdlIHJlc3BvbmQNCiAgICBwcm9tcHRseS4NCiAgPC9kaXY-DQo8L2Rpdj4NCi0tLS0tLXNpbmlrYWVsLT89XzEtMTU5NzY4NTA2MTM4MTAuNTU5Njk4MTQ4NTk5NDU3NQ0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9wZ3Ata2V5czsNCiBuYW1lPWZsb3djcnlwdC1iYWNrdXAtY2l0ZXN0c2dtYWlsZmxvd2NyeXB0ZGV2LmtleQ0KQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsNCiBmaWxlbmFtZT1mbG93Y3J5cHQtYmFja3VwLWNpdGVzdHNnbWFpbGZsb3djcnlwdGRldi5rZXkNClgtQXR0YWNobWVudC1JZDogZl9YQWFwQWh4T0tIekpNTWNmSHJmc0FJVUlpRURLRXBAZmxvd2NyeXB0DQpDb250ZW50LUlkOiA8Zl9YQWFwQWh4T0tIekpNTWNmSHJmc0FJVUlpRURLRXBAZmxvd2NyeXB0Pg0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0DQoNCkxTMHRMUzFDUlVkSlRpQlFSMUFnVUZKSlZrRlVSU0JMUlZrZ1FreFBRMHN0TFMwdExRMEtWbVZ5YzJsdmJqb2dSbXh2ZDBOeWVYQjANCklFVnRZV2xzSUVWdVkzSjVjSFJwYjI0Z055NDRMamtOQ2tOdmJXMWxiblE2SUZObFlXMXNaWE56YkhrZ2MyVnVaQ0JoYm1RZ2NtVmoNClpXbDJaU0JsYm1OeWVYQjBaV1FnWlcxaGFXd05DZzBLZUZsWlJWaDZjVGxTUWxsS1MzZFpRa0pCU0dGU2R6aENRVkZrUVZsQ01pOW8NCmFtcEtZVlphWWtSaWIxZHBjMnhXUlRnNFFUVkNhVGREUlVoV0RRb3hVR1ZPWmtkRlRUTmthaXREVVUxSmNWcFNWSEZFUlVNeVdqZG4NClQwSktkVm8xYzFKSWFUWm9SMVZEUVVaTVEwZHdWa3RhVHpsdFEzWXZOMmNOQ25ZNFFsUlRRelU1WkdwUU9XVjZVMmxXVkRkS2NtVnQNClZHcG1NMlp0VGt0dlVHVkZOSGtyZEc5aVUySXdjbkZWZVdWamRsUTBVRUZUV1RGcFF3MEtSRTB3YzFJeU1XaGhWM2RuVVRCcloxWkgNClZucGtRMEU0V1RKcmRXUkhWbnBrU0UxMVdqSXhhR0ZYZUVGYWJYaDJaREpPZVdWWVFqQk1iVkpzRFFwa2FqZERhbmRSVVVabmIwRkoNClFWVkRXSHB4T1ZKQldVeERVV05KUVhkSlJVWlJaMHRCWjFGWFFXZEZRVUZvYTBKQmFITkVRV2cwUWtGRFJVb05Da1ZCWkVsSVNYSlENCmJsVnVLMFpwUlVWdE5rOWpORWhZZDJjMWMzZE9RUzlKUWpCblkybHpLMlJUWmpReVZtZEVLMHgxVlZGMUwwSXdaeXRzYkEwS2NYUjYNClpXZE1TMVZIV0M5RFJFeHBha3B0TTJaUFVFWkxWemRzTTFRelFVSkJURkZIVFhGWVkyRXhhbkIxVFVWU1VXUnhLMlJGTlhsNGFIRlQNCkRRcElTWEZZTkhsWlEyRnRiR3BQWVZWT2VEUnpSVmg2Y1RsU1FrbExTM2RaUWtKQlIxaFdVVVZHUVZGRlNGRkpURU5rTmpsRWQyNUYNCmNGbE5RMmNOQ2pkeWNXTmFka1ppVDNwa1ZrUnZMMVkzYUZOaGNHVXJSVlpRZDFKQmQwVkpRaTgwU2tGM2FVOTROV2xpT1ZacVZtZDENClFqRmlVaTlNUldjNVN3MEtUVnBXY0c5S1pXczFlRkozWjBwWlZYSlFNRklyUmxORGNUTnhVV2QxTUVSRVNrMVVaWEJ0UVN0TGN5OXcNClZsTmxPR0pxVEZod05rOTZhRXhFRFFwcE9YZHlVWE5KYkhSRGJFeDZaMjQxU1hGdlUxWklSMEYzYm1kRlIwSlpTVUZCYTBaQmJEZzINCmRsVlJRMGQzZDBGSlVXdFJRakJuWTJseksyUU5DbE5tTkZkSlVWTmlielY2WjJSbVEwUnRla0V3UkRoblNGTkNlVXQ2TlRGS0wycE0NClkwRlFNR1J0V1hwalR6TktSME4yUmxKd1dFUmxXRGRDY3cwS1pVSXdSSGhxWlRoUk1YYzFNblZJYlRSQ1dWcG5kMFF2WmtaWmFVRlQNCmJsSlJla05JZDFSd2QzbHJNVEV3Vnl0cVVIUXJjazVhTms5SlVscElEUW93WkNzclIxRXdQUTBLUFhKWUwyOE5DaTB0TFMwdFJVNUUNCklGQkhVQ0JRVWtsV1FWUkZJRXRGV1NCQ1RFOURTeTB0TFMwdERRbz0NCi0tLS0tLXNpbmlrYWVsLT89XzEtMTU5NzY4NTA2MTM4MTAuNTU5Njk4MTQ4NTk5NDU3NS0tDQo=", "historyId": "2032", diff --git a/test/source/mock/google/exported-messages/message-export-188923a75165a3c8.json b/test/source/mock/google/exported-messages/message-export-188923a75165a3c8.json index 62d3f1097e8..9f3857954b8 100644 --- a/test/source/mock/google/exported-messages/message-export-188923a75165a3c8.json +++ b/test/source/mock/google/exported-messages/message-export-188923a75165a3c8.json @@ -4,7 +4,7 @@ "id": "188923a75165a3c8", "threadId": "188923a75165a3c8", "labelIds": ["Label_15", "SENT", "INBOX"], - "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your pass phrase). You can safely leave it in your inbox or archive it. The key below", + "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your passphrase). You can safely leave it in your inbox or archive it. The key below", "payload": { "partId": "", "mimeType": "multipart/mixed", @@ -109,7 +109,7 @@ "id": "188923a75165a3c8", "threadId": "188923a75165a3c8", "labelIds": ["Label_15", "SENT", "INBOX"], - "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your pass phrase). You can safely leave it in your inbox or archive it. The key below", + "snippet": "This email contains a key backup. It will help you access your encrypted messages from other computers (along with your passphrase). You can safely leave it in your inbox or archive it. The key below", "sizeEstimate": 11303, "raw": "UmVjZWl2ZWQ6IGZyb20gNzE3Mjg0NzMwMjQ0DQoJbmFtZWQgdW5rbm93bg0KCWJ5IGdtYWlsYXBpLmdvb2dsZS5jb20NCgl3aXRoIEhUVFBSRVNUOw0KCVR1ZSwgNiBKdW4gMjAyMyAxMjo0MToyNCAtMDcwMA0KQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7DQogYm91bmRhcnk9Ii0tLS1zaW5pa2FlbC0_PV8xLTE2ODYwODA0ODM0OTgwLjE3NDE2NzQwMTIwOTI0NDQ1Ig0KT3BlbnBncDogaWQ9RThGMDUxN0JBNkQ3REFCNjA4MUM5NkU0QURBQzI3OUM5NTA5MzIwNw0KRnJvbTogZmxvd2NyeXB0LmNvbXBhdGliaWxpdHlAZ21haWwuY29tDQpUbzogZmxvd2NyeXB0LmNvbXBhdGliaWxpdHlAZ21haWwuY29tDQpTdWJqZWN0OiBZb3VyIEZsb3dDcnlwdCBCYWNrdXANCkRhdGU6IFR1ZSwgNiBKdW4gMjAyMyAxMjo0MToyNCAtMDcwMA0KTWVzc2FnZS1JZDogPENBS2J1TFRwSHZMQnN6WVZxallpX2VveEVxVEtFOC1xQkhGZ2I3WERmQkhHT0J2eXNkd0BtYWlsLmdtYWlsLmNvbT4NCk1JTUUtVmVyc2lvbjogMS4wDQoNCi0tLS0tLXNpbmlrYWVsLT89XzEtMTY4NjA4MDQ4MzQ5ODAuMTc0MTY3NDAxMjA5MjQ0NDUNCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04DQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlDQoNCjwhLS0gPUMyPUE5IDIwMTYtMjAxOCBGbG93Q3J5cHQgTGltaXRlZC4gTGltaXRhdGlvbnMgYXBwbHkuIENvbnRhY3QgPQ0KaHVtYW5AZmxvd2NyeXB0LmNvbSAtLT4NCg0KPGRpdiBkaXI9M0QibHRyIj4NCiAgPGRpdiBzdHlsZT0zRCJmb250LXNpemU6IDEyLjhweCI-DQogICAgVGhpcyBlbWFpbCBjb250YWlucyBhIGtleSBiYWNrdXAuIEl0IHdpbGwgaGVscCB5b3UgYWNjZXNzIHlvdXIgPQ0KZW5jcnlwdGVkIG1lc3NhZ2VzIGZyb20gb3RoZXIgY29tcHV0ZXJzIChhbG9uZyB3aXRoIHlvdXIgcGFzcyBwaHJhc2UpLiBZb3UgPQ0KY2FuIHNhZmVseSBsZWF2ZQ0KICAgIGl0IGluIHlvdXIgaW5ib3ggb3IgYXJjaGl2ZSBpdC4NCiAgPC9kaXY-DQogIDxiciAvPg0KICA8ZGl2IHN0eWxlPTNEImZvbnQtc2l6ZTogMTIuOHB4Ij5UaGUga2V5IGJlbG93IGlzIHByb3RlY3RlZCB3aXRoIHBhc3MgPQ0KcGhyYXNlIHRoYXQgb25seSB5b3Uga25vdy4gWW91IHNob3VsZCBtYWtlIHN1cmUgdG8gbm90ZSB5b3VyIHBhc3MgcGhyYXNlID0NCmRvd24uPC9kaXY-DQogIDxiciAvPg0KICA8ZGl2IHN0eWxlPTNEImZvbnQtc2l6ZTogMTIuOHB4Ij4NCiAgICA8c3BhbiBzdHlsZT0zRCJjb2xvcjogcmVkIj5ETyBOT1QgREVMRVRFIFRISVMgRU1BSUwuPC9zcGFuPiBFbWFpbCA9DQpodW1hbkBmbG93Y3J5cHQuY29tIGlmIHlvdSBuZWVkIGhlbHAuIFdlIHJlc3BvbmQgcHJvbXB0bHkuDQogIDwvZGl2Pg0KPC9kaXY-DQoNCi0tLS0tLXNpbmlrYWVsLT89XzEtMTY4NjA4MDQ4MzQ5ODAuMTc0MTY3NDAxMjA5MjQ0NDUNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vcGdwLWtleXM7DQogbmFtZT1mbG93Y3J5cHQtYmFja3VwLWZsb3djcnlwdGNvbXBhdGliaWxpdHlnbWFpbGNvbS01NTIwQ0FDRTJDQjYxRUE3MTNFNUIwMDU3RkRFNjg1NTQ4QUVBNzg4LmFzYw0KQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsNCiBmaWxlbmFtZSowPWZsb3djcnlwdC1iYWNrdXAtZmxvd2NyeXB0Y29tcGF0aWJpbGl0eWdtYWlsY29tLTU1Ow0KIGZpbGVuYW1lKjE9MjBDQUNFMkNCNjFFQTcxM0U1QjAwNTdGREU2ODU1NDhBRUE3ODguYXNjDQpYLUF0dGFjaG1lbnQtSWQ6IGZfUm5kaU5SYVB1QnhKeFBFQ3p1dnRNUkhxU2VnS3FuQGZsb3djcnlwdA0KQ29udGVudC1JZDogPGZfUm5kaU5SYVB1QnhKeFBFQ3p1dnRNUkhxU2VnS3FuQGZsb3djcnlwdD4NCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NA0KDQpMUzB0TFMxQ1JVZEpUaUJRUjFBZ1VGSkpWa0ZVUlNCTFJWa2dRa3hQUTBzdExTMHRMUXBXWlhKemFXOXVPaUJHYkc5M1EzSjVjSFFnDQpSVzFoYVd3Z1JXNWpjbmx3ZEdsdmJpQTRMalF1TndwRGIyMXRaVzUwT2lCVFpXRnRiR1Z6YzJ4NUlITmxibVFnWVc1a0lISmxZMlZwDQpkbVVnWlc1amNubHdkR1ZrSUdWdFlXbHNDZ3A0WTJGSFFrWnVPVWRzU1VKRlFVTnBRVlU0ZVdoNWJVNXhNbXhVZUVWSE1VOVZNRmhyDQpZVGwwVlVvMFFUZDNjMFJvU0U1dWRXaDRlbXBXVURnS1ZFUnVjRmRpSzJ0Uk4zQkVaMm8wVTBWcVdGWTFUa0ZMVEZNNVNWTlNjMmw2DQplRVYyZDI4NFNGZDFiRXd3YTIxdGJHRkZVMlExYjA1M1l6TXJDazgwUTNoWU0wMDViMDVFWVVWSVdHMXpjR2hYZVhaQ2RsUjRaRnBYDQpNMlExU1Rsa1ZEUjJha292Y0RkQmVtNVpPVGsxWWt0b1RFTkxOMHQ1YndwS05reGxLMGczU1RoRldGVm1Ua0pKYTBzM1FWVnRhSFI2DQpZVWd5Vld4b1prSjBTbXd6SzFaTE4yMUJhbVUyZDJkMlpqUmllaXQ0YzNWYUwzTUtSMnhSUVdoUmFuSlNZWGd2ZW1wVWVGTklaRVZxDQpRa29yYkRKblNYWkRibXRXWlRacEwwSmphbkZNVVZWMlNFcHpaM3BoUzNJck0xSnBNbEZ6Q2tGcVZrd3pUWFJ6VG5sVmFHRXlVVWx0DQphMWRUVURZeVNqSTRRVWRUWjJzMU5UWjJaRGxEVDFBNE9XUjRZMjFvV0d4dFpWUk5OREJCTWpsSFl3cDRUbnB2UWxWRVNuaGlXQzh2DQpaMnN4VmxaWWFFOUJPUzlDYXpaS1FWTTBWQ3R0TTBsbWRFc3pVVXBPUXk5NUsxTnVjVVJXT1hoM1FXdzBTMDBLT0hGQ2QyVlZkRVpLDQpNRmd5UXpSRVlrTTVSVWxRT1VZeVUza3lhbGRpVFRsamRXRlVSREl4YldwUlpFOVZOV05pVjJ0S1ZqUXdTREpHWjBWSUNtTmlTMEk1DQpLMGRzVFc1MFp5dDBVRlZHYkhKSlNsQlRTMmhFVlVKRGVXMHllbFZpYTFkcmVqWXdObkUxVnpWMmNGTlZUM1VyTTBkcFZqSllSZ3BsDQpSM1oyT1dGbWJrOXZiek55VEdwV1Z6UlZhVzFqUlVSTWNuaHBSV1JqZEN0dlJGUkpNRmhTVGxSTVNWVkdkRnB6YTJSRlZXVTNjRkJ2DQpjVmNLTkN0VVVIbzVSM2hWYkdaUU9VTnphVEZ3ZVd4blNFaGpiRzVGTjNNdlFpdGFLM1JxVlU5eWFFbGhlWGMyYWpCa1dYUnNNSHBDDQphRTFsTVRSS0NuYzFNMlpQTDBGTFpUUm9kR2hXV1U5SU1XOXFObnBUU2t0bFJYZEtXV1U1UmpodlpuTlJRVkpCVVVGQ0wyZHJSRU5RDQpiMVZzVkRST1puazNad3BaVDNZMVRqWkVlbXB5UkdobFN6UjRRMHhPZEM5eE5uTmxaekp6VEZwMGNWbEpZMGxWTHpWQlRuaHJaR2hGDQpURzkxUXk5dU1EbGtUMEpPYldNS1VYQnBVMGx1UTB0WlIyNVFSVWh4Y1VKaFkwWkxSWGRhU1hoSUszbFZRWG8xZDNKT1VFczRTREIyDQpaR1pvUjB4bk4xcFplbkJWUWpaRVZrcGhDa2h2TW05T1RYVTVWV2xaWnk5Q04yUTBNa3RpYzJwS2RWUnhSRUp6TDAxRFVXNTJVWEExDQpOMDFNU0RnNVZEaEJiMDB4SzBNeWMxQmFRa0pRUXdvMVNrVTBPRTVTYkd0a1NHbzBUMHgxYkhSQlMwRTVVVFIzU0dST09XdHdibVZSDQpOMnRMVnl0UFJVVnVObm8yTlhSMk5tRkdWRUk0T0VOcVkyUUtTMnQyUkZSWGJrZHZNbXM0UkRBNVIyRlNkMHRsUTFVemNsQkhSV2RTDQpObU5NUzFaUmRHVlpPSFpPTlhSMVkxcG9ZakYxVDFGUlVDdDJjMHN3Q2tJeGRGcExWRlZFV0VwR1NYSm1Ra0ZWTmpkWlRYZEhaRXN4DQpOa0pUY0RkVFRFNTRjbEpqY0hoQ2NrSlFla1l3YjJ3dlJpdHZPSGRQVUhsRk5nbzBNRTR4U3pCWFJYaE5aRmxSYW5wSFZHaGhhbmN5DQpaMGxTTWtONVRYWk1RMFpMYjJwdGRHcHRjREp3T1ROcmVuWnJSelJ0ZFhOV1lYbFJVbFVLV1ZselpVTjVVR3hrUTFWNmNVRjZaRGwzDQpVWGRRV1RkWmJUVjBjRlkzY1hGU1dHWk9jbXQ1YkVWQ1ZUWk9kMFpZTVVZMllucHdXRnBtUlhoMUNpOHhhV2x6V1VkbFRFNVZjVE5JDQpNVzVMY0hGVlpFZDNaakJ4Y1RWRWRVVTBaVXRuUmxaNFFqY3hURkowV0dvdllUbHRORUpaTVhkblUyVTBRd3BhVmt0NGNFUkROVUpNDQpUMHBEYkZGNU5qZzBhMHRrWlZad1ZtbFlWRzkyYmpSUGFHSnBVMmRVZW10U01FUm9aRGxVVDJsM1dteHVia2w2ZFVNS0t6VjZhR3RqDQpabkJ1Y1hWUVVtNWpjV1pTZGtwdmNsQnFTR3hyUlZGa2VuTjNhRFphY0RjM1JVMHJOekZGUWxaWVprTm1RVVJZV21zMGJUQnRDamhZDQpUMUV4VnpJelUwVTVjVmxhTVVseksxQm5RWEpEUVVWQmQxQkZjQ3R1YUZGNVJrOWtkbEl2Y1RWbmR5OVFjRGt6WW5Oa1dFTkdUR3hPDQpSUXBZV2tsTU5VNXJWak41Y0Zwa1RGaEZia1ZYWTJ4SFJ6ZGlOalF4YTBkRFRFNXBNVlJCTDBWdVZHaHlNRXBOY214RloxcHFaMlpHDQpSSEowTTFZS2JIbG1SV1JWYzFOU1VrNUdaa2RZY0RGVU4xWjZWbnB3TjBGaFExTTRkblp1YWpOMWFDOVZaV1ZyVjBaRE0xbFhVWG9yDQpORXhZSzNsRE9IcFdDaTlaTmpJeGQwSnJXbFZXYkd4TFdFVkRSSHByU0ZoTGFFRmhPWGRTYm05dU5VWTBXRGgzZVhsbFRtODFLM1IxDQpaWHB3YjBKeFVHdDNaRlV3Y2dwUVp6WjFaaTlJZUhWclpEVnpXVXRRVlVGc1NUUk5VV2w2TVUwd1pGUllVMUpLUW5oTmVYUnZNMm96DQplbEJpTDNKeFRYTnpkR0V2YUV0dlduRUtTMFJyYW5sNVJVVktVWE5GUWpCSVJHMUxRMUZ5UTFKTFdEbGpjRXB0Ums5S05XTmlhVFJMDQpiMGxuUmtGSVdYaHhOVXByVDFSUWVIVmhhbmhXQ2poUlJESlNibXRzVTBwSldGcHVMM0VyVW10Qk5EVkxXR0YwTVdOTlZHMVVZbTFDDQpZV051UzJWS1dqSmhha0Z6YUM5d1YwNU1OMVYwVWtoT2RRcEtjR1ZHVjFGUU5XeDVRMGRhYkM5RE1YbEJlRkpGZUZOeFRrZGthMm9yDQpiMVZsU1dzd1lYWlFTRTFTT1haVGJuZDFZVzByZERkNU1teGFlSFlLWVc0NVFYaGpiemMxY2taTmN6Wm9SM2hGYUUxU2FFdGxiSFZYDQpZMkozVjJsQk5UVlJTV2RWVUZNd2NVTk5jMk5GTlRSTE0wNTNOMUYzY0ZwTUNqbFZjbE5YUmxSNFNsRkZWVzVVTWxaS1IwWk9kalk1DQpXRmxEWVV4SlYzTm5hemRvVFV4SlV6WnZVRFl5VkZVd2J6UmtUbWRwWnpSSk0weFZMd3BYYWtaRU1qUTBLMEl3YTBoU2NqbGhaRXd2DQpWVGQyV0c1aWRGUlNNbTlCZWtveU9ERTJMems0Um14a2FUQjJXRWx2UTIxRlNTOHpNRUp4TkRRS1Z6WmFWbWxSTWsxR1owNW1NSGc1DQplRzVpT1ZSRmFUZFVOMFZzUjJWYWVrcFRTRXBGU0VNMVdYRlNTMHBaWkhWMlJWTnZhU3RMYVc5NE1uUnpDbTlUYWt4emNsWm9LMmwwDQpZMk5XVVRSTlNFcGhWek5xWkRCNWFscG5ObmRYVFZCV2EyWkRNMjU2YWxaemRrNTJWMjAxWlZoallsTm5ZV3AwZUFwWEwwcFdNVmRsDQpMM2xyYlRoaEwyRTJNMlpoY2s5R05UWk5ibXRYY2tobmVqQklSbVU1WWtsTVVIRktOV1pIZWtwU0wxcG1iVnBXVXpsd1pHa0tPV3AwDQpLMVp0VWtWR2NXaG9OVU5WWkdsSEsxQjRjV1ZYYkZCakswbEdhbWRCUmpaaUwwUk1hRVJITlU5dE4wcHBSSFZhWVhRemIyTnBWbmhhDQpDa00yYTFWcGRIUjJhMVpEYUhKdFpWSnFkR2d5ZG5aaVZsVlNiV3BRWldFdmVERXpWVFUxVUV4dlYzaHJhVlpWTTNaRU55OUlkaTl6DQpTMmhUU1FwTlNUTmtabFkwY0d0V2RrOVpWVVZ4VkRsQ01HTTBWRWRVUzFOUVpHWTBaVXgzWW1KQ1QzVk1RMUZ2VjJsRmJFMDRiak5ZDQpXakJ0WVZaWGEwVUtUSFpIYTNSS1NqVnZNbUpJTW1kU1lWQnNVMDgwT0hsT1prcFRXR3RWTWxSMlJWTndRbFEwYTFCNGFIQXZRM2xsDQpNVE5OYkdSVWVYaFpPVGwxQ21GTVdsTTVVbWRSWmpOU1oybHJXWGN4SzFaWlZGUjNla3B3ZWs1UE1GcHpZak5rUkdOdWJIZGtRMEpFDQpZakl4ZDFsWVVuQlpiV3h6WVZoU05RcEpSSGh0WWtjNU0xa3pTalZqU0ZGMVdUSTVkR05IUmpCaFYwcHdZa2RzTUdWVlFtNWlWMFp3DQpZa00xYW1JeU1DdDNjMFl4UWtKQlFrTkJRWEFLUWxGS1dpOVNjRmhDWjNOS1FuZG5SRUZuYTFGbU9UVnZWbFZwZFhBMFowVkdVV2RMDQpRV2ROVjBGblJVTkhVVVZEUjNkTlEwaG5SVUZCU1Uwd0NrUXZiME54U25kalRERlJVVUZFZEZOcE1XTmlUbk50TUZabmRua3phblV4DQpkMFJLT0dGTGRFSnRLMHcwYlc5WloyZE9aMll5WW1wb1lUUlhkd3B5V25scFpuaHNRMFJQZEVWTlIwUkNiVU5zZFhoTFJVeDJhRzVPDQpNa3BUWkVVdlN6UlpVMlEzZUVwdk1qbFlRek5xVjNSQ2JrZDJVSGd2VTJJS1FsWnRjbll3UzA5TlMwMWxOV1Z1TmtwVmRXZ3ZVbk13DQpUbWw0UzNsYUwwdFRjemt6VjNOUmFVNXZSMUptVDNsRWVWSXhabTlvTDFsdk9YSllDbWR5WWxCWWMzQk5RbXBXVGs5ek9XcHZTbE13DQpOa3RLY2pSQ1ozRjJOM1pWVGt0bk5XSkdXalZuVmtVck5GVlJaVFJWZVhFMlp6TnZaakYxTlFwdWRUSkZRMGs0Tmxrd2MxZGhlVzFxDQpTSHAzWkdWbUsyRmtVemsxZEUxaGQxSlZhMnMwYVd0MFZGcHZRVTFqU3l0dU5VazNURTVvVlZFM2FuSUtkVFZRZDFob1NVaG5SVmRDDQpNR2s1Y3pkNVZVeDZlRTE1YUhWQk5tZHpjMmhxV2xsdFRFNDBPSGR2U1M4NWR5OVdlSEpCVEhSdU9WZFhXRGRsQ2psT1FqaHZOWFpSDQpSMmRQYUZwSFIxVkJXbWcxT1hsdlNtRXdjRzgxU0VOSVNGSjZVRnBZZFdGakwyUm9XWGxsVG1wUE1GUnlTRWxpVERoaE1RcDJTa2hpDQpaa0ZpVW1SVmFGZGpWRGhYUVN0d1FXUmxTbVZPTWpCdk4yODRjSGhVVlU5TmJEQnNZbkZxTldweVYwZDBiRmxhTkVaSmNsUkhMMlVLDQpVR3BvWlVaNGNWSkdVVzFKYlRGdlVFdDRPRVY1Y1V0ekwwOXFhWGwwVEc1WGNuVkpjRVV4VFRZcmQydFFZV281U0dwbFlqbFZRVkJ6DQpWMnhIQ21kTlkyWkdPSFZRZVVzMmFuTTFXV3B2TWsxM1RTOXdUemxDU1dGNGEyczNlR3hyYldST2NqTlRSemhtTjNoNVJsWkhNa000DQpWRUo1YkZJNVRncGpNR2RyUlRJclF6bFFWek5hT0dKMFJUVjJlazlvZGpsMFJ6WTFWamR1UXpkcVVDOUVaMjE0ZVRjMGFFbHNSMnBCDQpjV3hRU1VWWWRYSkZTVXNLY0RKUGIwNTNOemhIV1dvM2JYbFZaMmN3YkhwWlpUZFViR05tUjJoblVsb3ZVbkJUUVZKQlFUTTVSVFpODQpRMHhDY0dwdlpFVTJLM2RLY21SNUNtY3hXa0pqVm1wTk9FdEllbkF4VVZCcWRESkpSMEZuVEVWbFZuSXdaR1pGT0VkMEwxazJiMDQ0DQpaMjUxYUdWc2RtaFVTbGx5TDNWd2RHNU5TUW95WXpOamFFaDNLMWN2WkUwMFFsZDNkbVpoYzFoMVMyWm5ZMXBUYkhGMVRFMU1kbUUyDQpSa1ZXWVdGMmRIVnhibkV2VmxWaVVFSmhWV3g2YmtJS05ETTRZbnBEU3pOblNuRlNSMlJTSzJKek0wTXJUM0Z3WmtkRWF6UXhkVmc1DQpibTlqZG5adUwxSTRZbFJFU0ZKVVJWUlFjSGwzUW5GdlFsQkpDak5wVEc1eVJWY3hlRzVRVVhJeVVrcFhURW94YUVWSVJYWTFjWGxCDQpkSFZvYUZCT2RrNXRNbkZVYVV4SFdUY3dSak5XV1ZSMU5VbHJRMjU1ZWdwVUswVlNhMXB1UjFoWVQxbFZRbkZKYUVjemJqUlRNMWRsDQpaRUV4WlZsSU5FTTRUVTFLWlZWTFdWTmtjVGw1TTFGT1IwSTROSHBqY0VOWGJVc0tVMlZyV0Uwd09ESlNZbUZtZWpoRVpsTkdWSHB1DQpLM0ZyUm1OeGFFVXJNMVU1Y2toSlNrVk9XbkJaZDFRMVFtNVBTbm8yTTI5YVF6aEJZMjl1Q2xKemJESkpZbkZNYzBKWFJVUm5abW81DQphRnBhYzNJMU9EaHBTMHRHVDFoeFFsSXpiRE5ZVmk5dE5qTnBRMmxqVTJOcVltMDBPVkpSZEVNNWJncFBkM1JUUzNCQ2VITndOa3BoDQpZbkppUzNOSFZGbHJUVmhTUTNSQ1UzbGxRekJPWjAxNVRYaG5VREF5Y3pOUWQwUkxZV2QwU1d0a05sRXJOMHdLV0VWTVRFUm9kbEpGDQpVMW94U0c1Q2IwMDFjREZpY1RWWmIxRjNibmRtYVhkSVlXTnNibTk2Wkdwd1QzaG9USEIyVUVadlFsaFNkVWxuWVZkekNuZzBlRU5NDQpTVWhIVEVRck9FOXlkVko0Y21oaVlsQklURGhNVUVKNFdHZFVhSEZZWjNRM1RuRnlWVmRZWmxaaVNHRmpNMEZ1YVZCTFYyODJkZ3BtDQpVRlJFY0RWVFl6WkdURUZPU0hWS2FFOWFRM04wVG1sRVFWWjZZalYxUVZOelZVcHFNRUkwWW5nd2FXZEtLekJzYWxGaVJWVTFURVZJDQpTV29LWlVwTlFVVlJSVUZCWmpSS1FYZHBWbGhZYlM5aVJHNTFla2RCTUdwWlRFMXBibVJGY21NcmIyWkxUV2hEUWpZd1ZFbG9UamQzDQpSVE0zZUdabUNrSk9kVFp5YWtsUFpGUndNR2x1U1d4c1dFRmxZbkZITmtwTmFVdEhNRWRqTlV4MGNYaHlkWGh6TnpCU2EzaDJiakZ4DQpPREV6Y25RelJVOWphUW93WWtWWk5sRjJPQzl4VTI5cWMydGxZVEZEV0dKaVkyeHFXbEJSYTNKbGNUazNaVTl3WW5oelIzUlBZM1JSDQpSa3RDT0VKc1lXZDBWakl2UWxZS1VXdFhaRTAwWTJObmFGaFVkUzgxZGtseWNGRjJlalpRUWtWUE0wdHljVE5SZW1OVGIzZ3ZPRGNyDQpWMjhyWTBoTlNtZHlZVWRoTVc1ek9ESnlDbVVyYlRnMlRrMURORGRoWWxaeU9DdExWQzkwVTFCSVRrbFpiRXhYWjFOS1NXdzVNMjFFDQpTV3R2VlZkVlJXUXZRVVEzVW5OTGVtWktTMnBMVndwb09VOUpjbk15ZFZkUE5XUm5WelYyYTNoRWRXWmlUV05EU1VwUFlsSjBjakVyDQpjMkU0VkdkMmNIRTFNRFJoWldwdFpXbHBSQ3RQZUdrdlEzY0tXbTFKU2pWdlprOVNSRXRaZURRMFRHSnhNRmg1UWl0WlVrSnJabFFyDQpkekl2V0RSelUyMUpiRUpoZWpKYVZqaHRVbGxIWlU5bksyMVBkRzV6Q2xOWVdFSkhUMFpPZFZkdVUzUTJRMFF5TUVOeGFsVlNjME5yDQpVVWhHWWtKMlRVZHFlREV5UkZGVVVYcE1ORkJyWkVSd1NIVnphMWxRU0RaTGR3cExZM3BDTURWMU1HdERSbEZKVGxrcllXcDFTR0psDQpZM0JXZVROUmR6WnphMHhQUVZNeWRWSkljWE4zU2tObmRGZHdZbXRFVTAxbVVsVktWMlVLZWpoc1UyZzJNRlkxUVM5YVVHVk5ZaTlHDQpOaTlQTkdWUWNXdDJXR0p5U1N0aGF5OHJRM0pyT1c1SE5rZFVTVzFtVGxwQ1NXd3daM1J1YVhodkNsRlJlVGsyVmpJMmRFOXVWazlCDQphSGxyVWtscFNsTkpZMVkwUlRKTlVDdDJhMjAzUTJGMFRHMDBVMEZPVDJrNWNUVk1ZM0JYWkZSU1pIVjJNQXB0TURrd1luZEtaM05uDQpUbmcwWm5oSU5qQnBWRnBtVlN0U2RubDFkRzFLTlRjMGNucDROMk12S3l0dmRYZHNkRVV4WjJRelNXSmtNekIzY1VzS1JHazBOV0pFDQpUMjgxY2k5cWFURlZUWEV5YlhaM2JWRjFaRTAwWkdWSWFDdFNhMlpyYnpablVVVlBSamsxYzJGb09UbFdSWE5HT1dJM09VSndDbHB0DQpjR1JJVFdWTGJtdHliakZCWWxadGFXTmxVRTR6SzI1VGMySXhRa3BoU1VSMldEazNXSEpKU2tZNWVqZEZWa0UxV0RaRlpqQkJaRXhwDQpTd3B3VlRSak1XdGFNRk5yWVZGUWFFeHNNMjlOZVdGb1EyVjZOSFp3ZWxSYU1Hc3hOMjFYZVVkVVZ6bFhaemhUVG5WbWRsRm9aWEJFDQpTR1oyUkcwS2RFczVhblE1V0haaE5uaEJRVlpqTlVKRlQwZFdORlp6V1dWVVkzSjZNR3Q2VmtWeE9TOUVlbFJDUjBoMGNFVktlbVF4DQpTVTV4WjJweE1sSjVDbk5qUjJKRFpUWkhNVU5tU3psQlRGVkZTWE53VG5od1pTOUZVMGxxVkhoM05YQkJNRE5NWTFoUE1rMUJZVGN4DQpMMVJUUkRoRVZITnBUMVpxU3dwc2FtaFBSakZvTkZWTU56QmpVemM0ZEhwYVNqWkxlRVZKUjFwU2FuWmFVWGNyV21SdlZtMVRkekJ1DQpOSEZ3UTA1TGNqTm5iMkZHZUZKelJqQUtTalE1WWk5eVlubDFXak5hTVZodWMyUTVhbmwyYjNjellUUlVaSEpRWldSM2NqSXdPR0oyDQpaU3REVVZCdFFqZGplVGR0WldwdksyUmlTbWxDQ2pKM01URldjMUoyWjBKRVF6STNTalpwYjA1aE1IRXZZV012WjJSc2FEVmtXbFl6DQpaMWRrTTBOV0wybDZTbGt4VVhOQldEQXhORXhHZWpkNFJ3cFZTVnBRV0RWak1EZEhkbEZUV0RSUlpVZFRiakYzYlV4SGJFTmhOa2c0DQpUMUZpVW1sNk5qZEpaa0kzVHpCUlFYSlhWMmwyVTFKRlZsUTJaVFFLWWpGc1pFWlRhalJGUTJ0aE1qWlBaMFpNVTA1UVlXWnNUVWRIDQpaRVEyY0dKQ2FVSXdkWFpPYVZKRmJrUmFTM0ZhYUc1VlNrTXlSR1JEVWs1d0NrcEhUeXR1YVN0TGMxaEljbEo1UVhwbGVWVkdTRkZCDQpZM1JUU0VaNFdIZGtaVUo0WWxCbVRVdDBkRzlaYzJsQkwzQTBkblJUY1RGWlRVdHZWUXA0YkVWV2JGRXhTSE40VUdob2NFWk5ZMkZFDQpUMHBGVlhSV2VVWnNaRkJaZDFKM1pXNUdZMUJrUzJoWFdqQnRiamxOUW10d2JVOVhVRFJyTWtzS2NYUjVOMHhMYlhOTGRuSTVObEprDQpSV3BNZFZaeVdGWjZUbmxNVFhORVVHZzFabk5zU0hWek1tRnNWMnA1TVRVNVpIWlhhWEpMUkcxRFUwbDBDbkZsVGtoaE5WZzFZWGd4DQpjSGRrVURWMFEzaE5VSGRCTVZsRWVuVk9iVXR2Y0U5bWNXUlJiVXBqVVhWeFVFOHJhVE15VldGM1VIQTJWR1JyZGdwU05rZEZObTh5DQpkMnhKYW1SWE5tTkRlbEYxTlUxNWNFdHZjRzVCWkdNelpEVmFObGw2VFRCNlRtTnNjakUzVHpBeGRtNUpOV3REUkhWTVVtb0taVUZDDQpiMDlMVmxSelNYSTFjRkJTZWpKblJtRm1kbE5QZFM5MWRVZFRkMVU1VW05b1MyNTFNMHBCUnl0dWRWZFhNbE0yTXpNMFdTOVNRMGt4DQpDalpQYVV0R1RYVlRMMlZ1ZW1GelVrMHlNR1ZNVW01TGRUVXlTRzFEVms5V1RVUjNhVGRsYXpWclR5OUZNSHBNVUU4eU5uaGlaaXM1DQpXalpUVVFwU1ZsQlNhVkZsTm1JME0wbExhMUUyV1dSclIwVnVWbXRVZHpselVHTTJaMmgzZVdSTGFFVjVZamRSVjJJclNscExiVEZFDQpkM05HWmtKQ1owSUtRMEZCVkVKUlNsb3ZVbkJhUTFKQ0x6TnRhRlpUU3padWFVRkpZa1JCUVVGT1RtdFFLM2RZZDNORk5IQnFaMkYxDQpOV0pMUzNCVU1VbE5UVTlvQ2s1aWJUVXlVMVV4V201TmNUbHFUR1Y1UWtsclRWVjVkRFpsZVhOa0wwZFdUVFpSVDNkSVZHTnJaVWd4DQpibTFzYzNaaFltSnZVbWhTS3pCck5ncFVSelJDWW5vdlozVkRhWEEyYW04MmNUZGlNMVV4U2xkSVZDOHlRMDVCTmpaSkswOXZMMk5KDQpRM1I2UkVGRk56WmtNbTRyZVdFNFVYSk9TRllLY0ZaWU1EWjRlV1ZxWVVJd09XMW9RbkphYW1aVldYVmhhMDlKTlZOQ2RXOVpXbVJsDQpVR0ZRZGtSc2JsUkVNMk4wTVZWV04wRlFZaXQ1ZDNSRUNqTjVhazFsT1RKT1RVb3pSVGRwTXpSWlNGQkhiVlJRVEZadmVtazFNRVkyDQplRFY1U0RoUWExSlRabXhwYjNkclZ6TldaVFZxTTFCa1JYUldXZ3BEWjNWeVZscFNVMmRvWTA5clIzaFJkMnBMUkNzemFVUnphRTByDQpPVFZaTTAxb1Jub3pURlJ3YzFsR1ZIcE5TVlJxY1dORVFsWnhMM2MwVHpFS2JIZE9SWFpXYW5CR1RuQTRhR1k1ZW1Kd1ZWaDZNSEJqDQpVMEoxVGpaRk9XbFdSRk00YWpoSGVtVndNVWxaY2tJeFppODFPVzVCVkVKaE9IVjNDblJLVkVsTVNqaE5kakIzZWtKbGJIbzNjMXBuDQpiRkZPV25nek5rdFNha012U0hjeVlXVnlWVlZHVVhwR2Fra3pXbUZ2THpRNVNFcHNSVzFNWndvM1N6WTFkRlZSVTAweFZIbzVTWGx0DQpORFZaYWt4d2JVbDZhamw1TmxNMGExcEVXbkZYY0ZreFVuRlViSEpRY1V4alowazJSMDEzZDNSV00wVUtkR2xSUm10Tk0zVnFOR0l4DQpiMFZDYlhsT2IwcHpZazAxWTNCSk1scHdNR2RuT1dSVWNXUk1iMUZtU1RSd1VXNDVORTFWV2s0clpETnJZVkpoQ2xWeWRTOXpaaXRSDQphWEpNTUdGREwxQnhVQ3Q0Tm5GcFVUTjBabWxsTlhwMlJUVlBOWFp3V1dwWGR6RkdRalE0YVRkRVlUWmlOV2x1V0dsalJ3cFVjbTlxDQpUelpQWlM5Q2NqRjBXRkJsWlRWbFJXb3pVbGxOZFdVM2R6VkVTVUkzT0RObkt5OHliR1UzVldkaFJHY3pTSHBLWjBWMU5IazFlRFlLDQpQU3RCTUVrS0xTMHRMUzFGVGtRZ1VFZFFJRkJTU1ZaQlZFVWdTMFZaSUVKTVQwTkxMUzB0TFMwSw0KLS0tLS0tc2luaWthZWwtPz1fMS0xNjg2MDgwNDgzNDk4MC4xNzQxNjc0MDEyMDkyNDQ0NS0tDQo=", "historyId": "1423368", diff --git a/test/source/tests/compose.ts b/test/source/tests/compose.ts index 369033df536..99815bc84e1 100644 --- a/test/source/tests/compose.ts +++ b/test/source/tests/compose.ts @@ -169,7 +169,7 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te ); test( - 'compose - trying to send PWD encrypted message with pass phrase - should show err', + 'compose - trying to send PWD encrypted message with passphrase - should show err', testWithBrowser(async (t, browser) => { const acctEmail = 'ci.tests.gmail@flowcrypt.test'; await BrowserRecipe.setupCommonAcctWithAttester(t, browser, 'ci.tests.gmail'); @@ -180,14 +180,14 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te await composePage.waitAndType('@input-password', msgPwd); await composePage.waitAndClick('@action-send', { delay: 1 }); await PageRecipe.waitForModalAndRespond(composePage, 'error', { - contentToCheck: 'Please do not use your private key pass phrase as a password for this message', + contentToCheck: 'Please do not use your private key passphrase as a password for this message', clickOn: 'confirm', }); // changing case should result in this error too await composePage.waitAndType('@input-password', msgPwd.toUpperCase()); await composePage.waitAndClick('@action-send', { delay: 1 }); await PageRecipe.waitForModalAndRespond(composePage, 'error', { - contentToCheck: 'Please do not use your private key pass phrase as a password for this message', + contentToCheck: 'Please do not use your private key passphrase as a password for this message', clickOn: 'confirm', }); const forgottenPassphrase = 'this passphrase is forgotten'; @@ -198,7 +198,7 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te await composePage.waitAndType('@input-password', forgottenPassphrase); await composePage.waitAndClick('@action-send', { delay: 1 }); await PageRecipe.waitForModalAndRespond(composePage, 'error', { - contentToCheck: 'Please do not use your private key pass phrase as a password for this message', + contentToCheck: 'Please do not use your private key passphrase as a password for this message', clickOn: 'confirm', }); }) @@ -274,7 +274,7 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te ); test( - 'compose - signed with entered pass phrase + will remember pass phrase in session', + 'compose - signed with entered passphrase + will remember passphrase in session', testWithBrowser(async (t, browser) => { const acctEmail = 'ci.tests.gmail@flowcrypt.test'; await BrowserRecipe.setupCommonAcctWithAttester(t, browser, 'ci.tests.gmail', { @@ -285,17 +285,17 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te await SettingsPageRecipe.forgetAllPassPhrasesInStorage(settingsPage, k.passphrase); const inboxPage = await browser.newExtensionInboxPage(t, acctEmail); const composeFrame = await InboxPageRecipe.openAndGetComposeFrame(inboxPage); - await ComposePageRecipe.fillMsg(composeFrame, { to: 'human@flowcrypt.com' }, 'sign with entered pass phrase', undefined, { + await ComposePageRecipe.fillMsg(composeFrame, { to: 'human@flowcrypt.com' }, 'sign with entered passphrase', undefined, { encrypt: false, }); await composeFrame.waitAndClick('@action-send'); await inboxPage.waitAll('@dialog-passphrase'); const passphraseDialog = await inboxPage.getFrame(['passphrase.htm']); - await passphraseDialog.waitForContent('@lost-pass-phrase', 'Lost pass phrase?'); + await passphraseDialog.waitForContent('@lost-pass-phrase', 'Lost passphrase?'); await passphraseDialog.waitAndType('@input-pass-phrase', k.passphrase); await passphraseDialog.waitAndClick('@action-confirm-pass-phrase-entry'); await inboxPage.waitTillGone('@dialog-passphrase'); - await inboxPage.waitTillGone('@container-new-message'); // confirming pass phrase will auto-send the message + await inboxPage.waitTillGone('@container-new-message'); // confirming passphrase will auto-send the message // signed - done, now try to see if it remembered pp in session const composePage = await ComposePageRecipe.openStandalone(t, browser, 'compose'); await ComposePageRecipe.fillMsg(composePage, { to: 'human@flowcrypt.com' }, 'signed message pp in session', undefined, { @@ -802,7 +802,7 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te for (const inputMethod of ['mouse', 'keyboard']) { test( - `compose - reply - pass phrase dialog - dialog ok (${inputMethod})`, + `compose - reply - passphrase dialog - dialog ok (${inputMethod})`, testWithBrowser(async (t, browser) => { await BrowserRecipe.setupCommonAcctWithAttester(t, browser, 'compatibility'); const pp = Config.key('flowcrypt.compatibility.1pp1').passphrase; @@ -838,7 +838,7 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te ); test( - `compose - reply - pass phrase dialog - dialog cancel (${inputMethod})`, + `compose - reply - passphrase dialog - dialog cancel (${inputMethod})`, testWithBrowser(async (t, browser) => { await BrowserRecipe.setupCommonAcctWithAttester(t, browser, 'compatibility'); const pp = Config.key('flowcrypt.compatibility.1pp1').passphrase; @@ -858,7 +858,7 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te ); test( - `compose - pass phrase dialog - dialog cancel (${inputMethod})`, + `compose - passphrase dialog - dialog cancel (${inputMethod})`, testWithBrowser(async (t, browser) => { const k = Config.key('ci.tests.gmail'); const acctEmail = 'ci.tests.gmail@flowcrypt.test'; @@ -875,7 +875,7 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te expect(passphraseDialog.frame.detached).to.equal(false); await Util.sleep(0.5); expect(await composeFrame.read('@action-send')).to.eq('Signing...'); - await passphraseDialog.waitForContent('@passphrase-text', 'Enter FlowCrypt pass phrase to sign email'); + await passphraseDialog.waitForContent('@passphrase-text', 'Enter FlowCrypt passphrase to sign email'); await ComposePageRecipe.cancelPassphraseDialog(inboxPage, inputMethod); await Util.sleep(0.5); await composeFrame.waitForContent('@action-send', 'Sign and Send'); @@ -883,7 +883,7 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te ); test( - `compose - non-primary pass phrase dialog - dialog cancel (${inputMethod})`, + `compose - non-primary passphrase dialog - dialog cancel (${inputMethod})`, testWithBrowser(async (t, browser) => { const k = Config.key('ci.tests.gmail'); const acctEmail = 'ci.tests.gmail@flowcrypt.test'; @@ -905,7 +905,7 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te const passphraseDialog = await inboxPage.getFrame(['passphrase.htm']); expect(passphraseDialog.frame.detached).to.equal(false); await composeFrame.waitForContent('@action-send', 'Loading...'); - await passphraseDialog.waitForContent('@passphrase-text', 'Enter FlowCrypt pass phrase to sign email'); + await passphraseDialog.waitForContent('@passphrase-text', 'Enter FlowCrypt passphrase to sign email'); await passphraseDialog.waitForContent('@which-key', '47FB 0318 3E03 A8ED 44E3 BBFC CEA2 D53B B9D2 4871'); await ComposePageRecipe.cancelPassphraseDialog(inboxPage, inputMethod); await composeFrame.waitForContent('@action-send', 'Encrypt, Sign, and Send'); @@ -914,7 +914,7 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te } // end of tests per inputMethod test( - `compose - signed and encrypted S/MIME message - pass phrase dialog`, + `compose - signed and encrypted S/MIME message - passphrase dialog`, testWithBrowser(async (t, browser) => { const k = Config.key('ci.tests.gmail'); const acctEmail = 'ci.tests.gmail@flowcrypt.test'; @@ -935,7 +935,7 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te await composeFrame.waitAndClick('@action-send', { delay: 2 }); const passphraseDialog = await inboxPage.getFrame(['passphrase.htm']); expect(passphraseDialog.frame.detached).to.equal(false); - await passphraseDialog.waitForContent('@passphrase-text', 'Enter FlowCrypt pass phrase to sign email'); + await passphraseDialog.waitForContent('@passphrase-text', 'Enter FlowCrypt passphrase to sign email'); await passphraseDialog.waitForContent('@which-key', '47FB 0318 3E03 A8ED 44E3 BBFC CEA2 D53B B9D2 4871'); await passphraseDialog.waitAndType('@input-pass-phrase', forgottenPassphrase); await passphraseDialog.waitAndClick('@action-confirm-pass-phrase-entry'); @@ -1327,7 +1327,7 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te ); test( - 'compose - loading drafts - PKCS#7 encrypted draft with forgotten non-primary pass phrase', + 'compose - loading drafts - PKCS#7 encrypted draft with forgotten non-primary passphrase', testWithBrowser(async (t, browser) => { const acctEmail = 'flowcrypt.test.key.imported@gmail.com'; t.context.mockApi!.configProvider = new ConfigurationProvider({ @@ -1376,7 +1376,7 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te await composeFrame.waitAndClick('@action-open-passphrase-dialog'); const passphraseDialog = await inboxPage.getFrame(['passphrase.htm']); await passphraseDialog.waitForSelTestState('ready'); - expect(await passphraseDialog.read('@passphrase-text')).to.equal('Enter FlowCrypt pass phrase to load a draft'); + expect(await passphraseDialog.read('@passphrase-text')).to.equal('Enter FlowCrypt passphrase to load a draft'); const whichKeyText = await passphraseDialog.read('@which-key'); expect(whichKeyText).to.include('9B5F CFF5 76A0 3249 5AFE 7780 5354 351B 39AB 3BC6'); expect(whichKeyText).to.not.include('CB04 85FE 44FC 22FF 09AF 0DB3 1B38 3D03 34E3 8B28'); diff --git a/test/source/tests/decrypt.ts b/test/source/tests/decrypt.ts index 3cc7a9551bd..809571c6b9c 100644 --- a/test/source/tests/decrypt.ts +++ b/test/source/tests/decrypt.ts @@ -1065,7 +1065,7 @@ XZ8r4OC6sguP/yozWlkG+7dDxsgKQVBENeG6Lw== ); test( - `compose - #5125 test pass phrase anti brute force protection`, + `compose - #5125 test passphrase anti brute force protection`, testWithBrowser(async (t, browser) => { await BrowserRecipe.setupCommonAcctWithAttester(t, browser, 'compatibility'); const wrongPassphrase = 'wrong'; @@ -1094,7 +1094,7 @@ XZ8r4OC6sguP/yozWlkG+7dDxsgKQVBENeG6Lw== ); test( - 'decrypt - by entering pass phrase + remember in session', + 'decrypt - by entering passphrase + remember in session', testWithBrowser(async (t, browser) => { const { acctEmail, authHdr } = await BrowserRecipe.setupCommonAcctWithAttester(t, browser, 'compatibility'); const pp = Config.key('flowcrypt.compatibility.1pp1').passphrase; @@ -1977,7 +1977,7 @@ XZ8r4OC6sguP/yozWlkG+7dDxsgKQVBENeG6Lw== }) ); - test.todo('decrypt - by entering secondary pass phrase'); + test.todo('decrypt - by entering secondary passphrase'); test( `decrypt - signed only - parse error in a badge`, diff --git a/test/source/tests/elements.ts b/test/source/tests/elements.ts index 202e8d4ffe6..c2c7dc9b698 100644 --- a/test/source/tests/elements.ts +++ b/test/source/tests/elements.ts @@ -36,11 +36,11 @@ export const defineElementTests = (testVariant: TestVariant, testWithBrowser: Te ); await ppPage.waitAndType('@input-pass-phrase', passphrase); await ppPage.waitAndClick('@action-confirm-pass-phrase-entry', { delay: 1 }); - await ppPage.waitForContent('.ui-toast-title', '1 of 3 keys was unlocked by this pass phrase'); + await ppPage.waitForContent('.ui-toast-title', '1 of 3 keys was unlocked by this passphrase'); await SettingsPageRecipe.addKeyTest(t, browser, acctEmail, testConstants.testkey0389D3A7, passphrase, {}, false); await ppPage.waitAndType('@input-pass-phrase', passphrase); await ppPage.waitAndClick('@action-confirm-pass-phrase-entry', { delay: 1 }); - await ppPage.waitForContent('.ui-toast-title', '2 of 4 keys were unlocked by this pass phrase'); + await ppPage.waitForContent('.ui-toast-title', '2 of 4 keys were unlocked by this passphrase'); }) ); diff --git a/test/source/tests/flaky.ts b/test/source/tests/flaky.ts index f95e5598a4d..ffb2d1f0717 100644 --- a/test/source/tests/flaky.ts +++ b/test/source/tests/flaky.ts @@ -426,13 +426,13 @@ export const defineFlakyTests = (testVariant: TestVariant, testWithBrowser: Test const inboxPage = await browser.newExtensionInboxPage(t, acctEmail); await BrowserRecipe.finishSession(inboxPage); const composeFrame = await InboxPageRecipe.openAndGetComposeFrame(inboxPage); - await ComposePageRecipe.fillMsg(composeFrame, { to: 'human@flowcrypt.com' }, 'should not send as pass phrase is not known', undefined, { + await ComposePageRecipe.fillMsg(composeFrame, { to: 'human@flowcrypt.com' }, 'should not send as passphrase is not known', undefined, { encrypt: false, }); await composeFrame.waitAndClick('@action-send'); await inboxPage.waitAll('@dialog-passphrase'); const passphraseDialog = await inboxPage.getFrame(['passphrase.htm']); - await passphraseDialog.waitForContent('@lost-pass-phrase-with-ekm', 'Ask your IT staff for help if you lost your pass phrase.'); + await passphraseDialog.waitForContent('@lost-pass-phrase-with-ekm', 'Ask your IT staff for help if you lost your passphrase.'); expect(await passphraseDialog.hasClass('@forget-pass-phrase-label', 'hidden')).to.equal(true); expect(await passphraseDialog.isChecked('@forget-pass-phrase-checkbox')).to.equal(true); await inboxPage.close(); @@ -603,7 +603,7 @@ export const defineFlakyTests = (testVariant: TestVariant, testWithBrowser: Test }) ); test( - 'decrypt - entering pass phrase should unlock all keys that match the pass phrase', + 'decrypt - entering passphrase should unlock all keys that match the passphrase', testWithBrowser( async (t, browser) => { const acctEmail = 'flowcrypt.compatibility@gmail.com'; diff --git a/test/source/tests/page-recipe/settings-page-recipe.ts b/test/source/tests/page-recipe/settings-page-recipe.ts index 1f95744bb2b..f62a9b479cf 100644 --- a/test/source/tests/page-recipe/settings-page-recipe.ts +++ b/test/source/tests/page-recipe/settings-page-recipe.ts @@ -61,7 +61,7 @@ export class SettingsPageRecipe extends PageRecipe { await securityFrame.waitAndClick('@action-show-confirm-new-pp', { delay: 1 }); await securityFrame.waitAndType('@input-confirm-new-pp', newPp, { delay: 1 }); await securityFrame.waitAndClick('@action-confirm-new-pp', { delay: 1 }); - await securityFrame.waitAndRespondToModal('info', 'confirm', 'Now that you changed your pass phrase, you should back up your key'); + await securityFrame.waitAndRespondToModal('info', 'confirm', 'Now that you changed your passphrase, you should back up your key'); await securityFrame.waitAll('@container-backup-dialog'); // offers a new backup await securityFrame.waitAndClick('@input-backup-step3manual-file'); await securityFrame.waitAndClick('@action-backup-step3manual-continue'); diff --git a/test/source/tests/page-recipe/setup-page-recipe.ts b/test/source/tests/page-recipe/setup-page-recipe.ts index fc3b40ff2b5..d37969abfb5 100644 --- a/test/source/tests/page-recipe/setup-page-recipe.ts +++ b/test/source/tests/page-recipe/setup-page-recipe.ts @@ -81,7 +81,7 @@ export class SetupPageRecipe extends PageRecipe { expect(await settingsPage.isChecked('@input-step2bmanualcreate-save-passphrase')).to.equal(checks.isSavePassphraseChecked); } await settingsPage.waitAndClick('@input-step2bmanualcreate-create-and-save'); - await settingsPage.waitAndRespondToModal('confirm-checkbox', 'confirm', 'Please write down your pass phrase'); + await settingsPage.waitAndRespondToModal('confirm-checkbox', 'confirm', 'Please write down your passphrase'); if (backup === 'none') { await settingsPage.waitAll('@input-backup-step3manual-no-backup', { timeout: 90 }); await settingsPage.waitAndClick('@input-backup-step3manual-no-backup'); @@ -186,7 +186,7 @@ export class SetupPageRecipe extends PageRecipe { await Util.sleep(1); const generatedPp = await settingsPage.value('@input-step2bmanualenter-passphrase'); if (!/^[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}$/.test(generatedPp)) { - throw new Error(`Import naked key page did not generate proper pass phrase, instead got: ${generatedPp}`); + throw new Error(`Import naked key page did not generate proper passphrase, instead got: ${generatedPp}`); } const ppValidationExpect = 'GREAT (time to crack: centuries)'; const ppValidationResult = await settingsPage.read('@container-password-feedback', true); diff --git a/test/source/tests/settings.ts b/test/source/tests/settings.ts index 150ee74cccc..3e44426e9f1 100644 --- a/test/source/tests/settings.ts +++ b/test/source/tests/settings.ts @@ -131,7 +131,7 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T }) ); test( - 'settings - test pass phrase', + 'settings - test passphrase', testWithBrowser(async (t, browser) => { const acctEmail = 'flowcrypt.compatibility@gmail.com'; await BrowserRecipe.setupCommonAcctWithAttester(t, browser, 'compatibility'); @@ -153,27 +153,27 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T const baseUrl = `chrome/elements/passphrase.htm?acctEmail=${acctEmail}&longids=${longid}&parentTabId=`; let passphrasePage = await browser.newPage(t, baseUrl.concat('&type=sign')); await passphrasePage.waitForSelTestState('ready'); - expect(await passphrasePage.read('@passphrase-text')).to.equal('Enter FlowCrypt pass phrase to sign email'); + expect(await passphrasePage.read('@passphrase-text')).to.equal('Enter FlowCrypt passphrase to sign email'); await passphrasePage.close(); passphrasePage = await browser.newPage(t, baseUrl.concat('&type=message')); await passphrasePage.waitForSelTestState('ready'); - expect(await passphrasePage.read('@passphrase-text')).to.equal('Enter FlowCrypt pass phrase to read encrypted email'); + expect(await passphrasePage.read('@passphrase-text')).to.equal('Enter FlowCrypt passphrase to read encrypted email'); await passphrasePage.close(); passphrasePage = await browser.newPage(t, baseUrl.concat('&type=draft')); await passphrasePage.waitForSelTestState('ready'); - expect(await passphrasePage.read('@passphrase-text')).to.equal('Enter FlowCrypt pass phrase to load a draft'); + expect(await passphrasePage.read('@passphrase-text')).to.equal('Enter FlowCrypt passphrase to load a draft'); await passphrasePage.close(); passphrasePage = await browser.newPage(t, baseUrl.concat('&type=attachment')); await passphrasePage.waitForSelTestState('ready'); - expect(await passphrasePage.read('@passphrase-text')).to.equal('Enter FlowCrypt pass phrase to decrypt a file'); + expect(await passphrasePage.read('@passphrase-text')).to.equal('Enter FlowCrypt passphrase to decrypt a file'); await passphrasePage.close(); passphrasePage = await browser.newPage(t, baseUrl.concat('&type=quote')); await passphrasePage.waitForSelTestState('ready'); - expect(await passphrasePage.read('@passphrase-text')).to.equal('Enter FlowCrypt pass phrase to load quoted content'); + expect(await passphrasePage.read('@passphrase-text')).to.equal('Enter FlowCrypt passphrase to load quoted content'); await passphrasePage.close(); passphrasePage = await browser.newPage(t, baseUrl.concat('&type=backup')); await passphrasePage.waitForSelTestState('ready'); - expect(await passphrasePage.read('@passphrase-text')).to.equal('Enter FlowCrypt pass phrase to back up'); + expect(await passphrasePage.read('@passphrase-text')).to.equal('Enter FlowCrypt passphrase to back up'); await passphrasePage.close(); }) ); @@ -555,21 +555,21 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T await addKeyPopup.waitAndClick('@source-generate'); // Check if error modal displays correctly when user didn't enter passphrase await addKeyPopup.waitAndClick('@input-step2bmanualcreate-create-and-save'); - await addKeyPopup.waitAndRespondToModal('warning', 'confirm', 'Pass phrase is needed to protect your private email.'); + await addKeyPopup.waitAndRespondToModal('warning', 'confirm', 'Passphrase is needed to protect your private email.'); // Check if error modal displays correctly when user enters weak passphrase await addKeyPopup.waitAndType('@input-step2bmanualcreate-passphrase-1', 'short passphrase'); await addKeyPopup.waitAndClick('@input-step2bmanualcreate-create-and-save'); - await addKeyPopup.waitAndRespondToModal('warning', 'confirm', 'Pass phrase is not strong enough.'); + await addKeyPopup.waitAndRespondToModal('warning', 'confirm', 'Passphrase is not strong enough.'); // Check if error modal displays correctly when pasphrase doesn't match const passphrase = 'long enough to suit requirements'; await addKeyPopup.waitAndType('@input-step2bmanualcreate-passphrase-1', passphrase); await addKeyPopup.waitAndClick('@input-step2bmanualcreate-create-and-save'); - await addKeyPopup.waitAndRespondToModal('warning', 'confirm', 'The pass phrases do not match.'); + await addKeyPopup.waitAndRespondToModal('warning', 'confirm', 'The passphrases do not match.'); await addKeyPopup.waitAndType('@input-step2bmanualcreate-passphrase-2', passphrase); // Uncheck backup_inbox to check if backup view correctly displayed await addKeyPopup.waitAndClick('@input-step2bmanualcreate-backup-inbox'); await addKeyPopup.waitAndClick('@input-step2bmanualcreate-create-and-save'); - await addKeyPopup.waitAndRespondToModal('confirm-checkbox', 'confirm', 'Please write down your pass phrase'); + await addKeyPopup.waitAndRespondToModal('confirm-checkbox', 'confirm', 'Please write down your passphrase'); await addKeyPopup.waitAndClick('@input-backup-step3manual-no-backup'); // choose no_backup so that it doesn't affect other tests. await addKeyPopup.waitAndClick('@action-backup-step3manual-continue'); await SettingsPageRecipe.ready(settingsPage); @@ -597,7 +597,7 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T await addKeyPopup.waitAndType('@input-step2bmanualcreate-passphrase-2', passphrase); await addKeyPopup.waitAndClick('@input-step2bmanualcreate-backup-inbox'); await addKeyPopup.waitAndClick('@input-step2bmanualcreate-create-and-save'); - await addKeyPopup.waitAndRespondToModal('confirm-checkbox', 'confirm', 'Please write down your pass phrase'); + await addKeyPopup.waitAndRespondToModal('confirm-checkbox', 'confirm', 'Please write down your passphrase'); await addKeyPopup.waitAndClick('@input-backup-step3manual-no-backup'); // choose no_backup so that it doesn't affect other tests. await addKeyPopup.waitAndClick('@action-backup-step3manual-continue'); await SettingsPageRecipe.ready(settingsPage); @@ -686,13 +686,13 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T }); // change pp - should not ask for pp because already in session await SettingsPageRecipe.changePassphrase(settingsPage, undefined, newPp); - // now it will remember the pass phrase so decrypts without asking + // now it will remember the passphrase so decrypts without asking await InboxPageRecipe.checkDecryptMsg(t, browser, { acctEmail, threadId: '16819bec18d4e011', content: ['changed correctly if this can be decrypted'], }); - // test decrypt - should ask for new pass phrase + // test decrypt - should ask for new passphrase await InboxPageRecipe.checkDecryptMsg(t, browser, { acctEmail, threadId: '16819bec18d4e011', @@ -753,7 +753,7 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T threadId: '179f6feb575df213', content: ['changed correctly if this can be decrypted'], }); - // test decrypt - should ask for new pass phrase + // test decrypt - should ask for new passphrase await InboxPageRecipe.checkDecryptMsg(t, browser, { acctEmail, threadId: '179f6feb575df213', @@ -776,13 +776,13 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T await SettingsPageRecipe.forgetAllPassPhrasesInStorage(settingsPage, passphrase); // pp wiped after switching to session - should be needed to change pp await SettingsPageRecipe.changePassphrase(settingsPage, passphrase, newPp); - // now it will remember the pass phrase so decrypts without asking + // now it will remember the passphrase so decrypts without asking await InboxPageRecipe.checkDecryptMsg(t, browser, { acctEmail, threadId: '16819bec18d4e011', content: ['changed correctly if this can be decrypted'], }); - // test decrypt - should ask for new pass phrase + // test decrypt - should ask for new passphrase await InboxPageRecipe.checkDecryptMsg(t, browser, { acctEmail, threadId: '16819bec18d4e011', @@ -950,7 +950,7 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T }) ); test( - 'settings - attachment previews with entering pass phrase', + 'settings - attachment previews with entering passphrase', testWithBrowser(async (t, browser) => { await BrowserRecipe.setupCommonAcctWithAttester(t, browser, 'compatibility'); const settingsPage = await browser.newExtensionSettingsPage(t, 'flowcrypt.compatibility@gmail.com'); @@ -1314,7 +1314,7 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T }) ); test( - 'settings - manual backup several keys to file with the same pass phrase', + 'settings - manual backup several keys to file with the same passphrase', testWithBrowser(async (t, browser) => { const acctEmail = 'flowcrypt.test.key.multiple@gmail.com'; t.context.mockApi!.configProvider = new ConfigurationProvider({ @@ -1386,7 +1386,7 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T }) ); test( - 'settings - manual backup several keys to inbox with the same strong pass phrase', + 'settings - manual backup several keys to inbox with the same strong passphrase', testWithBrowser(async (t, browser) => { const acctEmail = 'flowcrypt.test.key.multiple.inbox2@gmail.com'; t.context.mockApi!.configProvider = new ConfigurationProvider({ @@ -1436,7 +1436,7 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T }) ); test( - 'settings - manual backup several keys to file with a missing but guessed pass phrase', + 'settings - manual backup several keys to file with a missing but guessed passphrase', testWithBrowser(async (t, browser) => { t.context.mockApi!.configProvider = new ConfigurationProvider({ attester: { @@ -1493,7 +1493,7 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T }) ); test( - 'settings - manual backup several keys to inbox with a missing pass phrase', + 'settings - manual backup several keys to inbox with a missing passphrase', testWithBrowser(async (t, browser) => { const acctEmail = 'flowcrypt.test.key.multiple@gmail.com'; t.context.mockApi!.configProvider = new ConfigurationProvider({ @@ -1534,12 +1534,12 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T expect(await backupFrame.isDisabled('[data-id="CB0485FE44FC22FF09AF0DB31B383D0334E38B28"]')).to.equal(false); expect(await backupFrame.isDisabled('[data-id="515431151DDD3EA232B37A4C98ACFA1EADAB5B92"]')).to.equal(false); await backupFrame.waitAndClick('@action-backup-step3manual-continue'); - await backupFrame.waitAndRespondToModal('error', 'confirm', 'Your keys are protected with different pass phrases'); + await backupFrame.waitAndRespondToModal('error', 'confirm', 'Your keys are protected with different passphrases'); await settingsPage.close(); }) ); test( - 'settings - manual backup a key with a missing pass phrase', + 'settings - manual backup a key with a missing passphrase', testWithBrowser(async (t, browser) => { const acctEmail = 'flowcrypt.test.key.multiple@gmail.com'; t.context.mockApi!.configProvider = new ConfigurationProvider({ @@ -1577,7 +1577,7 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T }) ); test( - 'settings - manual backup several keys to file with different pass phrases', + 'settings - manual backup several keys to file with different passphrases', testWithBrowser(async (t, browser) => { const acctEmail = 'flowcrypt.test.key.multiple@gmail.com'; t.context.mockApi!.configProvider = new ConfigurationProvider({ @@ -1619,7 +1619,7 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T expect(await backupPage.isDisabled('[data-id="515431151DDD3EA232B37A4C98ACFA1EADAB5B92"]')).to.equal(false); await backupPage.waitAndClick('@input-backup-step3manual-file'); await backupPage.waitAndClick('@action-backup-step3manual-continue'); - await backupPage.waitAndRespondToModal('error', 'confirm', 'Your keys are protected with different pass phrases'); + await backupPage.waitAndRespondToModal('error', 'confirm', 'Your keys are protected with different passphrases'); await backupPage.close(); }) ); @@ -1721,7 +1721,7 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T }) ); test( - 'settings - manual backup to inbox keys with weak pass phrases results in error', + 'settings - manual backup to inbox keys with weak passphrases results in error', testWithBrowser(async (t, browser) => { t.context.mockApi!.configProvider = new ConfigurationProvider({ attester: { diff --git a/test/source/tests/setup.ts b/test/source/tests/setup.ts index 6898cf8ed61..86fd2a9b4c9 100644 --- a/test/source/tests/setup.ts +++ b/test/source/tests/setup.ts @@ -237,7 +237,7 @@ export const defineSetupTests = (testVariant: TestVariant, testWithBrowser: Test ); test( - 'setup - import key - naked - choose my own pass phrase', + 'setup - import key - naked - choose my own passphrase', testWithBrowser(async (t, browser) => { t.context.mockApi!.configProvider = new ConfigurationProvider({ attester: { @@ -255,7 +255,7 @@ export const defineSetupTests = (testVariant: TestVariant, testWithBrowser: Test ); test( - 'setup - import key - naked - auto-generate a pass phrase', + 'setup - import key - naked - auto-generate a passphrase', testWithBrowser(async (t, browser) => { t.context.mockApi!.configProvider = new ConfigurationProvider({ attester: { @@ -272,7 +272,7 @@ export const defineSetupTests = (testVariant: TestVariant, testWithBrowser: Test }) ); - test.todo('setup - import key - naked - do not supply pass phrase gets error'); + test.todo('setup - import key - naked - do not supply passphrase gets error'); test( 'setup - import key - fix key self signatures', @@ -525,7 +525,7 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== ); test( - 'setup - recover with a pass phrase - skip remaining', + 'setup - recover with a passphrase - skip remaining', testWithBrowser(async (t, browser) => { const acctEmail = 'flowcrypt.compatibility@gmail.com'; t.context.mockApi!.configProvider = new ConfigurationProvider({ @@ -540,7 +540,7 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== ); test( - 'setup - recover with a pass phrase - 1pp1 then 2pp1', + 'setup - recover with a passphrase - 1pp1 then 2pp1', testWithBrowser(async (t, browser) => { t.context.mockApi!.configProvider = new ConfigurationProvider({ attester: { @@ -561,7 +561,7 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== ); test( - 'setup - recover with a pass phrase - 1pp2 then 2pp1', + 'setup - recover with a passphrase - 1pp2 then 2pp1', testWithBrowser(async (t, browser) => { const acctEmail = 'flowcrypt.compatibility@gmail.com'; t.context.mockApi!.configProvider = new ConfigurationProvider({ @@ -577,7 +577,7 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== ); test( - 'setup - recover with a pass phrase - 2pp1 then 1pp1', + 'setup - recover with a passphrase - 2pp1 then 1pp1', testWithBrowser(async (t, browser) => { t.context.mockApi!.configProvider = new ConfigurationProvider({ attester: { @@ -598,7 +598,7 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== ); test( - 'setup - recover with a pass phrase - 2pp1 then 1pp2', + 'setup - recover with a passphrase - 2pp1 then 1pp2', testWithBrowser(async (t, browser) => { t.context.mockApi!.configProvider = new ConfigurationProvider({ attester: { @@ -619,7 +619,7 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== ); test( - 'setup - recover with a pass phrase - 1pp1 then 1pp2 (shows already recovered), then 2pp1', + 'setup - recover with a passphrase - 1pp1 then 1pp2 (shows already recovered), then 2pp1', testWithBrowser(async (t, browser) => { t.context.mockApi!.configProvider = new ConfigurationProvider({ attester: { @@ -933,8 +933,8 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== }) ); - test.todo('setup - recover with a pass phrase - 1pp1 then wrong, then skip'); - // test('setup - recover with a pass phrase - 1pp1 then wrong, then skip', test_with_browser(async (t, browser) => { + test.todo('setup - recover with a passphrase - 1pp1 then wrong, then skip'); + // test('setup - recover with a passphrase - 1pp1 then wrong, then skip', test_with_browser(async (t, browser) => { // const settingsPage = await BrowserRecipe.open_settings_login_approve(t, browser,'flowcrypt.compatibility@gmail.com'); // await SetupPageRecipe.setup_recover(settingsPage, 'flowcrypt.compatibility.1pp1', {has_recover_more: true, click_recover_more: true}); // await SetupPageRecipe.setup_recover(settingsPage, 'flowcrypt.wrong.passphrase', {wrong_passphrase: true}); @@ -942,7 +942,7 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== // })); test( - 'setup - recover with a pass phrase - no remaining', + 'setup - recover with a passphrase - no remaining', testWithBrowser(async (t, browser) => { const acctEmail = 'flowcrypt.test.key.recovered@gmail.com'; t.context.mockApi!.configProvider = new ConfigurationProvider({ @@ -954,7 +954,7 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== ); test( - 'setup - fail to recover with a wrong pass phrase', + 'setup - fail to recover with a wrong passphrase', testWithBrowser(async (t, browser) => { const acctEmail = 'flowcrypt.test.key.recovered@gmail.com'; t.context.mockApi!.configProvider = new ConfigurationProvider({ @@ -969,7 +969,7 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== ); test( - 'setup - fail to recover with a wrong pass phrase at first, then recover with good pass phrase', + 'setup - fail to recover with a wrong passphrase at first, then recover with good passphrase', testWithBrowser(async (t, browser) => { const acctEmail = 'flowcrypt.test.key.recovered@gmail.com'; t.context.mockApi!.configProvider = new ConfigurationProvider({ @@ -1445,7 +1445,7 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== expect(await myKeyFrame.read('@content-fingerprint')).to.contain('00B0 1158 0796 9D75'); await SettingsPageRecipe.closeDialog(settingsPage); await Util.sleep(2); - // check that it does not offer any pass phrase options + // check that it does not offer any passphrase options await SettingsPageRecipe.toggleScreen(settingsPage, 'basic'); const securityFrame = await SettingsPageRecipe.awaitNewPageFrame(settingsPage, '@action-open-security-page', ['security.htm', 'placement=settings']); await Util.sleep(1); @@ -1548,7 +1548,7 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== { const passphraseDialog = await gmailPage.getFrame(['passphrase.htm']); await Util.sleep(2); - await passphraseDialog.waitForContent('@passphrase-text', 'Enter FlowCrypt pass phrase to keep your account keys up to date'); + await passphraseDialog.waitForContent('@passphrase-text', 'Enter FlowCrypt passphrase to keep your account keys up to date'); await passphraseDialog.waitAndType('@input-pass-phrase', passphrase); await passphraseDialog.waitAndClick('@action-confirm-pass-phrase-entry'); } @@ -1624,7 +1624,7 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== await gmailPage.waitAll('@dialog-passphrase'); { const passphraseDialog = await gmailPage.getFrame(['passphrase.htm']); - await passphraseDialog.waitForContent('@passphrase-text', 'Enter FlowCrypt pass phrase to keep your account keys up to date'); + await passphraseDialog.waitForContent('@passphrase-text', 'Enter FlowCrypt passphrase to keep your account keys up to date'); await passphraseDialog.waitAndType('@input-pass-phrase', passphrase); await passphraseDialog.waitAndClick('@action-confirm-pass-phrase-entry'); } @@ -2075,7 +2075,7 @@ AN8G3r5Htj8olot+jm9mIa5XLXWzMNUZgg== expect(await myKeyFrame.read('@content-key-expiration')).to.equal('Does not expire'); await SettingsPageRecipe.closeDialog(settingsPage); await Util.sleep(2); - // check that it does not offer any pass phrase options + // check that it does not offer any passphrase options await SettingsPageRecipe.toggleScreen(settingsPage, 'basic'); const securityFrame = await SettingsPageRecipe.awaitNewPageFrame(settingsPage, '@action-open-security-page', ['security.htm', 'placement=settings']); await Util.sleep(1); diff --git a/test/source/tests/tooling/browser-recipe.ts b/test/source/tests/tooling/browser-recipe.ts index a68216eba13..b884efd5d7f 100644 --- a/test/source/tests/tooling/browser-recipe.ts +++ b/test/source/tests/tooling/browser-recipe.ts @@ -325,7 +325,7 @@ export class BrowserRecipe { const page = pgpBlockFrame.getPage(); await page.notPresent('@action-finish-session'); const errBadgeContent = await pgpBlockFrame.read('@pgp-error'); - expect(errBadgeContent).to.equal('pass phrase needed'); + expect(errBadgeContent).to.equal('passphrase needed'); await pgpBlockFrame.notPresent('@action-print'); await pgpBlockFrame.waitAndClick('@action-show-passphrase-dialog', { delay: 1 }); await page.waitAll('@dialog-passphrase'); diff --git a/test/source/tests/unit-node.ts b/test/source/tests/unit-node.ts index 1d4577444fb..a0bdbb67089 100644 --- a/test/source/tests/unit-node.ts +++ b/test/source/tests/unit-node.ts @@ -1095,7 +1095,7 @@ jLwe8W9IMt765T5x5oux9MmPDXF05xHfm4qfH/BMO3a802x5u2gJjJjuknrFdgXY test('[MsgUtil.decryptMessage] handles long message', async t => { const data = Buf.fromUtfStr('The test string concatenated many times to produce large output'.repeat(100000)); - const passphrase = 'pass phrase'; + const passphrase = 'passphrase'; const prv = await KeyUtil.parse(prvEncryptForSubkeyOnly); const encrypted = await MsgUtil.encryptMessage({ pubkeys: [await KeyUtil.asPublicKey(prv)], @@ -1373,7 +1373,7 @@ jSB6A93JmnQGIkAem/kzGkKclmfAdGfc4FS+3Cn+6Q==Xmrz test('[MsgUtil.encryptMessage] do not decrypt message when encrypted for key not meant for encryption', async t => { const data = Buf.fromUtfStr('hello'); - const passphrase = 'pass phrase'; + const passphrase = 'passphrase'; const tmpPrv = await KeyUtil.parse(prvEncryptForSubkeyOnly); await KeyUtil.encrypt(tmpPrv, passphrase); expect(tmpPrv.fullyEncrypted).to.equal(true);