function contact( packageRoot ) {
    var contact_data="PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZTtjb2xvcjojNDA0MGZmO2ZvbnQtd2VpZ2h0OmJvbGQ7Ij48YSBocmVmPSJtYWlsdG86aW50dWl0QGF0cy5va2EubnUiIHN0eWxlPSJjb2xvcjojNDA0MGZmO3RleHQtZGVjb3JhdGlvbjpub25lIj5BdHN1c2hpIE9rYTwvYT4gWzxhIGhyZWY9Im1haWx0bzppbnR1aXRAYXRzLm9rYS5udSIgc3R5bGU9ImNvbG9yOiM0MDQwZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmUiPmVtYWlsPC9hPiA8YSBocmVmPSJodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9wcm9maWxlLnBocD9pZD03ODQ0OTM2OTEiIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6IzQwNDBmZjt0ZXh0LWRlY29yYXRpb246bm9uZSI+ZmFjZWJvb2s8L2E+IDxhIGhyZWY9Imh0dHA6Ly9hdHMtY3JlYXRpdml0eS5oaTUuY29tLyIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjojNDA0MGZmO3RleHQtZGVjb3JhdGlvbjpub25lIj5oaTU8L2E+IDxhIGhyZWY9Imh0dHA6Ly9taXhpLmpwL3Nob3dfcHJvZmlsZS5wbD9pZD00NTk5ODkiIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6IzQwNDBmZjt0ZXh0LWRlY29yYXRpb246bm9uZSI+bWl4aTwvYT4gPGEgaHJlZj0ic2t5cGU6cmVnYWxlY3VzX3J1c3NlbGlpP2FkZCIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjojNDA0MGZmO3RleHQtZGVjb3JhdGlvbjpub25lIj5za3lwZTwvYT5dIDwvc3Bhbj4=";
    // var contact_data="PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IGNvbG9yOiAjNDA0MEZGOyBmb250LXdlaWdodDogYm9sZDsiPjxhIGhyZWY9Im1haWx0bzppbnR1aXRAb2thLm51IiBzdHlsZT0iY29sb3I6ICM0MDQwRkY7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPkF0c3VzaGkgT2thPC9hPiBbPGEgaHJlZj0ibWFpbHRvOmludHVpdEBva2EubnUiIHN0eWxlPSJjb2xvcjogIzQwNDBGRjsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+ZW1haWw8L2E+IDxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL3Byb2ZpbGUucGhwP2lkPTc4NDQ5MzY5MSIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogIzQwNDBGRjsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+ZmFjZWJvb2s8L2E+IDxhIGhyZWY9Imh0dHA6Ly9hdHMtY3JlYXRpdml0eS5oaTUuY29tLyIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogIzQwNDBGRjsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+aGk1PC9hPiA8YSBocmVmPSJodHRwOi8vbWl4aS5qcC9zaG93X3Byb2ZpbGUucGw/aWQ9NDU5OTg5IiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiAjNDA0MEZGOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ij5taXhpPC9hPiA8YSBocmVmPSJza3lwZTpyZWdhbGVjdXNfcnVzc2VsaWk/YWRkIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiAjNDA0MEZGOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ij5za3lwZTwvYT5dIDwvc3Bhbj4K";


    var a2i = [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51];
    function get_a2i( c ) {
        var result = (0<=c) && (c<a2i.length) ? a2i[ c ] : -1;
        if (result < 0) throw "Illegal character " + c;
        return result;
    }
    function base64_decode(s) {
        var length = s.length;
        var groupCount = Math.floor( length/4 );
        if ( 4 * groupCount != length )
            throw "String length must be a multiple of four.";
        var missing = 0;
        if (length != 0) {
        if ( s.charAt( length - 1 ) == '=' ) {
            missing++;
            groupCount--;
        }
        if ( s.charAt( length - 2 ) == '=' )
            missing++;
        }

        var len = ( 3 * groupCount - missing );
        if ( len < 0 ) {
        len=0;
        }
        var result = new Array( len );
        var idx_in = 0;
        var idx_out = 0;
        for ( var i=0; i<groupCount; i++ ) {
        var c0 = get_a2i( s.charCodeAt( idx_in++ ) );
        var c1 = get_a2i( s.charCodeAt( idx_in++ ) );
        var c2 = get_a2i( s.charCodeAt( idx_in++ ) );
        var c3 = get_a2i( s.charCodeAt( idx_in++ ) );
        result[ idx_out++ ] = 0xFF & ( (c0 << 2) | (c1 >> 4) );
        result[ idx_out++ ] = 0xFF & ( (c1 << 4) | (c2 >> 2) );
        result[ idx_out++ ] = 0xFF & ( (c2 << 6) | c3 );
        }

        if ( missing == 0 ) {
        } else if ( missing == 1 ) {
        var c0 = get_a2i( s.charCodeAt( idx_in++ ) );
        var c1 = get_a2i( s.charCodeAt( idx_in++ ) );
        var c2 = get_a2i( s.charCodeAt( idx_in++ ) );
        result[ idx_out++ ] = 0xFF & ( (c0 << 2) | (c1 >> 4) );
        result[ idx_out++ ] = 0xFF & ( (c1 << 4) | (c2 >> 2) );

        } else if ( missing == 2 ) {
        var c0 = get_a2i( s.charCodeAt( idx_in++ ) );
        var c1 = get_a2i( s.charCodeAt( idx_in++ ) );
        result[ idx_out++ ] = 0xFF & ( ( c0 << 2 ) | ( c1 >> 4 ) );
        } else {
        throw "never happen";
        }
        return result;
    }

    /////////////////////////////////////////////////////////////////////////////////////////////

    var B10000000 = 0x80;
    var B11000000 = 0xC0;
    var B11100000 = 0xE0;
    var B11110000 = 0xF0;
    var B11111000 = 0xF8;
    var B11111100 = 0xFC;
    var B11111110 = 0xFE;
    var B01111111 = 0x7F;
    var B00111111 = 0x3F;
    var B00011111 = 0x1F;
    var B00001111 = 0x0F;
    var B00000111 = 0x07;
    var B00000011 = 0x03;
    var B00000001 = 0x01;

    function utf82str( data ) {
        var result = "";
        var length = data.length;

        for ( var i=0; i<length; ){
        var c = data[i++];
        if ( c < 0x80 ) {
            result += String.fromCharCode( c );
        } else if ( ( c < B11100000 ) ) {
            result += String.fromCharCode(
            ( ( B00011111 & c         ) <<  6 ) |
            ( ( B00111111 & data[i++] ) <<  0 )
            );
        } else if ( ( c < B11110000 ) ) {
            result += String.fromCharCode(
            ( ( B00001111 & c         ) << 12 ) |
            ( ( B00111111 & data[i++] ) <<  6 ) |
            ( ( B00111111 & data[i++] ) <<  0 )
            );
        } else if ( ( c < B11111000 ) ) {
            result += String.fromCharCode(
            ( ( B00000111 & c         ) << 18 ) |
            ( ( B00111111 & data[i++] ) << 12 ) |
            ( ( B00111111 & data[i++] ) <<  6 ) |
            ( ( B00111111 & data[i++] ) <<  0 )
            );
        } else if ( ( c < B11111100 ) ) {
            result += String.fromCharCode(
            ( ( B00000011 & c         ) << 24 ) |
            ( ( B00111111 & data[i++] ) << 18 ) |
            ( ( B00111111 & data[i++] ) << 12 ) |
            ( ( B00111111 & data[i++] ) <<  6 ) |
            ( ( B00111111 & data[i++] ) <<  0 )
            );
        } else if ( ( c < B11111110 ) ) {
            result += String.fromCharCode(
            ( ( B00000001 & c         ) << 30 ) |
            ( ( B00111111 & data[i++] ) << 24 ) |
            ( ( B00111111 & data[i++] ) << 18 ) |
            ( ( B00111111 & data[i++] ) << 12 ) |
            ( ( B00111111 & data[i++] ) <<  6 ) |
            ( ( B00111111 & data[i++] ) <<  0 )
            );
        }
        }
        return result;
    }
    document.write( utf82str( base64_decode( contact_data ) ) );
}
contact();

