'a'
mh-two-thousand-and-two
2024-04-12 44d2c92345cd156a59fc327b3060292a282d2893
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
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
var toArr = require('./toArr');
 
exports = {
    encode: function(arr) {
        arr = toArr(arr);
        var ret = '';
        for (var i = 0, len = arr.length; i < len; i++) {
            ret += encode(arr[i]);
        }
        return ret;
    },
    decode: function(str) {
        var ret = [];
        var i = 0;
        var len = str.length;
        while (i < len) {
            var value = 0;
            var continuation = false;
            var shift = 0;
            do {
                var digit = charToInt[str[i++]];
                continuation = (digit & VLQ_CONTINUATION_BIT) !== 0;
                digit &= VLQ_BASE_MASK;
                value = value + (digit << shift);
                shift = shift + VLQ_BASE_SHIFT;
            } while (continuation);
            ret.push(fromVLQSigned(value));
        }
        return ret;
    }
};
var charToInt = {};
var intToChar = {};
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
for (var i = 0, len = chars.length; i < len; i++) {
    charToInt[chars[i]] = i;
    intToChar[i] = chars[i];
}
var VLQ_BASE_SHIFT = 5;
var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
var VLQ_BASE_MASK = VLQ_BASE - 1;
var VLQ_CONTINUATION_BIT = VLQ_BASE;
function encode(value) {
    var ret = '';
    value = toVLQSigned(value);
    do {
        var digit = value & VLQ_BASE_MASK;
        value >>>= VLQ_BASE_SHIFT;
        if (value > 0) {
            digit |= VLQ_CONTINUATION_BIT;
        }
        ret += intToChar[digit];
    } while (value > 0);
    return ret;
}
function toVLQSigned(value) {
    if (value < 0) {
        return (-value << 1) + 1;
    } else {
        return (value << 1) + 0;
    }
}
function fromVLQSigned(value) {
    var negate = (value & 1) === 1;
    value = value >> 1;
    return negate ? -value : value;
}
 
module.exports = exports;