/*!
* Extracted from MinifyJpeg (Copyright (c) 2014 Hiroaki Matoba, MIT License):
* https://github.com/hMatoba/MinifyJpeg
*/
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
var KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
exports['default'] = {
encode: function encode(input) {
var output = '',
chr1 = undefined,
chr2 = undefined,
chr3 = '',
enc1 = undefined,
enc2 = undefined,
enc3 = undefined,
enc4 = '',
i = 0;
do {
chr1 = input[i++];
chr2 = input[i++];
chr3 = input[i++];
enc1 = chr1 >> 2;
enc2 = (chr1 & 3) << 4 | chr2 >> 4;
enc3 = (chr2 & 15) << 2 | chr3 >> 6;
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output + KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) + KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);
chr1 = chr2 = chr3 = '';
enc1 = enc2 = enc3 = enc4 = '';
} while (i < input.length);
return output;
},
decode: function decode(input) {
var chr1 = undefined,
chr2 = undefined,
chr3 = '',
enc1 = undefined,
enc2 = undefined,
enc3 = undefined,
enc4 = '',
i = 0,
buf = [];
// remove all characters that are not A-Z, a-z, 0-9, +, /, or =
var base64test = /[^A-Za-z0-9\+\/\=]/g;
if (base64test.exec(input)) {
throw new Error('There were invalid base64 characters in the input text.\n' + 'Valid base64 characters are A-Z, a-z, 0-9, \'+\', \'/\',and \'=\'\n' + 'Expect errors in decoding.');
}
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
do {
enc1 = KEY_STR.indexOf(input.charAt(i++));
enc2 = KEY_STR.indexOf(input.charAt(i++));
enc3 = KEY_STR.indexOf(input.charAt(i++));
enc4 = KEY_STR.indexOf(input.charAt(i++));
chr1 = enc1 << 2 | enc2 >> 4;
chr2 = (enc2 & 15) << 4 | enc3 >> 2;
chr3 = (enc3 & 3) << 6 | enc4;
buf.push(chr1);
if (enc3 !== 64) {
buf.push(chr2);
}
if (enc4 !== 64) {
buf.push(chr3);
}
chr1 = chr2 = chr3 = '';
enc1 = enc2 = enc3 = enc4 = '';
} while (i < input.length);
return buf;
}
};
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9yb290L1NFUlZFUi9pbWdseS1zZGstaHRtbDUvc3JjL2pzL2xpYi9iYXNlNjQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUtBLElBQU0sT0FBTyxHQUFHLG1FQUFtRSxDQUFBOztxQkFFcEU7QUFDYixRQUFNLEVBQUMsZ0JBQUMsS0FBSyxFQUFFO0FBQ2IsUUFBSSxNQUFNLEdBQUcsRUFBRTtRQUNYLElBQUksWUFBQTtRQUFFLElBQUksWUFBQTtRQUFFLElBQUksR0FBRyxFQUFFO1FBQ3JCLElBQUksWUFBQTtRQUFFLElBQUksWUFBQTtRQUFFLElBQUksWUFBQTtRQUFFLElBQUksR0FBRyxFQUFFO1FBQzNCLENBQUMsR0FBRyxDQUFDLENBQUE7O0FBRVQsT0FBRztBQUNELFVBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUNqQixVQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDakIsVUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBOztBQUVqQixVQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQTtBQUNoQixVQUFJLEdBQUcsQUFBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUEsSUFBSyxDQUFDLEdBQUssSUFBSSxJQUFJLENBQUMsQUFBQyxDQUFBO0FBQ3RDLFVBQUksR0FBRyxBQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQSxJQUFLLENBQUMsR0FBSyxJQUFJLElBQUksQ0FBQyxBQUFDLENBQUE7QUFDdkMsVUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7O0FBRWhCLFVBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2YsWUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7T0FDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN0QixZQUFJLEdBQUcsRUFBRSxDQUFBO09BQ1Y7O0FBRUQsWUFBTSxHQUFHLE1BQU0sR0FDWixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUNwQixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUNwQixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUNwQixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ3ZCLFVBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUN2QixVQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0tBQy9CLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUM7O0FBRTFCLFdBQU8sTUFBTSxDQUFBO0dBQ2Q7O0FBRUQsUUFBTSxFQUFDLGdCQUFDLEtBQUssRUFBRTtBQUNiLFFBQUksSUFBSSxZQUFBO1FBQUUsSUFBSSxZQUFBO1FBQUUsSUFBSSxHQUFHLEVBQUU7UUFDdkIsSUFBSSxZQUFBO1FBQUUsSUFBSSxZQUFBO1FBQUUsSUFBSSxZQUFBO1FBQUUsSUFBSSxHQUFHLEVBQUU7UUFDM0IsQ0FBQyxHQUFHLENBQUM7UUFDTCxHQUFHLEdBQUcsRUFBRSxDQUFBOzs7QUFHVixRQUFJLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQTtBQUN0QyxRQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDMUIsWUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsR0FDckUscUVBQXFFLEdBQ3JFLDRCQUE0QixDQUFDLENBQUE7S0FDcEM7QUFDRCxTQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQTs7QUFFaEQsT0FBRztBQUNELFVBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3pDLFVBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3pDLFVBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3pDLFVBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBOztBQUV6QyxVQUFJLEdBQUcsQUFBQyxJQUFJLElBQUksQ0FBQyxHQUFLLElBQUksSUFBSSxDQUFDLEFBQUMsQ0FBQTtBQUNoQyxVQUFJLEdBQUcsQUFBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUEsSUFBSyxDQUFDLEdBQUssSUFBSSxJQUFJLENBQUMsQUFBQyxDQUFBO0FBQ3ZDLFVBQUksR0FBRyxBQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQSxJQUFLLENBQUMsR0FBSSxJQUFJLENBQUE7O0FBRS9CLFNBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7O0FBRWQsVUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO0FBQ2YsV0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtPQUNmO0FBQ0QsVUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO0FBQ2YsV0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtPQUNmOztBQUVELFVBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUN2QixVQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0tBRS9CLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUM7O0FBRTFCLFdBQU8sR0FBRyxDQUFBO0dBQ1g7Q0FDRiIsImZpbGUiOiIvcm9vdC9TRVJWRVIvaW1nbHktc2RrLWh0bWw1L3NyYy9qcy9saWIvYmFzZTY0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBFeHRyYWN0ZWQgZnJvbSBNaW5pZnlKcGVnIChDb3B5cmlnaHQgKGMpIDIwMTQgSGlyb2FraSBNYXRvYmEsIE1JVCBMaWNlbnNlKTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9oTWF0b2JhL01pbmlmeUpwZWdcbiAqL1xuXG5jb25zdCBLRVlfU1RSID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89J1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGVuY29kZSAoaW5wdXQpIHtcbiAgICBsZXQgb3V0cHV0ID0gJycsXG4gICAgICAgIGNocjEsIGNocjIsIGNocjMgPSAnJyxcbiAgICAgICAgZW5jMSwgZW5jMiwgZW5jMywgZW5jNCA9ICcnLFxuICAgICAgICBpID0gMFxuXG4gICAgZG8ge1xuICAgICAgY2hyMSA9IGlucHV0W2krK11cbiAgICAgIGNocjIgPSBpbnB1dFtpKytdXG4gICAgICBjaHIzID0gaW5wdXRbaSsrXVxuXG4gICAgICBlbmMxID0gY2hyMSA+PiAyXG4gICAgICBlbmMyID0gKChjaHIxICYgMykgPDwgNCkgfCAoY2hyMiA+PiA0KVxuICAgICAgZW5jMyA9ICgoY2hyMiAmIDE1KSA8PCAyKSB8IChjaHIzID4+IDYpXG4gICAgICBlbmM0ID0gY2hyMyAmIDYzXG5cbiAgICAgIGlmIChpc05hTihjaHIyKSkge1xuICAgICAgICBlbmMzID0gZW5jNCA9IDY0XG4gICAgICB9IGVsc2UgaWYgKGlzTmFOKGNocjMpKSB7XG4gICAgICAgIGVuYzQgPSA2NFxuICAgICAgfVxuXG4gICAgICBvdXRwdXQgPSBvdXRwdXQgK1xuICAgICAgICAgS0VZX1NUUi5jaGFyQXQoZW5jMSkgK1xuICAgICAgICAgS0VZX1NUUi5jaGFyQXQoZW5jMikgK1xuICAgICAgICAgS0VZX1NUUi5jaGFyQXQoZW5jMykgK1xuICAgICAgICAgS0VZX1NUUi5jaGFyQXQoZW5jNClcbiAgICAgIGNocjEgPSBjaHIyID0gY2hyMyA9ICcnXG4gICAgICBlbmMxID0gZW5jMiA9IGVuYzMgPSBlbmM0ID0gJydcbiAgICB9IHdoaWxlIChpIDwgaW5wdXQubGVuZ3RoKVxuXG4gICAgcmV0dXJuIG91dHB1dFxuICB9LFxuXG4gIGRlY29kZSAoaW5wdXQpIHtcbiAgICBsZXQgY2hyMSwgY2hyMiwgY2hyMyA9ICcnLFxuICAgICAgZW5jMSwgZW5jMiwgZW5jMywgZW5jNCA9ICcnLFxuICAgICAgaSA9IDAsXG4gICAgICBidWYgPSBbXVxuXG4gICAgLy8gcmVtb3ZlIGFsbCBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBBLVosIGEteiwgMC05LCArLCAvLCBvciA9XG4gICAgdmFyIGJhc2U2NHRlc3QgPSAvW15BLVphLXowLTlcXCtcXC9cXD1dL2dcbiAgICBpZiAoYmFzZTY0dGVzdC5leGVjKGlucHV0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGVyZSB3ZXJlIGludmFsaWQgYmFzZTY0IGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0IHRleHQuXFxuJyArXG4gICAgICAgICAgICAnVmFsaWQgYmFzZTY0IGNoYXJhY3RlcnMgYXJlIEEtWiwgYS16LCAwLTksIFxcJytcXCcsIFxcJy9cXCcsYW5kIFxcJz1cXCdcXG4nICtcbiAgICAgICAgICAgICdFeHBlY3QgZXJyb3JzIGluIGRlY29kaW5nLicpXG4gICAgfVxuICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZSgvW15BLVphLXowLTlcXCtcXC9cXD1dL2csICcnKVxuXG4gICAgZG8ge1xuICAgICAgZW5jMSA9IEtFWV9TVFIuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSlcbiAgICAgIGVuYzIgPSBLRVlfU1RSLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpXG4gICAgICBlbmMzID0gS0VZX1NUUi5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKVxuICAgICAgZW5jNCA9IEtFWV9TVFIuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSlcblxuICAgICAgY2hyMSA9IChlbmMxIDw8IDIpIHwgKGVuYzIgPj4gNClcbiAgICAgIGNocjIgPSAoKGVuYzIgJiAxNSkgPDwgNCkgfCAoZW5jMyA+PiAyKVxuICAgICAgY2hyMyA9ICgoZW5jMyAmIDMpIDw8IDYpIHwgZW5jNFxuXG4gICAgICBidWYucHVzaChjaHIxKVxuXG4gICAgICBpZiAoZW5jMyAhPT0gNjQpIHtcbiAgICAgICAgYnVmLnB1c2goY2hyMilcbiAgICAgIH1cbiAgICAgIGlmIChlbmM0ICE9PSA2NCkge1xuICAgICAgICBidWYucHVzaChjaHIzKVxuICAgICAgfVxuXG4gICAgICBjaHIxID0gY2hyMiA9IGNocjMgPSAnJ1xuICAgICAgZW5jMSA9IGVuYzIgPSBlbmMzID0gZW5jNCA9ICcnXG5cbiAgICB9IHdoaWxlIChpIDwgaW5wdXQubGVuZ3RoKVxuXG4gICAgcmV0dXJuIGJ1ZlxuICB9XG59XG4iXX0= |