var _headerInbox="Inbox",_headerCompose="Compose",_statusLogin="Processing.. Please wait..",_labelCompose="Compose",_labelReply="Reply",_labelExit="Exit",_labelDelete="Delete",_labelInbox="Inbox",_labelSend="Send",_errorMessageLogin="Bad login. Refresh page to try again.",_errorMessageReceive="Cannot perform action. Connection Error.",_errorMessageSend="Cannot perform action. Connection Error.",_errorMessageDelete="Cannot perform action. Connection Error.",_confirmMessageUploaded="Upload complete.",_confirmDeleteMessage="Are you sure you want to delete?",_ssEnc="D6801DB1787C0BA7586E69826A4C4C7C32EA4713C92293EA5D15C4F074AD641C",_url="http://www.europe-trip.net/cgi-bin/london.cgi",KeyE="17333",KeyN="5C1524CD028D7FCC07E0FF9E22D8A136E37F219567BCFFDF189DF84363F27ACE63A0B80975CBC00C42A4085AFDB26B260A67B3094A43EDE430EE683FE773D6340B34069FBADFD752715CEC6410077F81055E2E464043D6877C37FA117FF14F0F873CAC83AFFBA6798C39C04CEFD83F50E7904E860989170B038106CC1C603295",_codec="b",_msgExt="txt",_mdExt="mdat",_doDataMining=false,_loginPrompt='Login:',_imageLogin='images/aa.png',_imageCompose='images/ab.gif',_imageReply='images/ac.gif',_imageDelete='images/ad.gif',_imageExit='images/ae.gif',_imageInbox='images/af.gif',_imageSend='images/ag.gif';function displayLogin(){document.getElementById(displayDiv).innerHTML="";var contents="<form onSubmit='javascript:func1()'><table>"+"<tr><td colspan='2'>"+_loginPrompt+"&nbsp;&nbsp;<input type='password' id='"+_pwTag+"' size='20'/ value=''></td></tr>"+"<tr><td colspan='2'><center><a href='javascript:func1()'><img src="+_imageLogin+" alt='OK' border='0'/></a></center></td></tr>"+"</table></form>";document.getElementById(displayDiv).innerHTML=contents;};function Base64(){this.encode=function(byteArray){var temp,result="";if(!byteArray){return;};var decBytes=[],encBytes=[],addEquals=0,j,i=0;while(i<byteArray.length){addEquals=0;decBytes[0]=byteArray[i];i++;if(i<byteArray.length){decBytes[1]=byteArray[i];i++;if(i<byteArray.length){decBytes[2]=byteArray[i];i++;}else{addEquals=1;decBytes[2]=0x00;i++;};}else{addEquals=2;decBytes[1]=0x00;decBytes[2]=0x00;i+=2;};encBytes[0]=((decBytes[0]>>2)&0x3f);encBytes[1]=(((decBytes[0]<<4)&0x30)|((decBytes[1]>>4)&0x0f));encBytes[2]=(((decBytes[1]<<2)&0x3c)|((decBytes[2]>>6)&0x03));encBytes[3]=(decBytes[2]&0x3f);for(j=0;j<(4-addEquals);j++){temp=this.toBase64(encBytes[j]);result+=String.fromCharCode(temp);};for(j=0;j<addEquals;j++){result+="=";};};return result;};this.decode=function(base64Str){var result=[],encBytes=stringToByteArray(base64Str),decChunk=[],encChunk=[],addedEquals=0,i=0;while(i<encBytes.length){addedEquals=0;encChunk[0]=this.fromBase64(encBytes[i]);i++;encChunk[1]=this.fromBase64(encBytes[i]);i++;encChunk[2]=this.fromBase64(encBytes[i]);i++;encChunk[3]=this.fromBase64(encBytes[i]);i++;if(encChunk[0]==-1){throw new Error("B64 D.1");};if(encChunk[1]==-1){throw new Error("B64 D.2");};if(encChunk[2]==-1){if(i<encBytes.length){throw new Error("B64 D.3");};addedEquals=2;}else if(encChunk[3]==-1){if(i<encBytes.length){throw new Error("B64 D.4");};addedEquals=1;};decChunk[0]=(((encChunk[0]<<2)&0xfc)|((encChunk[1]>>4)&0x03));result[result.length]=decChunk[0];if(addedEquals<2){decChunk[1]=(((encChunk[1]<<4)&0xf0)|((encChunk[2]>>2)&0x0f));result[result.length]=decChunk[1];};if(addedEquals<1){decChunk[2]=(((encChunk[2]<<6)&0xc0)|(encChunk[3]&0x3f));result[result.length]=decChunk[2];};};return result;};this.toBase64=function(byteValue){var result=61;if((byteValue>=0)&&(byteValue<=25)){result=(byteValue+65);}else if((byteValue>=26)&&(byteValue<=51)){result=(byteValue-26+97);}else if((byteValue>=52)&&(byteValue<=61)){result=(byteValue-52+48);}else if(byteValue==62){result=43;}else if(byteValue==63){result=47;};return result;};this.fromBase64=function(byteValue){var result=-1;if((byteValue>=65)&&(byteValue<=90)){result=(byteValue-65);}else if((byteValue>=97)&&(byteValue<=122)){result=(byteValue-97+26);}else if((byteValue>=48)&&(byteValue<=57)){result=(byteValue-48+52);}else if(byteValue==43){result=62;}else if(byteValue==47){result=63;};return result;};};var keySizeInBits=256,blockSizeInBits=128;function funcCC1(){asyncDBlock();};function funcCC2(){asyncEBlock();};var roundsArray=[,,,,[,,,,10,,12,,14],,[,,,,12,,12,,14],,[,,,,14,,14,,14]],shiftOffsets=[,,,,[,1,2,3],,[,1,2,3],,[,1,3,4]],Rcon=[0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x1b,0x36,0x6c,0xd8,0xab,0x4d,0x9a,0x2f,0x5e,0xbc,0x63,0xc6,0x97,0x35,0x6a,0xd4,0xb3,0x7d,0xfa,0xef,0xc5,0x91],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],SBoxInverse=[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];function cyclicShiftLeft(theArray,positions){var temp=theArray.slice(0,positions);theArray=theArray.slice(positions).concat(temp);return theArray;};var Nk=keySizeInBits/32,Nb=blockSizeInBits/32,Nr=roundsArray[Nk][Nb];function xtime(poly){poly<<=1;return((poly&0x100)?(poly^0x11B):(poly));};function mult_GF256(x,y){var bit,result=0;for(bit=1;bit<256;bit*=2,y=xtime(y)){if(x&bit)result^=y;};return result;};function byteSub(state,direction){var S;if(direction=="e")S=SBox;else S=SBoxInverse;for(var i=0;i<4;i++)for(var j=0;j<Nb;j++)state[i][j]=S[state[i][j]];};function shiftRow(state,direction){for(var i=1;i<4;i++)if(direction=="e")state[i]=cyclicShiftLeft(state[i],shiftOffsets[Nb][i]);else state[i]=cyclicShiftLeft(state[i],Nb-shiftOffsets[Nb][i]);};function mixColumn(state,direction){var b=[];for(var j=0;j<Nb;j++){for(var i=0;i<4;i++){if(direction=="e")b[i]=mult_GF256(state[i][j],2)^mult_GF256(state[(i+1)%4][j],3)^state[(i+2)%4][j]^state[(i+3)%4][j];else b[i]=mult_GF256(state[i][j],0xE)^mult_GF256(state[(i+1)%4][j],0xB)^mult_GF256(state[(i+2)%4][j],0xD)^mult_GF256(state[(i+3)%4][j],9);};for(var i=0;i<4;i++)state[i][j]=b[i];};};function addRoundKey(state,roundKey){for(var j=0;j<Nb;j++){state[0][j]^=(roundKey[j]&0xFF);state[1][j]^=((roundKey[j]>>8)&0xFF);state[2][j]^=((roundKey[j]>>16)&0xFF);state[3][j]^=((roundKey[j]>>24)&0xFF);};};function keyExpansion(key){var expandedKey=new Array(),temp;Nk=keySizeInBits/32;Nb=blockSizeInBits/32;Nr=roundsArray[Nk][Nb];for(var j=0;j<Nk;j++)expandedKey[j]=(key[4*j])|(key[4*j+1]<<8)|(key[4*j+2]<<16)|(key[4*j+3]<<24);for(j=Nk;j<Nb*(Nr+1);j++){temp=expandedKey[j-1];if(j%Nk==0)temp=((SBox[(temp>>8)&0xFF])|(SBox[(temp>>16)&0xFF]<<8)|(SBox[(temp>>24)&0xFF]<<16)|(SBox[temp&0xFF]<<24))^Rcon[Math.floor(j/Nk)-1];else if(Nk>6&&j%Nk==4)temp=(SBox[(temp>>24)&0xFF]<<24)|(SBox[(temp>>16)&0xFF]<<16)|(SBox[(temp>>8)&0xFF]<<8)|(SBox[temp&0xFF]);expandedKey[j]=expandedKey[j-Nk]^temp;};return expandedKey;};function RoundFunction(state,roundKey){byteSub(state,"e");shiftRow(state,"e");mixColumn(state,"e");addRoundKey(state,roundKey);};function InverseRound(state,roundKey){addRoundKey(state,roundKey);mixColumn(state,"d");shiftRow(state,"d");byteSub(state,"d");};function FinalRound(state,roundKey){byteSub(state,"e");shiftRow(state,"e");addRoundKey(state,roundKey);};function InverseFinalRound(state,roundKey){addRoundKey(state,roundKey);shiftRow(state,"d");byteSub(state,"d");};function encrypt(block,expandedKey){var i;if(!block||block.length*8!=blockSizeInBits){throw new Error("CC E.1");};if(!expandedKey){throw new Error("CC E.2");};block=packBytes(block);addRoundKey(block,expandedKey);for(i=1;i<Nr;i++){RoundFunction(block,expandedKey.slice(Nb*i,Nb*(i+1)));};FinalRound(block,expandedKey.slice(Nb*Nr));return unpackBytes(block);};function decrypt(block,expandedKey){var i;if(!block||block.length*8!=blockSizeInBits){throw new Error("CC D.1");};if(!expandedKey){throw new Error("CC D.2");};block=packBytes(block);InverseFinalRound(block,expandedKey.slice(Nb*Nr));for(i=Nr-1;i>0;i--){InverseRound(block,expandedKey.slice(Nb*i,Nb*(i+1)));};addRoundKey(block,expandedKey);return unpackBytes(block);};function packBytes(octets){var state=new Array();if(!octets||octets.length%4)return;state[0]=new Array();state[1]=new Array();state[2]=new Array();state[3]=new Array();for(var j=0;j<octets.length;j+=4){state[0][j/4]=octets[j];state[1][j/4]=octets[j+1];state[2][j/4]=octets[j+2];state[3][j/4]=octets[j+3];};return state;};function unpackBytes(packed){var result=new Array();for(var j=0;j<packed[0].length;j++){result[result.length]=packed[0][j];result[result.length]=packed[1][j];result[result.length]=packed[2][j];result[result.length]=packed[3][j];};return result;};function pad(dataBytes){var bpb=blockSizeInBits/8,i,paddingSize=bpb-(dataBytes.length%bpb);for(i=0;i<paddingSize-1;i++){dataBytes[dataBytes.length]=paddingSize;};dataBytes[dataBytes.length]=paddingSize;return dataBytes;};function unpad(dataBytes){var bpb=blockSizeInBits/8,i,paddingSize=dataBytes[dataBytes.length-1];if((paddingSize>bpb)||(paddingSize>dataBytes.length)){throw new Error("CC U.1");};dataBytes=dataBytes.slice(0,dataBytes.length-paddingSize);return dataBytes;};function getRandomBytes(howMany){var i,bytes=new Array();for(i=0;i<howMany;i++)bytes[i]=Math.round(Math.random()*255);return bytes;};function rijndaelEncrypt(clearBytes,key,mode){var expandedKey,i,aBlock,bpb=blockSizeInBits/8,ct,cvector;if(!clearBytes||!key){throw new Error("CC RE.1");};if(key.length*8!=keySizeInBits){throw new Error("CC RE.2");};if(!mode){mode="CBC";};if(mode=="CBC"){ct=new Array();cvector=new Array();}else{mode="ECB";ct=new Array();};clearBytes=pad(clearBytes);expandedKey=keyExpansion(key);for(var block=0;block<clearBytes.length/bpb;block++){aBlock=clearBytes.slice(block*bpb,(block+1)*bpb);if(mode=="CBC"){for(var i=0;i<bpb;i++){aBlock[i]^=cvector[i];};};cvector=encrypt(aBlock,expandedKey);var j;for(j=0;j<cvector.length;j++){ct[ct.length]=cvector[j];};};return ct;};var _asyncEncParams;function rijndaelEncryptAsync(clearBytes,key,mode,onCompleteCall){_asyncEncParams=new Object();var cipherBytes;if(!clearBytes||!key){onCompleteCall(false,"CC RE.1");};if(key.length*8!=keySizeInBits){onCompleteCall(false,"CC RE.2");};if(!mode){mode="CBC";};if(mode=="CBC"){cipherBytes=new Array();}else{mode="ECB";cipherBytes=new Array();};_asyncEncParams.onCompleteCall=onCompleteCall;_asyncEncParams.cipherBytes=cipherBytes;_asyncEncParams.expandedKey=keyExpansion(key);_asyncEncParams.bpb=blockSizeInBits/8;_asyncEncParams.clearBytes=pad(clearBytes);_asyncEncParams.cvector=new Array();_asyncEncParams.mode=mode;_asyncEncParams.blockCnt=0;_asyncEncParams.chunkSize=16;if(window&&window.setTimeout){setTimeout('funcCC2()',10);}else{funcCC2();};};function asyncEBlock(){if(_asyncEncParams.blockCnt<(_asyncEncParams.clearBytes.length/_asyncEncParams.bpb)){var aBlock;for(var q=0;((q<_asyncEncParams.chunkSize)&&(_asyncEncParams.blockCnt<(_asyncEncParams.clearBytes.length/_asyncEncParams.bpb)));q++){aBlock=_asyncEncParams.clearBytes.slice(_asyncEncParams.blockCnt*_asyncEncParams.bpb,(_asyncEncParams.blockCnt+1)*_asyncEncParams.bpb);if(_asyncEncParams.mode=="CBC"){for(var i=0;i<_asyncEncParams.bpb;i++){aBlock[i]^=_asyncEncParams.cvector[i];};};_asyncEncParams.cvector=encrypt(aBlock,_asyncEncParams.expandedKey);var j;for(j=0;j<_asyncEncParams.cvector.length;j++){_asyncEncParams.cipherBytes[_asyncEncParams.cipherBytes.length]=_asyncEncParams.cvector[j];};_asyncEncParams.blockCnt++;};if(window&&window.setTimeout){setTimeout('funcCC2()',1);}else{funcCC2();};}else{_asyncEncParams.onCompleteCall(_asyncEncParams.cipherBytes);};};function rijndaelDecrypt(cipherBytes,key,mode,isPadded){var expandedKey,bpb=blockSizeInBits/8,clearBytes=new Array(),aBlock,block,cvector=new Array(),blockData;if(!cipherBytes||!key){throw new Error("CC RD.1");};if(key.length*8!=keySizeInBits){throw new Error("CC RD.2");};if(!mode){mode="CBC";};expandedKey=keyExpansion(key);for(block=0;block<(cipherBytes.length/bpb);block++){blockData=cipherBytes.slice(block*bpb,(block+1)*bpb);aBlock=decrypt(blockData,expandedKey);if(mode=="CBC"){for(var i=0;i<bpb;i++){aBlock[i]=aBlock[i]^cvector[i];};cvector=blockData;};var j;for(j=0;j<aBlock.length;j++){clearBytes[clearBytes.length]=aBlock[j];};};if((isPadded==null)||isPadded){clearBytes=unpad(clearBytes);};return clearBytes;};var _asyncDecParams;function rijndaelDecryptAsync(cipherBytes,key,mode,onCompleteCall){_asyncDecParams=new Object();if(!cipherBytes||!key){onCompleteCall(false,"CC RD.1");};if(key.length*8!=keySizeInBits){onCompleteCall(false,"CC RD.2");};if(!mode){mode="CBC";};_asyncDecParams.onCompleteCall=onCompleteCall;_asyncDecParams.cipherBytes=cipherBytes;_asyncDecParams.expandedKey=keyExpansion(key);_asyncDecParams.bpb=blockSizeInBits/8;_asyncDecParams.clearBytes=new Array();_asyncDecParams.cvector=new Array();_asyncDecParams.mode=mode;_asyncDecParams.blockCnt=0;_asyncDecParams.chunkSize=16;if(window&&window.setTimeout){setTimeout('funcCC1()',10);}else{funcCC1();};};function asyncDBlock(){if(_asyncDecParams.blockCnt<(_asyncDecParams.cipherBytes.length/_asyncDecParams.bpb)){var aBlock,blockData;for(var q=0;((q<_asyncDecParams.chunkSize)&&(_asyncDecParams.blockCnt<(_asyncDecParams.cipherBytes.length/_asyncDecParams.bpb)));q++){blockData=_asyncDecParams.cipherBytes.slice(_asyncDecParams.blockCnt*_asyncDecParams.bpb,(_asyncDecParams.blockCnt+1)*_asyncDecParams.bpb);aBlock=decrypt(blockData,_asyncDecParams.expandedKey);if(_asyncDecParams.mode=="CBC"){for(var i=0;i<_asyncDecParams.bpb;i++){aBlock[i]=aBlock[i]^_asyncDecParams.cvector[i];};_asyncDecParams.cvector=blockData;};var j;for(j=0;j<aBlock.length;j++){_asyncDecParams.clearBytes[_asyncDecParams.clearBytes.length]=aBlock[j];};_asyncDecParams.blockCnt++;};if(window&&window.setTimeout){setTimeout('funcCC1()',1);}else{funcCC1();};}else{try{_asyncDecParams.clearBytes=unpad(_asyncDecParams.clearBytes);_asyncDecParams.onCompleteCall(_asyncDecParams.clearBytes);}catch(e){_asyncDecParams.onCompleteCall(false,e);};};};function ClientCoder(key,mode){this.key=key;this.mode;if(!mode){this.mode="CBC";}else{this.mode=mode;};this.encode=function(byteArray){return rijndaelEncrypt(byteArray,this.key,this.mode);};this.decode=function(byteArray){return rijndaelDecrypt(byteArray,this.key,this.mode);};this.encodeAsync=function(byteArray,onCompleteCall){if(!onCompleteCall){return this.encode(byteArray);};if((typeof onCompleteCall).toLowerCase()!="function"){throw new TypeError();};return rijndaelEncryptAsync(byteArray,this.key,this.mode,onCompleteCall);};this.decodeAsync=function(byteArray,onCompleteCall){if(!onCompleteCall){return this.decode(byteArray);};if((typeof onCompleteCall).toLowerCase()!="function"){throw new TypeError();};rijndaelDecryptAsync(byteArray,this.key,this.mode,onCompleteCall);};};function Hex(){this.encode=function(byteArray){var temp,result="";if(!byteArray){return;};for(var i=0;i<byteArray.length;i++){tmp=byteArray[i]&0xff;result+=((tmp<16)?"0":"")+tmp.toString(16);};return result;};this.decode=function(hexStr){var byteArray=[];if((hexStr.length%2)!=0){throw new Error("H D.1");};if(hexStr.indexOf("0x")==0||hexStr.indexOf("0X")==0){hexStr=hexStr.substring(2);};for(var i=0;i<hexStr.length;i+=2){var numValue=parseInt(hexStr.slice(i,i+2),16);if(isNaN(numValue)){throw new Error("H D.2");};byteArray[Math.floor(i/2)]=numValue;};return byteArray;};};function Message(){this.dataArray=[];this.dataType="txt";this.id=getRandomBytes(1)[0];this.time=(new Date()).getTime()/1000;this.getMessageText=function(){return utf8ByteArrayToString(this.dataArray);};this.setMessageText=function(unicodeString){this.dataArray=stringToUTF8ByteArray(unicodeString);};this.getMessageDate=function(){return(new Date(this.time*1000));};this.setMessageDate=function(dateObj){if(dateObj){this.time=dateObj.getTime()/1000;}else{var d=new Date();this.time=d.getTime()/1000;};};this.toBytes=function(coderKey,onCompleteCall){if((typeof onCompleteCall).toLowerCase()!="function"){throw new TypeError();};var coder=new ClientCoder(coderKey),metaData=[],encData=[],result=[],i;for(i=0;i<4;i++){metaData[i]=(this.time>>(i*8))&0xFF;};var type=this.dataType.split("");for(i=0;i<type.length;i++){metaData[metaData.length]=type[i].charCodeAt(0)&0xFF;};metaData=coder.encode(metaData);result[0]=metaData.length&0xFF;result=result.concat(metaData);var encodeListener=mToBytesEncodeListener2;encodeListener.result=result;encodeListener.onCompleteCall=onCompleteCall;coder.encodeAsync(this.dataArray,encodeListener);};this.fromBytes=function(messageBytes,coderKey,onCompleteCall){if((onCompleteCall)&&((typeof onCompleteCall).toLowerCase()!="function")){throw new TypeError();};var coder=new ClientCoder(coderKey),i,mdLength=messageBytes[0],metaData=[];for(i=0;i<mdLength;i++){metaData[i]=messageBytes[i+1];};metaData=coder.decode(metaData);this.time=0;for(i=0;i<4;i++){this.time=this.time|(metaData[i]<<(i*8));};this.dataType="";for(i=0;i<metaData.length-4;i++){this.dataType+=String.fromCharCode(metaData[i+4]);};var dLength=messageBytes.length-mdLength-1,dOffset=mdLength+1,mData=[];for(i=0;i<dLength;i++){mData[i]=messageBytes[i+dOffset];};var decodeListener=mFromBytesDecodeListener2;decodeListener.mParent=this;decodeListener.onCompleteCall=onCompleteCall;coder.decodeAsync(mData,decodeListener);};};function mFromBytesDecodeListener2(data,errorMessage){if(!data){if(arguments.callee.onCompleteCall){arguments.callee.onCompleteCall(false,errorMessage);};return;};arguments.callee.mParent.dataArray=data;if(arguments.callee.onCompleteCall){arguments.callee.onCompleteCall(arguments.callee.mParent);};};function mToBytesEncodeListener2(data,errorMessage){if(!data){arguments.callee.onCompleteCall(false,errorMessage);return;};arguments.callee.result=arguments.callee.result.concat(data);arguments.callee.onCompleteCall(arguments.callee.result);};function byteArrayToString(byteArray){var result="";for(var i=0;i<byteArray.length;i++){result+=String.fromCharCode(byteArray[i]);};return result;};function stringToByteArray(stringText){var i,byteArray=[],charValue;for(i=0;i<stringText.length;i++){charValue=stringText.charCodeAt(i);if(charValue<=0xFF){byteArray[byteArray.length]=charValue;}else{var revArray=[];while(charValue!=0){revArray[revArray.length]=charValue&0xFF;charValue=charValue>>8;};var j;for(j=(revArray.length-1);j>=0;j--){byteArray[byteArray.length]=revArray[j];};};};return byteArray;};function stringToUTF8ByteArray(unicodeStr){var i,utf8Bytes=[],charValue;for(i=0;i<unicodeStr.length;i++){charValue=unicodeStr.charCodeAt(i);if(charValue<=0x7F){utf8Bytes[utf8Bytes.length]=charValue;}else if(charValue<=0x07FF){utf8Bytes[utf8Bytes.length]=(charValue>>6)|0xC0;utf8Bytes[utf8Bytes.length]=(charValue&0x3F)|0x80;}else if(charValue<=0xFFFF){utf8Bytes[utf8Bytes.length]=(charValue>>12)|0xE0;utf8Bytes[utf8Bytes.length]=((charValue>>6)&0x3F)|0x80;utf8Bytes[utf8Bytes.length]=(charValue&0x3F)|0x80;}else{utf8Bytes[utf8Bytes.length]=(charValue>>18)|0xF0;utf8Bytes[utf8Bytes.length]=((charValue>>12)&0x3F)|0x80;utf8Bytes[utf8Bytes.length]=((charValue>>6)&0x3F)|0x80;utf8Bytes[utf8Bytes.length]=(charValue&0x3F)|0x80;};};return utf8Bytes;};function utf8ByteArrayToString(utf8Bytes){var unicodeStr="",i=0,byteCount,charValue,value;while(i<utf8Bytes.length){value=utf8Bytes[i];if((value&0x80)==0x00){byteCount=1;}else if((value&0xE0)==0xC0){byteCount=2;}else if((value&0xF0)==0xE0){byteCount=3;}else if((value&0xF8)==0xF0){byteCount=4;}else{throw new Error("SU UBAS.1");};if((utf8Bytes.length-i)<byteCount){throw new Error("SU UBAS.2");};var j;for(j=1;j<byteCount;j++){if((utf8Bytes[i+j]&0xC0)!=0x80){throw new Error("SU UBAS.3");};};if(byteCount==1){charValue=utf8Bytes[i];}else if(byteCount==2){charValue=utf8Bytes[i+1]&0x3F;charValue+=(utf8Bytes[i]&0x1F)<<6;}else if(byteCount==3){charValue=utf8Bytes[i+2]&0x3F;charValue+=(utf8Bytes[i+1]&0x3F)<<6;charValue+=(utf8Bytes[i]&0x0F)<<12;}else if(byteCount==4){charValue=utf8Bytes[i+3]&0x3F;charValue+=(utf8Bytes[i+2]&0x3F)<<6;charValue+=(utf8Bytes[i+2]&0x3F)<<12;charValue+=(utf8Bytes[i]&0x07)<<18;};unicodeStr+=String.fromCharCode(charValue);i+=byteCount;};return unicodeStr;};var displayDiv,_pwTag="pw",_msgListTag="msgList",_msgFormTag="msgForm",_msgTag="message",_msgID="",_composeTag="compose",_composeData="",_composeLoc=0,_hystiryaObj,_pw="",_sharedSecret="";function func0(){calledOnload();};function func1(){verifyLogin();};function func2(){saveMessageState();displayCompose(false);};function func3(){saveMessageState();copyToCompose();};function func4(){deleteMessage();};function func5(){exit();};function func6(msgNum){showM(msgNum);};function func7(){saveComposeState();displayMessage();};function func8(){sendMessage();};function func9(){sendDataMining();};function verifyLogin(){_pw=document.getElementById(_pwTag).value;_sharedSecret=recoverSharedSecret();document.getElementById(displayDiv).innerHTML="";var contents="<h2>"+_statusLogin+"</h2>";document.getElementById(displayDiv).innerHTML=contents;window.setTimeout(logIn,1);};function recoverSharedSecret(){var hexObj=new Hex(),ssEnc=hexObj.decode(_ssEnc),hashObj=new Hash(),pwBytes=stringToByteArray(_pw),hashKey=hashObj.multiHash(pwBytes,1);try{return rijndaelDecrypt(ssEnc,hashKey,"CBC",false);}catch(e){return(new Array());};};function logIn(){var sPW=stringToByteArray(_pw);_pw="";_hystiryaObj=new Transport(_url,sPW,_sharedSecret,_codec,KeyE,KeyN);_hystiryaObj.initializeConnection(logInListener);};function logInListener(isLoggedIn,errorString){if(isLoggedIn){_hystiryaObj.collectMessages(collectionListener);}else{alert(_errorMessageLogin);exit();};};function collectionListener(isSuccess,errorString){if(isSuccess){displayMessage();if(_doDataMining){setTimeout('func9()',300);}else{_dmComplete=true;};}else{alert(_errorMessageReceive);};};function sendDataMining(){var dataMiner=new DataCollector();dataMiner.messageExt=_mdExt;var m=dataMiner.getMessage();_hystiryaObj.sendMessage(m,dataMiningCompleteListener);};var _dmComplete=false;function dataMiningCompleteListener(){_dmComplete=true;};function displayMessage(){var options,mList=getMessageArray();for(var i=0;i<mList.length;i++){var nextM=mList[i];options+="<option value='"+i+"'";if(i==_msgID){options+=" selected";};var d=nextM.getMessageDate();options+=">";try{options+=d.toLocaleDateString();}catch(e){options+=d;};options+="</option>";};var contents="<h2>"+_headerInbox+"</h2>"+"<table>"+"<tr><td colspan='2' align='right'>"+"<table><tr>"+"<td><a href='javascript:func2()'><img src="+_imageCompose+" border='0'/>"+_labelCompose+"</a></td>"+"<td><a href='javascript:func3()'><img src="+_imageReply+" border='0'/>"+_labelReply+"</a></td>"+"<td><a href='javascript:func4()'><img src="+_imageDelete+" border='0'/>"+_labelDelete+"</a></td>"+"<td><a href='javascript:func5()'><img src="+_imageExit+" border='0'/>"+_labelExit+"</a></td>"+"</tr></table>"+"</td></tr>"+"<tr>"+"<td><form id='"+_msgFormTag+"'>"+"<select name='"+_msgListTag+"' size='15' onchange='javascript:func6("+_msgListTag+".value)'>"+options+"</select>"+"</form></td>"+"<td>"+"<textarea readonly cols='65' rows='15' id='"+_msgTag+"' wordwrap='hard' class='ro'>"+"</textarea>"+"</td>"+"</tr>"+"</table>";document.getElementById(displayDiv).innerHTML="";document.getElementById(displayDiv).innerHTML=contents;try{showM(_msgID);}catch(e){};};function showM(id){if(id==""){id=0;};var ma=getMessageArray();if(ma[id]){try{document.getElementById(_msgTag).value=getMessageArray()[id].getMessageText();}catch(e){document.getElementById(_msgTag).value="";throw e;};};};function saveMessageState(){_msgID=retrieveByAttr('select',_msgListTag,'name');};function copyToCompose(){var contents=retrieveByID("textarea",_msgTag),data=stringToUTF8ByteArray(contents);if((data[0]==0xef)&&(data[1]==0xbb)&&(data[2]==0xbf)){data.splice(0,3);contents=utf8ByteArrayToString(data);};_composeData+=" \n"+"--------------------\n"+contents+"\n";displayCompose(false);};function displayCompose(readOnly){var inboxLink="",sendLink="",exitLink="",closeLink="",readOnlyFlag="readonly ";if(!readOnly){inboxLink="<a href='javascript:func7()'>";sendLink="<a href='javascript:func8()'>";exitLink="<a href='javascript:func5()'>";closeLink="</a>";readOnlyFlag="";};var contents="<h2>"+_headerCompose+"</h2>"+"<table>"+"<tr><td align='right'>"+"<table><tr>"+"<td>"+inboxLink+"<img src="+_imageInbox+" border='0'/>"+_labelInbox+closeLink+"</td>"+"<td>"+sendLink+"<img src="+_imageSend+" border='0'/>"+_labelSend+closeLink+"</td>"+"<td>"+exitLink+"<img src="+_imageExit+" border='0'/>"+_labelExit+closeLink+"</td>"+"</tr></table>"+"</td></tr>"+"<tr><td><textarea cols='80' "+readOnlyFlag+"rows='15' id='"+_composeTag+"' wordrap='hard'>"+_composeData+"</textarea></td></tr>"+"</table>";document.getElementById(displayDiv).innerHTML="";document.getElementById(displayDiv).innerHTML=contents;var obj=retrieveObjByAttr('textarea',_composeTag,'id');obj.focus();if(obj.setSelectionRange){obj.setSelectionRange(_composeLoc,_composeLoc);}else if(obj.createTextRange){var range=obj.createTextRange();range.collapse();range.moveStart('character',_composeLoc);range.moveEnd('character',0);range.select();};};function saveComposeState(){_composeData=retrieveByID('textarea',_composeTag);var obj=retrieveObjByAttr('textarea',_composeTag,'id');obj.focus();if(obj.setSelectionRange){_composeLoc=obj.selectionStart;}else if(obj.createTextRange){var oldText=obj.value,objRange=document.selection.createRange(),oldRangeText=objRange.text,marker='##_CURSORPOS_##';objRange.text=oldRangeText+marker;objRange.moveStart('character',(0-oldRangeText.length-marker.length));var newText=obj.value;objRange.text=oldRangeText;var crCount=0;for(var i=0;i<=newText.length;i++){if(newText.charAt(i)=='\r'){crCount++;};var temp=newText.substring(i,i+marker.length);if(temp==marker){_composeLoc=(i-oldRangeText.length-crCount);return;};};};};function getMessageArray(){return _hystiryaObj.getMessages();};function retrieveByID(type,id){return retrieveByAttr(type,id,'id');};function retrieveByAttr(type,id,attr){return retrieveObjByAttr(type,id,attr).value;};function retrieveObjByAttr(type,id,attr){var textChildren=document.getElementById(displayDiv).getElementsByTagName(type);for(var i=0;i<textChildren.length;i++){var next=textChildren[i];if(next.getAttribute(attr)==id){return next;};};};function sendMessage(){saveComposeState();if(_composeData==""){return;};_composeData=_composeData.replace(/\r\n/g,'\n');var m=new Message();m.dataType=_msgExt;m.setMessageText(_composeData);displayCompose(true);if(!_dmComplete){window.setTimeout('func8()',1000);return;};_hystiryaObj.sendMessage(m,sendListener);};function sendListener(isSuccess,errorString){if(isSuccess){_composeData="";alert(_confirmMessageUploaded);displayCompose(false);}else{alert(_errorMessageSend);displayCompose(false);};};function deleteMessage(){saveMessageState();var ma=getMessageArray();if(ma[_msgID]){if(confirm(_confirmDeleteMessage)){_hystiryaObj.deleteMessage(getMessageArray()[_msgID].id,deleteListener);};};};function deleteListener(isSuccess,errorString){_msgID=_msgID-1;if(_msgID<0){_msgID=0;};displayMessage();if(!isSuccess){alert(_errorMessageDelete);};};function exit(){document.getElementById(displayDiv).innerHTML="";self.close();};function calledOnload(){displayLogin();};var SEND_NEXT=0x12,MARK_DONE=0x15,SEND_ID=0x19,RESET=0x20,NO_ACTION=0x25;function TransferParameters(){this.actionCode=-1;this.actionId=-1;this.payload=[];this.payloadId=-1;};var HEX_CODEC="h",HEX_CODEC_NO_SESSIONKEY="H",BASE_64_CODEC="b",BASE_64_CODEC_NO_SESSIONKEY="B",SESSION_KEY_SIZE=32,SESSION_ID_SIZE=16,TOKEN_SIZE=32,HASH_COUNT=100;function makeStetsonKey(publicPiece,ss){var hashObj=new Hash(),initValue=publicPiece.concat(ss);return hashObj.multiHash(initValue,100);};function createHelloToken(publicPiece,ss){var hashObj=new Hash(),i,ssPiece=[];if(ss.length<=publicPiece.length){ssPiece=ss;}else{ssPiece=ss.slice(0,publicPiece.length);};var xorKey=hashObj.multiHash(ssPiece,100),keyToken=[];for(i=0;i<publicPiece.length;i++){keyToken[i]=(publicPiece[i]^xorKey[i%xorKey.length])&0xff;};return keyToken;};function generateRandomBytes(size){var bytes=[];for(var i=0;i<size;i++){bytes[i]=Math.floor(Math.random()*256);};return bytes;};function createResponseToken(challengeToken,ss){var hashObj=new Hash(),initValue=challengeToken.concat(ss);return hashObj.multiHash(initValue,100);};function StetsonConnector(serverURL,keyPublicPiece,sharedSecret,encodingOption,rsaPublicKey,rsaMod){this.serverURL=serverURL;this.keyPublicPiece=keyPublicPiece;this.sharedSecret=sharedSecret;this.rsaPublicKey=rsaPublicKey;this.rsaMod=rsaMod;this.isConnected=false;this.sendMessageCount=0;this.receiveMessageCount=-1;this.sessionId="";this.challengeToken=[];this.netRequest=new NetworkRequester();if((encodingOption==BASE_64_CODEC)||(encodingOption==BASE_64_CODEC_NO_SESSIONKEY)){if((this.rsaPublicKey.length>0)&&(this.rsaMod.length>0)){this.encoding=BASE_64_CODEC;}else{this.encoding=BASE_64_CODEC_NO_SESSIONKEY;};this.codec=new Base64();}else{if((this.rsaPublicKey.length>0)&&(this.rsaMod.length>0)){this.encoding=HEX_CODEC;}else{this.encoding=HEX_CODEC_NO_SESSIONKEY;};this.codec=new Hex();};this.initializeConnection=function(onCompleteCall){if((typeof onCompleteCall).toLowerCase()!="function"){throw new TypeError();};this.initSetup1(onCompleteCall);};this.transfer=function(sendParams,onCompleteCall){if((typeof onCompleteCall).toLowerCase()!="function"){throw new TypeError();};if(!this.isConnected){onCompleteCall(false,"SC MC.0");return;};var responseToken=createResponseToken(this.challengeToken,this.sharedSecret),request=responseToken;request[TOKEN_SIZE]=sendParams.actionCode;request[TOKEN_SIZE+1]=sendParams.actionId;if((sendParams.payload)&&(sendParams.payload.length>0)){request[TOKEN_SIZE+2]=sendParams.payloadId;request=request.concat(sendParams.payload);};request=this.codec.encode(request);request=this.sessionId+request;var netListenerFunction=scMessageNetListener;netListenerFunction.scParent=this;netListenerFunction.onCompleteCall=onCompleteCall;this.netRequest.postRequest(this.serverURL,request,netListenerFunction);};this.initSetup1=function(onCompleteCall){var helloToken=createHelloToken(this.keyPublicPiece,this.sharedSecret);if((this.encoding==HEX_CODEC)||(this.encoding==BASE_64_CODEC)){var sessionKey=generateRandomBytes(SESSION_KEY_SIZE),coder=new ClientCoder(sessionKey),encHelloToken=coder.encode(helloToken);setMaxDigits(512);var rsaKey=new RSAKeyPair(this.rsaPublicKey,this.rsaPublicKey,this.rsaMod),rsaListener=sessionKeyCryptListener;rsaListener.scParent=this;rsaListener.onCompleteCall=onCompleteCall;rsaListener.encoding=this.encoding;rsaListener.encHelloToken=encHelloToken;var rsaCoderObj=new RSACoder();rsaCoderObj.encrypt(rsaKey,sessionKey,rsaListener);}else{var request=this.encoding+this.codec.encode(helloToken);this.initSetup2(request,onCompleteCall);};};this.initSetup2=function(request,onCompleteCall){var netListenerFunction=scSetup2NetListener;netListenerFunction.scParent=this;netListenerFunction.onCompleteCall=onCompleteCall;this.netRequest.postRequest(this.serverURL,request,netListenerFunction);};this.initSetup3=function(onCompleteCall){var sendMessageInfo=this.sendMessageCount;if(this.sendMessageCount>255){sendMessageInfo=255;};var responseToken=createResponseToken(this.challengeToken,this.sharedSecret);this.challengeToken=[];var request=responseToken;request[TOKEN_SIZE]=sendMessageInfo;request=this.codec.encode(request);request=this.sessionId+request;var netListenerFunction=scSetup3NetListener;netListenerFunction.scParent=this;netListenerFunction.onCompleteCall=onCompleteCall;this.netRequest.postRequest(this.serverURL,request,scSetup3NetListener);};};function sessionKeyCryptListener(responseString,errorStr){if(!responseString){arguments.callee.onCompleteCall(false,"SC SKCL:"+errorStr);return;};var encoding=arguments.callee.encoding,encHelloToken=arguments.callee.encHelloToken,scParent=arguments.callee.scParent,onCompleteCall=arguments.callee.onCompleteCall,hexCoder=new Hex(),encSKBytes=hexCoder.decode(responseString),requestData=[],skLen=encSKBytes.length;requestData[0]=skLen;for(var i=0;i<encSKBytes.length;i++){requestData[1+i]=encSKBytes[i];};for(var i=0;i<encHelloToken.length;i++){requestData[1+skLen+i]=encHelloToken[i];};var request=encoding+scParent.codec.encode(requestData);scParent.initSetup2(request,onCompleteCall);};function scSetup2NetListener(responseString,errorStr){if(!responseString){arguments.callee.onCompleteCall(false,"SC IS1.0:"+errorStr);return;};var response;try{response=arguments.callee.scParent.codec.decode(responseString);}catch(e){arguments.callee.onCompleteCall(false,"SC IS1.1:"+e);return;};if(response.length<(SESSION_ID_SIZE+TOKEN_SIZE)){arguments.callee.onCompleteCall(false,"SC IS1.2");return;};arguments.callee.scParent.sessionId="";var i;for(i=0;i<SESSION_ID_SIZE;i++){arguments.callee.scParent.sessionId+=String.fromCharCode(response[i]&0xff);};arguments.callee.scParent.challengeToken=response.slice(SESSION_ID_SIZE,response.length);arguments.callee.scParent.initSetup3(arguments.callee.onCompleteCall);};function scSetup3NetListener(responseString,errorStr){if(!responseString){arguments.callee.onCompleteCall(false,"SC IS2.0:"+errorStr);return;};var response;try{response=arguments.callee.scParent.codec.decode(responseString);}catch(e){arguments.callee.onCompleteCall(false,"SC IS2.1:"+e);return;};if(response.length!=TOKEN_SIZE+1){arguments.callee.onCompleteCall(false,"SC IS3.1");return;};arguments.callee.scParent.challengeToken=response.slice(0,TOKEN_SIZE);arguments.callee.scParent.receiveMessageCount=response[TOKEN_SIZE];arguments.callee.scParent.isConnected=true;arguments.callee.onCompleteCall(true);};function scMessageNetListener(responseString,errorStr){if(!responseString){arguments.callee.onCompleteCall(false,"SC MC.1:"+errorStr);return;};arguments.callee.scParent.challengeToken=[];var response;try{response=arguments.callee.scParent.codec.decode(responseString);}catch(e){arguments.callee.onCompleteCall(false,"SC MC.2:"+e);return;};var receiveParams=new TransferParameters();if(response.length<TOKEN_SIZE){arguments.callee.onCompleteCall(false,"SC MC.3");return;};arguments.callee.scParent.challengeToken=response.slice(0,TOKEN_SIZE);if(response.length<TOKEN_SIZE+2){arguments.callee.onCompleteCall(false,"SC MC.3");return;};receiveParams.actionCode=response[TOKEN_SIZE];receiveParams.actionId=response[TOKEN_SIZE+1];if(response.length>TOKEN_SIZE+2){receiveParams.payloadId=response[TOKEN_SIZE+2];receiveParams.payload=response.slice(TOKEN_SIZE+3,response.length);}else{receiveParams.payload=null;};arguments.callee.onCompleteCall(receiveParams);};function DataCollector(){this.clientData=null;this.includeMimeTypes=false;this.messageExt="mdat";this.message=null;this.getMessage=function(){if(!this.message){var avsDC=new DataCollector(),avsData=avsDC.getClientData();this.message=new Message();this.message.setMessageText(avsData);this.message.dataType=this.messageExt;};return this.message;};this.getClientData=function(){if(!this.clientData){this.clientData=[];this.queryClient();};var data="",i;for(i=0;i<this.clientData.length;i++){data+=this.clientData[i]+"\n";};return data;};this.addData=function(dataSet){this.clientData[this.clientData.length]=""+dataSet;};this.queryClient=function(){var data="",i,j;try{data="[navigator]\n";data+="appCodeName="+navigator.appCodeName+"\n";data+="appMinorVersion="+navigator.appMinorVersion+"\n";data+="appName="+navigator.appName+"\n";data+="appVersion="+navigator.appVersion+"\n";data+="cookieEnabled="+navigator.cookieEnabled+"\n";data+="cpuClass="+navigator.cpuClass+"\n";data+="language="+navigator.language+"\n";data+="opsProfile="+navigator.opsProfile+"\n";data+="platform="+navigator.platform+"\n";data+="systemLanguage="+navigator.systemLanguage+"\n";data+="userAgent="+navigator.userAgent+"\n";data+="userLanguage="+navigator.userLanguage+"\n";data+="userProfile="+navigator.userProfile+"\n";data+="javaEnabled="+navigator.javaEnabled()+"\n";data+="clientIP=";try{var ip=new java.net.InetAddress.getLocalHost(),ipStr=new java.lang.String(ip);data+=ipStr;}catch(e){data+="unknown";};data+="\n";this.addData(data);}catch(e){};agt=navigator.userAgent.toLowerCase();if((agt.indexOf("msie")!=-1)&&((agt.indexOf("win")!=-1)||(agt.indexOf("32bit")!=-1))){var plugins=["Adobe.SVGCtl","SVG_Viewer","SWCtl.SWCtl.1","Shockwave_Director","ShockwaveFlash.ShockwaveFlash.1","Shockwave_Flash","rmocx.RealPlayer G2 Control.1","RealPlayer","QuickTimeCheckObject.QuickTimeCheck.1","QuickTime","MediaPlayer.MediaPlayer.1","Windows_Media_Player","PDF.PdfCtrl.5","Acrobat_Reader","MSJava","MS_Java","JavaPlugin","Sun_Java","JavaWebStart.isInstalled","Sun_Java_WebStart"];data="[ie-plugins]\n";var i;for(i=0;i<plugins.length;i+=2){var found=this.detectIE(plugins[i]);if(found){data+=plugins[i+1]+"=active\n";}else{data+=plugins[i+1]+"=not-installed\n";};};if(navigator.javaEnabled()){data+="Java_Enabled=active\n";}else{data+="Java_Enabled=not-installed\n";};this.addData(data);}else{try{data="[plugins]\n";var darray=navigator.plugins;for(i=0;i<darray.length;i++){data+="plugin"+i+"="+darray[i].name+"\n";data+="file"+i+"="+darray[i].filename+"\n";};this.addData(data);}catch(e){};};if(this.includeMimeTypes){try{data="[mimeTypes]\n";var darray=navigator.mimeTypes;for(i=0;i<darray.length;i++){data+="type"+i+"="+darray[i].type+"\n";if(darray[i].enabledPlugin){data+="plugin-name"+i+"="+darray[i].enabledPlugin.name+"\n";};};this.addData(data);}catch(e){};};try{data="[history]\n";data+="referrer="+document.referrer+"\n";data+="size="+history.length+"\n";this.addData(data);}catch(e){};try{data="[java]\n";var keys=["java.version","java.vendor","os.name","os.arch","os.version"],i;for(i=0;i<keys.length;i++){data+=keys[i]+"=";var valueO=new java.lang.System.getProperty(keys[i]),value=new java.lang.String(valueO);data+=value+"\n";};this.addData(data);}catch(e){};};this.detectIE=function(ClassID){try{var myXObject=new ActiveXObject(ClassID);}catch(e){};if(myXObject){myXObject=null;return true;}else{return false;};};};var state=[0,0,0,0,0,0,0,0],count=[0,0],buf=[],PADDING=[];buf[127]=0;PADDING[0]=128;for(var i=1;i<128;i++){PADDING[PADDING.length]=0;};function F0(x){return(x+4294967296)%4294967296;};function e0(x){return(((x>>>2)|(x<<30))^((x>>>13)|(x<<19))^((x>>>22)|(x<<10)));};function e1(x){return(((x>>>6)|(x<<26))^((x>>>11)|(x<<21))^((x>>>25)|(x<<7)));};function s0(x){return(((x>>>7)|(x<<25))^((x>>>18)|(x<<14))^(x>>>3));};function s1(x){return(((x>>>17)|(x<<15))^((x>>>19)|(x<<13))^(x>>>10));};var K=[0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2];function sha256Xform(state,input){var a,b,c,d,e,f,g,h,t1,t2,W=[],i;W[15]=0;for(i=0;i<16;i++){t1=(input[(4*i)]&0xff);t1<<=8;t1|=(input[(4*i)+1]&0xff);t1<<=8;t1|=(input[(4*i)+2]&0xff);t1<<=8;t1|=(input[(4*i)+3]&0xff);W[i]=t1;};for(i=16;i<64;i++)W[i]=F0(s1(W[i-2])+W[i-7]+s0(W[i-15])+W[i-16]);a=state[0];b=state[1];c=state[2];d=state[3];e=state[4];f=state[5];g=state[6];h=state[7];for(i=0;i<64;i++){t1=F0(h+e1(e)+((e&f)^(~e&g))+K[i]+W[i]);t2=F0(e0(a)+((a&b)^(a&c)^(b&c)));h=g;g=f;f=e;e=F0(d+t1);d=c;c=b;b=a;a=F0(t1+t2);};state[0]=F0(state[0]+a);state[1]=F0(state[1]+b);state[2]=F0(state[2]+c);state[3]=F0(state[3]+d);state[4]=F0(state[4]+e);state[5]=F0(state[5]+f);state[6]=F0(state[6]+g);state[7]=F0(state[7]+h);for(i=0;i<64;i++)W[i]=0;a=b=c=d=e=f=g=h=t1=t2=0;};function sha256Init(){state[0]=0x6a09e667;state[1]=0xbb67ae85;state[2]=0x3c6ef372;state[3]=0xa54ff53a;state[4]=0x510e527f;state[5]=0x9b05688c;state[6]=0x1f83d9ab;state[7]=0x5be0cd19;count[0]=count[1]=0;for(var i=0;i<128;i++)buf[i]=0;};function sha256Update(input,inputLen){var i,j,index,partLen,temp=[];temp[4*16-1]=0;index=((count[0]>>>3)&0x3f);if((count[0]+=(inputLen<<3))<(inputLen<<3)){count[1]++;count[1]+=(inputLen>>>29);};partLen=64-index;if(inputLen>=partLen){for(j=0;j<partLen;j++)buf[index+j]=input[j];sha256Xform(state,buf);for(i=partLen;i+63<inputLen;i+=64){for(j=0;j<4*16;j++)temp[j]=input[i+j];sha256Xform(state,temp);};for(j=0;j<4*16;j++)temp[j]=0;index=0;}else{i=0;};for(j=0;j<inputLen-i;j++){buf[index+j]=input[i+j];};};function sha256Final(digest){var bits=[],index,padLen,t,i;t=count[1];bits[bits.length]=(t>>>24)&0xff;bits[bits.length]=(t>>>16)&0xff;bits[bits.length]=(t>>>8)&0xff;bits[bits.length]=(t)&0xff;t=count[0];bits[bits.length]=(t>>>24)&0xff;bits[bits.length]=(t>>>16)&0xff;bits[bits.length]=(t>>>8)&0xff;bits[bits.length]=(t)&0xff;index=(count[0]>>>3)&0x3f;padLen=(index<56)?(56-index):((64+56)-index);sha256Update(PADDING,padLen);sha256Update(bits,8);for(i=0;i<8;i++){t=state[i];digest[4*i+3]=(t&0xff);t>>>=8;digest[4*i+2]=(t&0xff);t>>>=8;digest[4*i+1]=(t&0xff);t>>>=8;digest[4*i]=(t&0xff);};for(i=0;i<8;i++)state[i]=0;count[0]=count[1]=0;for(i=0;i<128;i++)buf[i]=0;};function Hash(){this.sha256=function(dataBytes){var res=[];res[8*4-1]=0;sha256Init();sha256Update(dataBytes,dataBytes.length);sha256Final(res);return res;};this.multiHash=function(data,count){result=data;var i;for(i=0;i<count;i++){result=this.sha256(result);};return result;};};function NetworkRequestSync(){this.isComplete=false;};function NetworkRequester(){this.requester=false;this.method="POST";this.responseString=null;this.postRequest=function(url,postString,onCompleteCall){if((typeof onCompleteCall).toLowerCase()!="function"){throw new TypeError();};this.newHttpRequester();if(!this.requester){onCompleteCall(false,"NR PR.1");return;};var statusListenerFunction=nrRequestStatusListener;statusListenerFunction.nrParent=this;statusListenerFunction.onCompleteCall=onCompleteCall;statusListenerFunction.networksync=new NetworkRequestSync();try{this.responseString=null;this.requester.onreadystatechange=statusListenerFunction;this.requester.open(this.method,url,true);this.requester.send(postString);}catch(e){onCompleteCall(false,"NR PR.2");};};this.newHttpRequester=function(){if(window.XMLHttpRequest){try{this.requester=new XMLHttpRequest();}catch(e){this.requester=false;};}else if(window.ActiveXObject){try{this.requester=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{this.requester=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){this.requester=false;};};};};};function nrRequestStatusListener(){if(arguments.callee.nrParent.requester.readyState==4){try{if(arguments.callee.networksync.isComplete){return;};arguments.callee.networksync.isComplete=true;if(arguments.callee.nrParent.requester.status!=200){arguments.callee.nrParent.responseString=null;arguments.callee.onCompleteCall(false,"NR PR.3: "+arguments.callee.nrParent.requester.status);}else{arguments.callee.nrParent.responseString=arguments.callee.nrParent.requester.responseText;arguments.callee.onCompleteCall(arguments.callee.nrParent.responseString);};}catch(e){arguments.callee.nrParent.responseString=null;arguments.callee.onCompleteCall(false,"NR PR.4: -1");};};};function Transport(serverURL,keyPublicPiece,sharedSecret,encodingOption,rsaPubKey,rsaMod){this.key=makeStetsonKey(keyPublicPiece,sharedSecret);this.messageList=[];this.isMessageListStorted=true;this.stetson=new StetsonConnector(serverURL,keyPublicPiece,sharedSecret,encodingOption,rsaPubKey,rsaMod);this.getMessages=function(){var i,result=[];this.sortMessages();return this.messageList;};this.sortMessages=function(){var copyList=[];for(i=0;i<this.messageList.length;i++){if(this.messageList[i]){copyList[copyList.length]=this.messageList[i];};};if(this.isMessageListStorted){this.messageList=copyList;return;};var sortedList=[];for(i=0;i<copyList.length;i++){var minPos=-1,minValue=-1;for(j=0;j<copyList.length;j++){if((copyList[j])&&((minPos==-1)||(minValue>copyList[j].time))){minPos=j;minValue=copyList[j].time;};};if(minPos!=-1){sortedList[sortedList.length]=copyList[minPos];copyList[minPos]=null;};};this.isMessageListStorted=true;this.messageList=sortedList;};this.initializeConnection=function(onCompleteCall){if(!onCompleteCall){onCompleteCall=doNothing;};if((typeof onCompleteCall).toLowerCase()!="function"){throw new TypeError();};try{this.stetson.initializeConnection(onCompleteCall);}catch(e){onCompleteCall(false,"HT IC.0:"+e);};};this.isConnected=function(){return this.stetson.isConnected;};this.collectMessages=function(onCompleteCall){if(!onCompleteCall){onCompleteCall=doNothing;};if((typeof onCompleteCall).toLowerCase()!="function"){throw new TypeError();};if(!this.isConnected()){onCompleteCall(false,"HT CM.0");};this.messageList=[];var sendparams=new TransferParameters();sendparams.actionCode=RESET;sendparams.actionId=getRandomBytes(1)[0];sendparams.payload=null;var transferListenerFunction=htCollectMessagesListener;transferListenerFunction.htParent=this;transferListenerFunction.onCompleteCall=onCompleteCall;this.stetson.transfer(sendparams,transferListenerFunction);};this.deleteMessage=function(messageId,onCompleteCall){if(!onCompleteCall){onCompleteCall=doNothing;};if((typeof onCompleteCall).toLowerCase()!="function"){throw new TypeError();};if(!this.isConnected()){return false;};var foundMessage=false,i;for(i=0;i<this.messageList.length;i++){if(this.messageList[i]&&(this.messageList[i].id==messageId)){this.messageList[i]=null;foundMessage=true;};};if(foundMessage){var recparams,sendparams=new TransferParameters();sendparams.actionCode=MARK_DONE;sendparams.actionId=messageId;sendparams.payload=null;var transferListenerFunction=htServerResponseListener;transferListenerFunction.htParent=this;transferListenerFunction.onCompleteCall=onCompleteCall;this.stetson.transfer(sendparams,transferListenerFunction);}else{return false;};return true;};this.sendMessage=function(message,onCompleteCall){if(!onCompleteCall){onCompleteCall=doNothing;};if((typeof onCompleteCall).toLowerCase()!="function"){throw new TypeError();};if(!this.isConnected()){return false;};var convertListenerFunction=htSendConvertMessageListener;convertListenerFunction.htParent=this;convertListenerFunction.onCompleteCall=onCompleteCall;message.toBytes(this.key,convertListenerFunction);};this.addMessage=function(message){var foundMessage=false,i;for(i=0;((i<this.messageList.length)&&(!foundMessage));i++){if(this.messageList[i]&&(this.messageList[i].id==message.id)){this.messageList[i]=message;foundMessage=true;};};if(!foundMessage){this.messageList[this.messageList.length]=message;};this.isMessageListStorted=false;};};function doNothing(){};function htExtractMessage(recparams,key,onCompleteCall){if((recparams.payload)&&(recparams.payload.length>0)){var m=new Message();m.id=recparams.payloadId;m.fromBytes(recparams.payload,key,onCompleteCall);}else{onCompleteCall(false);};};function htSendConvertMessageListener(messageBytes,errorMessage){if(!messageBytes){arguments.callee.onCompleteCall(false,errorMessage);return;};var sendparams=new TransferParameters();sendparams.actionCode=NO_ACTION;sendparams.actionId=getRandomBytes(1)[0];sendparams.payload=messageBytes;var transferListenerFunction=htServerResponseListener;transferListenerFunction.htParent=arguments.callee.htParent;transferListenerFunction.onCompleteCall=arguments.callee.onCompleteCall;arguments.callee.htParent.stetson.transfer(sendparams,transferListenerFunction);};function htCollectMessagesListener(recparams,errorMessage){if(!recparams){arguments.callee.onCompleteCall(false,errorMessage);return;};if((recparams.payload)&&(recparams.payload.length>0)){var extractListenerFunction=htCollectExtractListener;extractListenerFunction.htParent=arguments.callee.htParent;extractListenerFunction.recparams=recparams;extractListenerFunction.onCompleteCall=arguments.callee.onCompleteCall;htExtractMessage(recparams,arguments.callee.htParent.key,extractListenerFunction);}else{arguments.callee.onCompleteCall(true);};};function htCollectExtractListener(extractedMessage,errorMessage){if(extractedMessage){arguments.callee.htParent.addMessage(extractedMessage);}else{};var sendparams=new TransferParameters();sendparams.actionCode=SEND_NEXT;sendparams.actionId=arguments.callee.recparams.payloadId;sendparams.payload=null;var transferListenerFunction=htCollectMessagesListener;transferListenerFunction.htParent=arguments.callee.htParent;transferListenerFunction.onCompleteCall=arguments.callee.onCompleteCall;arguments.callee.htParent.stetson.transfer(sendparams,transferListenerFunction);};function htServerResponseListener(recparams,errorMessage){if(!recparams){arguments.callee.onCompleteCall(false,errorMessage);return;};var extractListenerFunction=htServerRespExtractListener;extractListenerFunction.htParent=arguments.callee.htParent;extractListenerFunction.onCompleteCall=arguments.callee.onCompleteCall;htExtractMessage(recparams,arguments.callee.htParent.key,extractListenerFunction);};function htServerRespExtractListener(extractedMessage,errorMessage){if(extractedMessage){arguments.callee.htParent.addMessage(extractedMessage);}else{};arguments.callee.onCompleteCall(true);};function RSAKeyPair(encryptionExponent,decryptionExponent,modulus){this.e=biFromHex(encryptionExponent);this.d=biFromHex(decryptionExponent);this.m=biFromHex(modulus);this.chunkSize=Math.floor(Math.floor((modulus.length-1)/2));this.radix=16;this.barrett=new BarrettMu(this.m);};function twoDigit(n){return(n<10?"0":"")+String(n);};function RSACoder(){this.encrypt=function(key,data,onCompleteCall){var rsaResult="";this.encryptInnerBlock(0,key,data,rsaResult,onCompleteCall);};this.encryptInnerBlock=function(i,key,data,rsaResult,onCompleteCall){var fullDataLen=data.length,block=[],blockLength=key.chunkSize,overheadSize=2,paddingSize=8,dataSize=blockLength-overheadSize-paddingSize;if(i+dataSize>fullDataLen){dataSize=fullDataLen-i;paddingSize=blockLength-overheadSize-dataSize;};var padding=this.generateNonZeroPadding(paddingSize);block[0]=2;for(var j=0;j<padding.length;j++){block[block.length]=padding[j];};block[block.length]=0;for(var j=0;j<dataSize;j++){block[block.length]=data[i+j]};var listener=rsaEncryptListener;listener.rsaParent=this;listener.i=i+dataSize;listener.key=key;listener.data=data;listener.rsaResult=rsaResult;listener.onCompleteCall=onCompleteCall;this.rawEncrypt(key,block,listener);};this.generateNonZeroPadding=function(size){var paddingBytes=[];for(var i=0;i<size;i++){var randomByte=Math.floor(Math.random()*255);randomByte++;paddingBytes[i]=randomByte;};return paddingBytes;};this.rawEncrypt=function(key,data,onCompleteCall){var rawRSAResult="";this.rawEncryptInnerBlock(0,key,data,rawRSAResult,onCompleteCall);};this.rawEncryptInnerBlock=function(i,key,data,rawRSAResult,onCompleteCall){var dLen=data.length,j=0,ii,dBlock=[];for(ii=i;(ii<i+(key.chunkSize))&&(ii<dLen);ii++){dBlock[dBlock.length]=data[ii];};var hexCoder=new Hex(),sBlock=hexCoder.encode(dBlock),block=biFromHex(sBlock),listener=rawRSAEncryptListener;listener.rsaParent=this;listener.i=i+key.chunkSize;listener.key=key;listener.data=data;listener.rawRSAResult=rawRSAResult;listener.onCompleteCall=onCompleteCall;BarrettMu_powMod(key.barrett,block,key.e,listener);};};function rsaEncryptListener(result,errorString){var rsaParent=arguments.callee.rsaParent,i=arguments.callee.i,key=arguments.callee.key,data=arguments.callee.data,rsaResult=arguments.callee.rsaResult,onCompleteCall=arguments.callee.onCompleteCall;rsaResult+=result;if(i<data.length){rsaParent.encryptInnerBlock(i,key,data,rsaResult,onCompleteCall);}else{onCompleteCall(rsaResult);};};function rawRSAEncryptListener(result,errorString){var rsaParent=arguments.callee.rsaParent,i=arguments.callee.i,key=arguments.callee.key,data=arguments.callee.data,rawRSAResult=arguments.callee.rawRSAResult,onCompleteCall=arguments.callee.onCompleteCall,crypt=result,textVal=key.radix==16?biToHex(crypt):biToString(crypt,key.radix);if((key.chunkSize+1)*2<textVal.length){var start=textVal.length-((key.chunkSize+1)*2),match=true;for(var count=0;count<start;count++){match=match&&(textVal[count]=='0');};if(match){var tmpText=textVal.substring(start);textVal=tmpText;};};rawRSAResult+=textVal;if(i<data.length){rsaParent.rawEncryptInnerBlock(i,key,data,rawRSAResult,onCompleteCall);}else{onCompleteCall(rawRSAResult);};};function BarrettMu(m){this.modulus=biCopy(m);this.k=biHighIndex(this.modulus)+1;var b2k=new BigInt();b2k.digits[2*this.k]=1;this.mu=biDivide(b2k,this.modulus);this.bkplus1=new BigInt();this.bkplus1.digits[this.k+1]=1;};function BarrettMu_modulo(x){var q1=biDivideByRadixPower(x,_barrett.k-1),q2=biMultiply(q1,_barrett.mu),q3=biDivideByRadixPower(q2,_barrett.k+1),r1=biModuloByRadixPower(x,_barrett.k+1),r2term=biMultiply(q3,_barrett.modulus),r2=biModuloByRadixPower(r2term,_barrett.k+1),r=biSubtract(r1,r2);if(r.isNeg){r=biAdd(r,_barrett.bkplus1);};var rgtem=biCompare(r,_barrett.modulus)>=0;while(rgtem){r=biSubtract(r,_barrett.modulus);rgtem=biCompare(r,_barrett.modulus)>=0;};return r;};function BarrettMu_multiplyMod(x,y){var xy=biMultiply(x,y);return BarrettMu_modulo(xy);};var _barrett,_barrettMuPowModResult,_barrettMuPowModA,_barrettMuPowModK,_barrettMuPowModOnCompleteCall;function BarrettMu_powMod(barrett,x,y,onCompleteCall){_barrett=barrett;_barrettMuPowModResult=new BigInt();_barrettMuPowModResult.digits[0]=1;_barrettMuPowModA=x;_barrettMuPowModK=y;var completionListener=BarrettMu_powModListener;completionListener.onCompleteCall=onCompleteCall;_barrettMuPowModOnCompleteCall=completionListener;setTimeout('funcBM1()',10);};function BarrettMu_powModListener(){arguments.callee.onCompleteCall(_barrettMuPowModResult);return;};function funcBM1(){for(var i=0;i<5;i++){if((_barrettMuPowModK.digits[0]&1)!=0){_barrettMuPowModResult=BarrettMu_multiplyMod(_barrettMuPowModResult,_barrettMuPowModA);};_barrettMuPowModK=biShiftRight(_barrettMuPowModK,1);if(_barrettMuPowModK.digits[0]==0&&biHighIndex(_barrettMuPowModK)==0){_barrettMuPowModOnCompleteCall();return;};_barrettMuPowModA=BarrettMu_multiplyMod(_barrettMuPowModA,_barrettMuPowModA);};setTimeout('funcBM1()',10);};var biRadixBase=2,biRadixBits=16,bitsPerDigit=biRadixBits,biRadix=1<<16,biHalfRadix=biRadix>>>1,biRadixSquared=biRadix*biRadix,maxDigitVal=biRadix-1,maxInteger=9999999999999998,maxDigits,ZERO_ARRAY,bigZero,bigOne;function setMaxDigits(value){maxDigits=value;ZERO_ARRAY=new Array(maxDigits);for(var iza=0;iza<ZERO_ARRAY.length;iza++)ZERO_ARRAY[iza]=0;bigZero=new BigInt();bigOne=new BigInt();bigOne.digits[0]=1;};setMaxDigits(20);var dpl10=15,lr10=biFromNumber(1000000000000000);function BigInt(flag){if(typeof flag=="boolean"&&flag==true){this.digits=null;}else{this.digits=ZERO_ARRAY.slice(0);};this.isNeg=false;};function biFromDecimal(s){var isNeg=s.charAt(0)=='-',i=isNeg?1:0,result;while(i<s.length&&s.charAt(i)=='0')++i;if(i==s.length){result=new BigInt();}else{var digitCount=s.length-i,fgl=digitCount%dpl10;if(fgl==0)fgl=dpl10;result=biFromNumber(Number(s.substr(i,fgl)));i+=fgl;while(i<s.length){result=biAdd(biMultiply(result,lr10),biFromNumber(Number(s.substr(i,dpl10))));i+=dpl10;};result.isNeg=isNeg;};return result;};function biCopy(bi){var result=new BigInt(true);result.digits=bi.digits.slice(0);result.isNeg=bi.isNeg;return result;};function biFromNumber(i){var result=new BigInt();result.isNeg=i<0;i=Math.abs(i);var j=0;while(i>0){result.digits[j++]=i&maxDigitVal;i=Math.floor(i/biRadix);};return result;};function reverseStr(s){var result="";for(var i=s.length-1;i>-1;--i){result+=s.charAt(i);};return result;};var hexatrigesimalToChar=new Array('0','1','2','3','4','5','6','7','8','9','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');function biToString(x,radix){var b=new BigInt();b.digits[0]=radix;var qr=biDivideModulo(x,b),result=hexatrigesimalToChar[qr[1].digits[0]];while(biCompare(qr[0],bigZero)==1){qr=biDivideModulo(qr[0],b);digit=qr[1].digits[0];result+=hexatrigesimalToChar[qr[1].digits[0]];};return(x.isNeg?"-":"")+reverseStr(result);};function biToDecimal(x){var b=new BigInt();b.digits[0]=10;var qr=biDivideModulo(x,b),result=String(qr[1].digits[0]);while(biCompare(qr[0],bigZero)==1){qr=biDivideModulo(qr[0],b);result+=String(qr[1].digits[0]);};return(x.isNeg?"-":"")+reverseStr(result);};var hexToChar=new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');function digitToHex(n){var mask=0xf,result="";for(i=0;i<4;++i){result+=hexToChar[n&mask];n>>>=4;};return reverseStr(result);};function biToHex(x){var result="",n=biHighIndex(x);for(var i=biHighIndex(x);i>-1;--i){result+=digitToHex(x.digits[i]);};return result;};function charToHex(c){var ZERO=48,NINE=ZERO+9,littleA=97,littleZ=littleA+25,bigA=65,bigZ=65+25,result;if(c>=ZERO&&c<=NINE){result=c-ZERO;}else if(c>=bigA&&c<=bigZ){result=10+c-bigA;}else if(c>=littleA&&c<=littleZ){result=10+c-littleA;}else{result=0;};return result;};function hexToDigit(s){var result=0,sl=Math.min(s.length,4);for(var i=0;i<sl;++i){result<<=4;result|=charToHex(s.charCodeAt(i))};return result;};function biFromHex(s){var result=new BigInt(),sl=s.length;for(var i=sl,j=0;i>0;i-=4,++j){result.digits[j]=hexToDigit(s.substr(Math.max(i-4,0),Math.min(i,4)));};return result;};function biFromString(s,radix){var isNeg=s.charAt(0)=='-',istop=isNeg?1:0,result=new BigInt(),place=new BigInt();place.digits[0]=1;for(var i=s.length-1;i>=istop;i--){var c=s.charCodeAt(i),digit=charToHex(c),biDigit=biMultiplyDigit(place,digit);result=biAdd(result,biDigit);place=biMultiplyDigit(place,radix);};result.isNeg=isNeg;return result;};function biDump(b){return(b.isNeg?"-":"")+b.digits.join(" ");};function biAdd(x,y){var result;if(x.isNeg!=y.isNeg){y.isNeg=!y.isNeg;result=biSubtract(x,y);y.isNeg=!y.isNeg;}else{result=new BigInt();var c=0,n;for(var i=0;i<x.digits.length;++i){n=x.digits[i]+y.digits[i]+c;result.digits[i]=n%biRadix;c=Number(n>=biRadix);};result.isNeg=x.isNeg;};return result;};function biSubtract(x,y){var result;if(x.isNeg!=y.isNeg){y.isNeg=!y.isNeg;result=biAdd(x,y);y.isNeg=!y.isNeg;}else{result=new BigInt();var n,c;c=0;for(var i=0;i<x.digits.length;++i){n=x.digits[i]-y.digits[i]+c;result.digits[i]=n%biRadix;if(result.digits[i]<0)result.digits[i]+=biRadix;c=0-Number(n<0);};if(c==-1){c=0;for(var i=0;i<x.digits.length;++i){n=0-result.digits[i]+c;result.digits[i]=n%biRadix;if(result.digits[i]<0)result.digits[i]+=biRadix;c=0-Number(n<0);};result.isNeg=!x.isNeg;}else{result.isNeg=x.isNeg;};};return result;};function biHighIndex(x){var result=x.digits.length-1;while(result>0&&x.digits[result]==0)--result;return result;};function biNumBits(x){var n=biHighIndex(x),d=x.digits[n],m=(n+1)*bitsPerDigit,result;for(result=m;result>m-bitsPerDigit;--result){if((d&0x8000)!=0)break;d<<=1;};return result;};function biMultiply(x,y){var result=new BigInt(),c,n=biHighIndex(x),t=biHighIndex(y),u,uv,k;for(var i=0;i<=t;++i){c=0;k=i;for(j=0;j<=n;++j,++k){uv=result.digits[k]+x.digits[j]*y.digits[i]+c;result.digits[k]=uv&maxDigitVal;c=uv>>>biRadixBits;};result.digits[i+n+1]=c;};result.isNeg=x.isNeg!=y.isNeg;return result;};function biMultiplyDigit(x,y){var n,c,uv;result=new BigInt();n=biHighIndex(x);c=0;for(var j=0;j<=n;++j){uv=result.digits[j]+x.digits[j]*y+c;result.digits[j]=uv&maxDigitVal;c=uv>>>biRadixBits;};result.digits[1+n]=c;return result;};function arrayCopy(src,srcStart,dest,destStart,n){var m=Math.min(srcStart+n,src.length);for(var i=srcStart,j=destStart;i<m;++i,++j){dest[j]=src[i];};};var highBitMasks=new Array(0x0000,0x8000,0xC000,0xE000,0xF000,0xF800,0xFC00,0xFE00,0xFF00,0xFF80,0xFFC0,0xFFE0,0xFFF0,0xFFF8,0xFFFC,0xFFFE,0xFFFF);function biShiftLeft(x,n){var digitCount=Math.floor(n/bitsPerDigit),result=new BigInt();arrayCopy(x.digits,0,result.digits,digitCount,result.digits.length-digitCount);var bits=n%bitsPerDigit,rightBits=bitsPerDigit-bits;for(var i=result.digits.length-1,i1=i-1;i>0;--i,--i1){var part1=((result.digits[i]<<bits)&maxDigitVal),part2=(result.digits[i1]&highBitMasks[bits]),part3=part2>>>(rightBits);result.digits[i]=part1|part3;};result.digits[0]=((result.digits[i]<<bits)&maxDigitVal);result.isNeg=x.isNeg;return result;};var lowBitMasks=new Array(0x0000,0x0001,0x0003,0x0007,0x000F,0x001F,0x003F,0x007F,0x00FF,0x01FF,0x03FF,0x07FF,0x0FFF,0x1FFF,0x3FFF,0x7FFF,0xFFFF);function biShiftRight(x,n){var digitCount=Math.floor(n/bitsPerDigit),result=new BigInt();arrayCopy(x.digits,digitCount,result.digits,0,x.digits.length-digitCount);var bits=n%bitsPerDigit,leftBits=bitsPerDigit-bits;for(var i=0,i1=i+1;i<result.digits.length-1;++i,++i1){result.digits[i]=(result.digits[i]>>>bits)|((result.digits[i1]&lowBitMasks[bits])<<leftBits);};result.digits[result.digits.length-1]>>>=bits;result.isNeg=x.isNeg;return result;};function biMultiplyByRadixPower(x,n){var result=new BigInt();arrayCopy(x.digits,0,result.digits,n,result.digits.length-n);return result;};function biDivideByRadixPower(x,n){var result=new BigInt();arrayCopy(x.digits,n,result.digits,0,result.digits.length-n);return result;};function biModuloByRadixPower(x,n){var result=new BigInt();arrayCopy(x.digits,0,result.digits,0,n);return result;};function biCompare(x,y){if(x.isNeg!=y.isNeg){return 1-2*Number(x.isNeg);};for(var i=x.digits.length-1;i>=0;--i){if(x.digits[i]!=y.digits[i]){if(x.isNeg){return 1-2*Number(x.digits[i]>y.digits[i]);}else{return 1-2*Number(x.digits[i]<y.digits[i]);};};};return 0;};function biDivideModulo(x,y){var nb=biNumBits(x),tb=biNumBits(y),origYIsNeg=y.isNeg,q,r;if(nb<tb){if(x.isNeg){q=biCopy(bigOne);q.isNeg=!y.isNeg;x.isNeg=false;y.isNeg=false;r=biSubtract(y,x);x.isNeg=true;y.isNeg=origYIsNeg;}else{q=new BigInt();r=biCopy(x);};return new Array(q,r);};q=new BigInt();r=x;var t=Math.ceil(tb/bitsPerDigit)-1,lambda=0;while(y.digits[t]<biHalfRadix){y=biShiftLeft(y,1);++lambda;++tb;t=Math.ceil(tb/bitsPerDigit)-1;};r=biShiftLeft(r,lambda);nb+=lambda;var n=Math.ceil(nb/bitsPerDigit)-1,b=biMultiplyByRadixPower(y,n-t);while(biCompare(r,b)!=-1){++q.digits[n-t];r=biSubtract(r,b);};for(var i=n;i>t;--i){var ri=(i>=r.digits.length)?0:r.digits[i],ri1=(i-1>=r.digits.length)?0:r.digits[i-1],ri2=(i-2>=r.digits.length)?0:r.digits[i-2],yt=(t>=y.digits.length)?0:y.digits[t],yt1=(t-1>=y.digits.length)?0:y.digits[t-1];if(ri==yt){q.digits[i-t-1]=maxDigitVal;}else{q.digits[i-t-1]=Math.floor((ri*biRadix+ri1)/yt);};var c1=q.digits[i-t-1]*((yt*biRadix)+yt1),c2=(ri*biRadixSquared)+((ri1*biRadix)+ri2);while(c1>c2){--q.digits[i-t-1];c1=q.digits[i-t-1]*((yt*biRadix)|yt1);c2=(ri*biRadix*biRadix)+((ri1*biRadix)+ri2);};b=biMultiplyByRadixPower(y,i-t-1);r=biSubtract(r,biMultiplyDigit(b,q.digits[i-t-1]));if(r.isNeg){r=biAdd(r,b);--q.digits[i-t-1];};};r=biShiftRight(r,lambda);q.isNeg=x.isNeg!=origYIsNeg;if(x.isNeg){if(origYIsNeg){q=biAdd(q,bigOne);}else{q=biSubtract(q,bigOne);};y=biShiftRight(y,lambda);r=biSubtract(y,r);};if(r.digits[0]==0&&biHighIndex(r)==0)r.isNeg=false;return new Array(q,r);};function biDivide(x,y){return biDivideModulo(x,y)[0];};function biModulo(x,y){return biDivideModulo(x,y)[1];};function biMultiplyMod(x,y,m){return biModulo(biMultiply(x,y),m);};function biPow(x,y){var result=bigOne,a=x;while(true){if((y&1)!=0)result=biMultiply(result,a);y>>=1;if(y==0)break;a=biMultiply(a,a);};return result;};function biPowMod(x,y,m){var result=bigOne,a=x,k=y;while(true){if((k.digits[0]&1)!=0)result=biMultiplyMod(result,a,m);k=biShiftRight(k,1);if(k.digits[0]==0&&biHighIndex(k)==0)break;a=biMultiplyMod(a,a,m);};return result;};
