-
Notifications
You must be signed in to change notification settings - Fork 2
/
bundle.min.js
1 lines (1 loc) · 20.3 KB
/
bundle.min.js
1
function PBKDF2(a,b,c,d){var e,f,g=rstr2binb(a),h=b,i=c,j=10,k=0,l=d,m=null,n=20,o=Math.ceil(l/n),p=1,q=new Array(16),r=new Array(16),s=new Array(0,0,0,0,0),t="",u=this;g.length>16&&(g=binb_sha1(g,a.length*chrsz));for(var v=0;v<16;++v)q[v]=909522486^g[v],r[v]=1549556828^g[v];this.deriveKey=function(a,b){f=a,e=b,setTimeout(function(){u.do_PBKDF2_iterations()},0)},this.do_PBKDF2_iterations=function(){var a=j;i-k<j&&(a=i-k);for(var b=0;b<a;++b){if(0==k){var c=h+String.fromCharCode(p>>24&15)+String.fromCharCode(p>>16&15)+String.fromCharCode(p>>8&15)+String.fromCharCode(15&p);m=binb_sha1(q.concat(rstr2binb(c)),512+8*c.length),m=binb_sha1(r.concat(m),672)}else m=binb_sha1(q.concat(m),512+32*m.length),m=binb_sha1(r.concat(m),672);for(var d=0;d<m.length;++d)s[d]^=m[d];k++}if(f((p-1+k/i)/o*100),k<i)setTimeout(function(){u.do_PBKDF2_iterations()},0);else if(p<o)t+=rstr2hex(binb2rstr(s)),p++,s=new Array(0,0,0,0,0),k=0,setTimeout(function(){u.do_PBKDF2_iterations()},0);else{var g=rstr2hex(binb2rstr(s));t+=g.substr(0,2*(l-(o-1)*n)),e(t)}}}function hex_sha1(a){return rstr2hex(rstr_sha1(str2rstr_utf8(a)))}function b64_sha1(a){return rstr2b64(rstr_sha1(str2rstr_utf8(a)))}function any_sha1(a,b){return rstr2any(rstr_sha1(str2rstr_utf8(a)),b)}function hex_hmac_sha1(a,b){return rstr2hex(rstr_hmac_sha1(str2rstr_utf8(a),str2rstr_utf8(b)))}function b64_hmac_sha1(a,b){return rstr2b64(rstr_hmac_sha1(str2rstr_utf8(a),str2rstr_utf8(b)))}function any_hmac_sha1(a,b,c){return rstr2any(rstr_hmac_sha1(str2rstr_utf8(a),str2rstr_utf8(b)),c)}function sha1_vm_test(){return"a9993e364706816aba3e25717850c26c9cd0d89d"==hex_sha1("abc").toLowerCase()}function rstr_sha1(a){return binb2rstr(binb_sha1(rstr2binb(a),8*a.length))}function rstr_hmac_sha1(a,b){var c=rstr2binb(a);c.length>16&&(c=binb_sha1(c,8*a.length));for(var d=Array(16),e=Array(16),f=0;f<16;f++)d[f]=909522486^c[f],e[f]=1549556828^c[f];var g=binb_sha1(d.concat(rstr2binb(b)),512+8*b.length);return binb2rstr(binb_sha1(e.concat(g),672))}function rstr2hex(a){for(var b,c=hexcase?"0123456789ABCDEF":"0123456789abcdef",d="",e=0;e<a.length;e++)b=a.charCodeAt(e),d+=c.charAt(b>>>4&15)+c.charAt(15&b);return d}function rstr2b64(a){for(var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c="",d=a.length,e=0;e<d;e+=3)for(var f=a.charCodeAt(e)<<16|(e+1<d?a.charCodeAt(e+1)<<8:0)|(e+2<d?a.charCodeAt(e+2):0),g=0;g<4;g++)8*e+6*g>8*a.length?c+=b64pad:c+=b.charAt(f>>>6*(3-g)&63);return c}function rstr2any(a,b){var c,d,e,f,g=b.length,h=Array(),i=Array(Math.ceil(a.length/2));for(c=0;c<i.length;c++)i[c]=a.charCodeAt(2*c)<<8|a.charCodeAt(2*c+1);for(;i.length>0;){for(f=Array(),e=0,c=0;c<i.length;c++)e=(e<<16)+i[c],d=Math.floor(e/g),e-=d*g,(f.length>0||d>0)&&(f[f.length]=d);h[h.length]=e,i=f}var j="";for(c=h.length-1;c>=0;c--)j+=b.charAt(h[c]);var k=Math.ceil(8*a.length/(Math.log(b.length)/Math.log(2)));for(c=j.length;c<k;c++)j=b[0]+j;return j}function str2rstr_utf8(a){for(var b,c,d="",e=-1;++e<a.length;)b=a.charCodeAt(e),c=e+1<a.length?a.charCodeAt(e+1):0,55296<=b&&b<=56319&&56320<=c&&c<=57343&&(b=65536+((1023&b)<<10)+(1023&c),e++),b<=127?d+=String.fromCharCode(b):b<=2047?d+=String.fromCharCode(192|b>>>6&31,128|63&b):b<=65535?d+=String.fromCharCode(224|b>>>12&15,128|b>>>6&63,128|63&b):b<=2097151&&(d+=String.fromCharCode(240|b>>>18&7,128|b>>>12&63,128|b>>>6&63,128|63&b));return d}function str2rstr_utf16le(a){for(var b="",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c),a.charCodeAt(c)>>>8&255);return b}function str2rstr_utf16be(a){for(var b="",c=0;c<a.length;c++)b+=String.fromCharCode(a.charCodeAt(c)>>>8&255,255&a.charCodeAt(c));return b}function rstr2binb(a){for(var b=Array(a.length>>2),c=0;c<b.length;c++)b[c]=0;for(var c=0;c<8*a.length;c+=8)b[c>>5]|=(255&a.charCodeAt(c/8))<<24-c%32;return b}function binb2rstr(a){for(var b="",c=0;c<32*a.length;c+=8)b+=String.fromCharCode(a[c>>5]>>>24-c%32&255);return b}function binb_sha1(a,b){a[b>>5]|=128<<24-b%32,a[15+(b+64>>9<<4)]=b;for(var c=Array(80),d=1732584193,e=-271733879,f=-1732584194,g=271733878,h=-1009589776,i=0;i<a.length;i+=16){for(var j=d,k=e,l=f,m=g,n=h,o=0;o<80;o++){c[o]=o<16?a[i+o]:bit_rol(c[o-3]^c[o-8]^c[o-14]^c[o-16],1);var p=safe_add(safe_add(bit_rol(d,5),sha1_ft(o,e,f,g)),safe_add(safe_add(h,c[o]),sha1_kt(o)));h=g,g=f,f=bit_rol(e,30),e=d,d=p}d=safe_add(d,j),e=safe_add(e,k),f=safe_add(f,l),g=safe_add(g,m),h=safe_add(h,n)}return Array(d,e,f,g,h)}function sha1_ft(a,b,c,d){return a<20?b&c|~b&d:a<40?b^c^d:a<60?b&c|b&d|c&d:b^c^d}function sha1_kt(a){return a<20?1518500249:a<40?1859775393:a<60?-1894007588:-899497514}function safe_add(a,b){var c=(65535&a)+(65535&b);return(a>>16)+(b>>16)+(c>>16)<<16|65535&c}function bit_rol(a,b){return a<<b|a>>>32-b}var slowAES={aes:{keySize:{SIZE_128:16,SIZE_192:24,SIZE_256:32},sbox:[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],rsbox:[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],rotate:function(a){for(var b=a[0],c=0;c<3;c++)a[c]=a[c+1];return a[3]=b,a},Rcon:[141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203,141,1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145,57,114,228,211,189,97,194,159,37,74,148,51,102,204,131,29,58,116,232,203],G2X:[0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,27,25,31,29,19,17,23,21,11,9,15,13,3,1,7,5,59,57,63,61,51,49,55,53,43,41,47,45,35,33,39,37,91,89,95,93,83,81,87,85,75,73,79,77,67,65,71,69,123,121,127,125,115,113,119,117,107,105,111,109,99,97,103,101,155,153,159,157,147,145,151,149,139,137,143,141,131,129,135,133,187,185,191,189,179,177,183,181,171,169,175,173,163,161,167,165,219,217,223,221,211,209,215,213,203,201,207,205,195,193,199,197,251,249,255,253,243,241,247,245,235,233,239,237,227,225,231,229],G3X:[0,3,6,5,12,15,10,9,24,27,30,29,20,23,18,17,48,51,54,53,60,63,58,57,40,43,46,45,36,39,34,33,96,99,102,101,108,111,106,105,120,123,126,125,116,119,114,113,80,83,86,85,92,95,90,89,72,75,78,77,68,71,66,65,192,195,198,197,204,207,202,201,216,219,222,221,212,215,210,209,240,243,246,245,252,255,250,249,232,235,238,237,228,231,226,225,160,163,166,165,172,175,170,169,184,187,190,189,180,183,178,177,144,147,150,149,156,159,154,153,136,139,142,141,132,135,130,129,155,152,157,158,151,148,145,146,131,128,133,134,143,140,137,138,171,168,173,174,167,164,161,162,179,176,181,182,191,188,185,186,251,248,253,254,247,244,241,242,227,224,229,230,239,236,233,234,203,200,205,206,199,196,193,194,211,208,213,214,223,220,217,218,91,88,93,94,87,84,81,82,67,64,69,70,79,76,73,74,107,104,109,110,103,100,97,98,115,112,117,118,127,124,121,122,59,56,61,62,55,52,49,50,35,32,37,38,47,44,41,42,11,8,13,14,7,4,1,2,19,16,21,22,31,28,25,26],G9X:[0,9,18,27,36,45,54,63,72,65,90,83,108,101,126,119,144,153,130,139,180,189,166,175,216,209,202,195,252,245,238,231,59,50,41,32,31,22,13,4,115,122,97,104,87,94,69,76,171,162,185,176,143,134,157,148,227,234,241,248,199,206,213,220,118,127,100,109,82,91,64,73,62,55,44,37,26,19,8,1,230,239,244,253,194,203,208,217,174,167,188,181,138,131,152,145,77,68,95,86,105,96,123,114,5,12,23,30,33,40,51,58,221,212,207,198,249,240,235,226,149,156,135,142,177,184,163,170,236,229,254,247,200,193,218,211,164,173,182,191,128,137,146,155,124,117,110,103,88,81,74,67,52,61,38,47,16,25,2,11,215,222,197,204,243,250,225,232,159,150,141,132,187,178,169,160,71,78,85,92,99,106,113,120,15,6,29,20,43,34,57,48,154,147,136,129,190,183,172,165,210,219,192,201,246,255,228,237,10,3,24,17,46,39,60,53,66,75,80,89,102,111,116,125,161,168,179,186,133,140,151,158,233,224,251,242,205,196,223,214,49,56,35,42,21,28,7,14,121,112,107,98,93,84,79,70],GBX:[0,11,22,29,44,39,58,49,88,83,78,69,116,127,98,105,176,187,166,173,156,151,138,129,232,227,254,245,196,207,210,217,123,112,109,102,87,92,65,74,35,40,53,62,15,4,25,18,203,192,221,214,231,236,241,250,147,152,133,142,191,180,169,162,246,253,224,235,218,209,204,199,174,165,184,179,130,137,148,159,70,77,80,91,106,97,124,119,30,21,8,3,50,57,36,47,141,134,155,144,161,170,183,188,213,222,195,200,249,242,239,228,61,54,43,32,17,26,7,12,101,110,115,120,73,66,95,84,247,252,225,234,219,208,205,198,175,164,185,178,131,136,149,158,71,76,81,90,107,96,125,118,31,20,9,2,51,56,37,46,140,135,154,145,160,171,182,189,212,223,194,201,248,243,238,229,60,55,42,33,16,27,6,13,100,111,114,121,72,67,94,85,1,10,23,28,45,38,59,48,89,82,79,68,117,126,99,104,177,186,167,172,157,150,139,128,233,226,255,244,197,206,211,216,122,113,108,103,86,93,64,75,34,41,52,63,14,5,24,19,202,193,220,215,230,237,240,251,146,153,132,143,190,181,168,163],GDX:[0,13,26,23,52,57,46,35,104,101,114,127,92,81,70,75,208,221,202,199,228,233,254,243,184,181,162,175,140,129,150,155,187,182,161,172,143,130,149,152,211,222,201,196,231,234,253,240,107,102,113,124,95,82,69,72,3,14,25,20,55,58,45,32,109,96,119,122,89,84,67,78,5,8,31,18,49,60,43,38,189,176,167,170,137,132,147,158,213,216,207,194,225,236,251,246,214,219,204,193,226,239,248,245,190,179,164,169,138,135,144,157,6,11,28,17,50,63,40,37,110,99,116,121,90,87,64,77,218,215,192,205,238,227,244,249,178,191,168,165,134,139,156,145,10,7,16,29,62,51,36,41,98,111,120,117,86,91,76,65,97,108,123,118,85,88,79,66,9,4,19,30,61,48,39,42,177,188,171,166,133,136,159,146,217,212,195,206,237,224,247,250,183,186,173,160,131,142,153,148,223,210,197,200,235,230,241,252,103,106,125,112,83,94,73,68,15,2,21,24,59,54,33,44,12,1,22,27,56,53,34,47,100,105,126,115,80,93,74,71,220,209,198,203,232,229,242,255,180,185,174,163,128,141,154,151],GEX:[0,14,28,18,56,54,36,42,112,126,108,98,72,70,84,90,224,238,252,242,216,214,196,202,144,158,140,130,168,166,180,186,219,213,199,201,227,237,255,241,171,165,183,185,147,157,143,129,59,53,39,41,3,13,31,17,75,69,87,89,115,125,111,97,173,163,177,191,149,155,137,135,221,211,193,207,229,235,249,247,77,67,81,95,117,123,105,103,61,51,33,47,5,11,25,23,118,120,106,100,78,64,82,92,6,8,26,20,62,48,34,44,150,152,138,132,174,160,178,188,230,232,250,244,222,208,194,204,65,79,93,83,121,119,101,107,49,63,45,35,9,7,21,27,161,175,189,179,153,151,133,139,209,223,205,195,233,231,245,251,154,148,134,136,162,172,190,176,234,228,246,248,210,220,206,192,122,116,102,104,66,76,94,80,10,4,22,24,50,60,46,32,236,226,240,254,212,218,200,198,156,146,128,142,164,170,184,182,12,2,16,30,52,58,40,38,124,114,96,110,68,74,88,86,55,57,43,37,15,1,19,29,71,73,91,85,127,113,99,109,215,217,203,197,239,225,243,253,167,169,187,181,159,145,131,141],core:function(a,b){a=this.rotate(a);for(var c=0;c<4;++c)a[c]=this.sbox[a[c]];return a[0]=a[0]^this.Rcon[b],a},expandKey:function(a,b){for(var c=16*(this.numberOfRounds(b)+1),d=0,e=1,f=[],g=[],h=0;h<c;h++)g[h]=0;for(var i=0;i<b;i++)g[i]=a[i];for(d+=b;d<c;){for(var j=0;j<4;j++)f[j]=g[d-4+j];if(d%b==0&&(f=this.core(f,e++)),b==this.keySize.SIZE_256&&d%b==16)for(var k=0;k<4;k++)f[k]=this.sbox[f[k]];for(var l=0;l<4;l++)g[d]=g[d-b]^f[l],d++}return g},addRoundKey:function(a,b){for(var c=0;c<16;c++)a[c]^=b[c];return a},createRoundKey:function(a,b){for(var c=[],d=0;d<4;d++)for(var e=0;e<4;e++)c[4*e+d]=a[b+4*d+e];return c},subBytes:function(a,b){for(var c=0;c<16;c++)a[c]=b?this.rsbox[a[c]]:this.sbox[a[c]];return a},shiftRows:function(a,b){for(var c=0;c<4;c++)a=this.shiftRow(a,4*c,c,b);return a},shiftRow:function(a,b,c,d){for(var e=0;e<c;e++)if(d){for(var f=a[b+3],g=3;g>0;g--)a[b+g]=a[b+g-1];a[b]=f}else{for(var f=a[b],g=0;g<3;g++)a[b+g]=a[b+g+1];a[b+3]=f}return a},galois_multiplication:function(a,b){for(var c=0,d=0;d<8;d++){1==(1&b)&&(c^=a),c>256&&(c^=256);var e=128&a;a<<=1,a>256&&(a^=256),128==e&&(a^=27),a>256&&(a^=256),(b>>=1)>256&&(b^=256)}return c},mixColumns:function(a,b){for(var c=[],d=0;d<4;d++){for(var e=0;e<4;e++)c[e]=a[4*e+d];c=this.mixColumn(c,b);for(var f=0;f<4;f++)a[4*f+d]=c[f]}return a},mixColumn:function(a,b){var c=[];c=b?[14,9,13,11]:[2,1,1,3];for(var d=[],e=0;e<4;e++)d[e]=a[e];return a[0]=this.galois_multiplication(d[0],c[0])^this.galois_multiplication(d[3],c[1])^this.galois_multiplication(d[2],c[2])^this.galois_multiplication(d[1],c[3]),a[1]=this.galois_multiplication(d[1],c[0])^this.galois_multiplication(d[0],c[1])^this.galois_multiplication(d[3],c[2])^this.galois_multiplication(d[2],c[3]),a[2]=this.galois_multiplication(d[2],c[0])^this.galois_multiplication(d[1],c[1])^this.galois_multiplication(d[0],c[2])^this.galois_multiplication(d[3],c[3]),a[3]=this.galois_multiplication(d[3],c[0])^this.galois_multiplication(d[2],c[1])^this.galois_multiplication(d[1],c[2])^this.galois_multiplication(d[0],c[3]),a},round:function(a,b){return a=this.subBytes(a,!1),a=this.shiftRows(a,!1),a=this.mixColumns(a,!1),a=this.addRoundKey(a,b)},invRound:function(a,b){return a=this.shiftRows(a,!0),a=this.subBytes(a,!0),a=this.addRoundKey(a,b),a=this.mixColumns(a,!0)},main:function(a,b,c){a=this.addRoundKey(a,this.createRoundKey(b,0));for(var d=1;d<c;d++)a=this.round(a,this.createRoundKey(b,16*d));return a=this.subBytes(a,!1),a=this.shiftRows(a,!1),a=this.addRoundKey(a,this.createRoundKey(b,16*c))},invMain:function(a,b,c){a=this.addRoundKey(a,this.createRoundKey(b,16*c));for(var d=c-1;d>0;d--)a=this.invRound(a,this.createRoundKey(b,16*d));return a=this.shiftRows(a,!0),a=this.subBytes(a,!0),a=this.addRoundKey(a,this.createRoundKey(b,0))},numberOfRounds:function(a){var b;switch(a){case this.keySize.SIZE_128:b=10;break;case this.keySize.SIZE_192:b=12;break;case this.keySize.SIZE_256:b=14;break;default:return null}return b},encrypt:function(a,b,c){for(var d=[],e=[],f=this.numberOfRounds(c),g=0;g<4;g++)for(var h=0;h<4;h++)e[g+4*h]=a[4*g+h];var i=this.expandKey(b,c);e=this.main(e,i,f);for(var j=0;j<4;j++)for(var k=0;k<4;k++)d[4*j+k]=e[j+4*k];return d},decrypt:function(a,b,c){for(var d=[],e=[],f=this.numberOfRounds(c),g=0;g<4;g++)for(var h=0;h<4;h++)e[g+4*h]=a[4*g+h];var i=this.expandKey(b,c);e=this.invMain(e,i,f);for(var j=0;j<4;j++)for(var k=0;k<4;k++)d[4*j+k]=e[j+4*k];return d}},modeOfOperation:{OFB:0,CFB:1,CBC:2},getBlock:function(a,b,c,d){return c-b>16&&(c=b+16),a.slice(b,c)},encrypt:function(a,b,c,d){var e=c.length;if(d.length%16)throw"iv length must be 128 bits.";var f=[],g=[],h=[],i=[],j=[],k=!0;if(b==this.modeOfOperation.CBC&&this.padBytesIn(a),null!==a)for(var l=0;l<Math.ceil(a.length/16);l++){var m=16*l,n=16*l+16;if(16*l+16>a.length&&(n=a.length),f=this.getBlock(a,m,n,b),b==this.modeOfOperation.CFB){k?(h=this.aes.encrypt(d,c,e),k=!1):h=this.aes.encrypt(g,c,e);for(var o=0;o<16;o++)i[o]=f[o]^h[o];for(var p=0;p<n-m;p++)j.push(i[p]);g=i}else if(b==this.modeOfOperation.OFB){k?(h=this.aes.encrypt(d,c,e),k=!1):h=this.aes.encrypt(g,c,e);for(var o=0;o<16;o++)i[o]=f[o]^h[o];for(var p=0;p<n-m;p++)j.push(i[p]);g=h}else if(b==this.modeOfOperation.CBC){for(var o=0;o<16;o++)g[o]=f[o]^(k?d[o]:i[o]);k=!1,i=this.aes.encrypt(g,c,e);for(var p=0;p<16;p++)j.push(i[p])}}return j},decrypt:function(a,b,c,d){var e=c.length;if(d.length%16)throw"iv length must be 128 bits.";var f=[],g=[],h=[],j=[],k=[],l=!0;if(null!==a){for(var m=0;m<Math.ceil(a.length/16);m++){var n=16*m,o=16*m+16;if(16*m+16>a.length&&(o=a.length),f=this.getBlock(a,n,o,b),b==this.modeOfOperation.CFB){for(l?(h=this.aes.encrypt(d,c,e),l=!1):h=this.aes.encrypt(g,c,e),i=0;i<16;i++)j[i]=h[i]^f[i];for(var p=0;p<o-n;p++)k.push(j[p]);g=f}else if(b==this.modeOfOperation.OFB){for(l?(h=this.aes.encrypt(d,c,e),l=!1):h=this.aes.encrypt(g,c,e),i=0;i<16;i++)j[i]=h[i]^f[i];for(var p=0;p<o-n;p++)k.push(j[p]);g=h}else if(b==this.modeOfOperation.CBC){for(h=this.aes.decrypt(f,c,e),i=0;i<16;i++)j[i]=(l?d[i]:g[i])^h[i];l=!1;for(var p=0;p<o-n;p++)k.push(j[p]);g=f}}b==this.modeOfOperation.CBC&&this.unpadBytesOut(k)}return k},padBytesIn:function(a){for(var b=a.length,c=16-b%16,d=0;d<c;d++)a.push(c)},unpadBytesOut:function(a){for(var b=0,c=-1,d=16,e=a.length-1;e>=a.length-1-d&&a[e]<=d;e--){if(-1==c&&(c=a[e]),a[e]!=c){b=0;break}if(++b==c)break}b>0&&a.splice(a.length-b,b)}},hexcase=0,b64pad="",cryptoHelpers={encode_utf8:function(a){try{return unescape(encodeURIComponent(a))}catch(a){throw"error during utf8 encoding: cryptoHelpers.encode_utf8."}},decode_utf8:function(a){try{return decodeURIComponent(escape(a))}catch(a){throw"error during utf8 decoding: cryptoHelpers.decode_utf8."}},toHex:function(){var a=[];a=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments;for(var b="",c=0;c<a.length;c++)b+=(a[c]<16?"0":"")+a[c].toString(16);return b.toLowerCase()},toNumbers:function(a){var b=[];return a.replace(/(..)/g,function(a){b.push(parseInt(a,16))}),b},getRandom:function(a,b){return null===a&&(a=0),null===b&&(b=1),Math.floor(Math.random()*(b+1))+a},generateSharedKey:function(a){null===a&&(a=16);for(var b=[],c=0;c<2*a;c++)b.push(this.getRandom(0,255));return b},generatePrivateKey:function(a,b){return jsHash.sha2.arr_sha256(a).slice(0,b)},convertStringToByteArray:function(a){for(var b=[],c=0;c<a.length;c++)b.push(a.charCodeAt(c));return b},convertByteArrayToString:function(a){for(var b="",c=0;c<a.length;c++)b+=String.fromCharCode(a[c]);return b},base64:{chars:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","+","/","="],encode_line:function(a){for(var b="",c=0;c<a.length;c+=3)b+=this.chars[a[c]>>2],b+=this.chars[(3&a[c])<<4|a[c+1]>>4],null!=a[c+1]?b+=this.chars[(15&a[c+1])<<2|a[c+2]>>6]:b+="=",null!=a[c+2]?b+=this.chars[63&a[c+2]]:b+="=";return b},encode:function(a){for(var b=this.encode_line(a),c=b.slice(0,64)+"\n",d=1;d<Math.ceil(b.length/64);d++)c+=b.slice(64*d,64*d+64)+(Math.ceil(b.length/64)==d+1?"":"\n");return c},decode:function(a){a=a.replace(/[\r\n\t ]+/g,"")+"====";for(var b=[],c=[],d=0;;d+=4){if(c[0]=this.chars.indexOf(a.charAt(d)),64==c[0])return b;if(c[1]=this.chars.indexOf(a.charAt(d+1)),c[2]=this.chars.indexOf(a.charAt(d+2)),c[3]=this.chars.indexOf(a.charAt(d+3)),c[0]<0||c[1]<0||64==c[1]||c[2]<0||c[3]<0)throw"error during base64 decoding at pos "+d+": cryptoHelpers.base64.decode.";b.push(c[0]<<2|c[1]>>4),c[2]>=0&&c[2]<64&&(b.push((15&c[1])<<4|c[2]>>2),c[3]>=0&&c[2]<64&&b.push((3&c[2])<<6|c[3]))}}}};