var MD5=new Hash({RotateLeft:function(b,a){return(b<<a)|(b>>>(32-a))},AddUnsigned:function(e,b){var g,a,d,f,c;d=(e&2147483648);f=(b&2147483648);g=(e&1073741824);a=(b&1073741824);c=(e&1073741823)+(b&1073741823);if(g&a){return(c^2147483648^d^f)}if(g|a){if(c&1073741824){return(c^3221225472^d^f)}else{return(c^1073741824^d^f)}}else{return(c^d^f)}},F:function(a,c,b){return(a&c)|((~a)&b)},G:function(a,c,b){return(a&b)|(c&(~b))},H:function(a,c,b){return(a^c^b)},I:function(a,c,b){return(c^(a|(~b)))},FF:function(g,f,k,j,e,h,i){g=MD5.AddUnsigned(g,MD5.AddUnsigned(MD5.AddUnsigned(MD5.F(f,k,j),e),i));return MD5.AddUnsigned(MD5.RotateLeft(g,h),f)},GG:function(g,f,k,j,e,h,i){g=MD5.AddUnsigned(g,MD5.AddUnsigned(MD5.AddUnsigned(MD5.G(f,k,j),e),i));return MD5.AddUnsigned(MD5.RotateLeft(g,h),f)},HH:function(g,f,k,j,e,h,i){g=MD5.AddUnsigned(g,MD5.AddUnsigned(MD5.AddUnsigned(MD5.H(f,k,j),e),i));return MD5.AddUnsigned(MD5.RotateLeft(g,h),f)},II:function(g,f,k,j,e,h,i){g=MD5.AddUnsigned(g,MD5.AddUnsigned(MD5.AddUnsigned(MD5.I(f,k,j),e),i));return MD5.AddUnsigned(MD5.RotateLeft(g,h),f)},ConvertToWordArray:function(e){var h;var d=e.length;var c=d+8;var b=(c-(c%64))/64;var g=(b+1)*16;var i=Array(g-1);var a=0;var f=0;while(f<d){h=(f-(f%4))/4;a=(f%4)*8;i[h]=(i[h]|(e.charCodeAt(f)<<a));f++}h=(f-(f%4))/4;a=(f%4)*8;i[h]=i[h]|(128<<a);i[g-2]=d<<3;i[g-1]=d>>>29;return i},WordToHex:function(c){var b="",d="",e,a;for(a=0;a<=3;a++){e=(c>>>(a*8))&255;d="0"+e.toString(16);b=b+d.substr(d.length-2,2)}return b},Utf8Encode:function(b){b=b.replace(/\r\n/g,"\n");var a="";for(var e=0;e<b.length;e++){var d=b.charCodeAt(e);if(d<128){a+=String.fromCharCode(d)}else{if((d>127)&&(d<2048)){a+=String.fromCharCode((d>>6)|192);a+=String.fromCharCode((d&63)|128)}else{a+=String.fromCharCode((d>>12)|224);a+=String.fromCharCode(((d>>6)&63)|128);a+=String.fromCharCode((d&63)|128)}}}return a},encode:function(e){var m=Array();var w,y,f,l,v,H,G,E,C;var t=7,r=12,p=17,n=22;var F=5,D=9,A=14,z=20;var j=4,i=11,h=16,g=23;var u=6,s=10,q=15,o=21;e=MD5.Utf8Encode(e);m=MD5.ConvertToWordArray(e);H=1732584193;G=4023233417;E=2562383102;C=271733878;for(w=0;w<m.length;w+=16){y=H;f=G;l=E;v=C;H=MD5.FF(H,G,E,C,m[w+0],t,3614090360);C=MD5.FF(C,H,G,E,m[w+1],r,3905402710);E=MD5.FF(E,C,H,G,m[w+2],p,606105819);G=MD5.FF(G,E,C,H,m[w+3],n,3250441966);H=MD5.FF(H,G,E,C,m[w+4],t,4118548399);C=MD5.FF(C,H,G,E,m[w+5],r,1200080426);E=MD5.FF(E,C,H,G,m[w+6],p,2821735955);G=MD5.FF(G,E,C,H,m[w+7],n,4249261313);H=MD5.FF(H,G,E,C,m[w+8],t,1770035416);C=MD5.FF(C,H,G,E,m[w+9],r,2336552879);E=MD5.FF(E,C,H,G,m[w+10],p,4294925233);G=MD5.FF(G,E,C,H,m[w+11],n,2304563134);H=MD5.FF(H,G,E,C,m[w+12],t,1804603682);C=MD5.FF(C,H,G,E,m[w+13],r,4254626195);E=MD5.FF(E,C,H,G,m[w+14],p,2792965006);G=MD5.FF(G,E,C,H,m[w+15],n,1236535329);H=MD5.GG(H,G,E,C,m[w+1],F,4129170786);C=MD5.GG(C,H,G,E,m[w+6],D,3225465664);E=MD5.GG(E,C,H,G,m[w+11],A,643717713);G=MD5.GG(G,E,C,H,m[w+0],z,3921069994);H=MD5.GG(H,G,E,C,m[w+5],F,3593408605);C=MD5.GG(C,H,G,E,m[w+10],D,38016083);E=MD5.GG(E,C,H,G,m[w+15],A,3634488961);G=MD5.GG(G,E,C,H,m[w+4],z,3889429448);H=MD5.GG(H,G,E,C,m[w+9],F,568446438);C=MD5.GG(C,H,G,E,m[w+14],D,3275163606);E=MD5.GG(E,C,H,G,m[w+3],A,4107603335);G=MD5.GG(G,E,C,H,m[w+8],z,1163531501);H=MD5.GG(H,G,E,C,m[w+13],F,2850285829);C=MD5.GG(C,H,G,E,m[w+2],D,4243563512);E=MD5.GG(E,C,H,G,m[w+7],A,1735328473);G=MD5.GG(G,E,C,H,m[w+12],z,2368359562);H=MD5.HH(H,G,E,C,m[w+5],j,4294588738);C=MD5.HH(C,H,G,E,m[w+8],i,2272392833);E=MD5.HH(E,C,H,G,m[w+11],h,1839030562);G=MD5.HH(G,E,C,H,m[w+14],g,4259657740);H=MD5.HH(H,G,E,C,m[w+1],j,2763975236);C=MD5.HH(C,H,G,E,m[w+4],i,1272893353);E=MD5.HH(E,C,H,G,m[w+7],h,4139469664);G=MD5.HH(G,E,C,H,m[w+10],g,3200236656);H=MD5.HH(H,G,E,C,m[w+13],j,681279174);C=MD5.HH(C,H,G,E,m[w+0],i,3936430074);E=MD5.HH(E,C,H,G,m[w+3],h,3572445317);G=MD5.HH(G,E,C,H,m[w+6],g,76029189);H=MD5.HH(H,G,E,C,m[w+9],j,3654602809);C=MD5.HH(C,H,G,E,m[w+12],i,3873151461);E=MD5.HH(E,C,H,G,m[w+15],h,530742520);G=MD5.HH(G,E,C,H,m[w+2],g,3299628645);H=MD5.II(H,G,E,C,m[w+0],u,4096336452);C=MD5.II(C,H,G,E,m[w+7],s,1126891415);E=MD5.II(E,C,H,G,m[w+14],q,2878612391);G=MD5.II(G,E,C,H,m[w+5],o,4237533241);H=MD5.II(H,G,E,C,m[w+12],u,1700485571);C=MD5.II(C,H,G,E,m[w+3],s,2399980690);E=MD5.II(E,C,H,G,m[w+10],q,4293915773);G=MD5.II(G,E,C,H,m[w+1],o,2240044497);H=MD5.II(H,G,E,C,m[w+8],u,1873313359);C=MD5.II(C,H,G,E,m[w+15],s,4264355552);E=MD5.II(E,C,H,G,m[w+6],q,2734768916);G=MD5.II(G,E,C,H,m[w+13],o,1309151649);H=MD5.II(H,G,E,C,m[w+4],u,4149444226);C=MD5.II(C,H,G,E,m[w+11],s,3174756917);E=MD5.II(E,C,H,G,m[w+2],q,718787259);G=MD5.II(G,E,C,H,m[w+9],o,3951481745);H=MD5.AddUnsigned(H,y);G=MD5.AddUnsigned(G,f);E=MD5.AddUnsigned(E,l);C=MD5.AddUnsigned(C,v)}var B=MD5.WordToHex(H)+MD5.WordToHex(G)+MD5.WordToHex(E)+MD5.WordToHex(C);return B.toLowerCase()}});String.implement("md5",function(){return MD5.encode(this)});