function encode64(b64input){var swapCodes=new Array(8211,8212,8216,8217,8220,8221,8226,8230);var swapStrings=new Array("-","-","'","'",'"','"',"*","...");for(charId=0;charId<swapCodes.length;charId++){b64input=b64input.replace(eval("/"+String.fromCharCode(swapCodes[charId])+"/g"),swapStrings[charId]);}var b64keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var b64output="";var b64chr1,b64chr2,b64chr3;var b64enc1,b64enc2,b64enc3,b64enc4;var b64i=0;do{b64chr1=b64input.charCodeAt(b64i++);b64chr2=b64input.charCodeAt(b64i++);b64chr3=b64input.charCodeAt(b64i++);b64enc1=b64chr1>>2;b64enc2=((b64chr1&3)<<4)|(b64chr2>>4);b64enc3=((b64chr2&15)<<2)|(b64chr3>>6);b64enc4=b64chr3&63;if(isNaN(b64chr2)){b64enc3=b64enc4=64;}else if(isNaN(b64chr3)){b64enc4=64;}b64output=b64output+b64keyStr.charAt(b64enc1)+b64keyStr.charAt(b64enc2)+b64keyStr.charAt(b64enc3)+b64keyStr.charAt(b64enc4);}while(b64i<b64input.length);return b64output;}
function decode64(b64input){var b64keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var b64output="";var b64chr1,b64chr2,b64chr3;var b64enc1,enc2,b64enc3,b64enc4;var b64i=0;b64input=b64input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{b64enc1=b64keyStr.indexOf(b64input.charAt(b64i++));b64enc2=b64keyStr.indexOf(b64input.charAt(b64i++));b64enc3=b64keyStr.indexOf(b64input.charAt(b64i++));b64enc4=b64keyStr.indexOf(b64input.charAt(b64i++));b64chr1=(b64enc1<<2)|(b64enc2>>4);b64chr2=((b64enc2&15)<<4)|(b64enc3>>2);b64chr3=((b64enc3&3)<<6)|b64enc4;b64output=b64output+String.fromCharCode(b64chr1);if(b64enc3!=64){b64output=b64output+String.fromCharCode(b64chr2);}if(b64enc4!=64){b64output=b64output+String.fromCharCode(b64chr3);}}while(b64i<b64input.length);return b64output;}
