Skip to content

Instantly share code, notes, and snippets.

@talos
Created November 7, 2011 23:51
Show Gist options
  • Save talos/1346582 to your computer and use it in GitHub Desktop.
Save talos/1346582 to your computer and use it in GitHub Desktop.
Add encryption to gmail using a bookmarklet (you must be in "compose"). Either copy/paste into a bookmark, or copy/paste directly into address bar while in Gmail's "Compose" mode. Works in Safari and Chrome, although you have to use the bookmarks manage
javascript:(function()%7B%22use%20strict%22%3Bvar%20a%3D%7Bcipher%3A%7B%7D%2Chash%3A%7B%7D%2Cmode%3A%7B%7D%2Cmisc%3A%7B%7D%2Ccodec%3A%7B%7D%2Cexception%3A%7Bcorrupt%3Afunction(a)%7Bthis.toString%3Dfunction()%7Breturn%22CORRUPT%3A%20%22%2Bthis.message%7D%2Cthis.message%3Da%7D%2Cinvalid%3Afunction(a)%7Bthis.toString%3Dfunction()%7Breturn%22INVALID%3A%20%22%2Bthis.message%7D%2Cthis.message%3Da%7D%2Cbug%3Afunction(a)%7Bthis.toString%3Dfunction()%7Breturn%22BUG%3A%20%22%2Bthis.message%7D%2Cthis.message%3Da%7D%7D%7D%3Ba.cipher.aes%3Dfunction(b)%7Bthis.h%5B0%5D%5B0%5D%5B0%5D%7C%7Cthis.w()%3Bvar%20c%2Cd%2Ce%2Cf%2Cg%3Dthis.h%5B0%5D%5B4%5D%2Ch%3Dthis.h%5B1%5D%3Bc%3Db.length%3Bvar%20i%3D1%3Bif(c!%3D%3D4%26%26c!%3D%3D6%26%26c!%3D%3D8)throw%20new%20a.exception.invalid(%22invalid%20aes%20key%20size%22)%3Bthis.a%3D%5Be%3Db.slice(0)%2Cf%3D%5B%5D%5D%3Bfor(b%3Dc%3Bb%3C4*c%2B28%3Bb%2B%2B)%7Bd%3De%5Bb-1%5D%3Bif(b%25c%3D%3D%3D0%7C%7Cc%3D%3D%3D8%26%26b%25c%3D%3D%3D4)d%3Dg%5Bd%3E%3E%3E24%5D%3C%3C24%5Eg%5Bd%3E%3E16%26255%5D%3C%3C16%5Eg%5Bd%3E%3E8%26255%5D%3C%3C8%5Eg%5Bd%26255%5D%2Cb%25c%3D%3D%3D0%26%26(d%3Dd%3C%3C8%5Ed%3E%3E%3E24%5Ei%3C%3C24%2Ci%3Di%3C%3C1%5E(i%3E%3E7)*283)%3Be%5Bb%5D%3De%5Bb-c%5D%5Ed%7Dfor(c%3D0%3Bb%3Bc%2B%2B%2Cb--)d%3De%5Bc%263%3Fb%3Ab-4%5D%2Cf%5Bc%5D%3Db%3C%3D4%7C%7Cc%3C4%3Fd%3Ah%5B0%5D%5Bg%5Bd%3E%3E%3E24%5D%5D%5Eh%5B1%5D%5Bg%5Bd%3E%3E16%26255%5D%5D%5Eh%5B2%5D%5Bg%5Bd%3E%3E8%26255%5D%5D%5Eh%5B3%5D%5Bg%5Bd%26255%5D%5D%7D%2Ca.cipher.aes.prototype%3D%7Bencrypt%3Afunction(a)%7Breturn%20this.H(a%2C0)%7D%2Cdecrypt%3Afunction(a)%7Breturn%20this.H(a%2C1)%7D%2Ch%3A%5B%5B%5B%5D%2C%5B%5D%2C%5B%5D%2C%5B%5D%2C%5B%5D%5D%2C%5B%5B%5D%2C%5B%5D%2C%5B%5D%2C%5B%5D%2C%5B%5D%5D%5D%2Cw%3Afunction()%7Bvar%20a%3Dthis.h%5B0%5D%2Cb%3Dthis.h%5B1%5D%2Cc%3Da%5B4%5D%2Cd%3Db%5B4%5D%2Ce%2Cf%2Cg%2Ch%3D%5B%5D%2Ci%3D%5B%5D%2Cj%2Ck%2Cl%2Cm%3Bfor(e%3D0%3Be%3C256%3Be%2B%2B)i%5B(h%5Be%5D%3De%3C%3C1%5E(e%3E%3E7)*283)%5Ee%5D%3De%3Bfor(f%3Dg%3D0%3B!c%5Bf%5D%3Bf%5E%3Dj%7C%7C1%2Cg%3Di%5Bg%5D%7C%7C1)%7Bl%3Dg%5Eg%3C%3C1%5Eg%3C%3C2%5Eg%3C%3C3%5Eg%3C%3C4%2Cl%3Dl%3E%3E8%5El%26255%5E99%2Cc%5Bf%5D%3Dl%2Cd%5Bl%5D%3Df%2Ck%3Dh%5Be%3Dh%5Bj%3Dh%5Bf%5D%5D%5D%2Cm%3Dk*16843009%5Ee*65537%5Ej*257%5Ef*16843008%2Ck%3Dh%5Bl%5D*257%5El*16843008%3Bfor(e%3D0%3Be%3C4%3Be%2B%2B)a%5Be%5D%5Bf%5D%3Dk%3Dk%3C%3C24%5Ek%3E%3E%3E8%2Cb%5Be%5D%5Bl%5D%3Dm%3Dm%3C%3C24%5Em%3E%3E%3E8%7Dfor(e%3D0%3Be%3C5%3Be%2B%2B)a%5Be%5D%3Da%5Be%5D.slice(0)%2Cb%5Be%5D%3Db%5Be%5D.slice(0)%7D%2CH%3Afunction(b%2Cc)%7Bif(b.length!%3D%3D4)throw%20new%20a.exception.invalid(%22invalid%20aes%20block%20size%22)%3Bvar%20d%3Dthis.a%5Bc%5D%2Ce%3Db%5B0%5D%5Ed%5B0%5D%2Cf%3Db%5Bc%3F3%3A1%5D%5Ed%5B1%5D%2Cg%3Db%5B2%5D%5Ed%5B2%5D%3Bb%3Db%5Bc%3F1%3A3%5D%5Ed%5B3%5D%3Bvar%20h%2Ci%2Cj%2Ck%3Dd.length%2F4-2%2Cl%2Cm%3D4%2Cn%3D%5B0%2C0%2C0%2C0%5D%3Bh%3Dthis.h%5Bc%5D%3Bvar%20o%3Dh%5B0%5D%2Cp%3Dh%5B1%5D%2Cq%3Dh%5B2%5D%2Cr%3Dh%5B3%5D%2Cs%3Dh%5B4%5D%3Bfor(l%3D0%3Bl%3Ck%3Bl%2B%2B)h%3Do%5Be%3E%3E%3E24%5D%5Ep%5Bf%3E%3E16%26255%5D%5Eq%5Bg%3E%3E8%26255%5D%5Er%5Bb%26255%5D%5Ed%5Bm%5D%2Ci%3Do%5Bf%3E%3E%3E24%5D%5Ep%5Bg%3E%3E16%26255%5D%5Eq%5Bb%3E%3E8%26255%5D%5Er%5Be%26255%5D%5Ed%5Bm%2B1%5D%2Cj%3Do%5Bg%3E%3E%3E24%5D%5Ep%5Bb%3E%3E16%26255%5D%5Eq%5Be%3E%3E8%26255%5D%5Er%5Bf%26255%5D%5Ed%5Bm%2B2%5D%2Cb%3Do%5Bb%3E%3E%3E24%5D%5Ep%5Be%3E%3E16%26255%5D%5Eq%5Bf%3E%3E8%26255%5D%5Er%5Bg%26255%5D%5Ed%5Bm%2B3%5D%2Cm%2B%3D4%2Ce%3Dh%2Cf%3Di%2Cg%3Dj%3Bfor(l%3D0%3Bl%3C4%3Bl%2B%2B)n%5Bc%3F3%26-l%3Al%5D%3Ds%5Be%3E%3E%3E24%5D%3C%3C24%5Es%5Bf%3E%3E16%26255%5D%3C%3C16%5Es%5Bg%3E%3E8%26255%5D%3C%3C8%5Es%5Bb%26255%5D%5Ed%5Bm%2B%2B%5D%2Ch%3De%2Ce%3Df%2Cf%3Dg%2Cg%3Db%2Cb%3Dh%3Breturn%20n%7D%7D%2Ca.bitArray%3D%7BbitSlice%3Afunction(b%2Cc%2Cd)%7Breturn%20b%3Da.bitArray.P(b.slice(c%2F32)%2C32-(c%2631)).slice(1)%2Cd%3D%3D%3Dundefined%3Fb%3Aa.bitArray.clamp(b%2Cd-c)%7D%2Cconcat%3Afunction(b%2Cc)%7Bif(b.length%3D%3D%3D0%7C%7Cc.length%3D%3D%3D0)return%20b.concat(c)%3Bvar%20d%3Db%5Bb.length-1%5D%2Ce%3Da.bitArray.getPartial(d)%3Breturn%20e%3D%3D%3D32%3Fb.concat(c)%3Aa.bitArray.P(c%2Ce%2Cd%7C0%2Cb.slice(0%2Cb.length-1))%7D%2CbitLength%3Afunction(b)%7Bvar%20c%3Db.length%3Breturn%20c%3D%3D%3D0%3F0%3A(c-1)*32%2Ba.bitArray.getPartial(b%5Bc-1%5D)%7D%2Cclamp%3Afunction(b%2Cc)%7Bif(b.length*32%3Cc)return%20b%3Bb%3Db.slice(0%2CMath.ceil(c%2F32))%3Bvar%20d%3Db.length%3Breturn%20c%26%3D31%2Cd%3E0%26%26c%26%26(b%5Bd-1%5D%3Da.bitArray.partial(c%2Cb%5Bd-1%5D%262147483648%3E%3Ec-1%2C1))%2Cb%7D%2Cpartial%3Afunction(a%2Cb%2Cc)%7Breturn%20a%3D%3D%3D32%3Fb%3A(c%3Fb%7C0%3Ab%3C%3C32-a)%2Ba*1099511627776%7D%2CgetPartial%3Afunction(a)%7Breturn%20Math.round(a%2F1099511627776)%7C%7C32%7D%2Cequal%3Afunction(b%2Cc)%7Bif(a.bitArray.bitLength(b)!%3D%3Da.bitArray.bitLength(c))return!1%3Bvar%20d%3D0%2Ce%3Bfor(e%3D0%3Be%3Cb.length%3Be%2B%2B)d%7C%3Db%5Be%5D%5Ec%5Be%5D%3Breturn%20d%3D%3D%3D0%7D%2CP%3Afunction(b%2Cc%2Cd%2Ce)%7Bvar%20f%3Bf%3D0%2Ce%3D%3D%3Dundefined%26%26(e%3D%5B%5D)%3Bfor(%3Bc%3E%3D32%3Bc-%3D32)e.push(d)%2Cd%3D0%3Bif(c%3D%3D%3D0)return%20e.concat(b)%3Bfor(f%3D0%3Bf%3Cb.length%3Bf%2B%2B)e.push(d%7Cb%5Bf%5D%3E%3E%3Ec)%2Cd%3Db%5Bf%5D%3C%3C32-c%3Breturn%20f%3Db.length%3Fb%5Bb.length-1%5D%3A0%2Cb%3Da.bitArray.getPartial(f)%2Ce.push(a.bitArray.partial(c%2Bb%2631%2Cc%2Bb%3E32%3Fd%3Ae.pop()%2C1))%2Ce%7D%2Ck%3Afunction(a%2Cb)%7Breturn%5Ba%5B0%5D%5Eb%5B0%5D%2Ca%5B1%5D%5Eb%5B1%5D%2Ca%5B2%5D%5Eb%5B2%5D%2Ca%5B3%5D%5Eb%5B3%5D%5D%7D%7D%2Ca.codec.utf8String%3D%7BfromBits%3Afunction(b)%7Bvar%20c%3D%22%22%2Cd%3Da.bitArray.bitLength(b)%2Ce%2Cf%3Bfor(e%3D0%3Be%3Cd%2F8%3Be%2B%2B)(e%263)%3D%3D%3D0%26%26(f%3Db%5Be%2F4%5D)%2Cc%2B%3DString.fromCharCode(f%3E%3E%3E24)%2Cf%3C%3C%3D8%3Breturn%20decodeURIComponent(escape(c))%7D%2CtoBits%3Afunction(b)%7Bb%3Dunescape(encodeURIComponent(b))%3Bvar%20c%3D%5B%5D%2Cd%2Ce%3D0%3Bfor(d%3D0%3Bd%3Cb.length%3Bd%2B%2B)e%3De%3C%3C8%7Cb.charCodeAt(d)%2C(d%263)%3D%3D%3D3%26%26(c.push(e)%2Ce%3D0)%3Breturn%20d%263%26%26c.push(a.bitArray.partial(8*(d%263)%2Ce))%2Cc%7D%7D%2Ca.codec.hex%3D%7BfromBits%3Afunction(b)%7Bvar%20c%3D%22%22%2Cd%3Bfor(d%3D0%3Bd%3Cb.length%3Bd%2B%2B)c%2B%3D((b%5Bd%5D%7C0)%2B0xf00000000000).toString(16).substr(4)%3Breturn%20c.substr(0%2Ca.bitArray.bitLength(b)%2F4)%7D%2CtoBits%3Afunction(b)%7Bvar%20c%2Cd%3D%5B%5D%2Ce%3Bb%3Db.replace(%2F%5Cs%7C0x%2Fg%2C%22%22)%2Ce%3Db.length%2Cb%2B%3D%2200000000%22%3Bfor(c%3D0%3Bc%3Cb.length%3Bc%2B%3D8)d.push(parseInt(b.substr(c%2C8)%2C16)%5E0)%3Breturn%20a.bitArray.clamp(d%2Ce*4)%7D%7D%2Ca.codec.base64%3D%7BD%3A%22ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%2B%2F%22%2CfromBits%3Afunction(b%2Cc)%7Bvar%20d%3D%22%22%2Ce%2Cf%3D0%2Cg%3Da.codec.base64.D%2Ch%3D0%2Ci%3Da.bitArray.bitLength(b)%3Bfor(e%3D0%3Bd.length*6%3Ci%3B)d%2B%3Dg.charAt((h%5Eb%5Be%5D%3E%3E%3Ef)%3E%3E%3E26)%2Cf%3C6%3F(h%3Db%5Be%5D%3C%3C6-f%2Cf%2B%3D26%2Ce%2B%2B)%3A(h%3C%3C%3D6%2Cf-%3D6)%3Bfor(%3Bd.length%263%26%26!c%3B)d%2B%3D%22%3D%22%3Breturn%20d%7D%2CtoBits%3Afunction(b)%7Bb%3Db.replace(%2F%5Cs%7C%3D%2Fg%2C%22%22)%3Bvar%20c%3D%5B%5D%2Cd%2Ce%3D0%2Cf%3Da.codec.base64.D%2Cg%3D0%2Ch%3Bfor(d%3D0%3Bd%3Cb.length%3Bd%2B%2B)%7Bh%3Df.indexOf(b.charAt(d))%3Bif(h%3C0)throw%20new%20a.exception.invalid(%22this%20isn't%20base64!%22)%3Be%3E26%3F(e-%3D26%2Cc.push(g%5Eh%3E%3E%3Ee)%2Cg%3Dh%3C%3C32-e)%3A(e%2B%3D6%2Cg%5E%3Dh%3C%3C32-e)%7Dreturn%20e%2656%26%26c.push(a.bitArray.partial(e%2656%2Cg%2C1))%2Cc%7D%7D%2Ca.hash.sha256%3Dfunction(a)%7Bthis.a%5B0%5D%7C%7Cthis.w()%2Ca%3F(this.n%3Da.n.slice(0)%2Cthis.i%3Da.i.slice(0)%2Cthis.e%3Da.e)%3Athis.reset()%7D%2Ca.hash.sha256.hash%3Dfunction(b)%7Breturn(new%20a.hash.sha256).update(b).finalize()%7D%2Ca.hash.sha256.prototype%3D%7BblockSize%3A512%2Creset%3Afunction()%7Breturn%20this.n%3Dthis.N.slice(0)%2Cthis.i%3D%5B%5D%2Cthis.e%3D0%2Cthis%7D%2Cupdate%3Afunction(b)%7Btypeof%20b%3D%3D%22string%22%26%26(b%3Da.codec.utf8String.toBits(b))%3Bvar%20c%2Cd%3Dthis.i%3Da.bitArray.concat(this.i%2Cb)%3Bc%3Dthis.e%2Cb%3Dthis.e%3Dc%2Ba.bitArray.bitLength(b)%3Bfor(c%3D512%2Bc%26-512%3Bc%3C%3Db%3Bc%2B%3D512)this.C(d.splice(0%2C16))%3Breturn%20this%7D%2Cfinalize%3Afunction()%7Bvar%20b%2Cc%3Dthis.i%2Cd%3Dthis.n%3Bc%3Da.bitArray.concat(c%2C%5Ba.bitArray.partial(1%2C1)%5D)%3Bfor(b%3Dc.length%2B2%3Bb%2615%3Bb%2B%2B)c.push(0)%3Bc.push(Math.floor(this.e%2F4294967296))%3Bfor(c.push(this.e%7C0)%3Bc.length%3B)this.C(c.splice(0%2C16))%3Breturn%20this.reset()%2Cd%7D%2CN%3A%5B%5D%2Ca%3A%5B%5D%2Cw%3Afunction()%7Bfunction%20a(a)%7Breturn(a-Math.floor(a))*4294967296%7C0%7Dvar%20b%3D0%2Cc%3D2%2Cd%3Ba%3Afor(%3Bb%3C64%3Bc%2B%2B)%7Bfor(d%3D2%3Bd*d%3C%3Dc%3Bd%2B%2B)if(c%25d%3D%3D%3D0)continue%20a%3Bb%3C8%26%26(this.N%5Bb%5D%3Da(Math.pow(c%2C.5)))%2Cthis.a%5Bb%5D%3Da(Math.pow(c%2C1%2F3))%2Cb%2B%2B%7D%7D%2CC%3Afunction(a)%7Bvar%20b%2Cc%2Cd%3Da.slice(0)%2Ce%3Dthis.n%2Cf%3Dthis.a%2Cg%3De%5B0%5D%2Ch%3De%5B1%5D%2Ci%3De%5B2%5D%2Cj%3De%5B3%5D%2Ck%3De%5B4%5D%2Cl%3De%5B5%5D%2Cm%3De%5B6%5D%2Cn%3De%5B7%5D%3Bfor(a%3D0%3Ba%3C64%3Ba%2B%2B)a%3C16%3Fb%3Dd%5Ba%5D%3A(b%3Dd%5Ba%2B1%2615%5D%2Cc%3Dd%5Ba%2B14%2615%5D%2Cb%3Dd%5Ba%2615%5D%3D(b%3E%3E%3E7%5Eb%3E%3E%3E18%5Eb%3E%3E%3E3%5Eb%3C%3C25%5Eb%3C%3C14)%2B(c%3E%3E%3E17%5Ec%3E%3E%3E19%5Ec%3E%3E%3E10%5Ec%3C%3C15%5Ec%3C%3C13)%2Bd%5Ba%2615%5D%2Bd%5Ba%2B9%2615%5D%7C0)%2Cb%3Db%2Bn%2B(k%3E%3E%3E6%5Ek%3E%3E%3E11%5Ek%3E%3E%3E25%5Ek%3C%3C26%5Ek%3C%3C21%5Ek%3C%3C7)%2B(m%5Ek%26(l%5Em))%2Bf%5Ba%5D%2Cn%3Dm%2Cm%3Dl%2Cl%3Dk%2Ck%3Dj%2Bb%7C0%2Cj%3Di%2Ci%3Dh%2Ch%3Dg%2Cg%3Db%2B(h%26i%5Ej%26(h%5Ei))%2B(h%3E%3E%3E2%5Eh%3E%3E%3E13%5Eh%3E%3E%3E22%5Eh%3C%3C30%5Eh%3C%3C19%5Eh%3C%3C10)%7C0%3Be%5B0%5D%3De%5B0%5D%2Bg%7C0%2Ce%5B1%5D%3De%5B1%5D%2Bh%7C0%2Ce%5B2%5D%3De%5B2%5D%2Bi%7C0%2Ce%5B3%5D%3De%5B3%5D%2Bj%7C0%2Ce%5B4%5D%3De%5B4%5D%2Bk%7C0%2Ce%5B5%5D%3De%5B5%5D%2Bl%7C0%2Ce%5B6%5D%3De%5B6%5D%2Bm%7C0%2Ce%5B7%5D%3De%5B7%5D%2Bn%7C0%7D%7D%2Ca.mode.ccm%3D%7Bname%3A%22ccm%22%2Cencrypt%3Afunction(b%2Cc%2Cd%2Ce%2Cf)%7Bvar%20g%2Ch%3Dc.slice(0)%2Ci%3Da.bitArray%2Cj%3Di.bitLength(d)%2F8%2Ck%3Di.bitLength(h)%2F8%3Bf%3Df%7C%7C64%2Ce%3De%7C%7C%5B%5D%3Bif(j%3C7)throw%20new%20a.exception.invalid(%22ccm%3A%20iv%20must%20be%20at%20least%207%20bytes%22)%3Bfor(g%3D2%3Bg%3C4%26%26k%3E%3E%3E8*g%3Bg%2B%2B)%3Breturn%20g%3C15-j%26%26(g%3D15-j)%2Cd%3Di.clamp(d%2C8*(15-g))%2Cc%3Da.mode.ccm.G(b%2Cc%2Cd%2Ce%2Cf%2Cg)%2Ch%3Da.mode.ccm.I(b%2Ch%2Cd%2Cc%2Cf%2Cg)%2Ci.concat(h.data%2Ch.tag)%7D%2Cdecrypt%3Afunction(b%2Cc%2Cd%2Ce%2Cf)%7Bf%3Df%7C%7C64%2Ce%3De%7C%7C%5B%5D%3Bvar%20g%3Da.bitArray%2Ch%3Dg.bitLength(d)%2F8%2Ci%3Dg.bitLength(c)%2Cj%3Dg.clamp(c%2Ci-f)%2Ck%3Dg.bitSlice(c%2Ci-f)%3Bi%3D(i-f)%2F8%3Bif(h%3C7)throw%20new%20a.exception.invalid(%22ccm%3A%20iv%20must%20be%20at%20least%207%20bytes%22)%3Bfor(c%3D2%3Bc%3C4%26%26i%3E%3E%3E8*c%3Bc%2B%2B)%3Bc%3C15-h%26%26(c%3D15-h)%2Cd%3Dg.clamp(d%2C8*(15-c))%2Cj%3Da.mode.ccm.I(b%2Cj%2Cd%2Ck%2Cf%2Cc)%2Cb%3Da.mode.ccm.G(b%2Cj.data%2Cd%2Ce%2Cf%2Cc)%3Bif(!g.equal(j.tag%2Cb))throw%20new%20a.exception.corrupt(%22ccm%3A%20tag%20doesn't%20match%22)%3Breturn%20j.data%7D%2CG%3Afunction(b%2Cc%2Cd%2Ce%2Cf%2Cg)%7Bvar%20h%3D%5B%5D%2Ci%3Da.bitArray%2Cj%3Di.k%3Bf%2F%3D8%3Bif(f%252%7C%7Cf%3C4%7C%7Cf%3E16)throw%20new%20a.exception.invalid(%22ccm%3A%20invalid%20tag%20length%22)%3Bif(e.length%3E4294967295%7C%7Cc.length%3E4294967295)throw%20new%20a.exception.bug(%22ccm%3A%20can't%20deal%20with%204GiB%20or%20more%20data%22)%3Bg%3D%5Bi.partial(8%2C(e.length%3F64%3A0)%7Cf-2%3C%3C2%7Cg-1)%5D%2Cg%3Di.concat(g%2Cd)%2Cg%5B3%5D%7C%3Di.bitLength(c)%2F8%2Cg%3Db.encrypt(g)%3Bif(e.length)%7Bd%3Di.bitLength(e)%2F8%2Cd%3C%3D65279%3Fh%3D%5Bi.partial(16%2Cd)%5D%3Ad%3C%3D4294967295%26%26(h%3Di.concat(%5Bi.partial(16%2C65534)%5D%2C%5Bd%5D))%2Ch%3Di.concat(h%2Ce)%3Bfor(e%3D0%3Be%3Ch.length%3Be%2B%3D4)g%3Db.encrypt(j(g%2Ch.slice(e%2Ce%2B4)))%7Dfor(e%3D0%3Be%3Cc.length%3Be%2B%3D4)g%3Db.encrypt(j(g%2Cc.slice(e%2Ce%2B4)))%3Breturn%20i.clamp(g%2Cf*8)%7D%2CI%3Afunction(b%2Cc%2Cd%2Ce%2Cf%2Cg)%7Bvar%20h%2Ci%3Da.bitArray%3Bh%3Di.k%3Bvar%20j%3Dc.length%2Ck%3Di.bitLength(c)%3Bd%3Di.concat(%5Bi.partial(8%2Cg-1)%5D%2Cd).concat(%5B0%2C0%2C0%5D).slice(0%2C4)%2Ce%3Di.bitSlice(h(e%2Cb.encrypt(d))%2C0%2Cf)%3Bif(!j)return%7Btag%3Ae%2Cdata%3A%5B%5D%7D%3Bfor(h%3D0%3Bh%3Cj%3Bh%2B%3D4)d%5B3%5D%2B%2B%2Cf%3Db.encrypt(d)%2Cc%5Bh%5D%5E%3Df%5B0%5D%2Cc%5Bh%2B1%5D%5E%3Df%5B1%5D%2Cc%5Bh%2B2%5D%5E%3Df%5B2%5D%2Cc%5Bh%2B3%5D%5E%3Df%5B3%5D%3Breturn%7Btag%3Ae%2Cdata%3Ai.clamp(c%2Ck)%7D%7D%7D%2Ca.mode.ocb2%3D%7Bname%3A%22ocb2%22%2Cencrypt%3Afunction(b%2Cc%2Cd%2Ce%2Cf%2Cg)%7Bif(a.bitArray.bitLength(d)!%3D%3D128)throw%20new%20a.exception.invalid(%22ocb%20iv%20must%20be%20128%20bits%22)%3Bvar%20h%2Ci%3Da.mode.ocb2.A%2Cj%3Da.bitArray%2Ck%3Dj.k%2Cl%3D%5B0%2C0%2C0%2C0%5D%3Bd%3Di(b.encrypt(d))%3Bvar%20m%2Cn%3D%5B%5D%3Be%3De%7C%7C%5B%5D%2Cf%3Df%7C%7C64%3Bfor(h%3D0%3Bh%2B4%3Cc.length%3Bh%2B%3D4)m%3Dc.slice(h%2Ch%2B4)%2Cl%3Dk(l%2Cm)%2Cn%3Dn.concat(k(d%2Cb.encrypt(k(d%2Cm))))%2Cd%3Di(d)%3Breturn%20m%3Dc.slice(h)%2Cc%3Dj.bitLength(m)%2Ch%3Db.encrypt(k(d%2C%5B0%2C0%2C0%2Cc%5D))%2Cm%3Dj.clamp(k(m%2Ch)%2Cc)%2Cl%3Dk(l%2Ck(m%2Ch))%2Cl%3Db.encrypt(k(l%2Ck(d%2Ci(d))))%2Ce.length%26%26(l%3Dk(l%2Cg%3Fe%3Aa.mode.ocb2.pmac(b%2Ce)))%2Cn.concat(j.concat(m%2Cj.clamp(l%2Cf)))%7D%2Cdecrypt%3Afunction(b%2Cc%2Cd%2Ce%2Cf%2Cg)%7Bif(a.bitArray.bitLength(d)!%3D%3D128)throw%20new%20a.exception.invalid(%22ocb%20iv%20must%20be%20128%20bits%22)%3Bf%3Df%7C%7C64%3Bvar%20h%3Da.mode.ocb2.A%2Ci%3Da.bitArray%2Cj%3Di.k%2Ck%3D%5B0%2C0%2C0%2C0%5D%2Cl%3Dh(b.encrypt(d))%2Cm%2Cn%2Co%3Da.bitArray.bitLength(c)-f%2Cp%3D%5B%5D%3Be%3De%7C%7C%5B%5D%3Bfor(d%3D0%3Bd%2B4%3Co%2F32%3Bd%2B%3D4)m%3Dj(l%2Cb.decrypt(j(l%2Cc.slice(d%2Cd%2B4))))%2Ck%3Dj(k%2Cm)%2Cp%3Dp.concat(m)%2Cl%3Dh(l)%3Bn%3Do-d*32%2Cm%3Db.encrypt(j(l%2C%5B0%2C0%2C0%2Cn%5D))%2Cm%3Dj(m%2Ci.clamp(c.slice(d)%2Cn))%2Ck%3Dj(k%2Cm)%2Ck%3Db.encrypt(j(k%2Cj(l%2Ch(l))))%2Ce.length%26%26(k%3Dj(k%2Cg%3Fe%3Aa.mode.ocb2.pmac(b%2Ce)))%3Bif(!i.equal(i.clamp(k%2Cf)%2Ci.bitSlice(c%2Co)))throw%20new%20a.exception.corrupt(%22ocb%3A%20tag%20doesn't%20match%22)%3Breturn%20p.concat(i.clamp(m%2Cn))%7D%2Cpmac%3Afunction(b%2Cc)%7Bvar%20d%2Ce%3Da.mode.ocb2.A%2Cf%3Da.bitArray%2Cg%3Df.k%2Ch%3D%5B0%2C0%2C0%2C0%5D%2Ci%3Db.encrypt(%5B0%2C0%2C0%2C0%5D)%3Bi%3Dg(i%2Ce(e(i)))%3Bfor(d%3D0%3Bd%2B4%3Cc.length%3Bd%2B%3D4)i%3De(i)%2Ch%3Dg(h%2Cb.encrypt(g(i%2Cc.slice(d%2Cd%2B4))))%3Breturn%20c%3Dc.slice(d)%2Cf.bitLength(c)%3C128%26%26(i%3Dg(i%2Ce(i))%2Cc%3Df.concat(c%2C%5B-2147483648%5D))%2Ch%3Dg(h%2Cc)%2Cb.encrypt(g(e(g(i%2Ce(i)))%2Ch))%7D%2CA%3Afunction(a)%7Breturn%5Ba%5B0%5D%3C%3C1%5Ea%5B1%5D%3E%3E%3E31%2Ca%5B1%5D%3C%3C1%5Ea%5B2%5D%3E%3E%3E31%2Ca%5B2%5D%3C%3C1%5Ea%5B3%5D%3E%3E%3E31%2Ca%5B3%5D%3C%3C1%5E(a%5B0%5D%3E%3E%3E31)*135%5D%7D%7D%2Ca.misc.hmac%3Dfunction(b%2Cc)%7Bthis.M%3Dc%3Dc%7C%7Ca.hash.sha256%3Bvar%20d%3D%5B%5B%5D%2C%5B%5D%5D%2Ce%3Dc.prototype.blockSize%2F32%3Bthis.l%3D%5Bnew%20c%2Cnew%20c%5D%2Cb.length%3Ee%26%26(b%3Dc.hash(b))%3Bfor(c%3D0%3Bc%3Ce%3Bc%2B%2B)d%5B0%5D%5Bc%5D%3Db%5Bc%5D%5E909522486%2Cd%5B1%5D%5Bc%5D%3Db%5Bc%5D%5E1549556828%3Bthis.l%5B0%5D.update(d%5B0%5D)%2Cthis.l%5B1%5D.update(d%5B1%5D)%7D%2Ca.misc.hmac.prototype.encrypt%3Da.misc.hmac.prototype.mac%3Dfunction(a%2Cb)%7Breturn%20a%3D(new%20this.M(this.l%5B0%5D)).update(a%2Cb).finalize()%2C(new%20this.M(this.l%5B1%5D)).update(a).finalize()%7D%2Ca.misc.pbkdf2%3Dfunction(b%2Cc%2Cd%2Ce%2Cf)%7Bd%3Dd%7C%7C1e3%3Bif(e%3C0%7C%7Cd%3C0)throw%20a.exception.invalid(%22invalid%20params%20to%20pbkdf2%22)%3Btypeof%20b%3D%3D%22string%22%26%26(b%3Da.codec.utf8String.toBits(b))%2Cf%3Df%7C%7Ca.misc.hmac%2Cb%3Dnew%20f(b)%3Bvar%20g%2Ch%2Ci%2Cj%2Ck%3D%5B%5D%2Cl%3Da.bitArray%3Bfor(j%3D1%3B32*k.length%3C(e%7C%7C1)%3Bj%2B%2B)%7Bf%3Dg%3Db.encrypt(l.concat(c%2C%5Bj%5D))%3Bfor(h%3D1%3Bh%3Cd%3Bh%2B%2B)%7Bg%3Db.encrypt(g)%3Bfor(i%3D0%3Bi%3Cg.length%3Bi%2B%2B)f%5Bi%5D%5E%3Dg%5Bi%5D%7Dk%3Dk.concat(f)%7Dreturn%20e%26%26(k%3Dl.clamp(k%2Ce))%2Ck%7D%2Ca.random%3D%7BrandomWords%3Afunction(b%2Cc)%7Bvar%20d%3D%5B%5D%3Bc%3Dthis.isReady(c)%3Bvar%20e%3Bif(c%3D%3D%3D0)throw%20new%20a.exception.notready(%22generator%20isn't%20seeded%22)%3Bc%262%26%26this.U(!(c%261))%3Bfor(c%3D0%3Bc%3Cb%3Bc%2B%3D4)(c%2B1)%2565536%3D%3D%3D0%26%26this.L()%2Ce%3Dthis.u()%2Cd.push(e%5B0%5D%2Ce%5B1%5D%2Ce%5B2%5D%2Ce%5B3%5D)%3Breturn%20this.L()%2Cd.slice(0%2Cb)%7D%2CsetDefaultParanoia%3Afunction(a)%7Bthis.t%3Da%7D%2CaddEntropy%3Afunction(b%2Cc%2Cd)%7Bd%3Dd%7C%7C%22user%22%3Bvar%20e%2Cf%2Cg%3D(new%20Date).valueOf()%2Ch%3Dthis.q%5Bd%5D%2Ci%3Dthis.isReady()%3Be%3Dthis.F%5Bd%5D%2Ce%3D%3D%3Dundefined%26%26(e%3Dthis.F%5Bd%5D%3Dthis.R%2B%2B)%2Ch%3D%3D%3Dundefined%26%26(h%3Dthis.q%5Bd%5D%3D0)%2Cthis.q%5Bd%5D%3D(this.q%5Bd%5D%2B1)%25this.b.length%3Bswitch(typeof%20b)%7Bcase%22number%22%3Abreak%3Bcase%22object%22%3Aif(c%3D%3D%3Dundefined)for(d%3Dc%3D0%3Bd%3Cb.length%3Bd%2B%2B)for(f%3Db%5Bd%5D%3Bf%3E0%3B)c%2B%2B%2Cf%3E%3E%3E%3D1%3Bthis.b%5Bh%5D.update(%5Be%2Cthis.J%2B%2B%2C2%2Cc%2Cg%2Cb.length%5D.concat(b))%3Bbreak%3Bcase%22string%22%3Ac%3D%3D%3Dundefined%26%26(c%3Db.length)%2Cthis.b%5Bh%5D.update(%5Be%2Cthis.J%2B%2B%2C3%2Cc%2Cg%2Cb.length%5D)%2Cthis.b%5Bh%5D.update(b)%3Bbreak%3Bdefault%3Athrow%20new%20a.exception.bug(%22random%3A%20addEntropy%20only%20supports%20number%2C%20array%20or%20string%22)%7Dthis.j%5Bh%5D%2B%3Dc%2Cthis.f%2B%3Dc%2Ci%3D%3D%3D0%26%26(this.isReady()!%3D%3D0%26%26this.K(%22seeded%22%2CMath.max(this.g%2Cthis.f))%2Cthis.K(%22progress%22%2Cthis.getProgress()))%7D%2CisReady%3Afunction(a)%7Breturn%20a%3Dthis.B%5Ba!%3D%3Dundefined%3Fa%3Athis.t%5D%2Cthis.g%26%26this.g%3E%3Da%3Fthis.j%5B0%5D%3E80%26%26(new%20Date).valueOf()%3Ethis.O%3F3%3A1%3Athis.f%3E%3Da%3F2%3A0%7D%2CgetProgress%3Afunction(a)%7Breturn%20a%3Dthis.B%5Ba%3Fa%3Athis.t%5D%2Cthis.g%3E%3Da%3F(1)%5B0%5D%3Athis.f%3Ea%3F(1)%5B0%5D%3Athis.f%2Fa%7D%2CstartCollectors%3Afunction()%7Bif(!this.m)%7Bif(window.addEventListener)window.addEventListener(%22load%22%2Cthis.o%2C!1)%2Cwindow.addEventListener(%22mousemove%22%2Cthis.p%2C!1)%3Belse%20if(document.attachEvent)document.attachEvent(%22onload%22%2Cthis.o)%2Cdocument.attachEvent(%22onmousemove%22%2Cthis.p)%3Belse%20throw%20new%20a.exception.bug(%22can't%20attach%20event%22)%3Bthis.m%3D!0%7D%7D%2CstopCollectors%3Afunction()%7Bthis.m%26%26(window.removeEventListener%3F(window.removeEventListener(%22load%22%2Cthis.o)%2Cwindow.removeEventListener(%22mousemove%22%2Cthis.p))%3Awindow.detachEvent%26%26(window.detachEvent(%22onload%22%2Cthis.o)%2Cwindow.detachEvent(%22onmousemove%22%2Cthis.p))%2Cthis.m%3D!1)%7D%2CaddEventListener%3Afunction(a%2Cb)%7Bthis.r%5Ba%5D%5Bthis.Q%2B%2B%5D%3Db%7D%2CremoveEventListener%3Afunction(a%2Cb)%7Bvar%20c%3Ba%3Dthis.r%5Ba%5D%3Bvar%20d%3D%5B%5D%3Bfor(c%20in%20a)a.hasOwnProperty%5Bc%5D%26%26a%5Bc%5D%3D%3D%3Db%26%26d.push(c)%3Bfor(b%3D0%3Bb%3Cd.length%3Bb%2B%2B)c%3Dd%5Bb%5D%2Cdelete%20a%5Bc%5D%7D%2Cb%3A%5Bnew%20a.hash.sha256%5D%2Cj%3A%5B0%5D%2Cz%3A0%2Cq%3A%7B%7D%2CJ%3A0%2CF%3A%7B%7D%2CR%3A0%2Cg%3A0%2Cf%3A0%2CO%3A0%2Ca%3A%5B0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%5D%2Cd%3A%5B0%2C0%2C0%2C0%5D%2Cs%3Aundefined%2Ct%3A6%2Cm%3A!1%2Cr%3A%7Bprogress%3A%7B%7D%2Cseeded%3A%7B%7D%7D%2CQ%3A0%2CB%3A%5B0%2C48%2C64%2C96%2C128%2C192%2C256%2C384%2C512%2C768%2C1024%5D%2Cu%3Afunction()%7Bfor(var%20a%3D0%3Ba%3C4%3Ba%2B%2B)%7Bthis.d%5Ba%5D%3Dthis.d%5Ba%5D%2B1%7C0%3Bif(this.d%5Ba%5D)break%7Dreturn%20this.s.encrypt(this.d)%7D%2CL%3Afunction()%7Bthis.a%3Dthis.u().concat(this.u())%2Cthis.s%3Dnew%20a.cipher.aes(this.a)%7D%2CT%3Afunction(b)%7Bthis.a%3Da.hash.sha256.hash(this.a.concat(b))%2Cthis.s%3Dnew%20a.cipher.aes(this.a)%3Bfor(b%3D0%3Bb%3C4%3Bb%2B%2B)%7Bthis.d%5Bb%5D%3Dthis.d%5Bb%5D%2B1%7C0%3Bif(this.d%5Bb%5D)break%7D%7D%2CU%3Afunction(b)%7Bvar%20c%3D%5B%5D%2Cd%3D0%2Ce%3Bthis.O%3Dc%5B0%5D%3D(new%20Date).valueOf()%2B3e4%3Bfor(e%3D0%3Be%3C16%3Be%2B%2B)c.push(Math.random()*4294967296%7C0)%3Bfor(e%3D0%3Be%3Cthis.b.length%3Be%2B%2B)%7Bc%3Dc.concat(this.b%5Be%5D.finalize())%2Cd%2B%3Dthis.j%5Be%5D%2Cthis.j%5Be%5D%3D0%3Bif(!b%26%26this.z%261%3C%3Ce)break%7Dthis.z%3E%3D1%3C%3Cthis.b.length%26%26(this.b.push(new%20a.hash.sha256)%2Cthis.j.push(0))%2Cthis.f-%3Dd%2Cd%3Ethis.g%26%26(this.g%3Dd)%2Cthis.z%2B%2B%2Cthis.T(c)%7D%2Cp%3Afunction(b)%7Ba.random.addEntropy(%5Bb.x%7C%7Cb.clientX%7C%7Cb.offsetX%2Cb.y%7C%7Cb.clientY%7C%7Cb.offsetY%5D%2C2%2C%22mouse%22)%7D%2Co%3Afunction()%7Ba.random.addEntropy(new%20Date%2C2%2C%22loadtime%22)%7D%2CK%3Afunction(b%2Cc)%7Bvar%20d%3Bb%3Da.random.r%5Bb%5D%3Bvar%20e%3D%5B%5D%3Bfor(d%20in%20b)b.hasOwnProperty(d)%26%26e.push(b%5Bd%5D)%3Bfor(d%3D0%3Bd%3Ce.length%3Bd%2B%2B)e%5Bd%5D(c)%7D%7D%2Ca.json%3D%7Bdefaults%3A%7Bv%3A1%2Citer%3A1e3%2Cks%3A128%2Cts%3A64%2Cmode%3A%22ccm%22%2Cadata%3A%22%22%2Ccipher%3A%22aes%22%7D%2Cencrypt%3Afunction(b%2Cc%2Cd%2Ce)%7Bd%3Dd%7C%7C%7B%7D%2Ce%3De%7C%7C%7B%7D%3Bvar%20f%3Da.json%2Cg%3Df.c(%7Biv%3Aa.random.randomWords(4%2C0)%7D%2Cf.defaults)%3Bf.c(g%2Cd)%2Ctypeof%20g.salt%3D%3D%22string%22%26%26(g.salt%3Da.codec.base64.toBits(g.salt))%2Ctypeof%20g.iv%3D%3D%22string%22%26%26(g.iv%3Da.codec.base64.toBits(g.iv))%3Bif(!a.mode%5Bg.mode%5D%7C%7C!a.cipher%5Bg.cipher%5D%7C%7Ctypeof%20b%3D%3D%22string%22%26%26g.iter%3C%3D100%7C%7Cg.ts!%3D%3D64%26%26g.ts!%3D%3D96%26%26g.ts!%3D%3D128%7C%7Cg.ks!%3D%3D128%26%26g.ks!%3D%3D192%26%26g.ks!%3D%3D256%7C%7Cg.iv.length%3C2%7C%7Cg.iv.length%3E4)throw%20new%20a.exception.invalid(%22json%20encrypt%3A%20invalid%20parameters%22)%3Breturn%20typeof%20b%3D%3D%22string%22%26%26(d%3Da.misc.cachedPbkdf2(b%2Cg)%2Cb%3Dd.key.slice(0%2Cg.ks%2F32)%2Cg.salt%3Dd.salt)%2Ctypeof%20c%3D%3D%22string%22%26%26(c%3Da.codec.utf8String.toBits(c))%2Cd%3Dnew%20a.cipher%5Bg.cipher%5D(b)%2Cf.c(e%2Cg)%2Ce.key%3Db%2Cg.ct%3Da.mode%5Bg.mode%5D.encrypt(d%2Cc%2Cg.iv%2Cg.adata%2Cg.tag)%2Cf.encode(f.V(g%2Cf.defaults))%7D%2Cdecrypt%3Afunction(b%2Cc%2Cd%2Ce)%7Bd%3Dd%7C%7C%7B%7D%2Ce%3De%7C%7C%7B%7D%3Bvar%20f%3Da.json%3Bc%3Df.c(f.c(f.c(%7B%7D%2Cf.defaults)%2Cf.decode(c))%2Cd%2C!0)%2Ctypeof%20c.salt%3D%3D%22string%22%26%26(c.salt%3Da.codec.base64.toBits(c.salt))%2Ctypeof%20c.iv%3D%3D%22string%22%26%26(c.iv%3Da.codec.base64.toBits(c.iv))%3Bif(!a.mode%5Bc.mode%5D%7C%7C!a.cipher%5Bc.cipher%5D%7C%7Ctypeof%20b%3D%3D%22string%22%26%26c.iter%3C%3D100%7C%7Cc.ts!%3D%3D64%26%26c.ts!%3D%3D96%26%26c.ts!%3D%3D128%7C%7Cc.ks!%3D%3D128%26%26c.ks!%3D%3D192%26%26c.ks!%3D%3D256%7C%7C!c.iv%7C%7Cc.iv.length%3C2%7C%7Cc.iv.length%3E4)throw%20new%20a.exception.invalid(%22json%20decrypt%3A%20invalid%20parameters%22)%3Breturn%20typeof%20b%3D%3D%22string%22%26%26(d%3Da.misc.cachedPbkdf2(b%2Cc)%2Cb%3Dd.key.slice(0%2Cc.ks%2F32)%2Cc.salt%3Dd.salt)%2Cd%3Dnew%20a.cipher%5Bc.cipher%5D(b)%2Cd%3Da.mode%5Bc.mode%5D.decrypt(d%2Cc.ct%2Cc.iv%2Cc.adata%2Cc.tag)%2Cf.c(e%2Cc)%2Ce.key%3Db%2Ca.codec.utf8String.fromBits(d)%7D%2Cencode%3Afunction(b)%7Bvar%20c%2Cd%3D%22%7B%22%2Ce%3D%22%22%3Bfor(c%20in%20b)if(b.hasOwnProperty(c))%7Bif(!c.match(%2F%5E%5Ba-z0-9%5D%2B%24%2Fi))throw%20new%20a.exception.invalid(%22json%20encode%3A%20invalid%20property%20name%22)%3Bd%2B%3De%2Bc%2B%22%3A%22%2Ce%3D%22%2C%22%3Bswitch(typeof%20b%5Bc%5D)%7Bcase%22number%22%3Acase%22boolean%22%3Ad%2B%3Db%5Bc%5D%3Bbreak%3Bcase%22string%22%3Ad%2B%3D'%22'%2Bescape(b%5Bc%5D)%2B'%22'%3Bbreak%3Bcase%22object%22%3Ad%2B%3D'%22'%2Ba.codec.base64.fromBits(b%5Bc%5D%2C1)%2B'%22'%3Bbreak%3Bdefault%3Athrow%20new%20a.exception.bug(%22json%20encode%3A%20unsupported%20type%22)%7D%7Dreturn%20d%2B%22%7D%22%7D%2Cdecode%3Afunction(b)%7Bb%3Db.replace(%2F%5Cs%2Fg%2C%22%22)%3Bif(!b.match(%2F%5E%5C%7B.*%5C%7D%24%2F))throw%20new%20a.exception.invalid(%22json%20decode%3A%20this%20isn't%20json!%22)%3Bb%3Db.replace(%2F%5E%5C%7B%7C%5C%7D%24%2Fg%2C%22%22).split(%2F%2C%2F)%3Bvar%20c%3D%7B%7D%2Cd%2Ce%3Bfor(d%3D0%3Bd%3Cb.length%3Bd%2B%2B)%7Bif(!(e%3Db%5Bd%5D.match(%2F%5E(%5Ba-z%5D%5Ba-z0-9%5D*)%3A(%3F%3A(%5Cd%2B)%7C%22(%5Ba-z0-9%2B%5C%2F%25*_.%40%3D%5C-%5D*)%22)%24%2Fi)))throw%20new%20a.exception.invalid(%22json%20decode%3A%20this%20isn't%20json!%22)%3Bc%5Be%5B1%5D%5D%3De%5B2%5D%3FparseInt(e%5B2%5D%2C10)%3Ae%5B1%5D.match(%2F%5E(ct%7Csalt%7Civ)%24%2F)%3Fa.codec.base64.toBits(e%5B3%5D)%3Aunescape(e%5B3%5D)%7Dreturn%20c%7D%2Cc%3Afunction(b%2Cc%2Cd)%7Bb%3D%3D%3Dundefined%26%26(b%3D%7B%7D)%3Bif(c%3D%3D%3Dundefined)return%20b%3Bvar%20e%3Bfor(e%20in%20c)if(c.hasOwnProperty(e))%7Bif(d%26%26b%5Be%5D!%3D%3Dundefined%26%26b%5Be%5D!%3D%3Dc%5Be%5D)throw%20new%20a.exception.invalid(%22required%20parameter%20overridden%22)%3Bb%5Be%5D%3Dc%5Be%5D%7Dreturn%20b%7D%2CV%3Afunction(a%2Cb)%7Bvar%20c%3D%7B%7D%2Cd%3Bfor(d%20in%20a)a.hasOwnProperty(d)%26%26a%5Bd%5D!%3D%3Db%5Bd%5D%26%26(c%5Bd%5D%3Da%5Bd%5D)%3Breturn%20c%7D%2CW%3Afunction(a%2Cb)%7Bvar%20c%3D%7B%7D%2Cd%3Bfor(d%3D0%3Bd%3Cb.length%3Bd%2B%2B)a%5Bb%5Bd%5D%5D!%3D%3Dundefined%26%26(c%5Bb%5Bd%5D%5D%3Da%5Bb%5Bd%5D%5D)%3Breturn%20c%7D%7D%2Ca.encrypt%3Da.json.encrypt%2Ca.decrypt%3Da.json.decrypt%2Ca.misc.S%3D%7B%7D%2Ca.misc.cachedPbkdf2%3Dfunction(b%2Cc)%7Bvar%20d%3Da.misc.S%2Ce%3Breturn%20c%3Dc%7C%7C%7B%7D%2Ce%3Dc.iter%7C%7C1e3%2Cd%3Dd%5Bb%5D%3Dd%5Bb%5D%7C%7C%7B%7D%2Ce%3Dd%5Be%5D%3Dd%5Be%5D%7C%7C%7BfirstSalt%3Ac.salt%26%26c.salt.length%3Fc.salt.slice(0)%3Aa.random.randomWords(2%2C0)%7D%2Cd%3Dc.salt%3D%3D%3Dundefined%3Fe.firstSalt%3Ac.salt%2Ce%5Bd%5D%3De%5Bd%5D%7C%7Ca.misc.pbkdf2(b%2Cd%2Cc.iter)%2C%7Bkey%3Ae%5Bd%5D.slice(0)%2Csalt%3Ad.slice(0)%7D%7D%3Bvar%20b%3D%22gmail-gpg%22%2Cc%3Db%2B%22-public-key%22%2Cd%3Db%2B%22-public-key-type%22%2Ce%3Db%2B%22-public-key-id%22%2Cf%3D%5B%22RSA%22%2C%22Elgamal%22%5D%2Cg%3Ddocument.getElementById(%22canvas_frame%22)%2Ch%3Dg.contentDocument%7C%7Cg.contentWindow.document%2Ci%3Dfunction(a)%7Bthrow%20alert(a)%2Ca%7D%2Cj%3Dfunction()%7Bvar%20b%3Dprompt(%22Enter%20a%20password%2C%20please!%22)%2Cc%3Dh.getElementsByName(%22body%22)%5B0%5D%3Bb%3D%3D%3D%22%22%3Fi(%22You%20must%20enter%20a%20password.%22)%3Ab.length%3C12%26%26i(%22You%20must%20enter%20a%20longer%20password.%22)%2Cc.value%3Da.encrypt(b%2Cc.value)%7D%2Ck%3Dfunction()%7Bvar%20a%3Dh.getElementsByTagName(%22div%22)%2Cc%3Dnull%3Bfor(var%20d%3D0%3Bd%3Ca.length%3Bd%2B%2B)%7Bvar%20e%3Da%5Bd%5D%3Bif(e.firstChild!%3D%3Dnull)%7Bvar%20f%3De.firstChild%3Bif(f.nodeType%3D%3D%3D3%26%26f.nodeValue%3D%3D%3D%22Discard%22)%7Bc%3De%3Bbreak%7D%7D%7Dc%3D%3D%3Dnull%26%26i(%22Could%20not%20find%20Gmail's%20%60Discard'%20button%22)%3Bvar%20g%3Dh.createElement(%22span%22)%2Ck%3Dh.createElement(%22div%22)%3Bg.id%3Db%2Ck.setAttribute(%22role%22%2C%22button%22)%2Ck.className%3Dc.className%2Ck.appendChild(h.createTextNode(%22Encrypt%22))%2Ck.onclick%3Dj%2Cg.appendChild(k)%2Cc.parentNode.insertBefore(g)%7D%3Bif(h.getElementById(b)!%3D%3Dnull)%7Bvar%20l%3Dh.getElementById(b)%3Bl.parentNode.removeChild(l)%7Dk()%7D)()%3B
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment