const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' ; const lookup = new Uint8Array ( 256 ) ; for ( var i = 0 ; i < chars . length ; i ++ ) { lookup [ chars . charCodeAt ( i ) ] = i ; } export const ArrayBuffers = { toArrayBuffer ( v ) { var bufferLength = v . length * 0.75 , len = v . length , i , p = 0 , encoded1 , encoded2 , encoded3 , encoded4 ; if ( v [ v . length - 1 ] === '=' ) { bufferLength -- ; if ( v [ v . length - 2 ] === '=' ) { bufferLength -- ; } } var arraybuffer = new ArrayBuffer ( bufferLength ) , bytes = new Uint8Array ( arraybuffer ) ; for ( i = 0 ; i < len ; i += 4 ) { encoded1 = lookup [ v . charCodeAt ( i ) ] ; encoded2 = lookup [ v . charCodeAt ( i + 1 ) ] ; encoded3 = lookup [ v . charCodeAt ( i + 2 ) ] ; encoded4 = lookup [ v . charCodeAt ( i + 3 ) ] ; bytes [ p ++ ] = ( encoded1 << 2 ) | ( encoded2 >> 4 ) ; bytes [ p ++ ] = ( ( encoded2 & 15 ) << 4 ) | ( encoded3 >> 2 ) ; bytes [ p ++ ] = ( ( encoded3 & 3 ) << 6 ) | ( encoded4 & 63 ) ; } return arraybuffer ; } , toString ( v ) { var bytes = new Uint8Array ( v ) , i , len = bytes . length , base64 = '' ; for ( i = 0 ; i < len ; i += 3 ) { base64 += chars [ bytes [ i ] >> 2 ] ; base64 += chars [ ( ( bytes [ i ] & 3 ) << 4 ) | ( bytes [ i + 1 ] >> 4 ) ] ; base64 += chars [ ( ( bytes [ i + 1 ] & 15 ) << 2 ) | ( bytes [ i + 2 ] >> 6 ) ] ; base64 += chars [ bytes [ i + 2 ] & 63 ] ; } if ( len % 3 === 2 ) { base64 = base64 . substring ( 0 , base64 . length - 1 ) + '=' ; } else if ( len % 3 === 1 ) { base64 = base64 . substring ( 0 , base64 . length - 2 ) + '==' ; } return base64 ; } , } ;