secure-ls2
Version:
Secure localStorage/sessionStorage data with high level of encryption and data compression
1,173 lines (1,170 loc) • 105 kB
JavaScript
/*!
* secure-ls - v2.0.0
* URL - https://github.com/softvar/secure-ls
*
* The MIT License (MIT)
*
* Copyright (c) 2016-2024 Varun Malhotra
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*
* Dependencies used -
* 1. crypto-js - ^4.2.0
* 2. lz-string - ^1.5.0
*/
!(function (t, e) {
'object' == typeof exports && 'object' == typeof module
? (module.exports = e())
: 'function' == typeof define && define.amd
? define([], e)
: 'object' == typeof exports
? (exports.SecureLS = e())
: (t.SecureLS = e());
})(this, () =>
(() => {
var t = {
955: function (t, e, r) {
var i;
t.exports =
((i = r(21)),
r(754),
r(636),
r(506),
r(165),
(function () {
var t = i,
e = t.lib.BlockCipher,
r = t.algo,
n = [],
o = [],
s = [],
c = [],
a = [],
h = [],
l = [],
f = [],
u = [],
p = [];
!(function () {
for (var t = [], e = 0; e < 256; e++) t[e] = e < 128 ? e << 1 : (e << 1) ^ 283;
var r = 0,
i = 0;
for (e = 0; e < 256; e++) {
var d = i ^ (i << 1) ^ (i << 2) ^ (i << 3) ^ (i << 4);
(d = (d >>> 8) ^ (255 & d) ^ 99), (n[r] = d), (o[d] = r);
var y = t[r],
_ = t[y],
g = t[_],
v = (257 * t[d]) ^ (16843008 * d);
(s[r] = (v << 24) | (v >>> 8)),
(c[r] = (v << 16) | (v >>> 16)),
(a[r] = (v << 8) | (v >>> 24)),
(h[r] = v),
(v = (16843009 * g) ^ (65537 * _) ^ (257 * y) ^ (16843008 * r)),
(l[d] = (v << 24) | (v >>> 8)),
(f[d] = (v << 16) | (v >>> 16)),
(u[d] = (v << 8) | (v >>> 24)),
(p[d] = v),
r ? ((r = y ^ t[t[t[g ^ y]]]), (i ^= t[t[i]])) : (r = i = 1);
}
})();
var d = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54],
y = (r.AES = e.extend({
_doReset: function () {
if (!this._nRounds || this._keyPriorReset !== this._key) {
for (
var t = (this._keyPriorReset = this._key),
e = t.words,
r = t.sigBytes / 4,
i = 4 * ((this._nRounds = r + 6) + 1),
o = (this._keySchedule = []),
s = 0;
s < i;
s++
)
s < r
? (o[s] = e[s])
: ((h = o[s - 1]),
s % r
? r > 6 &&
s % r == 4 &&
(h =
(n[h >>> 24] << 24) |
(n[(h >>> 16) & 255] << 16) |
(n[(h >>> 8) & 255] << 8) |
n[255 & h])
: ((h =
(n[(h = (h << 8) | (h >>> 24)) >>> 24] << 24) |
(n[(h >>> 16) & 255] << 16) |
(n[(h >>> 8) & 255] << 8) |
n[255 & h]),
(h ^= d[(s / r) | 0] << 24)),
(o[s] = o[s - r] ^ h));
for (var c = (this._invKeySchedule = []), a = 0; a < i; a++) {
if (((s = i - a), a % 4)) var h = o[s];
else h = o[s - 4];
c[a] =
a < 4 || s <= 4
? h
: l[n[h >>> 24]] ^ f[n[(h >>> 16) & 255]] ^ u[n[(h >>> 8) & 255]] ^ p[n[255 & h]];
}
}
},
encryptBlock: function (t, e) {
this._doCryptBlock(t, e, this._keySchedule, s, c, a, h, n);
},
decryptBlock: function (t, e) {
var r = t[e + 1];
(t[e + 1] = t[e + 3]),
(t[e + 3] = r),
this._doCryptBlock(t, e, this._invKeySchedule, l, f, u, p, o),
(r = t[e + 1]),
(t[e + 1] = t[e + 3]),
(t[e + 3] = r);
},
_doCryptBlock: function (t, e, r, i, n, o, s, c) {
for (
var a = this._nRounds,
h = t[e] ^ r[0],
l = t[e + 1] ^ r[1],
f = t[e + 2] ^ r[2],
u = t[e + 3] ^ r[3],
p = 4,
d = 1;
d < a;
d++
) {
var y = i[h >>> 24] ^ n[(l >>> 16) & 255] ^ o[(f >>> 8) & 255] ^ s[255 & u] ^ r[p++],
_ = i[l >>> 24] ^ n[(f >>> 16) & 255] ^ o[(u >>> 8) & 255] ^ s[255 & h] ^ r[p++],
g = i[f >>> 24] ^ n[(u >>> 16) & 255] ^ o[(h >>> 8) & 255] ^ s[255 & l] ^ r[p++],
v = i[u >>> 24] ^ n[(h >>> 16) & 255] ^ o[(l >>> 8) & 255] ^ s[255 & f] ^ r[p++];
(h = y), (l = _), (f = g), (u = v);
}
(y =
((c[h >>> 24] << 24) | (c[(l >>> 16) & 255] << 16) | (c[(f >>> 8) & 255] << 8) | c[255 & u]) ^
r[p++]),
(_ =
((c[l >>> 24] << 24) | (c[(f >>> 16) & 255] << 16) | (c[(u >>> 8) & 255] << 8) | c[255 & h]) ^
r[p++]),
(g =
((c[f >>> 24] << 24) | (c[(u >>> 16) & 255] << 16) | (c[(h >>> 8) & 255] << 8) | c[255 & l]) ^
r[p++]),
(v =
((c[u >>> 24] << 24) | (c[(h >>> 16) & 255] << 16) | (c[(l >>> 8) & 255] << 8) | c[255 & f]) ^
r[p++]),
(t[e] = y),
(t[e + 1] = _),
(t[e + 2] = g),
(t[e + 3] = v);
},
keySize: 8,
}));
t.AES = e._createHelper(y);
})(),
i.AES);
},
165: function (t, e, r) {
var i, n, o, s, c, a, h, l, f, u, p, d, y, _, g, v, m, S, B;
t.exports =
((i = r(21)),
r(506),
void (
i.lib.Cipher ||
((n = i),
(o = n.lib),
(s = o.Base),
(c = o.WordArray),
(a = o.BufferedBlockAlgorithm),
(h = n.enc),
h.Utf8,
(l = h.Base64),
(f = n.algo.EvpKDF),
(u = o.Cipher =
a.extend({
cfg: s.extend(),
createEncryptor: function (t, e) {
return this.create(this._ENC_XFORM_MODE, t, e);
},
createDecryptor: function (t, e) {
return this.create(this._DEC_XFORM_MODE, t, e);
},
init: function (t, e, r) {
(this.cfg = this.cfg.extend(r)), (this._xformMode = t), (this._key = e), this.reset();
},
reset: function () {
a.reset.call(this), this._doReset();
},
process: function (t) {
return this._append(t), this._process();
},
finalize: function (t) {
return t && this._append(t), this._doFinalize();
},
keySize: 4,
ivSize: 4,
_ENC_XFORM_MODE: 1,
_DEC_XFORM_MODE: 2,
_createHelper: (function () {
function t(t) {
return 'string' == typeof t ? B : m;
}
return function (e) {
return {
encrypt: function (r, i, n) {
return t(i).encrypt(e, r, i, n);
},
decrypt: function (r, i, n) {
return t(i).decrypt(e, r, i, n);
},
};
};
})(),
})),
(o.StreamCipher = u.extend({
_doFinalize: function () {
return this._process(!0);
},
blockSize: 1,
})),
(p = n.mode = {}),
(d = o.BlockCipherMode =
s.extend({
createEncryptor: function (t, e) {
return this.Encryptor.create(t, e);
},
createDecryptor: function (t, e) {
return this.Decryptor.create(t, e);
},
init: function (t, e) {
(this._cipher = t), (this._iv = e);
},
})),
(y = p.CBC =
(function () {
var t = d.extend();
function e(t, e, r) {
var i,
n = this._iv;
n ? ((i = n), (this._iv = void 0)) : (i = this._prevBlock);
for (var o = 0; o < r; o++) t[e + o] ^= i[o];
}
return (
(t.Encryptor = t.extend({
processBlock: function (t, r) {
var i = this._cipher,
n = i.blockSize;
e.call(this, t, r, n), i.encryptBlock(t, r), (this._prevBlock = t.slice(r, r + n));
},
})),
(t.Decryptor = t.extend({
processBlock: function (t, r) {
var i = this._cipher,
n = i.blockSize,
o = t.slice(r, r + n);
i.decryptBlock(t, r), e.call(this, t, r, n), (this._prevBlock = o);
},
})),
t
);
})()),
(_ = (n.pad = {}).Pkcs7 =
{
pad: function (t, e) {
for (
var r = 4 * e, i = r - (t.sigBytes % r), n = (i << 24) | (i << 16) | (i << 8) | i, o = [], s = 0;
s < i;
s += 4
)
o.push(n);
var a = c.create(o, i);
t.concat(a);
},
unpad: function (t) {
var e = 255 & t.words[(t.sigBytes - 1) >>> 2];
t.sigBytes -= e;
},
}),
(o.BlockCipher = u.extend({
cfg: u.cfg.extend({ mode: y, padding: _ }),
reset: function () {
var t;
u.reset.call(this);
var e = this.cfg,
r = e.iv,
i = e.mode;
this._xformMode == this._ENC_XFORM_MODE
? (t = i.createEncryptor)
: ((t = i.createDecryptor), (this._minBufferSize = 1)),
this._mode && this._mode.__creator == t
? this._mode.init(this, r && r.words)
: ((this._mode = t.call(i, this, r && r.words)), (this._mode.__creator = t));
},
_doProcessBlock: function (t, e) {
this._mode.processBlock(t, e);
},
_doFinalize: function () {
var t,
e = this.cfg.padding;
return (
this._xformMode == this._ENC_XFORM_MODE
? (e.pad(this._data, this.blockSize), (t = this._process(!0)))
: ((t = this._process(!0)), e.unpad(t)),
t
);
},
blockSize: 4,
})),
(g = o.CipherParams =
s.extend({
init: function (t) {
this.mixIn(t);
},
toString: function (t) {
return (t || this.formatter).stringify(this);
},
})),
(v = (n.format = {}).OpenSSL =
{
stringify: function (t) {
var e = t.ciphertext,
r = t.salt;
return (r ? c.create([1398893684, 1701076831]).concat(r).concat(e) : e).toString(l);
},
parse: function (t) {
var e,
r = l.parse(t),
i = r.words;
return (
1398893684 == i[0] &&
1701076831 == i[1] &&
((e = c.create(i.slice(2, 4))), i.splice(0, 4), (r.sigBytes -= 16)),
g.create({ ciphertext: r, salt: e })
);
},
}),
(m = o.SerializableCipher =
s.extend({
cfg: s.extend({ format: v }),
encrypt: function (t, e, r, i) {
i = this.cfg.extend(i);
var n = t.createEncryptor(r, i),
o = n.finalize(e),
s = n.cfg;
return g.create({
ciphertext: o,
key: r,
iv: s.iv,
algorithm: t,
mode: s.mode,
padding: s.padding,
blockSize: t.blockSize,
formatter: i.format,
});
},
decrypt: function (t, e, r, i) {
return (
(i = this.cfg.extend(i)),
(e = this._parse(e, i.format)),
t.createDecryptor(r, i).finalize(e.ciphertext)
);
},
_parse: function (t, e) {
return 'string' == typeof t ? e.parse(t, this) : t;
},
})),
(S = (n.kdf = {}).OpenSSL =
{
execute: function (t, e, r, i, n) {
if ((i || (i = c.random(8)), n)) o = f.create({ keySize: e + r, hasher: n }).compute(t, i);
else var o = f.create({ keySize: e + r }).compute(t, i);
var s = c.create(o.words.slice(e), 4 * r);
return (o.sigBytes = 4 * e), g.create({ key: o, iv: s, salt: i });
},
}),
(B = o.PasswordBasedCipher =
m.extend({
cfg: m.cfg.extend({ kdf: S }),
encrypt: function (t, e, r, i) {
var n = (i = this.cfg.extend(i)).kdf.execute(r, t.keySize, t.ivSize, i.salt, i.hasher);
i.iv = n.iv;
var o = m.encrypt.call(this, t, e, n.key, i);
return o.mixIn(n), o;
},
decrypt: function (t, e, r, i) {
(i = this.cfg.extend(i)), (e = this._parse(e, i.format));
var n = i.kdf.execute(r, t.keySize, t.ivSize, e.salt, i.hasher);
return (i.iv = n.iv), m.decrypt.call(this, t, e, n.key, i);
},
})))
));
},
21: function (t, e, r) {
var i;
t.exports =
((i =
i ||
(function (t, e) {
var i;
if (
('undefined' != typeof window && window.crypto && (i = window.crypto),
'undefined' != typeof self && self.crypto && (i = self.crypto),
'undefined' != typeof globalThis && globalThis.crypto && (i = globalThis.crypto),
!i && 'undefined' != typeof window && window.msCrypto && (i = window.msCrypto),
!i && void 0 !== r.g && r.g.crypto && (i = r.g.crypto),
!i)
)
try {
i = r(477);
} catch (t) {}
var n = function () {
if (i) {
if ('function' == typeof i.getRandomValues)
try {
return i.getRandomValues(new Uint32Array(1))[0];
} catch (t) {}
if ('function' == typeof i.randomBytes)
try {
return i.randomBytes(4).readInt32LE();
} catch (t) {}
}
throw new Error('Native crypto module could not be used to get secure random number.');
},
o =
Object.create ||
(function () {
function t() {}
return function (e) {
var r;
return (t.prototype = e), (r = new t()), (t.prototype = null), r;
};
})(),
s = {},
c = (s.lib = {}),
a = (c.Base = {
extend: function (t) {
var e = o(this);
return (
t && e.mixIn(t),
(e.hasOwnProperty('init') && this.init !== e.init) ||
(e.init = function () {
e.$super.init.apply(this, arguments);
}),
(e.init.prototype = e),
(e.$super = this),
e
);
},
create: function () {
var t = this.extend();
return t.init.apply(t, arguments), t;
},
init: function () {},
mixIn: function (t) {
for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]);
t.hasOwnProperty('toString') && (this.toString = t.toString);
},
clone: function () {
return this.init.prototype.extend(this);
},
}),
h = (c.WordArray = a.extend({
init: function (t, e) {
(t = this.words = t || []), (this.sigBytes = null != e ? e : 4 * t.length);
},
toString: function (t) {
return (t || f).stringify(this);
},
concat: function (t) {
var e = this.words,
r = t.words,
i = this.sigBytes,
n = t.sigBytes;
if ((this.clamp(), i % 4))
for (var o = 0; o < n; o++) {
var s = (r[o >>> 2] >>> (24 - (o % 4) * 8)) & 255;
e[(i + o) >>> 2] |= s << (24 - ((i + o) % 4) * 8);
}
else for (var c = 0; c < n; c += 4) e[(i + c) >>> 2] = r[c >>> 2];
return (this.sigBytes += n), this;
},
clamp: function () {
var e = this.words,
r = this.sigBytes;
(e[r >>> 2] &= 4294967295 << (32 - (r % 4) * 8)), (e.length = t.ceil(r / 4));
},
clone: function () {
var t = a.clone.call(this);
return (t.words = this.words.slice(0)), t;
},
random: function (t) {
for (var e = [], r = 0; r < t; r += 4) e.push(n());
return new h.init(e, t);
},
})),
l = (s.enc = {}),
f = (l.Hex = {
stringify: function (t) {
for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n++) {
var o = (e[n >>> 2] >>> (24 - (n % 4) * 8)) & 255;
i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16));
}
return i.join('');
},
parse: function (t) {
for (var e = t.length, r = [], i = 0; i < e; i += 2)
r[i >>> 3] |= parseInt(t.substr(i, 2), 16) << (24 - (i % 8) * 4);
return new h.init(r, e / 2);
},
}),
u = (l.Latin1 = {
stringify: function (t) {
for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n++) {
var o = (e[n >>> 2] >>> (24 - (n % 4) * 8)) & 255;
i.push(String.fromCharCode(o));
}
return i.join('');
},
parse: function (t) {
for (var e = t.length, r = [], i = 0; i < e; i++)
r[i >>> 2] |= (255 & t.charCodeAt(i)) << (24 - (i % 4) * 8);
return new h.init(r, e);
},
}),
p = (l.Utf8 = {
stringify: function (t) {
try {
return decodeURIComponent(escape(u.stringify(t)));
} catch (t) {
throw new Error('Malformed UTF-8 data');
}
},
parse: function (t) {
return u.parse(unescape(encodeURIComponent(t)));
},
}),
d = (c.BufferedBlockAlgorithm = a.extend({
reset: function () {
(this._data = new h.init()), (this._nDataBytes = 0);
},
_append: function (t) {
'string' == typeof t && (t = p.parse(t)), this._data.concat(t), (this._nDataBytes += t.sigBytes);
},
_process: function (e) {
var r,
i = this._data,
n = i.words,
o = i.sigBytes,
s = this.blockSize,
c = o / (4 * s),
a = (c = e ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0)) * s,
l = t.min(4 * a, o);
if (a) {
for (var f = 0; f < a; f += s) this._doProcessBlock(n, f);
(r = n.splice(0, a)), (i.sigBytes -= l);
}
return new h.init(r, l);
},
clone: function () {
var t = a.clone.call(this);
return (t._data = this._data.clone()), t;
},
_minBufferSize: 0,
})),
y =
((c.Hasher = d.extend({
cfg: a.extend(),
init: function (t) {
(this.cfg = this.cfg.extend(t)), this.reset();
},
reset: function () {
d.reset.call(this), this._doReset();
},
update: function (t) {
return this._append(t), this._process(), this;
},
finalize: function (t) {
return t && this._append(t), this._doFinalize();
},
blockSize: 16,
_createHelper: function (t) {
return function (e, r) {
return new t.init(r).finalize(e);
};
},
_createHmacHelper: function (t) {
return function (e, r) {
return new y.HMAC.init(t, r).finalize(e);
};
},
})),
(s.algo = {}));
return s;
})(Math)),
i);
},
754: function (t, e, r) {
var i, n, o;
t.exports =
((i = r(21)),
(o = (n = i).lib.WordArray),
(n.enc.Base64 = {
stringify: function (t) {
var e = t.words,
r = t.sigBytes,
i = this._map;
t.clamp();
for (var n = [], o = 0; o < r; o += 3)
for (
var s =
(((e[o >>> 2] >>> (24 - (o % 4) * 8)) & 255) << 16) |
(((e[(o + 1) >>> 2] >>> (24 - ((o + 1) % 4) * 8)) & 255) << 8) |
((e[(o + 2) >>> 2] >>> (24 - ((o + 2) % 4) * 8)) & 255),
c = 0;
c < 4 && o + 0.75 * c < r;
c++
)
n.push(i.charAt((s >>> (6 * (3 - c))) & 63));
var a = i.charAt(64);
if (a) for (; n.length % 4; ) n.push(a);
return n.join('');
},
parse: function (t) {
var e = t.length,
r = this._map,
i = this._reverseMap;
if (!i) {
i = this._reverseMap = [];
for (var n = 0; n < r.length; n++) i[r.charCodeAt(n)] = n;
}
var s = r.charAt(64);
if (s) {
var c = t.indexOf(s);
-1 !== c && (e = c);
}
return (function (t, e, r) {
for (var i = [], n = 0, s = 0; s < e; s++)
if (s % 4) {
var c = (r[t.charCodeAt(s - 1)] << ((s % 4) * 2)) | (r[t.charCodeAt(s)] >>> (6 - (s % 4) * 2));
(i[n >>> 2] |= c << (24 - (n % 4) * 8)), n++;
}
return o.create(i, n);
})(t, e, i);
},
_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
}),
i.enc.Base64);
},
506: function (t, e, r) {
var i, n, o, s, c, a, h, l;
t.exports =
((l = r(21)),
r(471),
r(25),
(o = (n = (i = l).lib).Base),
(s = n.WordArray),
(a = (c = i.algo).MD5),
(h = c.EvpKDF =
o.extend({
cfg: o.extend({ keySize: 4, hasher: a, iterations: 1 }),
init: function (t) {
this.cfg = this.cfg.extend(t);
},
compute: function (t, e) {
for (
var r,
i = this.cfg,
n = i.hasher.create(),
o = s.create(),
c = o.words,
a = i.keySize,
h = i.iterations;
c.length < a;
) {
r && n.update(r), (r = n.update(t).finalize(e)), n.reset();
for (var l = 1; l < h; l++) (r = n.finalize(r)), n.reset();
o.concat(r);
}
return (o.sigBytes = 4 * a), o;
},
})),
(i.EvpKDF = function (t, e, r) {
return h.create(r).compute(t, e);
}),
l.EvpKDF);
},
25: function (t, e, r) {
var i, n, o;
t.exports =
((n = (i = r(21)).lib.Base),
(o = i.enc.Utf8),
void (i.algo.HMAC = n.extend({
init: function (t, e) {
(t = this._hasher = new t.init()), 'string' == typeof e && (e = o.parse(e));
var r = t.blockSize,
i = 4 * r;
e.sigBytes > i && (e = t.finalize(e)), e.clamp();
for (
var n = (this._oKey = e.clone()), s = (this._iKey = e.clone()), c = n.words, a = s.words, h = 0;
h < r;
h++
)
(c[h] ^= 1549556828), (a[h] ^= 909522486);
(n.sigBytes = s.sigBytes = i), this.reset();
},
reset: function () {
var t = this._hasher;
t.reset(), t.update(this._iKey);
},
update: function (t) {
return this._hasher.update(t), this;
},
finalize: function (t) {
var e = this._hasher,
r = e.finalize(t);
return e.reset(), e.finalize(this._oKey.clone().concat(r));
},
})));
},
636: function (t, e, r) {
var i;
t.exports =
((i = r(21)),
(function (t) {
var e = i,
r = e.lib,
n = r.WordArray,
o = r.Hasher,
s = e.algo,
c = [];
!(function () {
for (var e = 0; e < 64; e++) c[e] = (4294967296 * t.abs(t.sin(e + 1))) | 0;
})();
var a = (s.MD5 = o.extend({
_doReset: function () {
this._hash = new n.init([1732584193, 4023233417, 2562383102, 271733878]);
},
_doProcessBlock: function (t, e) {
for (var r = 0; r < 16; r++) {
var i = e + r,
n = t[i];
t[i] = (16711935 & ((n << 8) | (n >>> 24))) | (4278255360 & ((n << 24) | (n >>> 8)));
}
var o = this._hash.words,
s = t[e + 0],
a = t[e + 1],
p = t[e + 2],
d = t[e + 3],
y = t[e + 4],
_ = t[e + 5],
g = t[e + 6],
v = t[e + 7],
m = t[e + 8],
S = t[e + 9],
B = t[e + 10],
k = t[e + 11],
E = t[e + 12],
C = t[e + 13],
w = t[e + 14],
A = t[e + 15],
x = o[0],
b = o[1],
T = o[2],
D = o[3];
(x = h(x, b, T, D, s, 7, c[0])),
(D = h(D, x, b, T, a, 12, c[1])),
(T = h(T, D, x, b, p, 17, c[2])),
(b = h(b, T, D, x, d, 22, c[3])),
(x = h(x, b, T, D, y, 7, c[4])),
(D = h(D, x, b, T, _, 12, c[5])),
(T = h(T, D, x, b, g, 17, c[6])),
(b = h(b, T, D, x, v, 22, c[7])),
(x = h(x, b, T, D, m, 7, c[8])),
(D = h(D, x, b, T, S, 12, c[9])),
(T = h(T, D, x, b, B, 17, c[10])),
(b = h(b, T, D, x, k, 22, c[11])),
(x = h(x, b, T, D, E, 7, c[12])),
(D = h(D, x, b, T, C, 12, c[13])),
(T = h(T, D, x, b, w, 17, c[14])),
(x = l(x, (b = h(b, T, D, x, A, 22, c[15])), T, D, a, 5, c[16])),
(D = l(D, x, b, T, g, 9, c[17])),
(T = l(T, D, x, b, k, 14, c[18])),
(b = l(b, T, D, x, s, 20, c[19])),
(x = l(x, b, T, D, _, 5, c[20])),
(D = l(D, x, b, T, B, 9, c[21])),
(T = l(T, D, x, b, A, 14, c[22])),
(b = l(b, T, D, x, y, 20, c[23])),
(x = l(x, b, T, D, S, 5, c[24])),
(D = l(D, x, b, T, w, 9, c[25])),
(T = l(T, D, x, b, d, 14, c[26])),
(b = l(b, T, D, x, m, 20, c[27])),
(x = l(x, b, T, D, C, 5, c[28])),
(D = l(D, x, b, T, p, 9, c[29])),
(T = l(T, D, x, b, v, 14, c[30])),
(x = f(x, (b = l(b, T, D, x, E, 20, c[31])), T, D, _, 4, c[32])),
(D = f(D, x, b, T, m, 11, c[33])),
(T = f(T, D, x, b, k, 16, c[34])),
(b = f(b, T, D, x, w, 23, c[35])),
(x = f(x, b, T, D, a, 4, c[36])),
(D = f(D, x, b, T, y, 11, c[37])),
(T = f(T, D, x, b, v, 16, c[38])),
(b = f(b, T, D, x, B, 23, c[39])),
(x = f(x, b, T, D, C, 4, c[40])),
(D = f(D, x, b, T, s, 11, c[41])),
(T = f(T, D, x, b, d, 16, c[42])),
(b = f(b, T, D, x, g, 23, c[43])),
(x = f(x, b, T, D, S, 4, c[44])),
(D = f(D, x, b, T, E, 11, c[45])),
(T = f(T, D, x, b, A, 16, c[46])),
(x = u(x, (b = f(b, T, D, x, p, 23, c[47])), T, D, s, 6, c[48])),
(D = u(D, x, b, T, v, 10, c[49])),
(T = u(T, D, x, b, w, 15, c[50])),
(b = u(b, T, D, x, _, 21, c[51])),
(x = u(x, b, T, D, E, 6, c[52])),
(D = u(D, x, b, T, d, 10, c[53])),
(T = u(T, D, x, b, B, 15, c[54])),
(b = u(b, T, D, x, a, 21, c[55])),
(x = u(x, b, T, D, m, 6, c[56])),
(D = u(D, x, b, T, A, 10, c[57])),
(T = u(T, D, x, b, g, 15, c[58])),
(b = u(b, T, D, x, C, 21, c[59])),
(x = u(x, b, T, D, y, 6, c[60])),
(D = u(D, x, b, T, k, 10, c[61])),
(T = u(T, D, x, b, p, 15, c[62])),
(b = u(b, T, D, x, S, 21, c[63])),
(o[0] = (o[0] + x) | 0),
(o[1] = (o[1] + b) | 0),
(o[2] = (o[2] + T) | 0),
(o[3] = (o[3] + D) | 0);
},
_doFinalize: function () {
var e = this._data,
r = e.words,
i = 8 * this._nDataBytes,
n = 8 * e.sigBytes;
r[n >>> 5] |= 128 << (24 - (n % 32));
var o = t.floor(i / 4294967296),
s = i;
(r[15 + (((n + 64) >>> 9) << 4)] =
(16711935 & ((o << 8) | (o >>> 24))) | (4278255360 & ((o << 24) | (o >>> 8)))),
(r[14 + (((n + 64) >>> 9) << 4)] =
(16711935 & ((s << 8) | (s >>> 24))) | (4278255360 & ((s << 24) | (s >>> 8)))),
(e.sigBytes = 4 * (r.length + 1)),
this._process();
for (var c = this._hash, a = c.words, h = 0; h < 4; h++) {
var l = a[h];
a[h] = (16711935 & ((l << 8) | (l >>> 24))) | (4278255360 & ((l << 24) | (l >>> 8)));
}
return c;
},
clone: function () {
var t = o.clone.call(this);
return (t._hash = this._hash.clone()), t;
},
}));
function h(t, e, r, i, n, o, s) {
var c = t + ((e & r) | (~e & i)) + n + s;
return ((c << o) | (c >>> (32 - o))) + e;
}
function l(t, e, r, i, n, o, s) {
var c = t + ((e & i) | (r & ~i)) + n + s;
return ((c << o) | (c >>> (32 - o))) + e;
}
function f(t, e, r, i, n, o, s) {
var c = t + (e ^ r ^ i) + n + s;
return ((c << o) | (c >>> (32 - o))) + e;
}
function u(t, e, r, i, n, o, s) {
var c = t + (r ^ (e | ~i)) + n + s;
return ((c << o) | (c >>> (32 - o))) + e;
}
(e.MD5 = o._createHelper(a)), (e.HmacMD5 = o._createHmacHelper(a));
})(Math),
i.MD5);
},
19: function (t, e, r) {
var i, n, o, s, c, a, h, l, f;
t.exports =
((f = r(21)),
r(9),
r(25),
(o = (n = (i = f).lib).Base),
(s = n.WordArray),
(a = (c = i.algo).SHA256),
(h = c.HMAC),
(l = c.PBKDF2 =
o.extend({
cfg: o.extend({ keySize: 4, hasher: a, iterations: 25e4 }),
init: function (t) {
this.cfg = this.cfg.extend(t);
},
compute: function (t, e) {
for (
var r = this.cfg,
i = h.create(r.hasher, t),
n = s.create(),
o = s.create([1]),
c = n.words,
a = o.words,
l = r.keySize,
f = r.iterations;
c.length < l;
) {
var u = i.update(e).finalize(o);
i.reset();
for (var p = u.words, d = p.length, y = u, _ = 1; _ < f; _++) {
(y = i.finalize(y)), i.reset();
for (var g = y.words, v = 0; v < d; v++) p[v] ^= g[v];
}
n.concat(u), a[0]++;
}
return (n.sigBytes = 4 * l), n;
},
})),
(i.PBKDF2 = function (t, e, r) {
return l.create(r).compute(t, e);
}),
f.PBKDF2);
},
298: function (t, e, r) {
var i;
t.exports =
((i = r(21)),
r(754),
r(636),
r(506),
r(165),
(function () {
var t = i,
e = t.lib.StreamCipher,
r = t.algo,
n = [],
o = [],
s = [],
c = (r.Rabbit = e.extend({
_doReset: function () {
for (var t = this._key.words, e = this.cfg.iv, r = 0; r < 4; r++)
t[r] = (16711935 & ((t[r] << 8) | (t[r] >>> 24))) | (4278255360 & ((t[r] << 24) | (t[r] >>> 8)));
var i = (this._X = [
t[0],
(t[3] << 16) | (t[2] >>> 16),
t[1],
(t[0] << 16) | (t[3] >>> 16),
t[2],
(t[1] << 16) | (t[0] >>> 16),
t[3],
(t[2] << 16) | (t[1] >>> 16),
]),
n = (this._C = [
(t[2] << 16) | (t[2] >>> 16),
(4294901760 & t[0]) | (65535 & t[1]),
(t[3] << 16) | (t[3] >>> 16),
(4294901760 & t[1]) | (65535 & t[2]),
(t[0] << 16) | (t[0] >>> 16),
(4294901760 & t[2]) | (65535 & t[3]),
(t[1] << 16) | (t[1] >>> 16),
(4294901760 & t[3]) | (65535 & t[0]),
]);
for (this._b = 0, r = 0; r < 4; r++) a.call(this);
for (r = 0; r < 8; r++) n[r] ^= i[(r + 4) & 7];
if (e) {
var o = e.words,
s = o[0],
c = o[1],
h = (16711935 & ((s << 8) | (s >>> 24))) | (4278255360 & ((s << 24) | (s >>> 8))),
l = (16711935 & ((c << 8) | (c >>> 24))) | (4278255360 & ((c << 24) | (c >>> 8))),
f = (h >>> 16) | (4294901760 & l),
u = (l << 16) | (65535 & h);
for (
n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u, r = 0;
r < 4;
r++
)
a.call(this);
}
},
_doProcessBlock: function (t, e) {
var r = this._X;
a.call(this),
(n[0] = r[0] ^ (r[5] >>> 16) ^ (r[3] << 16)),
(n[1] = r[2] ^ (r[7] >>> 16) ^ (r[5] << 16)),
(n[2] = r[4] ^ (r[1] >>> 16) ^ (r[7] << 16)),
(n[3] = r[6] ^ (r[3] >>> 16) ^ (r[1] << 16));
for (var i = 0; i < 4; i++)
(n[i] =
(16711935 & ((n[i] << 8) | (n[i] >>> 24))) | (4278255360 & ((n[i] << 24) | (n[i] >>> 8)))),
(t[e + i] ^= n[i]);
},
blockSize: 4,
ivSize: 2,
}));
function a() {
for (var t = this._X, e = this._C, r = 0; r < 8; r++) o[r] = e[r];
for (
e[0] = (e[0] + 1295307597 + this._b) | 0,
e[1] = (e[1] + 3545052371 + (e[0] >>> 0 < o[0] >>> 0 ? 1 : 0)) | 0,
e[2] = (e[2] + 886263092 + (e[1] >>> 0 < o[1] >>> 0 ? 1 : 0)) | 0,
e[3] = (e[3] + 1295307597 + (e[2] >>> 0 < o[2] >>> 0 ? 1 : 0)) | 0,
e[4] = (e[4] + 3545052371 + (e[3] >>> 0 < o[3] >>> 0 ? 1 : 0)) | 0,
e[5] = (e[5] + 886263092 + (e[4] >>> 0 < o[4] >>> 0 ? 1 : 0)) | 0,
e[6] = (e[6] + 1295307597 + (e[5] >>> 0 < o[5] >>> 0 ? 1 : 0)) | 0,
e[7] = (e[7] + 3545052371 + (e[6] >>> 0 < o[6] >>> 0 ? 1 : 0)) | 0,
this._b = e[7] >>> 0 < o[7] >>> 0 ? 1 : 0,
r = 0;
r < 8;
r++
) {
var i = t[r] + e[r],
n = 65535 & i,
c = i >>> 16,
a = ((((n * n) >>> 17) + n * c) >>> 15) + c * c,
h = (((4294901760 & i) * i) | 0) + (((65535 & i) * i) | 0);
s[r] = a ^ h;
}
(t[0] = (s[0] + ((s[7] << 16) | (s[7] >>> 16)) + ((s[6] << 16) | (s[6] >>> 16))) | 0),
(t[1] = (s[1] + ((s[0] << 8) | (s[0] >>> 24)) + s[7]) | 0),
(t[2] = (s[2] + ((s[1] << 16) | (s[1] >>> 16)) + ((s[0] << 16) | (s[0] >>> 16))) | 0),
(t[3] = (s[3] + ((s[2] << 8) | (s[2] >>> 24)) + s[1]) | 0),
(t[4] = (s[4] + ((s[3] << 16) | (s[3] >>> 16)) + ((s[2] << 16) | (s[2] >>> 16))) | 0),
(t[5] = (s[5] + ((s[4] << 8) | (s[4] >>> 24)) + s[3]) | 0),
(t[6] = (s[6] + ((s[5] << 16) | (s[5] >>> 16)) + ((s[4] << 16) | (s[4] >>> 16))) | 0),
(t[7] = (s[7] + ((s[6] << 8) | (s[6] >>> 24)) + s[5]) | 0);
}
t.Rabbit = e._createHelper(c);
})(),
i.Rabbit);
},
193: function (t, e, r) {
var i;
t.exports =
((i = r(21)),
r(754),
r(636),
r(506),
r(165),
(function () {
var t = i,
e = t.lib.StreamCipher,
r = t.algo,
n = (r.RC4 = e.extend({
_doReset: function () {
for (var t = this._key, e = t.words, r = t.sigBytes, i = (this._S = []), n = 0; n < 256; n++)
i[n] = n;
n = 0;
for (var o = 0; n < 256; n++) {
var s = n % r,
c = (e[s >>> 2] >>> (24 - (s % 4) * 8)) & 255;
o = (o + i[n] + c) % 256;
var a = i[n];
(i[n] = i[o]), (i[o] = a);
}
this._i = this._j = 0;
},
_doProcessBlock: function (t, e) {
t[e] ^= o.call(this);
},
keySize: 8,
ivSize: 0,
}));
function o() {
for (var t = this._S, e = this._i, r = this._j, i = 0, n = 0; n < 4; n++) {
r = (r + t[(e = (e + 1) % 256)]) % 256;
var o = t[e];
(t[e] = t[r]), (t[r] = o), (i |= t[(t[e] + t[r]) % 256] << (24 - 8 * n));
}
return (this._i = e), (this._j = r), i;
}
t.RC4 = e._createHelper(n);
var s = (r.RC4Drop = n.extend({
cfg: n.cfg.extend({ drop: 192 }),
_doReset: function () {
n._doReset.call(this);
for (var t = this.cfg.drop; t > 0; t--) o.call(this);
},
}));
t.RC4Drop = e._createHelper(s);
})(),
i.RC4);
},
471: function (t, e, r) {
var i, n, o, s, c, a, h, l;
t.exports =
((n = (i = l = r(21)).lib),
(o = n.WordArray),
(s = n.Hasher),
(c = i.algo),
(a = []),
(h = c.SHA1 =
s.extend({
_doReset: function () {
this._hash = new o.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]);
},
_doProcessBlock: function (t, e) {
for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], h = 0; h < 80; h++) {
if (h < 16) a[h] = 0 | t[e + h];
else {
var l = a[h - 3] ^ a[h - 8] ^ a[h - 14] ^ a[h - 16];
a[h] = (l << 1) | (l >>> 31);
}
var f = ((i << 5) | (i >>> 27)) + c + a[h];
(f +=
h < 20
? 1518500249 + ((n & o) | (~n & s))
: h < 40
? 1859775393 + (n ^ o ^ s)
: h < 60
? ((n & o) | (n & s) | (o & s)) - 1894007588
: (n ^ o ^ s) - 899497514),
(c = s),
(s = o),
(o = (n << 30) | (n >>> 2)),
(n = i),
(i = f);
}
(r[0] = (r[0] + i) | 0),
(r[1] = (r[1] + n) | 0),
(r[2] = (r[2] + o) | 0),
(r[3] = (r[3] + s) | 0),
(r[4] = (r[4] + c) | 0);
},
_doFinalize: function () {
var t = this._data,
e = t.words,
r = 8 * this._nDataBytes,
i = 8 * t.sigBytes;
return (
(e[i >>> 5] |= 128 << (24 - (i % 32))),
(e[14 + (((i + 64) >>> 9) << 4)] = Math.floor(r / 4294967296)),
(e[15 + (((i + 64) >>> 9) << 4)] = r),
(t.sigBytes = 4 * e.length),
this._process(),
this._hash
);
},
clone: function () {
var t = s.clone.call(this);
return (t._hash = this._hash.clone()), t;
},
})),
(i.SHA1 = s._createHelper(h)),
(i.HmacSHA1 = s._createHmacHelper(h)),
l.SHA1);
},
9: function (t, e, r) {
var i;