function floor(value){return Math.floor(value);}
function log10(arg){return Math.log(arg)/Math.LN10;}
function pow(base,exp){return Math.pow(base,exp);}
function strlen(string){var str=string+'';var i=0,chr='',lgth=0;var getWholeChar=function(str,i){var code=str.charCodeAt(i);var next='',prev='';if(0xD800<=code&&code<=0xDBFF){if(str.length<=(i+1)){throw'High surrogate without following low surrogate';}
next=str.charCodeAt(i+1);if(0xDC00>next||next>0xDFFF){throw'High surrogate without following low surrogate';}
return str.charAt(i)+str.charAt(i+1);}else if(0xDC00<=code&&code<=0xDFFF){if(i===0){throw'Low surrogate without preceding high surrogate';}
prev=str.charCodeAt(i-1);if(0xD800>prev||prev>0xDBFF){throw'Low surrogate without preceding high surrogate';}
return false;}
return str.charAt(i);};for(i=0,lgth=0;i<str.length;i++){if((chr=getWholeChar(str,i))===false){continue;}
lgth++;}
return lgth;}
function substr(str,start,len){str+='';var end=str.length;if(start<0){start+=end;}
end=typeof len==='undefined'?end:(len<0?len+end:len+start);return start>=str.length||start<0||start>end?!1:str.slice(start,end);}
function hexdec(hex_string){hex_string=(hex_string+'').replace(/[^a-f0-9]/gi,'');return parseInt(hex_string,16);}
function dechex (number) { if (number < 0) { number = 0xFFFFFFFF + number + 1; }
return parseInt(number, 10).toString(16); }
function strpos (haystack, needle, offset) { var i = (haystack+'').indexOf(needle, (offset ? offset : 0));
return i === -1 ? false : i;}
function b62( num ) { var base = 62;var index = substr( "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ,0 ,base );var out = "";var a;var t;
for ( t = floor( log10( num ) / log10( base ) ); t >= 0; t-- ) { a = floor( num / pow( base, t ) ); out = out + substr( index, a, 1 ); num = num - ( a * pow( base, t ) ); }
return out; }
function b622dec( num ) { var base = 62; var index = substr( "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ,0 ,base ); var out = 0; var t; var len; len = strlen( num ) - 1;
for ( t = 0; t <= len; t++ ) { out = out + strpos( index, substr( num, t, 1 ) ) * pow( base, len - t ); }
return out;}


