Skip to content

Instantly share code, notes, and snippets.

@expertsultan
Created November 21, 2022 14:57
Show Gist options
  • Save expertsultan/eea5ebc059f2600dca9857ff1d36a0b3 to your computer and use it in GitHub Desktop.
Save expertsultan/eea5ebc059f2600dca9857ff1d36a0b3 to your computer and use it in GitHub Desktop.
Netflix Atmos, 5.1 at highest bitrate
This file has been truncated, but you can view the full file.
function a000() {}
a000.w9P = function() {
return typeof a000.A9P.Z9P === 'function' ? a000.A9P.Z9P.apply(a000.A9P, arguments) : a000.A9P.Z9P;
};
a000.C9P = function() {
return typeof a000.A9P.Z9P === 'function' ? a000.A9P.Z9P.apply(a000.A9P, arguments) : a000.A9P.Z9P;
};
a000.O9P = function() {
return typeof a000.A9P.m9P === 'function' ? a000.A9P.m9P.apply(a000.A9P, arguments) : a000.A9P.m9P;
};
a000.u9P = function() {
return typeof a000.A9P.m9P === 'function' ? a000.A9P.m9P.apply(a000.A9P, arguments) : a000.A9P.m9P;
};
a000.A9P = (function(x9P) {
return {
Z9P: function() {
var p9P,
e9P = arguments;
switch (x9P) {
case 9:
p9P = e9P[1] + e9P[0] + e9P[2] + e9P[3] + e9P[4];
break;
case 8:
p9P = void e9P[0] !== e9P[1];
break;
case 7:
p9P = e9P[0] + e9P[1];
break;
case 22:
p9P = e9P[0] >= e9P[1];
break;
case 5:
p9P = e9P[1] < e9P[0];
break;
case 1:
p9P = e9P[0] / e9P[1];
break;
case 11:
p9P = e9P[1] - e9P[0] + e9P[2];
break;
case 0:
p9P = e9P[0] - e9P[1];
break;
case 23:
p9P = e9P[1] === e9P[0];
break;
case 18:
p9P = (e9P[1] - e9P[3]) / e9P[0] + e9P[2];
break;
case 6:
p9P = (e9P[0] - e9P[1]) * e9P[2];
break;
case 4:
p9P = e9P[2] / e9P[1] / e9P[0];
break;
case 15:
p9P = (e9P[1] / e9P[2] | e9P[0]) * e9P[3];
break;
case 13:
p9P = e9P[0] * e9P[1];
break;
case 17:
p9P = (e9P[2] + e9P[1]) * e9P[3] - e9P[0];
break;
case 3:
p9P = e9P[0] * -e9P[1] / e9P[2] + e9P[3];
break;
case 14:
p9P = e9P[2] / e9P[1] | e9P[0];
break;
case 20:
p9P = e9P[1] * e9P[4] - e9P[3] + e9P[2] + e9P[0];
break;
case 2:
p9P = e9P[0] * e9P[2] / e9P[1];
break;
case 12:
p9P = (e9P[3] - e9P[1]) * -e9P[2] / e9P[0];
break;
case 16:
p9P = e9P[2] + e9P[0] / e9P[3] * e9P[1];
break;
case 21:
p9P = e9P[2] * (e9P[1] + e9P[0]) / e9P[3];
break;
case 19:
p9P = (e9P[0] + e9P[3]) * e9P[1] / e9P[2];
break;
case 10:
p9P = e9P[0] + e9P[1] + e9P[2];
break;
}
return p9P;
},
m9P: function(F9P) {
x9P = F9P;
}
};
})();
(function() {
(function(mb, zb) {
var jc,
tc,
Nb,
cd,
Eb,
Gb,
Ub,
ce,
de,
Lb,
Kb,
Cc,
ee,
dd,
fe,
ge,
wd,
Ea,
Ab,
Qc,
he,
xd,
cb,
tb,
Db,
kc,
cc,
Rb,
vb,
Vb,
Mb,
Sc,
Hb,
uc,
Jb,
Wb,
ed,
lc,
hc,
ic,
fd,
yd,
ie,
vc,
wc,
Ec,
zd,
Tc,
mc,
gd,
Bc,
Ad,
je,
Jc,
Bd,
Cd,
Dd,
Ed,
nc,
Fd,
Gd,
Hd,
Lc,
oc,
pc,
Mc,
hd,
id,
jd,
fc,
jf,
Ob,
Dc,
ke,
kd,
qc,
le,
kf,
rc,
me,
lf,
ld,
ne,
mf,
Pc,
oe,
hf,
nf,
Id,
md,
of,
pf,
$d,
qf,
ae,
pe,
dc,
Uc,
qe,
Vc,
re,
gc,
se,
te,
ue,
ve,
sf,
be,
we,
vd,
xe,
rf,
ye,
Jd,
ze,
Ae,
Be,
Kd,
Ac,
De,
Ce,
tf,
Xc,
Ee,
Md,
Yc,
Fe,
Ld,
Ge,
He,
Nd,
Je,
Ke,
qd,
Fc,
Nc,
Gc,
Le,
Me,
Ne,
Oe,
Pe,
Qe,
rd,
uf,
Re,
Se,
Pd,
Te,
bc,
Wc,
Kc,
nd,
xc,
sc,
od,
yc,
Rc,
Ie,
Ue,
Zc,
Ve,
vf,
$c,
We,
wf,
xf,
Xe,
Od,
pd,
Ye,
zf,
yf,
Oc,
bd,
Af,
Zd,
Bf,
Cf;
function Xb(fb, db) {
if (!db || "utf-8" === db)
return sd(fb);
throw Error("unsupported encoding");
}
function Yb(fb, db) {
if (!db || "utf-8" === db)
return td(fb);
throw Error("unsupported encoding");
}
function sd(fb) {
for (var db = 0, bb, Ya = fb.length, ib = ""; db < Ya;) {
bb = fb[db++];
if (bb & 128)
if (192 === (bb & 224))
bb = ((bb & 31) << 6) + (fb[db++] & 63);
else if (224 === (bb & 240))
bb = ((bb & 15) << 12) + ((fb[db++] & 63) << 6) + (fb[db++] & 63);
else
throw Error("unsupported character");
ib += String.fromCharCode(bb);
}
return ib;
}
function td(fb) {
var db,
bb,
Ya,
ib,
rb;
db = fb.length;
bb = 0;
ib = 0;
for (Ya = db; Ya--;) {
rb = fb.charCodeAt(Ya);
128 > rb ? bb++ : bb = 2048 > rb ? bb + 2 : bb + 3;
}
bb = new Uint8Array(bb);
for (Ya = 0; Ya < db; Ya++) {
rb = fb.charCodeAt(Ya);
128 > rb ? bb[ib++] = rb : (2048 > rb ? bb[ib++] = 192 | rb >>> 6 : (bb[ib++] = 224 | rb >>> 12, bb[ib++] = 128 | rb >>> 6 & 63), bb[ib++] = 128 | rb & 63);
}
return bb;
}
function Zb(fb, db) {
if (fb === db)
return !0;
if (!fb || !db || fb.length != db.length)
return !1;
for (var bb = 0; bb < fb.length; ++bb) {
if (fb[bb] != db[bb])
return !1;
}
return !0;
}
function $b(fb) {
var Ya;
if (!(fb && fb.constructor == Uint8Array || Array.isArray(fb)))
throw new TypeError("Cannot compute the hash code of " + fb);
for (var db = 1, bb = 0; bb < fb.length; ++bb) {
Ya = fb[bb];
if ("number" !== typeof Ya)
throw new TypeError("Cannot compute the hash code over non-numeric elements: " + Ya);
db = 31 * db + Ya & 4294967295;
}
return db;
}
function Ud(fb, db) {
var gb;
if (fb === db)
return !0;
if (!fb || !db)
return !1;
db instanceof Array || (db = [db]);
for (var bb = 0; bb < db.length; ++bb) {
for (var Ya = db[bb], ib = !1, rb = 0; rb < fb.length; ++rb) {
gb = fb[rb];
if (Ya.equals && "function" === typeof Ya.equals && Ya.equals(gb) || Ya == gb) {
ib = !0;
break;
}
}
if (!ib)
return !1;
}
return !0;
}
function Vd(fb, db) {
return Ud(fb, db) && (fb.length == db.length || Ud(db, fb));
}
function La(fb, db, bb) {
var Ya,
ib;
bb && (Ya = bb);
if ("object" !== typeof fb || "function" !== typeof fb.result || "function" !== typeof fb.error)
throw new TypeError("callback must be an object with function properties 'result' and 'error'.");
try {
ib = db.call(Ya, fb);
ib !== zb && fb.result(ib);
} catch (rb) {
try {
fb.error(rb);
} catch (gb) {}
}
}
function ab(fb, db, bb) {
if ("object" !== typeof fb || "function" !== typeof fb.timeout)
throw new TypeError("callback must be an object with function properties 'result', 'timeout', and 'error'.");
La(fb, db, bb);
}
function X(fb, db, bb) {
1E5 > fb && (fb = 1E5 + fb);
Object.defineProperties(this, {
internalCode: {
value: fb,
writable: !1,
configurable: !1
},
responseCode: {
value: db,
writable: !1,
configurable: !1
},
message: {
value: bb,
writable: !1,
configurable: !1
}
});
}
function ud(fb) {
switch (fb) {
case Ob.PSK:
case Ob.MGK:
return !0;
default:
return !1;
}
}
function Wd(fb) {
switch (fb) {
case Ob.PSK:
case Ob.MGK:
case Ob.X509:
case Ob.RSA:
case Ob.NPTICKET:
case Ob.ECC:
return !0;
default:
return !1;
}
}
function df(fb) {
return fb.toJSON();
}
function Xd(fb, db) {
bd ? db.result(bd) : Promise.resolve().then(function() {
return Jb.getKeyByName(fb);
}).catch(function() {
return Jb.generateKey({
name: fb
}, !1, ["wrapKey", "unwrapKey"]);
}).then(function(bb) {
bd = bb;
db.result(bd);
}).catch(function(bb) {
db.error(new cb(X.INTERNAL_EXCEPTION, "Unable to get system key"));
});
}
function Yd(fb, db) {
var bb,
Ya;
bb = db.masterToken;
Ya = db.userIdToken;
db = db.serviceTokens;
return {
NccpMethod: fb.method,
UserId: fb.userId,
UT: Ya && Ya.serialNumber,
MT: bb && bb.serialNumber + ":" + bb.sequenceNumber,
STCount: db && db.length
};
}
function ef(fb) {
return fb.uniqueKey();
}
function ff(fb, db, bb, Ya, ib) {
var Ma;
function rb(ta, ma) {
ta.errorCode === Ea.ENTITY_REAUTH || ta.errorCode === Ea.ENTITYDATA_REAUTH ? (Ya.clearCryptoContexts(), Ia()) : ta.errorCode !== Ea.USER_REAUTH && ta.errorCode !== Ea.USERDATA_REAUTH || gb(ma);
}
function gb(ta) {
if (ta = Ya.getUserIdToken(ta))
(Ya.removeUserIdToken(ta),
Ia());
}
function Aa(ta, ma, fa) {
var ba;
ba = [];
(function Z() {
ta.read(-1, ma, {
result: function(ea) {
La(fa, function() {
var aa,
ja,
ua,
sa,
la;
if (ea)
(ba.push(ea),
Z());
else
switch (ba.length) {
case 0:
return new Uint8Array(0);
case 1:
return ba[0];
default:
(ua = ba.length,
sa = 0);
for (ja = aa = 0; ja < ua; ja++) {
aa += ba[ja].length;
}
aa = new Uint8Array(aa);
for (ja = 0; ja < ua; ja++) {
la = ba[ja];
aa.set(la, sa);
sa += la.length;
}
return aa;
}
});
},
timeout: function() {
fa.timeout();
},
error: function(ea) {
fa.error(ea);
}
});
})();
}
function Ia() {
Ya.getStoreState({
result: function(ta) {
for (var ma = Ma.slice(), fa = 0; fa < ma.length; fa++) {
ma[fa]({
storeState: ta
});
}
},
timeout: function() {
fb.error("Timeout getting store state", "" + e);
},
error: function(ta) {
fb.error("Error getting store state", "" + ta);
}
});
}
Ma = [];
this.addEventHandler = function(ta, ma) {
switch (ta) {
case "shouldpersist":
Ma.push(ma);
}
};
this.send = function(ta) {
return new Promise(function(ma, fa) {
var ba,
Y,
Z;
ba = ta.timeout;
Y = new Zd(fb, bb, ta, Ya.getKeyRequestData());
Z = new $d(ta.url);
fb.trace("Sending MSL request");
db.request(bb, Y, Z, ba, {
result: function(ea) {
var aa;
fb.trace("Received MSL response", {
Method: ta.method
});
if (ea) {
ta.allowTokenRefresh && Ia();
aa = ea.getErrorHeader();
aa ? (rb(aa, ta.profileGuid || ta.userId), fa({
success: !1,
error: aa
})) : Aa(ea, ba, {
result: function(ja) {
ma({
success: !0,
body: Xb(ja)
});
},
timeout: function() {
fa({
success: !1,
subCode: ib.MSL_READ_TIMEOUT
});
},
error: function(ja) {
fa({
success: !1,
error: ja
});
}
});
} else
fa({
success: !1,
error: new cb(X.INTERNAL_EXCEPTION, "Null response stream"),
description: "Null response stream"
});
},
timeout: function() {
fa({
success: !1,
subCode: ib.MSL_REQUEST_TIMEOUT
});
},
error: function(ea) {
fa({
success: !1,
error: ea
});
}
});
});
};
this.hasUserIdToken = function(ta) {
return !!Ya.getUserIdToken(ta);
};
this.getUserIdTokenKeys = function() {
return Ya.getUserIdTokenKeys();
};
this.removeUserIdToken = gb;
this.clearUserIdTokens = function() {
Ya.clearUserIdTokens();
Ia();
};
this.isErrorReauth = function(ta) {
return ta && ta.errorCode == Ea.USERDATA_REAUTH;
};
this.isErrorHeader = function(ta) {
return ta instanceof Ac;
};
this.getErrorCode = function(ta) {
return ta && ta.errorCode;
};
this.getStateForMdx = function(ta) {
var ma,
fa;
ma = Ya.getMasterToken();
ta = Ya.getUserIdToken(ta);
fa = Ya.getCryptoContext(ma);
return {
masterToken: ma,
userIdToken: ta,
cryptoContext: fa
};
};
this.buildPlayDataRequest = function(ta, ma) {
var fa;
fa = new ae();
db.request(bb, new Zd(fb, bb, ta), fa, ta.timeout, {
result: function() {
ma.result(fa.getRequest());
},
error: function() {
ma.result(fa.getRequest());
},
timeout: function() {
ma.timeout();
}
});
};
this.rekeyUserIdToken = function(ta, ma) {
Ya.rekeyUserIdToken(ta, ma);
Ia();
};
this.getServiceTokens = function(ta) {
var ma;
ma = Ya.getMasterToken();
(ta = Ya.getUserIdToken(ta)) && !ta.isBoundTo(ma) && (ta = zb);
return Ya.getServiceTokens(ma, ta);
};
this.removeServiceToken = function(ta) {
var ma;
ma = Ya.getMasterToken();
Ya.getServiceTokens(ma).find(function(fa) {
return fa.name === ta;
}) && (Ya.removeServiceTokens(ta, ma), Ia());
};
}
function gf(fb, db, bb) {
var rb;
function Ya() {
return Promise.resolve().then(function() {
return Jb.generateKey(db, !1, ["wrapKey", "unwrapKey"]);
}).then(function(gb) {
return ib(gb.publicKey, gb.privateKey);
});
}
function ib(gb, Aa) {
return Promise.all([new Promise(function(Ia, Ma) {
Bc(gb, {
result: Ia,
error: function(ta) {
Ma(new cb(X.INTERNAL_EXCEPTION, "Unable to create keyx public key", ta));
}
});
}), new Promise(function(Ia, Ma) {
Jc(Aa, {
result: Ia,
error: function(ta) {
Ma(new cb(X.INTERNAL_EXCEPTION, "Unable to create keyx private key", ta));
}
});
})]).then(function(Ia) {
Ia = new vd("rsaKeypairId", bb, Ia[0], Ia[1]);
rb && (Ia.storeData = {
keyxPublicKey: gb,
keyxPrivateKey: Aa
});
return Ia;
});
}
rb = !fb.systemKeyWrapFormat;
return Promise.resolve().then(function() {
var gb,
Aa;
gb = fb.storeState;
Aa = gb && gb.keyxPublicKey;
gb = gb && gb.keyxPrivateKey;
return rb && Aa && gb ? ib(Aa, gb) : Ya();
}).then(function(gb) {
var Aa,
Ia,
Ma;
Aa = {};
Aa[Ob.NONE] = new hf();
Ia = new Pc(fb.esn);
Ma = [new be()];
return {
entityAuthFactories: Aa,
entityAuthData: Ia,
keyExchangeFactories: Ma,
keyRequestData: gb,
createKeyRequestData: rb ? Ya : zb
};
});
}
tc = mb.nfCrypto || mb.msCrypto || mb.webkitCrypto || mb.crypto;
Nb = tc && (tc.webkitSubtle || tc.subtle);
cd = mb.nfCryptokeys || mb.msCryptokeys || mb.webkitCryptokeys || mb.cryptokeys;
(function(fb) {
var db,
bb;
db = (function() {
function Ya(ib, rb) {
ib instanceof db ? (this.abv = ib.abv, this.position = ib.position) : (this.abv = ib, this.position = rb || 0);
}
Ya.prototype = {
readByte: function() {
return this.abv[this.position++];
},
writeByte: function(ib) {
this.abv[this.position++] = ib;
},
peekByte: function(ib) {
return this.abv[ib];
},
copyBytes: function(ib, rb, gb) {
var Aa;
Aa = new Uint8Array(this.abv.buffer, this.position, gb);
ib = new Uint8Array(ib.buffer, rb, gb);
Aa.set(ib);
this.position += gb;
},
seek: function(ib) {
this.position = ib;
},
skip: function(ib) {
this.position += ib;
},
getPosition: function() {
return this.position;
},
setPosition: function(ib) {
this.position = ib;
},
getRemaining: function() {
return this.abv.length - this.position;
},
getLength: function() {
return this.abv.length;
},
isEndOfStream: function() {
return this.position >= this.abv.length;
},
show: function() {
return "AbvStream: pos " + (this.getPosition().toString() + " of " + this.getLength().toString());
}
};
return Ya;
})();
bb = {};
(function() {
var ea,
aa,
ja,
ua,
sa,
la,
qa,
ya,
na;
function Ya(da, ha) {
var ka;
ha.writeByte(da.tagClass << 6 | da.constructed << 5 | da.tag);
ka = da.payloadLen;
if (128 > ka)
ha.writeByte(ka);
else {
for (var va = ka, Ra = 0; va;) {
++Ra;
va >>= 8;
}
ha.writeByte(128 | Ra);
for (va = 0; va < Ra; ++va) {
ha.writeByte(ka >> 8 * (Ra - va - 1) & 255);
}
}
if (da.child)
for ((da.tag == ea.BIT_STRING && ha.writeByte(0), da = da._child); da;) {
if (!Ya(da, ha))
return !1;
da = da.next;
}
else
switch (da.tag) {
case ea.INTEGER:
da.backingStore[da.dataIdx] >> 7 && ha.writeByte(0);
ha.copyBytes(da.backingStore, da.dataIdx, da.dataLen);
break;
case ea.BIT_STRING:
ha.writeByte(0);
ha.copyBytes(da.backingStore, da.dataIdx, da.dataLen);
break;
case ea.OCTET_STRING:
ha.copyBytes(da.backingStore, da.dataIdx, da.dataLen);
break;
case ea.OBJECT_IDENTIFIER:
ha.copyBytes(da.backingStore, da.dataIdx, da.dataLen);
}
return !0;
}
function ib(da) {
var ha,
ka;
ha = da.readByte();
ka = ha & 127;
if (ka == ha)
return ka;
if (3 < ka || 0 === ka)
return -1;
for (var va = ha = 0; va < ka; ++va) {
ha = ha << 8 | da.readByte();
}
return ha;
}
function rb(da, ha, ka) {
var va,
Ra,
Ka,
Qa,
Sa,
oa,
xa;
va = da.backingStore;
Ra = new db(va, ha);
ha += ka;
ka = da;
if (8 < sa++)
return zb;
for (; Ra.getPosition() < ha;) {
Ra.getPosition();
Qa = Ra.readByte();
if (31 == (Qa & 31)) {
for (Ka = 0; Qa & 128;) {
Ka <<= 8;
Ka |= Qa & 127;
}
Qa = Ka;
}
Sa = Qa;
Ka = Sa & 31;
if (0 > Ka || 30 < Ka)
return zb;
Qa = ib(Ra);
if (0 > Qa || Qa > Ra.getRemaining())
return zb;
ka.constructed = Sa & 32;
ka.tagClass = (Sa & 192) >> 6;
ka.tag = Ka;
ka.dataLen = Qa;
ka.dataIdx = Ra.getPosition();
Ka = Ra;
oa = Sa;
Sa = Qa;
if (oa & 32)
Ka = !0;
else if (oa < ea.BIT_STRING || oa > ea.OCTET_STRING)
Ka = !1;
else {
xa = new db(Ka);
oa == ea.BIT_STRING && xa.skip(1);
xa.readByte() >> 6 & 1 ? Ka = !1 : (oa = ib(xa), Ka = xa.getPosition() - Ka.getPosition() + oa == Sa);
}
Ka && (Ka = Ra.getPosition(), Sa = Qa, ka.tag == ea.BIT_STRING && (ka.dataIdx++, ka.dataLen--, Ka++, Sa--), ka.child = new aa(va, ka), rb(ka.child, Ka, Sa));
ka.tag == ea.INTEGER && (Ka = Ra.getPosition(), 0 == Ra.peekByte(Ka) && Ra.peekByte(Ka + 1) >> 7 && (ka.dataIdx++, ka.dataLen--));
Ra.skip(Qa);
Ra.getPosition() < ha && (ka.next = new aa(va, ka.parent), ka = ka.next);
}
sa--;
return da;
}
function gb(da, ha, ka) {
if (9 != ka)
return !1;
for (ka = 0; 9 > ka; ++ka) {
if (da[ha++] != la[ka])
return !1;
}
return !0;
}
function Aa(da) {
var ha;
if (!(da && da.child && da.child.next && da.child.child && da.child.next.child))
return !1;
ha = da.child.child;
return gb(ha.backingStore, ha.dataIdx, ha.dataLen) && 2 == da.nChildren && 2 == da.child.nChildren && 2 == da.child.next.child.nChildren ? !0 : !1;
}
function Ia(da) {
var ha;
if (!(da && da.child && da.child.next && da.child.next.child && da.child.next.next && da.child.next.next.child))
return !1;
ha = da.child.next.child;
return gb(ha.backingStore, ha.dataIdx, ha.dataLen) && 3 == da.nChildren && 2 == da.child.next.nChildren && 9 == da.child.next.next.child.nChildren ? !0 : !1;
}
function Ma(da) {
var ha,
ka;
ha = ja.createSequenceNode();
ka = new ua(ha);
ka.addChild(ja.createSequenceNode());
ka.addChild(ja.createOidNode(la));
ka.addSibling(ja.createNullNode());
ka.addToParent(ha, ja.createBitStringNode(null));
ka.addChild(ja.createSequenceNode());
ka.addChild(ja.createIntegerNode(da.n));
ka.addSibling(ja.createIntegerNode(da.e));
return ha;
}
function ta(da) {
var ha;
da = da.child.next.child.child;
ha = da.data;
da = da.next;
return new qa(ha, da.data, null, null);
}
function ma(da) {
var ha,
ka;
ha = ja.createSequenceNode();
ka = new ua(ha);
ka.addChild(ja.createIntegerNode(new Uint8Array([0])));
ka.addSibling(ja.createSequenceNode());
ka.addChild(ja.createOidNode(la));
ka.addSibling(ja.createNullNode());
ka.addToParent(ha, ja.createOctetStringNode(null));
ka.addChild(ja.createSequenceNode());
ka.addChild(ja.createIntegerNode(new Uint8Array([0])));
ka.addSibling(ja.createIntegerNode(da.n));
ka.addSibling(ja.createIntegerNode(da.e));
ka.addSibling(ja.createIntegerNode(da.d));
ka.addSibling(ja.createIntegerNode(da.p));
ka.addSibling(ja.createIntegerNode(da.q));
ka.addSibling(ja.createIntegerNode(da.dp));
ka.addSibling(ja.createIntegerNode(da.dq));
ka.addSibling(ja.createIntegerNode(da.qi));
return ha;
}
function fa(da) {
var ha;
ha = [];
da = da.child.next.next.child.child.next;
for (var ka = 0; 8 > ka; ka++) {
ha.push(da.data);
da = da.next;
}
return new ya(ha[0], ha[1], ha[2], ha[3], ha[4], ha[5], ha[6], ha[7]);
}
function ba(da, ha, ka, va) {
if (!(da instanceof qa || da instanceof ya))
return zb;
if (ka)
for (var Ra = 0; Ra < ka.length; ++Ra) {
if (-1 == na.indexOf(ka[Ra]))
return zb;
}
ha = {
kty: "RSA",
alg: ha,
key_ops: ka || [],
ext: va == zb ? !1 : va,
n: Eb(da.n, !0),
e: Eb(da.e, !0)
};
da instanceof ya && (ha.d = Eb(da.d, !0), ha.p = Eb(da.p, !0), ha.q = Eb(da.q, !0), ha.dp = Eb(da.dp, !0), ha.dq = Eb(da.dq, !0), ha.qi = Eb(da.qi, !0));
return ha;
}
function Y(da) {
var ha,
ka,
va,
Ra,
Ka,
Qa,
Sa,
oa,
xa,
Da;
if (!da.kty || "RSA" != da.kty || !da.n || !da.e)
return zb;
ha = ("RSA1_5 RSA-OAEP RSA-OAEP-256 RSA-OAEP-384 RSA-OAEP-512 RS256 RS384 RS512").split(" ");
if (da.alg && -1 == ha.indexOf(da.alg))
return zb;
ha = [];
da.use ? "enc" == da.use ? ha = ["encrypt", "decrypt", "wrap", "unwrap"] : "sig" == da.use && (ha = ["sign", "verify"]) : ha = da.key_ops;
ka = da.ext;
va = Gb(da.n, !0);
Ra = Gb(da.e, !0);
if (da.d) {
Ka = Gb(da.d, !0);
Qa = Gb(da.p, !0);
Sa = Gb(da.q, !0);
oa = Gb(da.dp, !0);
xa = Gb(da.dq, !0);
Da = Gb(da.qi, !0);
return new ya(va, Ra, Ka, Qa, Sa, oa, xa, Da, da.alg, ha, ka);
}
return new qa(va, Ra, ka, ha);
}
function Z(da, ha, ka, va) {
this.der = da;
this.type = ha;
this.keyOps = ka;
this.extractable = va;
}
ea = {
BER: 0,
BOOLEAN: 1,
INTEGER: 2,
BIT_STRING: 3,
OCTET_STRING: 4,
NULL: 5,
OBJECT_IDENTIFIER: 6,
OBJECT_DESCRIPTOR: 7,
INSTANCE_OF_EXTERNAL: 8,
REAL: 9,
ENUMERATED: 10,
EMBEDDED_PPV: 11,
UTF8_STRING: 12,
RELATIVE_OID: 13,
SEQUENCE: 16,
SET: 17,
NUMERIC_STRING: 18,
PRINTABLE_STRING: 19,
TELETEX_STRING: 20,
T61_STRING: 20,
VIDEOTEX_STRING: 21,
IA5_STRING: 22,
UTC_TIME: 23,
GENERALIZED_TIME: 24,
GRAPHIC_STRING: 25,
VISIBLE_STRING: 26,
ISO64_STRING: 26,
GENERAL_STRING: 27,
UNIVERSAL_STRING: 28,
CHARACTER_STRING: 29,
BMP_STRING: 30
};
aa = function(da, ha, ka, va, Ra, Ka) {
this._data = da;
this._parent = ha || zb;
this._constructed = ka || !1;
this._tagClass = 0;
this._tag = va || 0;
this._dataIdx = Ra || 0;
this._dataLen = Ka || 0;
};
aa.prototype = {
_child: zb,
_next: zb,
get data() {
return new Uint8Array(this._data.buffer.slice(this._dataIdx, this._dataIdx + this._dataLen));
},
get backingStore() {
return this._data;
},
get constructed() {
return this._constructed;
},
set constructed(da) {
this._constructed = 0 != da ? !0 : !1;
},
get tagClass() {
return this._tagClass;
},
set tagClass(da) {
this._tagClass = da;
},
get tag() {
return this._tag;
},
set tag(da) {
this._tag = da;
},
get dataIdx() {
return this._dataIdx;
},
set dataIdx(da) {
this._dataIdx = da;
},
get dataLen() {
return this._dataLen;
},
set dataLen(da) {
this._dataLen = da;
},
get child() {
return this._child;
},
set child(da) {
this._child = da;
this._child.parent = this;
},
get next() {
return this._next;
},
set next(da) {
this._next = da;
},
get parent() {
return this._parent;
},
set parent(da) {
this._parent = da;
},
get payloadLen() {
var da;
da = 0;
if (this._child) {
for (var ha = this._child; ha;) {
da += ha.length;
ha = ha.next;
}
this._tag == ea.BIT_STRING && da++;
} else
switch (this._tag) {
case ea.INTEGER:
da = this._dataLen;
this._data[this._dataIdx] >> 7 && da++;
break;
case ea.BIT_STRING:
da = this._dataLen + 1;
break;
case ea.OCTET_STRING:
da = this._dataLen;
break;
case ea.NULL:
da = 0;
break;
case ea.OBJECT_IDENTIFIER:
gb(this._data, this._dataIdx, this._dataLen) && (da = 9);
}
return da;
},
get length() {
var da,
ha;
da = this.payloadLen;
if (127 < da)
for (ha = da; ha;) {
ha >>= 8;
++da;
}
return da + 2;
},
get der() {
var da,
ha;
da = this.length;
if (!da)
return zb;
da = new Uint8Array(da);
ha = new db(da);
return Ya(this, ha) ? da : zb;
},
get nChildren() {
for (var da = 0, ha = this._child; ha;) {
da++;
ha = ha.next;
}
return da;
}
};
ja = {
createSequenceNode: function() {
return new aa(null, null, !0, ea.SEQUENCE, null, null);
},
createOidNode: function(da) {
return new aa(da, null, !1, ea.OBJECT_IDENTIFIER, 0, da ? da.length : 0);
},
createNullNode: function() {
return new aa(null, null, !1, ea.NULL, null, null);
},
createBitStringNode: function(da) {
return new aa(da, null, !1, ea.BIT_STRING, 0, da ? da.length : 0);
},
createIntegerNode: function(da) {
return new aa(da, null, !1, ea.INTEGER, 0, da ? da.length : 0);
},
createOctetStringNode: function(da) {
return new aa(da, null, !1, ea.OCTET_STRING, 0, da ? da.length : 0);
}
};
ua = function(da) {
this._currentNode = this._rootNode = da;
};
ua.prototype = {
addChild: function(da) {
this.addTo(this._currentNode, da);
},
addSibling: function(da) {
this.addTo(this._currentNode.parent, da);
},
addTo: function(da, ha) {
this._currentNode = ha;
this._currentNode.parent = da;
if (da.child) {
for (da = da.child; da.next;) {
da = da.next;
}
da.next = ha;
} else
da.child = ha;
},
addToParent: function(da, ha) {
this.findNode(da) && this.addTo(da, ha);
},
findNode: function(da) {
for (var ha = this._currentNode; ha;) {
if (da == ha)
return !0;
ha = ha.parent;
}
return !1;
}
};
sa = 0;
la = new Uint8Array([42, 134, 72, 134, 247, 13, 1, 1, 1]);
qa = function(da, ha, ka, va) {
this.n = da;
this.e = ha;
this.ext = ka;
this.keyOps = va;
};
ya = function(da, ha, ka, va, Ra, Ka, Qa, Sa, oa, xa, Da) {
this.n = da;
this.e = ha;
this.d = ka;
this.p = va;
this.q = Ra;
this.dp = Ka;
this.dq = Qa;
this.qi = Sa;
this.alg = oa;
this.keyOps = xa;
this.ext = Da;
};
na = ("sign verify encrypt decrypt wrapKey unwrapKey deriveKey deriveBits").split(" ");
Z.prototype.getDer = function() {
return this.der;
};
Z.prototype.getType = function() {
return this.type;
};
Z.prototype.getKeyOps = function() {
return this.keyOps;
};
Z.prototype.getExtractable = function() {
return this.extractable;
};
bb.parse = function(da) {
sa = 0;
return rb(new aa(da), 0, da.length);
};
bb.show = function(da, ha) {};
bb.isRsaSpki = Aa;
bb.isRsaPkcs8 = Ia;
bb.NodeFactory = ja;
bb.Builder = ua;
bb.tagVal = ea;
bb.RsaPublicKey = qa;
bb.RsaPrivateKey = ya;
bb.buildRsaSpki = Ma;
bb.parseRsaSpki = function(da) {
da = bb.parse(da);
return Aa ? ta(da) : zb;
};
bb.buildRsaPkcs8 = ma;
bb.parseRsaPkcs8 = function(da) {
da = bb.parse(da);
return Ia(da) ? fa(da) : zb;
};
bb.buildRsaJwk = ba;
bb.parseRsaJwk = Y;
bb.RsaDer = Z;
bb.rsaDerToJwk = function(da, ha, ka, va) {
da = bb.parse(da);
if (!da)
return zb;
if (Aa(da))
da = ta(da);
else if (Ia(da))
da = fa(da);
else
return zb;
return ba(da, ha, ka, va);
};
bb.jwkToRsaDer = function(da) {
var ha,
ka;
da = Y(da);
if (!da)
return zb;
if (da instanceof qa) {
ha = "spki";
ka = Ma(da).der;
} else if (da instanceof ya)
(ha = "pkcs8",
ka = ma(da).der);
else
return zb;
return new Z(ka, ha, da.keyOps, da.ext);
};
bb.webCryptoAlgorithmToJwkAlg = function(da) {
return "RSAES-PKCS1-v1_5" == da.name ? "RSA1_5" : "RSASSA-PKCS1-v1_5" == da.name ? "SHA-256" == da.hash.name ? "RS256" : "SHA-384" == da.hash.name ? "RS384" : "SHA-512" == da.hash.name ? "RS512" : zb : zb;
};
bb.webCryptoUsageToJwkKeyOps = function(da) {
return da.map(function(ha) {
return "wrapKey" == ha ? "wrap" : "unwrapKey" == ha ? "unwrap" : ha;
});
};
})();
fb.ASN1 = bb;
})(mb);
(function() {
for (var fb = {}, db = {}, bb = {
"=": 0,
".": 0
}, Ya = {
"=": 0,
".": 0
}, ib = /\s+/g, rb = /^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/_-]*[=]{0,2}$/, gb = 64; gb--;) {
fb[("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")[gb]] = 262144 * gb;
db[("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")[gb]] = 4096 * gb;
bb[("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")[gb]] = 64 * gb;
Ya[("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")[gb]] = gb;
}
for (gb = 64; gb-- && ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")[gb] != ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_")[gb];) {
fb[("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_")[gb]] = 262144 * gb;
db[("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_")[gb]] = 4096 * gb;
bb[("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_")[gb]] = 64 * gb;
Ya[("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_")[gb]] = gb;
}
Eb = function(Aa, Ia) {
for (var Ma = "", ta = 0, ma = Aa.length, fa = ma - 2, ba = Ia ? "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", Y = Ia ? "" : "="; ta < fa;) {
Ia = 65536 * Aa[ta++] + 256 * Aa[ta++] + Aa[ta++];
Ma += ba[Ia >>> 18] + ba[Ia >>> 12 & 63] + ba[Ia >>> 6 & 63] + ba[Ia & 63];
}
ta == fa ? (Ia = 65536 * Aa[ta++] + 256 * Aa[ta++], Ma += ba[Ia >>> 18] + ba[Ia >>> 12 & 63] + ba[Ia >>> 6 & 63] + Y) : ta == ma - 1 && (Ia = 65536 * Aa[ta++], Ma += ba[Ia >>> 18] + ba[Ia >>> 12 & 63] + Y + Y);
return Ma;
};
Gb = function(Aa, Ia) {
Aa = Aa.replace(ib, "");
if (Ia && (Ia = Aa.length % 4)) {
Ia = 4 - Ia;
for (var Ma = 0; Ma < Ia; ++Ma) {
Aa += "=";
}
}
Ia = Aa.length;
if (0 != Ia % 4 || !rb.test(Aa))
throw Error("bad base64: " + Aa);
for (var ta = Ia / 4 * 3 - ("=" == Aa[Ia - 1] ? 1 : 0) - ("=" == Aa[Ia - 2] ? 1 : 0), ma = new Uint8Array(ta), fa = 0, ba = 0; fa < Ia;) {
Ma = fb[Aa[fa++]] + db[Aa[fa++]] + bb[Aa[fa++]] + Ya[Aa[fa++]];
ma[ba++] = Ma >>> 16;
ba < ta && (ma[ba++] = Ma >>> 8 & 255, ba < ta && (ma[ba++] = Ma & 255));
}
return ma;
};
})();
Ub = {};
(function() {
var rb,
gb,
Aa,
Ma;
function fb(ta) {
if (!(this instanceof fb))
return new fb(ta);
for (var ma = 0, fa = gb.length; ma < fa; ma++) {
this[gb[ma]] = "";
}
this.bufferCheckPosition = Ub.MAX_BUFFER_LENGTH;
this.q = this.c = this.p = "";
this.opt = ta || ({});
this.closed = this.closedRoot = this.sawRoot = !1;
this.tag = this.error = null;
this.state = Aa.BEGIN;
this.stack = new rb();
this.index = this.position = this.column = 0;
this.line = 1;
this.slashed = !1;
this.unicodeI = 0;
this.unicodeS = null;
db(this, "onready");
}
function db(ta, ma, fa) {
if (ta[ma])
ta[ma](fa);
}
function bb(ta, ma) {
var fa,
ba;
fa = ta.opt;
ba = ta.textNode;
fa.trim && (ba = ba.trim());
fa.normalize && (ba = ba.replace(/\s+/g, " "));
ta.textNode = ba;
ta.textNode && db(ta, ma ? ma : "onvalue", ta.textNode);
ta.textNode = "";
}
function Ya(ta, ma) {
bb(ta);
ma += "\nLine: " + ta.line + "\nColumn: " + ta.column + "\nChar: " + ta.c;
ma = Error(ma);
ta.error = ma;
db(ta, "onerror", ma);
return ta;
}
function ib(ta) {
ta.state !== Aa.VALUE && Ya(ta, "Unexpected end");
bb(ta);
ta.c = "";
ta.closed = !0;
db(ta, "onend");
fb.call(ta, ta.opt);
return ta;
}
rb = Array;
Ub.parser = function(ta) {
return new fb(ta);
};
Ub.CParser = fb;
Ub.MAX_BUFFER_LENGTH = 65536;
Ub.DEBUG = !1;
Ub.INFO = !1;
Ub.EVENTS = ("value string key openobject closeobject openarray closearray error end ready").split(" ");
gb = ["textNode", "numberNode"];
Ub.EVENTS.filter(function(ta) {
return "error" !== ta && "end" !== ta;
});
Aa = 0;
Ub.STATE = {
BEGIN: Aa++,
VALUE: Aa++,
OPEN_OBJECT: Aa++,
CLOSE_OBJECT: Aa++,
OPEN_ARRAY: Aa++,
CLOSE_ARRAY: Aa++,
TEXT_ESCAPE: Aa++,
STRING: Aa++,
BACKSLASH: Aa++,
END: Aa++,
OPEN_KEY: Aa++,
CLOSE_KEY: Aa++,
TRUE: Aa++,
TRUE2: Aa++,
TRUE3: Aa++,
FALSE: Aa++,
FALSE2: Aa++,
FALSE3: Aa++,
FALSE4: Aa++,
NULL: Aa++,
NULL2: Aa++,
NULL3: Aa++,
NUMBER_DECIMAL_POINT: Aa++,
NUMBER_DIGIT: Aa++
};
for (var Ia in Ub.STATE) {
Ub.STATE[Ub.STATE[Ia]] = Ia;
}
Aa = Ub.STATE;
Object.getPrototypeOf || (Object.getPrototypeOf = function(ta) {
return ta.__proto__;
});
Ma = /[\\"\n]/g;
fb.prototype = {
end: function() {
ib(this);
},
write: function(ta) {
var ba,
Y,
Z;
if (this.error)
throw this.error;
if (this.closed)
return Ya(this, "Cannot write after close. Assign an onready handler.");
if (null === ta)
return ib(this);
for (var ma = ta[0], fa; ma;) {
fa = ma;
this.c = ma = ta.charAt(this.index++);
fa !== ma ? this.p = fa : fa = this.p;
if (!ma)
break;
this.position++;
"\n" === ma ? (this.line++, this.column = 0) : this.column++;
switch (this.state) {
case Aa.BEGIN:
"{" === ma ? this.state = Aa.OPEN_OBJECT : "[" === ma ? this.state = Aa.OPEN_ARRAY : "\r" !== ma && "\n" !== ma && " " !== ma && "\t" !== ma && Ya(this, "Non-whitespace before {[.");
continue;
case Aa.OPEN_KEY:
case Aa.OPEN_OBJECT:
if ("\r" === ma || "\n" === ma || " " === ma || "\t" === ma)
continue;
if (this.state === Aa.OPEN_KEY)
this.stack.push(Aa.CLOSE_KEY);
else if ("}" === ma) {
db(this, "onopenobject");
db(this, "oncloseobject");
this.state = this.stack.pop() || Aa.VALUE;
continue;
} else
this.stack.push(Aa.CLOSE_OBJECT);
'"' === ma ? this.state = Aa.STRING : Ya(this, 'Malformed object key should start with "');
continue;
case Aa.CLOSE_KEY:
case Aa.CLOSE_OBJECT:
if ("\r" === ma || "\n" === ma || " " === ma || "\t" === ma)
continue;
":" === ma ? (this.state === Aa.CLOSE_OBJECT ? (this.stack.push(Aa.CLOSE_OBJECT), bb(this, "onopenobject")) : bb(this, "onkey"), this.state = Aa.VALUE) : "}" === ma ? (bb(this), db(this, "oncloseobject", void 0), this.state = this.stack.pop() || Aa.VALUE) : "," === ma ? (this.state === Aa.CLOSE_OBJECT && this.stack.push(Aa.CLOSE_OBJECT), bb(this), this.state = Aa.OPEN_KEY) : Ya(this, "Bad object");
continue;
case Aa.OPEN_ARRAY:
case Aa.VALUE:
if ("\r" === ma || "\n" === ma || " " === ma || "\t" === ma)
continue;
if (this.state === Aa.OPEN_ARRAY)
if ((db(this, "onopenarray"), this.state = Aa.VALUE, "]" === ma)) {
db(this, "onclosearray");
this.state = this.stack.pop() || Aa.VALUE;
continue;
} else
this.stack.push(Aa.CLOSE_ARRAY);
'"' === ma ? this.state = Aa.STRING : "{" === ma ? this.state = Aa.OPEN_OBJECT : "[" === ma ? this.state = Aa.OPEN_ARRAY : "t" === ma ? this.state = Aa.TRUE : "f" === ma ? this.state = Aa.FALSE : "n" === ma ? this.state = Aa.NULL : "-" === ma ? this.numberNode += ma : "0" === ma ? (this.numberNode += ma, this.state = Aa.NUMBER_DIGIT) : -1 !== ("123456789").indexOf(ma) ? (this.numberNode += ma, this.state = Aa.NUMBER_DIGIT) : Ya(this, "Bad value");
continue;
case Aa.CLOSE_ARRAY:
if ("," === ma)
(this.stack.push(Aa.CLOSE_ARRAY),
bb(this, "onvalue"),
this.state = Aa.VALUE);
else if ("]" === ma)
(bb(this),
db(this, "onclosearray", void 0),
this.state = this.stack.pop() || Aa.VALUE);
else if ("\r" === ma || "\n" === ma || " " === ma || "\t" === ma)
continue;
else
Ya(this, "Bad array");
continue;
case Aa.STRING:
fa = this.index - 1;
(ba = this.slashed,
Y = this.unicodeI);
a:
for (;;) {
if (Ub.DEBUG)
for (; 0 < Y;) {
if ((this.unicodeS += ma, ma = ta.charAt(this.index++), 4 === Y ? (this.textNode += String.fromCharCode(parseInt(this.unicodeS, 16)), Y = 0, fa = this.index - 1) : Y++, !ma))
break a;
}
if ('"' === ma && !ba) {
this.state = this.stack.pop() || Aa.VALUE;
(this.textNode += ta.substring(fa, this.index - 1)) || db(this, "onvalue", "");
break;
}
if ("\\" === ma && !ba && (ba = !0, this.textNode += ta.substring(fa, this.index - 1), ma = ta.charAt(this.index++), !ma))
break;
if (ba)
if ((ba = !1, "n" === ma ? this.textNode += "\n" : "r" === ma ? this.textNode += "\r" : "t" === ma ? this.textNode += "\t" : "f" === ma ? this.textNode += "\f" : "b" === ma ? this.textNode += "\b" : "u" === ma ? (Y = 1, this.unicodeS = "") : this.textNode += ma, ma = ta.charAt(this.index++), fa = this.index - 1, ma))
continue;
else
break;
Ma.lastIndex = this.index;
Z = Ma.exec(ta);
if (null === Z) {
this.index = ta.length + 1;
this.textNode += ta.substring(fa, this.index - 1);
break;
}
this.index = Z.index + 1;
ma = ta.charAt(Z.index);
if (!ma) {
this.textNode += ta.substring(fa, this.index - 1);
break;
}
}
this.slashed = ba;
this.unicodeI = Y;
continue;
case Aa.TRUE:
if ("" === ma)
continue;
"r" === ma ? this.state = Aa.TRUE2 : Ya(this, "Invalid true started with t" + ma);
continue;
case Aa.TRUE2:
if ("" === ma)
continue;
"u" === ma ? this.state = Aa.TRUE3 : Ya(this, "Invalid true started with tr" + ma);
continue;
case Aa.TRUE3:
if ("" === ma)
continue;
"e" === ma ? (db(this, "onvalue", !0), this.state = this.stack.pop() || Aa.VALUE) : Ya(this, "Invalid true started with tru" + ma);
continue;
case Aa.FALSE:
if ("" === ma)
continue;
"a" === ma ? this.state = Aa.FALSE2 : Ya(this, "Invalid false started with f" + ma);
continue;
case Aa.FALSE2:
if ("" === ma)
continue;
"l" === ma ? this.state = Aa.FALSE3 : Ya(this, "Invalid false started with fa" + ma);
continue;
case Aa.FALSE3:
if ("" === ma)
continue;
"s" === ma ? this.state = Aa.FALSE4 : Ya(this, "Invalid false started with fal" + ma);
continue;
case Aa.FALSE4:
if ("" === ma)
continue;
"e" === ma ? (db(this, "onvalue", !1), this.state = this.stack.pop() || Aa.VALUE) : Ya(this, "Invalid false started with fals" + ma);
continue;
case Aa.NULL:
if ("" === ma)
continue;
"u" === ma ? this.state = Aa.NULL2 : Ya(this, "Invalid null started with n" + ma);
continue;
case Aa.NULL2:
if ("" === ma)
continue;
"l" === ma ? this.state = Aa.NULL3 : Ya(this, "Invalid null started with nu" + ma);
continue;
case Aa.NULL3:
if ("" === ma)
continue;
"l" === ma ? (db(this, "onvalue", null), this.state = this.stack.pop() || Aa.VALUE) : Ya(this, "Invalid null started with nul" + ma);
continue;
case Aa.NUMBER_DECIMAL_POINT:
"." === ma ? (this.numberNode += ma, this.state = Aa.NUMBER_DIGIT) : Ya(this, "Leading zero not followed by .");
continue;
case Aa.NUMBER_DIGIT:
-1 !== ("0123456789").indexOf(ma) ? this.numberNode += ma : "." === ma ? (-1 !== this.numberNode.indexOf(".") && Ya(this, "Invalid number has two dots"), this.numberNode += ma) : "e" === ma || "E" === ma ? (-1 === this.numberNode.indexOf("e") && -1 === this.numberNode.indexOf("E") || Ya(this, "Invalid number has two exponential"), this.numberNode += ma) : "+" === ma || "-" === ma ? ("e" !== fa && "E" !== fa && Ya(this, "Invalid symbol in number"), this.numberNode += ma) : (this.numberNode && db(this, "onvalue", parseFloat(this.numberNode)), this.numberNode = "", this.index--, this.state = this.stack.pop() || Aa.VALUE);
continue;
default:
Ya(this, "Unknown state: " + this.state);
}
}
if (this.position >= this.bufferCheckPosition) {
ta = Math.max(Ub.MAX_BUFFER_LENGTH, 10);
fa = ma = 0;
for (ba = gb.length; fa < ba; fa++) {
Y = this[gb[fa]].length;
if (Y > ta)
switch (gb[fa]) {
case "text":
break;
default:
Ya(this, "Max buffer length exceeded: " + gb[fa]);
}
ma = Math.max(ma, Y);
}
this.bufferCheckPosition = Ub.MAX_BUFFER_LENGTH - ma + this.position;
}
return this;
},
resume: function() {
this.error = null;
return this;
},
close: function() {
return this.write(null);
}
};
})();
(function() {
var Ya,
ib,
rb;
function fb(gb, Aa) {
Aa || (Aa = gb.length);
return gb.reduce(function(Ia, Ma, ta) {
return ta < Aa ? Ia + String.fromCharCode(Ma) : Ia;
}, "");
}
for (var db = {}, bb = 0; 256 > bb; ++bb) {
Ya = fb([bb]);
db[Ya] = bb;
}
ib = Object.keys(db).length;
rb = [];
for (bb = 0; 256 > bb; ++bb) {
rb[bb] = [bb];
}
ce = function(gb, Aa) {
var aa,
ja;
function Ia(ua, sa) {
var la;
for (; 0 < sa;) {
if (Y >= ba.length)
return !1;
if (sa > Z) {
la = ua;
la >>>= sa - Z;
ba[Y] |= la & 255;
sa -= Z;
Z = 8;
++Y;
} else
sa <= Z && (la = ua, la <<= Z - sa, la &= 255, la >>>= 8 - Z, ba[Y] |= la & 255, Z -= sa, sa = 0, 0 == Z && (Z = 8, ++Y));
}
return !0;
}
for (var Ma in db) {
Aa[Ma] = db[Ma];
}
for (var ta = ib, ma = [], fa = 8, ba = new Uint8Array(gb.length), Y = 0, Z = 8, ea = 0; ea < gb.length; ++ea) {
aa = gb[ea];
ma.push(aa);
Ma = fb(ma);
ja = Aa[Ma];
if (!ja) {
ma = fb(ma, ma.length - 1);
if (!Ia(Aa[ma], fa))
return null;
0 != ta >> fa && ++fa;
Aa[Ma] = ta++;
ma = [aa];
}
}
return 0 < ma.length && (Ma = fb(ma), ja = Aa[Ma], !Ia(ja, fa)) ? null : ba.subarray(0, 8 > Z ? Y + 1 : Y);
};
de = function(gb) {
var ea,
aa;
for (var Aa = rb.slice(), Ia = 0, Ma = 0, ta = 8, ma = new Uint8Array(Math.ceil(1.5 * gb.length)), fa = 0, ba, Y = []; Ia < gb.length && !(8 * (gb.length - Ia) - Ma < ta);) {
for (var Z = ba = 0; Z < ta;) {
ea = Math.min(ta - Z, 8 - Ma);
aa = gb[Ia];
aa <<= Ma;
aa &= 255;
aa >>>= 8 - ea;
Z += ea;
Ma += ea;
8 == Ma && (Ma = 0, ++Ia);
ba |= (aa & 255) << ta - Z;
}
Z = Aa[ba];
0 == Y.length ? ++ta : (Z ? Y.push(Z[0]) : Y.push(Y[0]), Aa[Aa.length] = Y, Y = [], Aa.length == 1 << ta && ++ta, Z || (Z = Aa[ba]));
ba = fa + Z.length;
ba >= ma.length && (ea = new Uint8Array(Math.ceil(1.5 * ba)), ea.set(ma), ma = ea);
ma.set(Z, fa);
fa = ba;
Y = Y.concat(Z);
}
return ma.subarray(0, fa);
};
})();
(function() {
var fb,
db,
bb;
Lb = "utf-8";
Kb = 9007199254740992;
fb = Cc = {
GZIP: "GZIP",
LZW: "LZW"
};
Object.freeze(Cc);
ee = function(Ya) {
for (var ib = [fb.GZIP, fb.LZW], rb = 0; rb < ib.length && 0 < Ya.length; ++rb) {
for (var gb = ib[rb], Aa = 0; Aa < Ya.length; ++Aa) {
if (Ya[Aa] == gb)
return gb;
}
}
return null;
};
db = dd = {
AES_CBC_PKCS5Padding: "AES/CBC/PKCS5Padding",
AESWrap: "AESWrap",
RSA_ECB_PKCS1Padding: "RSA/ECB/PKCS1Padding"
};
Object.freeze(dd);
fe = function(Ya) {
return db.AES_CBC_PKCS5Padding == Ya ? db.AES_CBC_PKCS5Padding : db.RSA_ECB_PKCS1Padding == Ya ? db.RSA_ECB_PKCS1Padding : db[Ya];
};
bb = ge = {
HmacSHA256: "HmacSHA256",
SHA256withRSA: "SHA256withRSA"
};
Object.freeze(ge);
wd = function(Ya) {
return bb[Ya];
};
Ea = {
FAIL: 1,
TRANSIENT_FAILURE: 2,
ENTITY_REAUTH: 3,
USER_REAUTH: 4,
KEYX_REQUIRED: 5,
ENTITYDATA_REAUTH: 6,
USERDATA_REAUTH: 7,
EXPIRED: 8,
REPLAYED: 9,
SSOTOKEN_REJECTED: 10
};
Object.freeze(Ea);
})();
Ab = {
isObjectLiteral: function(fb) {
return null !== fb && "object" === typeof fb && fb.constructor === Object;
},
extendDeep: function() {
var fb,
db,
bb,
Ya,
ib,
rb,
gb,
Aa;
fb = arguments[0];
db = 1;
bb = arguments.length;
Ya = !1;
"boolean" === typeof fb && (Ya = fb, fb = arguments[1], db = 2);
for (; db < bb; db++) {
if (null != (ib = arguments[db]))
for (rb in ib) {
if (!(Ya && (rb in fb))) {
gb = ib[rb];
if (fb !== gb && gb !== zb) {
Aa = fb[rb];
fb[rb] = null !== Aa && null !== gb && "object" === typeof Aa && "object" === typeof gb ? Ab.extendDeep(Ya, {}, Aa, gb) : gb;
}
}
}
}
return fb;
}
};
(function() {
var gb,
Aa;
function fb(Ia, Ma) {
return function() {
var ta,
ma;
ta = Ia.base;
Ia.base = Ma;
ma = Ia.apply(this, arguments);
Ia.base = ta;
return ma;
};
}
function db(Ia, Ma, ta) {
var ma,
fa,
ba,
Y;
ta = ta || Aa;
fa = !!ta.extendAll;
for (ma in Ma) {
ba = Ma.__lookupGetter__(ma);
Y = Ma.__lookupSetter__(ma);
ba || Y ? (ba && Ia.__defineGetter__(ma, ba), Y && Ia.__defineSetter__(ma, Y)) : (ba = Ma[ma], Y = Ia[ma], "function" === typeof ba && "function" === typeof Y && ba !== Y ? (ba.base !== Function.prototype.base && (ba = fb(ba, Y)), ba.base = Y) : (fa || ta[ma]) && Ab.isObjectLiteral(ba) && Ab.isObjectLiteral(Y) && (ba = Ab.extendDeep({}, Y, ba)), Ia[ma] = ba);
}
}
function bb() {
var Ia,
Ma;
Ia = Array.prototype.slice;
Ma = Ia.call(arguments, 1);
return this.extend({
init: function ma() {
var fa;
fa = Ia.call(arguments, 0);
ma.base.apply(this, Ma.concat(fa));
}
});
}
function Ya(Ia, Ma) {
var ta;
ta = new this(gb);
db(ta, Ia, Ma);
return rb(ta);
}
function ib(Ia, Ma) {
db(this.prototype, Ia, Ma);
return this;
}
function rb(Ia) {
var Ma;
Ma = function() {
var ta;
ta = this.init;
ta && arguments[0] !== gb && ta.apply(this, arguments);
};
Ia && (Ma.prototype = Ia);
Ma.prototype.constructor = Ma;
Ma.extend = Ya;
Ma.bind = bb;
Ma.mixin = ib;
return Ma;
}
gb = {};
Aa = {
actions: !0
};
Function.prototype.base = function() {};
Ab.Class = {
create: rb,
mixin: db,
extend: function(Ia, Ma) {
var ta;
ta = rb();
ta.prototype = new Ia();
return ta.extend(Ma);
}
};
Ab.mixin = function() {
Ab.log && Ab.log.warn("util.mixin is deprecated. Please change your code to use util.Class.mixin()");
db.apply(null, arguments);
};
})();
(function() {
var gb,
Aa,
Ia;
function fb(Ma, ta) {
return function() {
var ma,
fa;
ma = Ma.base;
Ma.base = ta;
fa = Ma.apply(this, arguments);
Ma.base = ma;
return fa;
};
}
function db(Ma, ta, ma) {
var fa,
ba,
Y,
Z;
ma = ma || Aa;
ba = !!ma.extendAll;
for (fa in ta) {
Y = ta.__lookupGetter__(fa);
Z = ta.__lookupSetter__(fa);
Y || Z ? (Y && Ma.__defineGetter__(fa, Y), Z && Ma.__defineSetter__(fa, Z)) : (Y = ta[fa], Z = Ma[fa], "function" === typeof Y && "function" === typeof Z && Y !== Z ? (Y.base !== Ia && (Y = fb(Y, Z)), Y.base = Z) : (ba || ma[fa]) && Ab.isObjectLiteral(Y) && Ab.isObjectLiteral(Z) && (Y = Ab.extendDeep({}, Z, Y)), Ma[fa] = Y);
}
}
function bb() {
var Ma,
ta;
Ma = Array.prototype.slice;
ta = Ma.call(arguments, 1);
return this.extend({
init: function fa() {
var ba;
ba = Ma.call(arguments, 0);
fa.base.apply(this, ta.concat(ba));
}
});
}
function Ya(Ma, ta) {
var ma;
ma = new this(gb);
db(ma, Ma, ta);
return rb(ma);
}
function ib(Ma, ta) {
db(this.prototype, Ma, ta);
return this;
}
function rb(Ma) {
var ta;
ta = function() {
var ma;
ma = this.init;
ma && arguments[0] !== gb && ma.apply(this, arguments);
};
Ma && (ta.prototype = Ma);
ta.prototype.constructor = ta;
ta.extend = Ya;
ta.bind = bb;
ta.mixin = ib;
return ta;
}
gb = {};
Aa = {
actions: !0
};
Ia = function() {};
Function.prototype.base = Ia;
Ab.Class = {
create: rb,
mixin: db,
extend: function(Ma, ta) {
var ma;
ma = rb();
ma.prototype = new Ma();
return ma.extend(ta);
}
};
Ab.mixin = function() {
Ab.log && Ab.log.warn("util.mixin is deprecated. Please change your code to use util.Class.mixin()");
db.apply(null, arguments);
};
})();
(function() {
function fb(bb) {
return bb == Kb ? 1 : bb + 1;
}
function db(bb) {
if (0 === Object.keys(bb._waiters).length)
return 0;
for (var Ya = fb(bb._nextWaiter); !bb._waiters[Ya];) {
Ya = fb(Ya);
}
return Ya;
}
Qc = Ab.Class.create({
init: function() {
Object.defineProperties(this, {
_queue: {
value: [],
writable: !1,
enumerable: !1,
configurable: !1
},
_waiters: {
value: {},
writable: !1,
enumerable: !1,
configurable: !1
},
_nextWaiter: {
value: 0,
writable: !0,
enumerable: !1,
configurable: !1
},
_lastWaiter: {
value: 0,
writable: !0,
enumerable: !1,
configurable: !1
}
});
},
cancel: function(bb) {
var Ya;
if (this._waiters[bb]) {
Ya = this._waiters[bb];
delete this._waiters[bb];
bb == this._nextWaiter && (this._nextWaiter = db(this));
Ya.call(this, zb);
}
},
cancelAll: function() {
for (; 0 !== this._nextWaiter;) {
this.cancel(this._nextWaiter);
}
},
poll: function(bb, Ya) {
var ib,
rb;
ib = this;
rb = fb(this._lastWaiter);
this._lastWaiter = rb;
ab(Ya, function() {
var gb,
Aa;
if (0 < this._queue.length) {
gb = this._queue.shift();
setTimeout(function() {
Ya.result(gb);
}, 0);
} else {
-1 != bb && (Aa = setTimeout(function() {
delete ib._waiters[rb];
rb == ib._nextWaiter && (ib._nextWaiter = db(ib));
Ya.timeout();
}, bb));
this._waiters[rb] = function(Ia) {
clearTimeout(Aa);
setTimeout(function() {
Ya.result(Ia);
}, 0);
};
this._nextWaiter || (this._nextWaiter = rb);
}
}, ib);
return rb;
},
add: function(bb) {
var Ya;
if (this._nextWaiter) {
Ya = this._waiters[this._nextWaiter];
delete this._waiters[this._nextWaiter];
this._nextWaiter = db(this);
Ya.call(this, bb);
} else
this._queue.push(bb);
}
});
})();
(function() {
var fb;
fb = 0 - Kb;
he = Ab.Class.create({
nextBoolean: function() {
var db;
db = new Uint8Array(1);
tc.getRandomValues(db);
return db[0] & 1 ? !0 : !1;
},
nextInt: function(db) {
var bb;
if (null !== db && db !== zb) {
if ("number" !== typeof db)
throw new TypeError("n must be of type number");
if (1 > db)
throw new RangeError("n must be greater than zero");
--db;
bb = new Uint8Array(4);
tc.getRandomValues(bb);
return Math.floor(((bb[3] & 127) << 24 | bb[2] << 16 | bb[1] << 8 | bb[0]) / 2147483648 * (db - 0 + 1));
}
db = new Uint8Array(4);
tc.getRandomValues(db);
bb = (db[3] & 127) << 24 | db[2] << 16 | db[1] << 8 | db[0];
return db[3] & 128 ? -bb : bb;
},
nextLong: function() {
var bb;
for (var db = fb; db == fb;) {
db = new Uint8Array(7);
tc.getRandomValues(db);
bb = 16777216 * ((db[6] & 31) << 24 | db[5] << 16 | db[4] << 8 | db[3]) + (db[2] << 16 | db[1] << 8 | db[0]);
db = db[6] & 128 ? -bb - 1 : bb;
}
return db;
},
nextBytes: function(db) {
tc.getRandomValues(db);
}
});
})();
(function() {
function fb(Ya) {
return Ya == Kb ? 1 : Ya + 1;
}
function db(Ya) {
if (0 === Object.keys(Ya._waitingReaders).length)
return 0;
for (var ib = fb(Ya._nextReader); !Ya._waitingReaders[ib];) {
ib = fb(ib);
}
return ib;
}
function bb(Ya) {
if (0 === Object.keys(Ya._waitingWriters).length)
return 0;
for (var ib = fb(Ya._nextWriter); !Ya._waitingWriters[ib];) {
ib = fb(ib);
}
return ib;
}
xd = Ab.Class.create({
init: function() {
Object.defineProperties(this, {
_readers: {
value: {},
writable: !1,
enumerable: !1,
configurable: !1
},
_waitingReaders: {
value: {},
writable: !1,
enumerable: !1,
configurable: !1
},
_writer: {
value: null,
writable: !0,
enumerable: !1,
configurable: !1
},
_waitingWriters: {
value: {},
writable: !1,
enumerable: !1,
configurable: !1
},
_nextReader: {
value: 0,
writable: !0,
enumerable: !1,
configurable: !1
},
_nextWriter: {
value: 0,
writable: !0,
enumerable: !1,
configurable: !1
},
_lastNumber: {
value: 0,
writable: !0,
enumerable: !1,
configurable: !1
}
});
},
cancel: function(Ya) {
var ib;
if (this._waitingReaders[Ya]) {
ib = this._waitingReaders[Ya];
delete this._waitingReaders[Ya];
Ya == this._nextReader && (this._nextReader = db(this));
ib.call(this, !0);
}
this._waitingWriters[Ya] && (ib = this._waitingWriters[Ya], delete this._waitingWriters[Ya], Ya == this._nextWriter && (this._nextWriter = bb(this)), ib.call(this, !0));
},
cancelAll: function() {
for (; 0 !== this._nextWriter;) {
this.cancel(this._nextWriter);
}
for (; 0 !== this._nextReader;) {
this.cancel(this._nextReader);
}
},
readLock: function(Ya, ib) {
var rb,
gb;
rb = this;
gb = fb(this._lastNumber);
this._lastNumber = gb;
ab(ib, function() {
var Aa;
if (!this._writer && 0 === Object.keys(this._waitingWriters).length)
return ( this._readers[gb] = !0, gb) ;
-1 != Ya && (Aa = setTimeout(function() {
delete rb._waitingReaders[gb];
gb == rb._nextReader && (rb._nextReader = db(rb));
ib.timeout();
}, Ya));
this._waitingReaders[gb] = function(Ia) {
clearTimeout(Aa);
Ia ? setTimeout(function() {
ib.result(zb);
}, 0) : (rb._readers[gb] = !0, setTimeout(function() {
ib.result(gb);
}, 0));
};
this._nextReader || (this._nextReader = gb);
}, rb);
return gb;
},
writeLock: function(Ya, ib) {
var rb,
gb;
rb = this;
gb = fb(this._lastNumber);
this._lastNumber = gb;
ab(ib, function() {
var Aa;
if (0 === Object.keys(this._readers).length && 0 === Object.keys(this._waitingReaders).length && !this._writer)
return this._writer = gb;
-1 != Ya && (Aa = setTimeout(function() {
delete rb._waitingWriters[gb];
gb == rb._nextWriter && (rb._nextWriter = bb(rb));
ib.timeout();
}, Ya));
this._waitingWriters[gb] = function(Ia) {
clearTimeout(Aa);
Ia ? setTimeout(function() {
ib.result(zb);
}, 0) : (rb._writer = gb, setTimeout(function() {
ib.result(gb);
}, 0));
};
this._nextWriter || (this._nextWriter = gb);
}, rb);
return gb;
},
unlock: function(Ya) {
if (Ya == this._writer)
this._writer = null;
else {
if (!this._readers[Ya])
throw new vb("There is no reader or writer with ticket number " + Ya + ".");
delete this._readers[Ya];
}
if (this._nextWriter)
0 < Object.keys(this._readers).length || (Ya = this._waitingWriters[this._nextWriter], delete this._waitingWriters[this._nextWriter], this._nextWriter = bb(this), Ya.call(this, !1));
else {
for (var ib = this._nextReader; 0 < Object.keys(this._waitingReaders).length; ib = fb(ib)) {
this._waitingReaders[ib] && (Ya = this._waitingReaders[ib], delete this._waitingReaders[ib], Ya.call(this, !1));
}
this._nextReader = 0;
}
}
});
})();
Ab.Class.mixin(X, {
JSON_PARSE_ERROR: new X(0, Ea.FAIL, "Error parsing JSON."),
JSON_ENCODE_ERROR: new X(1, Ea.FAIL, "Error encoding JSON."),
ENVELOPE_HASH_MISMATCH: new X(2, Ea.FAIL, "Computed hash does not match envelope hash."),
INVALID_PUBLIC_KEY: new X(3, Ea.FAIL, "Invalid public key provided."),
INVALID_PRIVATE_KEY: new X(4, Ea.FAIL, "Invalid private key provided."),
PLAINTEXT_ILLEGAL_BLOCK_SIZE: new X(5, Ea.FAIL, "Plaintext is not a multiple of the block size."),
PLAINTEXT_BAD_PADDING: new X(6, Ea.FAIL, "Plaintext contains incorrect padding."),
CIPHERTEXT_ILLEGAL_BLOCK_SIZE: new X(7, Ea.FAIL, "Ciphertext is not a multiple of the block size."),
CIPHERTEXT_BAD_PADDING: new X(8, Ea.FAIL, "Ciphertext contains incorrect padding."),
ENCRYPT_NOT_SUPPORTED: new X(9, Ea.FAIL, "Encryption not supported."),
DECRYPT_NOT_SUPPORTED: new X(10, Ea.FAIL, "Decryption not supported."),
ENVELOPE_KEY_ID_MISMATCH: new X(11, Ea.FAIL, "Encryption envelope key ID does not match crypto context key ID."),
CIPHERTEXT_ENVELOPE_PARSE_ERROR: new X(12, Ea.FAIL, "Error parsing ciphertext envelope."),
CIPHERTEXT_ENVELOPE_ENCODE_ERROR: new X(13, Ea.FAIL, "Error encoding ciphertext envelope."),
SIGN_NOT_SUPPORTED: new X(14, Ea.FAIL, "Sign not supported."),
VERIFY_NOT_SUPPORTED: new X(15, Ea.FAIL, "Verify not suppoprted."),
SIGNATURE_ERROR: new X(16, Ea.FAIL, "Signature not initialized or unable to process data/signature."),
HMAC_ERROR: new X(17, Ea.FAIL, "Error computing HMAC."),
ENCRYPT_ERROR: new X(18, Ea.FAIL, "Error encrypting plaintext."),
DECRYPT_ERROR: new X(19, Ea.FAIL, "Error decrypting ciphertext."),
INSUFFICIENT_CIPHERTEXT: new X(20, Ea.FAIL, "Insufficient ciphertext for decryption."),
SESSION_KEY_CREATION_FAILURE: new X(21, Ea.FAIL, "Error when creating session keys."),
ASN1_PARSE_ERROR: new X(22, Ea.FAIL, "Error parsing ASN.1."),
ASN1_ENCODE_ERROR: new X(23, Ea.FAIL, "Error encoding ASN.1."),
INVALID_SYMMETRIC_KEY: new X(24, Ea.FAIL, "Invalid symmetric key provided."),
INVALID_ENCRYPTION_KEY: new X(25, Ea.FAIL, "Invalid encryption key."),
INVALID_HMAC_KEY: new X(26, Ea.FAIL, "Invalid HMAC key."),
WRAP_NOT_SUPPORTED: new X(27, Ea.FAIL, "Wrap not supported."),
UNWRAP_NOT_SUPPORTED: new X(28, Ea.FAIL, "Unwrap not supported."),
UNIDENTIFIED_JWK_TYPE: new X(29, Ea.FAIL, "Unidentified JSON web key type."),
UNIDENTIFIED_JWK_USAGE: new X(30, Ea.FAIL, "Unidentified JSON web key usage."),
UNIDENTIFIED_JWK_ALGORITHM: new X(31, Ea.FAIL, "Unidentified JSON web key algorithm."),
WRAP_ERROR: new X(32, Ea.FAIL, "Error wrapping plaintext."),
UNWRAP_ERROR: new X(33, Ea.FAIL, "Error unwrapping ciphertext."),
INVALID_JWK: new X(34, Ea.FAIL, "Invalid JSON web key."),
INVALID_JWK_KEYDATA: new X(35, Ea.FAIL, "Invalid JSON web key keydata."),
UNSUPPORTED_JWK_ALGORITHM: new X(36, Ea.FAIL, "Unsupported JSON web key algorithm."),
WRAP_KEY_CREATION_FAILURE: new X(37, Ea.FAIL, "Error when creating wrapping key."),
INVALID_WRAP_CIPHERTEXT: new X(38, Ea.FAIL, "Invalid wrap ciphertext."),
UNSUPPORTED_JWE_ALGORITHM: new X(39, Ea.FAIL, "Unsupported JSON web encryption algorithm."),
JWE_ENCODE_ERROR: new X(40, Ea.FAIL, "Error encoding JSON web encryption header."),
JWE_PARSE_ERROR: new X(41, Ea.FAIL, "Error parsing JSON web encryption header."),
INVALID_ALGORITHM_PARAMS: new X(42, Ea.FAIL, "Invalid algorithm parameters."),
JWE_ALGORITHM_MISMATCH: new X(43, Ea.FAIL, "JSON web encryption header algorithms mismatch."),
KEY_IMPORT_ERROR: new X(44, Ea.FAIL, "Error importing key."),
KEY_EXPORT_ERROR: new X(45, Ea.FAIL, "Error exporting key."),
DIGEST_ERROR: new X(46, Ea.FAIL, "Error in digest."),
UNSUPPORTED_KEY: new X(47, Ea.FAIL, "Unsupported key type or algorithm."),
UNSUPPORTED_JWE_SERIALIZATION: new X(48, Ea.FAIL, "Unsupported JSON web encryption serialization."),
XML_PARSE_ERROR: new X(49, Ea.FAIL, "Error parsing XML."),
XML_ENCODE_ERROR: new X(50, Ea.FAIL, "Error encoding XML."),
INVALID_WRAPPING_KEY: new X(51, Ea.FAIL, "Invalid wrapping key."),
UNIDENTIFIED_CIPHERTEXT_ENVELOPE: new X(52, Ea.FAIL, "Unidentified ciphertext envelope version."),
UNIDENTIFIED_SIGNATURE_ENVELOPE: new X(53, Ea.FAIL, "Unidentified signature envelope version."),
UNSUPPORTED_CIPHERTEXT_ENVELOPE: new X(54, Ea.FAIL, "Unsupported ciphertext envelope version."),
UNSUPPORTED_SIGNATURE_ENVELOPE: new X(55, Ea.FAIL, "Unsupported signature envelope version."),
UNIDENTIFIED_CIPHERSPEC: new X(56, Ea.FAIL, "Unidentified cipher specification."),
UNIDENTIFIED_ALGORITHM: new X(57, Ea.FAIL, "Unidentified algorithm."),
SIGNATURE_ENVELOPE_PARSE_ERROR: new X(58, Ea.FAIL, "Error parsing signature envelope."),
SIGNATURE_ENVELOPE_ENCODE_ERROR: new X(59, Ea.FAIL, "Error encoding signature envelope."),
INVALID_SIGNATURE: new X(60, Ea.FAIL, "Invalid signature."),
WRAPKEY_FINGERPRINT_NOTSUPPORTED: new X(61, Ea.FAIL, "Wrap key fingerprint not supported"),
UNIDENTIFIED_JWK_KEYOP: new X(62, Ea.FAIL, "Unidentified JSON web key key operation."),
MASTERTOKEN_UNTRUSTED: new X(1E3, Ea.ENTITY_REAUTH, "Master token is not trusted."),
MASTERTOKEN_KEY_CREATION_ERROR: new X(1001, Ea.ENTITY_REAUTH, "Unable to construct symmetric keys from master token."),
MASTERTOKEN_EXPIRES_BEFORE_RENEWAL: new X(1002, Ea.ENTITY_REAUTH, "Master token expiration timestamp is before the renewal window opens."),
MASTERTOKEN_SESSIONDATA_MISSING: new X(1003, Ea.ENTITY_REAUTH, "No master token session data found."),
MASTERTOKEN_SEQUENCE_NUMBER_OUT_OF_RANGE: new X(1004, Ea.ENTITY_REAUTH, "Master token sequence number is out of range."),
MASTERTOKEN_SERIAL_NUMBER_OUT_OF_RANGE: new X(1005, Ea.ENTITY_REAUTH, "Master token serial number is out of range."),
MASTERTOKEN_TOKENDATA_INVALID: new X(1006, Ea.ENTITY_REAUTH, "Invalid master token data."),
MASTERTOKEN_SIGNATURE_INVALID: new X(1007, Ea.ENTITY_REAUTH, "Invalid master token signature."),
MASTERTOKEN_SESSIONDATA_INVALID: new X(1008, Ea.ENTITY_REAUTH, "Invalid master token session data."),
MASTERTOKEN_SEQUENCE_NUMBER_OUT_OF_SYNC: new X(1009, Ea.ENTITY_REAUTH, "Master token sequence number does not have the expected value."),
MASTERTOKEN_TOKENDATA_MISSING: new X(1010, Ea.ENTITY_REAUTH, "No master token data found."),
MASTERTOKEN_TOKENDATA_PARSE_ERROR: new X(1011, Ea.ENTITY_REAUTH, "Error parsing master token data."),
MASTERTOKEN_SESSIONDATA_PARSE_ERROR: new X(1012, Ea.ENTITY_REAUTH, "Error parsing master token session data."),
MASTERTOKEN_IDENTITY_REVOKED: new X(1013, Ea.ENTITY_REAUTH, "Master token entity identity is revoked."),
MASTERTOKEN_REJECTED_BY_APP: new X(1014, Ea.ENTITY_REAUTH, "Master token is rejected by the application."),
USERIDTOKEN_MASTERTOKEN_MISMATCH: new X(2E3, Ea.USER_REAUTH, "User ID token master token serial number does not match master token serial number."),
USERIDTOKEN_NOT_DECRYPTED: new X(2001, Ea.USER_REAUTH, "User ID token is not decrypted or verified."),
USERIDTOKEN_MASTERTOKEN_NULL: new X(2002, Ea.USER_REAUTH, "User ID token requires a master token."),
USERIDTOKEN_EXPIRES_BEFORE_RENEWAL: new X(2003, Ea.USER_REAUTH, "User ID token expiration timestamp is before the renewal window opens."),
USERIDTOKEN_USERDATA_MISSING: new X(2004, Ea.USER_REAUTH, "No user ID token user data found."),
USERIDTOKEN_MASTERTOKEN_NOT_FOUND: new X(2005, Ea.USER_REAUTH, "User ID token is bound to an unknown master token."),
USERIDTOKEN_MASTERTOKEN_SERIAL_NUMBER_OUT_OF_RANGE: new X(2006, Ea.USER_REAUTH, "User ID token master token serial number is out of range."),
USERIDTOKEN_SERIAL_NUMBER_OUT_OF_RANGE: new X(2007, Ea.USER_REAUTH, "User ID token serial number is out of range."),
USERIDTOKEN_TOKENDATA_INVALID: new X(2008, Ea.USER_REAUTH, "Invalid user ID token data."),
USERIDTOKEN_SIGNATURE_INVALID: new X(2009, Ea.USER_REAUTH, "Invalid user ID token signature."),
USERIDTOKEN_USERDATA_INVALID: new X(2010, Ea.USER_REAUTH, "Invalid user ID token user data."),
USERIDTOKEN_IDENTITY_INVALID: new X(2011, Ea.USER_REAUTH, "Invalid user ID token user identity."),
RESERVED_2012: new X(2012, Ea.USER_REAUTH, "The entity is not associated with the user."),
USERIDTOKEN_IDENTITY_NOT_FOUND: new X(2013, Ea.USER_REAUTH, "The user identity was not found."),
USERIDTOKEN_PASSWORD_VERSION_CHANGED: new X(2014, Ea.USER_REAUTH, "The user identity must be reauthenticated because the password version changed."),
USERIDTOKEN_USERAUTH_DATA_MISMATCH: new X(2015, Ea.USER_REAUTH, "The user ID token and user authentication data user identities do not match."),
USERIDTOKEN_TOKENDATA_MISSING: new X(2016, Ea.USER_REAUTH, "No user ID token data found."),
USERIDTOKEN_TOKENDATA_PARSE_ERROR: new X(2017, Ea.USER_REAUTH, "Error parsing user ID token data."),
USERIDTOKEN_USERDATA_PARSE_ERROR: new X(2018, Ea.USER_REAUTH, "Error parsing user ID token user data."),
USERIDTOKEN_REVOKED: new X(2019, Ea.USER_REAUTH, "User ID token is revoked."),
USERIDTOKEN_REJECTED_BY_APP: new X(2020, Ea.USER_REAUTH, "User ID token is rejected by the application."),
SERVICETOKEN_MASTERTOKEN_MISMATCH: new X(3E3, Ea.FAIL, "Service token master token serial number does not match master token serial number."),
SERVICETOKEN_USERIDTOKEN_MISMATCH: new X(3001, Ea.FAIL, "Service token user ID token serial number does not match user ID token serial number."),
SERVICETOKEN_SERVICEDATA_INVALID: new X(3002, Ea.FAIL, "Service token data invalid."),
SERVICETOKEN_MASTERTOKEN_NOT_FOUND: new X(3003, Ea.FAIL, "Service token is bound to an unknown master token."),
SERVICETOKEN_USERIDTOKEN_NOT_FOUND: new X(3004, Ea.FAIL, "Service token is bound to an unknown user ID token."),
SERVICETOKEN_MASTERTOKEN_SERIAL_NUMBER_OUT_OF_RANGE: new X(3005, Ea.FAIL, "Service token master token serial number is out of range."),
SERVICETOKEN_USERIDTOKEN_SERIAL_NUMBER_OUT_OF_RANGE: new X(3006, Ea.FAIL, "Service token user ID token serial number is out of range."),
SERVICETOKEN_TOKENDATA_INVALID: new X(3007, Ea.FAIL, "Invalid service token data."),
SERVICETOKEN_SIGNATURE_INVALID: new X(3008, Ea.FAIL, "Invalid service token signature."),
SERVICETOKEN_TOKENDATA_MISSING: new X(3009, Ea.FAIL, "No service token data found."),
UNIDENTIFIED_ENTITYAUTH_SCHEME: new X(4E3, Ea.FAIL, "Unable to identify entity authentication scheme."),
ENTITYAUTH_FACTORY_NOT_FOUND: new X(4001, Ea.FAIL, "No factory registered for entity authentication scheme."),
X509CERT_PARSE_ERROR: new X(4002, Ea.ENTITYDATA_REAUTH, "Error parsing X.509 certificate data."),
X509CERT_ENCODE_ERROR: new X(4003, Ea.ENTITYDATA_REAUTH, "Error encoding X.509 certificate data."),
X509CERT_VERIFICATION_FAILED: new X(4004, Ea.ENTITYDATA_REAUTH, "X.509 certificate verification failed."),
ENTITY_NOT_FOUND: new X(4005, Ea.FAIL, "Entity not recognized."),
INCORRECT_ENTITYAUTH_DATA: new X(4006, Ea.FAIL, "Entity used incorrect entity authentication data type."),
RSA_PUBLICKEY_NOT_FOUND: new X(4007, Ea.ENTITYDATA_REAUTH, "RSA public key not found."),
NPTICKET_GRACE_PERIOD_EXCEEDED: new X(4008, Ea.ENTITYDATA_REAUTH, "Fake NP-Tickets cannot be used after the grace period when the Playstation Network is up."),
NPTICKET_SERVICE_ID_MISSING: new X(4009, Ea.ENTITYDATA_REAUTH, "NP-Ticket service ID is missing."),
NPTICKET_SERVICE_ID_DISALLOWED: new X(4010, Ea.ENTITYDATA_REAUTH, "NP-Ticket service ID is not allowed."),
NPTICKET_NOT_YET_VALID: new X(4011, Ea.ENTITYDATA_REAUTH, "NP-Ticket issuance date is in the future."),
NPTICKET_EXPIRED: new X(4012, Ea.ENTITYDATA_REAUTH, "NP-Ticket has expired."),
NPTICKET_PRIVATE_KEY_NOT_FOUND: new X(4013, Ea.ENTITYDATA_REAUTH, "No private key found for NP-Ticket GUID."),
NPTICKET_COOKIE_VERIFICATION_FAILED: new X(4014, Ea.ENTITYDATA_REAUTH, "NP-Ticket cookie signature verification failed."),
NPTICKET_INCORRECT_COOKIE_VERSION: new X(4015, Ea.ENTITYDATA_REAUTH, "Incorrect NP-Ticket cookie version."),
NPTICKET_BROKEN: new X(4016, Ea.ENTITYDATA_REAUTH, "NP-Ticket broken."),
NPTICKET_VERIFICATION_FAILED: new X(4017, Ea.ENTITYDATA_REAUTH, "NP-Ticket signature verification failed."),
NPTICKET_ERROR: new X(4018, Ea.ENTITYDATA_REAUTH, "Unknown NP-Ticket TCM error."),
NPTICKET_CIPHER_INFO_NOT_FOUND: new X(4019, Ea.ENTITYDATA_REAUTH, "No cipher information found for NP-Ticket."),
NPTICKET_INVALID_CIPHER_INFO: new X(4020, Ea.ENTITYDATA_REAUTH, "Cipher information for NP-Ticket is invalid."),
NPTICKET_UNSUPPORTED_VERSION: new X(4021, Ea.ENTITYDATA_REAUTH, "Unsupported NP-Ticket version."),
NPTICKET_INCORRECT_KEY_LENGTH: new X(4022, Ea.ENTITYDATA_REAUTH, "Incorrect NP-Ticket public key length."),
UNSUPPORTED_ENTITYAUTH_DATA: new X(4023, Ea.FAIL, "Unsupported entity authentication data."),
CRYPTEX_RSA_KEY_SET_NOT_FOUND: new X(4024, Ea.FAIL, "Cryptex RSA key set not found."),
ENTITY_REVOKED: new X(4025, Ea.FAIL, "Entity is revoked."),
ENTITY_REJECTED_BY_APP: new X(4026, Ea.ENTITYDATA_REAUTH, "Entity is rejected by the application."),
FORCE_LOGIN: new X(5E3, Ea.USERDATA_REAUTH, "User must login again."),
NETFLIXID_COOKIES_EXPIRED: new X(5001, Ea.USERDATA_REAUTH, "Netflix ID cookie identity has expired."),
NETFLIXID_COOKIES_BLANK: new X(5002, Ea.USERDATA_REAUTH, "Netflix ID or Secure Netflix ID cookie is blank."),
UNIDENTIFIED_USERAUTH_SCHEME: new X(5003, Ea.FAIL, "Unable to identify user authentication scheme."),
USERAUTH_FACTORY_NOT_FOUND: new X(5004, Ea.FAIL, "No factory registered for user authentication scheme."),
EMAILPASSWORD_BLANK: new X(5005, Ea.USERDATA_REAUTH, "Email or password is blank."),
AUTHMGR_COMMS_FAILURE: new X(5006, Ea.TRANSIENT_FAILURE, "Error communicating with authentication manager."),
EMAILPASSWORD_INCORRECT: new X(5007, Ea.USERDATA_REAUTH, "Email or password is incorrect."),
UNSUPPORTED_USERAUTH_DATA: new X(5008, Ea.FAIL, "Unsupported user authentication data."),
SSOTOKEN_BLANK: new X(5009, Ea.SSOTOKEN_REJECTED, "SSO token is blank."),
SSOTOKEN_NOT_ASSOCIATED: new X(5010, Ea.USERDATA_REAUTH, "SSO token is not associated with a Netflix user."),
USERAUTH_USERIDTOKEN_INVALID: new X(5011, Ea.USERDATA_REAUTH, "User authentication data user ID token is invalid."),
PROFILEID_BLANK: new X(5012, Ea.USERDATA_REAUTH, "Profile ID is blank."),
UNIDENTIFIED_USERAUTH_MECHANISM: new X(5013, Ea.FAIL, "Unable to identify user authentication mechanism."),
UNSUPPORTED_USERAUTH_MECHANISM: new X(5014, Ea.FAIL, "Unsupported user authentication mechanism."),
SSOTOKEN_INVALID: new X(5015, Ea.SSOTOKEN_REJECTED, "SSO token invalid."),
USERAUTH_MASTERTOKEN_MISSING: new X(5016, Ea.USERDATA_REAUTH, "User authentication required master token is missing."),
ACCTMGR_COMMS_FAILURE: new X(5017, Ea.TRANSIENT_FAILURE, "Error communicating with the account manager."),
SSO_ASSOCIATION_FAILURE: new X(5018, Ea.TRANSIENT_FAILURE, "SSO user association failed."),
SSO_DISASSOCIATION_FAILURE: new X(5019, Ea.TRANSIENT_FAILURE, "SSO user disassociation failed."),
MDX_USERAUTH_VERIFICATION_FAILED: new X(5020, Ea.USERDATA_REAUTH, "MDX user authentication data verification failed."),
USERAUTH_USERIDTOKEN_NOT_DECRYPTED: new X(5021, Ea.USERDATA_REAUTH, "User authentication data user ID token is not decrypted or verified."),
MDX_USERAUTH_ACTION_INVALID: new X(5022, Ea.USERDATA_REAUTH, "MDX user authentication data action is invalid."),
CTICKET_DECRYPT_ERROR: new X(5023, Ea.USERDATA_REAUTH, "CTicket decryption failed."),
USERAUTH_MASTERTOKEN_INVALID: new X(5024, Ea.USERDATA_REAUTH, "User authentication data master token is invalid."),
USERAUTH_MASTERTOKEN_NOT_DECRYPTED: new X(5025, Ea.USERDATA_REAUTH, "User authentication data master token is not decrypted or verified."),
CTICKET_CRYPTOCONTEXT_ERROR: new X(5026, Ea.USERDATA_REAUTH, "Error creating CTicket crypto context."),
MDX_PIN_BLANK: new X(5027, Ea.USERDATA_REAUTH, "MDX controller or target PIN is blank."),
MDX_PIN_MISMATCH: new X(5028, Ea.USERDATA_REAUTH, "MDX controller and target PIN mismatch."),
MDX_USER_UNKNOWN: new X(5029, Ea.USERDATA_REAUTH, "MDX controller user ID token or CTicket is not decrypted or verified."),
USERAUTH_USERIDTOKEN_MISSING: new X(5030, Ea.USERDATA_REAUTH, "User authentication required user ID token is missing."),
MDX_CONTROLLERDATA_INVALID: new X(5031, Ea.USERDATA_REAUTH, "MDX controller authentication data is invalid."),
USERAUTH_ENTITY_MISMATCH: new X(5032, Ea.USERDATA_REAUTH, "User authentication data does not match entity identity."),
USERAUTH_INCORRECT_DATA: new X(5033, Ea.FAIL, "Entity used incorrect key request data type"),
SSO_ASSOCIATION_WITH_NONMEMBER: new X(5034, Ea.USERDATA_REAUTH, "SSO user association failed because the customer is not a member."),
SSO_ASSOCIATION_WITH_FORMERMEMBER: new X(5035, Ea.USERDATA_REAUTH, "SSO user association failed because the customer is a former member."),
SSO_ASSOCIATION_CONFLICT: new X(5036, Ea.USERDATA_REAUTH, "SSO user association failed because the token identifies a different member."),
USER_REJECTED_BY_APP: new X(5037, Ea.USERDATA_REAUTH, "User is rejected by the application."),
PROFILE_SWITCH_DISALLOWED: new X(5038, Ea.TRANSIENT_FAILURE, "Unable to switch user profile."),
MEMBERSHIPCLIENT_COMMS_FAILURE: new X(5039, Ea.TRANSIENT_FAILURE, "Error communicating with the membership manager."),
USERIDTOKEN_IDENTITY_NOT_ASSOCIATED_WITH_ENTITY: new X(5040, Ea.USER_REAUTH, "The entity is not associated with the user."),
UNSUPPORTED_COMPRESSION: new X(6E3, Ea.FAIL, "Unsupported compression algorithm."),
COMPRESSION_ERROR: new X(6001, Ea.FAIL, "Error compressing data."),
UNCOMPRESSION_ERROR: new X(6002, Ea.FAIL, "Error uncompressing data."),
MESSAGE_ENTITY_NOT_FOUND: new X(6003, Ea.FAIL, "Message header entity authentication data or master token not found."),
PAYLOAD_MESSAGE_ID_MISMATCH: new X(6004, Ea.FAIL, "Payload chunk message ID does not match header message ID ."),
PAYLOAD_SEQUENCE_NUMBER_MISMATCH: new X(6005, Ea.FAIL, "Payload chunk sequence number does not match expected sequence number."),
PAYLOAD_VERIFICATION_FAILED: new X(6006, Ea.FAIL, "Payload chunk payload signature verification failed."),
MESSAGE_DATA_MISSING: new X(6007, Ea.FAIL, "No message data found."),
MESSAGE_FORMAT_ERROR: new X(6008, Ea.FAIL, "Malformed message data."),
MESSAGE_VERIFICATION_FAILED: new X(6009, Ea.FAIL, "Message header/error data signature verification failed."),
HEADER_DATA_MISSING: new X(6010, Ea.FAIL, "No header data found."),
PAYLOAD_DATA_MISSING: new X(6011, Ea.FAIL, "No payload data found in non-EOM payload chunk."),
PAYLOAD_DATA_CORRUPT: new X(6012, Ea.FAIL, "Corrupt payload data found in non-EOM payload chunk."),
UNIDENTIFIED_COMPRESSION: new X(6013, Ea.FAIL, "Unidentified compression algorithm."),
MESSAGE_EXPIRED: new X(6014, Ea.EXPIRED, "Message expired and not renewable. Rejected."),
MESSAGE_ID_OUT_OF_RANGE: new X(6015, Ea.FAIL, "Message ID is out of range."),
INTERNAL_CODE_NEGATIVE: new X(6016, Ea.FAIL, "Error header internal code is negative."),
UNEXPECTED_RESPONSE_MESSAGE_ID: new X(6017, Ea.FAIL, "Unexpected response message ID. Possible replay."),
RESPONSE_REQUIRES_ENCRYPTION: new X(6018, Ea.KEYX_REQUIRED, "Message response requires encryption."),
PAYLOAD_SEQUENCE_NUMBER_OUT_OF_RANGE: new X(6019, Ea.FAIL, "Payload chunk sequence number is out of range."),
PAYLOAD_MESSAGE_ID_OUT_OF_RANGE: new X(6020, Ea.FAIL, "Payload chunk message ID is out of range."),
MESSAGE_REPLAYED: new X(6021, Ea.REPLAYED, "Non-replayable message replayed."),
INCOMPLETE_NONREPLAYABLE_MESSAGE: new X(6022, Ea.FAIL, "Non-replayable message sent non-renewable or without key request data or without a master token."),
HEADER_SIGNATURE_INVALID: new X(6023, Ea.FAIL, "Invalid Header signature."),
HEADER_DATA_INVALID: new X(6024, Ea.FAIL, "Invalid header data."),
PAYLOAD_INVALID: new X(6025, Ea.FAIL, "Invalid payload."),
PAYLOAD_SIGNATURE_INVALID: new X(6026, Ea.FAIL, "Invalid payload signature."),
RESPONSE_REQUIRES_MASTERTOKEN: new X(6027, Ea.KEYX_REQUIRED, "Message response requires a master token."),
RESPONSE_REQUIRES_USERIDTOKEN: new X(6028, Ea.USER_REAUTH, "Message response requires a user ID token."),
REQUEST_REQUIRES_USERAUTHDATA: new X(6029, Ea.FAIL, "User-associated message requires user authentication data."),
UNEXPECTED_MESSAGE_SENDER: new X(6030, Ea.FAIL, "Message sender is equal to the local entity or not the master token entity."),
NONREPLAYABLE_MESSAGE_REQUIRES_MASTERTOKEN: new X(6031, Ea.FAIL, "Non-replayable message requires a master token."),
NONREPLAYABLE_ID_OUT_OF_RANGE: new X(6032, Ea.FAIL, "Non-replayable message non-replayable ID is out of range."),
MESSAGE_SERVICETOKEN_MISMATCH: new X(6033, Ea.FAIL, "Service token master token or user ID token serial number does not match the message token serial numbers."),
MESSAGE_PEER_SERVICETOKEN_MISMATCH: new X(6034, Ea.FAIL, "Peer service token master token or user ID token serial number does not match the message peer token serial numbers."),
RESPONSE_REQUIRES_INTEGRITY_PROTECTION: new X(6035, Ea.KEYX_REQUIRED, "Message response requires integrity protection."),
HANDSHAKE_DATA_MISSING: new X(6036, Ea.FAIL, "Handshake message is not renewable or does not contain key request data."),
MESSAGE_RECIPIENT_MISMATCH: new X(6037, Ea.FAIL, "Message recipient does not match local identity."),
UNIDENTIFIED_KEYX_SCHEME: new X(7E3, Ea.FAIL, "Unable to identify key exchange scheme."),
KEYX_FACTORY_NOT_FOUND: new X(7001, Ea.FAIL, "No factory registered for key exchange scheme."),
KEYX_REQUEST_NOT_FOUND: new X(7002, Ea.FAIL, "No key request found matching header key response data."),
UNIDENTIFIED_KEYX_KEY_ID: new X(7003, Ea.FAIL, "Unable to identify key exchange key ID."),
UNSUPPORTED_KEYX_KEY_ID: new X(7004, Ea.FAIL, "Unsupported key exchange key ID."),
UNIDENTIFIED_KEYX_MECHANISM: new X(7005, Ea.FAIL, "Unable to identify key exchange mechanism."),
UNSUPPORTED_KEYX_MECHANISM: new X(7006, Ea.FAIL, "Unsupported key exchange mechanism."),
KEYX_RESPONSE_REQUEST_MISMATCH: new X(7007, Ea.FAIL, "Key exchange response does not match request."),
KEYX_PRIVATE_KEY_MISSING: new X(7008, Ea.FAIL, "Key exchange private key missing."),
UNKNOWN_KEYX_PARAMETERS_ID: new X(7009, Ea.FAIL, "Key exchange parameters ID unknown or invalid."),
KEYX_MASTER_TOKEN_MISSING: new X(7010, Ea.FAIL, "Master token required for key exchange is missing."),
KEYX_INVALID_PUBLIC_KEY: new X(7011, Ea.FAIL, "Key exchange public key is invalid."),
KEYX_PUBLIC_KEY_MISSING: new X(7012, Ea.FAIL, "Key exchange public key missing."),
KEYX_WRAPPING_KEY_MISSING: new X(7013, Ea.FAIL, "Key exchange wrapping key missing."),
KEYX_WRAPPING_KEY_ID_MISSING: new X(7014, Ea.FAIL, "Key exchange wrapping key ID missing."),
KEYX_INVALID_WRAPPING_KEY: new X(7015, Ea.FAIL, "Key exchange wrapping key is invalid."),
KEYX_INCORRECT_DATA: new X(7016, Ea.FAIL, "Entity used incorrect wrapping key data type"),
CRYPTEX_ENCRYPTION_ERROR: new X(8E3, Ea.FAIL, "Error encrypting data with cryptex."),
CRYPTEX_DECRYPTION_ERROR: new X(8001, Ea.FAIL, "Error decrypting data with cryptex."),
CRYPTEX_MAC_ERROR: new X(8002, Ea.FAIL, "Error computing MAC with cryptex."),
CRYPTEX_VERIFY_ERROR: new X(8003, Ea.FAIL, "Error verifying MAC with cryptex."),
CRYPTEX_CONTEXT_CREATION_FAILURE: new X(8004, Ea.FAIL, "Error creating cryptex cipher or MAC context."),
DATAMODEL_DEVICE_ACCESS_ERROR: new X(8005, Ea.TRANSIENT_FAILURE, "Error accessing data model device."),
DATAMODEL_DEVICETYPE_NOT_FOUND: new X(8006, Ea.FAIL, "Data model device type not found."),
CRYPTEX_KEYSET_UNSUPPORTED: new X(8007, Ea.FAIL, "Cryptex key set not supported."),
CRYPTEX_PRIVILEGE_EXCEPTION: new X(8008, Ea.FAIL, "Insufficient privileges for cryptex operation."),
CRYPTEX_WRAP_ERROR: new X(8009, Ea.FAIL, "Error wrapping data with cryptex."),
CRYPTEX_UNWRAP_ERROR: new X(8010, Ea.FAIL, "Error unwrapping data with cryptex."),
CRYPTEX_COMMS_FAILURE: new X(8011, Ea.TRANSIENT_FAILURE, "Error comunicating with cryptex."),
CRYPTEX_SIGN_ERROR: new X(8012, Ea.FAIL, "Error computing signature with cryptex."),
INTERNAL_EXCEPTION: new X(9E3, Ea.TRANSIENT_FAILURE, "Internal exception."),
MSL_COMMS_FAILURE: new X(9001, Ea.FAIL, "Error communicating with MSL entity."),
NONE: new X(9999, Ea.FAIL, "Special unit test error.")
});
Object.freeze(X);
(function() {
cb = Ab.Class.create(Error());
cb.mixin({
init: function(fb, db, bb) {
var ib,
rb,
gb;
function Ya() {
return rb ? rb : this.cause && this.cause instanceof cb ? this.cause.messageId : zb;
}
Error.captureStackTrace && Error.captureStackTrace(this, this.constructor);
ib = fb.message;
db && (ib += " [" + db + "]");
gb = this.stack;
Object.defineProperties(this, {
message: {
value: ib,
writable: !1,
configurable: !0
},
error: {
value: fb,
writable: !1,
configurable: !0
},
cause: {
value: bb,
writable: !1,
configurable: !0
},
name: {
value: "MslException",
writable: !1,
configurable: !0
},
masterToken: {
value: null,
writable: !0,
configurable: !1
},
entityAuthenticationData: {
value: null,
writable: !0,
configurable: !1
},
userIdToken: {
value: null,
writable: !0,
configurable: !1
},
userAuthenticationData: {
value: null,
writable: !0,
configurable: !1
},
messageId: {
get: Ya,
set: function(Aa) {
if (0 > Aa || Aa > Kb)
throw new RangeError("Message ID " + Aa + " is outside the valid range.");
Ya() || (rb = Aa);
},
configurable: !0
},
stack: {
get: function() {
var Aa;
Aa = this.toString();
gb && (Aa += "\n" + gb);
bb && bb.stack && (Aa += "\nCaused by " + bb.stack);
return Aa;
},
configurable: !0
}
});
},
setEntity: function(fb) {
!fb || this.masterToken || this.entityAuthenticationData || (fb instanceof bc ? this.masterToken = fb : fb instanceof Dc && (this.entityAuthenticationData = fb));
return this;
},
setUser: function(fb) {
!fb || this.userIdToken || this.userAuthenticationData || (fb instanceof Kc ? this.userIdToken = fb : fb instanceof Rc && (this.userAuthenticationData = fb));
return this;
},
setMessageId: function(fb) {
this.messageId = fb;
return this;
},
toString: function() {
return this.name + ": " + this.message;
}
});
})();
tb = cb.extend({
init: function ib(db, bb, Ya) {
ib.base.call(this, db, bb, Ya);
Object.defineProperties(this, {
name: {
value: "MslCryptoException",
writable: !1,
configurable: !0
}
});
}
});
Db = cb.extend({
init: function rb(bb, Ya, ib) {
rb.base.call(this, bb, Ya, ib);
Object.defineProperties(this, {
name: {
value: "MslEncodingException",
writable: !1,
configurable: !0
}
});
}
});
kc = cb.extend({
init: function gb(Ya, ib, rb) {
gb.base.call(this, Ya, ib, rb);
Object.defineProperties(this, {
name: {
value: "MslEntityAuthException",
writable: !1,
configurable: !0
}
});
}
});
(function() {
cc = Ab.Class.create(Error());
cc.mixin({
init: function(Ya, ib, rb) {
var gb;
Error.captureStackTrace && Error.captureStackTrace(this, this.constructor);
gb = this.stack;
Object.defineProperties(this, {
message: {
value: Ya,
writable: !1,
configurable: !1
},
cause: {
value: ib,
writable: !1,
configurable: !1
},
requestCause: {
value: rb,
writable: !1,
configurable: !1
},
name: {
value: "MslErrorResponseException",
writable: !1,
configurable: !0
},
stack: {
get: function() {
var Aa;
Aa = this.toString();
gb && (Aa += "\n" + gb);
ib && ib.stack && (Aa += "\nCaused by " + ib.stack);
return Aa;
},
configurable: !0
}
});
},
toString: function() {
return this.name + ": " + this.message;
}
});
})();
(function() {
Rb = Ab.Class.create(Error());
Rb.mixin({
init: function(Ya, ib) {
var rb;
Error.captureStackTrace && Error.captureStackTrace(this, this.constructor);
rb = this.stack;
Object.defineProperties(this, {
message: {
value: Ya,
writable: !1,
configurable: !1
},
cause: {
value: ib,
writable: !1,
configurable: !1
},
name: {
value: "MslIoException",
writable: !1,
configurable: !0
},
stack: {
get: function() {
var gb;
gb = this.toString();
rb && (gb += "\n" + rb);
ib && ib.stack && (gb += "\nCaused by " + ib.stack);
return gb;
},
configurable: !0
}
});
},
toString: function() {
return this.name + ": " + this.message;
}
});
})();
(function() {
vb = Ab.Class.create(Error());
vb.mixin({
init: function(Ya, ib) {
var rb;
Error.captureStackTrace && Error.captureStackTrace(this, this.constructor);
rb = this.stack;
Object.defineProperties(this, {
message: {
value: Ya,
writable: !1,
configurable: !1
},
cause: {
value: ib,
writable: !1,
configurable: !1
},
name: {
value: "MslInternalException",
writable: !1,
configurable: !0
},
stack: {
get: function() {
var gb;
gb = this.toString();
rb && (gb += "\n" + rb);
ib && ib.stack && (gb += "\nCaused by " + ib.stack);
return gb;
},
configurable: !0
}
});
},
toString: function() {
return this.name + ": " + this.message;
}
});
})();
(function() {
Vb = Ab.Class.create(Error());
Vb.mixin({
init: function(Ya, ib) {
var rb;
Error.captureStackTrace && Error.captureStackTrace(this, this.constructor);
rb = this.stack;
Object.defineProperties(this, {
message: {
value: Ya,
writable: !1,
configurable: !1
},
cause: {
value: ib,
writable: !1,
configurable: !1
},
name: {
value: "MslInterruptedException",
writable: !1,
configurable: !0
},
stack: {
get: function() {
var gb;
gb = this.toString();
rb && (gb += "\n" + rb);
ib && ib.stack && (gb += "\nCaused by " + ib.stack);
return gb;
},
configurable: !0
}
});
},
toString: function() {
return this.name + ": " + this.message;
}
});
})();
Mb = cb.extend({
init: function Aa(ib, rb, gb) {
Aa.base.call(this, ib, rb, gb);
Object.defineProperties(this, {
name: {
value: "MslKeyExchangeException",
writable: !1,
configurable: !0
}
});
}
});
Sc = cb.extend({
init: function Aa(rb, gb) {
Aa.base.call(this, rb);
Object.defineProperties(this, {
masterToken: {
value: gb,
writable: !1,
configurable: !1
},
name: {
value: "MslMasterTokenException",
writable: !1,
configurable: !0
}
});
}
});
Hb = cb.extend({
init: function Ma(gb, Aa, Ia) {
Ma.base.call(this, gb, Aa, Ia);
Object.defineProperties(this, {
name: {
value: "MslMessageException",
writable: !1,
configurable: !0
}
});
}
});
uc = cb.extend({
init: function ta(Aa, Ia, Ma) {
ta.base.call(this, Aa, Ia, Ma);
Object.defineProperties(this, {
name: {
value: "MslUserAuthException",
writable: !1,
configurable: !0
}
});
}
});
(function() {
var ma;
function Aa(fa) {
return "undefined" === typeof fa ? !1 : fa;
}
function Ia(fa) {
return fa && fa.length ? (Wb === ma.V2014_02 && (fa = fa.map(function(ba) {
return "wrap" == ba ? "wrapKey" : "unwrap" == ba ? "unwrapKey" : ba;
})), fa) : Wb === ma.V2014_02 ? ("encrypt decrypt sign verify deriveKey wrapKey unwrapKey").split(" ") : ("encrypt decrypt sign verify deriveKey wrap unwrap").split(" ");
}
function Ma(fa, ba, Y, Z, ea) {
return Promise.resolve().then(function() {
return Nb.importKey(fa, ba, Y, Z, ea);
}).catch(function(aa) {
var ja;
if ("spki" !== fa && "pkcs8" !== fa)
throw aa;
aa = ASN1.webCryptoAlgorithmToJwkAlg(Y);
ja = ASN1.webCryptoUsageToJwkKeyOps(ea);
aa = ASN1.rsaDerToJwk(ba, aa, ja, Z);
if (!aa)
throw Error("Could not make valid JWK from DER input");
aa = JSON.stringify(aa);
return Nb.importKey("jwk", td(aa), Y, Z, ea);
});
}
function ta(fa, ba) {
return Promise.resolve().then(function() {
return Nb.exportKey(fa, ba);
}).catch(function(Y) {
if ("spki" !== fa && "pkcs8" !== fa)
throw Y;
return Nb.exportKey("jwk", ba).then(function(Z) {
Z = JSON.parse(sd(new Uint8Array(Z)));
Z = ASN1.jwkToRsaDer(Z);
if (!Z)
throw Error("Could not make valid DER from JWK input");
return Z.getDer().buffer;
});
});
}
ma = ed = {
LEGACY: 1,
V2014_01: 2,
V2014_02: 3,
LATEST: 3
};
Object.freeze(ed);
Wb = ma.LATEST;
Jb = {
encrypt: function(fa, ba, Y) {
switch (Wb) {
case ma.LEGACY:
return new Promise(function(Z, ea) {
var aa;
aa = Nb.encrypt(fa, ba, Y);
aa.oncomplete = function(ja) {
Z(ja.target.result);
};
aa.onerror = function(ja) {
ea(ja);
};
});
case ma.V2014_01:
case ma.V2014_02:
return Nb.encrypt(fa, ba, Y).then(function(Z) {
return new Uint8Array(Z);
});
default:
throw Error("Unsupported Web Crypto version " + WEB_CRYPTO_VERSION + ".");
}
},
decrypt: function(fa, ba, Y) {
switch (Wb) {
case ma.LEGACY:
return new Promise(function(Z, ea) {
var aa;
aa = Nb.decrypt(fa, ba, Y);
aa.oncomplete = function(ja) {
Z(ja.target.result);
};
aa.onerror = function(ja) {
ea(ja);
};
});
case ma.V2014_01:
case ma.V2014_02:
return Nb.decrypt(fa, ba, Y).then(function(Z) {
return new Uint8Array(Z);
});
default:
throw Error("Unsupported Web Crypto version " + WEB_CRYPTO_VERSION + ".");
}
},
sign: function(fa, ba, Y) {
switch (Wb) {
case ma.LEGACY:
return new Promise(function(Z, ea) {
var aa;
aa = Nb.sign(fa, ba, Y);
aa.oncomplete = function(ja) {
Z(ja.target.result);
};
aa.onerror = function(ja) {
ea(ja);
};
});
case ma.V2014_01:
case ma.V2014_02:
return Nb.sign(fa, ba, Y).then(function(Z) {
return new Uint8Array(Z);
});
default:
throw Error("Unsupported Web Crypto version " + WEB_CRYPTO_VERSION + ".");
}
},
verify: function(fa, ba, Y, Z) {
switch (Wb) {
case ma.LEGACY:
return new Promise(function(ea, aa) {
var ja;
ja = Nb.verify(fa, ba, Y, Z);
ja.oncomplete = function(ua) {
ea(ua.target.result);
};
ja.onerror = function(ua) {
aa(ua);
};
});
case ma.V2014_01:
case ma.V2014_02:
return Nb.verify(fa, ba, Y, Z);
default:
throw Error("Unsupported Web Crypto version " + WEB_CRYPTO_VERSION + ".");
}
},
digest: function(fa, ba) {
switch (Wb) {
case ma.LEGACY:
return new Promise(function(Y, Z) {
var ea;
ea = Nb.digest(fa, ba);
ea.oncomplete = function(aa) {
Y(aa.target.result);
};
ea.onerror = function(aa) {
Z(aa);
};
});
case ma.V2014_01:
case ma.V2014_02:
return Nb.digest(fa, ba).then(function(Y) {
return new Uint8Array(Y);
});
default:
throw Error("Unsupported Web Crypto version " + WEB_CRYPTO_VERSION + ".");
}
},
generateKey: function(fa, ba, Y) {
var Z,
ea;
Z = Aa(ba);
ea = Ia(Y);
switch (Wb) {
case ma.LEGACY:
return new Promise(function(aa, ja) {
var ua;
ua = Nb.generateKey(fa, Z, ea);
ua.oncomplete = function(sa) {
aa(sa.target.result);
};
ua.onerror = function(sa) {
ja(sa);
};
});
case ma.V2014_01:
case ma.V2014_02:
return Nb.generateKey(fa, Z, ea);
default:
throw Error("Unsupported Web Crypto version " + WEB_CRYPTO_VERSION + ".");
}
},
deriveKey: function(fa, ba, Y, Z, ea) {
var aa,
ja;
aa = Aa(Z);
ja = Ia(ea);
switch (Wb) {
case ma.LEGACY:
return new Promise(function(ua, sa) {
var la;
la = Nb.deriveKey(fa, ba, Y, aa, ja);
la.oncomplete = function(qa) {
ua(qa.target.result);
};
la.onerror = function(qa) {
sa(qa);
};
});
case ma.V2014_01:
case ma.V2014_02:
return Nb.deriveKey(fa, ba, Y, aa, ja);
default:
throw Error("Unsupported Web Crypto version " + WEB_CRYPTO_VERSION + ".");
}
},
importKey: function(fa, ba, Y, Z, ea) {
var aa,
ja;
aa = Aa(Z);
ja = Ia(ea);
switch (Wb) {
case ma.LEGACY:
return new Promise(function(ua, sa) {
var la;
la = Nb.importKey(fa, ba, Y, aa, ja);
la.oncomplete = function(qa) {
ua(qa.target.result);
};
la.onerror = function(qa) {
sa(qa);
};
});
case ma.V2014_01:
case ma.V2014_02:
return Ma(fa, ba, Y, aa, ja);
default:
throw Error("Unsupported Web Crypto version " + WEB_CRYPTO_VERSION + ".");
}
},
exportKey: function(fa, ba) {
switch (Wb) {
case ma.LEGACY:
return new Promise(function(Y, Z) {
var ea;
ea = Nb.exportKey(fa, ba);
ea.oncomplete = function(aa) {
Y(aa.target.result);
};
ea.onerror = function(aa) {
Z(aa);
};
});
case ma.V2014_01:
case ma.V2014_02:
return ta(fa, ba).then(function(Y) {
return new Uint8Array(Y);
});
default:
throw Error("Unsupported Web Crypto version " + WEB_CRYPTO_VERSION + ".");
}
},
wrapKey: function(fa, ba, Y, Z) {
switch (Wb) {
case ma.LEGACY:
return new Promise(function(ea, aa) {
var ja;
ja = Nb.wrapKey(ba, Y, Z);
ja.oncomplete = function(ua) {
ea(ua.target.result);
};
ja.onerror = function(ua) {
aa(ua);
};
});
case ma.V2014_01:
case ma.V2014_02:
return Nb.wrapKey(fa, ba, Y, Z).then(function(ea) {
return new Uint8Array(ea);
});
default:
throw Error("Unsupported Web Crypto version " + WEB_CRYPTO_VERSION + ".");
}
},
unwrapKey: function(fa, ba, Y, Z, ea, aa, ja) {
switch (Wb) {
case ma.LEGACY:
return new Promise(function(ua, sa) {
var la;
la = Nb.unwrapKey(ba, ea, Y);
la.oncomplete = function(qa) {
ua(qa.target.result);
};
la.onerror = function(qa) {
sa(qa);
};
});
case ma.V2014_01:
case ma.V2014_02:
return Nb.unwrapKey(fa, ba, Y, Z, ea, Aa(aa), Ia(ja));
default:
throw Error("Unsupported Web Crypto version " + WEB_CRYPTO_VERSION + ".");
}
}
};
cd && cd.getKeyByName && (Jb.getKeyByName = function(fa) {
switch (Wb) {
case ma.LEGACY:
return new Promise(function(ba, Y) {
var Z;
Z = cd.getKeyByName(fa);
Z.oncomplete = function(ea) {
ba(ea.target.result);
};
Z.onerror = function(ea) {
Y(ea);
};
});
case ma.V2014_01:
case ma.V2014_02:
return cd.getKeyByName(fa);
default:
throw Error("Unsupported Web Crypto version " + WEB_CRYPTO_VERSION + ".");
}
});
mb.netflix = mb.netflix || ({});
mb.netflix.crypto = Jb;
})();
lc = {
name: "AES-KW"
};
hc = {
name: "AES-CBC"
};
ic = {
name: "HMAC",
hash: {
name: "SHA-256"
}
};
fd = {
name: "RSA-OAEP",
hash: {
name: "SHA-1"
}
};
yd = {
name: "RSAES-PKCS1-v1_5"
};
ie = {
name: "RSASSA-PKCS1-v1_5",
hash: {
name: "SHA-256"
}
};
vc = ["encrypt", "decrypt"];
wc = ["wrap", "unwrap"];
Ec = ["sign", "verify"];
(function() {
zd = Ab.Class.create({
init: function(Aa, Ia, Ma) {
var ma;
function ta(fa) {
La(Ia, function() {
var ba;
ba = fa ? Eb(fa) : zb;
Object.defineProperties(ma, {
rawKey: {
value: Aa,
writable: !1,
configurable: !1
},
keyData: {
value: fa,
writable: !1,
configurable: !1
},
keyDataB64: {
value: ba,
writable: !1,
configurable: !1
}
});
return this;
}, ma);
}
ma = this;
La(Ia, function() {
if (!Aa || "object" != typeof Aa)
throw new tb(X.INVALID_SYMMETRIC_KEY);
!Ma && Aa.extractable ? Jb.exportKey("raw", Aa).then(function(fa) {
ta(new Uint8Array(fa));
}, function(fa) {
Ia.error(new tb(X.KEY_EXPORT_ERROR, "raw"));
}) : ta(Ma);
}, ma);
},
size: function() {
return this.keyData.length;
},
toByteArray: function() {
return this.keyData;
},
toBase64: function() {
return this.keyDataB64;
}
});
Tc = function(Aa, Ia) {
new zd(Aa, Ia);
};
mc = function(Aa, Ia, Ma, ta) {
La(ta, function() {
try {
Aa = "string" == typeof Aa ? Gb(Aa) : Aa;
} catch (ma) {
throw new tb(X.INVALID_SYMMETRIC_KEY, "keydata " + Aa, ma);
}
Jb.importKey("raw", Aa, Ia, !0, Ma).then(function(ma) {
new zd(ma, ta, Aa);
}, function(ma) {
ta.error(new tb(X.INVALID_SYMMETRIC_KEY));
});
});
};
})();
(function() {
gd = Ab.Class.create({
init: function(Aa, Ia, Ma) {
var ma;
function ta(fa) {
La(Ia, function() {
Object.defineProperties(ma, {
rawKey: {
value: Aa,
writable: !1,
configurable: !1
},
encoded: {
value: fa,
writable: !1,
configurable: !1
}
});
return this;
}, ma);
}
ma = this;
La(Ia, function() {
if (!Aa || "object" != typeof Aa || "public" != Aa.type)
throw new TypeError("Only original public crypto keys are supported.");
!Ma && Aa.extractable ? Jb.exportKey("spki", Aa).then(function(fa) {
ta(new Uint8Array(fa));
}, function(fa) {
Ia.error(new tb(X.KEY_EXPORT_ERROR, "spki"));
}) : ta(Ma);
});
},
getEncoded: function() {
return this.encoded;
}
});
Bc = function(Aa, Ia) {
new gd(Aa, Ia);
};
Ad = function(Aa, Ia, Ma, ta) {
La(ta, function() {
try {
Aa = "string" == typeof Aa ? Gb(Aa) : Aa;
} catch (ma) {
throw new tb(X.INVALID_PUBLIC_KEY, "spki " + Aa, ma);
}
Jb.importKey("spki", Aa, Ia, !0, Ma).then(function(ma) {
new gd(ma, ta, Aa);
}, function(ma) {
ta.error(new tb(X.INVALID_PUBLIC_KEY));
});
});
};
})();
(function() {
je = Ab.Class.create({
init: function(Aa, Ia, Ma) {
var ma;
function ta(fa) {
La(Ia, function() {
Object.defineProperties(ma, {
rawKey: {
value: Aa,
writable: !1,
configurable: !1
},
encoded: {
value: fa,
writable: !1,
configurable: !1
}
});
return this;
}, ma);
}
ma = this;
La(Ia, function() {
if (!Aa || "object" != typeof Aa || "private" != Aa.type)
throw new TypeError("Only original private crypto keys are supported.");
!Ma && Aa.extractable ? Jb.exportKey("pkcs8", Aa).then(function(fa) {
ta(new Uint8Array(fa));
}, function(fa) {
Ia.error(new tb(X.KEY_EXPORT_ERROR, "pkcs8"));
}) : ta(Ma);
});
},
getEncoded: function() {
return this.encoded;
}
});
Jc = function(Aa, Ia) {
new je(Aa, Ia);
};
})();
(function() {
var Aa;
Aa = Ed = {
V1: 1,
V2: 2
};
Bd = Ab.Class.create({
init: function(Ia, Ma, ta, ma) {
La(ma, function() {
var fa,
ba,
Y,
Z;
fa = Aa.V1;
ba = Ia;
Y = null;
for (Z in dd) {
if (dd[Z] == Ia) {
fa = Aa.V2;
ba = null;
Y = Ia;
break;
}
}
Object.defineProperties(this, {
version: {
value: fa,
writable: !1,
enumerable: !1,
configurable: !1
},
keyId: {
value: ba,
writable: !1,
configurable: !1
},
cipherSpec: {
value: Y,
writable: !1,
configurable: !1
},
iv: {
value: Ma,
writable: !1,
configurable: !1
},
ciphertext: {
value: ta,
writable: !1,
configurable: !1
}
});
return this;
}, this);
},
toJSON: function() {
var Ia;
Ia = {};
switch (this.version) {
case Aa.V1:
Ia.keyid = this.keyId;
this.iv && (Ia.iv = Eb(this.iv));
Ia.ciphertext = Eb(this.ciphertext);
Ia.sha256 = "AA==";
break;
case Aa.V2:
Ia.version = this.version;
Ia.cipherspec = this.cipherSpec;
this.iv && (Ia.iv = Eb(this.iv));
Ia.ciphertext = Eb(this.ciphertext);
break;
default:
throw new vb("Ciphertext envelope version " + this.version + " encoding unsupported.");
}
return Ia;
}
});
Cd = function(Ia, Ma, ta, ma) {
new Bd(Ia, Ma, ta, ma);
};
Dd = function(Ia, Ma, ta) {
La(ta, function() {
var ma,
fa,
ba,
Y,
Z,
ea,
aa;
ma = Ia.keyid;
fa = Ia.cipherspec;
ba = Ia.iv;
Y = Ia.ciphertext;
Z = Ia.sha256;
if (!Ma)
if ((Ma = Ia.version) && "number" === typeof Ma && Ma === Ma) {
ea = !1;
for (aa in Aa) {
if (Aa[aa] == Ma) {
ea = !0;
break;
}
}
if (!ea)
throw new tb(X.UNIDENTIFIED_CIPHERTEXT_ENVELOPE, "ciphertext envelope " + JSON.stringify(Ia));
} else
Ma = Aa.V1;
switch (Ma) {
case Aa.V1:
if ("string" !== typeof ma || ba && "string" !== typeof ba || "string" !== typeof Y || "string" !== typeof Z)
throw new Db(X.JSON_PARSE_ERROR, "ciphertext envelope " + JSON.stringify(Ia));
break;
case Aa.V2:
aa = Ia.version;
if (aa != Aa.V2)
throw new tb(X.UNIDENTIFIED_CIPHERTEXT_ENVELOPE, "ciphertext envelope " + JSON.stringify(Ia));
if ("string" !== typeof fa || ba && "string" !== typeof ba || "string" !== typeof Y)
throw new Db(X.JSON_PARSE_ERROR, "ciphertext envelope " + JSON.stringify(Ia));
fa = fe(fa);
if (!fa)
throw new tb(X.UNIDENTIFIED_CIPHERSPEC, "ciphertext envelope " + JSON.stringify(Ia));
ma = fa;
break;
default:
throw new tb(X.UNSUPPORTED_CIPHERTEXT_ENVELOPE, "ciphertext envelope " + JSON.stringify(Ia));
}
try {
ba && (ba = Gb(ba));
Y = Gb(Y);
} catch (ja) {
throw new tb(X.CIPHERTEXT_ENVELOPE_PARSE_ERROR, "encryption envelope " + JSON.stringify(Ia), ja);
}
new Bd(ma, ba, Y, ta);
});
};
})();
(function() {
var Aa;
Aa = Hd = {
V1: 1,
V2: 2
};
nc = Ab.Class.create({
init: function(Ia, Ma, ta) {
var ma;
switch (Ia) {
case Aa.V1:
ma = ta;
break;
case Aa.V2:
ma = {};
ma.version = Ia;
ma.algorithm = Ma;
ma.signature = Eb(ta);
ma = Yb(JSON.stringify(ma), Lb);
break;
default:
throw new vb("Signature envelope version " + Ia + " encoding unsupported.");
}
Object.defineProperties(this, {
version: {
value: Ia,
writable: !1,
enumerable: !1,
configurable: !1
},
algorithm: {
value: Ma,
writable: !1,
configurable: !1
},
signature: {
value: ta,
writable: !1,
configurable: !1
},
bytes: {
value: ma,
writable: !1,
configurable: !1
}
});
}
});
Fd = function() {
var Ia,
Ma,
ta,
ma;
if (2 == arguments.length) {
Ia = Aa.V1;
Ma = arguments[0];
ta = null;
ma = arguments[1];
} else
3 == arguments.length && (Ia = Aa.V2, ta = arguments[0], Ma = arguments[1], ma = arguments[2]);
La(ma, function() {
return new nc(Ia, ta, Ma);
});
};
Gd = function(Ia, Ma, ta) {
La(ta, function() {
var ma,
fa,
ba,
Y,
Z,
ea,
aa;
if (Ma)
switch (Ma) {
case Aa.V1:
return new nc(Aa.V1, null, Ia);
case Aa.V2:
try {
ma = Xb(Ia, Lb);
fa = JSON.parse(ma);
ba = parseInt(fa.version);
Y = fa.algorithm;
Z = fa.signature;
if (!ba || "number" !== typeof ba || ba != ba || "string" !== typeof Y || "string" !== typeof Z)
throw new Db(X.JSON_PARSE_ERROR, "signature envelope " + Eb(Ia));
if (Aa.V2 != ba)
throw new tb(X.UNSUPPORTED_SIGNATURE_ENVELOPE, "signature envelope " + Eb(Ia));
ea = wd(Y);
if (!ea)
throw new tb(X.UNIDENTIFIED_ALGORITHM, "signature envelope " + Eb(Ia));
aa = Gb(Z);
if (!aa)
throw new tb(X.INVALID_SIGNATURE, "signature envelope " + Base64Util.encode(Ia));
return new nc(Aa.V2, ea, aa);
} catch (ja) {
if (ja instanceof SyntaxError)
throw new Db(X.JSON_PARSE_ERROR, "signature envelope " + Eb(Ia), ja);
throw ja;
}
default:
throw new tb(X.UNSUPPORTED_SIGNATURE_ENVELOPE, "signature envelope " + Eb(Ia));
}
try {
ma = Xb(Ia, Lb);
fa = JSON.parse(ma);
} catch (ja) {
fa = null;
}
if (fa && fa.version) {
if ((ma = fa.version, "number" !== typeof ma || ma !== ma))
ma = Aa.V1;
} else
ma = Aa.V1;
switch (ma) {
case Aa.V1:
return new nc(ma, null, Ia);
case Aa.V2:
ea = fa.algorithm;
Z = fa.signature;
if ("string" !== typeof ea || "string" !== typeof Z)
return new nc(Aa.V1, null, Ia);
ea = wd(ea);
if (!ea)
return new nc(Aa.V1, null, Ia);
try {
aa = Gb(Z);
} catch (ja) {
return new nc(Aa.V1, null, Ia);
}
return new nc(ma, ea, aa);
default:
throw new tb(X.UNSUPPORTED_SIGNATURE_ENVELOPE, "signature envelope " + Ia);
}
});
};
})();
Lc = Ab.Class.create({
encrypt: function(Aa, Ia) {},
decrypt: function(Aa, Ia) {},
wrap: function(Aa, Ia) {},
unwrap: function(Aa, Ia, Ma, ta) {},
sign: function(Aa, Ia) {},
verify: function(Aa, Ia, Ma) {}
});
(function() {
var Aa;
Aa = pc = {
RSA_OAEP: fd.name,
A128KW: lc.name
};
jc = "A128GCM";
oc = Ab.Class.create({
init: function(Ia, Ma, ta, ma, fa) {
switch (Ma) {
case Aa.RSA_OAEP:
fa = fa && (fa.rawKey || fa);
ma = ma && (ma.rawKey || ma);
break;
case Aa.A128KW:
fa = ma = ma && (ma.rawKey || ma);
break;
default:
throw new vb("Unsupported algorithm: " + Ma);
}
Object.defineProperties(this, {
_ctx: {
value: Ia,
writable: !1,
enumerable: !1,
configurable: !1
},
_algo: {
value: Ma,
writable: !1,
enumerable: !1,
configurable: !1
},
_enc: {
value: ta,
writable: !1,
enumerable: !1,
configurable: !1
},
_wrapKey: {
value: fa,
writable: !1,
enumerable: !1,
configurable: !1
},
_unwrapKey: {
value: ma,
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
encrypt: function(Ia, Ma) {
Ma.error(new tb(X.ENCRYPT_NOT_SUPPORTED));
},
decrypt: function(Ia, Ma) {
Ma.error(new tb(X.DECRYPT_NOT_SUPPORTED));
},
wrap: function(Ia, Ma) {
La(Ma, function() {
Jb.wrapKey("jwe+jwk", Ia.rawKey, this._wrapKey, this._wrapKey.algorithm).then(function(ta) {
Ma.result(ta);
}, function(ta) {
Ma.error(new tb(X.WRAP_ERROR));
});
}, this);
},
unwrap: function(Ia, Ma, ta, ma) {
function fa(ba) {
La(ma, function() {
switch (ba.type) {
case "secret":
Tc(ba, ma);
break;
case "public":
Bc(ba, ma);
break;
case "private":
Jc(ba, ma);
break;
default:
throw new tb(X.UNSUPPORTED_KEY, "type: " + ba.type);
}
});
}
La(ma, function() {
Jb.unwrapKey("jwe+jwk", Ia, this._unwrapKey, this._unwrapKey.algorithm, Ma, !1, ta).then(function(ba) {
fa(ba);
}, function() {
ma.error(new tb(X.UNWRAP_ERROR));
});
}, this);
},
sign: function(Ia, Ma) {
Ma.error(new tb(X.SIGN_NOT_SUPPORTED));
},
verify: function(Ia, Ma, ta) {
ta.error(new tb(X.VERIFY_NOT_SUPPORTED));
}
});
})();
Mc = Lc.extend({
encrypt: function(Aa, Ia) {
Ia.result(Aa);
},
decrypt: function(Aa, Ia) {
Ia.result(Aa);
},
wrap: function(Aa, Ia) {
Ia.result(Aa);
},
unwrap: function(Aa, Ia, Ma, ta) {
ta.result(Aa);
},
sign: function(Aa, Ia) {
Ia.result(new Uint8Array(0));
},
verify: function(Aa, Ia, Ma) {
Ma.result(!0);
}
});
(function() {
var Aa;
Aa = id = {
ENCRYPT_DECRYPT_OAEP: 1,
ENCRYPT_DECRYPT_PKCS1: 2,
WRAP_UNWRAP_OAEP: 3,
WRAP_UNWRAP_PKCS1: 4,
SIGN_VERIFY: 5
};
hd = Lc.extend({
init: function Y(Ma, ta, ma, fa, ba) {
Y.base.call(this);
ma && (ma = ma.rawKey);
fa && (fa = fa.rawKey);
Object.defineProperties(this, {
id: {
value: ta,
writable: !1,
enumerable: !1,
configurable: !1
},
privateKey: {
value: ma,
writable: !1,
enumerable: !1,
configurable: !1
},
publicKey: {
value: fa,
writable: !1,
enumerable: !1,
configurable: !1
},
transform: {
value: ba == Aa.ENCRYPT_DECRYPT_PKCS1 ? yd : ba == Aa.ENCRYPT_DECRYPT_OAEP ? fd : "nullOp",
writable: !1,
enumerable: !1,
configurable: !1
},
wrapTransform: {
value: ba == Aa.WRAP_UNWRAP_PKCS1 ? yd : ba == Aa.WRAP_UNWRAP_OAEP ? fd : "nullOp",
writable: !1,
enumerable: !1,
configurable: !1
},
algo: {
value: ba == Aa.SIGN_VERIFY ? ie : "nullOp",
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
encrypt: function(Ma, ta) {
var ma;
ma = this;
La(ta, function() {
if ("nullOp" == this.transform)
return Ma;
if (!this.publicKey)
throw new tb(X.ENCRYPT_NOT_SUPPORTED, "no public key");
if (0 == Ma.length)
return Ma;
Jb.encrypt(ma.transform, ma.publicKey, Ma).then(function(fa) {
Cd(ma.id, null, fa, {
result: function(ba) {
var Y;
try {
Y = JSON.stringify(ba);
ta.result(Yb(Y, Lb));
} catch (Z) {
ta.error(new tb(X.ENCRYPT_ERROR, null, Z));
}
},
error: function(ba) {
ba instanceof cb || (ba = new tb(X.ENCRYPT_ERROR, null, ba));
ta.error(ba);
}
});
}, function(fa) {
ta.error(new tb(X.ENCRYPT_ERROR));
});
}, this);
},
decrypt: function(Ma, ta) {
var ma;
ma = this;
La(ta, function() {
var fa,
ba;
if ("nullOp" == this.transform)
return Ma;
if (!this.privateKey)
throw new tb(X.DECRYPT_NOT_SUPPORTED, "no private key");
if (0 == Ma.length)
return Ma;
try {
fa = Xb(Ma, Lb);
ba = JSON.parse(fa);
} catch (Y) {
if (Y instanceof SyntaxError)
throw new tb(X.CIPHERTEXT_ENVELOPE_PARSE_ERROR, null, Y);
throw new tb(X.DECRYPT_ERROR, null, Y);
}
Dd(ba, Ed.V1, {
result: function(Y) {
var Z;
try {
if (Y.keyId != ma.id)
throw new tb(X.ENVELOPE_KEY_ID_MISMATCH);
Z = ta.result;
Jb.decrypt(ma.transform, ma.privateKey, Y.ciphertext).then(Z, function(ea) {
ta.error(new tb(X.DECRYPT_ERROR));
});
} catch (ea) {
ea instanceof cb ? ta.error(ea) : ta.error(new tb(X.DECRYPT_ERROR, null, ea));
}
},
error: function(Y) {
Y instanceof Db && (Y = new tb(X.CIPHERTEXT_ENVELOPE_ENCODE_ERROR, null, Y));
Y instanceof cb || (Y = new tb(X.DECRYPT_ERROR, null, Y));
ta.error(Y);
}
});
}, this);
},
wrap: function(Ma, ta) {
La(ta, function() {
var ma;
if ("nullOp" == this.wrapTransform || !this.publicKey)
throw new tb(X.WRAP_NOT_SUPPORTED, "no public key");
ma = ta.result;
Jb.wrapKey("jwk", Ma.rawKey, this.publicKey, this.wrapTransform).then(ma, function(fa) {
ta.error(new tb(X.WRAP_ERROR));
});
}, this);
},
unwrap: function(Ma, ta, ma, fa) {
function ba(Y) {
La(fa, function() {
switch (Y.type) {
case "secret":
Tc(Y, fa);
break;
case "public":
Bc(Y, fa);
break;
case "private":
Jc(Y, fa);
break;
default:
throw new tb(X.UNSUPPORTED_KEY, "type: " + Y.type);
}
});
}
La(fa, function() {
if ("nullOp" == this.wrapTransform || !this.privateKey)
throw new tb(X.UNWRAP_NOT_SUPPORTED, "no private key");
Jb.unwrapKey("jwk", Ma, this.privateKey, {
name: this.privateKey.algorithm.name,
hash: {
name: "SHA-1"
}
}, ta, !1, ma).then(ba, function(Y) {
fa.error(new tb(X.UNWRAP_ERROR));
});
}, this);
},
sign: function(Ma, ta) {
La(ta, function() {
if ("nullOp" == this.algo)
return new Uint8Array(0);
if (!this.privateKey)
throw new tb(X.SIGN_NOT_SUPPORTED, "no private key");
Jb.sign(this.algo, this.privateKey, Ma).then(function(ma) {
Fd(ma, {
result: function(fa) {
ta.result(fa.bytes);
},
error: ta.error
});
}, function(ma) {
ta.error(new tb(X.SIGNATURE_ERROR));
});
}, this);
},
verify: function(Ma, ta, ma) {
var fa;
fa = this;
La(ma, function() {
if ("nullOp" == this.algo)
return !0;
if (!this.publicKey)
throw new tb(X.VERIFY_NOT_SUPPORTED, "no public key");
Gd(ta, Hd.V1, {
result: function(ba) {
La(ma, function() {
var Y;
Y = ma.result;
Jb.verify(this.algo, this.publicKey, ba.signature, Ma).then(Y, function(Z) {
ma.error(new tb(X.SIGNATURE_ERROR));
});
}, fa);
},
error: ma.error
});
}, this);
}
});
})();
(function() {
jd = Lc.extend({
init: function ba(Ia, Ma, ta, ma, fa) {
ba.base.call(this);
ta = ta && ta.rawKey;
ma = ma && ma.rawKey;
fa = fa && fa.rawKey;
Object.defineProperties(this, {
ctx: {
value: Ia,
writable: !1,
enumerable: !1,
configurable: !1
},
id: {
value: Ma,
writable: !1,
enumerable: !1,
configurable: !1
},
encryptionKey: {
value: ta,
writable: !1,
enumerable: !1,
configurable: !1
},
hmacKey: {
value: ma,
writable: !1,
enumerable: !1,
configurable: !1
},
wrapKey: {
value: fa,
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
encrypt: function(Ia, Ma) {
var ta;
ta = this;
La(Ma, function() {
var ma;
if (!this.encryptionKey)
throw new tb(X.ENCRYPT_NOT_SUPPORTED, "no encryption/decryption key");
if (0 == Ia.length)
return Ia;
ma = new Uint8Array(16);
this.ctx.getRandom().nextBytes(ma);
Jb.encrypt({
name: hc.name,
iv: ma
}, ta.encryptionKey, Ia).then(function(fa) {
fa = new Uint8Array(fa);
Cd(ta.id, ma, fa, {
result: function(ba) {
var Y;
try {
Y = JSON.stringify(ba);
Ma.result(Yb(Y, Lb));
} catch (Z) {
Ma.error(new tb(X.ENCRYPT_ERROR, null, Z));
}
},
error: function(ba) {
ba instanceof cb || (ba = new tb(X.ENCRYPT_ERROR, null, ba));
Ma.error(ba);
}
});
}, function(fa) {
Ma.error(new tb(X.ENCRYPT_ERROR));
});
}, this);
},
decrypt: function(Ia, Ma) {
var ta;
ta = this;
La(Ma, function() {
var ma,
fa;
if (!this.encryptionKey)
throw new tb(X.DECRYPT_NOT_SUPPORTED, "no encryption/decryption key");
if (0 == Ia.length)
return Ia;
try {
ma = Xb(Ia, Lb);
fa = JSON.parse(ma);
} catch (ba) {
if (ba instanceof SyntaxError)
throw new tb(X.CIPHERTEXT_ENVELOPE_PARSE_ERROR, null, ba);
throw new tb(X.DECRYPT_ERROR, null, ba);
}
Dd(fa, Ed.V1, {
result: function(ba) {
try {
if (ba.keyId != ta.id)
throw new tb(X.ENVELOPE_KEY_ID_MISMATCH);
Jb.decrypt({
name: hc.name,
iv: ba.iv
}, ta.encryptionKey, ba.ciphertext).then(function(Y) {
Y = new Uint8Array(Y);
Ma.result(Y);
}, function() {
Ma.error(new tb(X.DECRYPT_ERROR));
});
} catch (Y) {
Y instanceof cb ? Ma.error(Y) : Ma.error(new tb(X.DECRYPT_ERROR, null, Y));
}
},
error: function(ba) {
ba instanceof Db && (ba = new tb(X.CIPHERTEXT_ENVELOPE_ENCODE_ERROR, null, ba));
ba instanceof cb || (ba = new tb(X.DECRYPT_ERROR, null, ba));
Ma.error(ba);
}
});
}, this);
},
wrap: function(Ia, Ma) {
La(Ma, function() {
if (!this.wrapKey)
throw new tb(X.WRAP_NOT_SUPPORTED, "no wrap/unwrap key");
Jb.wrapKey("raw", Ia.rawKey, this.wrapKey, this.wrapKey.algorithm).then(function(ta) {
Ma.result(ta);
}, function(ta) {
Ma.error(new tb(X.WRAP_ERROR));
});
}, this);
},
unwrap: function(Ia, Ma, ta, ma) {
function fa(ba) {
La(ma, function() {
switch (ba.type) {
case "secret":
Tc(ba, ma);
break;
case "public":
Bc(ba, ma);
break;
case "private":
Jc(ba, ma);
break;
default:
throw new tb(X.UNSUPPORTED_KEY, "type: " + ba.type);
}
});
}
La(ma, function() {
if (!this.wrapKey)
throw new tb(X.UNWRAP_NOT_SUPPORTED, "no wrap/unwrap key");
Jb.unwrapKey("raw", Ia, this.wrapKey, this.wrapKey.algorithm, Ma, !1, ta).then(function(ba) {
fa(ba);
}, function(ba) {
ma.error(new tb(X.UNWRAP_ERROR));
});
}, this);
},
sign: function(Ia, Ma) {
var ta;
ta = this;
La(Ma, function() {
if (!this.hmacKey)
throw new tb(X.SIGN_NOT_SUPPORTED, "no HMAC key.");
Jb.sign(ic, this.hmacKey, Ia).then(function(ma) {
La(Ma, function() {
var fa;
fa = new Uint8Array(ma);
Fd(fa, {
result: function(ba) {
Ma.result(ba.bytes);
},
error: Ma.error
});
}, ta);
}, function() {
Ma.error(new tb(X.HMAC_ERROR));
});
}, this);
},
verify: function(Ia, Ma, ta) {
var ma;
ma = this;
La(ta, function() {
if (!this.hmacKey)
throw new tb(X.VERIFY_NOT_SUPPORTED, "no HMAC key.");
Gd(Ma, Hd.V1, {
result: function(fa) {
La(ta, function() {
Jb.verify(ic, this.hmacKey, fa.signature, Ia).then(function(ba) {
ta.result(ba);
}, function(ba) {
ta.error(new tb(X.HMAC_ERROR));
});
}, ma);
},
error: ta.error
});
}, this);
}
});
})();
fc = jd.extend({
init: function ba(Ia, Ma, ta, ma, fa) {
if (ta || ma || fa)
ba.base.call(this, Ia, ta + "_" + Ma.sequenceNumber, ma, fa, null);
else {
if (!Ma.isDecrypted())
throw new Sc(X.MASTERTOKEN_UNTRUSTED, Ma);
ba.base.call(this, Ia, Ma.identity + "_" + Ma.sequenceNumber, Ma.encryptionKey, Ma.hmacKey, null);
}
}
});
jf = Lc.extend({
encrypt: function(Ia, Ma) {
Ma.result(Ia);
},
decrypt: function(Ia, Ma) {
Ma.result(Ia);
},
wrap: function(Ia, Ma) {
Ma.error(new vb("Wrap is unsupported by the MSL token crypto context."));
},
unwrap: function(Ia, Ma, ta, ma) {
ma.error(new vb("Unwrap is unsupported by the MSL token crypto context."));
},
sign: function(Ia, Ma) {
Ma.result(new Uint8Array(0));
},
verify: function(Ia, Ma, ta) {
ta.result(!1);
}
});
Ob = {
PSK: "PSK",
MGK: "MGK",
X509: "X509",
RSA: "RSA",
NPTICKET: "NPTICKET",
ECC: "ECC",
NONE: "NONE"
};
Object.freeze(Ob);
(function() {
Dc = Ab.Class.create({
init: function(Ia) {
Object.defineProperties(this, {
scheme: {
value: Ia,
writable: !1,
configurable: !1
}
});
},
getIdentity: function() {},
getAuthData: function() {},
equals: function(Ia) {
return this === Ia ? !0 : Ia instanceof Dc ? this.scheme == Ia.scheme : !1;
},
toJSON: function() {
var Ia;
Ia = {};
Ia.scheme = this.scheme;
Ia.authdata = this.getAuthData();
return Ia;
}
});
ke = function(Ia, Ma) {
var ta,
ma;
ta = Ma.scheme;
ma = Ma.authdata;
if (!ta || !ma)
throw new Db(X.JSON_PARSE_ERROR, "entityauthdata " + JSON.stringify(Ma));
if (!Ob[ta])
throw new kc(X.UNIDENTIFIED_ENTITYAUTH_SCHEME, ta);
Ma = Ia.getEntityAuthenticationFactory(ta);
if (!Ma)
throw new kc(X.ENTITYAUTH_FACTORY_NOT_FOUND, ta);
return Ma.createData(Ia, ma);
};
})();
kd = Ab.Class.create({
init: function(Ia) {
Object.defineProperties(this, {
scheme: {
value: Ia,
writable: !1,
configurable: !1
}
});
},
createData: function(Ia, Ma) {},
getCryptoContext: function(Ia, Ma) {}
});
(function() {
qc = Dc.extend({
init: function ta(Ma) {
ta.base.call(this, Ob.MGK);
Object.defineProperties(this, {
identity: {
value: Ma,
writable: !1,
configurable: !1
}
});
},
getIdentity: function() {
return this.identity;
},
getAuthData: function() {
var Ma;
Ma = {};
Ma.identity = this.identity;
return Ma;
},
equals: function ma(ta) {
return this === ta ? !0 : ta instanceof qc ? ma.base.call(this, this, ta) && this.identity == ta.identity : !1;
}
});
le = function(ta) {
var ma;
ma = ta.identity;
if (!ma)
throw new Db(X.JSON_PARSE_ERROR, "mgk authdata" + JSON.stringify(ta));
return new qc(ma);
};
})();
kf = kd.extend({
init: function ta(Ma) {
ta.base.call(this, Ob.MGK);
Object.defineProperties(this, {
localIdentity: {
value: Ma,
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
createData: function(Ma, ta) {
return le(ta);
},
getCryptoContext: function(Ma, ta) {
if (!(ta instanceof qc))
throw new vb("Incorrect authentication data type " + JSON.stringify(ta) + ".");
if (ta.identity != this.localIdentity)
throw new kc(X.ENTITY_NOT_FOUND, "mgk " + ta.identity).setEntity(ta);
return new Mc();
}
});
(function() {
rc = Dc.extend({
init: function ma(ta) {
ma.base.call(this, Ob.PSK);
Object.defineProperties(this, {
identity: {
value: ta,
writable: !1
}
});
},
getIdentity: function() {
return this.identity;
},
getAuthData: function() {
var ta;
ta = {};
ta.identity = this.identity;
return ta;
},
equals: function fa(ma) {
return this === ma ? !0 : ma instanceof rc ? fa.base.call(this, this, ma) && this.identity == ma.identity : !1;
}
});
me = function(ma) {
var fa;
fa = ma.identity;
if (!fa)
throw new Db(X.JSON_PARSE_ERROR, "psk authdata" + JSON.stringify(ma));
return new rc(fa);
};
})();
lf = kd.extend({
init: function ma(ta) {
ma.base.call(this, Ob.PSK);
Object.defineProperties(this, {
localIdentity: {
value: ta,
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
createData: function(ta, ma) {
return me(ma);
},
getCryptoContext: function(ta, ma) {
if (!(ma instanceof rc))
throw new vb("Incorrect authentication data type " + JSON.stringify(ma) + ".");
if (ma.getIdentity() != this.localIdentity)
throw new kc(X.ENTITY_NOT_FOUND, "psk " + ma.identity).setEntity(ma);
return new Mc();
}
});
(function() {
ld = Dc.extend({
init: function ba(ma, fa) {
ba.base.call(this, Ob.RSA);
Object.defineProperties(this, {
identity: {
value: ma,
writable: !1,
configurable: !1
},
publicKeyId: {
value: fa,
writable: !1,
configurable: !1
}
});
},
getIdentity: function() {
return this.identity;
},
getAuthData: function() {
var ma;
ma = {};
ma.identity = this.identity;
ma.pubkeyid = this.publicKeyId;
return ma;
},
equals: function ba(fa) {
return this === fa ? !0 : fa instanceof ld ? ba.base.call(this, this, fa) && this.identity == fa.identity && this.publicKeyId == fa.publicKeyId : !1;
}
});
ne = function(fa) {
var ba,
Y;
ba = fa.identity;
Y = fa.pubkeyid;
if (!ba || "string" !== typeof ba || !Y || "string" !== typeof Y)
throw new Db(X.JSON_PARSE_ERROR, "RSA authdata" + JSON.stringify(fa));
return new ld(ba, Y);
};
})();
mf = kd.extend({
init: function fa(ma) {
fa.base.call(this, Ob.RSA);
Object.defineProperties(this, {
store: {
value: ma,
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
createData: function(ma, fa) {
return ne(fa);
},
getCryptoContext: function(ma, fa) {
var ba,
Y,
Z;
if (!(fa instanceof ld))
throw new vb("Incorrect authentication data type " + fa + ".");
ba = fa.identity;
Y = fa.publicKeyId;
Z = this.store.getPublicKey(Y);
if (!Z)
throw new kc(X.RSA_PUBLICKEY_NOT_FOUND, Y).setEntity(fa);
return new hd(ma, ba, null, Z, id.SIGN_VERIFY);
}
});
(function() {
Pc = Dc.extend({
init: function ba(fa) {
ba.base.call(this, Ob.NONE);
Object.defineProperties(this, {
identity: {
value: fa,
writable: !1
}
});
},
getIdentity: function() {
return this.identity;
},
getAuthData: function() {
var fa;
fa = {};
fa.identity = this.identity;
return fa;
},
equals: function Y(ba) {
return this === ba ? !0 : ba instanceof Pc ? Y.base.call(this, this, ba) && this.identity == ba.identity : !1;
}
});
oe = function(ba) {
var Y;
Y = ba.identity;
if (!Y)
throw new Db(X.JSON_PARSE_ERROR, "Unauthenticated authdata" + JSON.stringify(ba));
return new Pc(Y);
};
})();
hf = kd.extend({
init: function fa() {
fa.base.call(this, Ob.NONE);
},
createData: function(fa, ba) {
return oe(ba);
},
getCryptoContext: function(fa, ba) {
if (!(ba instanceof Pc))
throw new vb("Incorrect authentication data type " + JSON.stringify(ba) + ".");
return new Mc();
}
});
nf = Ab.Class.create({
init: function() {
Object.defineProperties(this, {
rsaKeys: {
value: {},
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
addPublicKey: function(fa, ba) {
if (!(ba instanceof gd))
throw new vb("Incorrect key data type " + ba + ".");
this.rsaKeys[fa] = ba;
},
getIdentities: function() {
return Object.keys(this.rsaKeys);
},
removePublicKey: function(fa) {
delete this.rsaKeys[fa];
},
getPublicKey: function(fa) {
return this.rsaKeys[fa];
}
});
Id = Ab.Class.create({
abort: function() {},
close: function() {},
mark: function() {},
reset: function() {},
markSupported: function() {},
read: function(fa, ba, Y) {}
});
md = Ab.Class.create({
abort: function() {},
close: function(fa, ba) {},
write: function(fa, ba, Y, Z, ea) {},
flush: function(fa, ba) {}
});
of = Ab.Class.create({
init: function(fa) {
Object.defineProperties(this, {
_data: {
value: fa,
writable: !1,
enumerable: !1,
configurable: !1
},
_closed: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_currentPosition: {
value: 0,
writable: !0,
enumerable: !1,
configurable: !1
},
_mark: {
value: -1,
writable: !0,
enumerable: !1,
configurable: !1
}
});
},
abort: function() {},
close: function() {
this._close = !0;
},
mark: function() {
this._mark = this._currentPosition;
},
reset: function() {
if (-1 == this._mark)
throw new Rb("Stream has not been marked.");
this._currentPosition = this._mark;
},
markSupported: function() {
return !0;
},
read: function(fa, ba, Y) {
ab(Y, function() {
var Z;
if (this._closed)
throw new Rb("Stream is already closed.");
if (this._currentPosition == this._data.length)
return null;
-1 == fa && (fa = this._data.length - this._currentPosition);
Z = this._data.subarray(this._currentPosition, this._currentPosition + fa);
this._currentPosition += Z.length;
return Z;
}, this);
}
});
pf = Ab.Class.create({
init: function() {
var fa;
fa = {
_closed: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_result: {
value: new Uint8Array(0),
writable: !0,
enuemrable: !1,
configurable: !1
},
_buffered: {
value: [],
writable: !1,
enumerable: !1,
configurable: !1
}
};
Object.defineProperties(this, fa);
},
abort: function() {},
close: function(fa, ba) {
this._closed = !0;
ba.result(!0);
},
write: function(fa, ba, Y, Z, ea) {
ab(ea, function() {
var aa;
if (this._closed)
throw new Rb("Stream is already closed.");
if (0 > ba)
throw new RangeError("Offset cannot be negative.");
if (0 > Y)
throw new RangeError("Length cannot be negative.");
if (ba + Y > fa.length)
throw new RangeError("Offset plus length cannot be greater than the array length.");
aa = fa.subarray(ba, Y);
this._buffered.push(aa);
return aa.length;
}, this);
},
flush: function(fa, ba) {
var Y;
for (; 0 < this._buffered.length;) {
if ((fa = this._buffered.shift(), this._result)) {
Y = new Uint8Array(this._result.length + fa.length);
Y.set(this._result);
Y.set(fa, this._result.length);
this._result = Y;
} else
this._result = new Uint8Array(fa);
}
ba.result(!0);
},
size: function() {
this.flush(1, {
result: function() {}
});
return this._result.length;
},
toByteArray: function() {
this.flush(1, {
result: function() {}
});
return this._result;
}
});
qf = Ab.Class.create({
getResponse: function(fa, ba, Y) {}
});
(function() {
var fa,
ba;
fa = md.extend({
init: function(Y, Z) {
Y = {
_httpLocation: {
value: Y,
writable: !1,
enumerable: !1,
configurable: !1
},
_timeout: {
value: Z,
writable: !0,
enumerable: !1,
configurable: !1
},
_buffer: {
value: new pf(),
writable: !1,
enumerable: !1,
configurable: !1
},
_response: {
value: zb,
writable: !0,
enumerable: !1,
configurable: !1
},
_abortToken: {
value: zb,
writable: !0,
enumerable: !1,
configurable: !1
},
_responseQueue: {
value: new Qc(),
writable: !0,
enumerable: !1,
configurable: !1
}
};
Object.defineProperties(this, Y);
},
setTimeout: function(Y) {
this._timeout = Y;
},
getResponse: function(Y, Z) {
var ea;
ea = this;
this._responseQueue.poll(Y, {
result: function(aa) {
ab(Z, function() {
aa && this._responseQueue.add(aa);
return aa;
}, ea);
},
timeout: function() {
ab(Z, function() {
this._response = {
isTimeout: !0
};
this._responseQueue.add(this._response);
this.abort();
Z.timeout();
}, ea);
},
error: function(aa) {
ab(Z, function() {
this._response = {
isError: !0
};
this._responseQueue.add(this._response);
throw aa;
}, ea);
}
});
},
abort: function() {
this._abortToken && this._abortToken.abort();
},
close: function(Y, Z) {
var ea;
ea = this;
ab(Z, function() {
var aa;
if (this._response)
return !0;
aa = this._buffer.toByteArray();
0 < aa.length && (this._abortToken = this._httpLocation.getResponse({
body: aa
}, this._timeout, {
result: function(ja) {
ea._response = {
response: ja
};
ea._responseQueue.add(ea._response);
},
timeout: function() {
ea._response = {
isTimeout: !0
};
ea._responseQueue.add(ea._response);
},
error: function(ja) {
ea._response = {
isError: !0,
error: ja
};
ea._responseQueue.add(ea._response);
}
}));
return !0;
}, this);
},
write: function(Y, Z, ea, aa, ja) {
ab(ja, function() {
if (this._response)
throw new Rb("HttpOutputStream already closed.");
this._buffer.write(Y, Z, ea, aa, ja);
}, this);
},
flush: function(Y, Z) {
ab(Z, function() {
if (this._response)
return !0;
this._buffer.flush(Y, Z);
}, this);
}
});
ba = Id.extend({
init: function(Y) {
Object.defineProperties(this, {
_out: {
value: Y,
writable: !1,
enumerable: !1,
configurable: !1
},
_buffer: {
value: zb,
writable: !0,
enumerable: !1,
configurable: !1
},
_exception: {
value: zb,
writable: !0,
enumerable: !1,
configurable: !1
},
_timedout: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_aborted: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_json: {
value: zb,
writable: !0,
enumerable: !1,
configurable: !1
}
});
},
abort: function() {
this._out.abort();
},
close: function() {
this._buffer && this._buffer.close();
},
mark: function() {
this._buffer || this._buffer.mark();
},
reset: function() {
this._buffer && this._buffer.reset();
},
markSupported: function() {
if (this._buffer)
return this._buffer.markSupported();
},
read: function(Y, Z, ea) {
var ja;
function aa(ua) {
ab(ea, function() {
if (!ua)
return new Uint8Array(0);
this._out.getResponse(Z, {
result: function(sa) {
ab(ea, function() {
var la;
if (sa.isTimeout)
(this._timedout = !0,
ea.timeout());
else {
if (sa.isError)
throw (this._exception = sa.error || new Rb("Unknown HTTP exception."), this._exception);
if (!sa.response)
throw (this._exception = new Rb("Missing HTTP response."), this._exception);
sa.response.json !== zb && (this._json = sa.response.json, this.getJSON = function() {
return ja._json;
});
la = sa.response.content || td("string" === typeof sa.response.body ? sa.response.body : JSON.stringify(this._json));
this._buffer = new of(la);
this._buffer.read(Y, Z, ea);
}
}, ja);
},
timeout: function() {
ea.timeout();
},
error: function(sa) {
ea.error(sa);
}
});
}, ja);
}
ja = this;
ab(ea, function() {
if (this._exception)
throw this._exception;
if (this._timedout)
ea.timeout();
else {
if (this._aborted)
return new Uint8Array(0);
this._buffer ? this._buffer.read(Y, Z, ea) : this._out.close(Z, {
result: function(ua) {
aa(ua);
},
timeout: function() {
ea.timeout();
},
error: function(ua) {
ea.error(ua);
}
});
}
}, ja);
}
});
$d = Ab.Class.create({
init: function(Y, Z) {
Object.defineProperties(this, {
_httpLocation: {
value: Y,
writable: !1,
enumerable: !1,
configurable: !1
},
_timeout: {
value: Z,
writable: !0,
enumerable: !1,
configurable: !1
}
});
},
setTimeout: function(Y) {
this._timeout = Y;
},
openConnection: function() {
var Y;
Y = new fa(this._httpLocation, this._timeout);
return {
input: new ba(Y),
output: Y
};
}
});
})();
(function() {
var fa,
ba;
fa = md.extend({
init: function() {
var Y;
Y = {
_buffer: {
value: new Uint8Array(),
writable: !0,
enumerable: !1,
configurable: !1
}
};
Object.defineProperties(this, Y);
},
setTimeout: function() {},
getResponse: function(Y, Z) {
Z.result({
success: !1,
content: null,
errorHttpCode: zb,
errorSubCode: zb
});
},
abort: function() {},
close: function(Y, Z) {
Z.result(!0);
},
write: function(Y, Z, ea, aa, ja) {
var ua,
sa;
try {
if (0 > Z)
throw new RangeError("Offset cannot be negative.");
if (0 > ea)
throw new RangeError("Length cannot be negative.");
if (Z + ea > Y.length)
throw new RangeError("Offset plus length cannot be greater than the array length.");
ua = Y.subarray(Z, ea);
sa = new Uint8Array(this._buffer.length + ua.length);
sa.set(this._buffer);
sa.set(ua, this._buffer.length);
this._buffer = sa;
ja.result(ua.length);
} catch (la) {
ja.error(la);
}
},
flush: function(Y, Z) {
Z.result(!0);
},
request: function() {
return this._buffer;
}
});
ba = Id.extend({
init: function() {},
abort: function() {},
close: function() {},
mark: function() {},
reset: function() {},
markSupported: function() {},
read: function(Y, Z, ea) {
ea.result(new Uint8Array(16));
}
});
ae = Ab.Class.create({
init: function() {
var Y;
Y = {
output: {
value: new fa(),
writable: !1,
enumerable: !1,
configurable: !1
},
input: {
value: new ba(),
writable: !0,
enumerable: !1,
configurable: !1
}
};
Object.defineProperties(this, Y);
},
setTimeout: function() {},
openConnection: function() {
return {
input: this.input,
output: this.output
};
},
getRequest: function() {
return sd(this.output.request());
}
});
})();
pe = function(fa, ba, Y) {
(function(Z, ea, aa) {
Z.read(-1, ea, {
result: function(ja) {
ja && ja.length ? aa(null, ja) : aa(null, null);
},
timeout: function() {
Y.timeout();
},
error: function(ja) {
aa(ja, null);
}
});
})(fa, ba, function(Z, ea) {
var aa,
ja;
if (Z)
Y.error(Z);
else if (ea) {
if (fa.getJSON !== zb && "function" === typeof fa.getJSON)
Y.result(fa.getJSON());
else {
Z = Y.result;
ea = new rf(Xb(ea, "utf-8"));
aa = [];
for (ja = ea.nextValue(); ja !== zb;) {
aa.push(ja);
ja = ea.nextValue();
}
Z.call(Y, aa);
}
} else
Y.result(null);
});
};
dc = {
SYMMETRIC_WRAPPED: "SYMMETRIC_WRAPPED",
ASYMMETRIC_WRAPPED: "ASYMMETRIC_WRAPPED",
DIFFIE_HELLMAN: "DIFFIE_HELLMAN",
JWE_LADDER: "JWE_LADDER",
JWK_LADDER: "JWK_LADDER",
AUTHENTICATED_DH: "AUTHENTICATED_DH"
};
Object.freeze(dc);
(function() {
Uc = Ab.Class.create({
init: function(fa) {
Object.defineProperties(this, {
keyExchangeScheme: {
value: fa,
writable: !1,
configurable: !1
}
});
},
getKeydata: function() {},
toJSON: function() {
var fa;
fa = {};
fa.scheme = this.keyExchangeScheme;
fa.keydata = this.getKeydata();
return fa;
},
equals: function(fa) {
return this === fa ? !0 : fa instanceof Uc ? this.keyExchangeScheme == fa.keyExchangeScheme : !1;
},
uniqueKey: function() {
return this.keyExchangeScheme;
}
});
qe = function(fa, ba, Y) {
La(Y, function() {
var Z,
ea,
aa;
Z = ba.scheme;
ea = ba.keydata;
if (!Z || !ea || "object" !== typeof ea)
throw new Db(X.JSON_PARSE_ERROR, "keyrequestdata " + JSON.stringify(ba));
if (!dc[Z])
throw new Mb(X.UNIDENTIFIED_KEYX_SCHEME, Z);
aa = fa.getKeyExchangeFactory(Z);
if (!aa)
throw new Mb(X.KEYX_FACTORY_NOT_FOUND, Z);
aa.createRequestData(fa, ea, Y);
});
};
})();
(function() {
Vc = Ab.Class.create({
init: function(fa, ba) {
Object.defineProperties(this, {
masterToken: {
value: fa,
writable: !1,
configurable: !1
},
keyExchangeScheme: {
value: ba,
wrtiable: !1,
configurable: !1
}
});
},
getKeydata: function() {},
toJSON: function() {
var fa;
fa = {};
fa.mastertoken = this.masterToken;
fa.scheme = this.keyExchangeScheme;
fa.keydata = this.getKeydata();
return fa;
},
equals: function(fa) {
return this === fa ? !0 : fa instanceof Vc ? this.masterToken.equals(fa.masterToken) && this.keyExchangeScheme == fa.keyExchangeScheme : !1;
},
uniqueKey: function() {
return this.masterToken.uniqueKey() + ":" + this.keyExchangeScheme;
}
});
re = function(fa, ba, Y) {
La(Y, function() {
var Z,
ea,
aa;
Z = ba.mastertoken;
ea = ba.scheme;
aa = ba.keydata;
if (!ea || !Z || "object" !== typeof Z || !aa || "object" !== typeof aa)
throw new Db(X.JSON_PARSE_ERROR, "keyresponsedata " + JSON.stringify(ba));
if (!dc[ea])
throw new Mb(X.UNIDENTIFIED_KEYX_SCHEME, ea);
Wc(fa, Z, {
result: function(ja) {
La(Y, function() {
var ua;
ua = fa.getKeyExchangeFactory(ea);
if (!ua)
throw new Mb(X.KEYX_FACTORY_NOT_FOUND, ea);
return ua.createResponseData(fa, ja, aa);
});
},
error: function(ja) {
Y.error(ja);
}
});
});
};
})();
(function() {
var fa;
fa = Ab.Class.create({
init: function(ba, Y) {
Object.defineProperties(this, {
keyResponseData: {
value: ba,
writable: !1,
configurable: !1
},
cryptoContext: {
value: Y,
writable: !1,
configurable: !1
}
});
}
});
gc = Ab.Class.create({
init: function(ba) {
Object.defineProperties(this, {
scheme: {
value: ba,
writable: !1,
configurable: !1
}
});
},
createRequestData: function(ba, Y, Z) {},
createResponseData: function(ba, Y, Z) {},
generateResponse: function(ba, Y, Z, ea) {},
getCryptoContext: function(ba, Y, Z, ea, aa) {},
generateSessionKeys: function(ba, Y) {
La(Y, function() {
var Z,
ea;
Z = new Uint8Array(16);
ea = new Uint8Array(32);
ba.getRandom().nextBytes(Z);
ba.getRandom().nextBytes(ea);
mc(Z, hc, vc, {
result: function(aa) {
mc(ea, ic, Ec, {
result: function(ja) {
Y.result({
encryptionKey: aa,
hmacKey: ja
});
},
error: function(ja) {
Y.error(new tb(X.SESSION_KEY_CREATION_FAILURE, null, ja));
}
});
},
error: function(aa) {
Y.error(new tb(X.SESSION_KEY_CREATION_FAILURE, null, aa));
}
});
});
},
importSessionKeys: function(ba, Y, Z) {
mc(ba, hc, vc, {
result: function(ea) {
mc(Y, ic, Ec, {
result: function(aa) {
Z.result({
encryptionKey: ea,
hmacKey: aa
});
},
error: function(aa) {
Z.error(aa);
}
});
},
error: function(ea) {
Z.error(ea);
}
});
}
});
gc.KeyExchangeData = fa;
})();
(function() {
var ba,
Y,
Z;
function fa(ea, aa, ja, ua, sa) {
La(sa, function() {
var la,
qa;
switch (aa) {
case ba.PSK:
(la = new rc(ua),
qa = ea.getEntityAuthenticationFactory(Ob.PSK));
if (!qa)
throw new Mb(X.UNSUPPORTED_KEYX_MECHANISM, aa);
la = qa.getCryptoContext(ea, la);
return new oc(ea, pc.A128KW, jc, zb);
case ba.MGK:
la = new qc(ua);
qa = ea.getEntityAuthenticationFactory(Ob.MGK);
if (!qa)
throw new Mb(X.UNSUPPORTED_KEYX_MECHANISM, aa);
la = qa.getCryptoContext(ea, la);
return new oc(ea, pc.A128KW, jc, zb);
case ba.WRAP:
la = ea.getMslCryptoContext();
la.unwrap(ja, lc, wc, {
result: function(ya) {
La(sa, function() {
return new oc(ea, pc.A128KW, jc, ya);
});
},
error: sa.error
});
break;
default:
throw new Mb(X.UNSUPPORTED_KEYX_MECHANISM, aa);
}
});
}
ba = {
PSK: "PSK",
MGK: "MGK",
WRAP: "WRAP"
};
Y = se = Uc.extend({
init: function ua(aa, ja) {
ua.base.call(this, dc.JWE_LADDER);
switch (aa) {
case ba.WRAP:
if (!ja)
throw new vb("Previous wrapping key based key exchange requires the previous wrapping key data and ID.");
break;
default:
ja = null;
}
Object.defineProperties(this, {
mechanism: {
value: aa,
writable: !1,
configurable: !1
},
wrapdata: {
value: ja,
writable: !1,
configurable: !1
}
});
},
getKeydata: function() {
var aa;
aa = {};
aa.mechanism = this.mechanism;
this.wrapdata && (aa.wrapdata = Eb(this.wrapdata));
return aa;
},
equals: function ua(ja) {
return ja === this ? !0 : ja instanceof se ? ua.base.call(this, ja) && this.mechanism == ja.mechanism && Zb(this.wrapdata, ja.wrapdata) : !1;
},
uniqueKey: function ua() {
var sa;
sa = ua.base.call(this) + ":" + this.mechanism;
this.wrapdata && (sa += ":" + $b(this.wrapdata));
return sa;
}
});
Z = te = Vc.extend({
init: function da(sa, la, qa, ya, na) {
da.base.call(this, sa, dc.JWE_LADDER);
Object.defineProperties(this, {
wrapKey: {
value: la,
writable: !1,
configurable: !1
},
wrapdata: {
value: qa,
writable: !1,
configurable: !1
},
encryptionKey: {
value: ya,
writable: !1,
configurable: !1
},
hmacKey: {
value: na,
writable: !1,
configurable: !1
}
});
},
getKeydata: function() {
var sa;
sa = {};
sa.wrapkey = Eb(this.wrapKey);
sa.wrapdata = Eb(this.wrapdata);
sa.encryptionkey = Eb(this.encryptionKey);
sa.hmackey = Eb(this.hmacKey);
return sa;
},
equals: function qa(la) {
return this === la ? !0 : la instanceof te ? qa.base.call(this, la) && Zb(this.wrapKey, la.wrapKey) && Zb(this.wrapdata, la.wrapdata) && Zb(this.encryptionKey, la.encryptionKey) && Zb(this.hmacKey, la.hmacKey) : !1;
},
uniqueKey: function qa() {
return qa.base.call(this) + ":" + $b(this.wrapKey) + ":" + $b(this.wrapdata) + ":" + $b(this.encryptionKey) + ":" + $b(this.hmacKey);
}
});
gc.extend({
init: function na(ya) {
na.base.call(this, dc.JWE_LADDER);
Object.defineProperties(this, {
repository: {
value: ya,
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
createRequestData: function(ya, na, da) {
La(da, function() {
var ha,
ka,
va;
ha = na.mechanism;
ka = na.wrapdata;
if (!ha || ha == ba.WRAP && (!ka || "string" !== typeof ka))
throw new Db(X.JSON_PARSE_ERROR, "keydata " + JSON.stringify(na));
if (!ba[ha])
throw new Mb(X.UNIDENTIFIED_KEYX_MECHANISM, ha);
switch (ha) {
case ba.WRAP:
try {
va = Gb(ka);
} catch (Ra) {
throw new Mb(X.KEYX_WRAPPING_KEY_MISSING, "keydata " + na.toString());
}
if (null == va || 0 == va.length)
throw new Mb(X.KEYX_WRAPPING_KEY_MISSING, "keydata " + na.toString());
break;
default:
va = null;
}
return new Y(ha, va);
});
},
createResponseData: function(ya, na, da) {
var ha,
ka,
va,
Ra,
Ka,
Qa,
Sa;
ya = da.wrapkey;
ha = da.wrapdata;
ka = da.encryptionkey;
va = da.hmackey;
if (!(ya && "string" === typeof ya && ha && "string" === typeof ha && ka && "string" === typeof ka && va) || "string" !== typeof va)
throw new Db(X.JSON_PARSE_ERROR, "keydata " + JSON.stringify(da));
try {
Ra = Gb(ya);
Ka = Gb(ha);
} catch (oa) {
throw new tb(X.INVALID_SYMMETRIC_KEY, "keydata " + JSON.stringify(da), oa);
}
try {
Qa = Gb(ka);
} catch (oa) {
throw new tb(X.INVALID_ENCRYPTION_KEY, "keydata " + JSON.stringify(da), oa);
}
try {
Sa = Gb(va);
} catch (oa) {
throw new tb(X.INVALID_HMAC_KEY, "keydata " + JSON.stringify(da), oa);
}
return new Z(na, Ra, Ka, Qa, Sa);
},
generateResponse: function(ya, na, da, ha) {
var Qa,
Sa;
function ka(oa, xa, Da) {
Qa.generateSessionKeys(ya, {
result: function(Ga) {
La(ha, function() {
va(oa, xa, Da, Ga.encryptionKey, Ga.hmacKey);
}, Qa);
},
error: function(Ga) {
La(ha, function() {
Ga instanceof cb && Ga.setEntity(Sa);
throw Ga;
});
}
});
}
function va(oa, xa, Da, Ga, za) {
La(ha, function() {
fa(ya, na.mechanism, na.wrapdata, oa, {
result: function(Ta) {
Ta.wrap(xa, {
result: function(Fa) {
Ra(xa, Da, Ga, za, Fa);
},
error: function(Fa) {
La(ha, function() {
Fa instanceof cb && Fa.setEntity(Sa);
throw Fa;
});
}
});
},
error: function(Ta) {
La(ha, function() {
Ta instanceof cb && Ta.setEntity(Sa);
throw Ta;
});
}
});
}, Qa);
}
function Ra(oa, xa, Da, Ga, za) {
La(ha, function() {
var Ta;
Ta = new oc(ya, pc.A128KW, jc, oa);
Ta.wrap(Da, {
result: function(Fa) {
Ta.wrap(Ga, {
result: function(Wa) {
Ka(xa, za, Da, Fa, Ga, Wa);
},
error: function(Wa) {
La(ha, function() {
Wa instanceof cb && Wa.setEntity(Sa);
throw Wa;
});
}
});
},
error: function(Fa) {
La(ha, function() {
Fa instanceof cb && Fa.setEntity(Sa);
throw Fa;
});
}
});
}, Qa);
}
function Ka(oa, xa, Da, Ga, za, Ta) {
La(ha, function() {
var Fa;
Fa = ya.getTokenFactory();
Sa ? Fa.renewMasterToken(ya, Sa, Da, za, {
result: function(Wa) {
La(ha, function() {
var Za,
Va;
Za = new fc(ya, Wa);
Va = new Z(Wa, xa, oa, Ga, Ta);
return new gc.KeyExchangeData(Va, Za, ha);
}, Qa);
},
error: function(Wa) {
La(ha, function() {
Wa instanceof cb && Wa.setEntity(Sa);
throw Wa;
});
}
}) : Fa.createMasterToken(ya, da, Da, za, {
result: function(Wa) {
La(ha, function() {
var Za,
Va;
Za = new fc(ya, Wa);
Va = new Z(Wa, xa, oa, Ga, Ta);
return new gc.KeyExchangeData(Va, Za, ha);
}, Qa);
},
error: ha.error
});
}, Qa);
}
Qa = this;
La(ha, function() {
var oa,
xa;
if (!(na instanceof Y))
throw new vb("Key request data " + JSON.stringify(na) + " was not created by this factory.");
oa = da;
if (da instanceof bc) {
if (!da.isVerified())
throw new Sc(X.MASTERTOKEN_UNTRUSTED, da);
Sa = da;
oa = da.identity;
}
xa = new Uint8Array(16);
ya.getRandom().nextBytes(xa);
mc(xa, lc, wc, {
result: function(Da) {
La(ha, function() {
ya.getMslCryptoContext().wrap(Da, {
result: function(Ga) {
ka(oa, Da, Ga);
},
error: function(Ga) {
La(ha, function() {
Ga instanceof cb && Ga.setEntity(Sa);
throw Ga;
}, Qa);
}
});
}, Qa);
},
error: function(Da) {
La(ha, function() {
throw new tb(X.WRAP_KEY_CREATION_FAILURE, null, Da).setEntity(Sa);
}, Qa);
}
});
}, Qa);
},
getCryptoContext: function(ya, na, da, ha, ka) {
var Ra;
function va(Ka, Qa, Sa, oa, xa) {
La(ka, function() {
var Da;
Da = new oc(ya, pc.A128KW, jc, xa);
Da.unwrap(Qa.encryptionKey, hc, vc, {
result: function(Ga) {
Da.unwrap(Qa.hmacKey, ic, Ec, {
result: function(za) {
La(ka, function() {
this.repository.addCryptoContext(Qa.wrapdata, Da);
this.repository.removeCryptoContext(Sa);
return new fc(ya, Qa.masterToken, oa, Ga, za);
}, Ra);
},
error: function(za) {
La(ka, function() {
za instanceof cb && za.setEntity(Ka);
throw za;
});
}
});
},
error: function(Ga) {
La(ka, function() {
Ga instanceof cb && Ga.setEntity(Ka);
throw Ga;
});
}
});
}, Ra);
}
Ra = this;
La(ka, function() {
var Ka,
Qa;
if (!(na instanceof Y))
throw new vb("Key request data " + JSON.stringify(na) + " was not created by this factory.");
if (!(da instanceof Z))
throw new vb("Key response data " + JSON.stringify(da) + " was not created by this factory.");
Ka = na.mechanism;
Qa = na.wrapdata;
ya.getEntityAuthenticationData(null, {
result: function(Sa) {
La(ka, function() {
var oa,
xa,
Da;
oa = Sa.getIdentity();
switch (Ka) {
case ba.PSK:
xa = new rc(oa);
Da = ya.getEntityAuthenticationFactory(Ob.PSK);
if (!Da)
throw new Mb(X.UNSUPPORTED_KEYX_MECHANISM, Ka).setEntity(Sa);
xa = Da.getCryptoContext(ya, xa);
xa = new oc(ya, pc.A128KW, jc, zb);
break;
case ba.MGK:
xa = new qc(oa);
Da = ya.getEntityAuthenticationFactory(Ob.MGK);
if (!Da)
throw new Mb(X.UNSUPPORTED_KEYX_MECHANISM, Ka).setEntity(Sa);
xa = Da.getCryptoContext(ya, xa);
xa = new oc(ya, pc.A128KW, jc, xa.wrapKey);
break;
case ba.WRAP:
xa = this.repository.getCryptoContext(Qa);
if (!xa)
throw new Mb(X.KEYX_WRAPPING_KEY_MISSING, Eb(Qa)).setEntity(Sa);
break;
default:
throw new Mb(X.UNSUPPORTED_KEYX_MECHANISM, Ka).setEntity(Sa);
}
xa.unwrap(da.wrapKey, lc, wc, {
result: function(Ga) {
va(Sa, da, Qa, oa, Ga);
},
error: function(Ga) {
La(ka, function() {
Ga instanceof cb && Ga.setEntity(Sa);
throw Ga;
});
}
});
}, Ra);
},
error: ka.error
});
}, Ra);
}
});
})();
(function() {
var ba,
Y,
Z,
ea;
function fa(aa, ja, ua, sa, la) {
La(la, function() {
var qa,
ya;
switch (ja) {
case ba.PSK:
(qa = new rc(sa),
ya = aa.getEntityAuthenticationFactory(Ob.PSK));
if (!ya)
throw new Mb(X.UNSUPPORTED_KEYX_MECHANISM, ja);
qa = ya.getCryptoContext(aa, qa);
return new ea(zb);
case ba.MGK:
qa = new qc(sa);
ya = aa.getEntityAuthenticationFactory(Ob.MGK);
if (!ya)
throw new Mb(X.UNSUPPORTED_KEYX_MECHANISM, ja);
qa = ya.getCryptoContext(aa, qa);
return new ea(zb);
case ba.WRAP:
qa = aa.getMslCryptoContext();
qa.unwrap(ua, lc, wc, {
result: function(na) {
La(la, function() {
return new ea(na);
});
},
error: la.error
});
break;
default:
throw new Mb(X.UNSUPPORTED_KEYX_MECHANISM, ja);
}
});
}
ba = {
PSK: "PSK",
MGK: "MGK",
WRAP: "WRAP"
};
Y = ue = Uc.extend({
init: function sa(ja, ua) {
sa.base.call(this, dc.JWK_LADDER);
switch (ja) {
case ba.WRAP:
if (!ua)
throw new vb("Previous wrapping key based key exchange requires the previous wrapping key data and ID.");
break;
default:
ua = null;
}
Object.defineProperties(this, {
mechanism: {
value: ja,
writable: !1,
configurable: !1
},
wrapdata: {
value: ua,
writable: !1,
configurable: !1
}
});
},
getKeydata: function() {
var ja;
ja = {};
ja.mechanism = this.mechanism;
this.wrapdata && (ja.wrapdata = Eb(this.wrapdata));
return ja;
},
equals: function sa(ua) {
return ua === this ? !0 : ua instanceof ue ? sa.base.call(this, ua) && this.mechanism == ua.mechanism && Zb(this.wrapdata, ua.wrapdata) : !1;
},
uniqueKey: function sa() {
var la;
la = sa.base.call(this) + ":" + this.mechanism;
this.wrapdata && (la += ":" + $b(this.wrapdata));
return la;
}
});
Z = ve = Vc.extend({
init: function ha(la, qa, ya, na, da) {
ha.base.call(this, la, dc.JWK_LADDER);
Object.defineProperties(this, {
wrapKey: {
value: qa,
writable: !1,
configurable: !1
},
wrapdata: {
value: ya,
writable: !1,
configurable: !1
},
encryptionKey: {
value: na,
writable: !1,
configurable: !1
},
hmacKey: {
value: da,
writable: !1,
configurable: !1
}
});
},
getKeydata: function() {
var la;
la = {};
la.wrapkey = Eb(this.wrapKey);
la.wrapdata = Eb(this.wrapdata);
la.encryptionkey = Eb(this.encryptionKey);
la.hmackey = Eb(this.hmacKey);
return la;
},
equals: function ya(qa) {
return this === qa ? !0 : qa instanceof ve ? ya.base.call(this, qa) && Zb(this.wrapKey, qa.wrapKey) && Zb(this.wrapdata, qa.wrapdata) && Zb(this.encryptionKey, qa.encryptionKey) && Zb(this.hmacKey, qa.hmacKey) : !1;
},
uniqueKey: function ya() {
return ya.base.call(this) + ":" + $b(this.wrapKey) + ":" + $b(this.wrapdata) + ":" + $b(this.encryptionKey) + ":" + $b(this.hmacKey);
}
});
ea = Lc.extend({
init: function(ya) {
ya && ya.rawKey && (ya = ya.rawKey);
Object.defineProperties(this, {
_wrapKey: {
value: ya,
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
encrypt: function(ya, na) {
na.error(new tb(X.ENCRYPT_NOT_SUPPORTED));
},
decrypt: function(ya, na) {
na.error(new tb(X.DECRYPT_NOT_SUPPORTED));
},
wrap: function(ya, na) {
La(na, function() {
Jb.wrapKey("jwk", ya.rawKey, this._wrapKey, lc).then(function(da) {
na.result(da);
}, function(da) {
na.error(new tb(X.WRAP_ERROR));
});
}, this);
},
unwrap: function(ya, na, da, ha) {
function ka(va) {
La(ha, function() {
switch (va.type) {
case "secret":
Tc(va, ha);
break;
case "public":
Bc(va, ha);
break;
case "private":
Jc(va, ha);
break;
default:
throw new tb(X.UNSUPPORTED_KEY, "type: " + va.type);
}
});
}
La(ha, function() {
Jb.unwrapKey("jwk", ya, this._wrapKey, lc, na, !1, da).then(function(va) {
ka(va);
}, function(va) {
ha.error(new tb(X.UNWRAP_ERROR));
});
}, this);
},
sign: function(ya, na) {
na.error(new tb(X.SIGN_NOT_SUPPORTED));
},
verify: function(ya, na, da) {
da.error(new tb(X.VERIFY_NOT_SUPPORTED));
}
});
gc.extend({
init: function da(na) {
da.base.call(this, dc.JWK_LADDER);
Object.defineProperties(this, {
repository: {
value: na,
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
createRequestData: function(na, da, ha) {
La(ha, function() {
var ka,
va,
Ra;
ka = da.mechanism;
va = da.wrapdata;
if (!ka || ka == ba.WRAP && (!va || "string" !== typeof va))
throw new Db(X.JSON_PARSE_ERROR, "keydata " + JSON.stringify(da));
if (!ba[ka])
throw new Mb(X.UNIDENTIFIED_KEYX_MECHANISM, ka);
switch (ka) {
case ba.WRAP:
try {
Ra = Gb(va);
} catch (Ka) {
throw new Mb(X.KEYX_WRAPPING_KEY_MISSING, "keydata " + da.toString());
}
if (null == Ra || 0 == Ra.length)
throw new Mb(X.KEYX_WRAPPING_KEY_MISSING, "keydata " + da.toString());
break;
default:
Ra = null;
}
return new Y(ka, Ra);
});
},
createResponseData: function(na, da, ha) {
var ka,
va,
Ra,
Ka,
Qa,
Sa,
oa;
na = ha.wrapkey;
ka = ha.wrapdata;
va = ha.encryptionkey;
Ra = ha.hmackey;
if (!(na && "string" === typeof na && ka && "string" === typeof ka && va && "string" === typeof va && Ra) || "string" !== typeof Ra)
throw new Db(X.JSON_PARSE_ERROR, "keydata " + JSON.stringify(ha));
try {
Ka = Gb(na);
Qa = Gb(ka);
} catch (xa) {
throw new tb(X.INVALID_SYMMETRIC_KEY, "keydata " + JSON.stringify(ha), xa);
}
try {
Sa = Gb(va);
} catch (xa) {
throw new tb(X.INVALID_ENCRYPTION_KEY, "keydata " + JSON.stringify(ha), xa);
}
try {
oa = Gb(Ra);
} catch (xa) {
throw new tb(X.INVALID_HMAC_KEY, "keydata " + JSON.stringify(ha), xa);
}
return new Z(da, Ka, Qa, Sa, oa);
},
generateResponse: function(na, da, ha, ka) {
var Sa,
oa;
function va(xa, Da, Ga) {
Sa.generateSessionKeys(na, {
result: function(za) {
La(ka, function() {
Ra(xa, Da, Ga, za.encryptionKey, za.hmacKey);
}, Sa);
},
error: function(za) {
La(ka, function() {
za instanceof cb && za.setEntity(oa);
throw za;
});
}
});
}
function Ra(xa, Da, Ga, za, Ta) {
La(ka, function() {
fa(na, da.mechanism, da.wrapdata, xa, {
result: function(Fa) {
Fa.wrap(Da, {
result: function(Wa) {
Ka(Da, Ga, za, Ta, Wa);
},
error: function(Wa) {
La(ka, function() {
Wa instanceof cb && Wa.setEntity(oa);
throw Wa;
});
}
});
},
error: function(Fa) {
La(ka, function() {
Fa instanceof cb && Fa.setEntity(oa);
throw Fa;
});
}
});
}, Sa);
}
function Ka(xa, Da, Ga, za, Ta) {
La(ka, function() {
var Fa;
Fa = new ea(xa);
Fa.wrap(Ga, {
result: function(Wa) {
Fa.wrap(za, {
result: function(Za) {
Qa(Da, Ta, Ga, Wa, za, Za);
},
error: function(Za) {
La(ka, function() {
Za instanceof cb && Za.setEntity(oa);
throw Za;
});
}
});
},
error: function(Wa) {
La(ka, function() {
Wa instanceof cb && Wa.setEntity(oa);
throw Wa;
});
}
});
}, Sa);
}
function Qa(xa, Da, Ga, za, Ta, Fa) {
La(ka, function() {
var Wa;
Wa = na.getTokenFactory();
oa ? Wa.renewMasterToken(na, oa, Ga, Ta, {
result: function(Za) {
La(ka, function() {
var Va,
hb;
Va = new fc(na, Za);
hb = new Z(Za, Da, xa, za, Fa);
return new gc.KeyExchangeData(hb, Va, ka);
}, Sa);
},
error: function(Za) {
La(ka, function() {
Za instanceof cb && Za.setEntity(oa);
throw Za;
});
}
}) : Wa.createMasterToken(na, ha, Ga, Ta, {
result: function(Za) {
La(ka, function() {
var Va,
hb;
Va = new fc(na, Za);
hb = new Z(Za, Da, xa, za, Fa);
return new gc.KeyExchangeData(hb, Va, ka);
}, Sa);
},
error: ka.error
});
}, Sa);
}
Sa = this;
La(ka, function() {
var xa,
Da;
if (!(da instanceof Y))
throw new vb("Key request data " + JSON.stringify(da) + " was not created by this factory.");
xa = ha;
if (ha instanceof bc) {
if (!ha.isVerified())
throw new Sc(X.MASTERTOKEN_UNTRUSTED, ha);
oa = ha;
xa = ha.identity;
}
Da = new Uint8Array(16);
na.getRandom().nextBytes(Da);
mc(Da, lc, wc, {
result: function(Ga) {
La(ka, function() {
na.getMslCryptoContext().wrap(Ga, {
result: function(za) {
va(xa, Ga, za);
},
error: function(za) {
La(ka, function() {
za instanceof cb && za.setEntity(oa);
throw za;
}, Sa);
}
});
}, Sa);
},
error: function(Ga) {
La(ka, function() {
throw new tb(X.WRAP_KEY_CREATION_FAILURE, null, Ga).setEntity(oa);
}, Sa);
}
});
}, Sa);
},
getCryptoContext: function(na, da, ha, ka, va) {
var Ka;
function Ra(Qa, Sa, oa, xa, Da) {
La(va, function() {
var Ga;
Ga = new ea(Da);
Ga.unwrap(Sa.encryptionKey, hc, vc, {
result: function(za) {
Ga.unwrap(Sa.hmacKey, ic, Ec, {
result: function(Ta) {
La(va, function() {
this.repository.addCryptoContext(Sa.wrapdata, Ga);
this.repository.removeCryptoContext(oa);
return new fc(na, Sa.masterToken, xa, za, Ta);
}, Ka);
},
error: function(Ta) {
La(va, function() {
Ta instanceof cb && Ta.setEntity(Qa);
throw Ta;
});
}
});
},
error: function(za) {
La(va, function() {
za instanceof cb && za.setEntity(Qa);
throw za;
});
}
});
}, Ka);
}
Ka = this;
La(va, function() {
var Qa,
Sa;
if (!(da instanceof Y))
throw new vb("Key request data " + JSON.stringify(da) + " was not created by this factory.");
if (!(ha instanceof Z))
throw new vb("Key response data " + JSON.stringify(ha) + " was not created by this factory.");
Qa = da.mechanism;
Sa = da.wrapdata;
na.getEntityAuthenticationData(null, {
result: function(oa) {
La(va, function() {
var xa,
Da,
Ga;
xa = oa.getIdentity();
switch (Qa) {
case ba.PSK:
Da = new rc(xa);
Ga = na.getEntityAuthenticationFactory(Ob.PSK);
if (!Ga)
throw new Mb(X.UNSUPPORTED_KEYX_MECHANISM, Qa).setEntity(oa);
Da = Ga.getCryptoContext(na, Da);
Da = new ea(Da.wrapKey);
break;
case ba.MGK:
Da = new qc(xa);
Ga = na.getEntityAuthenticationFactory(Ob.MGK);
if (!Ga)
throw new Mb(X.UNSUPPORTED_KEYX_MECHANISM, Qa).setEntity(oa);
Da = Ga.getCryptoContext(na, Da);
Da = new ea(Da.wrapKey);
break;
case ba.WRAP:
Da = this.repository.getCryptoContext(Sa);
if (!Da)
throw new Mb(X.KEYX_WRAPPING_KEY_MISSING, Eb(Sa)).setEntity(oa);
break;
default:
throw new Mb(X.UNSUPPORTED_KEYX_MECHANISM, Qa).setEntity(oa);
}
Da.unwrap(ha.wrapKey, lc, wc, {
result: function(za) {
Ra(oa, ha, Sa, xa, za);
},
error: function(za) {
La(va, function() {
za instanceof cb && za.setEntity(oa);
throw za;
});
}
});
}, Ka);
},
error: va.error
});
}, Ka);
}
});
})();
sf = Ab.Class.create({
addCryptoContext: function(fa, ba) {},
getCryptoContext: function(fa) {},
removeCryptoContext: function(fa) {}
});
(function() {
var ba,
Y,
Z,
ea;
function fa(aa, ja, ua, sa, la) {
switch (ua) {
case ba.JWE_RSA:
case ba.JWEJS_RSA:
return new oc(aa, pc.RSA_OAEP, jc, sa, la);
case ba.JWK_RSA:
return new hd(aa, ja, sa, la, id.WRAP_UNWRAP_OAEP);
case ba.JWK_RSAES:
return new hd(aa, ja, sa, la, id.WRAP_UNWRAP_PKCS1);
default:
throw new tb(X.UNSUPPORTED_KEYX_MECHANISM, ua);
}
}
ba = we = {
RSA: "RSA",
ECC: "ECC",
JWE_RSA: "JWE_RSA",
JWEJS_RSA: "JWEJS_RSA",
JWK_RSA: "JWK_RSA",
JWK_RSAES: "JWK_RSAES"
};
Y = vd = Uc.extend({
init: function qa(ja, ua, sa, la) {
qa.base.call(this, dc.ASYMMETRIC_WRAPPED);
Object.defineProperties(this, {
keyPairId: {
value: ja,
writable: !1,
configurable: !1
},
mechanism: {
value: ua,
writable: !1,
configurable: !1
},
publicKey: {
value: sa,
writable: !1,
configurable: !1
},
privateKey: {
value: la,
writable: !1,
configurable: !1
}
});
},
getKeydata: function() {
var ja;
ja = {};
ja.keypairid = this.keyPairId;
ja.mechanism = this.mechanism;
ja.publickey = Eb(this.publicKey.getEncoded());
return ja;
},
equals: function sa(ua) {
var la;
if (ua === this)
return !0;
if (!(ua instanceof vd))
return !1;
la = this.privateKey === ua.privateKey || this.privateKey && ua.privateKey && Zb(this.privateKey.getEncoded(), ua.privateKey.getEncoded());
return sa.base.call(this, ua) && this.keyPairId == ua.keyPairId && this.mechanism == ua.mechanism && Zb(this.publicKey.getEncoded(), ua.publicKey.getEncoded()) && la;
},
uniqueKey: function sa() {
var la,
qa;
la = this.publicKey.getEncoded();
qa = this.privateKey && this.privateKey.getEncoded();
la = sa.base.call(this) + ":" + this.keyPairId + ":" + this.mechanism + ":" + $b(la);
qa && (la += ":" + $b(qa));
return la;
}
});
Z = function(sa, la) {
La(la, function() {
var qa,
ya,
na,
da;
qa = sa.keypairid;
ya = sa.mechanism;
na = sa.publickey;
if (!qa || "string" !== typeof qa || !ya || !na || "string" !== typeof na)
throw new Db(X.JSON_PARSE_ERROR, "keydata " + JSON.stringify(sa));
if (!ba[ya])
throw new Mb(X.UNIDENTIFIED_KEYX_MECHANISM, ya);
try {
da = Gb(na);
switch (ya) {
case ba.JWE_RSA:
case ba.JWEJS_RSA:
case ba.JWK_RSA:
Ad(da, fd, wc, {
result: function(ha) {
la.result(new Y(qa, ya, ha, null));
},
error: function(ha) {
la.error(ha);
}
});
break;
case ba.JWK_RSAES:
Ad(da, yd, wc, {
result: function(ha) {
la.result(new Y(qa, ya, ha, null));
},
error: function(ha) {
la.error(ha);
}
});
break;
default:
throw new tb(X.UNSUPPORTED_KEYX_MECHANISM, ya);
}
} catch (ha) {
if (!(ha instanceof cb))
throw new tb(X.INVALID_PUBLIC_KEY, "keydata " + JSON.stringify(sa), ha);
throw ha;
}
});
};
ea = xe = Vc.extend({
init: function da(la, qa, ya, na) {
da.base.call(this, la, dc.ASYMMETRIC_WRAPPED);
Object.defineProperties(this, {
keyPairId: {
value: qa,
writable: !1,
configurable: !1
},
encryptionKey: {
value: ya,
writable: !1,
configurable: !1
},
hmacKey: {
value: na,
writable: !1,
configurable: !1
}
});
},
getKeydata: function() {
var la;
la = {};
la.keypairid = this.keyPairId;
la.encryptionkey = Eb(this.encryptionKey);
la.hmackey = Eb(this.hmacKey);
return la;
},
equals: function ya(qa) {
return this === qa ? !0 : qa instanceof xe ? ya.base.call(this, qa) && this.keyPairId == qa.keyPairId && Zb(this.encryptionKey, qa.encryptionKey) && Zb(this.hmacKey, qa.hmacKey) : !1;
},
uniqueKey: function ya() {
return ya.base.call(this) + ":" + this.keyPairId + ":" + $b(this.encryptionKey) + ":" + $b(this.hmacKey);
}
});
be = gc.extend({
init: function na() {
na.base.call(this, dc.ASYMMETRIC_WRAPPED);
},
createRequestData: function(na, da, ha) {
Z(da, ha);
},
createResponseData: function(na, da, ha) {
var ka,
va,
Ra,
Ka;
na = ha.keypairid;
ka = ha.encryptionkey;
va = ha.hmackey;
if (!na || "string" !== typeof na || !ka || "string" !== typeof ka || !va || "string" !== typeof va)
throw new Db(X.JSON_PARSE_ERROR, "keydata " + JSON.stringify(ha));
try {
Ra = Gb(ka);
} catch (Qa) {
throw new tb(X.INVALID_ENCRYPTION_KEY, "keydata " + JSON.stringify(ha), Qa);
}
try {
Ka = Gb(va);
} catch (Qa) {
throw new tb(X.INVALID_HMAC_KEY, "keydata " + JSON.stringify(ha), Qa);
}
return new ea(da, na, Ra, Ka);
},
generateResponse: function(na, da, ha, ka) {
var Ka;
function va(Qa, Sa) {
La(ka, function() {
var oa;
oa = fa(na, da.keyPairId, da.mechanism, null, da.publicKey);
oa.wrap(Qa, {
result: function(xa) {
La(ka, function() {
oa.wrap(Sa, {
result: function(Da) {
Ra(Qa, xa, Sa, Da);
},
error: function(Da) {
La(ka, function() {
Da instanceof cb && ha instanceof bc && Da.setEntity(ha);
throw Da;
}, Ka);
}
});
}, Ka);
},
error: function(xa) {
La(ka, function() {
xa instanceof cb && ha instanceof bc && xa.setEntity(ha);
throw xa;
}, Ka);
}
});
}, Ka);
}
function Ra(Qa, Sa, oa, xa) {
La(ka, function() {
var Da;
Da = na.getTokenFactory();
ha instanceof bc ? Da.renewMasterToken(na, ha, Qa, oa, {
result: function(Ga) {
La(ka, function() {
var za,
Ta;
za = new fc(na, Ga);
Ta = new ea(Ga, da.keyPairId, Sa, xa);
return new gc.KeyExchangeData(Ta, za, ka);
}, Ka);
},
error: function(Ga) {
La(ka, function() {
Ga instanceof cb && Ga.setEntity(ha);
throw Ga;
}, Ka);
}
}) : Da.createMasterToken(na, ha, Qa, oa, {
result: function(Ga) {
La(ka, function() {
var za,
Ta;
za = new fc(na, Ga);
Ta = new ea(Ga, da.keyPairId, Sa, xa);
return new gc.KeyExchangeData(Ta, za, ka);
}, Ka);
},
error: ka.error
});
}, Ka);
}
Ka = this;
La(ka, function() {
if (!(da instanceof Y))
throw new vb("Key request data " + JSON.stringify(da) + " was not created by this factory.");
this.generateSessionKeys(na, {
result: function(Qa) {
va(Qa.encryptionKey, Qa.hmacKey);
},
error: function(Qa) {
La(ka, function() {
Qa instanceof cb && ha instanceof bc && Qa.setEntity(ha);
throw Qa;
}, Ka);
}
});
}, Ka);
},
getCryptoContext: function(na, da, ha, ka, va) {
var Ra;
Ra = this;
La(va, function() {
var Ka,
Qa,
Sa;
if (!(da instanceof Y))
throw new vb("Key request data " + JSON.stringify(da) + " was not created by this factory.");
if (!(ha instanceof ea))
throw new vb("Key response data " + JSON.stringify(ha) + " was not created by this factory.");
Ka = da.keyPairId;
Qa = ha.keyPairId;
if (Ka != Qa)
throw new Mb(X.KEYX_RESPONSE_REQUEST_MISMATCH, "request " + Ka + "; response " + Qa).setEntity(ka);
Qa = da.privateKey;
if (!Qa)
throw new Mb(X.KEYX_PRIVATE_KEY_MISSING, "request Asymmetric private key").setEntity(ka);
Sa = fa(na, Ka, da.mechanism, Qa, null);
Sa.unwrap(ha.encryptionKey, hc, vc, {
result: function(oa) {
Sa.unwrap(ha.hmacKey, ic, Ec, {
result: function(xa) {
na.getEntityAuthenticationData(null, {
result: function(Da) {
La(va, function() {
var Ga;
Ga = Da.getIdentity();
return new fc(na, ha.masterToken, Ga, oa, xa);
}, Ra);
},
error: function(Da) {
La(va, function() {
Da instanceof cb && Da.setEntity(ka);
throw Da;
}, Ra);
}
});
},
error: function(xa) {
La(va, function() {
xa instanceof cb && xa.setEntity(ka);
throw xa;
}, Ra);
}
});
},
error: function(oa) {
La(va, function() {
oa instanceof cb && oa.setEntity(ka);
throw oa;
}, Ra);
}
});
}, Ra);
}
});
})();
rf = Ab.Class.create({
init: function(fa) {
var ba,
Y,
Z,
ea,
aa,
ja,
ua,
sa;
ba = Ub.parser();
Y = [];
Z = [];
ua = 0;
sa = !1;
ba.onerror = function(la) {
sa || (sa = !0, ba.end());
};
ba.onopenobject = function(la) {
var qa;
if (ea)
(ea[ja] = {},
Z.push(ea),
ea = ea[ja]);
else if (aa) {
qa = {};
Z.push(aa);
aa.push(qa);
ea = qa;
aa = zb;
} else
ea = {};
ja = la;
};
ba.oncloseobject = function() {
var la;
la = Z.pop();
la ? "object" === typeof la ? ea = la : (ea = zb, aa = la) : (Y.push(ea), ua = ba.index, ea = zb);
};
ba.onopenarray = function() {
var la;
if (ea)
(ea[ja] = [],
Z.push(ea),
aa = ea[ja],
ea = zb);
else if (aa) {
la = [];
Z.push(aa);
aa.push(la);
aa = la;
} else
aa = [];
};
ba.onclosearray = function() {
var la;
la = Z.pop();
la ? "object" === typeof la ? (ea = la, aa = zb) : aa = la : (Y.push(aa), ua = ba.index, aa = zb);
};
ba.onkey = function(la) {
ja = la;
};
ba.onvalue = function(la) {
ea ? ea[ja] = la : aa ? aa.push(la) : (Y.push(la), ua = ba.index);
};
ba.write(fa).close();
Object.defineProperties(this, {
_values: {
value: Y,
writable: !1,
enumerable: !1,
configurable: !1
},
_lastIndex: {
value: ua,
writable: !0,
enumerable: !1,
configurable: !1
}
});
},
more: function() {
return 0 < this._values.length;
},
nextValue: function() {
return 0 == this._values.length ? zb : this._values.shift();
},
lastIndex: function() {
return this._lastIndex;
}
});
(function() {
var fa,
ba,
Y,
Z,
ea;
fa = Jd = "entityauthdata";
ba = ze = "mastertoken";
Y = Ae = "headerdata";
Z = Be = "errordata";
ea = Kd = "signature";
ye = function(aa, ja, ua, sa) {
La(sa, function() {
var la,
qa,
ya,
na,
da,
ha;
la = ja[fa];
qa = ja[ba];
ya = ja[ea];
if (la && "object" !== typeof la || qa && "object" !== typeof qa || "string" !== typeof ya)
throw new Db(X.JSON_PARSE_ERROR, "header/errormsg " + JSON.stringify(ja));
try {
na = Gb(ya);
} catch (ka) {
throw new Hb(X.HEADER_SIGNATURE_INVALID, "header/errormsg " + JSON.stringify(ja), ka);
}
da = null;
la && (da = ke(aa, la));
ha = ja[Y];
if (ha != zb && null != ha) {
if ("string" !== typeof ha)
throw new Db(X.JSON_PARSE_ERROR, "header/errormsg " + JSON.stringify(ja));
qa ? Wc(aa, qa, {
result: function(ka) {
Ld(aa, ha, da, ka, na, ua, sa);
},
error: function(ka) {
sa.error(ka);
}
}) : Ld(aa, ha, da, null, na, ua, sa);
} else if ((la = ja[Z], la != zb && null != la)) {
if ("string" !== typeof la)
throw new Db(X.JSON_PARSE_ERROR, "header/errormsg " + JSON.stringify(ja));
Ce(aa, la, da, na, sa);
} else
throw new Db(X.JSON_PARSE_ERROR, JSON.stringify(ja));
});
};
})();
(function() {
function fa(ba, Y) {
this.errordata = ba;
this.signature = Y;
}
Ac = Ab.Class.create({
init: function(ba, Y, Z, ea, aa, ja, ua, sa, la, qa) {
var ya;
ya = this;
La(qa, function() {
var na,
da;
0 > ja && (ja = -1);
if (0 > ea || ea > Kb)
throw new vb("Message ID " + ea + " is out of range.");
if (!Y)
throw new Hb(X.MESSAGE_ENTITY_NOT_FOUND);
if (la)
return ( Object.defineProperties(this, {
entityAuthenticationData: {
value: Y,
writable: !1,
configurable: !1
},
recipient: {
value: Z,
writable: !1,
configurable: !1
},
messageId: {
value: ea,
writable: !1,
configurable: !1
},
errorCode: {
value: aa,
writable: !1,
configurable: !1
},
internalCode: {
value: ja,
writable: !1,
configurable: !1
},
errorMessage: {
value: ua,
writable: !1,
configurable: !1
},
userMessage: {
value: sa,
writable: !1,
configurable: !1
},
errordata: {
value: la.errordata,
writable: !1,
enumerable: !1,
configurable: !1
},
signature: {
value: la.signature,
writable: !1,
enumerable: !1,
configurable: !1
}
}), this) ;
na = {};
Z && (na.recipient = Z);
na.messageid = ea;
na.errorcode = aa;
0 < ja && (na.internalcode = ja);
ua && (na.errormsg = ua);
sa && (na.usermsg = sa);
try {
da = ba.getEntityAuthenticationFactory(Y.scheme).getCryptoContext(ba, Y);
} catch (ha) {
throw (ha instanceof cb && (ha.setEntity(Y), ha.setMessageId(ea)), ha);
}
na = Yb(JSON.stringify(na), Lb);
da.encrypt(na, {
result: function(ha) {
La(qa, function() {
da.sign(ha, {
result: function(ka) {
La(qa, function() {
Object.defineProperties(this, {
entityAuthenticationData: {
value: Y,
writable: !1,
configurable: !1
},
recipient: {
value: Z,
writable: !1,
configurable: !1
},
messageId: {
value: ea,
writable: !1,
configurable: !1
},
errorCode: {
value: aa,
writable: !1,
configurable: !1
},
internalCode: {
value: ja,
writable: !1,
configurable: !1
},
errorMessage: {
value: ua,
writable: !1,
configurable: !1
},
userMessage: {
value: sa,
writable: !1,
configurable: !1
},
errordata: {
value: ha,
writable: !1,
enumerable: !1,
configurable: !1
},
signature: {
value: ka,
writable: !1,
enumerable: !1,
configurable: !1
}
});
return this;
}, ya);
},
error: function(ka) {
La(qa, function() {
ka instanceof cb && (ka.setEntity(Y), ka.setMessageId(ea));
throw ka;
}, ya);
}
});
}, ya);
},
error: function(ha) {
La(qa, function() {
ha instanceof cb && (ha.setEntity(Y), ha.setMessageId(ea));
throw ha;
}, ya);
}
});
}, ya);
},
toJSON: function() {
var ba;
ba = {};
ba[Jd] = this.entityAuthenticationData;
ba[Be] = Eb(this.errordata);
ba[Kd] = Eb(this.signature);
return ba;
}
});
De = function(ba, Y, Z, ea, aa, ja, ua, sa, la) {
new Ac(ba, Y, Z, ea, aa, ja, ua, sa, null, la);
};
Ce = function(ba, Y, Z, ea, aa) {
La(aa, function() {
var ja,
ua,
sa;
if (!Z)
throw new Hb(X.MESSAGE_ENTITY_NOT_FOUND);
try {
ja = Z.scheme;
ua = ba.getEntityAuthenticationFactory(ja);
if (!ua)
throw new kc(X.ENTITYAUTH_FACTORY_NOT_FOUND, ja);
sa = ua.getCryptoContext(ba, Z);
} catch (la) {
throw (la instanceof cb && la.setEntity(Z), la);
}
try {
Y = Gb(Y);
} catch (la) {
throw new Hb(X.HEADER_DATA_INVALID, Y, la).setEntity(Z);
}
if (!Y || 0 == Y.length)
throw new Hb(X.HEADER_DATA_MISSING, Y).setEntity(Z);
sa.verify(Y, ea, {
result: function(la) {
La(aa, function() {
if (!la)
throw new tb(X.MESSAGE_VERIFICATION_FAILED).setEntity(Z);
sa.decrypt(Y, {
result: function(qa) {
La(aa, function() {
var ya,
na,
da,
ha,
ka,
va,
Ra,
Ka;
ya = Xb(qa, Lb);
try {
na = JSON.parse(ya);
} catch (Sa) {
if (Sa instanceof SyntaxError)
throw new Db(X.JSON_PARSE_ERROR, "errordata " + ya, Sa).setEntity(Z);
throw Sa;
}
da = na.recipient !== zb ? na.recipient : null;
ha = parseInt(na.messageid);
ka = parseInt(na.errorcode);
va = parseInt(na.internalcode);
Ra = na.errormsg;
Ka = na.usermsg;
if (da && "string" !== typeof da || !ha || ha != ha || !ka || ka != ka || na.internalcode && va != va || Ra && "string" !== typeof Ra || Ka && "string" !== typeof Ka)
throw new Db(X.JSON_PARSE_ERROR, "errordata " + ya).setEntity(Z);
if (0 > ha || ha > Kb)
throw new Hb(X.MESSAGE_ID_OUT_OF_RANGE, "errordata " + ya).setEntity(Z);
na = !1;
for (var Qa in Ea) {
if (Ea[Qa] == ka) {
na = !0;
break;
}
}
na || (ka = Ea.FAIL);
if (va) {
if (0 > va)
throw new Hb(X.INTERNAL_CODE_NEGATIVE, "errordata " + ya).setEntity(Z).setMessageId(ha);
} else
va = -1;
ya = new fa(Y, ea);
new Ac(ba, Z, da, ha, ka, va, Ra, Ka, ya, aa);
});
},
error: function(qa) {
La(aa, function() {
qa instanceof cb && qa.setEntity(Z);
throw qa;
});
}
});
});
},
error: function(la) {
La(aa, function() {
la instanceof cb && la.setEntity(Z);
throw la;
});
}
});
});
};
})();
tf = Ab.Class.create({
getUserMessage: function(fa, ba) {}
});
(function() {
Md = function(fa, ba) {
var Y;
if (!fa || !ba)
return null;
Y = fa.compressionAlgorithms.filter(function(Z) {
for (var ea = 0; ea < ba.compressionAlgorithms.length; ++ea) {
if (Z == ba.compressionAlgorithms[ea])
return !0;
}
return !1;
});
fa = fa.languages.filter(function(Z) {
for (var ea = 0; ea < ba.languages.length; ++ea) {
if (Z == ba.languages[ea])
return !0;
}
return !1;
});
return new Xc(Y, fa);
};
Xc = Ab.Class.create({
init: function(fa, ba) {
fa || (fa = []);
ba || (ba = []);
fa.sort();
Object.defineProperties(this, {
compressionAlgorithms: {
value: fa,
writable: !1,
enumerable: !0,
configurable: !1
},
languages: {
value: ba,
writable: !1,
enumerable: !0,
configurable: !1
}
});
},
toJSON: function() {
var fa;
fa = {};
fa.compressionalgos = this.compressionAlgorithms;
fa.languages = this.languages;
return fa;
},
equals: function(fa) {
return this === fa ? !0 : fa instanceof Xc ? Vd(this.compressionAlgorithms, fa.compressionAlgorithms) && Vd(this.languages, fa.languages) : !1;
},
uniqueKey: function() {
return this.compressionAlgorithms.join(":") + "|" + this.languages.join(":");
}
});
Ee = function(fa) {
var ba,
Y,
ea;
ba = fa.compressionalgos;
Y = fa.languages;
if (ba && !(ba instanceof Array) || Y && !(Y instanceof Array))
throw new Db(X.JSON_PARSE_ERROR, "capabilities " + JSON.stringify(fa));
fa = [];
for (var Z = 0; ba && Z < ba.length; ++Z) {
ea = ba[Z];
Cc[ea] && fa.push(ea);
}
return new Xc(fa, Y);
};
})();
(function() {
var qa,
ya;
function fa(na, da, ha, ka, va) {
this.customer = na;
this.sender = da;
this.messageCryptoContext = ha;
this.headerdata = ka;
this.signature = va;
}
function ba(na, da, ha, ka, va, Ra, Ka, Qa, Sa, oa, xa, Da, Ga, za, Ta, Fa, Wa, Za, Va, hb) {
return {
cryptoContext: {
value: da,
writable: !1,
configurable: !1
},
customer: {
value: ha,
writable: !1,
configurable: !1
},
entityAuthenticationData: {
value: ka,
writable: !1,
configurable: !1
},
masterToken: {
value: va,
writable: !1,
configurable: !1
},
sender: {
value: Ra,
writable: !1,
configurable: !1
},
messageId: {
value: Ka,
writable: !1,
configurable: !1
},
nonReplayableId: {
value: Fa,
writable: !1,
configurable: !1
},
keyRequestData: {
value: Qa,
writable: !1,
configurable: !1
},
keyResponseData: {
value: Sa,
writable: !1,
configurable: !1
},
userAuthenticationData: {
value: oa,
writable: !1,
configurable: !1
},
userIdToken: {
value: xa,
writable: !1,
configurable: !1
},
serviceTokens: {
value: Da,
writable: !1,
configurable: !1
},
peerMasterToken: {
value: Ga,
writable: !1,
configurable: !1
},
peerUserIdToken: {
value: za,
writable: !1,
configurable: !1
},
peerServiceTokens: {
value: Ta,
writable: !1,
configurable: !1
},
messageCapabilities: {
value: Za,
writable: !1,
configurable: !1
},
renewable: {
value: Wa,
writable: !1,
enumerable: !1,
configurable: !1
},
headerdata: {
value: Va,
writable: !1,
enumerable: !1,
configurable: !1
},
signature: {
value: hb,
writable: !1,
enumerable: !1,
configurable: !1
}
};
}
function Y(na, da, ha) {
var ka;
if (ha) {
if (da = na.getMslStore().getCryptoContext(ha))
return da;
if (!ha.isVerified() || !ha.isDecrypted())
throw new Sc(X.MASTERTOKEN_UNTRUSTED, ha);
return new fc(na, ha);
}
ha = da.scheme;
ka = na.getEntityAuthenticationFactory(ha);
if (!ka)
throw new kc(X.ENTITYAUTH_FACTORY_NOT_FOUND, ha);
return ka.getCryptoContext(na, da);
}
function Z(na, da, ha, ka, va) {
La(va, function() {
da.verify(ha, ka, {
result: function(Ra) {
La(va, function() {
if (!Ra)
throw new tb(X.MESSAGE_VERIFICATION_FAILED);
da.decrypt(ha, {
result: function(Ka) {
La(va, function() {
return Xb(Ka, Lb);
});
},
error: function(Ka) {
va.error(Ka);
}
});
});
},
error: function(Ra) {
va.error(Ra);
}
});
});
}
function ea(na, da, ha) {
La(ha, function() {
if (da)
re(na, da, ha);
else
return null;
});
}
function aa(na, da, ha, ka) {
La(ka, function() {
if (da)
nd(na, da, ha, ka);
else
return null;
});
}
function ja(na, da, ha, ka) {
La(ka, function() {
if (ha)
Ie(na, da, ha, ka);
else
return null;
});
}
function ua(na, da, ha, ka, va, Ra, Ka) {
var Sa;
function Qa(oa, xa, Da) {
var Ga,
za;
if (xa >= oa.length) {
Ga = [];
for (za in Sa) {
Ga.push(Sa[za]);
}
Da.result(Ga);
} else {
Ga = oa[xa];
if ("object" !== typeof Ga)
throw new Db(X.JSON_PARSE_ERROR, "headerdata " + Ra);
od(na, Ga, ha, ka, va, {
result: function(Ta) {
La(Da, function() {
Sa[Ta.uniqueKey()] = Ta;
Qa(oa, xa + 1, Da);
});
},
error: function(Ta) {
Da.error(Ta);
}
});
}
}
Sa = {};
La(Ka, function() {
if (da) {
if (!(da instanceof Array))
throw new Db(X.JSON_PARSE_ERROR, "headerdata " + Ra);
Qa(da, 0, Ka);
} else
return [];
});
}
function sa(na, da, ha, ka, va, Ra) {
function Ka(Sa, oa, xa) {
La(xa, function() {
var Da;
Da = oa.peermastertoken;
if (Da && "object" !== typeof Da)
throw new Db(X.JSON_PARSE_ERROR, "headerdata " + va);
if (!Da)
return null;
Wc(Sa, Da, xa);
});
}
function Qa(Sa, oa, xa, Da) {
La(Da, function() {
var Ga;
Ga = oa.peeruseridtoken;
if (Ga && "object" !== typeof Ga)
throw new Db(X.JSON_PARSE_ERROR, "headerdata " + va);
if (!Ga)
return null;
nd(Sa, Ga, xa, Da);
});
}
La(Ra, function() {
if (!na.isPeerToPeer())
return {
peerMasterToken: null,
peerUserIdToken: null,
peerServiceTokens: []
};
Ka(na, da, {
result: function(Sa) {
La(Ra, function() {
var oa;
oa = ha ? ha.masterToken : Sa;
Qa(na, da, oa, {
result: function(xa) {
La(Ra, function() {
ua(na, da.peerservicetokens, oa, xa, ka, va, {
result: function(Da) {
La(Ra, function() {
return {
peerMasterToken: Sa,
peerUserIdToken: xa,
peerServiceTokens: Da
};
});
},
error: function(Da) {
La(Ra, function() {
Da instanceof cb && (Da.setEntity(oa), Da.setUser(xa));
throw Da;
});
}
});
});
},
error: function(xa) {
La(Ra, function() {
xa instanceof cb && xa.setEntity(oa);
throw xa;
});
}
});
});
},
error: Ra.error
});
});
}
function la(na, da, ha, ka) {
var Ra;
function va(Ka, Qa) {
La(ka, function() {
if (Qa >= Ka.length)
return Ra;
qe(na, Ka[Qa], {
result: function(Sa) {
La(ka, function() {
Ra.push(Sa);
va(Ka, Qa + 1);
});
},
error: function(Sa) {
ka.error(Sa);
}
});
});
}
Ra = [];
La(ka, function() {
var Ka;
Ka = da.keyrequestdata;
if (!Ka)
return Ra;
if (!(Ka instanceof Array))
throw new Db(X.JSON_PARSE_ERROR, "headerdata " + ha);
va(Ka, 0);
});
}
qa = Ge = Ab.Class.create({
init: function(na, da, ha, ka, va, Ra, Ka, Qa, Sa) {
Object.defineProperties(this, {
messageId: {
value: na,
writable: !1,
configurable: !1
},
nonReplayableId: {
value: da,
writable: !1,
configurable: !1
},
renewable: {
value: ha,
writable: !1,
configurable: !1
},
capabilities: {
value: ka,
writable: !1,
configurable: !1
},
keyRequestData: {
value: va,
writable: !1,
configurable: !1
},
keyResponseData: {
value: Ra,
writable: !1,
configurable: !1
},
userAuthData: {
value: Ka,
writable: !1,
configurable: !1
},
userIdToken: {
value: Qa,
writable: !1,
configurable: !1
},
serviceTokens: {
value: Sa,
writable: !1,
configurable: !1
}
});
}
});
ya = He = Ab.Class.create({
init: function(na, da, ha) {
Object.defineProperties(this, {
peerMasterToken: {
value: na,
writable: !1,
configurable: !1
},
peerUserIdToken: {
value: da,
writable: !1,
configurable: !1
},
peerServiceTokens: {
value: ha,
writable: !1,
configurable: !1
}
});
}
});
Yc = Ab.Class.create({
init: function(na, da, ha, ka, va, Ra, Ka) {
var Sa;
function Qa(oa) {
La(Ka, function() {
var xa,
Da,
Ga,
za,
Ta,
Fa,
Wa,
Za,
Va,
hb,
jb,
nb,
pb,
qb,
yb,
xb,
t;
da = ha ? null : da;
xa = ka.nonReplayableId;
Da = ka.renewable;
Ga = ka.capabilities;
za = ka.messageId;
Ta = ka.keyRequestData ? ka.keyRequestData : [];
Fa = ka.keyResponseData;
Wa = ka.userAuthData;
Za = ka.userIdToken;
Va = ka.serviceTokens ? ka.serviceTokens : [];
if (na.isPeerToPeer()) {
hb = va.peerMasterToken;
jb = va.peerUserIdToken;
nb = va.peerServiceTokens ? va.peerServiceTokens : [];
} else
(jb = hb = null,
nb = []);
if (0 > za || za > Kb)
throw new vb("Message ID " + za + " is out of range.");
if (!da && !ha)
throw new vb("Message entity authentication data or master token must be provided.");
if (Fa) {
if (na.isPeerToPeer()) {
pb = ha;
qb = Fa.masterToken;
} else
(pb = Fa.masterToken,
qb = hb);
} else
(pb = ha,
qb = hb);
if (Za && (!pb || !Za.isBoundTo(pb)))
throw new vb("User ID token must be bound to a master token.");
if (jb && (!qb || !jb.isBoundTo(qb)))
throw new vb("Peer user ID token must be bound to a peer master token.");
Va.forEach(function(b) {
if (b.isMasterTokenBound() && (!pb || !b.isBoundTo(pb)))
throw new vb("Master token bound service tokens must be bound to the provided master token.");
if (b.isUserIdTokenBound() && (!Za || !b.isBoundTo(Za)))
throw new vb("User ID token bound service tokens must be bound to the provided user ID token.");
}, this);
nb.forEach(function(b) {
if (b.isMasterTokenBound() && (!qb || !b.isBoundTo(qb)))
throw new vb("Master token bound peer service tokens must be bound to the provided peer master token.");
if (b.isUserIdTokenBound() && (!jb || !b.isBoundTo(jb)))
throw new vb("User ID token bound peer service tokens must be bound to the provided peer user ID token.");
}, this);
if (Ra) {
t = Ra.customer;
yb = Ra.messageCryptoContext;
xb = ba(na, yb, t, da, ha, oa, za, Ta, Fa, Wa, Za, Va, hb, jb, nb, xa, Da, Ga, Ra.headerdata, Ra.signature);
Object.defineProperties(this, xb);
return this;
}
t = Za ? Za.customer : null;
xb = {};
oa && (xb.sender = oa);
xb.messageid = za;
"number" === typeof xa && (xb.nonreplayableid = xa);
xb.renewable = Da;
Ga && (xb.capabilities = Ga);
0 < Ta.length && (xb.keyrequestdata = Ta);
Fa && (xb.keyresponsedata = Fa);
Wa && (xb.userauthdata = Wa);
Za && (xb.useridtoken = Za);
0 < Va.length && (xb.servicetokens = Va);
hb && (xb.peermastertoken = hb);
jb && (xb.peeruseridtoken = jb);
0 < nb.length && (xb.peerservicetokens = nb);
try {
yb = Y(na, da, ha);
} catch (b) {
throw (b instanceof cb && (b.setEntity(ha), b.setEntity(da), b.setUser(Za), b.setUser(Wa), b.setMessageId(za)), b);
}
xb = Yb(JSON.stringify(xb), Lb);
yb.encrypt(xb, {
result: function(b) {
La(Ka, function() {
yb.sign(b, {
result: function(a) {
La(Ka, function() {
var c;
c = ba(na, yb, t, da, ha, oa, za, Ta, Fa, Wa, Za, Va, hb, jb, nb, xa, Da, Ga, b, a);
Object.defineProperties(this, c);
return this;
}, Sa);
},
error: function(a) {
La(Ka, function() {
a instanceof cb && (a.setEntity(ha), a.setEntity(da), a.setUser(Za), a.setUser(Wa), a.setMessageId(za));
throw a;
}, Sa);
}
});
}, Sa);
},
error: function(b) {
La(Ka, function() {
b instanceof cb && (b.setEntity(ha), b.setEntity(da), b.setUser(Za), b.setUser(Wa), b.setMessageId(za));
throw b;
}, Sa);
}
});
}, Sa);
}
Sa = this;
La(Ka, function() {
Ra ? Qa(Ra.sender) : ha ? na.getEntityAuthenticationData(null, {
result: function(oa) {
oa = oa.getIdentity();
Qa(oa);
},
error: Ka.error
}) : Qa(null);
}, Sa);
},
isEncrypting: function() {
return this.masterToken || ud(this.entityAuthenticationData.scheme);
},
isRenewable: function() {
return this.renewable;
},
toJSON: function() {
var na;
na = {};
this.masterToken ? na[ze] = this.masterToken : na[Jd] = this.entityAuthenticationData;
na[Ae] = Eb(this.headerdata);
na[Kd] = Eb(this.signature);
return na;
}
});
Fe = function(na, da, ha, ka, va, Ra) {
new Yc(na, da, ha, ka, va, null, Ra);
};
Ld = function(na, da, ha, ka, va, Ra, Ka) {
La(Ka, function() {
var Qa,
Sa;
ha = ka ? null : ha;
if (!ha && !ka)
throw new Hb(X.MESSAGE_ENTITY_NOT_FOUND);
Qa = da;
try {
da = Gb(Qa);
} catch (oa) {
throw new Hb(X.HEADER_DATA_INVALID, Qa, oa);
}
if (!da || 0 == da.length)
throw new Hb(X.HEADER_DATA_MISSING, Qa);
try {
Sa = Y(na, ha, ka);
} catch (oa) {
throw (oa instanceof cb && (oa.setEntity(ka), oa.setEntity(ha)), oa);
}
Z(na, Sa, da, va, {
result: function(oa) {
La(Ka, function() {
var xa,
Da,
Ga,
za,
Ta;
try {
xa = JSON.parse(oa);
} catch (Fa) {
if (Fa instanceof SyntaxError)
throw new Db(X.JSON_PARSE_ERROR, "headerdata " + oa, Fa).setEntity(ka).setEntity(ha);
throw Fa;
}
Da = parseInt(xa.messageid);
if (!Da || Da != Da)
throw new Db(X.JSON_PARSE_ERROR, "headerdata " + oa).setEntity(ka).setEntity(ha);
if (0 > Da || Da > Kb)
throw new Hb(X.MESSAGE_ID_OUT_OF_RANGE, "headerdata " + oa).setEntity(ka).setEntity(ha);
Ga = ka ? xa.sender : null;
if (ka && (!Ga || "string" !== typeof Ga))
throw new Db(X.JSON_PARSE_ERROR, "headerdata " + oa).setEntity(ka).setEntity(ha).setMessageId(Da);
za = xa.keyresponsedata;
if (za && "object" !== typeof za)
throw new Db(X.JSON_PARSE_ERROR, "headerdata " + oa).setEntity(ka).setEntity(ha).setMessageId(Da);
Ta = Ka;
Ka = {
result: function(Fa) {
Ta.result(Fa);
},
error: function(Fa) {
Fa instanceof cb && (Fa.setEntity(ka), Fa.setEntity(ha), Fa.setMessageId(Da));
Ta.error(Fa);
}
};
ea(na, za, {
result: function(Fa) {
La(Ka, function() {
var Wa,
Za;
Wa = !na.isPeerToPeer() && Fa ? Fa.masterToken : ka;
Za = xa.useridtoken;
if (Za && "object" !== typeof Za)
throw new Db(X.JSON_PARSE_ERROR, "headerdata " + oa);
aa(na, Za, Wa, {
result: function(Va) {
La(Ka, function() {
var hb;
hb = xa.userauthdata;
if (hb && "object" !== typeof hb)
throw new Db(X.JSON_PARSE_ERROR, "headerdata " + oa);
ja(na, Wa, hb, {
result: function(jb) {
La(Ka, function() {
var nb,
pb,
qb;
if (jb) {
nb = jb.scheme;
pb = na.getUserAuthenticationFactory(nb);
if (!pb)
throw new uc(X.USERAUTH_FACTORY_NOT_FOUND, nb).setUser(Va).setUser(jb);
nb = ka ? ka.identity : ha.getIdentity();
qb = pb.authenticate(na, nb, jb, Va);
} else
qb = Va ? Va.customer : null;
ua(na, xa.servicetokens, Wa, Va, Ra, oa, {
result: function(yb) {
La(Ka, function() {
var xb,
t,
b,
a;
xb = xa.nonreplayableid !== zb ? parseInt(xa.nonreplayableid) : null;
t = xa.renewable;
if (xb != xb || "boolean" !== typeof t)
throw new Db(X.JSON_PARSE_ERROR, "headerdata " + oa);
if (0 > xb || xb > Kb)
throw new Hb(X.NONREPLAYABLE_ID_OUT_OF_RANGE, "headerdata " + oa);
b = null;
a = xa.capabilities;
if (a) {
if ("object" !== typeof a)
throw new Db(X.JSON_PARSE_ERROR, "headerdata " + oa);
b = Ee(a);
}
la(na, xa, oa, {
result: function(c) {
sa(na, xa, Fa, Ra, oa, {
result: function(k) {
La(Ka, function() {
var g,
h,
d,
f;
g = k.peerMasterToken;
h = k.peerUserIdToken;
d = k.peerServiceTokens;
f = new qa(Da, xb, t, b, c, Fa, jb, Va, yb);
g = new ya(g, h, d);
h = new fa(qb, Ga, Sa, da, va);
new Yc(na, ha, ka, f, g, h, Ka);
});
},
error: Ka.error
});
},
error: function(c) {
La(Ka, function() {
c instanceof cb && (c.setUser(Va), c.setUser(jb));
throw c;
});
}
});
});
},
error: function(yb) {
La(Ka, function() {
yb instanceof cb && (yb.setEntity(Wa), yb.setUser(Va), yb.setUser(jb));
throw yb;
});
}
});
});
},
error: Ka.error
});
});
},
error: Ka.error
});
});
},
error: Ka.error
});
});
},
error: Ka.error
});
});
};
})();
(function() {
function fa(ba, Y) {
this.payload = ba;
this.signature = Y;
}
Nd = Ab.Class.create({
init: function(ba, Y, Z, ea, aa, ja, ua, sa) {
var la;
la = this;
La(sa, function() {
var qa,
ya;
if (0 > ba || ba > Kb)
throw new vb("Sequence number " + ba + " is outside the valid range.");
if (0 > Y || Y > Kb)
throw new vb("Message ID " + Y + " is outside the valid range.");
if (ua)
return ( Object.defineProperties(this, {
sequenceNumber: {
value: ba,
writable: !1,
configurable: !1
},
messageId: {
value: Y,
writable: !1,
configurable: !1
},
compressionAlgo: {
value: ea,
writable: !1,
configurable: !1
},
data: {
value: aa,
writable: !1,
configurable: !1
},
endofmsg: {
value: Z,
writable: !1,
enumerable: !1,
configurable: !1
},
payload: {
value: ua.payload,
writable: !1,
enumerable: !1,
configurable: !1
},
signature: {
value: ua.signature,
writable: !1,
enumerable: !1,
configurable: !1
}
}), this) ;
if (ea) {
qa = Od(ea, aa);
qa || (ea = null, qa = aa);
} else
(ea = null,
qa = aa);
ya = {};
ya.sequencenumber = ba;
ya.messageid = Y;
Z && (ya.endofmsg = Z);
ea && (ya.compressionalgo = ea);
ya.data = Eb(qa);
qa = Yb(JSON.stringify(ya), Lb);
ja.encrypt(qa, {
result: function(na) {
La(sa, function() {
ja.sign(na, {
result: function(da) {
La(sa, function() {
Object.defineProperties(this, {
sequenceNumber: {
value: ba,
writable: !1,
configurable: !1
},
messageId: {
value: Y,
writable: !1,
configurable: !1
},
compressionAlgo: {
value: ea,
writable: !1,
configurable: !1
},
data: {
value: aa,
writable: !1,
configurable: !1
},
endofmsg: {
value: Z,
writable: !1,
enumerable: !1,
configurable: !1
},
payload: {
value: na,
writable: !1,
enumerable: !1,
configurable: !1
},
signature: {
value: da,
writable: !1,
enumerable: !1,
configurable: !1
}
});
return this;
}, la);
},
error: function(da) {
sa.error(da);
}
});
}, la);
},
error: function(na) {
sa.error(na);
}
});
}, la);
},
isEndOfMessage: function() {
return this.endofmsg;
},
toJSON: function() {
var ba;
ba = {};
ba.payload = Eb(this.payload);
ba.signature = Eb(this.signature);
return ba;
}
});
Je = function(ba, Y, Z, ea, aa, ja, ua) {
new Nd(ba, Y, Z, ea, aa, ja, null, ua);
};
Ke = function(ba, Y, Z) {
La(Z, function() {
var ea,
aa,
ja,
ua;
ea = ba.payload;
aa = ba.signature;
if (!ea || "string" !== typeof ea || "string" !== typeof aa)
throw new Db(X.JSON_PARSE_ERROR, "payload chunk " + JSON.stringify(ba));
try {
ja = Gb(ea);
} catch (sa) {
throw new Hb(X.PAYLOAD_INVALID, "payload chunk " + JSON.stringify(ba), sa);
}
try {
ua = Gb(aa);
} catch (sa) {
throw new Hb(X.PAYLOAD_SIGNATURE_INVALID, "payload chunk " + JSON.stringify(ba), sa);
}
Y.verify(ja, ua, {
result: function(sa) {
La(Z, function() {
if (!sa)
throw new tb(X.PAYLOAD_VERIFICATION_FAILED);
Y.decrypt(ja, {
result: function(la) {
La(Z, function() {
var qa,
ya,
na,
da,
ha,
ka,
va;
qa = Xb(la, Lb);
try {
ya = JSON.parse(qa);
} catch (Ra) {
if (Ra instanceof SyntaxError)
throw new Db(X.JSON_PARSE_ERROR, "payload chunk payload " + qa, Ra);
throw Ra;
}
na = parseInt(ya.sequencenumber);
da = parseInt(ya.messageid);
ha = ya.endofmsg;
ka = ya.compressionalgo;
ya = ya.data;
if (!na || na != na || !da || da != da || ha && "boolean" !== typeof ha || ka && "string" !== typeof ka || "string" !== typeof ya)
throw new Db(X.JSON_PARSE_ERROR, "payload chunk payload " + qa);
if (0 > na || na > Kb)
throw new cb(X.PAYLOAD_SEQUENCE_NUMBER_OUT_OF_RANGE, "payload chunk payload " + qa);
if (0 > da || da > Kb)
throw new cb(X.PAYLOAD_MESSAGE_ID_OUT_OF_RANGE, "payload chunk payload " + qa);
ha || (ha = !1);
if (ka && !Cc[ka])
throw new Hb(X.UNIDENTIFIED_COMPRESSION, ka);
try {
va = Gb(ya);
} catch (Ra) {
throw new Hb(X.PAYLOAD_DATA_CORRUPT, ya, Ra);
}
if (va && 0 != va.length)
qa = ka ? pd(ka, va) : va;
else {
if (0 < ya.length)
throw new Hb(X.PAYLOAD_DATA_CORRUPT, ya);
if (ha)
qa = new Uint8Array(0);
else
throw new Hb(X.PAYLOAD_DATA_MISSING, ya);
}
va = new fa(ja, ua);
new Nd(na, da, ha, ka, qa, Y, va, Z);
});
},
error: function(la) {
Z.error(la);
}
});
});
},
error: function(sa) {
Z.error(sa);
}
});
});
};
})();
(function() {
var Z,
ea;
function fa(aa, ja, ua, sa, la) {
var ya,
na,
da,
ha,
ka;
function qa() {
La(la, function() {
var va,
Ra;
na >= ja.length && (na = 0, ++ya);
if (ya >= da.length) {
if (ha)
throw ha;
throw new Mb(X.KEYX_FACTORY_NOT_FOUND, JSON.stringify(ja));
}
va = da[ya];
Ra = ja[na];
va.scheme != Ra.keyExchangeScheme ? (++na, qa()) : va.generateResponse(aa, Ra, ka, {
result: function(Ka) {
la.result(Ka);
},
error: function(Ka) {
La(la, function() {
if (!(Ka instanceof cb))
throw Ka;
ha = Ka;
++na;
qa();
});
}
});
});
}
ya = 0;
na = 0;
da = aa.getKeyExchangeFactories();
ka = ua ? ua : sa;
qa();
}
function ba(aa, ja, ua, sa, la) {
La(la, function() {
var qa;
qa = ja.keyRequestData;
if (ja.isRenewable() && 0 < qa.length)
sa ? sa.isRenewable() || sa.isExpired() ? fa(aa, qa, sa, null, la) : aa.getTokenFactory().isNewestMasterToken(aa, sa, {
result: function(ya) {
La(la, function() {
if (ya)
return null;
fa(aa, qa, sa, null, la);
});
},
error: la.error
}) : fa(aa, qa, null, ua.getIdentity(), la);
else
return null;
});
}
function Y(aa, ja, ua, sa) {
La(sa, function() {
var la,
qa,
ya,
na;
la = ja.userIdToken;
qa = ja.userAuthenticationData;
ya = ja.messageId;
if (la && la.isVerified()) {
if (la.isRenewable() && ja.isRenewable() || la.isExpired() || !la.isBoundTo(ua)) {
qa = aa.getTokenFactory();
qa.renewUserIdToken(aa, la, ua, sa);
return;
}
} else if (ja.isRenewable() && ua && qa) {
la = ja.customer;
if (!la) {
la = qa.scheme;
na = aa.getUserAuthenticationFactory(la);
if (!na)
throw new uc(X.USERAUTH_FACTORY_NOT_FOUND, la).setEntity(ua).setUser(qa).setMessageId(ya);
la = na.authenticate(aa, ua.identity, qa, null);
}
qa = aa.getTokenFactory();
qa.createUserIdToken(aa, la, ua, sa);
return;
}
return la;
});
}
Z = new Uint8Array(0);
ea = Fc = function(aa) {
if (0 > aa || aa > Kb)
throw new vb("Message ID " + aa + " is outside the valid range.");
return aa == Kb ? 0 : aa + 1;
};
Nc = function(aa) {
if (0 > aa || aa > Kb)
throw new vb("Message ID " + aa + " is outside the valid range.");
return 0 == aa ? Kb : aa - 1;
};
Gc = function(aa, ja, ua, sa, la) {
La(la, function() {
var qa;
if (sa == zb || null == sa) {
qa = aa.getRandom();
do {
sa = qa.nextLong();
} while (0 > sa || sa > Kb);
} else if (0 > sa || sa > Kb)
throw new vb("Message ID " + sa + " is outside the valid range.");
aa.getEntityAuthenticationData(null, {
result: function(ya) {
La(la, function() {
var na;
na = aa.getMessageCapabilities();
return new qd(aa, sa, na, ya, ja, ua, null, null, null, null, null);
});
},
error: function(ya) {
la.error(ya);
}
});
});
};
Le = function(aa, ja, ua) {
La(ua, function() {
var la,
qa,
ya,
na,
da,
ha;
function sa(ka) {
La(ua, function() {
ka instanceof cb && (ka.setEntity(la), ka.setEntity(qa), ka.setUser(ya), ka.setUser(na), ka.setMessageId(da));
throw ka;
});
}
la = ja.masterToken;
qa = ja.entityAuthenticationData;
ya = ja.userIdToken;
na = ja.userAuthenticationData;
da = ja.messageId;
ha = ea(da);
ba(aa, ja, qa, la, {
result: function(ka) {
La(ua, function() {
var va;
va = ka ? ka.keyResponseData.masterToken : va = la;
aa.getEntityAuthenticationData(null, {
result: function(Ra) {
La(ua, function() {
Y(aa, ja, va, {
result: function(Ka) {
La(ua, function() {
var Qa,
Sa,
oa;
ya = Ka;
Qa = Md(ja.messageCapabilities, aa.getMessageCapabilities());
Sa = ja.keyResponseData;
oa = ja.serviceTokens;
return aa.isPeerToPeer() ? new qd(aa, ha, Qa, Ra, Sa ? Sa.masterToken : ja.peerMasterToken, ja.peerUserIdToken, ja.peerServiceTokens, la, ya, oa, ka) : new qd(aa, ha, Qa, Ra, Sa ? Sa.masterToken : la, ya, oa, null, null, null, ka);
});
},
error: sa
});
});
},
error: sa
});
});
},
error: sa
});
});
};
Me = function(aa, ja, ua, sa, la) {
La(la, function() {
aa.getEntityAuthenticationData(null, {
result: function(qa) {
La(la, function() {
var ya,
na;
if (ja != zb && null != ja)
ya = ea(ja);
else {
na = aa.getRandom();
do {
ya = na.nextInt();
} while (0 > ya || ya > Kb);
}
De(aa, qa, ya, ua.responseCode, ua.internalCode, ua.message, sa, la);
});
},
error: function(qa) {
la.error(qa);
}
});
});
};
qd = Ab.Class.create({
init: function(aa, ja, ua, sa, la, qa, ya, na, da, ha, ka) {
var va,
Ra,
Ka,
Qa,
Sa;
if (!aa.isPeerToPeer() && (na || da))
throw new vb("Cannot set peer master token or peer user ID token when not in peer-to-peer mode.");
va = ka && !aa.isPeerToPeer() ? ka.keyResponseData.masterToken : la;
Ra = [];
va = aa.getMslStore().getServiceTokens(va, qa);
Ra.push.apply(Ra, va);
ya && ya.forEach(function(oa) {
Ra.push(oa);
}, this);
Ka = [];
if (aa.isPeerToPeer()) {
Qa = na;
Sa = da;
ya = ka ? ka.keyResponseData.masterToken : na;
da = aa.getMslStore().getServiceTokens(ya, da);
Ka.push.apply(Ka, da);
ha && ha.forEach(function(oa) {
Ka.push(oa);
}, this);
}
Object.defineProperties(this, {
_ctx: {
value: aa,
writable: !1,
enumerable: !1,
configurable: !1
},
_entityAuthData: {
value: sa,
writable: !1,
enumerable: !1,
configurable: !1
},
_masterToken: {
value: la,
writable: !0,
enumerable: !1,
configurable: !1
},
_messageId: {
value: ja,
writable: !1,
enumerable: !1,
configurable: !1
},
_capabilities: {
value: ua,
writable: !1,
enumerable: !1,
configurable: !1
},
_keyExchangeData: {
value: ka,
writable: !1,
enumerable: !1,
configurable: !1
},
_nonReplayable: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_renewable: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_keyRequestData: {
value: {},
writable: !1,
enumerable: !1,
configurable: !1
},
_userAuthData: {
value: null,
writable: !0,
enumerable: !1,
configurable: !1
},
_userIdToken: {
value: qa,
writable: !0,
enumerable: !1,
configurable: !1
},
_serviceTokens: {
value: Ra,
writable: !1,
enumerable: !1,
configurable: !1
},
_peerMasterToken: {
value: Qa,
writable: !0,
enumerable: !1,
configurable: !1
},
_peerUserIdToken: {
value: Sa,
writable: !0,
enumerable: !1,
configurable: !1
},
_peerServiceTokens: {
value: Ka,
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
getMessageId: function() {
return this._messageId;
},
getMasterToken: function() {
return this._masterToken;
},
getUserIdToken: function() {
return this._userIdToken;
},
getKeyExchangeData: function() {
return this._keyExchangeData;
},
willEncryptHeader: function() {
return this._masterToken || ud(this._entityAuthData.scheme);
},
willEncryptPayloads: function() {
return this._masterToken || !this._ctx.isPeerToPeer() && this._keyExchangeData || ud(this._entityAuthData.scheme);
},
willIntegrityProtectHeader: function() {
return this._masterToken || Wd(this._entityAuthData.scheme);
},
willIntegrityProtectPayloads: function() {
return this._masterToken || !this._ctx.isPeerToPeer() && this._keyExchangeData || Wd(this._entityAuthData.scheme);
},
getHeader: function(aa) {
La(aa, function() {
var ja,
ua,
sa;
ja = this._keyExchangeData ? this._keyExchangeData.keyResponseData : null;
ua = [];
for (sa in this._keyRequestData) {
ua.push(this._keyRequestData[sa]);
}
if (this._nonReplayable) {
if (!this._masterToken)
throw new Hb(X.NONREPLAYABLE_MESSAGE_REQUIRES_MASTERTOKEN);
sa = this._ctx.getMslStore().getNonReplayableId(this._masterToken);
} else
sa = null;
ja = new Ge(this._messageId, sa, this._renewable, this._capabilities, ua, ja, this._userAuthData, this._userIdToken, this._serviceTokens);
ua = new He(this._peerMasterToken, this._peerUserIdToken, this._peerServiceTokens);
Fe(this._ctx, this._entityAuthData, this._masterToken, ja, ua, aa);
}, this);
},
isNonReplayable: function() {
return this._nonReplayable;
},
setNonReplayable: function(aa) {
this._nonReplayable = aa;
return this;
},
isRenewable: function() {
return this._renewable;
},
setRenewable: function(aa) {
this._renewable = aa;
return this;
},
setAuthTokens: function(aa, ja) {
var ua,
la;
if (ja && !ja.isBoundTo(aa))
throw new vb("User ID token must be bound to master token.");
if (this._keyExchangeData && !this._ctx.isPeerToPeer())
throw new vb("Attempt to set message builder master token when key exchange data exists as a trusted network server.");
try {
ua = this._ctx.getMslStore().getServiceTokens(aa, ja);
} catch (qa) {
if (qa instanceof cb)
throw new vb("Invalid master token and user ID token combination despite checking above.", qa);
throw qa;
}
for (var sa = this._serviceTokens.length - 1; 0 <= sa; --sa) {
la = this._serviceTokens[sa];
(la.isUserIdTokenBound() && !la.isBoundTo(ja) || la.isMasterTokenBound() && !la.isBoundTo(aa)) && this._serviceTokens.splice(sa, 1);
}
ua.forEach(function(qa) {
this.excludeServiceToken(qa.name, qa.isMasterTokenBound(), qa.isUserIdTokenBound());
this._serviceTokens.push(qa);
}, this);
this._masterToken = aa;
this._userIdToken = ja;
},
setUserAuthenticationData: function(aa) {
this._userAuthData = aa;
return this;
},
setCustomer: function(aa, ja) {
var ua;
ua = this;
La(ja, function() {
var sa;
if (!this._ctx.isPeerToPeer() && null != this._userIdToken || this._ctx.isPeerToPeer() && null != this._peerUserIdToken)
throw new vb("User ID token or peer user ID token already exists for the remote user.");
sa = this._keyExchangeData ? this._keyExchangeData.keyResponseData.masterToken : this._ctx.isPeerToPeer() ? this._peerMasterToken : this._masterToken;
if (!sa)
throw new vb("User ID token or peer user ID token cannot be created because no corresponding master token exists.");
this._ctx.getTokenFactory().createUserIdToken(this._ctx, aa, sa, {
result: function(la) {
La(ja, function() {
this._ctx.isPeerToPeer() ? this._peerUserIdToken = la : (this._userIdToken = la, this._userAuthData = null);
return !0;
}, ua);
},
error: function(la) {
ja.error(la);
}
});
}, ua);
},
addKeyRequestData: function(aa) {
this._keyRequestData[aa.uniqueKey()] = aa;
return this;
},
removeKeyRequestData: function(aa) {
delete this._keyRequestData[aa.uniqueKey()];
return this;
},
addServiceToken: function(aa) {
var ja;
ja = this._keyExchangeData && !this._ctx.isPeerToPeer() ? this._keyExchangeData.keyResponseData.masterToken : this._masterToken;
if (aa.isMasterTokenBound() && !aa.isBoundTo(ja))
throw new Hb(X.SERVICETOKEN_MASTERTOKEN_MISMATCH, "st " + JSON.stringify(aa) + "; mt " + JSON.stringify(ja)).setEntity(ja);
if (aa.isUserIdTokenBound() && !aa.isBoundTo(this._userIdToken))
throw new Hb(X.SERVICETOKEN_USERIDTOKEN_MISMATCH, "st " + JSON.stringify(aa) + "; uit " + JSON.stringify(this._userIdToken)).setEntity(ja).setUser(this._userIdToken);
this.excludeServiceToken(aa.name, aa.isMasterTokenBound(), aa.isUserIdTokenBound());
this._serviceTokens.push(aa);
return this;
},
addServiceTokenIfAbsent: function(aa) {
var ua;
for (var ja = this._serviceTokens.length - 1; 0 <= ja; --ja) {
ua = this._serviceTokens[ja];
if (ua.name == aa.name && ua.isMasterTokenBound() == aa.isMasterTokenBound() && ua.isUserIdTokenBound() == aa.isUserIdTokenBound())
return this;
}
this.addServiceToken(aa);
return this;
},
excludeServiceToken: function() {
var aa,
ja,
ua,
la;
if (1 == arguments.length) {
aa = arguments[0];
ja = aa.name;
ua = aa.isMasterTokenBound();
aa = aa.isUserIdTokenBound();
} else
(arguments.length = 3,
ja = arguments[0],
ua = arguments[1],
aa = arguments[2]);
for (var sa = this._serviceTokens.length - 1; 0 <= sa; --sa) {
la = this._serviceTokens[sa];
la.name == ja && la.isMasterTokenBound() == ua && la.isUserIdTokenBound() == aa && this._serviceTokens.splice(sa, 1);
}
return this;
},
deleteServiceToken: function() {
var aa,
ja,
ua,
sa;
if (2 == arguments.length) {
aa = arguments[0];
ja = aa.name;
aa.isMasterTokenBound();
aa.isUserIdTokenBound();
ua = arguments[1];
} else
(arguments.length = 4,
ja = arguments[0],
ua = arguments[3]);
sa = this;
La(ua, function() {
var la,
qa;
la = originalToken.isMasterTokenBound() ? this._masterToken : null;
qa = originalToken.isUserIdTokenBound() ? this._userIdToken : null;
sc(this._ctx, ja, Z, la, qa, !1, null, new Mc(), {
result: function(ya) {
La(ua, function() {
return this.addServiceToken(ya);
}, sa);
},
error: function(ya) {
ya instanceof cb && (ya = new vb("Failed to create and add empty service token to message.", ya));
ua.error(ya);
}
});
}, sa);
},
getServiceTokens: function() {
var aa;
aa = [];
aa.push.apply(aa, this._serviceTokens);
return aa;
},
getPeerMasterToken: function() {
return this._peerMasterToken;
},
getPeerUserIdToken: function() {
return this._peerUserIdToken;
},
setPeerAuthTokens: function(aa, ja) {
var ua,
la;
if (!this._ctx.isPeerToPeer())
throw new vb("Cannot set peer master token or peer user ID token when not in peer-to-peer mode.");
if (ja && !aa)
throw new vb("Peer master token cannot be null when setting peer user ID token.");
if (ja && !ja.isBoundTo(aa))
throw new Hb(X.USERIDTOKEN_MASTERTOKEN_MISMATCH, "uit " + ja + "; mt " + aa).setEntity(aa).setUser(ja);
try {
ua = this._ctx.getMslStore().getServiceTokens(aa, ja);
} catch (qa) {
if (qa instanceof cb)
throw new vb("Invalid peer master token and user ID token combination despite proper check.", qa);
throw qa;
}
for (var sa = this._peerServiceTokens.length - 1; 0 <= sa; --sa) {
la = this._peerServiceTokens[sa];
(la.isUserIdTokenBound() && !la.isBoundTo(ja) || la.isMasterTokenBound() && !la.isBoundTo(aa)) && this._peerServiceTokens.slice(sa, 1);
}
ua.forEach(function(qa) {
this.excludePeerServiceToken(qa.name, qa.isMasterTokenBound(), qa.isUserIdTokenBound());
this._peerServiceTokens.push(qa);
}, this);
this._peerUserIdToken = ja;
this._peerMasterToken = aa;
return this;
},
addPeerServiceToken: function(aa) {
if (!this._ctx.isPeerToPeer())
throw new vb("Cannot set peer service tokens when not in peer-to-peer mode.");
if (aa.isMasterTokenBound() && !aa.isBoundTo(this._peerMasterToken))
throw new Hb(X.SERVICETOKEN_MASTERTOKEN_MISMATCH, "st " + JSON.stringify(aa) + "; mt " + JSON.stringify(this._peerMasterToken)).setEntity(this._peerMasterToken);
if (aa.isUserIdTokenBound() && !aa.isBoundTo(this._peerUserIdToken))
throw new Hb(X.SERVICETOKEN_USERIDTOKEN_MISMATCH, "st " + JSON.stringify(aa) + "; uit " + JSON.stringify(this._peerUserIdToken)).setEntity(this._peerMasterToken).setUser(this._peerUserIdToken);
this.excludePeerServiceToken(aa.name, aa.isMasterTokenBound(), aa.isUserIdTokenBound());
this._peerServiceTokens.push(aa);
return this;
},
addPeerServiceTokenIfAbsent: function(aa) {
var ua;
for (var ja = this._peerServiceTokens.length - 1; 0 <= ja; --ja) {
ua = this._peerServiceTokens[ja];
if (ua.name == aa.name && ua.isMasterTokenBound() == aa.isMasterTokenBound() && ua.isUserIdTokenBound() == aa.isUserIdTokenBound())
return this;
}
this.addPeerServiceToken(aa);
return this;
},
excludePeerServiceToken: function() {
var aa,
ja,
ua,
la;
if (1 == arguments.length) {
aa = arguments[0];
ja = aa.name;
ua = aa.isMasterTokenBound();
aa = aa.isUserIdTokenBound();
} else
(arguments.length = 3,
ja = arguments[0],
ua = arguments[1],
aa = arguments[2]);
for (var sa = this._peerServiceTokens.length - 1; 0 <= sa; --sa) {
la = this._peerServiceTokens[sa];
la.name == ja && la.isMasterTokenBound() == ua && la.isUserIdTokenBound() == aa && this._peerServiceTokens.splice(sa, 1);
}
return this;
},
deletePeerServiceToken: function() {
var aa,
ja,
ua,
sa,
la,
qa;
if (2 == arguments.length) {
aa = arguments[0];
ja = aa.name;
ua = aa.isMasterTokenBound();
sa = aa.isUserIdTokenBound();
la = arguments[1];
} else
(arguments.length = 4,
ja = arguments[0],
ua = arguments[1],
sa = arguments[2],
la = arguments[3]);
qa = this;
La(la, function() {
sc(this._ctx, ja, Z, ua ? this._peerMasterToken : null, sa ? this._peerUserIdToken : null, !1, null, new Mc(), {
result: function(ya) {
La(la, function() {
return this.addPeerServiceToken(ya);
}, qa);
},
error: function(ya) {
ya instanceof cb && (ya = new vb("Failed to create and add empty peer service token to message.", ya));
la.error(ya);
}
});
}, qa);
},
getPeerServiceTokens: function() {
var aa;
aa = [];
aa.push.apply(aa, this._peerServiceTokens);
return aa;
}
});
})();
(function() {
function fa(Y, Z) {
return Z[Y] ? Z[Y] : Z[""];
}
function ba(Y) {
var Z;
Z = Y.builder.getKeyExchangeData();
return Z && !Y.ctx.isPeerToPeer() ? Z.keyResponseData.masterToken : Y.builder.getMasterToken();
}
Ne = Ab.Class.create({
init: function(Y, Z, ea) {
Y = {
ctx: {
value: Y,
writable: !1,
enumerable: !1,
configurable: !1
},
cryptoContexts: {
value: Z.getCryptoContexts(),
writable: !1,
enumerable: !1,
configurable: !1
},
builder: {
value: ea,
writable: !1,
enumerable: !1,
configurable: !1
}
};
Object.defineProperties(this, Y);
},
isPrimaryMasterTokenAvailable: function() {
return ba(this) ? !0 : !1;
},
isPrimaryUserIdTokenAvailable: function() {
return this.builder.getUserIdToken() ? !0 : !1;
},
isPeerMasterTokenAvailable: function() {
return this.builder.getPeerMasterToken() ? !0 : !1;
},
isPeerUserIdTokenAvailable: function() {
return this.builder.getPeerUserIdToken() ? !0 : !1;
},
getPrimaryServiceTokens: function() {
return this.builder.getServiceTokens();
},
getPeerServiceTokens: function() {
return this.builder.getPeerServiceTokens();
},
addPrimaryServiceToken: function(Y) {
try {
return ( this.builder.addServiceToken(Y), !0) ;
} catch (Z) {
if (Z instanceof Hb)
return !1;
throw Z;
}
},
addPeerServiceToken: function(Y) {
try {
return ( this.builder.addPeerServiceToken(Y), !0) ;
} catch (Z) {
if (Z instanceof Hb)
return !1;
throw Z;
}
},
addUnboundPrimaryServiceToken: function(Y, Z, ea, aa, ja) {
var ua;
ua = this;
La(ja, function() {
var sa;
sa = fa(Y, this.cryptoContexts);
if (!sa)
return !1;
sc(this.ctx, Y, Z, null, null, ea, aa, sa, {
result: function(la) {
La(ja, function() {
try {
this.builder.addServiceToken(la);
} catch (qa) {
if (qa instanceof Hb)
throw new vb("Service token bound to incorrect authentication tokens despite being unbound.", qa);
throw qa;
}
return !0;
}, ua);
},
error: function(la) {
ja.error(la);
}
});
}, ua);
},
addUnboundPeerServiceToken: function(Y, Z, ea, aa, ja) {
var ua;
ua = this;
La(ja, function() {
var sa;
sa = fa(Y, this.cryptoContexts);
if (!sa)
return !1;
sc(this.ctx, Y, Z, null, null, ea, aa, sa, {
result: function(la) {
La(ja, function() {
try {
this.builder.addPeerServiceToken(la);
} catch (qa) {
if (qa instanceof Hb)
throw new vb("Service token bound to incorrect authentication tokens despite being unbound.", qa);
throw qa;
}
return !0;
}, ua);
},
error: function(la) {
ja.error(la);
}
});
}, ua);
},
addMasterBoundPrimaryServiceToken: function(Y, Z, ea, aa, ja) {
var ua;
ua = this;
La(ja, function() {
var sa,
la;
sa = ba(this);
if (!sa)
return !1;
la = fa(Y, this.cryptoContexts);
if (!la)
return !1;
sc(this.ctx, Y, Z, sa, null, ea, aa, la, {
result: function(qa) {
La(ja, function() {
try {
this.builder.addServiceToken(qa);
} catch (ya) {
if (ya instanceof Hb)
throw new vb("Service token bound to incorrect authentication tokens despite setting correct master token.", ya);
throw ya;
}
return !0;
}, ua);
},
error: function(qa) {
ja.error(qa);
}
});
}, ua);
},
addMasterBoundPeerServiceToken: function(Y, Z, ea, aa, ja) {
var ua;
ua = this;
La(ja, function() {
var sa,
la;
sa = this.builder.getPeerMasterToken();
if (!sa)
return !1;
la = fa(Y, this.cryptoContexts);
if (!la)
return !1;
sc(this.ctx, Y, Z, sa, null, ea, aa, la, {
result: function(qa) {
La(ja, function() {
try {
this.builder.addPeerServiceToken(qa);
} catch (ya) {
if (ya instanceof Hb)
throw new vb("Service token bound to incorrect authentication tokens despite setting correct master token.", ya);
throw ya;
}
return !0;
}, ua);
},
error: function(qa) {
ja.error(qa);
}
});
}, ua);
},
addUserBoundPrimaryServiceToken: function(Y, Z, ea, aa, ja) {
var ua;
ua = this;
La(ja, function() {
var sa,
la,
qa;
sa = ba(this);
if (!sa)
return !1;
la = this.builder.getUserIdToken();
if (!la)
return !1;
qa = fa(Y, this.cryptoContexts);
if (!qa)
return !1;
sc(this.ctx, Y, Z, sa, la, ea, aa, qa, {
result: function(ya) {
La(ja, function() {
try {
this.builder.addServiceToken(ya);
} catch (na) {
if (na instanceof Hb)
throw new vb("Service token bound to incorrect authentication tokens despite setting correct master token and user ID token.", na);
throw na;
}
return !0;
}, ua);
},
error: function(ya) {
ja.error(ya);
}
});
}, ua);
},
addUserBoundPeerServiceToken: function(Y, Z, ea, aa, ja) {
var ua;
ua = this;
La(ja, function() {
var sa,
la,
qa;
sa = this.builder.getPeerMasterToken();
if (!sa)
return !1;
la = this.builder.getPeerUserIdToken();
if (!la)
return !1;
qa = fa(Y, this.cryptoContexts);
if (!qa)
return !1;
sc(this.ctx, Y, Z, sa, la, ea, aa, qa, {
result: function(ya) {
La(ja, function() {
try {
this.builder.addPeerServiceToken(ya);
} catch (na) {
if (na instanceof Hb)
throw new vb("Service token bound to incorrect authentication tokens despite setting correct master token and user ID token.", na);
throw na;
}
return !0;
}, ua);
},
error: function(ya) {
ja.error(ya);
}
});
}, ua);
},
excludePrimaryServiceToken: function() {
var Y,
Z,
ea,
aa;
if (1 == arguments.length) {
Y = arguments[0];
Z = Y.name;
ea = Y.isMasterTokenBound();
aa = Y.isUserIdTokenBound();
} else
(arguments.length = 3,
Z = arguments[0],
ea = arguments[1],
aa = arguments[2]);
for (var ja = this.builder.getServiceTokens(), ua = 0; ua < ja.length; ++ua) {
if ((Y = ja[ua], Y.name == Z && Y.isMasterTokenBound() == ea && Y.isUserIdTokenBound() == aa))
return ( this.builder.excludeServiceToken(Z, ea, aa), !0) ;
}
return !1;
},
excludePeerServiceToken: function() {
var Y,
Z,
ea,
aa;
if (1 == arguments.length) {
Y = arguments[0];
Z = Y.name;
ea = Y.isMasterTokenBound();
aa = Y.isUserIdTokenBound();
} else
(arguments.length = 3,
Z = arguments[0],
ea = arguments[1],
aa = arguments[2]);
for (var ja = this.builder.getPeerServiceTokens(), ua = 0; ua < ja.length; ++ua) {
if ((Y = ja[ua], Y.name == Z && Y.isMasterTokenBound() == ea && Y.isUserIdTokenBound() == aa))
return ( this.builder.excludePeerServiceToken(Z, ea, aa), !0) ;
}
return !1;
},
deletePrimaryServiceToken: function() {
var Y,
Z,
ea,
aa,
ja;
if (2 == arguments.length) {
Y = arguments[0];
Z = Y.name;
ea = Y.isMasterTokenBound();
aa = Y.isUserIdTokenBound();
ja = arguments[1];
} else
4 == arguments.length && (Z = arguments[0], ea = arguments[1], aa = arguments[2], ja = arguments[3]);
La(ja, function() {
var la;
for (var ua = this.builder.getServiceTokens(), sa = 0; sa < ua.length; ++sa) {
la = ua[sa];
if (la.name == Z && la.isMasterTokenBound() == ea && la.isUserIdTokenBound() == aa) {
this.builder.deleteServiceToken(Z, ea, aa, {
result: function() {
ja.result(!0);
},
error: function(qa) {
ja.error(qa);
}
});
return;
}
}
return !1;
}, this);
},
deletePeerServiceToken: function() {
var Y,
Z,
ea,
aa,
ja;
if (2 == arguments.length) {
Y = arguments[0];
Z = Y.name;
ea = Y.isMasterTokenBound();
aa = Y.isUserIdTokenBound();
ja = arguments[1];
} else
4 == arguments.length && (Z = arguments[0], ea = arguments[1], aa = arguments[2], ja = arguments[3]);
La(ja, function() {
var la;
for (var ua = this.builder.getPeerServiceTokens(), sa = 0; sa < ua.length; ++sa) {
la = ua[sa];
if (la.name == Z && la.isMasterTokenBound() == ea && la.isUserIdTokenBound() == aa) {
this.builder.deletePeerServiceToken(Z, ea, aa, {
result: function() {
ja.result(!0);
},
error: function(qa) {
ja.error(qa);
}
});
return;
}
}
return !1;
}, this);
}
});
})();
(function() {
function fa(ba, Y, Z, ea) {
La(ea, function() {
var ja,
ua,
sa,
la,
qa,
ya;
function aa() {
La(ea, function() {
var na;
if (ya >= Z.length) {
if (qa)
throw qa;
throw new Mb(X.KEYX_RESPONSE_REQUEST_MISMATCH, JSON.stringify(Z));
}
na = Z[ya];
sa != na.keyExchangeScheme ? (++ya, aa()) : la.getCryptoContext(ba, na, ua, ja, {
result: ea.result,
error: function(da) {
La(ea, function() {
if (!(da instanceof cb))
throw da;
qa = da;
++ya;
aa();
});
}
});
});
}
ja = Y.masterToken;
ua = Y.keyResponseData;
if (!ua)
return null;
sa = ua.keyExchangeScheme;
la = ba.getKeyExchangeFactory(sa);
if (!la)
throw new Mb(X.KEYX_FACTORY_NOT_FOUND, sa);
ya = 0;
aa();
});
}
Oe = Id.extend({
init: function(ba, Y, Z, ea, aa, ja, ua) {
var sa;
sa = this;
ab(ua, function() {
var ha;
function la() {
sa._ready = !0;
sa._readyQueue.add(!0);
}
function qa(ka, va) {
var Ra;
try {
Ra = va.masterToken;
ka.getTokenFactory().isMasterTokenRevoked(ka, Ra, {
result: function(Ka) {
Ka ? (sa._errored = new Sc(Ka, Ra).setUser(va.userIdToken).setUser(va.userAuthenticationData).setMessageId(va.messageId), la()) : ya(ka, va);
},
error: function(Ka) {
Ka instanceof cb && (Ka.setEntity(va.masterToken), Ka.setUser(va.userIdToken), Ka.setUser(va.userAuthenticationData), Ka.setMessageId(va.messageId));
sa._errored = Ka;
la();
}
});
} catch (Ka) {
Ka instanceof cb && (Ka.setEntity(va.masterToken), Ka.setUser(va.userIdToken), Ka.setUser(va.userAuthenticationData), Ka.setMessageId(va.messageId));
sa._errored = Ka;
la();
}
}
function ya(ka, va) {
var Ra,
Ka;
try {
Ra = va.masterToken;
Ka = va.userIdToken;
Ka ? ka.getTokenFactory().isUserIdTokenRevoked(ka, Ra, Ka, {
result: function(Qa) {
Qa ? (sa._errored = new MslUserIdTokenException(Qa, Ka).setEntity(Ra).setUser(Ka).setMessageId(va.messageId), la()) : na(ka, va);
},
error: function(Qa) {
Qa instanceof cb && (Qa.setEntity(va.masterToken), Qa.setUser(va.userIdToken), Qa.setUser(va.userAuthenticationData), Qa.setMessageId(va.messageId));
sa._errored = Qa;
la();
}
}) : na(ka, va);
} catch (Qa) {
Qa instanceof cb && (Qa.setEntity(va.masterToken), Qa.setUser(va.userIdToken), Qa.setUser(va.userAuthenticationData), Qa.setMessageId(va.messageId));
sa._errored = Qa;
la();
}
}
function na(ka, va) {
var Ra;
try {
Ra = va.masterToken;
Ra.isExpired() ? va.isRenewable() && 0 != va.keyRequestData.length ? ka.getTokenFactory().isMasterTokenRenewable(ka, Ra, {
result: function(Ka) {
Ka ? (sa._errored = new Hb(Ka, "Master token is expired and not renewable.").setEntity(Ra).setUser(va.userIdToken).setUser(va.userAuthenticationData).setMessageId(va.messageId), la()) : da(ka, va);
},
error: function(Ka) {
Ka instanceof cb && (Ka.setEntity(va.masterToken), Ka.setUser(va.userIdToken), Ka.setUser(va.userAuthenticationData), Ka.setMessageId(va.messageId));
sa._errored = Ka;
la();
}
}) : (sa._errored = new Hb(X.MESSAGE_EXPIRED, JSON.stringify(va)).setEntity(Ra).setUser(va.userIdToken).setUser(va.userAuthenticationData).setMessageId(va.messageId), la()) : da(ka, va);
} catch (Ka) {
Ka instanceof cb && (Ka.setEntity(va.masterToken), Ka.setUser(va.userIdToken), Ka.setUser(va.userAuthenticationData), Ka.setMessageId(va.messageId));
sa._errored = Ka;
la();
}
}
function da(ka, va) {
var Ra,
Ka;
try {
Ra = va.masterToken;
Ka = va.nonReplayableId;
"number" === typeof Ka ? Ra ? ka.getTokenFactory().acceptNonReplayableId(ka, Ra, Ka, {
result: function(Qa) {
Qa || (sa._errored = new Hb(X.MESSAGE_REPLAYED, JSON.stringify(va)).setEntity(Ra).setUser(va.userIdToken).setUser(va.userAuthenticationData).setMessageId(va.messageId));
la();
},
error: function(Qa) {
Qa instanceof cb && (Qa.setEntity(Ra), Qa.setUser(va.userIdToken), Qa.setUser(va.userAuthenticationData), Qa.setMessageId(va.messageId));
sa._errored = Qa;
la();
}
}) : (sa._errored = new Hb(X.INCOMPLETE_NONREPLAYABLE_MESSAGE, JSON.stringify(va)).setEntity(va.entityAuthenticationData).setUser(va.userIdToken).setUser(va.userAuthenticationData).setMessageId(va.messageId), la()) : la();
} catch (Qa) {
Qa instanceof cb && (Qa.setEntity(va.masterToken), Qa.setEntity(va.entityAuthenticationData), Qa.setUser(va.userIdToken), Qa.setUser(va.userAuthenticationData), Qa.setMessageId(va.messageId));
sa._errored = Qa;
la();
}
}
ha = {
_source: {
value: Y,
writable: !1,
enumerable: !1,
configurable: !1
},
_parser: {
value: zb,
writable: !0,
enumerable: !1,
configurable: !1
},
_charset: {
value: Z,
writable: !1,
enumerable: !1,
configurable: !1
},
_remainingData: {
value: "",
writable: !0,
enumerable: !1,
configurable: !1
},
_timeout: {
value: ja,
writable: !1,
enumerable: !1,
configurable: !1
},
_header: {
value: zb,
writable: !0,
enumerable: !1,
configurable: !1
},
_cryptoContext: {
value: zb,
writable: !0,
enumerable: !1,
configurable: !1
},
_keyxCryptoContext: {
value: zb,
writable: !0,
enumerable: !1,
configurable: !1
},
_payloadSequenceNumber: {
value: 1,
writable: !0,
enuemrable: !1,
configurable: !1
},
_eom: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_closeSource: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_payloads: {
value: [],
writable: !0,
enumerable: !1,
configurable: !1
},
_payloadIndex: {
value: -1,
writable: !0,
enumerable: !1,
configurable: !1
},
_payloadOffset: {
value: 0,
writable: !0,
enuemrable: !1,
configurable: !1
},
_markOffset: {
value: 0,
writable: !0,
enumerable: !1,
configurable: !1
},
_currentPayload: {
value: null,
writable: !0,
enumerable: !1,
configurable: !1
},
_readException: {
value: null,
writable: !0,
enumerable: !1,
configurable: !1
},
_ready: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_readyQueue: {
value: new Qc(),
writable: !1,
enumerable: !1,
configurable: !1
},
_aborted: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_timedout: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_errored: {
value: null,
writable: !0,
enumerable: !1,
configurable: !1
}
};
Object.defineProperties(this, ha);
pe(sa._source, ja, {
result: function(ka) {
sa._json = ka;
sa._jsonIndex = 0;
null === sa._json ? (sa._errored = new Db(X.MESSAGE_DATA_MISSING), la()) : ye(ba, sa._json[sa._jsonIndex++], aa, {
result: function(va) {
var Ra;
sa._header = va;
if (sa._header instanceof Ac)
(sa._keyxCryptoContext = null,
sa._cryptoContext = null,
la());
else {
Ra = sa._header;
fa(ba, Ra, ea, {
result: function(Ka) {
var Qa;
try {
sa._keyxCryptoContext = Ka;
ba.isPeerToPeer() || !sa._keyxCryptoContext ? sa._cryptoContext = Ra.cryptoContext : sa._cryptoContext = sa._keyxCryptoContext;
try {
Qa = Ra.masterToken;
Qa && (ba.isPeerToPeer() || Qa.isVerified()) ? qa(ba, Ra) : da(ba, Ra);
} catch (Sa) {
Sa instanceof cb && (Sa.setEntity(Ra.masterToken), Sa.setUser(Ra.userIdToken), Sa.setUser(Ra.userAuthenticationData), Sa.setMessageId(Ra.messageId));
sa._errored = Sa;
la();
}
} catch (Sa) {
Sa instanceof cb && (Sa.setEntity(Ra.masterToken), Sa.setEntity(Ra.entityAuthenticationData), Sa.setUser(Ra.userIdToken), Sa.setUser(Ra.userAuthenticationData), Sa.setMessageId(Ra.messageId));
sa._errored = Sa;
la();
}
},
error: function(Ka) {
Ka instanceof cb && (Ka.setEntity(Ra.masterToken), Ka.setEntity(Ra.entityAuthenticationData), Ka.setUser(Ra.userIdToken), Ka.setUser(Ra.userAuthenticationData), Ka.setMessageId(Ra.messageId));
sa._errored = Ka;
la();
}
});
}
},
error: function(va) {
sa._errored = va;
la();
}
});
},
timeout: function() {
sa._timedout = !0;
la();
},
error: function(ka) {
sa._errored = ka;
la();
}
});
return this;
}, sa);
},
nextData: function(ba, Y) {
var Z;
Z = this;
ab(Y, function() {
var aa;
function ea(ja) {
ab(ja, function() {
var ua;
if (this._jsonIndex < this._json.length)
return ua = this._json[this._jsonIndex++];
pe(this._source, this._timeout, {
result: function(sa) {
sa && sa.length && 0 < sa.length ? (sa.forEach(function(la) {
this._json.push(la);
}), ea(ja)) : (this._eom = !0, ja.result(null));
},
timeout: function() {
ja.timeout();
},
error: function(sa) {
ja.error(sa);
}
});
}, Z);
}
aa = this.getMessageHeader();
if (!aa)
throw new vb("Read attempted with error message.");
if (-1 != this._payloadIndex && this._payloadIndex < this._payloads.length)
return this._payloads[this._payloadIndex++];
if (this._eom)
return null;
ea({
result: function(ja) {
ab(Y, function() {
if (!ja)
return null;
if ("object" !== typeof ja)
throw new Db(X.MESSAGE_FORMAT_ERROR);
Ke(ja, this._cryptoContext, {
result: function(ua) {
ab(Y, function() {
var sa,
la,
qa,
ya;
sa = aa.masterToken;
la = aa.entityAuthenticationData;
qa = aa.userIdToken;
ya = aa.getUserAuthenticationData;
if (ua.messageId != aa.messageId)
throw new Hb(X.PAYLOAD_MESSAGE_ID_MISMATCH, "payload mid " + ua.messageId + " header mid " + aa.messageId).setEntity(sa).setEntity(la).setUser(qa).setUser(ya);
if (ua.sequenceNumber != this._payloadSequenceNumber)
throw new Hb(X.PAYLOAD_SEQUENCE_NUMBER_MISMATCH, "payload seqno " + ua.sequenceNumber + " expected seqno " + this._payloadSequenceNumber).setEntity(sa).setEntity(la).setUser(qa).setUser(ya);
++this._payloadSequenceNumber;
ua.isEndOfMessage() && (this._eom = !0);
sa = ua.data;
this._payloads.push(sa);
this._payloadIndex = -1;
return sa;
}, Z);
},
error: function(ua) {
ua instanceof SyntaxError && (ua = new Db(X.JSON_PARSE_ERROR, "payloadchunk", ua));
Y.error(ua);
}
});
}, Z);
},
timeout: function() {
Y.timeout();
},
error: function(ja) {
Y.error(ja);
}
});
}, Z);
},
isReady: function(ba, Y) {
var ea;
function Z() {
ab(Y, function() {
if (this._aborted)
return !1;
if (this._timedout)
Y.timeout();
else {
if (this._errored)
throw this._errored;
return !0;
}
}, ea);
}
ea = this;
ab(Y, function() {
this._ready ? Z() : this._readyQueue.poll(ba, {
result: function(aa) {
ab(Y, function() {
if (aa === zb)
return !1;
Z();
}, ea);
},
timeout: function() {
Y.timeout();
},
error: function(aa) {
Y.error(aa);
}
});
}, ea);
},
getMessageHeader: function() {
return this._header instanceof Yc ? this._header : null;
},
getErrorHeader: function() {
return this._header instanceof Ac ? this._header : null;
},
getIdentity: function() {
var ba,
Y;
ba = this.getMessageHeader();
if (ba) {
Y = ba.masterToken;
return Y ? Y.identity : ba.entityAuthenticationData.getIdentity();
}
return this.getErrorHeader().entityAuthenticationData.getIdentity();
},
getCustomer: function() {
var ba;
ba = this.getMessageHeader();
return ba ? ba.customer : null;
},
getPayloadCryptoContext: function() {
return this._cryptoContext;
},
getKeyExchangeCryptoContext: function() {
return this._keyxCryptoContext;
},
closeSource: function(ba) {
this._closeSource = ba;
},
abort: function() {
this._aborted = !0;
this._source.abort();
this._readyQueue.cancelAll();
},
close: function() {
this._closeSource && this._source.close();
},
mark: function() {
if (this._currentPayload) {
for (; 0 < this._payloads.length && this._payloads[0] !== this._currentPayload;) {
this._payloads.shift();
}
this._payloadIndex = 0;
this._currentPayload = this._payloads[this._payloadIndex++];
this._markOffset = this._payloadOffset;
} else
(this._payloadIndex = -1,
this._payloads = []);
},
markSupported: function() {
return !0;
},
read: function(ba, Y, Z) {
var aa;
function ea() {
ab(Z, function() {
var ua,
sa,
la,
qa;
function ja(ya) {
ab(ya, function() {
var na,
da,
ha;
if (sa && qa >= sa.length)
return sa.subarray(0, qa);
na = -1;
if (this._currentPayload) {
da = this._currentPayload.length - this._payloadOffset;
if (!sa) {
ha = da;
if (-1 != this._payloadIndex)
for (var ka = this._payloadIndex; ka < this._payloads.length; ++ka) {
ha += this._payloads[ka].length;
}
0 < ha && (sa = new Uint8Array(ha));
}
da = Math.min(da, sa ? sa.length - qa : 0);
0 < da && (na = this._currentPayload.subarray(this._payloadOffset, this._payloadOffset + da), sa.set(na, la), na = da, la += da, this._payloadOffset += da);
}
-1 != na ? (qa += na, ja(ya)) : this.nextData(Y, {
result: function(va) {
ab(ya, function() {
if (this._aborted)
return sa ? sa.subarray(0, qa) : new Uint8Array(0);
this._currentPayload = va;
this._payloadOffset = 0;
if (this._currentPayload)
ja(ya);
else
return 0 == qa && 0 != ba ? null : sa ? sa.subarray(0, qa) : new Uint8Array(0);
}, aa);
},
timeout: function() {
ya.timeout(sa ? sa.subarray(0, qa) : new Uint8Array(0));
},
error: function(va) {
ab(ya, function() {
va instanceof cb && (va = new Rb("Error reading the payload chunk.", va));
if (0 < qa)
return ( aa._readException = va, sa.subarray(0, qa)) ;
throw va;
}, aa);
}
});
}, aa);
}
if (this._aborted)
return new Uint8Array(0);
if (this._timedout)
Z.timeout(new Uint8Array(0));
else {
if (this._errored)
throw this._errored;
if (null != this._readException) {
ua = this._readException;
this._readException = null;
throw ua;
}
sa = -1 != ba ? new Uint8Array(ba) : zb;
la = 0;
qa = 0;
ja(Z);
}
}, aa);
}
aa = this;
ab(Z, function() {
if (-1 > ba)
throw new RangeError("read requested with illegal length " + ba);
this._ready ? ea() : this._readyQueue.poll(Y, {
result: function(ja) {
ja === zb ? Z.result(!1) : ea();
},
timeout: function() {
Z.timeout(new Uint8Array(0));
},
error: function(ja) {
Z.error(ja);
}
});
}, aa);
},
reset: function() {
this._payloadIndex = 0;
0 < this._payloads.length ? (this._currentPayload = this._payloads[this._payloadIndex++], this._payloadOffset = this._markOffset) : this._currentPayload = null;
}
});
Pe = function(ba, Y, Z, ea, aa, ja, ua) {
new Oe(ba, Y, Z, ea, aa, ja, ua);
};
})();
(function() {
Qe = md.extend({
init: function(fa, ba, Y, Z, ea, aa, ja) {
var ua;
ua = this;
ab(ja, function() {
var la,
qa,
ya;
function sa() {
ua._ready = !0;
ua._readyQueue.add(!0);
}
la = Md(fa.getMessageCapabilities(), Z.messageCapabilities);
qa = null;
la && (qa = ee(la.compressionAlgorithms));
la = {
_destination: {
value: ba,
writable: !1,
enumerable: !1,
configurable: !1
},
_charset: {
value: Y,
writable: !1,
enumerable: !1,
configurable: !1
},
_capabilities: {
value: la,
writable: !1,
enumerable: !1,
configurable: !1
},
_header: {
value: Z,
writable: !1,
enumerable: !1,
configurable: !1
},
_compressionAlgo: {
value: qa,
writable: !0,
enumerable: !1,
configurable: !1
},
_cryptoContext: {
value: ea,
writable: !1,
enumerable: !1,
configurable: !1
},
_payloadSequenceNumber: {
value: 1,
writable: !0,
enumerable: !1,
configurable: !1
},
_currentPayload: {
value: [],
writable: !0,
enumerable: !1,
configurable: !1
},
_closed: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_payloads: {
value: [],
writable: !1,
enumerable: !1,
configurable: !1
},
_ready: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_readyQueue: {
value: new Qc(),
writable: !1,
enumerable: !1,
configurable: !1
},
_aborted: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_timedout: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_errored: {
value: null,
writable: !0,
enumerable: !1,
configurable: !1
}
};
Object.defineProperties(this, la);
ya = Yb(JSON.stringify(Z), Y);
ba.write(ya, 0, ya.length, aa, {
result: function(na) {
try {
ua._aborted ? sa() : na < ya.length ? (ua._timedout = !0, sa()) : ba.flush(aa, {
result: function(da) {
ua._aborted || (ua._timedout = !da);
sa();
},
timeout: function() {
ua._timedout = !0;
sa();
},
error: function(da) {
ua._errored = da;
sa();
}
});
} catch (da) {
ua._errored = da;
sa();
}
},
timeout: function() {
ua._timedout = !0;
sa();
},
error: function(na) {
ua._errored = na;
sa();
}
});
return this;
}, ua);
},
setCompressionAlgorithm: function(fa, ba, Y) {
var ea;
function Z() {
ea.flush(ba, {
result: function(aa) {
ab(Y, function() {
if (!aa)
throw new Rb("flush() aborted");
this._compressionAlgo = fa;
return !0;
}, ea);
},
timeout: function() {
Y.timeout();
},
error: function(aa) {
Y.error(aa);
}
});
}
ea = this;
ab(Y, function() {
if (!this.getMessageHeader())
throw new vb("Cannot write payload data for an error message.");
if (this._compressionAlgo == fa)
return !0;
if (fa) {
if (!this._capabilities)
return !1;
for (var aa = this._capabilities.compressionAlgorithms, ja = 0; ja < aa.length; ++ja) {
if (aa[ja] == fa) {
Z();
return;
}
}
return !1;
}
Z();
}, ea);
},
getMessageHeader: function() {
return this._header instanceof Yc ? this._header : null;
},
getErrorMessage: function() {
return this._header instanceof Ac ? this._header : null;
},
getPayloads: function() {
return this._payloads;
},
abort: function() {
this._aborted = !0;
this._destination.abort();
this._readyQueue.cancelAll();
},
close: function(fa, ba) {
var Y;
Y = this;
ab(ba, function() {
if (this._aborted)
return !1;
if (this._timedout)
ba.timeout();
else {
if (this._errored)
throw this._errored;
if (this._closed)
return !0;
this._closed = !0;
this.flush(fa, {
result: function(Z) {
ab(ba, function() {
Z && (this._currentPayload = null);
return Z;
}, Y);
},
timeout: function() {
ba.timeout();
},
error: function(Z) {
ba.error(Z);
}
});
}
}, Y);
},
flush: function(fa, ba) {
var Z;
function Y() {
ab(ba, function() {
var ea,
aa,
la;
if (this._aborted)
return !1;
if (this._timedout)
ba.timeout();
else {
if (this._errored)
throw this._errored;
if (!this._currentPayload || !this._closed && 0 == this._currentPayload.length)
return !0;
ea = this.getMessageHeader();
if (!ea)
return !0;
aa = 0;
this._currentPayload && this._currentPayload.forEach(function(qa) {
aa += qa.length;
});
for (var ja = new Uint8Array(aa), ua = 0, sa = 0; this._currentPayload && sa < this._currentPayload.length; ++sa) {
la = this._currentPayload[sa];
ja.set(la, ua);
ua += la.length;
}
Je(this._payloadSequenceNumber, ea.messageId, this._closed, this._compressionAlgo, ja, this._cryptoContext, {
result: function(qa) {
ab(ba, function() {
var ya;
this._payloads.push(qa);
ya = Yb(JSON.stringify(qa), this._charset);
this._destination.write(ya, 0, ya.length, fa, {
result: function(na) {
ab(ba, function() {
if (this._aborted)
return !1;
na < qa.length ? ba.timeout() : this._destination.flush(fa, {
result: function(da) {
ab(ba, function() {
if (this._aborted)
return !1;
if (da)
return ( ++this._payloadSequenceNumber, this._currentPayload = this._closed ? null : [], !0) ;
ba.timeout();
}, Z);
},
timeout: function() {
ba.timeout();
},
error: function(da) {
da instanceof cb && (da = new Rb("Error encoding payload chunk [sequence number " + Z._payloadSequenceNumber + "].", da));
ba.error(da);
}
});
}, Z);
},
timeout: function(na) {
ba.timeout();
},
error: function(na) {
na instanceof cb && (na = new Rb("Error encoding payload chunk [sequence number " + Z._payloadSequenceNumber + "].", na));
ba.error(na);
}
});
}, Z);
},
error: function(qa) {
qa instanceof cb && (qa = new Rb("Error encoding payload chunk [sequence number " + Z._payloadSequenceNumber + "].", qa));
ba.error(qa);
}
});
}
}, Z);
}
Z = this;
ab(ba, function() {
this._ready ? Y() : this._readyQueue.poll(fa, {
result: function(ea) {
ea === zb ? ba.result(!1) : Y();
},
timeout: function() {
ba.timeout();
},
error: function(ea) {
ba.error(ea);
}
});
}, Z);
},
write: function(fa, ba, Y, Z, ea) {
ab(ea, function() {
var aa;
if (this._aborted)
return !1;
if (this._timedout)
ea.timeout();
else {
if (this._errored)
throw this._errored;
if (this._closed)
throw new Rb("Message output stream already closed.");
if (0 > ba)
throw new RangeError("Offset cannot be negative.");
if (0 > Y)
throw new RangeError("Length cannot be negative.");
if (ba + Y > fa.length)
throw new RangeError("Offset plus length cannot be greater than the array length.");
if (!this.getMessageHeader())
throw new vb("Cannot write payload data for an error message.");
aa = fa.subarray(ba, ba + Y);
this._currentPayload.push(aa);
return aa.length;
}
}, this);
}
});
rd = function(fa, ba, Y, Z, ea, aa, ja) {
new Qe(fa, ba, Y, Z, ea, aa, ja);
};
})();
uf = Ab.Class.create({
sentHeader: function(fa) {},
receivedHeader: function(fa) {}
});
Object.freeze({
USERDATA_REAUTH: Ea.USERDATA_REAUTH,
SSOTOKEN_REJECTED: Ea.SSOTOKEN_REJECTED
});
Re = Ab.Class.create({
getCryptoContexts: function() {},
getRecipient: function() {},
isEncrypted: function() {},
isIntegrityProtected: function() {},
isNonReplayable: function() {},
isRequestingTokens: function() {},
getUserId: function() {},
getUserAuthData: function(fa, ba, Y, Z) {},
getCustomer: function() {},
getKeyRequestData: function(fa) {},
updateServiceTokens: function(fa, ba, Y) {},
write: function(fa, ba, Y) {},
getDebugContext: function() {}
});
Ab.Class.create({
getInputStream: function(fa) {},
getOutputStream: function(fa) {}
});
(function() {
var ua,
sa,
la,
qa,
ya,
na,
da,
ha,
ka,
va,
Ra,
Ka;
function fa(Qa) {
return function() {
Qa.abort();
};
}
function ba(Qa, Sa) {
Object.defineProperties(this, {
masterToken: {
value: Qa,
writable: !1,
configurable: !1
},
ticket: {
value: Sa,
writable: !1,
configurable: !1
}
});
}
function Y(Qa, Sa) {
Object.defineProperties(this, {
builder: {
value: Qa,
writable: !1,
configurable: !1
},
msgCtx: {
value: Sa,
writable: !1,
configurable: !1
}
});
}
function Z(Qa, Sa, oa) {
Object.defineProperties(this, {
requestHeader: {
value: Qa,
writable: !1,
configurable: !1
},
payloads: {
value: Sa,
writable: !1,
configurable: !1
},
handshake: {
value: oa,
writable: !1,
configurable: !1
}
});
}
function ea(Qa, Sa) {
Object.defineProperties(this, {
requestHeader: {
value: Sa.requestHeader,
writable: !1,
configurable: !1
},
payloads: {
value: Sa.payloads,
writable: !1,
configurable: !1
},
handshake: {
value: Sa.handshake,
writable: !1,
configurable: !1
},
response: {
value: Qa,
writable: !1,
configurable: !1
}
});
}
function aa(Qa) {
for (; Qa;) {
if (Qa instanceof Vb)
return !0;
Qa = Qa instanceof cb ? Qa.cause : zb;
}
return !1;
}
function ja(Qa, Sa, oa, xa, Da, Ga, za, Ta, Fa) {
Me(Sa, xa, Da, Ga, {
result: function(Wa) {
oa && oa.sentHeader(Wa);
rd(Sa, za, Lb, Wa, null, null, Ta, {
result: function(Za) {
Qa.setAbort(function() {
Za.abort();
});
Za.close(Ta, {
result: function(Va) {
ab(Fa, function() {
if (!Va)
throw new Vb("sendError aborted.");
return Va;
});
},
timeout: function() {
Fa.timeout();
},
error: function(Va) {
Fa.error(Va);
}
});
},
timeout: function() {},
error: function(Za) {
Fa.error(Za);
}
});
},
error: function(Wa) {
Fa.error(Wa);
}
});
}
ua = md.extend({
close: function(Qa, Sa) {
Sa.result(!0);
},
write: function(Qa, Sa, oa, xa, Da) {
La(Da, function() {
return Math.min(Qa.length - Sa, oa);
});
},
flush: function(Qa, Sa) {
Sa.result(!0);
}
});
sa = tf.extend({
getUserMessage: function(Qa, Sa) {
return null;
}
});
la = Re.extend({
init: function(Qa) {
Object.defineProperties(this, {
_appCtx: {
value: Qa,
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
getCryptoContexts: function() {
return this._appCtx.getCryptoContexts();
},
isEncrypted: function() {
return this._appCtx.isEncrypted();
},
isIntegrityProtected: function() {
return this._appCtx.isIntegrityProtected();
},
isNonReplayable: function() {
return this._appCtx.isNonReplayable();
},
isRequestingTokens: function() {
return this._appCtx.isRequestingTokens();
},
getUserId: function() {
return this._appCtx.getUserId();
},
getUserAuthData: function(Qa, Sa, oa, xa) {
this._appCtx.getUserAuthData(Qa, Sa, oa, xa);
},
getCustomer: function() {
return this._appCtx.getCustomer();
},
getKeyRequestData: function(Qa) {
this._appCtx.getKeyRequestData(Qa);
},
updateServiceTokens: function(Qa, Sa, oa) {
this._appCtx.updateServiceTokens(Qa, Sa, oa);
},
write: function(Qa, Sa, oa) {
this._appCtx.write(Qa, Sa, oa);
},
getDebugContext: function() {
return this._appCtx.getDebugContext();
}
});
qa = la.extend({
init: function xa(Sa, oa) {
xa.base.call(this, oa);
Object.defineProperties(this, {
_payloads: {
value: Sa,
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
write: function(Sa, oa, xa) {
var Ga;
function Da(za, Ta) {
var Fa;
if (za == Ga._payloads.length)
xa.result(!0);
else {
Fa = Ga._payloads[za];
Sa.setCompressionAlgorithm(Fa.compressionAlgo, oa, {
result: function(Wa) {
Sa.write(Fa.data, 0, Fa.data.length, oa, {
result: function(Za) {
ab(xa, function() {
Fa.isEndOfMessage() ? Da(za + 1, Ta) : Sa.flush(oa, {
result: function(Va) {
xa.result(Va);
},
timeout: function() {
xa.timeout();
},
error: function(Va) {
xa.error(Va);
}
});
}, Ga);
},
timeout: function(Za) {
xa.timeout(Za);
},
error: function(Za) {
xa.error(Za);
}
});
},
timeout: function() {},
error: function(Wa) {
xa.error(Wa);
}
});
}
}
Ga = this;
Da(0);
}
});
ya = la.extend({
init: function xa(oa) {
xa.base.call(this, oa);
},
isEncrypted: function() {
return !1;
},
isNonReplayable: function() {
return !1;
},
write: function(oa, xa, Da) {
Da.result(!0);
}
});
na = {};
da = Ab.Class.create({
init: function(oa) {
oa || (oa = new sa());
Object.defineProperties(this, {
_filterFactory: {
value: null,
writable: !0,
enumerable: !1,
configurable: !1
},
_renewingContexts: {
value: [],
writable: !1,
enumerable: !1,
configurable: !1
},
_masterTokenLocks: {
value: {},
writable: !1,
enumerable: !1,
configurable: !1
},
_messageRegistry: {
value: oa,
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
setFilterFactory: function(oa) {
this._filterFactory = oa;
},
getNewestMasterToken: function(oa, xa, Da, Ga) {
var za;
za = this;
ab(Ga, function() {
var Ta,
Fa,
Wa,
Za,
Va;
Ta = xa.getMslStore();
Fa = Ta.getMasterToken();
if (!Fa)
return null;
Wa = Fa.uniqueKey();
Za = this._masterTokenLocks[Wa];
Za || (Za = new xd(), this._masterTokenLocks[Wa] = Za);
Va = Za.readLock(Da, {
result: function(hb) {
ab(Ga, function() {
var jb;
if (hb === zb)
throw new Vb("getNewestMasterToken aborted.");
jb = Ta.getMasterToken();
if (Fa.equals(jb))
return new ba(Fa, hb);
Za.unlock(hb);
Za.writeLock(Da, {
result: function(nb) {
ab(Ga, function() {
if (nb === zb)
throw new Vb("getNewestMasterToken aborted.");
delete this._masterTokenLocks[Wa];
Za.unlock(nb);
return this.getNewestMasterToken(oa, xa, Da, Ga);
}, za);
},
timeout: function() {
Ga.timeout();
},
error: function(nb) {
Ga.error(nb);
}
});
}, za);
},
timeout: function() {
Ga.timeout();
},
error: function(hb) {
Ga.error(hb);
}
});
oa.setAbort(function() {
Va && (Za.cancel(Va), Va = zb);
});
}, za);
},
deleteMasterToken: function(oa, xa) {
var Da;
if (xa) {
Da = this;
setTimeout(function() {
var Ga,
za;
Ga = xa.uniqueKey();
za = Da._masterTokenLocks[Ga];
za || (za = new xd(), Da._masterTokenLocks[Ga] = za);
za.writeLock(-1, {
result: function(Ta) {
oa.getMslStore().removeCryptoContext(xa);
delete Da._masterTokenLocks[Ga];
za.unlock(Ta);
},
timeout: function() {
throw new vb("Unexpected timeout received.");
},
error: function(Ta) {
throw Ta;
}
});
}, 0);
}
},
releaseMasterToken: function(oa) {
var xa;
if (oa && oa.masterToken) {
xa = oa.masterToken.uniqueKey();
xa = this._masterTokenLocks[xa];
if (!xa)
throw new vb("Master token read/write lock does not exist when it should.");
xa.unlock(oa.ticket);
}
},
updateOutgoingCryptoContexts: function(oa, xa, Da) {
var Ga;
Ga = oa.getMslStore();
!oa.isPeerToPeer() && Da && (Ga.setCryptoContext(Da.keyResponseData.masterToken, Da.cryptoContext), this.deleteMasterToken(oa, xa.masterToken));
},
updateIncomingCryptoContexts: function(oa, xa, Da) {
var Ga,
za;
Ga = Da.getMessageHeader();
if (Ga) {
za = oa.getMslStore();
if (Ga = Ga.keyResponseData)
(za.setCryptoContext(Ga.masterToken, Da.getKeyExchangeCryptoContext()),
this.deleteMasterToken(oa, xa.masterToken));
}
},
storeServiceTokens: function(oa, xa, Da, Ga) {
var Fa,
Wa;
oa = oa.getMslStore();
for (var za = [], Ta = 0; Ta < Ga.length; ++Ta) {
Fa = Ga[Ta];
if (!Fa.isBoundTo(xa) || !xa.isVerified()) {
Wa = Fa.data;
Wa && 0 == Wa.length ? oa.removeServiceTokens(Fa.name, Fa.isMasterTokenBound() ? xa : null, Fa.isUserIdTokenBound() ? Da : null) : za.push(Fa);
}
}
0 < za.length && oa.addServiceTokens(za);
},
buildRequest: function(oa, xa, Da, Ga, za) {
var Ta;
Ta = this;
this.getNewestMasterToken(oa, xa, Ga, {
result: function(Fa) {
La(za, function() {
var Wa,
Za,
Va;
Wa = Fa && Fa.masterToken;
if (Wa) {
Za = Da.getUserId();
Va = xa.getMslStore();
Za = (Za = Za ? Va.getUserIdToken(Za) : null) && Za.isBoundTo(Wa) ? Za : null;
} else
Za = null;
Gc(xa, Wa, Za, null, {
result: function(hb) {
La(za, function() {
hb.setNonReplayable(Da.isNonReplayable());
return {
builder: hb,
tokenTicket: Fa
};
});
},
error: function(hb) {
La(za, function() {
this.releaseMasterToken(Fa);
hb instanceof cb && (hb = new vb("User ID token not bound to master token despite internal check.", hb));
throw hb;
}, Ta);
}
});
}, Ta);
},
timeout: function() {
za.timeout();
},
error: function(Fa) {
za.error(Fa);
}
});
},
buildResponse: function(oa, xa, Da, Ga, za, Ta) {
var Fa;
Fa = this;
Le(xa, Ga, {
result: function(Wa) {
ab(Ta, function() {
Wa.setNonReplayable(Da.isNonReplayable());
if (!xa.isPeerToPeer() && !Ga.keyResponseData)
return {
builder: Wa,
tokenTicket: null
};
this.getNewestMasterToken(oa, xa, za, {
result: function(Za) {
ab(Ta, function() {
var Va,
hb,
jb;
Va = Za && Za.masterToken;
if (Va) {
hb = Da.getUserId();
jb = xa.getMslStore();
hb = (hb = hb ? jb.getUserIdToken(hb) : null) && hb.isBoundTo(Va) ? hb : null;
} else
hb = null;
Wa.setAuthTokens(Va, hb);
return {
builder: Wa,
tokenTicket: Za
};
}, Fa);
},
timeout: function() {
Ta.timeout();
},
error: function(Za) {
Ta.error(Za);
}
});
}, Fa);
},
error: function(Wa) {
Ta.error(Wa);
}
});
},
buildErrorResponse: function(oa, xa, Da, Ga, za, Ta, Fa) {
var Va;
function Wa(hb, jb) {
ab(Fa, function() {
var nb,
pb;
nb = Fc(za.messageId);
pb = new qa(jb, Da);
Gc(xa, null, null, nb, {
result: function(qb) {
ab(Fa, function() {
xa.isPeerToPeer() && qb.setPeerAuthTokens(hb.peerMasterToken, hb.peerUserIdToken);
qb.setNonReplayable(pb.isNonReplayable());
return {
errorResult: new Y(qb, pb),
tokenTicket: null
};
}, Va);
},
error: function(qb) {
Fa.error(qb);
}
});
}, Va);
}
function Za(hb, jb) {
Va.getNewestMasterToken(oa, xa, Ta, {
result: function(nb) {
ab(Fa, function() {
var pb,
qb,
yb;
pb = nb && nb.masterToken;
qb = Fc(za.messageId);
yb = new qa(jb, Da);
Gc(xa, pb, null, qb, {
result: function(xb) {
ab(Fa, function() {
xa.isPeerToPeer() && xb.setPeerAuthTokens(hb.peerMasterToken, hb.peerUserIdToken);
xb.setNonReplayable(yb.isNonReplayable());
return {
errorResult: new Y(xb, yb),
tokenTicket: nb
};
}, Va);
},
error: function(xb) {
Fa.error(xb);
}
});
}, Va);
},
timeout: function() {
Fa.timeout();
},
error: function(nb) {
Fa.error(nb);
}
});
}
Va = this;
ab(Fa, function() {
var hb,
jb,
nb,
pb;
hb = Ga.requestHeader;
jb = Ga.payloads;
nb = za.errorCode;
switch (nb) {
case Ea.ENTITYDATA_REAUTH:
case Ea.ENTITY_REAUTH:
xa.getEntityAuthenticationData(nb, {
result: function(qb) {
ab(Fa, function() {
if (!qb)
return null;
Wa(hb, jb);
}, Va);
},
error: function(qb) {
Fa.error(qb);
}
});
break;
case Ea.USERDATA_REAUTH:
case Ea.SSOTOKEN_REJECTED:
Da.getUserAuthData(nb, !1, !0, {
result: function(qb) {
ab(Fa, function() {
if (!qb)
return null;
Za(hb, jb);
}, Va);
},
error: function(qb) {
Fa.error(qb);
}
});
break;
case Ea.USER_REAUTH:
Za(hb, jb);
break;
case Ea.KEYX_REQUIRED:
nb = Fc(za.messageId);
pb = new qa(jb, Da);
Gc(xa, null, null, nb, {
result: function(qb) {
ab(Fa, function() {
xa.isPeerToPeer() && qb.setPeerAuthTokens(hb.peerMasterToken, hb.peerUserIdToken);
qb.setRenewable(!0);
qb.setNonReplayable(pb.isNonReplayable());
return {
errorResult: new Y(qb, pb),
tokenTicket: null
};
}, Va);
},
error: function(qb) {
Fa.error(qb);
}
});
break;
case Ea.EXPIRED:
this.getNewestMasterToken(oa, xa, Ta, {
result: function(qb) {
ab(Fa, function() {
var yb,
xb,
t,
b;
yb = qb && qb.masterToken;
xb = hb.userIdToken;
t = Fc(za.messageId);
b = new qa(jb, Da);
Gc(xa, yb, xb, t, {
result: function(a) {
ab(Fa, function() {
xa.isPeerToPeer() && a.setPeerAuthTokens(hb.peerMasterToken, hb.peerUserIdToken);
hb.masterToken.equals(yb) && a.setRenewable(!0);
a.setNonReplayable(b.isNonReplayable());
return {
errorResult: new Y(a, b),
tokenTicket: qb
};
}, Va);
},
error: function(a) {
Fa.error(a);
}
}, Va);
}, Va);
},
timeout: function() {
Fa.timeout();
},
error: function(qb) {
Fa.error(qb);
}
});
break;
case Ea.REPLAYED:
this.getNewestMasterToken(oa, xa, Ta, {
result: function(qb) {
ab(Fa, function() {
var yb,
xb,
t,
b;
yb = qb && qb.masterToken;
xb = hb.userIdToken;
t = Fc(za.messageId);
b = new qa(jb, Da);
Gc(xa, yb, xb, t, {
result: function(a) {
ab(Fa, function() {
xa.isPeerToPeer() && a.setPeerAuthTokens(hb.peerMasterToken, hb.peerUserIdToken);
hb.masterToken.equals(yb) ? (a.setRenewable(!0), a.setNonReplayable(!1)) : a.setNonReplayable(b.isNonReplayable());
return {
errorResult: new Y(a, b),
tokenTicket: qb
};
}, Va);
},
error: function(a) {
Fa.error(a);
}
});
}, Va);
},
timeout: function() {
Fa.timeout();
},
error: function(qb) {
Fa.error(qb);
}
});
break;
default:
return null;
}
}, Va);
},
cleanupContext: function(oa, xa, Da) {
switch (Da.errorCode) {
case Ea.ENTITY_REAUTH:
this.deleteMasterToken(oa, xa.masterToken);
break;
case Ea.USER_REAUTH:
(Da = xa.userIdToken,
xa.masterToken && Da && oa.getMslStore().removeUserIdToken(Da));
}
},
send: function(oa, xa, Da, Ga, za, Ta, Fa) {
var nb;
function Wa(pb, qb, yb) {
ab(Fa, function() {
var xb;
xb = za.getPeerUserIdToken();
!xa.isPeerToPeer() && !qb || xa.isPeerToPeer() && !xb ? (xb = Da.getCustomer()) ? za.setCustomer(xb, {
result: function(t) {
ab(Fa, function() {
qb = za.getUserIdToken();
Za(pb, qb, yb);
}, nb);
},
error: function(t) {
Fa.error(t);
}
}) : Za(pb, qb, yb) : Za(pb, qb, yb);
}, nb);
}
function Za(pb, qb, yb) {
ab(Fa, function() {
var xb,
t;
xb = !yb && (!Da.isEncrypted() || za.willEncryptPayloads()) && (!Da.isIntegrityProtected() || za.willIntegrityProtectPayloads()) && (!Da.isNonReplayable() || za.isNonReplayable() && pb);
xb || za.setNonReplayable(!1);
t = [];
za.isRenewable() && (!pb || pb.isRenewable() || Da.isNonReplayable()) ? Da.getKeyRequestData({
result: function(b) {
ab(Fa, function() {
var c;
for (var a = 0; a < b.length; ++a) {
c = b[a];
t.push(c);
za.addKeyRequestData(c);
}
Va(pb, qb, xb, t);
}, nb);
},
error: function(b) {
Fa.error(b);
}
}) : Va(pb, qb, xb, t);
}, nb);
}
function Va(pb, qb, yb, xb) {
ab(Fa, function() {
var t;
t = new Ne(xa, Da, za);
Da.updateServiceTokens(t, !yb, {
result: function(b) {
za.getHeader({
result: function(a) {
ab(Fa, function() {
var c,
k;
c = Da.getDebugContext();
c && c.sentHeader(a);
c = za.getKeyExchangeData();
this.updateOutgoingCryptoContexts(xa, a, c);
this.storeServiceTokens(xa, pb, qb, a.serviceTokens);
c = !xa.isPeerToPeer() && c ? c.cryptoContext : a.cryptoContext;
if (oa.isAborted())
throw new Vb("send aborted.");
k = null != this._filterFactory ? this._filterFactory.getOutputStream(Ga) : Ga;
rd(xa, k, Lb, a, c, Ta, {
result: function(g) {
oa.setAbort(function() {
g.abort();
});
hb(g, a, yb);
},
timeout: function() {
Fa.timeout();
},
error: function(g) {
Fa.error(g);
}
});
}, nb);
},
timeout: function() {
Fa.timeout();
},
error: function(a) {
Fa.error(a);
}
});
},
error: function(b) {
Fa.error(b);
}
});
}, nb);
}
function hb(pb, qb, yb) {
var xb,
t;
if (yb)
Da.write(pb, Ta, {
result: function(b) {
ab(Fa, function() {
if (oa.isAborted())
throw new Vb("MessageOutputStream write aborted.");
jb(pb, qb, yb);
}, nb);
},
timeout: function() {
Fa.timeout();
},
error: function(b) {
Fa.error(b);
}
});
else {
xb = new ua();
t = new Mc();
rd(xa, xb, Lb, qb, t, Ta, {
result: function(b) {
Da.write(b, Ta, {
result: function(a) {
ab(Fa, function() {
if (oa.isAborted())
throw new Vb("MessageOutputStream proxy write aborted.");
b.close(Ta, {
result: function(c) {
ab(Fa, function() {
var k;
if (!c)
throw new Vb("MessageOutputStream proxy close aborted.");
k = b.getPayloads();
jb(pb, qb, yb, k);
}, nb);
},
timeout: function() {
Fa.timeout();
},
error: function(c) {
Fa.error(c);
}
});
}, nb);
},
timeout: function() {
Fa.timeout();
},
error: function(a) {
Fa.error(a);
}
});
},
timeout: function() {
Fa.timeout();
},
error: function(b) {
Fa.error(b);
}
});
}
}
function jb(pb, qb, yb, xb) {
pb.close(Ta, {
result: function(t) {
ab(Fa, function() {
if (!t)
throw new Vb("MessageOutputStream close aborted.");
xb || (xb = pb.getPayloads());
return new Z(qb, xb, !yb);
}, nb);
},
timeout: function() {
Fa.timeout();
},
error: function(t) {
Fa.error(t);
}
});
}
nb = this;
ab(Fa, function() {
var pb,
qb,
yb,
xb;
pb = za.getMasterToken();
qb = za.getUserIdToken();
yb = !1;
if (Da.getUserId()) {
xb = !qb;
Da.getUserAuthData(null, za.isRenewable(), xb, {
result: function(t) {
ab(Fa, function() {
t && (za.willEncryptHeader() && za.willIntegrityProtectHeader() ? za.setUserAuthenticationData(t) : yb = !0);
Wa(pb, qb, yb);
}, nb);
},
error: function(t) {
Fa.error(t);
}
});
} else
Wa(pb, qb, yb);
}, nb);
},
receive: function(oa, xa, Da, Ga, za, Ta, Fa) {
var Wa;
Wa = this;
ab(Fa, function() {
var Za,
Va,
hb;
if (oa.isAborted())
throw new Vb("receive aborted.");
Za = [];
za && (Za = za.keyRequestData.filter(function() {
return !0;
}));
Va = Da.getCryptoContexts();
hb = this._filterFactory ? this._filterFactory.getInputStream(Ga) : Ga;
Pe(xa, hb, Lb, Za, Va, Ta, {
result: function(jb) {
oa.setAbort(function() {
jb.abort();
});
jb.isReady(Ta, {
result: function(nb) {
ab(Fa, function() {
var pb,
qb,
yb,
xb;
if (!nb)
throw new Vb("MessageInputStream aborted.");
pb = jb.getMessageHeader();
qb = jb.getErrorHeader();
yb = Da.getDebugContext();
yb && yb.receivedHeader(pb ? pb : qb);
if (za && (yb = qb ? qb.errorCode : null, pb || yb != Ea.FAIL && yb != Ea.TRANSIENT_FAILURE && yb != Ea.ENTITY_REAUTH && yb != Ea.ENTITYDATA_REAUTH)) {
yb = pb ? pb.messageId : qb.messageId;
xb = Fc(za.messageId);
if (yb != xb)
throw new Hb(X.UNEXPECTED_RESPONSE_MESSAGE_ID, "expected " + xb + "; received " + yb);
}
xa.getEntityAuthenticationData(null, {
result: function(t) {
ab(Fa, function() {
var b,
a,
c,
k;
b = t.getIdentity();
if (pb) {
a = pb.entityAuthenticationData;
c = pb.masterToken;
a = c ? pb.sender : a.getIdentity();
if (c && c.isDecrypted() && c.identity != a || b == a)
throw new Hb(X.UNEXPECTED_MESSAGE_SENDER, a);
za && this.updateIncomingCryptoContexts(xa, za, jb);
b = pb.keyResponseData;
xa.isPeerToPeer() ? (b = b ? b.masterToken : pb.peerMasterToken, c = pb.peerUserIdToken, a = pb.peerServiceTokens) : (b = b ? b.masterToken : pb.masterToken, c = pb.userIdToken, a = pb.serviceTokens);
k = Da.getUserId();
k && c && !c.isVerified() && xa.getMslStore().addUserIdToken(k, c);
this.storeServiceTokens(xa, b, c, a);
} else if ((a = qb.entityAuthenticationData.getIdentity(), b == a))
throw new Hb(X.UNEXPECTED_MESSAGE_SENDER, a);
return jb;
}, Wa);
},
error: Fa.error
});
}, Wa);
},
timeout: function() {
Fa.timeout();
},
error: function(nb) {
Fa.error(nb);
}
});
},
timeout: function() {
Fa.timeout();
},
error: function(jb) {
Fa.error(jb);
}
});
}, Wa);
},
sendReceive: function(oa, xa, Da, Ga, za, Ta, Fa, Wa, Za) {
var hb;
function Va(jb, nb) {
ab(Za, function() {
Ta.setRenewable(nb);
this.send(oa, xa, Da, za, Ta, Fa, {
result: function(pb) {
ab(Za, function() {
var qb;
qb = pb.requestHeader.keyRequestData;
Wa || pb.handshake || !qb.isEmpty() ? this.receive(oa, xa, Da, Ga, pb.requestHeader, Fa, {
result: function(yb) {
ab(Za, function() {
nb && this.releaseRenewalLock(xa, jb, yb);
return new ea(yb, pb);
}, hb);
},
timeout: function() {
ab(Za, function() {
nb && this.releaseRenewalLock(xa, jb, null);
Za.timeout();
}, hb);
},
error: function(yb) {
ab(Za, function() {
nb && this.releaseRenewalLock(xa, jb, null);
throw yb;
}, hb);
}
}) : ab(Za, function() {
nb && this.releaseRenewalLock(xa, jb, null);
return new ea(null, pb);
}, hb);
}, hb);
},
timeout: function() {
ab(Za, function() {
nb && this.releaseRenewalLock(xa, jb, null);
Za.timeout();
}, hb);
},
error: function(pb) {
ab(Za, function() {
nb && this.releaseRenewalLock(xa, jb, null);
throw pb;
}, hb);
}
});
}, hb);
}
hb = this;
ab(Za, function() {
var jb;
jb = new Qc();
this.acquireRenewalLock(oa, xa, Da, jb, Ta, Fa, {
result: function(nb) {
Va(jb, nb);
},
timeout: function() {
Za.timeout();
},
error: function(nb) {
nb instanceof Vb ? Za.result(null) : Za.error(nb);
}
});
}, hb);
},
acquireRenewalLock: function(oa, xa, Da, Ga, za, Ta, Fa) {
var Va;
function Wa(hb, jb, nb) {
ab(Fa, function() {
var yb,
xb;
if (oa.isAborted())
throw new Vb("acquireRenewalLock aborted.");
for (var pb = null, qb = 0; qb < this._renewingContexts.length; ++qb) {
yb = this._renewingContexts[qb];
if (yb.ctx === xa) {
pb = yb.queue;
break;
}
}
if (!pb)
return ( this._renewingContexts.push({
ctx: xa,
queue: Ga
}), !0) ;
xb = pb.poll(Ta, {
result: function(t) {
ab(Fa, function() {
var b;
if (t === zb)
throw new Vb("acquireRenewalLock aborted.");
pb.add(t);
if (t === na || t.isExpired())
Wa(t, jb, nb);
else {
if (nb && !jb || jb && !jb.isBoundTo(t)) {
b = xa.getMslStore().getUserIdToken(nb);
jb = b && b.isBoundTo(t) ? b : null;
}
za.setAuthTokens(t, jb);
za.isRenewable() && t.equals(hb) ? Wa(t, jb, nb) : Da.isRequestingTokens() && !jb ? Wa(t, jb, nb) : Za(t, jb);
}
}, Va);
},
timeout: function() {},
error: function(t) {}
});
oa.setAbort(function() {
xb && (pb.cancel(xb), xb = zb);
});
}, Va);
}
function Za(hb, jb) {
ab(Fa, function() {
var qb;
if (oa.isAborted())
throw new Vb("acquireRenewalLock aborted.");
if (!hb || hb.isRenewable() || !jb && Da.getUserId() || jb && jb.isRenewable()) {
for (var nb = null, pb = 0; pb < this._renewingContexts.length; ++pb) {
qb = this._renewingContexts[pb];
if (qb.ctx === xa) {
nb = qb.queue;
break;
}
}
if (!nb)
return ( this._renewingContexts.push({
ctx: xa,
queue: Ga
}), !0) ;
}
return !1;
}, Va);
}
Va = this;
ab(Fa, function() {
var hb,
jb,
nb;
hb = za.getMasterToken();
jb = za.getUserIdToken();
nb = Da.getUserId();
Da.isEncrypted() && !za.willEncryptPayloads() || Da.isIntegrityProtected() && !za.willIntegrityProtectPayloads() || za.isRenewable() || !hb && Da.isNonReplayable() || hb && hb.isExpired() || !(jb || !nb || za.willEncryptHeader() && za.willIntegrityProtectHeader()) || Da.isRequestingTokens() && (!hb || nb && !jb) ? Wa(hb, jb, nb) : Za(hb, jb);
}, Va);
},
releaseRenewalLock: function(oa, xa, Da) {
var Fa;
for (var Ga, za, Ta = 0; Ta < this._renewingContexts.length; ++Ta) {
Fa = this._renewingContexts[Ta];
if (Fa.ctx === oa) {
Ga = Ta;
za = Fa.queue;
break;
}
}
if (za !== xa)
throw new vb("Attempt to release renewal lock that is not owned by this queue.");
Da ? (Da = Da.messageHeader) ? (za = Da.keyResponseData) ? xa.add(za.masterToken) : (oa = oa.isPeerToPeer() ? Da.peerMasterToken : Da.masterToken) ? xa.add(oa) : xa.add(na) : xa.add(na) : xa.add(na);
this._renewingContexts.splice(Ga, 1);
}
});
Se = Ab.Class.create({
init: function() {
var oa;
oa = {
_impl: {
value: new da(),
writable: !1,
enumerable: !1,
configurable: !1
},
_shutdown: {
value: !1,
writable: !1,
enumerable: !1,
configurable: !1
}
};
Object.defineProperties(this, oa);
},
setFilterFactory: function(oa) {
this._impl.setFilterFactory(oa);
},
shutdown: function() {
this._shutdown = !0;
},
receive: function(oa, xa, Da, Ga, za, Ta) {
var Fa;
if (this._shutdown)
throw new cb("MslControl is shutdown.");
Fa = new ha(this._impl, oa, xa, Da, Ga, za);
setTimeout(function() {
Fa.call(Ta);
}, 0);
return fa(Fa);
},
respond: function(oa, xa, Da, Ga, za, Ta, Fa) {
var Wa;
if (this._shutdown)
throw new cb("MslControl is shutdown.");
Wa = new ka(this._impl, oa, xa, Da, Ga, za, Ta);
setTimeout(function() {
Wa.call(Fa);
}, 0);
return fa(Wa);
},
error: function Da(oa, xa, Da, Ga, za, Ta, Fa) {
var Wa;
if (this._shutdown)
throw new cb("MslControl is shutdown.");
Wa = new va(this._impl, oa, xa, Da, Ga, za, Ta);
setTimeout(function() {
Wa.call(Fa);
}, 0);
return fa(Wa);
},
request: function(oa, xa) {
var Da,
Ga,
za,
Ta,
Fa,
Wa;
if (this._shutdown)
throw new cb("MslControl is shutdown.");
if (5 == arguments.length) {
Ga = arguments[2];
za = Da = null;
Ta = arguments[3];
Fa = arguments[4];
if (oa.isPeerToPeer()) {
Fa.error(new vb("This method cannot be used in peer-to-peer mode."));
return;
}
} else if (6 == arguments.length && (Ga = null, Da = arguments[2], za = arguments[3], Ta = arguments[4], Fa = arguments[5], !oa.isPeerToPeer())) {
Fa.error(new vb("This method cannot be used in trusted network mode."));
return;
}
Wa = new Ka(this._impl, oa, xa, Ga, Da, za, null, 0, Ta);
setTimeout(function() {
Wa.call(Fa);
}, 0);
return fa(Wa);
}
});
ha = Ab.Class.create({
init: function(oa, xa, Da, Ga, za, Ta) {
Object.defineProperties(this, {
_ctrl: {
value: oa,
writable: !1,
enumerable: !1,
configurable: !1
},
_ctx: {
value: xa,
writable: !1,
enumerable: !1,
configurable: !1
},
_msgCtx: {
value: Da,
writable: !1,
enumerable: !1,
configurable: !1
},
_input: {
value: Ga,
writable: !1,
enumerable: !1,
configurable: !1
},
_output: {
value: za,
writable: !1,
enumerable: !1,
configurable: !1
},
_timeout: {
value: Ta,
writable: !1,
enumerable: !1,
configurable: !1
},
_aborted: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_abortFunc: {
value: zb,
writable: !0,
enumerable: !1,
configurable: !1
}
});
},
isAborted: function() {
return this._aborted;
},
abort: function() {
this._aborted = !0;
this._abortFunc && this._abortFunc.call(this);
},
setAbort: function(oa) {
this._abortFunc = oa;
},
call: function(oa) {
var za;
function xa(Ta) {
ab(oa, function() {
var Fa;
Fa = Ta.messageHeader;
if (!Fa)
return Ta;
this.setAbort(function() {
Ta.abort();
});
Ta.mark(Number.MAX_VALUE);
Ta.read(1, za._timeout, {
result: function(Wa) {
ab(oa, function() {
if (Wa && 0 == Wa.length)
return null;
if (Wa)
return ( Ta.reset(), Ta) ;
Da(Ta);
}, za);
},
timeout: function() {
oa.timeout();
},
error: function(Wa) {
ab(oa, function() {
var Za,
Va,
hb;
if (aa(Wa))
return null;
Za = Fa ? Fa.messageId : null;
if (Wa instanceof Rb) {
Va = X.MSL_COMMS_FAILURE;
hb = Wa;
} else
(Va = X.INTERNAL_EXCEPTION,
hb = new vb("Error peeking into the message payloads."));
ja(this, this._ctx, this._msgCtx.getDebugContext(), Za, Va, null, this._output, this._timeout, {
result: function(jb) {
oa.error(hb);
},
timeout: function() {
oa.timeout();
},
error: function(jb) {
ab(oa, function() {
if (aa(jb))
return null;
throw new cc("Error peeking into the message payloads.", jb, Wa);
}, za);
}
});
}, za);
}
});
}, za);
}
function Da(Ta) {
ab(oa, function() {
Ta.close();
this._ctrl.buildResponse(this, this._ctx, this._msgCtx, Ta.messageHeader, this._timeout, {
result: function(Fa) {
ab(oa, function() {
var Wa,
Za,
Va,
hb,
jb;
Wa = Fa.builder;
Za = Fa.tokenTicket;
Va = Ta.messageHeader;
hb = new ya(this._msgCtx);
if (!this._ctx.isPeerToPeer() || Va.isEncrypting() || Va.keyResponseData)
Ga(Va, Wa, hb, Za);
else {
jb = new Ka(this._ctrl, this._ctx, hb, null, this._input, this._output, Fa, 1, this._timeout);
this.setAbort(function() {
jb.abort();
});
jb.call(oa);
}
}, za);
},
timeout: function() {
oa.timeout();
},
error: function(Fa) {
ab(oa, function() {
var Wa,
Za,
Va,
hb;
if (aa(Fa))
return null;
if (Fa instanceof cb) {
Wa = Fa.messageId;
Za = Fa.error;
Va = Ta.messageHeader.messageCapabilities;
Va = this._ctrl.messageRegistry.getUserMessage(Za, Va ? Va.languages : null);
hb = Fa;
} else
(Wa = requestHeader ? requestHeader.messageId : null,
Za = X.INTERNAL_EXCEPTION,
Va = null,
hb = new vb("Error creating an automatic handshake response.", Fa));
ja(this, this._ctx, this._msgCtx.getDebugContext(), Wa, Za, Va, this._output, this._timeout, {
result: function(jb) {
oa.error(hb);
},
timeout: function() {
oa.timeout();
},
error: function(jb) {
ab(oa, function() {
if (aa(jb))
return null;
throw new cc("Error creating an automatic handshake response.", jb, Fa);
}, za);
}
});
}, za);
}
});
}, za);
}
function Ga(Ta, Fa, Wa, Za) {
ab(oa, function() {
Fa.setRenewable(!1);
this._ctrl.send(this._ctx, Wa, this._output, Fa, this._timeout, {
result: function(Va) {
ab(oa, function() {
this._ctx.isPeerToPeer() && this._ctrl.releaseMasterToken(Za);
return null;
}, za);
},
timeout: function() {
ab(oa, function() {
this._ctx.isPeerToPeer() && this._ctrl.releaseMasterToken(Za);
oa.timeout();
}, za);
},
error: function(Va) {
ab(oa, function() {
var hb,
jb,
nb,
pb;
this._ctx.isPeerToPeer() && this._ctrl.releaseMasterToken(Za);
if (aa(Va))
return null;
if (Va instanceof cb) {
hb = Va.messageId;
jb = Va.error;
nb = Ta ? Ta.messageCapabilities : null;
nb = this._ctrl.messageRegistry.getUserMessage(jb, nb ? nb.languages : null);
pb = Va;
} else
Va instanceof Rb ? (hb = Ta ? Ta.messageId : null, jb = X.MSL_COMMS_FAILURE, nb = null, pb = Va) : (hb = Ta ? Ta.messageId : null, jb = X.INTERNAL_EXCEPTION, nb = null, pb = new vb("Error sending an automatic handshake response.", Va));
ja(this, this._ctx, this._msgCtx.getDebugContext(), hb, jb, nb, this._output, this._timeout, {
result: function(qb) {
oa.error(pb);
},
timeout: function() {
oa.timeout();
},
error: function(qb) {
ab(oa, function() {
if (aa(qb))
return null;
throw new cc("Error sending an automatic handshake response.", qb, Va);
}, za);
}
});
}, za);
}
});
}, za);
}
za = this;
ab(oa, function() {
this._ctrl.receive(this, this._ctx, this._msgCtx, this._input, null, this._timeout, {
result: function(Ta) {
xa(Ta);
},
timeout: function() {
oa.timeout();
},
error: function(Ta) {
ab(oa, function() {
var Fa,
Wa,
Za,
Va;
if (aa(Ta))
return null;
if (Ta instanceof cb) {
Fa = Ta.messageId;
Wa = Ta.error;
Za = this._ctrl.messageRegistry.getUserMessage(Wa, null);
Va = Ta;
} else
(Fa = null,
Wa = X.INTERNAL_EXCEPTION,
Za = null,
Va = new vb("Error receiving the message header.", Ta));
ja(this, this._ctx, this._msgCtx.getDebugContext(), Fa, Wa, Za, this._output, this._timeout, {
result: function(hb) {
oa.error(Va);
},
timeout: function() {
oa.timeout();
},
error: function(hb) {
ab(oa, function() {
if (aa(hb))
return null;
throw new cc("Error receiving the message header.", hb, Ta);
}, za);
}
});
}, za);
}
});
}, za);
}
});
ka = Ab.Class.create({
init: function(oa, xa, Da, Ga, za, Ta, Fa) {
Object.defineProperties(this, {
_ctrl: {
value: oa,
writable: !1,
enumerable: !1,
configurable: !1
},
_ctx: {
value: xa,
writable: !1,
enumerable: !1,
configurable: !1
},
_msgCtx: {
value: Da,
writable: !1,
enumerable: !1,
configurable: !1
},
_input: {
value: Ga,
writable: !1,
enumerable: !1,
configurable: !1
},
_output: {
value: za,
writable: !1,
enumerable: !1,
configurable: !1
},
_request: {
value: Ta,
writable: !1,
enumerable: !1,
configurable: !1
},
_timeout: {
value: Fa,
writable: !1,
enumerable: !1,
configurable: !1
},
_aborted: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_abortFunc: {
value: zb,
writable: !0,
enumerable: !1,
configurable: !1
}
});
},
isAborted: function() {
return this._aborted;
},
abort: function() {
this._aborted = !0;
this._abortFunc && this._abortFunc.call(this);
},
setAbort: function(oa) {
this._abortFunc = oa;
},
trustedNetworkExecute: function(oa, xa, Da) {
var Ga;
Ga = this;
ab(Da, function() {
var za,
Ta;
if (12 < xa + 1)
return !1;
if (za = this._msgCtx.isIntegrityProtected() && !oa.willIntegrityProtectHeader() ? X.RESPONSE_REQUIRES_INTEGRITY_PROTECTION : this._msgCtx.isEncrypted() && !oa.willEncryptPayloads() ? X.RESPONSE_REQUIRES_ENCRYPTION : null) {
Ta = Nc(oa.getMessageId());
ja(this, this._ctx, this._msgCtx.getDebugContext(), Ta, za, null, this._output, this._timeout, {
result: function(Fa) {
Da.result(!1);
},
timeout: function() {
Da.timeout();
},
error: function(Fa) {
ab(Da, function() {
if (aa(Fa))
return !1;
throw new cc("Response requires encryption or integrity protection but cannot be protected: " + za, Fa, null);
}, Ga);
}
});
} else
!this._msgCtx.getCustomer() || oa.getMasterToken() || oa.getKeyExchangeData() ? (oa.setRenewable(!1), this._ctrl.send(this._ctx, this._msgCtx, this._output, oa, this._timeout, {
result: function(Fa) {
Da.result(!0);
},
timeout: function() {
Da.timeout();
},
error: function(Fa) {
Da.error(Fa);
}
})) : (Ta = Nc(oa.getMessageId()), ja(this, this._ctx, this._msgCtx.getDebugContext(), Ta, X.RESPONSE_REQUIRES_MASTERTOKEN, null, this._output, this._timeout, {
result: function(Fa) {
Da.result(!1);
},
timeout: function() {
Da.timeout();
},
error: function(Fa) {
ab(Da, function() {
if (aa(Fa))
return !1;
throw new cc("Response wishes to attach a user ID token but there is no master token.", Fa, null);
}, Ga);
}
}));
}, Ga);
},
peerToPeerExecute: function(oa, xa, Da, Ga) {
var Ta;
function za(Fa) {
ab(Ga, function() {
var Wa;
Wa = Fa.response;
Wa.close();
Wa = Wa.getErrorHeader();
this._ctrl.cleanupContext(this._ctx, Fa.requestHeader, Wa);
this._ctrl.buildErrorResponse(this, this._ctx, oa, Fa, Wa, {
result: function(Za) {
ab(Ga, function() {
var Va,
hb;
if (!Za)
return !1;
Va = Za.errorResult;
hb = Za.tokenTicket;
this.peerToPeerExecute(Va.msgCtx, Va.builder, Da, {
result: function(jb) {
ab(Ga, function() {
this._ctrl.releaseMasterToken(hb);
return jb;
}, Ta);
},
timeout: function() {
ab(Ga, function() {
this._ctrl.releaseMasterToken(hb);
Ga.timeout();
}, Ta);
},
error: function(jb) {
ab(Ga, function() {
this._ctrl.releaseMasterToken(hb);
throw jb;
}, Ta);
}
});
}, Ta);
}
});
}, Ta);
}
Ta = this;
ab(Ga, function() {
var Fa;
if (12 < Da + 2)
return !1;
if (null != oa.getCustomer() && null == xa.getPeerMasterToken() && null == xa.getKeyExchangeData()) {
Fa = Nc(xa.getMessageId());
ja(this, this._ctx, oa.getDebugContext(), Fa, X.RESPONSE_REQUIRES_MASTERTOKEN, null, this._output, this._timeout, {
result: function(Wa) {
Ga.result(!1);
},
timeout: function() {
Ga.timeout();
},
error: function(Wa) {
ab(Ga, function() {
if (aa(Wa))
return !1;
throw new cc("Response wishes to attach a user ID token but there is no master token.", Wa, null);
}, Ta);
}
});
} else
this._ctrl.sendReceive(this._ctx, oa, this._input, this._output, xa, this._timeout, !1, {
result: function(Wa) {
ab(Ga, function() {
var hb,
jb,
nb;
function Za() {
hb.read(32768, Ta._timeout, {
result: function(pb) {
ab(Ga, function() {
pb ? Za() : Va();
}, Ta);
},
timeout: function() {
Ga.timeout();
},
error: function(pb) {
Ga.error(pb);
}
});
}
function Va() {
ab(Ga, function() {
var pb;
pb = new qa(Wa.payloads, oa);
this._ctrl.buildResponse(this, this._ctx, pb, jb, this._timeout, {
result: function(qb) {
ab(Ga, function() {
var yb;
yb = qb.tokenTicket;
this.peerToPeerExecute(pb, qb.builder, Da, {
result: function(xb) {
ab(Ga, function() {
this._ctrl.releaseMasterToken(yb);
return xb;
}, Ta);
},
timeout: function() {
ab(Ga, function() {
this._ctrl.releaseMasterToken(yb);
Ga.timeout();
}, Ta);
},
error: function(xb) {
ab(Ga, function() {
this._ctrl.releaseMasterToken(yb);
throw xb;
}, Ta);
}
});
}, Ta);
},
timeout: function() {
Ga.timeout();
},
error: function(qb) {
Ga.error(qb);
}
});
}, Ta);
}
hb = Wa.response;
Da += 2;
if (!hb)
return !0;
jb = hb.getMessageHeader();
if (jb) {
nb = Wa.payloads;
nb = 0 < nb.length && 0 < nb[0].data.length;
if (Wa.handshake && nb)
Za();
else
return !0;
} else
za(Wa);
}, Ta);
},
timeout: function() {
Ga.timeout();
},
error: function(Wa) {
Ga.error(Wa);
}
});
}, Ta);
},
call: function(oa) {
var xa;
xa = this;
this._ctrl.buildResponse(this, this._ctx, this._msgCtx, this._request, this._timeout, {
result: function(Da) {
ab(oa, function() {
var Ga,
za;
Ga = Da.builder;
za = Da.tokenTicket;
this._ctx.isPeerToPeer() ? this.peerToPeerExecute(this._msgCtx, Ga, 3, {
result: function(Ta) {
ab(oa, function() {
this._ctx.isPeerToPeer() && this.releaseMasterToken(za);
return Ta;
}, xa);
},
timeout: function() {
ab(oa, function() {
this._ctx.isPeerToPeer() && this.releaseMasterToken(za);
oa.timeout();
}, xa);
},
error: function(Ta) {
ab(oa, function() {
var Fa,
Wa,
Za,
Va;
this._ctx.isPeerToPeer() && this.releaseMasterToken(za);
if (aa(Ta))
return !1;
Fa = Nc(Ga.getMessageId());
if (Ta instanceof cb) {
Wa = Ta.error;
Za = this._request.messageCapabilities;
Za = this._ctrl.messageRegistry.getUserMessage(Wa, Za ? Za.languages : null);
Va = Ta;
} else
Ta instanceof Rb ? (Wa = X.MSL_COMMS_FAILURE, Za = null, Va = Ta) : (Wa = X.INTERNAL_EXCEPTION, Za = null, Va = new vb("Error sending the response.", Ta));
ja(this, this._ctx, this._msgCtx.getDebugContext(), Fa, Wa, Za, this._output, this._timeout, {
result: function(hb) {
oa.error(Va);
},
timeout: function() {
oa.timeout();
},
error: function(hb) {
ab(oa, function() {
if (aa(hb))
return !1;
throw new cc("Error sending the response.", hb, null);
}, xa);
}
});
}, xa);
}
}) : this.trustedNetworkExecute(Ga, 3, {
result: function(Ta) {
ab(oa, function() {
this._ctx.isPeerToPeer() && this.releaseMasterToken(za);
return Ta;
}, xa);
},
timeout: function() {
ab(oa, function() {
this._ctx.isPeerToPeer() && this.releaseMasterToken(za);
oa.timeout();
}, xa);
},
error: function(Ta) {
ab(oa, function() {
var Fa,
Wa,
Za,
Va;
this._ctx.isPeerToPeer() && this.releaseMasterToken(za);
if (aa(Ta))
return !1;
Fa = Nc(Ga.getMessageId());
if (Ta instanceof cb) {
Wa = Ta.error;
Za = this._request.messageCapabilities;
Za = this._ctrl.messageRegistry.getUserMessage(Wa, Za ? Za.languages : null);
Va = Ta;
} else
Ta instanceof Rb ? (Wa = X.MSL_COMMS_FAILURE, Za = null, Va = Ta) : (Wa = X.INTERNAL_EXCEPTION, Za = null, Va = new vb("Error sending the response.", Ta));
ja(this, this._ctx, this._msgCtx.getDebugContext(), Fa, Wa, Za, this._output, this._timeout, {
result: function(hb) {
oa.error(Va);
},
timeout: function() {
oa.timeout();
},
error: function(hb) {
ab(oa, function() {
if (aa(hb))
return !1;
throw new cc("Error sending the response.", hb, null);
}, xa);
}
});
}, xa);
}
});
}, xa);
},
timeout: function() {
oa.timeout();
},
error: function(Da) {
ab(oa, function() {
var Ga,
za,
Ta,
Fa;
if (aa(Da))
return !1;
if (Da instanceof cb) {
Ga = Da.messageId;
za = Da.error;
Ta = this._request.messageCapabilities;
Ta = this._ctrl.messageRegistry.getUserMessage(za, Ta ? Ta.languages : null);
Fa = Da;
} else
(Ga = null,
za = X.INTERNAL_EXCEPTION,
Ta = null,
Fa = new vb("Error building the response.", Da));
ja(this, this._ctx, this._msgCtx.getDebugContext(), Ga, za, Ta, this._output, this._timeout, {
result: function(Wa) {
oa.error(Fa);
},
timeout: function() {
oa.timeout();
},
error: function(Wa) {
ab(oa, function() {
if (aa(Wa))
return null;
throw new cc("Error building the response.", Wa, Da);
}, xa);
}
});
}, xa);
}
});
}
});
va = Ab.Class.create({
init: function(oa, xa, Da, Ga, za, Ta, Fa) {
Object.defineProperties(this, {
_ctrl: {
value: oa,
writable: !1,
enumerable: !1,
configurable: !1
},
_ctx: {
value: xa,
writable: !1,
enumerable: !1,
configurable: !1
},
_msgCtx: {
value: Da,
writable: !1,
enumerable: !1,
configurable: !1
},
_appError: {
value: Ga,
writable: !1,
enumerable: !1,
configurable: !1
},
_output: {
value: output,
writable: !1,
enumerable: !1,
configurable: !1
},
_request: {
value: Ta,
writable: !1,
enumerable: !1,
configurable: !1
},
_timeout: {
value: Fa,
writable: !1,
enumerable: !1,
configurable: !1
},
_aborted: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_abortFunc: {
value: zb,
writable: !0,
enumerable: !1,
configurable: !1
}
});
},
isAborted: function() {
return this._aborted;
},
abort: function() {
this._aborted = !0;
this._abortFunc && this._abortFunc.call(this);
},
setAbort: function(oa) {
this._abortFunc = oa;
},
call: function(oa) {
var xa;
xa = this;
ab(oa, function() {
var Da,
Ga;
if (this._appError == ENTITY_REJECTED)
Da = this._request.masterToken ? X.MASTERTOKEN_REJECTED_BY_APP : X.ENTITY_REJECTED_BY_APP;
else if (this._appError == USER_REJECTED)
Da = this._request.userIdToken ? X.USERIDTOKEN_REJECTED_BY_APP : X.USER_REJECTED_BY_APP;
else
throw new vb("Unhandled application error " + this._appError + ".");
Ga = this._request.messageCapabilities;
Ga = this._ctrl.messageRegistry.getUserMessage(Da, Ga ? Ga.languages : null);
ja(this, this._ctx, this._msgCtx.getDebugContext(), this._request.messageId, Da, Ga, this._output, this._timeout, {
result: function(za) {
oa.result(za);
},
timeout: oa.timeout,
error: function(za) {
ab(oa, function() {
if (aa(za))
return !1;
if (za instanceof cb)
throw za;
throw new vb("Error building the error response.", za);
}, xa);
}
});
}, xa);
}
});
Ra = {
result: function() {},
timeout: function() {},
error: function() {}
};
Ka = Ab.Class.create({
init: function(oa, xa, Da, Ga, za, Ta, Fa, Wa, Za) {
var Va;
if (Fa) {
Va = Fa.builder;
Fa = Fa.tokenTicket;
} else
Fa = Va = null;
Object.defineProperties(this, {
_ctrl: {
value: oa,
writable: !1,
enumerable: !1,
configurable: !1
},
_ctx: {
value: xa,
writable: !1,
enumerable: !1,
configurable: !1
},
_msgCtx: {
value: Da,
writable: !1,
enumerable: !1,
configurable: !1
},
_remoteEntity: {
value: Ga,
writable: !1,
enumerable: !1,
configurable: !1
},
_input: {
value: za,
writable: !0,
enumerable: !1,
configurable: !1
},
_output: {
value: Ta,
writable: !0,
enumerable: !1,
configurable: !1
},
_openedStreams: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_builder: {
value: Va,
writable: !0,
enumerable: !1,
configurable: !1
},
_tokenTicket: {
value: Fa,
writable: !0,
enumerable: !1,
configurable: !1
},
_timeout: {
value: Za,
writable: !1,
enumerable: !1,
configurable: !1
},
_msgCount: {
value: Wa,
writable: !1,
enumerable: !1,
configurable: !1
},
_aborted: {
value: !1,
writable: !0,
enumerable: !1,
configurable: !1
},
_abortFunc: {
value: zb,
writable: !0,
enumerable: !1,
configurable: !1
}
});
},
isAborted: function() {
return this._aborted;
},
abort: function() {
this._aborted = !0;
this._abortFunc && this._abortFunc.call(this);
},
setAbort: function(oa) {
this._abortFunc = oa;
},
execute: function(oa, xa, Da, Ga, za) {
var Wa;
function Ta(Za) {
function Va(hb) {
ab(za, function() {
var jb;
jb = Za.response;
return hb ? hb : jb;
}, Wa);
}
ab(za, function() {
var hb,
jb;
hb = Za.response;
hb.close();
jb = hb.getErrorHeader();
this._ctrl.cleanupContext(this._ctx, Za.requestHeader, jb);
this._ctrl.buildErrorResponse(this, this._ctx, oa, Za, jb, Da, {
result: function(nb) {
ab(za, function() {
var pb,
qb,
yb,
xb;
if (!nb)
return hb;
pb = nb.errorResult;
qb = nb.tokenTicket;
yb = pb.builder;
pb = pb.msgCtx;
if (this._ctx.isPeerToPeer())
this.execute(pb, yb, this._timeout, Ga, {
result: function(t) {
ab(za, function() {
this._ctrl.releaseMasterToken(qb);
Va(t);
}, Wa);
},
timeout: function() {
ab(za, function() {
this._ctrl.releaseMasterToken(qb);
za.timeout();
}, Wa);
},
error: function(t) {
ab(za, function() {
this._ctrl.releaseMasterToken(qb);
za.error(t);
}, Wa);
}
});
else {
this._openedStreams && (this._input.close(), this._output.close(Da, Ra));
xb = new Ka(this._ctrl, this._ctx, pb, this._remoteEntity, null, null, {
builder: yb,
tokenTicket: qb
}, Ga, this._timeout);
this.setAbort(function() {
xb.abort();
});
xb.call({
result: function(t) {
Va(t);
},
timeout: function() {
za.timeout();
},
error: function(t) {
za.error(t);
}
});
}
}, Wa);
},
timeout: function() {
za.timeout();
},
error: function(nb) {
za.error(nb);
}
});
}, Wa);
}
function Fa(Za) {
ab(za, function() {
var jb,
nb,
pb,
qb,
yb;
function Va() {
jb.read(32768, Wa._timeout, {
result: function(xb) {
xb ? Va() : hb();
},
timeout: function() {
za.timeout();
},
error: function(xb) {
za.error(xb);
}
});
}
function hb() {
ab(za, function() {
var xb;
xb = new qa(Za.payloads, oa);
this._ctrl.buildResponse(this, this._ctx, oa, nb, Da, {
result: function(t) {
ab(za, function() {
var b;
b = t.tokenTicket;
this.execute(xb, t.builder, this._timeout, Ga, {
result: function(a) {
ab(za, function() {
this._ctrl.releaseMasterToken(b);
return a;
}, Wa);
},
timeout: function() {
ab(za, function() {
this._ctrl.releaseMasterToken(b);
za.timeout();
}, Wa);
},
error: function(a) {
ab(za, function() {
this._ctrl.releaseMasterToken(b);
throw a;
}, Wa);
}
});
}, Wa);
},
timeout: function() {
za.timeout();
},
error: function(t) {
za.error(t);
}
});
}, Wa);
}
jb = Za.response;
nb = jb.getMessageHeader();
pb = Za.payloads;
pb = 0 < pb.length && 0 < pb[0].data.length;
if (!this._ctx.isPeerToPeer()) {
if (!Za.handshake || !pb)
return jb;
this._openedStreams && (this._input.close(), this._output.close(Da, Ra));
qb = new qa(Za.payloads, oa);
this._ctrl.buildResponse(this, this._ctx, oa, nb, Da, {
result: function(xb) {
ab(za, function() {
var t;
t = new Ka(this._ctrl, this._ctx, qb, this._remoteEntity, null, null, xb, Ga, this._timeout);
this.setAbort(function() {
t.abort();
});
t.call(za);
}, Wa);
},
timeout: function() {
za.timeout();
},
error: function(xb) {
za.error(xb);
}
});
} else if (Za.handshake && pb)
Va();
else if (0 < nb.keyRequestData.length) {
yb = new ya(oa);
this._ctrl.buildResponse(this, this._ctx, yb, nb, Da, {
result: function(xb) {
ab(za, function() {
var t,
b;
t = xb.builder;
b = xb.tokenTicket;
jb.mark();
jb.read(1, this._timeout, {
result: function(a) {
ab(za, function() {
function c() {
jb.read(32768, Wa._timeout, {
result: function(g) {
g ? c() : k();
},
timeout: function() {
za.timeout();
},
error: function(g) {
za.error(g);
}
});
}
function k() {
Wa.execute(yb, t, Wa._timeout, Ga, {
result: function(g) {
ab(za, function() {
this._ctrl.releaseMasterToken(b);
return g;
}, Wa);
},
timeout: function() {
ab(za, function() {
this._ctrl.releaseMasterToken(b);
za.timeout();
}, Wa);
},
error: function(g) {
ab(za, function() {
this._ctrl.releaseMasterToken(b);
throw g;
}, Wa);
}
});
}
if (a) {
if ((jb.reset(), 12 >= Ga + 1))
(t.setRenewable(!1),
this._ctrl.send(this, this._ctx, yb, this._output, t, this._timeout, {
result: function(g) {
ab(za, function() {
this.releaseMasterToken(b);
return jb;
}, Wa);
},
timeout: function() {
za.timeout();
},
error: function(g) {
za.error(g);
}
}));
else
return ( this.releaseMasterToken(b), jb) ;
} else
c();
}, Wa);
},
timeout: function() {
ab(za, function() {
this.releaseMasterToken(b);
za.timeout();
}, Wa);
},
error: function(a) {
ab(za, function() {
this.releaseMasterToken(b);
throw a;
}, Wa);
}
});
}, Wa);
},
timeout: function() {
za.timeout();
},
error: function(xb) {
za.error(xb);
}
});
}
}, Wa);
}
Wa = this;
ab(za, function() {
if (12 < Ga + 2)
return null;
this._ctrl.sendReceive(this, this._ctx, oa, this._input, this._output, xa, Da, !0, {
result: function(Za) {
ab(za, function() {
var Va;
if (!Za)
return null;
Va = Za.response;
Ga += 2;
Va.getMessageHeader() ? Fa(Za) : Ta(Za);
}, Wa);
},
timeout: function() {
za.timeout();
},
error: function(Za) {
za.error(Za);
}
});
}, Wa);
},
call: function(oa) {
var Da;
function xa(Ga, za, Ta) {
ab(oa, function() {
this.execute(this._msgCtx, Ga, Ta, this._msgCount, {
result: function(Fa) {
ab(oa, function() {
this._ctrl.releaseMasterToken(za);
this._openedStreams && this._output.close(Ta, Ra);
Fa && Fa.closeSource(this._openedStreams);
return Fa;
}, Da);
},
timeout: function() {
ab(oa, function() {
this._ctrl.releaseMasterToken(za);
this._openedStreams && (this._output.close(Ta, Ra), this._input.close());
oa.timeout();
}, Da);
},
error: function(Fa) {
ab(oa, function() {
this._ctrl.releaseMasterToken(za);
this._openedStreams && (this._output.close(Ta, Ra), this._input.close());
if (aa(Fa))
return null;
throw Fa;
}, Da);
}
});
}, Da);
}
Da = this;
ab(oa, function() {
var Ga,
za,
Ta;
Ga = this._timeout;
if (!this._input || !this._output)
try {
this._remoteEntity.setTimeout(this._timeout);
za = Date.now();
Ta = this._remoteEntity.openConnection();
this._output = Ta.output;
this._input = Ta.input;
-1 != Ga && (Ga = this._timeout - (Date.now() - za));
this._openedStreams = !0;
} catch (Fa) {
this._builder && this._ctrl.releaseMasterToken(this._tokenTicket);
this._output && this._output.close(this._timeout, Ra);
this._input && this._input.close();
if (aa(Fa))
return null;
throw Fa;
}
this._builder ? xa(this._builder, this._tokenTicket, Ga) : this._ctrl.buildRequest(this, this._ctx, this._msgCtx, this._timeout, {
result: function(Fa) {
ab(oa, function() {
xa(Fa.builder, Fa.tokenTicket, Ga);
}, Da);
},
timeout: function() {
ab(oa, function() {
this._openedStreams && (this._output.close(this._timeout, Ra), this._input.close());
oa.timeout();
}, Da);
},
error: function(Fa) {
ab(oa, function() {
this._openedStreams && (this._output.close(this._timeout, Ra), this._input.close());
if (aa(Fa))
return null;
throw Fa;
}, Da);
}
});
}, Da);
}
});
})();
(function() {
Pd = Ab.Class.create({
init: function(fa) {
Object.defineProperties(this, {
id: {
value: fa,
writable: !1,
configurable: !1
}
});
},
toJSON: function() {
var fa;
fa = {};
fa.id = this.id;
return fa;
},
equals: function(fa) {
return this === fa ? !0 : fa instanceof Pd ? this.id == fa.id : !1;
},
uniqueKey: function() {
return this.id;
}
});
Te = function(fa) {
var ba;
ba = fa.id;
if (!ba)
throw new Db(X.JSON_PARSE_ERROR, JSON.stringify(fa));
return new Pd(ba);
};
})();
Ab.Class.create({
isNewestMasterToken: function(fa, ba, Y) {},
isMasterTokenRevoked: function(fa, ba) {},
acceptNonReplayableId: function(fa, ba, Y, Z) {},
createMasterToken: function(fa, ba, Y, Z, ea) {},
isMasterTokenRenewable: function(fa, ba, Y) {},
renewMasterToken: function(fa, ba, Y, Z, ea) {},
isUserIdTokenRevoked: function(fa, ba, Y, Z) {},
createUserIdToken: function(fa, ba, Y, Z) {},
renewUserIdToken: function(fa, ba, Y, Z) {}
});
(function() {
function fa(ba, Y, Z, ea) {
this.sessiondata = ba;
this.tokendata = Y;
this.signature = Z;
this.verified = ea;
}
bc = Ab.Class.create({
init: function(ba, Y, Z, ea, aa, ja, ua, sa, la, qa, ya) {
var na;
na = this;
La(ya, function() {
var da,
ha,
ka,
va,
Ra;
if (Z.getTime() < Y.getTime())
throw new vb("Cannot construct a master token that expires before its renewal window opens.");
if (0 > ea || ea > Kb)
throw new vb("Sequence number " + ea + " is outside the valid range.");
if (0 > aa || aa > Kb)
throw new vb("Serial number " + aa + " is outside the valid range.");
da = Math.floor(Y.getTime() / 1E3);
ha = Math.floor(Z.getTime() / 1E3);
if (qa)
ka = qa.sessiondata;
else {
va = {};
ja && (va.issuerdata = ja);
va.identity = ua;
va.encryptionkey = Eb(sa.toByteArray());
va.hmackey = Eb(la.toByteArray());
ka = Yb(JSON.stringify(va), Lb);
}
if (qa)
return ( Object.defineProperties(this, {
ctx: {
value: ba,
writable: !1,
enumerable: !1,
configurable: !1
},
renewalWindowSeconds: {
value: da,
writable: !1,
enumerable: !1,
configurable: !1
},
expirationSeconds: {
value: ha,
writable: !1,
enumerable: !1,
configurable: !1
},
sequenceNumber: {
value: ea,
writable: !1,
configurable: !1
},
serialNumber: {
value: aa,
writable: !1,
configurable: !1
},
issuerData: {
value: ja,
writable: !1,
configurable: !1
},
identity: {
value: ua,
writable: !1,
configurable: !1
},
encryptionKey: {
value: sa,
writable: !1,
configurable: !1
},
hmacKey: {
value: la,
writable: !1,
configurable: !1
},
sessiondata: {
value: ka,
writable: !1,
enumerable: !1,
configurable: !1
},
verified: {
value: qa.verified,
writable: !1,
enumerable: !1,
configurable: !1
},
tokendata: {
value: qa.tokendata,
writable: !1,
enumerable: !1,
configurable: !1
},
signature: {
value: qa.signature,
writable: !1,
enumerable: !1,
configurable: !1
}
}), this) ;
Ra = ba.getMslCryptoContext();
Ra.encrypt(ka, {
result: function(Ka) {
La(ya, function() {
var Qa,
Sa;
Qa = {};
Qa.renewalwindow = da;
Qa.expiration = ha;
Qa.sequencenumber = ea;
Qa.serialnumber = aa;
Qa.sessiondata = Eb(Ka);
Sa = Yb(JSON.stringify(Qa), Lb);
Ra.sign(Sa, {
result: function(oa) {
La(ya, function() {
Object.defineProperties(this, {
ctx: {
value: ba,
writable: !1,
enumerable: !1,
configurable: !1
},
renewalWindowSeconds: {
value: da,
writable: !1,
enumerable: !1,
configurable: !1
},
expirationSeconds: {
value: ha,
writable: !1,
enumerable: !1,
configurable: !1
},
sequenceNumber: {
value: ea,
writable: !1,
enumerable: !1,
configurable: !1
},
serialNumber: {
value: aa,
writable: !1,
enumerable: !1,
configurable: !1
},
issuerData: {
value: ja,
writable: !1,
configurable: !1
},
identity: {
value: ua,
writable: !1,
configurable: !1
},
encryptionKey: {
value: sa,
writable: !1,
configurable: !1
},
hmacKey: {
value: la,
writable: !1,
configurable: !1
},
sessiondata: {
value: ka,
writable: !1,
enumerable: !1,
configurable: !1
},
verified: {
value: !0,
writable: !1,
enumerable: !1,
configurable: !1
},
tokendata: {
value: Sa,
writable: !1,
enumerable: !1,
configurable: !1
},
signature: {
value: oa,
writable: !1,
enumerable: !1,
configurable: !1
}
});
return this;
}, na);
},
error: function(oa) {
ya.error(oa);
}
});
}, na);
},
error: function(Ka) {
ya.error(Ka);
}
});
}, this);
},
get renewalWindow() {
return new Date(1E3 * this.renewalWindowSeconds);
},
get expiration() {
return new Date(1E3 * this.expirationSeconds);
},
isDecrypted: function() {
return this.sessiondata ? !0 : !1;
},
isVerified: function() {
return this.verified;
},
isRenewable: function(ba) {
return this.isVerified() ? this.renewalWindow.getTime() <= this.ctx.getTime() : !0;
},
isExpired: function(ba) {
return this.isVerified() ? this.expiration.getTime() <= this.ctx.getTime() : !1;
},
isNewerThan: function(ba) {
var Y;
if (this.sequenceNumber == ba.sequenceNumber)
return this.expiration > ba.expiration;
if (this.sequenceNumber > ba.sequenceNumber) {
Y = this.sequenceNumber - Kb + 127;
return ba.sequenceNumber >= Y;
}
Y = ba.sequenceNumber - Kb + 127;
return this.sequenceNumber < Y;
},
toJSON: function() {
var ba;
ba = {};
ba.tokendata = Eb(this.tokendata);
ba.signature = Eb(this.signature);
return ba;
},
equals: function(ba) {
return this === ba ? !0 : ba instanceof bc ? this.serialNumber == ba.serialNumber && this.sequenceNumber == ba.sequenceNumber && this.expiration.getTime() == ba.expiration.getTime() : !1;
},
uniqueKey: function() {
return this.serialNumber + ":" + this.sequenceNumber + this.expiration.getTime();
}
});
Wc = function(ba, Y, Z) {
La(Z, function() {
var ea,
aa,
ja,
ua,
sa;
ea = ba.getMslCryptoContext();
aa = Y.tokendata;
ja = Y.signature;
if ("string" !== typeof aa || "string" !== typeof ja)
throw new Db(X.JSON_PARSE_ERROR, "mastertoken " + JSON.stringify(Y));
try {
ua = Gb(aa);
} catch (la) {
throw new cb(X.MASTERTOKEN_TOKENDATA_INVALID, "mastertoken " + JSON.stringify(Y), la);
}
if (!ua || 0 == ua.length)
throw new Db(X.MASTERTOKEN_TOKENDATA_MISSING, "mastertoken " + JSON.stringify(Y));
try {
sa = Gb(ja);
} catch (la) {
throw new cb(X.MASTERTOKEN_SIGNATURE_INVALID, "mastertoken " + JSON.stringify(Y), la);
}
ea.verify(ua, sa, {
result: function(la) {
La(Z, function() {
var qa,
ya,
na,
da,
ha,
ka,
va,
Ra,
Ka,
Qa;
qa = Xb(ua, Lb);
try {
ya = JSON.parse(qa);
na = parseInt(ya.renewalwindow);
da = parseInt(ya.expiration);
ha = parseInt(ya.sequencenumber);
ka = parseInt(ya.serialnumber);
va = ya.sessiondata;
} catch (Sa) {
if (Sa instanceof SyntaxError)
throw new Db(X.MASTERTOKEN_TOKENDATA_PARSE_ERROR, "mastertokendata " + qa, Sa);
throw Sa;
}
if (!na || na != na || !da || da != da || "number" !== typeof ha || ha != ha || "number" !== typeof ka || ka != ka || "string" !== typeof va)
throw new Db(X.MASTERTOKEN_TOKENDATA_PARSE_ERROR, "mastertokendata " + qa);
if (da < na)
throw new cb(X.MASTERTOKEN_EXPIRES_BEFORE_RENEWAL, "mastertokendata " + qa);
if (0 > ha || ha > Kb)
throw new cb(X.MASTERTOKEN_SEQUENCE_NUMBER_OUT_OF_RANGE, "mastertokendata " + qa);
if (0 > ka || ka > Kb)
throw new cb(X.MASTERTOKEN_SERIAL_NUMBER_OUT_OF_RANGE, "mastertokendata " + qa);
Ra = new Date(1E3 * na);
Ka = new Date(1E3 * da);
try {
Qa = Gb(va);
} catch (Sa) {
throw new cb(X.MASTERTOKEN_SESSIONDATA_INVALID, va, Sa);
}
if (!Qa || 0 == Qa.length)
throw new cb(X.MASTERTOKEN_SESSIONDATA_MISSING, va);
la ? ea.decrypt(Qa, {
result: function(Sa) {
La(Z, function() {
var oa,
xa,
Da,
Ga,
za,
Ta;
oa = Xb(Sa, Lb);
try {
xa = JSON.parse(oa);
Da = xa.issuerdata;
Ga = xa.identity;
za = xa.encryptionkey;
Ta = xa.hmackey;
} catch (Fa) {
if (Fa instanceof SyntaxError)
throw new Db(X.MASTERTOKEN_SESSIONDATA_PARSE_ERROR, "sessiondata " + oa, Fa);
throw Fa;
}
if (Da && "object" !== typeof Da || !Ga || "string" !== typeof za || "string" !== typeof Ta)
throw new Db(X.MASTERTOKEN_SESSIONDATA_PARSE_ERROR, "sessiondata " + oa);
mc(za, hc, vc, {
result: function(Fa) {
mc(Ta, ic, Ec, {
result: function(Wa) {
La(Z, function() {
var Za;
Za = new fa(Sa, ua, sa, la);
new bc(ba, Ra, Ka, ha, ka, Da, Ga, Fa, Wa, Za, Z);
});
},
error: function(Wa) {
Z.error(new tb(X.MASTERTOKEN_KEY_CREATION_ERROR, Wa));
}
});
},
error: function(Fa) {
Z.error(new tb(X.MASTERTOKEN_KEY_CREATION_ERROR, Fa));
}
});
});
},
error: function(Sa) {
Z.error(Sa);
}
}) : (na = new fa(null, ua, sa, la), new bc(ba, Ra, Ka, ha, ka, null, null, null, null, na, Z));
});
},
error: function(la) {
Z.error(la);
}
});
});
};
})();
(function() {
function fa(ba, Y, Z) {
this.tokendata = ba;
this.signature = Y;
this.verified = Z;
}
Kc = Ab.Class.create({
init: function(ba, Y, Z, ea, aa, ja, ua, sa, la) {
var qa;
qa = this;
La(la, function() {
var ya,
na,
da,
ha,
ka,
va,
Ra;
if (Z.getTime() < Y.getTime())
throw new vb("Cannot construct a user ID token that expires before its renewal window opens.");
if (!ea)
throw new vb("Cannot construct a user ID token without a master token.");
if (0 > aa || aa > Kb)
throw new vb("Serial number " + aa + " is outside the valid range.");
ya = Math.floor(Y.getTime() / 1E3);
na = Math.floor(Z.getTime() / 1E3);
da = ea.serialNumber;
if (sa) {
ha = sa.tokendata;
ka = sa.signature;
va = sa.verified;
da = ea.serialNumber;
Object.defineProperties(this, {
ctx: {
value: ba,
writable: !1,
enumerable: !1,
configurable: !1
},
renewalWindowSeconds: {
value: ya,
writable: !1,
enumerable: !1,
configurable: !1
},
expirationSeconds: {
value: na,
writable: !1,
enumerable: !1,
configurable: !1
},
mtSerialNumber: {
value: da,
writable: !1,
configurable: !1
},
serialNumber: {
value: aa,
writable: !1,
configurable: !1
},
issuerData: {
value: ja,
writable: !1,
configurable: !1
},
customer: {
value: ua,
writable: !1,
configurable: !1
},
verified: {
value: va,
writable: !1,
enumerable: !1,
configurable: !1
},
tokendata: {
value: ha,
writable: !1,
enumerable: !1,
configurable: !1
},
signature: {
value: ka,
writable: !1,
enumerable: !1,
configurable: !1
}
});
return this;
}
ha = {};
ja && (ha.issuerdata = ja);
ha.identity = ua;
ha = Yb(JSON.stringify(ha), Lb);
Ra = ba.getMslCryptoContext();
Ra.encrypt(ha, {
result: function(Ka) {
La(la, function() {
var Qa,
Sa;
Qa = {};
Qa.renewalwindow = ya;
Qa.expiration = na;
Qa.mtserialnumber = da;
Qa.serialnumber = aa;
Qa.userdata = Eb(Ka);
Sa = Yb(JSON.stringify(Qa), Lb);
Ra.sign(Sa, {
result: function(oa) {
La(la, function() {
Object.defineProperties(this, {
ctx: {
value: ba,
writable: !1,
enumerable: !1,
configurable: !1
},
renewalWindowSeconds: {
value: ya,
writable: !1,
enumerable: !1,
configurable: !1
},
expirationSeconds: {
value: na,
writable: !1,
enumerable: !1,
configurable: !1
},
mtSerialNumber: {
value: ea.serialNumber,
writable: !1,
configurable: !1
},
serialNumber: {
value: aa,
writable: !1,
configurable: !1
},
issuerData: {
value: ja,
writable: !1,
configurable: !1
},
customer: {
value: ua,
writable: !1,
configurable: !1
},
verified: {
value: !0,
writable: !1,
enumerable: !1,
configurable: !1
},
tokendata: {
value: Sa,
writable: !1,
enumerable: !1,
configurable: !1
},
signature: {
value: oa,
writable: !1,
enumerable: !1,
configurable: !1
}
});
return this;
}, qa);
},
error: function(oa) {
La(la, function() {
oa instanceof cb && oa.setEntity(ea);
throw oa;
}, qa);
}
});
}, qa);
},
error: function(Ka) {
La(la, function() {
Ka instanceof cb && Ka.setEntity(ea);
throw Ka;
}, qa);
}
});
}, this);
},
get renewalWindow() {
return new Date(1E3 * this.renewalWindowSeconds);
},
get expiration() {
return new Date(1E3 * this.expirationSeconds);
},
isVerified: function() {
return this.verified;
},
isDecrypted: function() {
return this.customer ? !0 : !1;
},
isRenewable: function() {
return this.renewalWindow.getTime() <= this.ctx.getTime();
},
isExpired: function() {
return this.expiration.getTime() <= this.ctx.getTime();
},
isBoundTo: function(ba) {
return ba && ba.serialNumber == this.mtSerialNumber;
},
toJSON: function() {
var ba;
ba = {};
ba.tokendata = Eb(this.tokendata);
ba.signature = Eb(this.signature);
return ba;
},
equals: function(ba) {
return this === ba ? !0 : ba instanceof Kc ? this.serialNumber == ba.serialNumber && this.mtSerialNumber == ba.mtSerialNumber : !1;
},
uniqueKey: function() {
return this.serialNumber + ":" + this.mtSerialNumber;
}
});
nd = function(ba, Y, Z, ea) {
La(ea, function() {
var aa,
ja,
ua,
sa,
la;
aa = ba.getMslCryptoContext();
ja = Y.tokendata;
ua = Y.signature;
if ("string" !== typeof ja || "string" !== typeof ua)
throw new Db(X.JSON_PARSE_ERROR, "useridtoken " + JSON.stringify(Y)).setEntity(Z);
try {
sa = Gb(ja);
} catch (qa) {
throw new cb(X.USERIDTOKEN_TOKENDATA_INVALID, "useridtoken " + JSON.stringify(Y), qa).setEntity(Z);
}
if (!sa || 0 == sa.length)
throw new Db(X.USERIDTOKEN_TOKENDATA_MISSING, "useridtoken " + JSON.stringify(Y)).setEntity(Z);
try {
la = Gb(ua);
} catch (qa) {
throw new cb(X.USERIDTOKEN_TOKENDATA_INVALID, "useridtoken " + JSON.stringify(Y), qa).setEntity(Z);
}
aa.verify(sa, la, {
result: function(qa) {
La(ea, function() {
var ya,
na,
da,
ha,
ka,
va,
Ra,
Ka,
Qa,
Sa;
ya = Xb(sa, Lb);
try {
na = JSON.parse(ya);
da = parseInt(na.renewalwindow);
ha = parseInt(na.expiration);
ka = parseInt(na.mtserialnumber);
va = parseInt(na.serialnumber);
Ra = na.userdata;
} catch (oa) {
if (oa instanceof SyntaxError)
throw new Db(X.USERIDTOKEN_TOKENDATA_PARSE_ERROR, "usertokendata " + ya, oa).setEntity(Z);
throw oa;
}
if (!da || da != da || !ha || ha != ha || "number" !== typeof ka || ka != ka || "number" !== typeof va || va != va || "string" !== typeof Ra)
throw new Db(X.USERIDTOKEN_TOKENDATA_PARSE_ERROR, "usertokendata " + ya).setEntity(Z);
if (ha < da)
throw new cb(X.USERIDTOKEN_EXPIRES_BEFORE_RENEWAL, "mastertokendata " + ya).setEntity(Z);
if (0 > ka || ka > Kb)
throw new cb(X.USERIDTOKEN_MASTERTOKEN_SERIAL_NUMBER_OUT_OF_RANGE, "usertokendata " + ya).setEntity(Z);
if (0 > va || va > Kb)
throw new cb(X.USERIDTOKEN_SERIAL_NUMBER_OUT_OF_RANGE, "usertokendata " + ya).setEntity(Z);
Ka = new Date(1E3 * da);
Qa = new Date(1E3 * ha);
if (!Z || ka != Z.serialNumber)
throw new cb(X.USERIDTOKEN_MASTERTOKEN_MISMATCH, "uit mtserialnumber " + ka + "; mt " + JSON.stringify(Z)).setEntity(Z);
try {
Sa = Gb(Ra);
} catch (oa) {
throw new cb(X.USERIDTOKEN_USERDATA_INVALID, Ra, oa).setEntity(Z);
}
if (!Sa || 0 == Sa.length)
throw new cb(X.USERIDTOKEN_USERDATA_MISSING, Ra).setEntity(Z);
qa ? aa.decrypt(Sa, {
result: function(oa) {
La(ea, function() {
var xa,
Da,
Ga,
za,
Ta;
xa = Xb(oa, Lb);
try {
Da = JSON.parse(xa);
Ga = Da.issuerdata;
za = Da.identity;
} catch (Fa) {
if (Fa instanceof SyntaxError)
throw new Db(X.USERIDTOKEN_USERDATA_PARSE_ERROR, "userdata " + xa).setEntity(Z);
throw Fa;
}
if (Ga && "object" !== typeof Ga || "object" !== typeof za)
throw new Db(X.USERIDTOKEN_USERDATA_PARSE_ERROR, "userdata " + xa).setEntity(Z);
try {
Ta = Te(za);
} catch (Fa) {
throw new cb(X.USERIDTOKEN_IDENTITY_INVALID, "userdata " + xa, Fa).setEntity(Z);
}
za = new fa(sa, la, qa);
new Kc(ba, Ka, Qa, Z, va, Ga, Ta, za, ea);
});
},
error: function(oa) {
La(ea, function() {
oa instanceof cb && oa.setEntity(Z);
throw oa;
});
}
}) : (da = new fa(sa, la, qa), new Kc(ba, Ka, Qa, Z, va, null, null, da, ea));
});
},
error: function(qa) {
La(ea, function() {
qa instanceof cb && qa.setEntity(Z);
throw qa;
});
}
});
});
};
})();
(function() {
function fa(Y, Z) {
var ea,
aa,
ja;
ea = Y.tokendata;
if ("string" !== typeof ea)
throw new Db(X.JSON_PARSE_ERROR, "servicetoken " + JSON.stringify(Y));
try {
aa = Gb(ea);
} catch (ua) {
throw new cb(X.SERVICETOKEN_TOKENDATA_INVALID, "servicetoken " + JSON.stringify(Y), ua);
}
if (!aa || 0 == aa.length)
throw new Db(X.SERVICETOKEN_TOKENDATA_MISSING, "servicetoken " + JSON.stringify(Y));
try {
ja = JSON.parse(Xb(aa, Lb)).name;
} catch (ua) {
if (ua instanceof SyntaxError)
throw new Db(X.JSON_PARSE_ERROR, "servicetoken " + JSON.stringify(Y), ua);
throw ua;
}
if (!ja)
throw new Db(X.JSON_PARSE_ERROR, "servicetoken " + JSON.stringify(Y));
return Z[ja] ? Z[ja] : Z[""];
}
function ba(Y, Z, ea) {
this.tokendata = Y;
this.signature = Z;
this.verified = ea;
}
xc = Ab.Class.create({
init: function(Y, Z, ea, aa, ja, ua, sa, la, qa, ya) {
var na;
na = this;
La(ya, function() {
var da,
ha,
ka,
va,
Ra;
if (aa && ja && !ja.isBoundTo(aa))
throw new vb("Cannot construct a service token bound to a master token and user ID token where the user ID token is not bound to the same master token.");
da = aa ? aa.serialNumber : -1;
ha = ja ? ja.serialNumber : -1;
if (qa)
return ( Ra = qa.tokendata, Object.defineProperties(this, {
ctx: {
value: Y,
writable: !1,
enumerable: !1,
configurable: !1
},
name: {
value: Z,
writable: !1,
configurable: !1
},
mtSerialNumber: {
value: da,
writable: !1,
configurable: !1
},
uitSerialNumber: {
value: ha,
writable: !1,
configurable: !1
},
data: {
value: ea,
writable: !1,
configurable: !1
},
encrypted: {
value: ua,
writable: !1,
enumerable: !1,
configurable: !1
},
compressionAlgo: {
value: sa,
writable: !1,
configurable: !1
},
verified: {
value: qa.verified,
writable: !1,
enumerable: !1,
configurable: !1
},
tokendata: {
value: Ra,
writable: !1,
enumerable: !1,
configurable: !1
},
signature: {
value: qa.signature,
writable: !1,
enumerable: !1,
configurable: !1
}
}), this) ;
if (sa) {
ka = Od(sa, ea);
ka.length < ea.length || (sa = null, ka = ea);
} else
(sa = null,
ka = ea);
va = {};
va.name = Z;
-1 != da && (va.mtserialnumber = da);
-1 != ha && (va.uitserialnumber = ha);
va.encrypted = ua;
sa && (va.compressionalgo = sa);
if (ua && 0 < ka.length)
la.encrypt(ka, {
result: function(Ka) {
La(ya, function() {
var Qa;
va.servicedata = Eb(Ka);
Qa = Yb(JSON.stringify(va), Lb);
la.sign(Qa, {
result: function(Sa) {
La(ya, function() {
Object.defineProperties(this, {
ctx: {
value: Y,
writable: !1,
enumerable: !1,
configurable: !1
},
name: {
value: Z,
writable: !1,
configurable: !1
},
mtSerialNumber: {
value: da,
writable: !1,
configurable: !1
},
uitSerialNumber: {
value: ha,
writable: !1,
configurable: !1
},
data: {
value: ea,
writable: !1,
configurable: !1
},
encrypted: {
value: ua,
writable: !1,
enumerable: !1,
configurable: !1
},
compressionAlgo: {
value: sa,
writable: !1,
configurable: !1
},
verified: {
value: !0,
writable: !1,
enumerable: !1,
configurable: !1
},
tokendata: {
value: Qa,
writable: !1,
enumerable: !1,
configurable: !1
},
signature: {
value: Sa,
writable: !1,
enumerable: !1,
configurable: !1
}
});
return this;
}, na);
},
error: function(Sa) {
La(ya, function() {
Sa instanceof cb && (Sa.setEntity(aa), Sa.setUser(ja));
throw Sa;
});
}
});
}, na);
},
error: function(Ka) {
La(ya, function() {
Ka instanceof cb && (Ka.setEntity(aa), Ka.setUser(ja));
throw Ka;
});
}
});
else {
va.servicedata = Eb(ka);
Ra = Yb(JSON.stringify(va), Lb);
la.sign(Ra, {
result: function(Ka) {
La(ya, function() {
Object.defineProperties(this, {
ctx: {
value: Y,
writable: !1,
enumerable: !1,
configurable: !1
},
name: {
value: Z,
writable: !1,
configurable: !1
},
mtSerialNumber: {
value: da,
writable: !1,
configurable: !1
},
uitSerialNumber: {
value: ha,
writable: !1,
configurable: !1
},
data: {
value: ea,
writable: !1,
configurable: !1
},
encrypted: {
value: ua,
writable: !1,
enumerable: !1,
configurable: !1
},
compressionAlgo: {
value: sa,
writable: !1,
configurable: !1
},
verified: {
value: !0,
writable: !1,
enumerable: !1,
configurable: !1
},
tokendata: {
value: Ra,
writable: !1,
enumerable: !1,
configurable: !1
},
signature: {
value: Ka,
writable: !1,
enumerable: !1,
configurable: !1
}
});
return this;
}, na);
},
error: function(Ka) {
La(ya, function() {
Ka instanceof cb && (Ka.setEntity(aa), Ka.setUser(ja));
throw Ka;
});
}
});
}
}, this);
},
isEncrypted: function() {
return this.encrypted;
},
isVerified: function() {
return this.verified;
},
isDecrypted: function() {
return this.data ? !0 : !1;
},
isDeleted: function() {
return this.data && 0 == this.data.length;
},
isMasterTokenBound: function() {
return -1 != this.mtSerialNumber;
},
isBoundTo: function(Y) {
return Y ? Y instanceof bc ? Y.serialNumber == this.mtSerialNumber : Y instanceof Kc ? Y.serialNumber == this.uitSerialNumber : !1 : !1;
},
isUserIdTokenBound: function() {
return -1 != this.uitSerialNumber;
},
isUnbound: function() {
return -1 == this.mtSerialNumber && -1 == this.uitSerialNumber;
},
toJSON: function() {
var Y;
Y = {};
Y.tokendata = Eb(this.tokendata);
Y.signature = Eb(this.signature);
return Y;
},
equals: function(Y) {
return this === Y ? !0 : Y instanceof xc ? this.name == Y.name && this.mtSerialNumber == Y.mtSerialNumber && this.uitSerialNumber == Y.uitSerialNumber : !1;
},
uniqueKey: function() {
return this.name + ":" + this.mtSerialNumber + ":" + this.uitSerialNumber;
}
});
sc = function(Y, Z, ea, aa, ja, ua, sa, la, qa) {
new xc(Y, Z, ea, aa, ja, ua, sa, la, null, qa);
};
od = function(Y, Z, ea, aa, ja, ua) {
La(ua, function() {
var sa,
la,
qa,
ya,
na,
da,
ha,
ka,
va,
Ra,
Ka,
Qa,
Sa;
!ja || ja instanceof Lc || (ja = fa(Z, ja));
sa = Z.tokendata;
la = Z.signature;
if ("string" !== typeof sa || "string" !== typeof la)
throw new Db(X.JSON_PARSE_ERROR, "servicetoken " + JSON.stringify(Z)).setEntity(ea).setEntity(aa);
try {
qa = Gb(sa);
} catch (oa) {
throw new cb(X.SERVICETOKEN_TOKENDATA_INVALID, "servicetoken " + JSON.stringify(Z), oa).setEntity(ea).setEntity(aa);
}
if (!qa || 0 == qa.length)
throw new Db(X.SERVICETOKEN_TOKENDATA_MISSING, "servicetoken " + JSON.stringify(Z)).setEntity(ea).setEntity(aa);
try {
ya = Gb(la);
} catch (oa) {
throw new cb(X.SERVICETOKEN_SIGNATURE_INVALID, "servicetoken " + JSON.stringify(Z), oa).setEntity(ea).setEntity(aa);
}
na = Xb(qa, Lb);
try {
da = JSON.parse(na);
ha = da.name;
ka = da.mtserialnumber ? parseInt(da.mtserialnumber) : -1;
va = da.uitserialnumber ? parseInt(da.uitserialnumber) : -1;
Ra = da.encrypted;
Ka = da.compressionalgo;
Qa = da.servicedata;
} catch (oa) {
if (oa instanceof SyntaxError)
throw new Db(X.JSON_PARSE_ERROR, "servicetokendata " + na, oa).setEntity(ea).setEntity(aa);
throw oa;
}
if (!ha || "number" !== typeof ka || ka != ka || "number" !== typeof va || va != va || "boolean" !== typeof Ra || Ka && "string" !== typeof Ka || "string" !== typeof Qa)
throw new Db(X.JSON_PARSE_ERROR, "servicetokendata " + na).setEntity(ea).setEntity(aa);
if (da.mtserialnumber && 0 > ka || ka > Kb)
throw new cb(X.SERVICETOKEN_MASTERTOKEN_SERIAL_NUMBER_OUT_OF_RANGE, "servicetokendata " + na).setEntity(ea).setEntity(aa);
if (da.uitserialnumber && 0 > va || va > Kb)
throw new cb(X.SERVICETOKEN_USERIDTOKEN_SERIAL_NUMBER_OUT_OF_RANGE, "servicetokendata " + na).setEntity(ea).setEntity(aa);
if (-1 != ka && (!ea || ka != ea.serialNumber))
throw new cb(X.SERVICETOKEN_MASTERTOKEN_MISMATCH, "st mtserialnumber " + ka + "; mt " + ea).setEntity(ea).setEntity(aa);
if (-1 != va && (!aa || va != aa.serialNumber))
throw new cb(X.SERVICETOKEN_USERIDTOKEN_MISMATCH, "st uitserialnumber " + va + "; uit " + aa).setEntity(ea).setEntity(aa);
Ra = !0 === Ra;
if (Ka) {
if (!Cc[Ka])
throw new cb(X.UNIDENTIFIED_COMPRESSION, Ka);
Sa = Ka;
} else
Sa = null;
ja ? ja.verify(qa, ya, {
result: function(oa) {
La(ua, function() {
var xa,
Da;
if (oa) {
try {
xa = Gb(Qa);
} catch (Ga) {
throw new cb(X.SERVICETOKEN_SERVICEDATA_INVALID, "servicetokendata " + na, Ga).setEntity(ea).setEntity(aa);
}
if (!xa || 0 != Qa.length && 0 == xa.length)
throw new cb(X.SERVICETOKEN_SERVICEDATA_INVALID, "servicetokendata " + na).setEntity(ea).setEntity(aa);
if (Ra && 0 < xa.length)
ja.decrypt(xa, {
result: function(Ga) {
La(ua, function() {
var za,
Ta;
za = Sa ? pd(Sa, Ga) : Ga;
Ta = new ba(qa, ya, oa);
new xc(Y, ha, za, -1 != ka ? ea : null, -1 != va ? aa : null, Ra, Sa, ja, Ta, ua);
});
},
error: function(Ga) {
La(ua, function() {
Ga instanceof cb && (Ga.setEntity(ea), Ga.setUser(aa));
throw Ga;
});
}
});
else {
xa = Sa ? pd(Sa, xa) : xa;
Da = new ba(qa, ya, oa);
new xc(Y, ha, xa, -1 != ka ? ea : null, -1 != va ? aa : null, Ra, Sa, ja, Da, ua);
}
} else
(xa = "" == Qa ? new Uint8Array(0) : null,
Da = new ba(qa, ya, oa),
new xc(Y, ha, xa, -1 != ka ? ea : null, -1 != va ? aa : null, Ra, Sa, ja, Da, ua));
});
},
error: function(oa) {
La(ua, function() {
oa instanceof cb && (oa.setEntity(ea), oa.setUser(aa));
throw oa;
});
}
}) : (sa = "" == Qa ? new Uint8Array(0) : null, la = new ba(qa, ya, !1), new xc(Y, ha, sa, -1 != ka ? ea : null, -1 != va ? aa : null, Ra, Sa, ja, la, ua));
});
};
})();
yc = {
EMAIL_PASSWORD: "EMAIL_PASSWORD",
NETFLIXID: "NETFLIXID",
SSO: "SSO",
SWITCH_PROFILE: "SWITCH_PROFILE",
MDX: "MDX"
};
Object.freeze(yc);
(function() {
Rc = Ab.Class.create({
init: function(fa) {
Object.defineProperties(this, {
scheme: {
value: fa,
writable: !1,
configurable: !1
}
});
},
getAuthData: function() {},
equals: function(fa) {
return this === fa ? !0 : fa instanceof Rc ? this.scheme == fa.scheme : !1;
},
toJSON: function() {
var fa;
fa = {};
fa.scheme = this.scheme;
fa.authdata = this.getAuthData();
return fa;
}
});
Ie = function(fa, ba, Y, Z) {
La(Z, function() {
var ea,
aa,
ja;
ea = Y.scheme;
aa = Y.authdata;
if (!ea || !aa)
throw new Db(X.JSON_PARSE_ERROR, "userauthdata " + JSON.stringify(Y));
if (!yc[ea])
throw new uc(X.UNIDENTIFIED_USERAUTH_SCHEME, ea);
ja = fa.getUserAuthenticationFactory(ea);
if (!ja)
throw new uc(X.USERAUTH_FACTORY_NOT_FOUND, ea);
ja.createData(fa, ba, aa, Z);
});
};
})();
Ue = Ab.Class.create({
init: function(fa) {
Object.defineProperties(this, {
scheme: {
value: fa,
writable: !1,
configurable: !1
}
});
},
createData: function(fa, ba, Y, Z) {},
authenticate: function(fa, ba, Y, Z) {}
});
(function() {
Zc = Rc.extend({
init: function Z(ba, Y) {
Z.base.call(this, yc.NETFLIXID);
Object.defineProperties(this, {
netflixId: {
value: ba,
writable: !1,
configurable: !1
},
secureNetflixId: {
value: Y,
writable: !1,
configurable: !1
}
});
},
getAuthData: function() {
var ba;
ba = {};
ba.netflixid = this.netflixId;
this.secureNetflixId && (ba.securenetflixid = this.secureNetflixId);
return ba;
},
equals: function Z(Y) {
return this === Y ? !0 : Y instanceof Zc ? Z.base.call(this, Y) && this.netflixId == Y.netflixId && this.secureNetflixId == Y.secureNetflixId : !1;
}
});
Ve = function(Y) {
var Z,
ea;
Z = Y.netflixid;
ea = Y.securenetflixid;
if (!Z)
throw new Db(X.JSON_PARSE_ERROR, "NetflixId authdata " + JSON.stringify(Y));
return new Zc(Z, ea);
};
})();
vf = Ue.extend({
init: function ba() {
ba.base.call(this, yc.NETFLIXID);
},
createData: function(ba, Y, Z, ea) {
La(ea, function() {
return Ve(Z);
});
},
authenticate: function(ba, Y, Z, ea) {
if (!(Z instanceof Zc))
throw new vb("Incorrect authentication data type " + Z + ".");
ba = Z.secureNetflixId;
if (!Z.netflixId || !ba)
throw new uc(X.NETFLIXID_COOKIES_BLANK).setUser(Z);
throw new uc(X.UNSUPPORTED_USERAUTH_DATA, this.scheme).setUser(Z);
}
});
(function() {
$c = Rc.extend({
init: function ea(Y, Z) {
ea.base.call(this, yc.EMAIL_PASSWORD);
Object.defineProperties(this, {
email: {
value: Y,
writable: !1,
configurable: !1
},
password: {
value: Z,
writable: !1,
configurable: !1
}
});
},
getAuthData: function() {
var Y;
Y = {};
Y.email = this.email;
Y.password = this.password;
return Y;
},
equals: function ea(Z) {
return this === Z ? !0 : Z instanceof $c ? ea.base.call(this, this, Z) && this.email == Z.email && this.password == Z.password : !1;
}
});
We = function(Z) {
var ea,
aa;
ea = Z.email;
aa = Z.password;
if (!ea || !aa)
throw new Db(X.JSON_PARSE_ERROR, "email/password authdata " + JSON.stringify(Z));
return new $c(ea, aa);
};
})();
wf = Ue.extend({
init: function Y() {
Y.base.call(this, yc.EMAIL_PASSWORD);
},
createData: function(Y, Z, ea, aa) {
La(aa, function() {
return We(ea);
});
},
authenticate: function(Y, Z, ea, aa) {
if (!(ea instanceof $c))
throw new vb("Incorrect authentication data type " + ea + ".");
Y = ea.password;
if (!ea.email || !Y)
throw new uc(X.EMAILPASSWORD_BLANK).setUser(ea);
throw new uc(X.UNSUPPORTED_USERAUTH_DATA, this.scheme).setUser(ea);
}
});
Object.freeze({
ENTITY_REAUTH: Ea.ENTITY_REAUTH,
ENTITYDATA_REAUTH: Ea.ENTITYDATA_REAUTH
});
xf = Ab.Class.create({
getTime: function() {},
getRandom: function() {},
isPeerToPeer: function() {},
getMessageCapabilities: function() {},
getEntityAuthenticationData: function(Y, Z) {},
getMslCryptoContext: function() {},
getEntityAuthenticationFactory: function(Y) {},
getUserAuthenticationFactory: function(Y) {},
getTokenFactory: function() {},
getKeyExchangeFactory: function(Y) {},
getKeyExchangeFactories: function() {},
getMslStore: function() {}
});
Xe = Ab.Class.create({
setCryptoContext: function(Y, Z) {},
getMasterToken: function() {},
getNonReplayableId: function(Y) {},
getCryptoContext: function(Y) {},
removeCryptoContext: function(Y) {},
clearCryptoContexts: function() {},
addUserIdToken: function(Y, Z) {},
getUserIdToken: function(Y) {},
removeUserIdToken: function(Y) {},
clearUserIdTokens: function() {},
addServiceTokens: function(Y) {},
getServiceTokens: function(Y, Z) {},
removeServiceTokens: function(Y, Z, ea) {},
clearServiceTokens: function() {}
});
(function() {
var Y;
Y = Cc;
Od = function(Z, ea) {
var aa;
aa = {};
switch (Z) {
case Y.LZW:
return ce(ea, aa);
case Y.GZIP:
return gzip$compress(ea);
default:
throw new cb(X.UNSUPPORTED_COMPRESSION, Z);
}
};
pd = function(Z, ea, aa) {
switch (Z) {
case Y.LZW:
return de(ea);
case Y.GZIP:
return gzip$uncompress(ea);
default:
throw new cb(X.UNSUPPORTED_COMPRESSION, Z.name());
}
};
})();
Xe.extend({
setCryptoContext: function(Y, Z) {},
getMasterToken: function() {
return null;
},
getNonReplayableId: function(Y) {
return 1;
},
getCryptoContext: function(Y) {
return null;
},
removeCryptoContext: function(Y) {},
clearCryptoContexts: function() {},
addUserIdToken: function(Y, Z) {},
getUserIdToken: function(Y) {
return null;
},
removeUserIdToken: function(Y) {},
clearUserIdTokens: function() {},
addServiceTokens: function(Y) {},
getServiceTokens: function(Y, Z) {
if (Z) {
if (!Y)
throw new cb(X.USERIDTOKEN_MASTERTOKEN_NULL);
if (!Z.isBoundTo(Y))
throw new cb(X.USERIDTOKEN_MASTERTOKEN_MISMATCH, "uit mtserialnumber " + Z.mtSerialNumber + "; mt " + Y.serialNumber);
}
return [];
},
removeServiceTokens: function(Y, Z, ea) {
if (ea && Z && !ea.isBoundTo(Z))
throw new cb(X.USERIDTOKEN_MASTERTOKEN_MISMATCH, "uit mtserialnumber " + ea.masterTokenSerialNumber + "; mt " + Z.serialNumber);
},
clearServiceTokens: function() {}
});
(function() {
Ye = Xe.extend({
init: function Z() {
Z.base.call(this);
Object.defineProperties(this, {
masterTokens: {
value: {},
writable: !1,
enumerable: !1,
configurable: !1
},
cryptoContexts: {
value: {},
writable: !1,
enumerable: !1,
configurable: !1
},
userIdTokens: {
value: {},
writable: !1,
enumerable: !1,
configurable: !1
},
nonReplayableIds: {
value: {},
writable: !1,
enumerable: !1,
configurable: !1
},
unboundServiceTokens: {
value: {},
writable: !1,
enumerable: !1,
configurable: !1
},
mtServiceTokens: {
value: {},
writable: !1,
enumerable: !1,
configurable: !1
},
uitServiceTokens: {
value: {},
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
setCryptoContext: function(Z, ea) {
var aa;
if (ea) {
aa = Z.uniqueKey();
this.masterTokens[aa] = Z;
this.cryptoContexts[aa] = ea;
} else
this.removeCryptoContext(Z);
},
getMasterToken: function() {
var Z,
ea,
aa;
Z = null;
for (ea in this.masterTokens) {
aa = this.masterTokens[ea];
if (!Z || aa.isNewerThan(Z))
Z = aa;
}
return Z;
},
getNonReplayableId: function(Z) {
var ea;
Z = Z.serialNumber;
ea = this.nonReplayableIds[Z] !== zb ? this.nonReplayableIds[Z] : 0;
if (0 > ea || ea > Kb)
throw new vb("Non-replayable ID " + ea + " is outside the valid range.");
ea = ea == Kb ? 0 : ea + 1;
return this.nonReplayableIds[Z] = ea;
},
getCryptoContext: function(Z) {
return this.cryptoContexts[Z.uniqueKey()];
},
removeCryptoContext: function(Z) {
var ea,
aa,
ja,
ua;
ea = Z.uniqueKey();
if (this.masterTokens[ea]) {
aa = Z.serialNumber;
for (ja in this.masterTokens) {
ua = this.masterTokens[ja];
if (!ua.equals(Z) && ua.serialNumber == aa) {
delete this.masterTokens[ea];
delete this.cryptoContexts[ea];
return;
}
}
Object.keys(this.userIdTokens).forEach(function(sa) {
sa = this.userIdTokens[sa];
sa.isBoundTo(Z) && this.removeUserIdToken(sa);
}, this);
try {
this.removeServiceTokens(null, Z, null);
} catch (sa) {
if (sa instanceof cb)
throw new vb("Unexpected exception while removing master token bound service tokens.", sa);
throw sa;
}
delete this.nonReplayableIds[aa];
delete this.masterTokens[ea];
delete this.cryptoContexts[ea];
}
},
clearCryptoContexts: function() {
[this.masterTokens, this.cryptoContexts, this.nonReplayableIds, this.userIdTokens, this.uitServiceTokens, this.mtServiceTokens].forEach(function(Z) {
for (var ea in Z) {
delete Z[ea];
}
}, this);
},
addUserIdToken: function(Z, ea) {
var aa,
ja;
aa = !1;
for (ja in this.masterTokens) {
if (ea.isBoundTo(this.masterTokens[ja])) {
aa = !0;
break;
}
}
if (!aa)
throw new cb(X.USERIDTOKEN_MASTERTOKEN_NOT_FOUND, "uit mtserialnumber " + ea.mtSerialNumber);
this.userIdTokens[Z] = ea;
},
getUserIdToken: function(Z) {
return this.userIdTokens[Z];
},
removeUserIdToken: function(Z) {
var ea,
aa,
ja;
ea = null;
for (aa in this.masterTokens) {
ja = this.masterTokens[aa];
if (Z.isBoundTo(ja)) {
ea = ja;
break;
}
}
Object.keys(this.userIdTokens).forEach(function(ua) {
if (this.userIdTokens[ua].equals(Z)) {
try {
this.removeServiceTokens(null, ea, Z);
} catch (sa) {
if (sa instanceof cb)
throw new vb("Unexpected exception while removing user ID token bound service tokens.", sa);
throw sa;
}
delete this.userIdTokens[ua];
}
}, this);
},
clearUserIdTokens: function() {
for (var Z in this.userIdTokens) {
this.removeUserIdToken(this.userIdTokens[Z]);
}
},
addServiceTokens: function(Z) {
Z.forEach(function(ea) {
var aa,
ja;
if (ea.isMasterTokenBound()) {
aa = !1;
for (ja in this.masterTokens) {
if (ea.isBoundTo(this.masterTokens[ja])) {
aa = !0;
break;
}
}
if (!aa)
throw new cb(X.SERVICETOKEN_MASTERTOKEN_NOT_FOUND, "st mtserialnumber " + ea.mtSerialNumber);
}
if (ea.isUserIdTokenBound()) {
aa = !1;
for (var ua in this.userIdTokens) {
if (ea.isBoundTo(this.userIdTokens[ua])) {
aa = !0;
break;
}
}
if (!aa)
throw new cb(X.SERVICETOKEN_USERIDTOKEN_NOT_FOUND, "st uitserialnumber " + ea.uitSerialNumber);
}
}, this);
Z.forEach(function(ea) {
var aa;
if (ea.isUnbound())
this.unboundServiceTokens[ea.uniqueKey()] = ea;
else {
if (ea.isMasterTokenBound()) {
aa = this.mtServiceTokens[ea.mtSerialNumber];
aa || (aa = {});
aa[ea.uniqueKey()] = ea;
this.mtServiceTokens[ea.mtSerialNumber] = aa;
}
ea.isUserIdTokenBound() && ((aa = this.uitServiceTokens[ea.uitSerialNumber]) || (aa = {}), aa[ea.uniqueKey()] = ea, this.uitServiceTokens[ea.uitSerialNumber] = aa);
}
}, this);
},
getServiceTokens: function(Z, ea) {
var aa,
ja,
ua;
if (ea) {
if (!Z)
throw new cb(X.USERIDTOKEN_MASTERTOKEN_NULL);
if (!ea.isBoundTo(Z))
throw new cb(X.USERIDTOKEN_MASTERTOKEN_MISMATCH, "uit mtserialnumber " + ea.mtSerialNumber + "; mt " + Z.serialNumber);
}
aa = {};
for (ja in this.unboundServiceTokens) {
ua = this.unboundServiceTokens[ja];
aa[ua.uniqueKey()] = ua;
}
if (Z && (ja = this.mtServiceTokens[Z.serialNumber]))
for (var sa in ja) {
ua = ja[sa];
ua.isUserIdTokenBound() || (aa[sa] = ua);
}
if (ea && (ea = this.uitServiceTokens[ea.serialNumber]))
for (var la in ea) {
sa = ea[la];
sa.isBoundTo(Z) && (aa[la] = sa);
}
Z = [];
for (var qa in aa) {
Z.push(aa[qa]);
}
return Z;
},
removeServiceTokens: function(Z, ea, aa) {
var ja,
ua,
sa;
if (aa && ea && !aa.isBoundTo(ea))
throw new cb(X.USERIDTOKEN_MASTERTOKEN_MISMATCH, "uit mtserialnumber " + aa.mtSerialNumber + "; mt " + ea.serialNumber);
!Z || ea || aa || Object.keys(this.unboundServiceTokens).forEach(function(la) {
this.unboundServiceTokens[la].name == Z && delete this.unboundServiceTokens[la];
}, this);
if (ea && !aa && (ja = this.mtServiceTokens[ea.serialNumber])) {
sa = Object.keys(ja);
sa.forEach(function(la) {
var qa;
qa = ja[la];
Z && qa.name != Z || delete ja[la];
}, this);
this.mtServiceTokens[ea.serialNumber] = ja;
}
aa && (ua = this.uitServiceTokens[aa.serialNumber]) && (ea = Object.keys(ua), ea.forEach(function(la) {
var qa;
qa = ua[la];
Z && qa.name != Z || delete ua[la];
}, this), this.uitServiceTokens[aa.serialNumber] = ua);
},
clearServiceTokens: function() {
[this.unboundServiceTokens, this.mtServiceTokens, this.uitServiceTokens].forEach(function(Z) {
for (var ea in Z) {
delete Z[ea];
}
}, this);
}
});
})();
sf.extend({
init: function Z() {
Z.base.call(this);
Object.defineProperties(this, {
_contextMap: {
value: {},
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
addCryptoContext: function(Z, ea) {
ea && Z && Z.length && (Z = Eb(Z), this._contextMap[Z] = ea);
},
getCryptoContext: function(Z) {
return Z && Z.length ? (Z = Eb(Z), this._contextMap[Z] || null) : null;
},
removeCryptoContext: function(Z) {
Z && Z.length && (Z = Eb(Z), delete this._contextMap[Z]);
}
});
kf.extend({
init: function sa(ea, aa, ja, ua) {
sa.base.call(this, ea);
Object.defineProperties(this, {
_kde: {
value: aa,
writable: !1,
enumerable: !1,
configurable: !1
},
_kdh: {
value: ja,
writable: !1,
enumerable: !1,
configurable: !1
},
_kdw: {
value: ua,
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
getCryptoContext: function(ea, aa) {
if (!(aa instanceof qc))
throw new vb("Incorrect authentication data type " + JSON.stringify(aa) + ".");
if (aa.identity != this.localIdentity)
throw new kc(X.ENTITY_NOT_FOUND, "mgk " + aa.identity);
return new jd(ea, this.localIdentity, this._kde, this._kdh, this._kdw);
}
});
lf.extend({
init: function la(aa, ja, ua, sa) {
la.base.call(this, aa);
Object.defineProperties(this, {
_kpe: {
value: ja,
writable: !1,
enumerable: !1,
configurable: !1
},
_kph: {
value: ua,
writable: !1,
enumerable: !1,
configurable: !1
},
_kpw: {
value: sa,
writable: !1,
enumerable: !1,
configurable: !1
}
});
},
getCryptoContext: function(aa, ja) {
if (!(ja instanceof rc))
throw new vb("Incorrect authentication data type " + JSON.stringify(ja) + ".");
if (ja.identity != this.localIdentity)
throw new kc(X.ENTITY_NOT_FOUND, "psk " + ja.identity);
return new jd(aa, this.localIdentity, this._kpe, this._kph, this._kpw);
}
});
zf = Ye.extend({
init: function na(ja, ua, sa, la, qa, ya) {
na.base.call(this);
this._log = ja;
this._esn = ua;
this._keyRequestData = sa;
this._createKeyRequestData = la;
this._systemKeyName = qa;
this._systemKeyWrapFormat = ya;
},
setCryptoContext: function qa(ua, sa, la) {
var ya;
ya = this;
ya._log.trace("Adding MasterToken", {
SequenceNumber: ua.sequenceNumber,
SerialNumber: ua.serialNumber,
Expiration: ua.expiration.getTime()
});
qa.base.call(this, ua, sa);
!la && (ua = ya._createKeyRequestData) && (ya._log.trace("Generating new keyx request data"), ua().then(function(na) {
ya._keyRequestData = na;
}, function(na) {
ya._log.error("Unable to generate new keyx request data", "" + na);
}));
},
addUserIdToken: function qa(sa, la) {
this._log.trace("Adding UserIdToken", {
UserId: sa,
SerialNumber: la.serialNumber,
MTSerialNumber: la.mtSerialNumber,
Expiration: la.expiration.getTime()
});
qa.base.call(this, sa, la);
},
addServiceTokens: function qa(la) {
qa.base.call(this, la.filter(function(ya) {
return !yf[ya.name];
}));
},
getUserIdTokenKeys: function() {
var la,
qa;
la = [];
for (qa in this.userIdTokens) {
la.push(qa);
}
return la;
},
rekeyUserIdToken: function(la, qa) {
this.userIdTokens[la] && (this.userIdTokens[qa] = this.userIdTokens[la], delete this.userIdTokens[la]);
},
getKeyRequestData: function() {
return this._keyRequestData;
},
getStoreState: function(la) {
var qa;
qa = this;
La(la, function() {
var ya;
ya = qa.getMasterToken();
ya ? qa.getKeysForStore(ya, {
result: function(na) {
La(la, function() {
var da,
ha,
ka;
da = qa.userIdTokens;
ha = Object.keys(da).map(function(va) {
var Ra;
Ra = da[va];
return {
userId: va,
userIdTokenJSON: da[va].toJSON(),
serviceTokenJSONList: qa.getServiceTokens(ya, Ra).map(df)
};
});
na.esn = qa._esn;
na.masterTokenJSON = ya.toJSON();
na.userList = ha;
ka = qa._keyRequestData.storeData;
ka && Object.keys(ka).forEach(function(va) {
na[va] = ka[va];
});
return na;
});
},
timeout: la.timeout,
error: la.error
}) : la.result(null);
});
},
getKeysForStore: function(la, qa) {
var ya;
ya = this;
La(qa, function() {
var na;
na = ya.getCryptoContext(la);
na = {
encryptionKey: na.encryptionKey,
hmacKey: na.hmacKey
};
if (na.encryptionKey && na.hmacKey) {
if (ya._systemKeyWrapFormat)
ya.wrapKeysWithSystemKey(na, qa);
else
return na;
} else
throw new cb(X.INTERNAL_EXCEPTION, "Unable to get CryptoContext keys");
});
},
wrapKeysWithSystemKey: function(la, qa) {
var ya;
ya = this;
Xd(this._systemKeyName, {
result: function(na) {
La(qa, function() {
var da,
ha,
ka,
va;
da = la.encryptionKey;
ha = la.hmacKey;
ka = da[Oc];
va = ha[Oc];
if (ka && va)
return {
wrappedEncryptionKey: ka,
wrappedHmacKey: va
};
Promise.resolve().then(function() {
return Promise.all([Jb.wrapKey(ya._systemKeyWrapFormat, da, na, na.algorithm), Jb.wrapKey(ya._systemKeyWrapFormat, ha, na, na.algorithm)]);
}).then(function(Ra) {
ka = Eb(Ra[0]);
da[Oc] = ka;
va = Eb(Ra[1]);
ha[Oc] = va;
qa.result({
wrappedEncryptionKey: ka,
wrappedHmacKey: va
});
}).catch(function(Ra) {
qa.error(new cb(X.INTERNAL_EXCEPTION, "Error wrapping key with SYSTEM key", Ra));
});
});
},
timeout: qa.timeout,
error: qa.error
});
},
unwrapKeysWithSystemKey: function(la, qa) {
var ya;
ya = this;
Xd(this._systemKeyName, {
result: function(na) {
La(qa, function() {
var da,
ha;
da = Gb(la.wrappedEncryptionKey);
ha = Gb(la.wrappedHmacKey);
Promise.resolve().then(function() {
return Promise.all([Jb.unwrapKey(ya._systemKeyWrapFormat, da, na, na.algorithm, hc, !1, vc), Jb.unwrapKey(ya._systemKeyWrapFormat, ha, na, na.algorithm, ic, !1, Ec)]);
}).then(function(ka) {
var va;
va = ka[0];
ka = ka[1];
va[Oc] = la.wrappedEncryptionKey;
ka[Oc] = la.wrappedHmacKey;
qa.result({
encryptionKey: va,
hmacKey: ka
});
}).catch(function(ka) {
qa.error(new cb(X.INTERNAL_EXCEPTION, "Error unwrapping with SYSTEM key", ka));
});
});
},
timeout: qa.timeout,
error: qa.error
});
},
loadStoreState: function(la, qa, ya, na) {
var ka,
va;
function da(Ra, Ka) {
var Qa;
try {
Qa = ya.userList.slice();
} catch (Sa) {}
Qa ? (function oa() {
var xa;
xa = Qa.shift();
xa ? nd(qa, xa.userIdTokenJSON, Ra, {
result: function(Da) {
try {
ka.addUserIdToken(xa.userId, Da);
ha(Ra, Da, xa.serviceTokenJSONList, {
result: oa,
timeout: oa,
error: oa
});
} catch (Ga) {
oa();
}
},
timeout: oa,
error: oa
}) : Ka.result();
})() : Ka.result();
}
function ha(Ra, Ka, Qa, Sa) {
var oa,
xa;
try {
oa = Qa.slice();
} catch (Da) {}
if (oa) {
xa = ka.getCryptoContext(Ra);
(function Ga() {
var za;
za = oa.shift();
za ? od(qa, za, Ra, Ka, xa, {
result: function(Ta) {
ka.addServiceTokens([Ta]);
Ga();
},
timeout: function() {
Ga();
},
error: function() {
Ga();
}
}) : Sa.result();
})();
} else
Sa.result();
}
ka = this;
va = ka._log;
ya.esn != ka._esn ? (va.error("Esn mismatch, starting fresh"), na.error()) : (function(Ra) {
var Sa,
oa,
xa,
Da;
function Ka() {
var Ga;
if (!Sa && oa && xa && Da) {
Sa = !0;
Ga = new fc(qa, oa, la.esn, {
rawKey: xa
}, {
rawKey: Da
});
ka.setCryptoContext(oa, Ga, !0);
Ra.result(oa);
}
}
function Qa(Ga, za) {
va.error(Ga, za && "" + za);
Sa || (Sa = !0, Ra.error());
}
ya.masterTokenJSON ? (Wc(qa, ya.masterTokenJSON, {
result: function(Ga) {
oa = Ga;
Ka();
},
timeout: function() {
Qa("Timeout parsing MasterToken");
},
error: function(Ga) {
Qa("Error parsing MasterToken", Ga);
}
}), ka._systemKeyWrapFormat ? ka.unwrapKeysWithSystemKey(ya, {
result: function(Ga) {
xa = Ga.encryptionKey;
Da = Ga.hmacKey;
Ka();
},
timeout: function() {
Qa("Timeout unwrapping keys");
},
error: function(Ga) {
Qa("Error unwrapping keys", Ga);
}
}) : Promise.resolve().then(function() {
return Jb.encrypt({
name: hc.name,
iv: new Uint8Array(16)
}, ya.encryptionKey, new Uint8Array(1));
}).then(function(Ga) {
xa = ya.encryptionKey;
}).catch(function(Ga) {
Qa("Error loading encryptionKey");
}).then(function() {
return Jb.sign(ic, ya.hmacKey, new Uint8Array(1));
}).then(function(Ga) {
Da = ya.hmacKey;
Ka();
}).catch(function(Ga) {
Qa("Error loading hmacKey");
})) : Qa("Persisted store is corrupt");
})({
result: function(Ra) {
da(Ra, na);
},
timeout: na.timeout,
error: na.error
});
}
});
yf = {
"streaming.servicetokens.movie": !0,
"streaming.servicetokens.license": !0
};
Oc = "$netflix$msl$wrapsys";
Af = xf.extend({
init: function(la, qa, ya, na, da, ha) {
var ka,
va;
ka = new Xc([Cc.LZW]);
va = new nf();
va.addPublicKey(qa, ya);
na[Ob.RSA] = new mf(va);
qa = {};
qa[yc.EMAIL_PASSWORD] = new wf();
qa[yc.NETFLIXID] = new vf();
la = {
_mslCryptoContext: {
value: new jf(),
writable: !0,
enumerable: !1,
configurable: !1
},
_capabilities: {
value: ka,
writable: !1,
enumerable: !1,
configurable: !1
},
_entityAuthData: {
value: da,
writable: !0,
enumerable: !1,
configurable: !1
},
_entityAuthFactories: {
value: na,
writable: !1,
enumerable: !1,
configurable: !1
},
_userAuthFactories: {
value: qa,
writable: !1,
enumerable: !1,
configurable: !1
},
_keyExchangeFactories: {
value: ha,
writable: !1,
enumerable: !1,
configurable: !1
},
_store: {
value: la,
writable: !1,
enumerable: !1,
configurable: !1
}
};
Object.defineProperties(this, la);
},
getTime: function() {
return Date.now();
},
getRandom: function() {
return new he();
},
isPeerToPeer: function() {
return !1;
},
getMessageCapabilities: function() {
return this._capabilities;
},
getEntityAuthenticationData: function(la, qa) {
qa.result(this._entityAuthData);
},
getMslCryptoContext: function() {
return this._mslCryptoContext;
},
getEntityAuthenticationFactory: function(la) {
return this._entityAuthFactories[la];
},
getUserAuthenticationFactory: function(la) {
return this._userAuthFactories[la];
},
getTokenFactory: function() {
return null;
},
getKeyExchangeFactory: function(la) {
return this._keyExchangeFactories.filter(function(qa) {
return qa.scheme == la;
})[0];
},
getKeyExchangeFactories: function() {
return this._keyExchangeFactories;
},
getMslStore: function() {
return this._store;
}
});
Zd = Re.extend({
init: function(la, qa, ya, na) {
this._log = la;
this._mslContext = qa;
this._mslRequest = ya;
this._keyRequestData = na;
},
getCryptoContexts: function() {
return {};
},
isEncrypted: function() {
return !!this._mslRequest.encrypted;
},
isNonReplayable: function() {
return !!this._mslRequest.nonReplayable;
},
isRequestingTokens: function() {
return !0;
},
getUserId: function() {
return this._mslRequest.profileGuid || this._mslRequest.userId || null;
},
getUserAuthData: function(la, qa, ya, na) {
var da;
da = this._mslRequest;
La(na, function() {
return la || !da.shouldSendUserAuthData ? null : da.email ? new $c(da.email, da.password) : da.useNetflixUserAuthData || ya && da.sendUserAuthIfRequired ? new Zc() : null;
});
},
getCustomer: function() {
return null;
},
getKeyRequestData: function(la) {
la.result(this._mslRequest.allowTokenRefresh ? [this._keyRequestData] : []);
},
updateServiceTokens: function(la, qa, ya) {
var na,
da,
ha,
ka,
va,
Ra;
na = this._log;
da = (this._mslRequest.serviceTokens || []).slice();
ha = this._mslContext;
qa = ha.getMslStore();
ka = la.builder.getMasterToken();
va = this.getUserId();
Ra = qa.getUserIdToken(va);
(function Qa() {
var Sa;
Sa = da.shift();
if (Sa)
try {
Sa instanceof xc ? (la.addPrimaryServiceToken(Sa), Qa()) : od(ha, Sa, ka, Ra, null, {
result: function(oa) {
try {
la.addPrimaryServiceToken(oa);
} catch (xa) {
na.warn("Exception adding service token", "" + xa);
}
Qa();
},
timeout: function() {
na.warn("Timeout parsing service token");
Qa();
},
error: function(oa) {
na.warn("Error parsing service token", "" + oa);
Qa();
}
});
} catch (oa) {
na.warn("Exception processing service token", "" + oa);
Qa();
}
else
ya.result(!0);
})();
},
write: function(la, qa, ya) {
var na;
na = Yb(this._mslRequest.body);
la.write(na, 0, na.length, qa, {
result: function(da) {
da != na.length ? ya.error(new Rb("Not all data was written to output.")) : la.flush(qa, {
result: function() {
ya.result(!0);
},
timeout: function() {
ya.timeout();
},
error: function(ha) {
ya.error(ha);
}
});
},
timeout: function() {
ya.timeout();
},
error: function(da) {
ya.error(da);
}
});
},
getDebugContext: function() {
this._dc || (this._dc = new Bf(this._log, this._mslRequest));
return this._dc;
}
});
Bf = uf.extend({
init: function(la, qa) {
this._log = la;
this._mslRequest = qa;
},
sentHeader: function(la) {
this._log.trace("Sent MSL header", Yd(this._mslRequest, la), la.serviceTokens && la.serviceTokens.map(ef).join("\n"));
},
receivedHeader: function(la) {
var qa,
ya;
qa = Yd(this._mslRequest, la);
ya = la.errorCode;
ya ? this._log.warn("Received MSL error header", qa, {
errorCode: ya,
errorMessage: la.errorMessage,
internalCode: la.internalCode
}) : this._log.trace("Received MSL header", qa);
}
});
Cf = {
JWK_RSA: function(la) {
return gf(la, {
name: "RSA-OAEP",
modulusLength: 2048,
publicExponent: new Uint8Array([1, 0, 1]),
hash: {
name: "SHA-1"
}
}, we.JWK_RSA);
}
};
mb.netflix = mb.netflix || ({});
mb.netflix.msl = {
createMslClient: function(la, qa) {
var ya,
na,
da,
ha,
ka;
ya = la.log;
ka = la.notifyMilestone || (function() {});
Promise.resolve().then(function() {
if (!(Nb && Nb.generateKey && Nb.importKey && Nb.unwrapKey))
throw new cb(X.INTERNAL_EXCEPTION, "No WebCrypto");
Wb = Nb.generateKey({
name: "AES-CBC",
length: 128
}, !0, vc).then ? ed.V2014_02 : ed.LEGACY;
ka("mslisik");
return Jb.importKey("spki", la.serverIdentityKeyData, ie, !1, ["verify"]);
}).then(function(va) {
return new Promise(function(Ra, Ka) {
Bc(va, {
result: Ra,
error: function() {
Ka(new cb(X.KEY_IMPORT_ERROR, "Unable to create server identity verification key"));
}
});
});
}).then(function(va) {
na = va;
if (va = Cf.JWK_RSA)
return ( ka("mslcc"), va(la)) ;
throw new cb(X.INTERNAL_EXCEPTION, "Invalid authenticationType: JWK_RSA");
}).then(function(va) {
var Ra;
da = new zf(ya, la.esn, va.keyRequestData, va.createKeyRequestData, la.authenticationKeyNames.s, la.systemKeyWrapFormat);
ha = new Af(da, la.serverIdentityId, na, va.entityAuthFactories, va.entityAuthData, va.keyExchangeFactories);
Ra = la.storeState;
if (Ra)
return ( ka("mslss"), ya.info("Loading store state"), new Promise(function(Ka, Qa) {
da.loadStoreState(la, ha, Ra, {
result: Ka,
timeout: Ka,
error: Ka
});
})) ;
ya.info("No store state, starting fresh");
}).then(function() {
var va;
va = new Se();
ka("msldone");
qa.result(new ff(ya, va, ha, da, la.ErrorSubCodes));
}).catch(function(va) {
qa.error(va);
});
},
IHttpLocation: qf,
MslIoException: Rb
};
(function() {
var Za,
Va,
hb,
jb,
nb,
pb,
qb,
yb,
xb;
function la(t) {
var b;
b = 0;
return function() {
return b < t.length ? {
done: !1,
value: t[b++]
} : {
done: !0
};
};
}
function qa(t, b) {
var a,
k;
if (b)
a:
{
a = Va;
t = t.split(".");
for (var c = 0; c < t.length - 1; c++) {
k = t[c];
if (!((k in a)))
break a;
a = a[k];
}
t = t[t.length - 1];
c = a[t];
b = b(c);
b != c && null != b && Za(a, t, {
configurable: !0,
writable: !0,
value: b
});
}
}
function ya(t) {
t = {
next: t
};
t[Symbol.iterator] = function() {
return this;
};
return t;
}
function na(t) {
var b;
b = "undefined" != typeof Symbol && Symbol.iterator && t[Symbol.iterator];
return b ? b.call(t) : {
next: la(t)
};
}
function da(t) {
for (var b, a = []; !(b = t.next()).done;) {
a.push(b.value);
}
return a;
}
function ha(t) {
return t instanceof Array ? t : da(na(t));
}
function ka(t, b) {
var c;
t.prototype = hb(b.prototype);
t.prototype.constructor = t;
if (yb)
yb(t, b);
else
for (var a in b) {
if ("prototype" != a)
if (Object.defineProperties) {
c = Object.getOwnPropertyDescriptor(b, a);
c && Object.defineProperty(t, a, c);
} else
t[a] = b[a];
}
t.kpc = b.prototype;
}
function va() {
this.kY = !1;
this.WF = null;
this.mfa = void 0;
this.dF = 1;
this.o2a = this.mEb = 0;
this.PU = null;
}
function Ra(t) {
if (t.kY)
throw new TypeError("Generator is already running");
t.kY = !0;
}
function Ka(t, b) {
t.dF = 2;
return {
value: b
};
}
function Qa(t) {
this.Qf = new va();
this.G4b = t;
}
function Sa(t, b) {
var a;
Ra(t.Qf);
a = t.Qf.WF;
if (a)
return oa(t, ("return" in a) ? a["return"] : function(c) {
return {
value: c,
done: !0
};
}, b, t.Qf.return);
t.Qf.return(b);
return xa(t);
}
function oa(t, b, a, c) {
var k,
g;
try {
k = b.call(t.Qf.WF, a);
if (!(k instanceof Object))
throw new TypeError("Iterator result " + k + " is not an object");
if (!k.done)
return ( t.Qf.kY = !1, k) ;
g = k.value;
} catch (h) {
return ( t.Qf.WF = null, t.Qf.z0(h), xa(t)) ;
}
t.Qf.WF = null;
c.call(t.Qf, g);
return xa(t);
}
function xa(t) {
var b;
for (; t.Qf.dF;) {
try {
b = t.G4b(t.Qf);
if (b)
return ( t.Qf.kY = !1, {
value: b.value,
done: !1
}) ;
} catch (a) {
t.Qf.mfa = void 0;
t.Qf.z0(a);
}
}
t.Qf.kY = !1;
if (t.Qf.PU) {
b = t.Qf.PU;
t.Qf.PU = null;
if (b.FVb)
throw b.zO;
return {
value: b.return,
done: !0
};
}
return {
value: void 0,
done: !0
};
}
function Da(t) {
this.next = function(b) {
return t.kZ(b);
};
this.throw = function(b) {
return t.z0(b);
};
this.return = function(b) {
return Sa(t, b);
};
this[Symbol.iterator] = function() {
return this;
};
}
function Ga(t, b) {
b = new Da(new Qa(b));
yb && t.prototype && yb(b, t.prototype);
return b;
}
function za(t, b) {
return Object.prototype.hasOwnProperty.call(t, b);
}
function Ta(t, b) {
var a,
c,
k;
t instanceof String && (t += "");
a = 0;
c = !1;
k = {
next: function() {
var g;
if (!c && a < t.length) {
g = a++;
return {
value: b(g, t[g]),
done: !1
};
}
c = !0;
return {
done: !0,
value: void 0
};
}
};
k[Symbol.iterator] = function() {
return k;
};
return k;
}
function Fa(t, b, a) {
var g;
t instanceof String && (t = String(t));
for (var c = t.length, k = 0; k < c; k++) {
g = t[k];
if (b.call(a, g, k, t))
return {
Qta: k,
Ty: g
};
}
return {
Qta: -1,
Ty: void 0
};
}
function Wa(t, b, a) {
if (null == t)
throw new TypeError("The 'this' value for String.prototype." + a + " must not be null or undefined");
if (b instanceof RegExp)
throw new TypeError("First argument to String.prototype." + a + " must not be a regular expression");
return t + "";
}
Za = "function" == typeof Object.defineProperties ? Object.defineProperty : function(t, b, a) {
if (t == Array.prototype || t == Object.prototype)
return t;
t[b] = a.value;
return t;
};
Va = (function(t) {
var a;
t = ["object" == typeof globalThis && globalThis, t, "object" == typeof mb && mb, "object" == typeof self && self, "object" == typeof global && global];
for (var b = 0; b < t.length; ++b) {
a = t[b];
if (a && a.Math == Math)
return a;
}
throw Error("Cannot find global object");
})(this);
qa("Symbol", function(t) {
var c;
function b(k) {
if (this instanceof b)
throw new TypeError("Symbol is not a constructor");
return new a("jscomp_symbol_" + (k || "") + "_" + c++, k);
}
function a(k, g) {
this.Clb = k;
Za(this, "description", {
configurable: !0,
writable: !0,
value: g
});
}
if (t)
return t;
a.prototype.toString = function() {
return this.Clb;
};
c = 0;
return b;
});
qa("Symbol.iterator", function(t) {
var c;
if (t)
return t;
t = Symbol("Symbol.iterator");
for (var b = ("Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array").split(" "), a = 0; a < b.length; a++) {
c = Va[b[a]];
"function" === typeof c && "function" != typeof c.prototype[t] && Za(c.prototype, t, {
configurable: !0,
writable: !0,
value: function() {
return ya(la(this));
}
});
}
return t;
});
hb = "function" == typeof Object.create ? Object.create : function(t) {
function b() {}
b.prototype = t;
return new b();
};
jb = (function() {
var b;
function t() {
function a() {}
new a();
Reflect.construct(a, [], function() {});
return new a() instanceof a;
}
if ("undefined" != typeof Reflect && Reflect.construct) {
if (t())
return Reflect.construct;
b = Reflect.construct;
return function(a, c, k) {
a = b(a, c);
k && Reflect.setPrototypeOf(a, k.prototype);
return a;
};
}
return function(a, c, k) {
void 0 === k && (k = a);
k = hb(k.prototype || Object.prototype);
return Function.prototype.apply.call(a, k, c) || k;
};
})();
if ("function" == typeof Object.setPrototypeOf)
nb = Object.setPrototypeOf;
else {
a:
{
pb = {
a: !0
};
qb = {};
try {
qb.__proto__ = pb;
nb = qb.a;
break a;
} catch (t) {}
nb = !1;
}nb = nb ? function(t, b) {
t.__proto__ = b;
if (t.__proto__ !== b)
throw new TypeError(t + " is not extensible");
return t;
} : null;
}
yb = nb;
va.prototype.kZ = function(t) {
this.mfa = t;
};
va.prototype.z0 = function(t) {
this.PU = {
zO: t,
FVb: !0
};
this.dF = this.mEb || this.o2a;
};
va.prototype.return = function(t) {
this.PU = {
return: t
};
this.dF = this.o2a;
};
Qa.prototype.kZ = function(t) {
Ra(this.Qf);
if (this.Qf.WF)
return oa(this, this.Qf.WF.next, t, this.Qf.kZ);
this.Qf.kZ(t);
return xa(this);
};
Qa.prototype.z0 = function(t) {
Ra(this.Qf);
if (this.Qf.WF)
return oa(this, this.Qf.WF["throw"], t, this.Qf.kZ);
this.Qf.z0(t);
return xa(this);
};
qa("Reflect", function(t) {
return t ? t : {};
});
qa("Reflect.construct", function() {
return jb;
});
qa("Reflect.setPrototypeOf", function(t) {
return t ? t : yb ? function(b, a) {
try {
return ( yb(b, a), !0) ;
} catch (c) {
return !1;
}
} : null;
});
qa("Object.setPrototypeOf", function(t) {
return t || yb;
});
xb = "function" == typeof Object.assign ? Object.assign : function(t, b) {
var c;
for (var a = 1; a < arguments.length; a++) {
c = arguments[a];
if (c)
for (var k in c) {
za(c, k) && (t[k] = c[k]);
}
}
return t;
};
qa("Object.assign", function(t) {
return t || xb;
});
qa("Promise", function(t) {
var k,
g;
function b(h) {
var d;
this.pR = 0;
this.I_ = void 0;
this.hQ = [];
this.b8a = !1;
d = this.jpa();
try {
h(d.resolve, d.reject);
} catch (f) {
d.reject(f);
}
}
function a() {
this.HD = null;
}
function c(h) {
return h instanceof b ? h : new b(function(d) {
d(h);
});
}
if (t)
return t;
a.prototype.jXa = function(h) {
var d;
if (null == this.HD) {
this.HD = [];
d = this;
this.kXa(function() {
d.OMb();
});
}
this.HD.push(h);
};
k = Va.setTimeout;
a.prototype.kXa = function(h) {
k(h, 0);
};
a.prototype.OMb = function() {
var h,
f;
for (; this.HD && this.HD.length;) {
h = this.HD;
this.HD = [];
for (var d = 0; d < h.length; ++d) {
f = h[d];
h[d] = null;
try {
f();
} catch (l) {
this.bCb(l);
}
}
}
this.HD = null;
};
a.prototype.bCb = function(h) {
this.kXa(function() {
throw h;
});
};
b.prototype.jpa = function() {
var d,
f;
function h(l) {
return function(m) {
f || (f = !0, l.call(d, m));
};
}
d = this;
f = !1;
return {
resolve: h(this.Z6b),
reject: h(this.qza)
};
};
b.prototype.Z6b = function(h) {
var d;
if (h === this)
this.qza(new TypeError("A Promise cannot resolve to itself"));
else if (h instanceof b)
this.e9b(h);
else {
a:
switch (typeof h) {
case "object":
d = null != h;
break a;
case "function":
d = !0;
break a;
default:
d = !1;
}
d ? this.Y6b(h) : this.i3a(h);
}
};
b.prototype.Y6b = function(h) {
var d;
d = void 0;
try {
d = h.then;
} catch (f) {
this.qza(f);
return;
}
"function" == typeof d ? this.f9b(d, h) : this.i3a(h);
};
b.prototype.qza = function(h) {
this.Rgb(2, h);
};
b.prototype.i3a = function(h) {
this.Rgb(1, h);
};
b.prototype.Rgb = function(h, d) {
if (0 != this.pR)
throw Error("Cannot settle(" + h + ", " + d + "): Promise already settled in state" + this.pR);
this.pR = h;
this.I_ = d;
2 === this.pR && this.J7b();
this.PMb();
};
b.prototype.J7b = function() {
var h;
h = this;
k(function() {
var d;
if (h.f0b()) {
d = Va.console;
"undefined" !== typeof d && d.error(h.I_);
}
}, 1);
};
b.prototype.f0b = function() {
var h,
d,
f;
if (this.b8a)
return !1;
h = Va.CustomEvent;
d = Va.Event;
f = Va.dispatchEvent;
if ("undefined" === typeof f)
return !0;
"function" === typeof h ? h = new h("unhandledrejection", {
cancelable: !0
}) : "function" === typeof d ? h = new d("unhandledrejection", {
cancelable: !0
}) : (h = Va.document.createEvent("CustomEvent"), h.initCustomEvent("unhandledrejection", !1, !0, h));
h.promise = this;
h.reason = this.I_;
return f(h);
};
b.prototype.PMb = function() {
if (null != this.hQ) {
for (var h = 0; h < this.hQ.length; ++h) {
g.jXa(this.hQ[h]);
}
this.hQ = null;
}
};
g = new a();
b.prototype.e9b = function(h) {
var d;
d = this.jpa();
h.e7(d.resolve, d.reject);
};
b.prototype.f9b = function(h, d) {
var f;
f = this.jpa();
try {
h.call(d, f.resolve, f.reject);
} catch (l) {
f.reject(l);
}
};
b.prototype.then = function(h, d) {
var l,
m,
n;
function f(p, q) {
return "function" == typeof p ? function(r) {
try {
l(p(r));
} catch (u) {
m(u);
}
} : q;
}
n = new b(function(p, q) {
l = p;
m = q;
});
this.e7(f(h, l), f(d, m));
return n;
};
b.prototype.catch = function(h) {
return this.then(void 0, h);
};
b.prototype.e7 = function(h, d) {
var l;
function f() {
switch (l.pR) {
case 1:
h(l.I_);
break;
case 2:
d(l.I_);
break;
default:
throw Error("Unexpected state: " + l.pR);
}
}
l = this;
null == this.hQ ? g.jXa(f) : this.hQ.push(f);
this.b8a = !0;
};
b.resolve = c;
b.reject = function(h) {
return new b(function(d, f) {
f(h);
});
};
b.race = function(h) {
return new b(function(d, f) {
for (var l = na(h), m = l.next(); !m.done; m = l.next()) {
c(m.value).e7(d, f);
}
});
};
b.all = function(h) {
var d,
f;
d = na(h);
f = d.next();
return f.done ? c([]) : new b(function(l, m) {
var p,
q;
function n(r) {
return function(u) {
p[r] = u;
q--;
0 == q && l(p);
};
}
p = [];
q = 0;
do {
p.push(void 0);
q++;
c(f.value).e7(n(p.length - 1), m);
f = d.next();
} while (!f.done);
});
};
return b;
});
qa("Array.prototype.keys", function(t) {
return t ? t : function() {
return Ta(this, function(b) {
return b;
});
};
});
qa("Array.prototype.find", function(t) {
return t ? t : function(b, a) {
return Fa(this, b, a).Ty;
};
});
qa("Object.is", function(t) {
return t ? t : function(b, a) {
return b === a ? 0 !== b || 1 / b === 1 / a : b !== b && a !== a;
};
});
qa("Array.prototype.includes", function(t) {
return t ? t : function(b, a) {
var c,
k,
g;
c = this;
c instanceof String && (c = String(c));
k = c.length;
a = a || 0;
for (0 > a && (a = Math.max(a + k, 0)); a < k; a++) {
g = c[a];
if (g === b || Object.is(g, b))
return !0;
}
return !1;
};
});
qa("String.prototype.includes", function(t) {
return t ? t : function(b, a) {
return -1 !== Wa(this, b, "includes").indexOf(b, a || 0);
};
});
qa("Math.tanh", function(t) {
return t ? t : function(b) {
var a;
b = Number(b);
if (0 === b)
return b;
a = Math.exp(-2 * Math.abs(b));
a = (1 - a) / (1 + a);
return 0 > b ? -a : a;
};
});
qa("Number.isNaN", function(t) {
return t ? t : function(b) {
return "number" === typeof b && isNaN(b);
};
});
qa("WeakMap", function(t) {
var h,
d;
function b(f) {
this.RX = (d += Math.random() + 1).toString();
if (f) {
f = na(f);
for (var l; !(l = f.next()).done;) {
l = l.value;
this.set(l[0], l[1]);
}
}
}
function a() {}
function c(f) {
var l;
l = typeof f;
return "object" === l && null !== f || "function" === l;
}
function k(f) {
var l;
if (!za(f, h)) {
l = new a();
Za(f, h, {
value: l
});
}
}
function g(f) {
var l;
l = Object[f];
l && (Object[f] = function(m) {
if (m instanceof a)
return m;
Object.isExtensible(m) && k(m);
return l(m);
});
}
if ((function() {
var f,
l,
m;
if (!t || !Object.seal)
return !1;
try {
f = Object.seal({});
l = Object.seal({});
m = new t([[f, 2], [l, 3]]);
if (2 != m.get(f) || 3 != m.get(l))
return !1;
m.delete(f);
m.set(l, 4);
return !m.has(f) && 4 == m.get(l);
} catch (n) {
return !1;
}
})())
return t;
h = "$jscomp_hidden_" + Math.random();
g("freeze");
g("preventExtensions");
g("seal");
d = 0;
b.prototype.set = function(f, l) {
if (!c(f))
throw Error("Invalid WeakMap key");
k(f);
if (!za(f, h))
throw Error("WeakMap key fail: " + f);
f[h][this.RX] = l;
return this;
};
b.prototype.get = function(f) {
return c(f) && za(f, h) ? f[h][this.RX] : void 0;
};
b.prototype.has = function(f) {
return c(f) && za(f, h) && za(f[h], this.RX);
};
b.prototype.delete = function(f) {
return c(f) && za(f, h) && za(f[h], this.RX) ? delete f[h][this.RX] : !1;
};
return b;
});
qa("Map", function(t) {
var g,
h;
function b() {
var d;
d = {};
return d.oq = d.next = d.head = d;
}
function a(d, f) {
var l;
l = d.cB;
return ya(function() {
if (l) {
for (; l.head != d.cB;) {
l = l.oq;
}
for (; l.next != l.head;) {
return ( l = l.next, {
done: !1,
value: f(l)
}) ;
}
l = null;
}
return {
done: !0,
value: void 0
};
});
}
function c(d, f) {
var l,
m,
n;
l = f && typeof f;
"object" == l || "function" == l ? g.has(f) ? l = g.get(f) : (l = "" + ++h, g.set(f, l)) : l = "p_" + f;
m = d.DA[l];
if (m && za(d.DA, l))
for (d = 0; d < m.length; d++) {
n = m[d];
if (f !== f && n.key !== n.key || f === n.key)
return {
id: l,
list: m,
index: d,
entry: n
};
}
return {
id: l,
list: m,
index: -1,
entry: void 0
};
}
function k(d) {
this.DA = {};
this.cB = b();
this.size = 0;
if (d) {
d = na(d);
for (var f; !(f = d.next()).done;) {
f = f.value;
this.set(f[0], f[1]);
}
}
}
if ((function() {
var d,
f,
l,
m;
if (!t || "function" != typeof t || !t.prototype.entries || "function" != typeof Object.seal)
return !1;
try {
d = Object.seal({
x: 4
});
f = new t(na([[d, "s"]]));
if ("s" != f.get(d) || 1 != f.size || f.get({
x: 4
}) || f.set({
x: 4
}, "t") != f || 2 != f.size)
return !1;
l = f.entries();
m = l.next();
if (m.done || m.value[0] != d || "s" != m.value[1])
return !1;
m = l.next();
return m.done || 4 != m.value[0].x || "t" != m.value[1] || !l.next().done ? !1 : !0;
} catch (n) {
return !1;
}
})())
return t;
g = new WeakMap();
k.prototype.set = function(d, f) {
var l;
d = 0 === d ? 0 : d;
l = c(this, d);
l.list || (l.list = this.DA[l.id] = []);
l.entry ? l.entry.value = f : (l.entry = {
next: this.cB,
oq: this.cB.oq,
head: this.cB,
key: d,
value: f
}, l.list.push(l.entry), this.cB.oq.next = l.entry, this.cB.oq = l.entry, this.size++);
return this;
};
k.prototype.delete = function(d) {
d = c(this, d);
return d.entry && d.list ? (d.list.splice(d.index, 1), d.list.length || delete this.DA[d.id], d.entry.oq.next = d.entry.next, d.entry.next.oq = d.entry.oq, d.entry.head = null, this.size--, !0) : !1;
};
k.prototype.clear = function() {
this.DA = {};
this.cB = this.cB.oq = b();
this.size = 0;
};
k.prototype.has = function(d) {
return !!c(this, d).entry;
};
k.prototype.get = function(d) {
return (d = c(this, d).entry) && d.value;
};
k.prototype.entries = function() {
return a(this, function(d) {
return [d.key, d.value];
});
};
k.prototype.keys = function() {
return a(this, function(d) {
return d.key;
});
};
k.prototype.values = function() {
return a(this, function(d) {
return d.value;
});
};
k.prototype.forEach = function(d, f) {
for (var l = this.entries(), m; !(m = l.next()).done;) {
m = m.value;
d.call(f, m[1], m[0], this);
}
};
k.prototype[Symbol.iterator] = k.prototype.entries;
h = 0;
return k;
});
qa("Set", function(t) {
function b(a) {
this.fy = new Map();
if (a) {
a = na(a);
for (var c; !(c = a.next()).done;) {
this.add(c.value);
}
}
this.size = this.fy.size;
}
if ((function() {
var a,
c,
k,
g;
if (!t || "function" != typeof t || !t.prototype.entries || "function" != typeof Object.seal)
return !1;
try {
a = Object.seal({
x: 4
});
c = new t(na([a]));
if (!c.has(a) || 1 != c.size || c.add(a) != c || 1 != c.size || c.add({
x: 4
}) != c || 2 != c.size)
return !1;
k = c.entries();
g = k.next();
if (g.done || g.value[0] != a || g.value[1] != a)
return !1;
g = k.next();
return g.done || g.value[0] == a || 4 != g.value[0].x || g.value[1] != g.value[0] ? !1 : k.next().done;
} catch (h) {
return !1;
}
})())
return t;
b.prototype.add = function(a) {
a = 0 === a ? 0 : a;
this.fy.set(a, a);
this.size = this.fy.size;
return this;
};
b.prototype.delete = function(a) {
a = this.fy.delete(a);
this.size = this.fy.size;
return a;
};
b.prototype.clear = function() {
this.fy.clear();
this.size = 0;
};
b.prototype.has = function(a) {
return this.fy.has(a);
};
b.prototype.entries = function() {
return this.fy.entries();
};
b.prototype.values = function() {
return this.fy.values();
};
b.prototype.keys = b.prototype.values;
b.prototype[Symbol.iterator] = b.prototype.values;
b.prototype.forEach = function(a, c) {
var k;
k = this;
this.fy.forEach(function(g) {
return a.call(c, g, g, k);
});
};
return b;
});
qa("Array.prototype.entries", function(t) {
return t ? t : function() {
return Ta(this, function(b, a) {
return [b, a];
});
};
});
qa("Object.entries", function(t) {
return t ? t : function(b) {
var a,
c;
a = [];
for (c in b) {
za(b, c) && a.push([c, b[c]]);
}
return a;
};
});
qa("Object.getOwnPropertySymbols", function(t) {
return t ? t : function() {
return [];
};
});
qa("Reflect.apply", function(t) {
var b;
if (t)
return t;
b = Function.prototype.apply;
return function(a, c, k) {
return b.call(a, c, k);
};
});
qa("Number.isFinite", function(t) {
return t ? t : function(b) {
return "number" !== typeof b ? !1 : !isNaN(b) && Infinity !== b && -Infinity !== b;
};
});
qa("String.prototype.endsWith", function(t) {
return t ? t : function(b, a) {
var c;
c = Wa(this, b, "endsWith");
b += "";
void 0 === a && (a = c.length);
a = Math.max(0, Math.min(a | 0, c.length));
for (var k = b.length; 0 < k && 0 < a;) {
if (c[--a] != b[--k])
return !1;
}
return 0 >= k;
};
});
qa("String.prototype.repeat", function(t) {
return t ? t : function(b) {
var a;
a = Wa(this, null, "repeat");
if (0 > b || 1342177279 < b)
throw new RangeError("Invalid count value");
b |= 0;
for (var c = ""; b;) {
if ((b & 1 && (c += a), b >>>= 1))
a += a;
}
return c;
};
});
qa("Array.prototype.values", function(t) {
return t ? t : function() {
return Ta(this, function(b, a) {
return a;
});
};
});
qa("Number.MAX_SAFE_INTEGER", function() {
return 9007199254740991;
});
qa("Array.from", function(t) {
return t ? t : function(b, a, c) {
var k,
g;
a = null != a ? a : function(d) {
return d;
};
k = [];
g = "undefined" != typeof Symbol && Symbol.iterator && b[Symbol.iterator];
if ("function" == typeof g) {
b = g.call(b);
for (var h = 0; !(g = b.next()).done;) {
k.push(a.call(c, g.value, h++));
}
} else
for ((g = b.length, h = 0); h < g; h++) {
k.push(a.call(c, b[h], h));
}
return k;
};
});
qa("Object.values", function(t) {
return t ? t : function(b) {
var a,
c;
a = [];
for (c in b) {
za(b, c) && a.push(b[c]);
}
return a;
};
});
qa("String.prototype.startsWith", function(t) {
return t ? t : function(b, a) {
var c,
k,
g;
c = Wa(this, b, "startsWith");
b += "";
k = c.length;
g = b.length;
a = Math.max(0, Math.min(a | 0, c.length));
for (var h = 0; h < g && a < k;) {
if (c[a++] != b[h++])
return !1;
}
return h >= g;
};
});
qa("Promise.prototype.finally", function(t) {
return t ? t : function(b) {
return this.then(function(a) {
return Promise.resolve(b()).then(function() {
return a;
});
}, function(a) {
return Promise.resolve(b()).then(function() {
throw a;
});
});
};
});
qa("Array.prototype.findIndex", function(t) {
return t ? t : function(b, a) {
return Fa(this, b, a).Qta;
};
});
qa("String.fromCodePoint", function(t) {
return t ? t : function(b) {
var k;
for (var a = "", c = 0; c < arguments.length; c++) {
k = Number(arguments[c]);
if (0 > k || 1114111 < k || k !== Math.floor(k))
throw new RangeError("invalid_code_point " + k);
65535 >= k ? a += String.fromCharCode(k) : (k -= 65536, a += String.fromCharCode(k >>> 10 & 1023 | 55296), a += String.fromCharCode(k & 1023 | 56320));
}
return a;
};
});
qa("Number.parseInt", function(t) {
return t || parseInt;
});
(function(t) {
var a;
function b(c) {
var k;
if (a[c])
return a[c].exports;
k = a[c] = {
Qta: c,
OWb: !1,
exports: {}
};
t[c].call(k.exports, k, k.exports, b);
k.OWb = !0;
return k.exports;
}
a = {};
b.anc = t;
b.c = a;
b.d = function(c, k, g) {
b.q0b(c, k) || Object.defineProperty(c, k, {
enumerable: !0,
get: g
});
};
b.r = function(c) {
"undefined" !== typeof Symbol && Symbol.toStringTag && Object.defineProperty(c, Symbol.toStringTag, {
value: "Module"
});
Object.defineProperty(c, "__esModule", {
value: !0
});
};
b.t = function(c, k) {
var g;
k & 1 && (c = b(c));
if (k & 8 || k & 4 && "object" === typeof c && c && c.__esModule)
return c;
g = Object.create(null);
b.r(g);
Object.defineProperty(g, "default", {
enumerable: !0,
value: c
});
if (k & 2 && "string" != typeof c)
for (var h in c) {
b.d(g, h, (function(d) {
return c[d];
}).bind(null, h));
}
return g;
};
b.n = function(c) {
var k;
k = c && c.__esModule ? function() {
return c["default"];
} : function() {
return c;
};
b.d(k, "a", k);
return k;
};
b.q0b = function(c, k) {
return Object.prototype.hasOwnProperty.call(c, k);
};
b.p = "";
return b(b.r7b = 587);
})([function(t, b, a) {
var I,
L;
function c() {
c = Object.assign || (function(K) {
for (var H, R = 1, O = arguments.length; R < O; R++) {
H = arguments[R];
for (var J in H) {
Object.prototype.hasOwnProperty.call(H, J) && (K[J] = H[J]);
}
}
return K;
});
return c.apply(this, arguments);
}
function k(K, H) {
k = Object.setPrototypeOf || ({
__proto__: []
}) instanceof Array && (function(R, O) {
R.__proto__ = O;
}) || (function(R, O) {
for (var J in O) {
Object.prototype.hasOwnProperty.call(O, J) && (R[J] = O[J]);
}
});
return k(K, H);
}
function g(K, H) {
function R() {
this.constructor = K;
}
if ("function" !== typeof H && null !== H)
throw new TypeError("Class extends value " + String(H) + " is not a constructor or null");
k(K, H);
K.prototype = null === H ? Object.create(H) : (R.prototype = H.prototype, new R());
}
function h(K, H) {
var R,
O,
J;
R = {};
for (O in K) {
Object.prototype.hasOwnProperty.call(K, O) && 0 > H.indexOf(O) && (R[O] = K[O]);
}
if (null != K && "function" === typeof Object.getOwnPropertySymbols) {
J = 0;
for (O = Object.getOwnPropertySymbols(K); J < O.length; J++) {
0 > H.indexOf(O[J]) && Object.prototype.propertyIsEnumerable.call(K, O[J]) && (R[O[J]] = K[O[J]]);
}
}
return R;
}
function d(K, H, R, O) {
var J,
M,
P;
J = arguments.length;
M = 3 > J ? H : null === O ? O = Object.getOwnPropertyDescriptor(H, R) : O;
if ("object" === typeof Reflect && "function" === typeof Reflect.Qp)
M = Reflect.Qp(K, H, R, O);
else
for (var S = K.length - 1; 0 <= S; S--) {
if (P = K[S])
M = (3 > J ? P(M) : 3 < J ? P(H, R, M) : P(H, R)) || M;
}
return ( 3 < J && M && Object.defineProperty(H, R, M), M) ;
}
function f(K, H) {
return function(R, O) {
H(R, O, K);
};
}
function l(K, H) {
if ("object" === typeof Reflect && "function" === typeof Reflect.Ac)
return Reflect.Ac(K, H);
}
function m(K, H, R, O) {
function J(M) {
return M instanceof R ? M : new R(function(P) {
P(M);
});
}
return new (R || (R = Promise))(function(M, P) {
function S(W) {
try {
T(O.next(W));
} catch (ia) {
P(ia);
}
}
function U(W) {
try {
T(O["throw"](W));
} catch (ia) {
P(ia);
}
}
function T(W) {
W.done ? M(W.value) : J(W.value).then(S, U);
}
T((O = O.apply(K, H || [])).next());
});
}
function n(K, H) {
var J,
M,
P,
S,
U;
function R(T) {
return function(W) {
return O([T, W]);
};
}
function O(T) {
if (M)
throw new TypeError("Generator is already executing.");
for (; J;) {
try {
if ((M = 1, P && (S = T[0] & 2 ? P["return"] : T[0] ? P["throw"] || ((S = P["return"]) && S.call(P), 0) : P.next) && !(S = S.call(P, T[1])).done))
return S;
if ((P = 0, S))
T = [T[0] & 2, S.value];
switch (T[0]) {
case 0:
case 1:
S = T;
break;
case 4:
return ( J.label++, {
value: T[1],
done: !1
}) ;
case 5:
J.label++;
P = T[1];
T = [0];
continue;
case 7:
T = J.Nk.pop();
J.Vh.pop();
continue;
default:
if (!(S = J.Vh, S = 0 < S.length && S[S.length - 1]) && (6 === T[0] || 2 === T[0])) {
J = 0;
continue;
}
if (3 === T[0] && (!S || T[1] > S[0] && T[1] < S[3]))
J.label = T[1];
else if (6 === T[0] && J.label < S[1])
(J.label = S[1],
S = T);
else if (S && J.label < S[2])
(J.label = S[2],
J.Nk.push(T));
else {
S[2] && J.Nk.pop();
J.Vh.pop();
continue;
}
}
T = H.call(K, J);
} catch (W) {
T = [6, W];
P = 0;
} finally {
M = S = 0;
}
}
if (T[0] & 5)
throw T[1];
return {
value: T[0] ? T[1] : void 0,
done: !0
};
}
J = {
label: 0,
Eb: function() {
if (S[0] & 1)
throw S[1];
return S[1];
},
Vh: [],
Nk: []
};
return ( U = {
next: R(0),
"throw": R(1),
"return": R(2)
}, "function" === typeof Symbol && (U[Symbol.iterator] = function() {
return this;
}), U) ;
}
function p(K, H) {
for (var R in K) {
"default" === R || Object.prototype.hasOwnProperty.call(H, R) || I(H, K, R);
}
}
function q(K) {
var H,
R,
O;
H = "function" === typeof Symbol && Symbol.iterator;
R = H && K[H];
O = 0;
if (R)
return R.call(K);
if (K && "number" === typeof K.length)
return {
next: function() {
K && O >= K.length && (K = void 0);
return {
value: K && K[O++],
done: !K
};
}
};
throw new TypeError(H ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
function r(K, H) {
var R,
O,
J;
R = "function" === typeof Symbol && K[Symbol.iterator];
if (!R)
return K;
K = R.call(K);
J = [];
try {
for (; (void 0 === H || 0 < H--) && !(O = K.next()).done;) {
J.push(O.value);
}
} catch (P) {
var M;
M = {
error: P
};
} finally {
try {
O && !O.done && (R = K["return"]) && R.call(K);
} finally {
if (M)
throw M.error;
}
}
return J;
}
function u() {
for (var K = [], H = 0; H < arguments.length; H++) {
K = K.concat(r(arguments[H]));
}
return K;
}
function v() {
var O;
for (var K = 0, H = 0, R = arguments.length; H < R; H++) {
K += arguments[H].length;
}
K = Array(K);
O = 0;
for (H = 0; H < R; H++) {
for (var J = arguments[H], M = 0, P = J.length; M < P;(M++, O++)) {
K[O] = J[M];
}
}
return K;
}
function w(K, H, R) {
if (R || 2 === arguments.length)
for (var O = 0, J = H.length, M; O < J; O++) {
!M && (O in H) || (M || (M = Array.prototype.slice.call(H, 0, O)), M[O] = H[O]);
}
return K.concat(M || Array.prototype.slice.call(H));
}
function x(K) {
return this instanceof x ? (this.Ty = K, this) : new x(K);
}
function y(K, H, R) {
var U,
T,
W;
function O(ia) {
U[ia] && (T[ia] = function(pa) {
return new Promise(function(wa, Ca) {
1 < W.push([ia, pa, wa, Ca]) || J(ia, pa);
});
});
}
function J(ia, pa) {
var wa;
try {
wa = U[ia](pa);
wa.value instanceof x ? Promise.resolve(wa.value.Ty).then(M, P) : S(W[0][2], wa);
} catch (Ca) {
S(W[0][3], Ca);
}
}
function M(ia) {
J("next", ia);
}
function P(ia) {
J("throw", ia);
}
function S(ia, pa) {
(ia(pa), W.shift(), W.length) && J(W[0][0], W[0][1]);
}
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
U = R.apply(K, H || []);
W = [];
return ( T = {}, O("next"), O("throw"), O("return"), T[Symbol.asyncIterator] = function() {
return this;
}, T) ;
}
function z(K) {
var R,
O;
function H(J, M) {
R[J] = K[J] ? function(P) {
return (O = !O) ? {
value: x(K[J](P)),
done: "return" === J
} : M ? M(P) : P;
} : M;
}
return ( R = {}, H("next"), H("throw", function(J) {
throw J;
}), H("return"), R[Symbol.iterator] = function() {
return this;
}, R) ;
}
function A(K) {
var O,
J;
function H(M) {
J[M] = K[M] && (function(P) {
return new Promise(function(S, U) {
P = K[M](P);
R(S, U, P.done, P.value);
});
});
}
function R(M, P, S, U) {
Promise.resolve(U).then(function(T) {
M({
value: T,
done: S
});
}, P);
}
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
O = K[Symbol.asyncIterator];
return O ? O.call(K) : (K = "function" === typeof q ? q(K) : K[Symbol.iterator](), J = {}, H("next"), H("throw"), H("return"), J[Symbol.asyncIterator] = function() {
return this;
}, J);
}
function B(K, H) {
Object.defineProperty ? Object.defineProperty(K, "raw", {
value: H
}) : K.raw = H;
return K;
}
function C(K) {
var H;
if (K && K.__esModule)
return K;
H = {};
if (null != K)
for (var R in K) {
"default" !== R && Object.prototype.hasOwnProperty.call(K, R) && I(H, K, R);
}
L(H, K);
return H;
}
function D(K) {
return K && K.__esModule ? K : {
default: K
};
}
function F(K, H, R, O) {
if ("a" === R && !O)
throw new TypeError("Private accessor was defined without a getter");
if ("function" === typeof H ? K !== H || !O : !H.has(K))
throw new TypeError("Cannot read private member from an object whose class did not declare it");
return "m" === R ? O : "a" === R ? O.call(K) : O ? O.value : H.get(K);
}
function G(K, H, R, O, J) {
if ("m" === O)
throw new TypeError("Private method is not writable");
if ("a" === O && !J)
throw new TypeError("Private accessor was defined without a setter");
if ("function" === typeof H ? K !== H || !J : !H.has(K))
throw new TypeError("Cannot write private member to an object whose class did not declare it");
return ( "a" === O ? J.call(K, R) : J ? J.value = R : H.set(K, R), R) ;
}
function E(K, H) {
if (null === H || "object" !== typeof H && "function" !== typeof H)
throw new TypeError("Cannot use 'in' operator on non-object");
return "function" === typeof K ? H === K : K.has(H);
}
a.r(b);
a.d(b, "__extends", function() {
return g;
});
a.d(b, "__assign", function() {
return c;
});
a.d(b, "__rest", function() {
return h;
});
a.d(b, "__decorate", function() {
return d;
});
a.d(b, "__param", function() {
return f;
});
a.d(b, "__metadata", function() {
return l;
});
a.d(b, "__awaiter", function() {
return m;
});
a.d(b, "__generator", function() {
return n;
});
a.d(b, "__createBinding", function() {
return I;
});
a.d(b, "__exportStar", function() {
return p;
});
a.d(b, "__values", function() {
return q;
});
a.d(b, "__read", function() {
return r;
});
a.d(b, "__spread", function() {
return u;
});
a.d(b, "__spreadArrays", function() {
return v;
});
a.d(b, "__spreadArray", function() {
return w;
});
a.d(b, "__await", function() {
return x;
});
a.d(b, "__asyncGenerator", function() {
return y;
});
a.d(b, "__asyncDelegator", function() {
return z;
});
a.d(b, "__asyncValues", function() {
return A;
});
a.d(b, "__makeTemplateObject", function() {
return B;
});
a.d(b, "__importStar", function() {
return C;
});
a.d(b, "__importDefault", function() {
return D;
});
a.d(b, "__classPrivateFieldGet", function() {
return F;
});
a.d(b, "__classPrivateFieldSet", function() {
return G;
});
a.d(b, "__classPrivateFieldIn", function() {
return E;
});
I = Object.create ? function(K, H, R, O) {
var J;
void 0 === O && (O = R);
J = Object.getOwnPropertyDescriptor(H, R);
if (!J || (("get" in J) ? !H.__esModule : J.writable || J.configurable))
J = {
enumerable: !0,
get: function() {
return H[R];
}
};
Object.defineProperty(K, O, J);
} : function(K, H, R, O) {
void 0 === O && (O = R);
K[O] = H[R];
};
L = Object.create ? function(K, H) {
Object.defineProperty(K, "default", {
enumerable: !0,
value: H
});
} : function(K, H) {
K["default"] = H;
};
}, function(t, b, a) {
Object.defineProperty(b, "__esModule", {
value: !0
});
t = a(41);
b.ahc = t;
t = a(635);
b.M1 = t.M1;
t = a(77);
b.eu = t.eu;
b.fk = t.fk;
b.Bz = t.Bz;
t = a(651);
b.zEa = t.zEa;
b.vd = t.vd;
t = a(652);
b.X = t.X;
t = a(653);
b.tib = t.tib;
t = a(654);
b.zab = t.zab;
t = a(323);
b.l = t.l;
b.tha = t.tha;
t = a(655);
b.optional = t.optional;
t = a(656);
b.hp = t.hp;
t = a(657);
b.CJ = t.CJ;
t = a(658);
b.w0 = t.w0;
t = a(659);
b.ddb = t.ddb;
t = a(321);
b.Sha = t.Sha;
t = a(107);
b.id = t.id;
t = a(92);
b.Qp = t.Qp;
t = a(326);
b.qjb = t.qjb;
b.uib = t.uib;
b.Aab = t.Aab;
b.zjb = t.zjb;
t = a(137);
b.UO = t.UO;
a = a(660);
b.vab = a.vab;
}, function(t, b, a) {
var c,
k,
g;
Object.defineProperties(b, {
__esModule: {
value: !0
}
});
b.assert = void 0;
c = a(0);
k = a(123);
g = (function(h) {
function d() {
return null !== h && h.apply(this, arguments) || this;
}
c.__extends(d, h);
return d;
})(Error);
b.assert = function(h, d) {
if (!h)
try {
throw new g(d || "Assertion failed");
} catch (f) {
throw (k.zm.G.error("Assertion failed", {
value: h,
message: d,
stack: f.stack
}), f);
}
};
}, function(t, b) {
var a,
c;
Object.defineProperty(b, "__esModule", {
value: !0
});
b.kz = b.NHa = b.MHa = b.Jga = b.LHa = b.Iga = b.q3 = b.e3 = b.KHa = b.R = b.V = void 0;
(function(k) {
k[k.co = 7001] = "UNKNOWN";
k[k.RRa = 7002] = "UNHANDLED_EXCEPTION";
k[k.bqb = 7003] = "INIT_COMPONENT_LOG_TO_REMOTE";
k[k.zpb = 7004] = "HLS_NOT_SUPPORTED";
k[k.fha = 7010] = "INIT_ASYNCCOMPONENT";
k[k.fqb = 7011] = "INIT_HTTP";
k[k.$pb = 7014] = "INIT_BADMOVIEID";
k[k.DJa = 7020] = "INIT_PLAYBACK_LOCK";
k[k.EJa = 7022] = "INIT_SESSION_LOCK";
k[k.gqb = 7029] = "INIT_POSTAUTHORIZE";
k[k.CJa = 7031] = "INIT_HEADER_MEDIA";
k[k.hqb = 7034] = "INIT_TIMEDTEXT_TRACK";
k[k.Mlb = 7037] = "ASE_SESSION_ERROR";
k[k.Llb = 7038] = "ASE_SEEK_THREW";
k[k.Nlb = 7039] = "ASE_SKIPPED_THREW";
k[k.cqb = 7041] = "INIT_CORE_OBJECTS1";
k[k.dqb = 7042] = "INIT_CORE_OBJECTS2";
k[k.eqb = 7043] = "INIT_CORE_OBJECTS3";
k[k.wJa = 7053] = "INIT_COMPONENT_STORAGE";
k[k.xJa = 7054] = "INIT_COMPONENT_STORAGELOCK";
k[k.tJa = 7058] = "INIT_COMPONENT_MAINTHREADMONITOR";
k[k.gha = 7059] = "INIT_COMPONENT_DEVICE";
k[k.uJa = 7063] = "INIT_COMPONENT_MSL";
k[k.sJa = 7066] = "INIT_COMPONENT_LOGBLOBBATCHER";
k[k.MC = 7067] = "INIT_COMPONENT_PERSISTEDPLAYDATA";
k[k.BJa = 7083] = "INIT_COMPONENT_WEBCRYPTO";
k[k.rJa = 7086] = "INIT_COMPONENT_IDB_VIEWER_TOOL";
k[k.pJa = 7088] = "INIT_COMPONENT_BATTERY_MANAGER";
k[k.oJa = 7089] = "INIT_COMPONENT_ASE";
k[k.wL = 7091] = "INIT_COMPONENT_DRM_CACHE";
k[k.aqb = 7092] = "INIT_COMPONENT_DRM";
k[k.qJa = 7094] = "INIT_COMPONENT_FTL";
k[k.vJa = 7095] = "INIT_COMPONENT_PREPARE_MODEL";
k[k.yJa = 7096] = "INIT_COMPONENT_VIDEO_SESSION_EDGE";
k[k.zJa = 7097] = "INIT_COMPONENT_VIDEO_SESSION_MDX";
k[k.AJa = 7098] = "INIT_COMPONENT_VIDEO_SESSION_TEST";
k[k.BL = 7111] = "MANIFEST";
k[k.UKa = 7117] = "MANIFEST_VERIFY";
k[k.mtb = 7120] = "START";
k[k.yL = 7121] = "LICENSE";
k[k.Yia = 7122] = "RELEASE";
k[k.ntb = 7123] = "STOP";
k[k.pha = 7125] = "KEEPALIVE";
k[k.bsb = 7131] = "PING";
k[k.fpb = 7134] = "ENGAGE";
k[k.Eqb = 7137] = "LOGBLOB";
k[k.bic = 7138] = "PAUSE";
k[k.sic = 7139] = "RESUME";
k[k.eQa = 7140] = "SPLICE";
k[k.rmb = 7142] = "BIND";
k[k.smb = 7144] = "BIND_DEVICE";
k[k.upb = 7145] = "GENERATE_SCREENSHOTS";
k[k.Elb = 7146] = "AD_EVENT";
k[k.fsb = 7202] = "PLAY_INIT_EXCEPTION";
k[k.jia = 7332] = "PLAY_MSE_EME_KEY_STATUS_CHANGE_EXPIRED";
k[k.lsb = 7333] = "PLAY_MSE_EME_KEY_STATUS_CHANGE_INTERNAL_ERROR";
k[k.WMa = 7334] = "PLAY_MSE_EME_KEY_STATUS_CHANGE_OUTPUT_NOT_ALLOWED";
k[k.msb = 7335] = "PLAY_MSE_EME_KEY_STATUS_EXCEPTION";
k[k.kia = 7336] = "PLAY_MSE_EME_KEY_STATUS_CHANGE_OUTPUT_RESTRICTED";
k[k.ksb = 7338] = "PLAY_MSE_EME_KEY_MAPPING_EXCEPTION";
k[k.$Ma = 7351] = "PLAY_MSE_NOTSUPPORTED";
k[k.VMa = 7353] = "PLAY_MSE_DECODER_TIMEOUT";
k[k.lia = 7355] = "PLAY_MSE_SOURCEADD";
k[k.UMa = 7356] = "PLAY_MSE_CREATE_MEDIAKEYS";
k[k.jT = 7357] = "PLAY_MSE_GENERATEKEYREQUEST";
k[k.ZMa = 7361] = "PLAY_MSE_EVENT_ERROR";
k[k.KL = 7362] = "PLAY_MSE_SETMEDIAKEYS";
k[k.rs = 7363] = "PLAY_MSE_EVENT_KEYERROR";
k[k.osb = 7364] = "PLAY_MSE_EME_SESSION_CLOSE";
k[k.psb = 7365] = "PLAY_MSE_GETCURRENTTIME";
k[k.qsb = 7367] = "PLAY_MSE_SETCURRENTTIME";
k[k.rsb = 7371] = "PLAY_MSE_SOURCEAPPEND";
k[k.wsb = 7375] = "PLAY_MSE_UNEXPECTED_SEEKING";
k[k.usb = 7376] = "PLAY_MSE_UNEXPECTED_SEEKED";
k[k.tsb = 7377] = "PLAY_MSE_UNEXPECTED_REWIND";
k[k.ssb = 7381] = "PLAY_MSE_SOURCEBUFFER_ERROR";
k[k.aNa = 7382] = "PLAY_MSE_SOURCEBUFFER_CHANGETYPE";
k[k.gsb = 7391] = "PLAY_MSE_CREATE_MEDIASOURCE";
k[k.hsb = 7392] = "PLAY_MSE_CREATE_MEDIASOURCE_OBJECTURL";
k[k.isb = 7393] = "PLAY_MSE_CREATE_MEDIASOURCE_OPEN";
k[k.XMa = 7394] = "PLAY_MSE_EME_MISSING_DRMHEADER";
k[k.nsb = 7395] = "PLAY_MSE_EME_MISSING_PSSH";
k[k.YMa = 7397] = "PLAY_MSE_EME_NO_PRK_SUPPORT";
k[k.jsb = 7398] = "PLAY_MSE_DURATIONCHANGE_ERROR";
k[k.D3 = 7399] = "PLAY_MSE_SET_LICENSE_ERROR";
k[k.wHa = 7400] = "EXTERNAL";
k[k.C3 = 7500] = "PAUSE_TIMEOUT";
k[k.g3 = 7502] = "INACTIVITY_TIMEOUT";
k[k.Wlb = 7510] = "AUTHORIZATION_EXPIRED";
k[k.Yob = 7700] = "EME_INVALID_KEYSYSTEM";
k[k.iHa = 7701] = "EME_CREATE_MEDIAKEYS_SYSTEMACCESS_FAILED";
k[k.AS = 7702] = "EME_CREATE_MEDIAKEYS_FAILED";
k[k.g2 = 7703] = "EME_GENERATEREQUEST_FAILED";
k[k.pHa = 7704] = "EME_UPDATE_FAILED";
k[k.nHa = 7705] = "EME_KEYSESSION_ERROR";
k[k.mHa = 7706] = "EME_KEYMESSAGE_EMPTY";
k[k.bpb = 7707] = "EME_REMOVE_FAILED";
k[k.$ob = 7708] = "EME_LOAD_FAILED";
k[k.Uob = 7709] = "EME_CREATE_SESSION_FAILED";
k[k.Ega = 7710] = "EME_LDL_RENEWAL_ERROR";
k[k.kHa = 7711] = "EME_INVALID_INITDATA_DATA";
k[k.lHa = 7712] = "EME_INVALID_LICENSE_DATA";
k[k.Zob = 7713] = "EME_LDL_KEYSSION_ALREADY_CLOSED";
k[k.hHa = 7716] = "EME_CLOSE_FAILED";
k[k.Fga = 7717] = "EME_SESSION_CLOSED_UNEXPECTEDLY";
k[k.dpb = 7718] = "EME_SET_SERVER_CERTIFICATE";
k[k.csb = 7800] = "PLAYDATA_STORE_FAILURE";
k[k.fS = 7900] = "BRANCH_PLAY_FAILURE";
k[k.gS = 7901] = "BRANCH_QUEUE_FAILURE";
k[k.JEa = 7902] = "BRANCH_UPDATE_NEXT_SEGMENT_WEIGHTS_FAILURE";
k[k.zmb = 7903] = "BRANCH_CHOICE_MAP_MISSING";
k[k.Orb = 8100] = "PBO_EVENTLOOKUP_FAILURE";
})(a = b.V || (b.V = {}));
(function(k) {
k[k.co = 1001] = "UNKNOWN";
k[k.Bm = 1003] = "EXCEPTION";
k[k.kqb = 1004] = "INVALID_DI";
k[k.Qlb = 1011] = "ASYNCLOAD_EXCEPTION";
k[k.Rlb = 1013] = "ASYNCLOAD_TIMEOUT";
k[k.Dec = 1015] = "ASYNCLOAD_BADCONFIG";
k[k.Olb = 1016] = "ASYNCLOAD_COMPONENT_DUPLICATE";
k[k.Plb = 1017] = "ASYNCLOAD_COMPONENT_MISSING";
k[k.LS = 1101] = "HTTP_UNKNOWN";
k[k.cha = 1102] = "HTTP_XHR";
k[k.IS = 1103] = "HTTP_PROTOCOL";
k[k.HS = 1104] = "HTTP_OFFLINE";
k[k.KS = 1105] = "HTTP_TIMEOUT";
k[k.jG = 1106] = "HTTP_READTIMEOUT";
k[k.LC = 1107] = "HTTP_ABORT";
k[k.PIa = 1108] = "HTTP_PARSE";
k[k.LIa = 1110] = "HTTP_BAD_URL";
k[k.JS = 1111] = "HTTP_PROXY";
k[k.Kha = 1203] = "MSE_AUDIO";
k[k.Lha = 1204] = "MSE_VIDEO";
k[k.Tqb = 1250] = "MSE_MEDIA_ERR_BASE";
k[k.chc = 1251] = "MSE_MEDIA_ERR_ABORTED";
k[k.fhc = 1252] = "MSE_MEDIA_ERR_NETWORK";
k[k.dhc = 1253] = "MSE_MEDIA_ERR_DECODE";
k[k.ghc = 1254] = "MSE_MEDIA_ERR_SRC_NOT_SUPPORTED";
k[k.ehc = 1255] = "MSE_MEDIA_ERR_ENCRYPTED";
k[k.gu = 1260] = "EME_MEDIA_KEYERR_BASE";
k[k.$fc = 1261] = "EME_MEDIA_KEYERR_UNKNOWN";
k[k.Vfc = 1262] = "EME_MEDIA_KEYERR_CLIENT";
k[k.Zfc = 1263] = "EME_MEDIA_KEYERR_SERVICE";
k[k.Yfc = 1264] = "EME_MEDIA_KEYERR_OUTPUT";
k[k.Xfc = 1265] = "EME_MEDIA_KEYERR_HARDWARECHANGE";
k[k.Wfc = 1266] = "EME_MEDIA_KEYERR_DOMAIN";
k[k.agc = 1269] = "EME_MEDIA_UNAVAILABLE_CDM";
k[k.Xob = 1270] = "EME_INTERNAL_ERROR";
k[k.Tob = 1271] = "EME_CLOSED_BY_APPLICATION";
k[k.apb = 1272] = "EME_RELEASE_ACKNOWLEDGED";
k[k.Dga = 1273] = "EME_HARDWARE_CONTEXT_RESET";
k[k.cpb = 1274] = "EME_RESOURCE_EVICTED";
k[k.Wob = 1280] = "EME_ERROR_NODRMSESSSION";
k[k.Vob = 1281] = "EME_ERROR_NODRMREQUESTS";
k[k.Sfc = 1282] = "EME_ERROR_INDIV_FAILED";
k[k.Tfc = 1283] = "EME_ERROR_UNSUPPORTED_MESSAGETYPE";
k[k.epb = 1284] = "EME_TIMEOUT_MESSAGE";
k[k.bgc = 1285] = "EME_TIMEOUT_KEYCHANGE";
k[k.oHa = 1286] = "EME_UNDEFINED_DATA";
k[k.rL = 1287] = "EME_INVALID_STATE";
k[k.Ufc = 1288] = "EME_LDL_DOES_NOT_SUPPORT_PRK";
k[k.jHa = 1289] = "EME_EMPTY_DATA";
k[k.BS = 1290] = "EME_TIMEOUT";
k[k.uhc = 1303] = "NCCP_METHOD_NOT_SUPPORTED";
k[k.xhc = 1305] = "NCCP_PARSEXML";
k[k.zsb = 1309] = "PROCESS_EXCEPTION";
k[k.whc = 1311] = "NCCP_NETFLIXID_MISSING";
k[k.yhc = 1312] = "NCCP_SECURENETFLIXID_MISSING";
k[k.rhc = 1313] = "NCCP_HMAC_MISSING";
k[k.qhc = 1315] = "NCCP_HMAC_MISMATCH";
k[k.phc = 1317] = "NCCP_HMAC_FAILED";
k[k.ohc = 1321] = "NCCP_CLIENTTIME_MISSING";
k[k.nhc = 1323] = "NCCP_CLIENTTIME_MISMATCH";
k[k.gIa = 1331] = "GENERIC";
k[k.krb = 1333] = "NCCP_PROTOCOL_INVALIDDEVICECREDENTIALS";
k[k.lrb = 1337] = "NCCP_PROTOCOL_REDIRECT_LOOP";
k[k.zhc = 1341] = "NCCP_TRANSACTION";
k[k.shc = 1343] = "NCCP_INVALID_DRMTYPE";
k[k.thc = 1344] = "NCCP_INVALID_LICENCE_RESPONSE";
k[k.vhc = 1345] = "NCCP_MISSING_PAYLOAD";
k[k.gic = 1346] = "PROTOCOL_NOT_INITIALIZED";
k[k.fic = 1347] = "PROTOCOL_MISSING_FIELD";
k[k.eic = 1348] = "PROTOCOL_MISMATCHED_PROFILEGUID";
k[k.YC = 1402] = "STORAGE_NODATA";
k[k.Cic = 1403] = "STORAGE_EXCEPTION";
k[k.Kic = 1405] = "STORAGE_QUOTA_NOT_GRANTED";
k[k.Lic = 1407] = "STORAGE_QUOTA_TO_SMALL";
k[k.hQa = 1411] = "STORAGE_LOAD_ERROR";
k[k.ptb = 1412] = "STORAGE_LOAD_TIMEOUT";
k[k.iQa = 1414] = "STORAGE_SAVE_ERROR";
k[k.stb = 1415] = "STORAGE_SAVE_TIMEOUT";
k[k.gja = 1417] = "STORAGE_DELETE_ERROR";
k[k.gQa = 1418] = "STORAGE_DELETE_TIMEOUT";
k[k.Jic = 1421] = "STORAGE_FS_REQUESTFILESYSTEM";
k[k.Gic = 1423] = "STORAGE_FS_GETDIRECTORY";
k[k.Iic = 1425] = "STORAGE_FS_READENTRIES";
k[k.Dic = 1427] = "STORAGE_FS_FILEREAD";
k[k.Fic = 1429] = "STORAGE_FS_FILEWRITE";
k[k.Eic = 1431] = "STORAGE_FS_FILEREMOVE";
k[k.Hic = 1432] = "STORAGE_FS_PARSEJSON";
k[k.rtb = 1451] = "STORAGE_NO_LOCALSTORAGE";
k[k.qtb = 1453] = "STORAGE_LOCALSTORAGE_ACCESS_EXCEPTION";
k[k.Ihc = 1501] = "NTBA_UNKNOWN";
k[k.Hhc = 1502] = "NTBA_EXCEPTION";
k[k.Dhc = 1504] = "NTBA_CRYPTO_KEY";
k[k.Fhc = 1506] = "NTBA_CRYPTO_OPERATION";
k[k.Ehc = 1508] = "NTBA_CRYPTO_KEYEXCHANGE";
k[k.Ghc = 1515] = "NTBA_DECRYPT_UNSUPPORTED";
k[k.iGa = 1553] = "DEVICE_NO_ESN";
k[k.$nb = 1555] = "DEVICE_ERROR_GETTING_ESN";
k[k.Dgc = 1701] = "FORMAT_UNKNOWN";
k[k.npb = 1713] = "FORMAT_XML";
k[k.Egc = 1715] = "FORMAT_XML_CONTENT";
k[k.Bgc = 1721] = "FORMAT_BASE64";
k[k.Cgc = 1723] = "FORMAT_DFXP";
k[k.Mpb = 1801] = "INDEXDB_OPEN_EXCEPTION";
k[k.mJa = 1802] = "INDEXDB_NOT_SUPPORTED";
k[k.Lpb = 1803] = "INDEXDB_OPEN_ERROR";
k[k.nJa = 1804] = "INDEXDB_OPEN_NULL";
k[k.Kpb = 1805] = "INDEXDB_OPEN_BLOCKED";
k[k.Npb = 1807] = "INDEXDB_OPEN_TIMEOUT";
k[k.Jpb = 1808] = "INDEXDB_INVALID_STORE_STATE";
k[k.h3 = 1809] = "INDEXDB_ACCESS_EXCEPTION";
k[k.crb = 1901] = "MSL_UNKNOWN";
k[k.Wqb = 1911] = "MSL_INIT_NO_MSL";
k[k.cLa = 1913] = "MSL_INIT_ERROR";
k[k.Xqb = 1915] = "MSL_INIT_NO_WEBCRYPTO";
k[k.Uqb = 1931] = "MSL_ERROR";
k[k.brb = 1933] = "MSL_REQUEST_TIMEOUT";
k[k.arb = 1934] = "MSL_READ_TIMEOUT";
k[k.Vqb = 1935] = "MSL_ERROR_HEADER";
k[k.hhc = 1936] = "MSL_ERROR_ENVELOPE";
k[k.ihc = 1937] = "MSL_ERROR_MISSING_PAYLOAD";
k[k.bLa = 1957] = "MSL_ERROR_REAUTH";
k[k.Lja = 2103] = "WEBCRYPTO_MISSING";
k[k.pjc = 2105] = "WEBCRYPTOKEYS_MISSING";
k[k.Vtb = 2107] = "WEBCRYPTO_IFRAME_LOAD_ERROR";
k[k.lfc = 2200] = "CACHEDDATA_PARSEJSON";
k[k.hFa = 2201] = "CACHEDDATA_UNSUPPORTED_VERSION";
k[k.mfc = 2202] = "CACHEDDATA_UPGRADE_FAILED";
k[k.GC = 2203] = "CACHEDDATA_INVALID_FORMAT";
k[k.Bec = 3E3] = "ACCOUNT_CHANGE_INFLIGHT";
k[k.Cec = 3001] = "ACCOUNT_INVALID";
k[k.Jfc = 3100] = "DOWNLOADED_MANIFEST_UNAVAILABLE";
k[k.Ifc = 3101] = "DOWNLOADED_MANIFEST_PARSE_EXCEPTION";
k[k.Gfc = 3200] = "DOWNLOADED_LICENSE_UNAVAILABLE";
k[k.Hfc = 3201] = "DOWNLOADED_LICENSE_UNUSEABLE";
k[k.Ffc = 3202] = "DOWNLOADED_LICENSE_EXCEPTION";
k[k.Mic = 3300] = "STORAGE_VA_LOAD_ERROR";
k[k.Nic = 3301] = "STORAGE_VA_LOAD_TIMEOUT";
k[k.Qic = 3302] = "STORAGE_VA_SAVE_ERROR";
k[k.Ric = 3303] = "STORAGE_VA_SAVE_TIMEOUT";
k[k.Oic = 3304] = "STORAGE_VA_REMOVE_ERROR";
k[k.Pic = 3305] = "STORAGE_VA_REMOVE_TIMEOUT";
k[k.gia = 3077] = "PBO_DEVICE_EOL_WARNING";
k[k.MMa = 3078] = "PBO_DEVICE_EOL_FINAL";
k[k.PMa = 3100] = "PBO_DEVICE_RESET";
k[k.OMa = 3101] = "PBO_DEVICE_RELOAD";
k[k.NMa = 3102] = "PBO_DEVICE_EXIT";
k[k.Zrb = 5003] = "PBO_VIEWABLE_OUT_OF_AVAILABILITY_WINDOW";
k[k.Jrb = 5005] = "PBO_ACCOUNT_ON_HOLD";
k[k.Nrb = 5006] = "PBO_CONCURRENT_STREAM_QUOTA_EXCEEDED";
k[k.QMa = 5007] = "PBO_INCORRECT_PIN";
k[k.Wrb = 5008] = "PBO_MOBILE_ONLY";
k[k.$rb = 5009] = "PBO_VIEWABLE_RESTRICTED_BY_PROFILE";
k[k.Srb = 5033] = "PBO_INSUFFICIENT_MATURITY_LEVEL";
k[k.Lrb = 5059] = "PBO_BLACKLISTED_IP";
k[k.Krb = 5070] = "PBO_AGE_VERIFICATION_REQUIRED";
k[k.Mrb = 5080] = "PBO_CHOICE_MAP_ERROR";
k[k.Xrb = 5090] = "PBO_RESTRICTED_TO_TESTERS";
k[k.Urb = 5091] = "PBO_MALFORMED_REQUEST";
k[k.Trb = 5092] = "PBO_INVALID_SERVICE_VERSION";
k[k.Vrb = 5093] = "PBO_MDX_INVALID_CTICKET";
k[k.Rrb = 5094] = "PBO_FREE_PREVIEW_ENDED";
k[k.Yrb = 5095] = "PBO_STREAMING_LOCATION_DISALLOWED";
k[k.Qrb = 5096] = "PBO_EXTRA_MEMBER_STREAM_HOLD";
k[k.Prb = 5097] = "PBO_EXTRA_MEMBER_REMOVED_STREAM_HOLD";
k[k.Inb = 5100] = "DECODER_TIMEOUT_BUFFERING";
k[k.Knb = 5101] = "DECODER_TIMEOUT_PRESENTING";
k[k.Jnb = 5102] = "DECODER_TIMEOUT_PLAYING";
k[k.Aob = 5200] = "DOWNLOADER_IO_ERROR";
k[k.IEa = 5300] = "BRANCHING_SEGMENT_NOTFOUND";
k[k.vmb = 5301] = "BRANCHING_PRESENTER_UNINITIALIZED";
k[k.Qec = 5302] = "BRANCHING_SEGMENT_STREAMING_NOT_STARTED";
k[k.Sfa = 5303] = "BRANCHING_ASE_UNINITIALIZED";
k[k.Mec = 5304] = "BRANCHING_ASE_FAILURE";
k[k.Nec = 5305] = "BRANCHING_MOMENT_FAILURE";
k[k.tmb = 5306] = "BRANCHING_CURRENT_SEGMENT_UNINITIALIZED";
k[k.Pec = 5307] = "BRANCHING_SEGMENT_LASTPTS_UNINIITALIZED";
k[k.wmb = 5308] = "BRANCHING_SEEK_THREW";
k[k.Oec = 5309] = "BRANCHING_PLAY_NOTENOUGHNEXTSEGMENTS";
k[k.umb = 5310] = "BRANCHING_PLAY_TIMEDOUT";
k[k.xmb = 5311] = "BRANCHING_SEGMENT_ALREADYQUEUED";
k[k.ymb = 5312] = "BRANCHING_UPDATE_NEXT_SEGMENT_WEIGHTS_THREW";
k[k.ttb = 5500] = "STUDIO_MUXED_MANIFEST";
k[k.Fha = 5600] = "MANIFEST_HYDRATION_FAILURE";
k[k.Xlb = 5700] = "AUXILIARY_MANIFEST_ERROR_RETRIEVING_PARENT_MANIFEST";
k[k.Ylb = 5701] = "AUXILIARY_MANIFEST_NO_MATCHING_HEACC_AUDIO_STREAM_FOUND";
})(c = b.R || (b.R = {}));
(function(k) {
k[k.afc = 5003] = "BR_VIEWABLE_OUT_OF_AVAILABILITY_WINDOW";
k[k.Rec = 5005] = "BR_ACCOUNT_ON_HOLD";
k[k.Vec = 5006] = "BR_CONCURRENT_STREAM_QUOTA_EXCEEDED";
k[k.Yec = 5033] = "BR_INSUFFICIENT_MATURITY_LEVEL";
k[k.Uec = 5059] = "BR_BLACKLISTED_IP";
k[k.Sec = 5070] = "BR_AGE_VERIFICATION_REQUIRED";
k[k.Zec = 2204] = "BR_PLAYBACK_CONTEXT_CREATION";
k[k.Wec = 2205] = "BR_DRM_LICENSE_AQUISITION";
k[k.$ec = 2206] = "BR_PLAYBACK_SERVICE_ERROR";
k[k.Xec = 2207] = "BR_ENDPOINT_ERROR";
k[k.Tec = 2208] = "BR_AUTHORIZATION_ERROR";
})(b.KHa || (b.KHa = {}));
b.e3 = {
Gmb: "400",
kjc: "401",
iNa: "413"
};
b.q3 = {
zgc: 1,
cjc: 2,
egc: 3,
ijc: 4,
Ugc: 5,
dgc: 6,
Eja: 7,
ggc: 8,
qic: 9,
zic: 10
};
b.Iga = function(k, g, h, d) {
return k == a.C3 || k == a.g3 || k == a.jia && 432E5 <= h || k == a.Fga && g === c.Dga && 0 < Number(d);
};
b.LHa = function(k) {
return 1100 <= k && 1199 >= k;
};
b.Jga = function(k, g) {
return 1 <= k && 9 >= k ? g + k : g;
};
b.MHa = function(k) {
return (0, b.Jga)(k, c.Tqb);
};
b.NHa = function(k) {
return (0, b.Jga)(k, c.gu);
};
b.kz = function(k) {
var g,
h,
d;
g = {};
h = k.errorExternalCode || k.Ef;
d = k.errorDetails || k.Ob;
g.ErrorSubCode = k.errorSubCode || k.wa || c.co;
h && (g.ErrorExternalCode = h);
d && (g.ErrorDetails = d);
return g;
};
}, function(t, b) {
Object.defineProperties(b, {
__esModule: {
value: !0
}
});
b.default = {
UX: function(a) {
for (var c in a) {
a.hasOwnProperty(c) && (this[c] = a[c]);
}
},
reset: function() {}
};
}, function(t, b, a) {
var g;
function c() {
return g.zT.apply(this, arguments) || this;
}
function k(h) {
return new g.ku(h, b.ma);
}
Object.defineProperty(b, "__esModule", {
value: !0
});
b.La = b.aJa = b.Uha = b.rp = b.ma = b.uG = b.timestamp = b.ZTb = b.kba = b.si = b.tc = b.hdb = b.EZb = b.Itb = void 0;
g = a(327);
ka(c, g.zT);
b.Itb = c;
b.EZb = function(h) {
return new g.ku(h, b.uG);
};
b.hdb = function(h) {
return new g.ku(h * b.rp.Ig, b.uG);
};
b.tc = k;
b.si = function(h) {
return new g.ku(h, b.rp);
};
b.kba = function(h) {
return new g.ku(h, b.Uha);
};
b.ZTb = function(h) {
return new g.ku(h, b.aJa);
};
b.timestamp = function(h) {
return k(h);
};
b.uG = new c(1, "\u03bcs");
b.ma = new c(1E3, "ms", b.uG);
b.rp = new c(1E3 * b.ma.Ig, "s", b.uG);
b.Uha = new c(60 * b.rp.Ig, "min", b.uG);
b.aJa = new c(60 * b.Uha.Ig, "hr", b.uG);
b.La = k(0);
}, function(t, b) {
Object.defineProperty(b, "__esModule", {
value: !0
});
b.zS = b.sb = b.zha = b.gk = void 0;
t = b.gk || (b.gk = {});
t[t.lpb = 0] = "FATAL";
t[t.Yf = 1] = "ERROR";
t[t.Kja = 2] = "WARN";
t[t.eha = 3] = "INFO";
t[t.kRa = 4] = "TRACE";
t[t.W = 5] = "DEBUG";
b.zha = "LogFieldBuilderFactorySymbol";
b.sb = "LoggerFactorySymbol";
b.zS = {};
}, function(t, b, a) {
var c;
Object.defineProperties(b, {
__esModule: {
value: !0
}
});
b.mT = b.hIa = void 0;
t = a(0);
t.__exportStar(a(366), b);
t.__exportStar(a(98), b);
t.__exportStar(a(20), b);
t.__exportStar(a(829), b);
t.__exportStar(a(830), b);
t.__exportStar(a(831), b);
t.__exportStar(a(832), b);
t.__exportStar(a(833), b);
t.__exportStar(a(834), b);
t.__exportStar(a(835), b);
t.__exportStar(a(836), b);
c = t.__importDefault(a(837));
b.hIa = c.default;
a = t.__importDefault(a(377));
b.mT = a.default;
}, function(t, b, a) {
var c,
k,
g,
h,
d,
f,
l,
m;
Object.defineProperty(b, "__esModule", {
value: !0
});
b.ya = b.LOa = b.ZW = b.Qi = b.Jj = b.log = b.og = b.NO = b.EXa = b.Ms = b.mA = b.pc = b.NCb = b.vna = b.LCb = b.MCb = b.Fj = b.LR = b.V0 = b.Wh = b.Mc = b.Aa = void 0;
c = a(204);
t = a(6);
k = a(26);
g = a(72);
h = a(79);
d = a(33);
f = a(15);
l = a(142);
m = a(30);
a = a(47);
b.Aa = c.ic.get(m.Ah);
b.Mc = c.ic.get(a.zj);
b.Wh = c.ic.get(g.su);
b.V0 = b.Wh.encode.bind(b.Wh);
b.LR = b.Wh.decode.bind(b.Wh);
b.Fj = c.ic.get(h.az);
b.MCb = b.Fj.encode.bind(b.Fj);
b.LCb = b.Fj.decode.bind(b.Fj);
b.vna = b.Fj.DI.bind(b.Fj);
b.NCb = b.Fj.$ib.bind(b.Fj);
b.pc = c.ic.get(d.zi);
b.mA = function(n) {
n = (0, f.kg)(n) ? (0, b.LR)(n) : n;
return b.pc.encode(n);
};
b.Ms = b.pc.decode.bind(b.pc);
b.EXa = function(n) {
return (0, b.V0)((0, b.Ms)(n));
};
b.NO = function() {
return c.ic.get(k.fz);
};
b.og = c.ic.get(t.sb);
b.log = b.og.mb("General");
b.Jj = function(n, p) {
return b.og.mb(n, void 0, p);
};
b.Qi = function(n, p, q) {
return b.og.mb(p, n, q);
};
b.ZW = function(n, p, q, r) {
return b.og.mb(n, void 0, r, p, q);
};
b.LOa = function(n, p, q) {
return c.ic.get(l.nT)(n, p, q).H0();
};
b.ya = c.ic;
}, function(t) {
var b;
b = {
Ja: function(a) {
return "number" === typeof a;
},
Mj: function(a) {
return "object" === typeof a;
},
kg: function(a) {
return "string" === typeof a;
},
na: function(a) {
return "undefined" === typeof a;
},
Gmc: function(a) {
return "boolean" === typeof a;
},
fd: function(a) {
return "function" === typeof a;
},
qb: function(a) {
return null === a;
},
isArray: function(a) {
return "[object Array]" === Object.prototype.toString.call(a);
},
isFinite: function(a) {
return isFinite(a) && !isNaN(parseFloat(a));
},
has: function(a, c) {
return null !== a && "undefined" !== typeof a && Object.prototype.hasOwnProperty.call(a, c);
},
g2b: function(a) {
var c,
k;
k = [];
if (!b.Mj(a))
throw new TypeError("Object.pairs called on non-object");
for (c in a) {
a.hasOwnProperty(c) && k.push([c, a[c]]);
}
return k;
}
};
b.Df = b.forEach = function(a, c, k) {
if (null === a || "undefined" === typeof a)
return a;
if (a.length === +a.length)
for (var g = 0, h = a.length; g < h; g++) {
c.call(k, a[g], g, a);
}
else
for (g in a) {
b.has(a, g) && c.call(k, a[g], g, a);
}
return a;
};
t.exports = b;
}, function(t, b) {
Object.defineProperties(b, {
__esModule: {
value: !0
}
});
b.W = !1;
}, function(t, b) {
Object.defineProperty(b, "__esModule", {
value: !0
});
b.Xn = {
wkc: "casttv",
voa: "chrome",
Ckc: "chromecast",
mr: "edge",
d1a: "edgeoss",
E2a: "firefox",
ymc: "ie",
opera: "opera",
Afb: "safari",
yib: "tesla"
};
b.pp = {
s6: "android",
y7a: "ios",
TYa: "chromeos",
d9a: "linux",
G9a: "mac",
ifa: "windows"
};
b.d3 = {
QFb: "computer",
phone: "phone",
sac: "tablet"
};
b.Ic = "ConfigSymbol";
}, function(t, b, a) {
b = a(113);
b.JJb = 0;
t.exports = {
EventEmitter: b,
sg: a(825)
};
}, function(t, b) {
Object.defineProperty(b, "__esModule", {
value: !0
});
b.yva = b.localStorage = b.NUb = b.indexedDB = b.iMa = b.hr = b.SC = b.RC = b.URL = b.v3 = b.orb = b.rLa = b.qLa = b.o3 = b.ZS = b.pz = b.ju = b.op = b.erb = b.DL = b.dRa = b.pGa = b.Frb = b.pop = b.forEach = b.filter = b.reduce = b.every = b.slice = b.map = b.sort = b.jA = b.nrb = b.Ch = b.Rw = b.jMa = b.Sw = b.u3 = b.xG = void 0;
t = mb;
b.Me = t.navigator;
b.xG = null === b.Me || void 0 === b.Me ? void 0 : b.Me.userAgent;
b.u3 = t.location;
b.Sw = t.screen;
b.jMa = t.devicePixelRatio;
b.Rw = t.performance;
b.Ch = t.document;
b.nrb = b.Ch.documentElement;
b.jA = Array.prototype;
b.sort = b.jA.sort;
b.map = b.jA.map;
b.slice = b.jA.slice;
b.every = b.jA.every;
b.reduce = b.jA.reduce;
b.filter = b.jA.filter;
b.forEach = b.jA.forEach;
b.pop = b.jA.pop;
b.Frb = Object.create;
b.pGa = Date.now;
b.dRa = String.fromCharCode;
b.DL = Math.floor;
b.erb = Math.ceil;
b.op = Math.round;
b.ju = Math.max;
b.pz = Math.min;
b.ZS = Math.random;
b.o3 = Math.abs;
b.qLa = Math.pow;
b.rLa = Math.sqrt;
b.orb = t.escape;
b.v3 = t.unescape;
b.URL = t.URL || t.webkitURL;
b.RC = t.MediaSource || t.WebKitMediaSource;
b.SC = t.webkitCrypto || t.msCrypto || t.crypto;
b.hr = b.SC && (b.SC.webkitSubtle || b.SC.subtle);
b.iMa = t.webkitCryptokeys || t.msCryptokeys || t.cryptokeys;
try {
b.indexedDB = t.indexedDB;
} catch (a) {
b.NUb = a || "noex";
}
try {
b.localStorage = t.localStorage;
} catch (a) {
b.yva = a || "noex";
}
}, function(t, b, a) {
Object.defineProperties(b, {
__esModule: {
value: !0
}
});
a(0).__exportStar(a(362), b);
}, function(t, b, a) {
Object.defineProperty(b, "__esModule", {
value: !0
});
b.fd = b.D7a = b.vP = b.kg = b.Tua = b.JVb = b.xVb = b.Jua = b.NE = b.Q7a = b.Ja = b.Rua = b.isArray = b.m8a = b.Mj = b.pd = b.is = void 0;
t = a(203);
b.is = t.mG;
b.pd = function(c) {
return b.is.Ug(c);
};
b.Mj = function(c) {
return b.is.aV(c);
};
b.m8a = function(c) {
return b.is.hma(c);
};
b.isArray = function(c) {
return b.is.DD(c);
};
b.Rua = function(c) {
return b.is.KWa(c);
};
b.Ja = function(c, k, g) {
return b.is.ko(c, k, g);
};
b.Q7a = function(c, k, g) {
return b.is.Oma(c, k, g);
};
b.NE = function(c, k, g) {
return b.is.bV(c, k, g);
};
b.Jua = function(c) {
return b.is.NU(c);
};
b.xVb = function(c) {
return b.is.Rzb(c);
};
b.JVb = function(c) {
return b.is.Szb(c);
};
b.Tua = function(c) {
return b.is.LWa(c);
};
b.kg = function(c) {
return b.is.Gu(c);
};
b.vP = function(c) {
return b.is.lo(c);
};
b.D7a = function(c) {
return b.is.d6(c);
};
b.fd = function(c) {
return b.is.f6(c);
};
}, function(t, b) {
Object.defineProperty(b, "__esModule", {
value: !0
});
b.YS = b.l3 = b.Rmb = b.Mmb = b.Omb = b.Pmb = b.VEa = b.Lmb = b.Nmb = b.UEa = b.Qmb = b.Xmb = b.Vmb = b.Wmb = b.Umb = b.Oob = b.Nob = b.Mob = b.Lqb = b.Mqb = b.n3 = b.ZKa = b.$Ka = b.m3 = b.aHa = b.Pob = b.Cga = b.f2 = b.Brb = b.itb = b.WKa = b.Fmb = b.fGa = b.B3 = b.JL = b.A3 = b.VKa = b.Lw = b.Emb = b.HEa = b.zqb = b.Qtb = b.Kqb = b.Jqb = b.btb = b.atb = b.iu = b.Lg = b.FPa = b.Tw = void 0;
b.FEa = b.Zia = void 0;
b.Tw = function() {};
b.FPa = function() {
return !0;
};
b.Lg = {
ca: !0
};
b.iu = 1E3;
b.atb = 86400;
b.btb = 604800;
b.Jqb = 1E4;
b.Kqb = 1E7;
b.Qtb = 1.5;
b.zqb = .128;
b.HEa = 7.8125;
b.Emb = 128;
b.Lw = 145152E5;
b.VKa = 1E5;
b.A3 = "$netflix$player$order";
b.JL = -1;
b.B3 = 1;
b.fGa = ["en-US"];
b.Fmb = 8;
b.WKa = 65535;
b.itb = 65536;
b.Brb = Number.MAX_VALUE;
b.f2 = "playready";
b.Cga = "widevine";
b.Pob = "fps";
b.aHa = "clearkey";
b.m3 = 'audio/mp4; codecs="mp4a.40.5"';
b.$Ka = 'audio/mp4; codecs="mp4a.40.42"';
b.ZKa = 'audio/mp4; codecs="mp4a.a6"';
b.n3 = 'video/mp4; codecs="avc1.640028"';
b.Mqb = 'video/mp4; codecs="hev1.2.6.L153.B0"';
b.Lqb = 'video/mp4; codecs="dvhe.01000000"';
b.Mob = "9A04F079-9840-4286-AB92-E65BE0885F95";
b.Nob = "29701FE4-3CC7-4A34-8C5B-AE90C7439A47";
b.Oob = "EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED";
b.Umb = ["4E657466-6C69-7850-6966-665374726D21", "4E657466-6C69-7848-6165-6465722E7632"];
b.Wmb = "A2394F52-5A9B-4F14-A244-6C427C648DF4";
b.Vmb = "4E657466-6C69-7846-7261-6D6552617465";
b.Xmb = "8974DBCE-7BE7-4C51-84F9-7148F9882554";
b.Qmb = "mp4a";
b.UEa = "enca";
b.Nmb = "ec-3";
b.Lmb = "avc1";
b.VEa = "encv";
b.Pmb = "hvcC";
b.Omb = "hev1";
b.Mmb = "dvhe";
b.Rmb = "vp09";
b.l3 = 0;
b.YS = 1;
b.Zia = "position:relative;width:100%;height:100%;overflow:hidden";
b.FEa = "AAAAJGZ0eXBpc28yAAAAAGlzb21pc28yZGFzaGlzbzZwaWZmAAAAhHV1aWROZXRmbGl4UGlmZlN0cm0hAQAAAAAAAAAEnph8AAAAAACYloAAAAABBq7BRQAAAAAAADQaAAAAAASeVDAAAAAAAAAjXwAAELsAAAAAAAAIKwAACoQxmsddr5Pt+Lrq/zLsOAU/AAAAAAAAHRsAAAOSAAAAAAAAIK0AAAKyAAAAGGZyZWUAAAAAAAAAAAAAAAAAAAAAAAAATXV1aWTi6QKlfkPiQZDaISEYxWQyAAAAAAAAAADesO2iTmV0ZmxpeCBNZWRpYSBMaWJyYXJ5IFZlcnNpb24gODAuMTAuMTcuIAAAAAcebW9vdgAAAHhtdmhkAQAAAAAAAADesO2jAAAAAN6w7aMAmJaAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAr5wc3NoAAAAAJoE8HmYQEKGq5LmW+CIX5UAAAKengIAAAEAAQCUAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AQQBBAEEAQQBBAE8AYwBHAHkAeQA0AEEAQQBBAEEAQQBBAEEAQQBBAEEAQQA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBvAE8ARwBWAHcAUwB0AGYAcABvAHMAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABDAFUAUwBUAE8ATQBBAFQAVABSAEkAQgBVAFQARQBTAD4APABMAGkAdAB0AGwAZQBFAG4AZABpAGEAbgBLAEkARAA+AHQAcgB1AGUAPAAvAEwAaQB0AHQAbABlAEUAbgBkAGkAYQBuAEsASQBEAD4APAAvAEMAVQBTAFQATwBNAEEAVABUAFIASQBCAFUAVABFAFMAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AAAAAExwc3NoAAAAAClwH+Q8x0o0jFuukMdDmkcAAAAsAAAABAAAAAAG5y7LEQCZXm+LFtZ8GJ3qeQbAI/HmYiUnLTrYNjnKW2j/oyoAAAA0cHNzaAAAAADt74upedZKzqPIJ9zVHSHtAAAAFAgBEhAAAAAABucuywAAAAAAAAAAAAADJHRyYWsAAABodGtoZAEAAAcAAAAA3rDtowAAAADesO2jAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAFAAAAAtAAAAAAACxlZHRzAAAAJGVsc3QBAAAAAAAAAQAAAAEGrsFFAAAAAAAGW5sAAQAAAAACiG1kaWEAAAAsbWRoZAEAAAAAAAAA3rDtowAAAADesO2jAJiWgAAAAAAAAAAAVcQAAAAAADRoZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW8gTWVkaWEgSGFuZGxlcgAAAAIgbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAB4HN0YmwAAAAQc3R0cwAAAAAAAAAAAAAAEGN0dHMAAAAAAAAAAAAAAYRzdHNkAAAAAAAAAAEAAAF0ZW5jdgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAUAAtAASAAAAEgAAAAAAAAAAQpBVkMgQ29kaW5nAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAADxhdmNDAU1AH//hACVnTUAf6IAoAt2AiAAAAwAIAAADAYcBAAHH7gAAl/pSYYA8YMRIAQAEaOvssgAAABBwYXNwAAAAAQAAAAEAAAAidXVpZE5ldGZsaXhGcmFtZVJhdGUAAAAAAABdwAPoAAAAYHNpbmYAAAAMZnJtYWF2YzEAAAAUc2NobQAAAABwaWZmAAEAAQAAADhzY2hpAAAAMHV1aWSJdNvOe+dMUYT5cUj5iCVUAAAAAAAAAQgAAAAABucuywAAAAAAAAAAAAAAUHNpbmYAAAAMZnJtYWF2YzEAAAAUc2NobQAAAABjZW5jAAEAAAAAAChzY2hpAAAAIHRlbmMAAAAAAAABCAAAAAAG5y7LAAAAAAAAAAAAAAAQc3RzYwAAAAAAAAAAAAAAFHN0c3oAAAAAAAAAAAAAAAAAAAAQc3RjbwAAAAAAAAAAAAAAPG12ZXgAAAAUbWVoZAEAAAAAAAABBq7BRQAAACB0cmV4AAAAAAAAAAIAAAABAAAAAAAAAAABoQAA";
}, function(t, b) {
function a() {}
Object.defineProperty(b, "__esModule", {
value: !0
});
b.ff = b.lb = b.Mf = b.Zb = b.ja = b.lha = b.EG = b.Ia = void 0;
(function(c) {
c.l9a = "loadedtracks";
c.k9a = "loadedmetadata";
c.loaded = "loaded";
c.error = "error";
c.closed = "closed";
c.jr = "currenttimechanged";
c.Jjb = "unthrottledcurrenttimechanged";
c.Jna = "bufferedtimechanged";
c.dqa = "durationchanged";
c.mDa = "videosizechanged";
c.pcb = "pausedchanged";
c.tya = "playingchanged";
c.G1a = "endedchanged";
c.BN = "busychanged";
c.L6 = "audiotracklistchanged";
c.Rm = "audiotrackchanged";
c.uw = "timedtexttracklistchanged";
c.um = "timedtexttrackchanged";
c.K0 = "trickplayframeschanged";
c.xab = "mutedchanged";
c.blb = "volumechanged";
c.hBa = "showsubtitle";
c.sza = "removesubtitle";
c.Kdc = "watermark";
c.Nua = "isReadyToTransition";
c.gP = "inactivated";
c.v7a = "internalPlaybackError";
c.T7b = "segmentmaploaded";
c.U7b = "segmentpresenting";
c.wXa = "autoplaywasallowed";
c.N6 = "autoplaywasblocked";
c.jBb = "adsstatechanged";
})(b.Ia || (b.Ia = {}));
(b.EG || (b.EG = {})).O_ = "playgraphsegmenttransition";
b.lha = a;
a.bgb = "serverTimeChanged";
(function(c) {
c.oN = "aseReport";
c.mna = "autoplayWasAllowed";
c.Ji = "autoplayWasBlocked";
c.oA = "bufferUnderrun";
c.closed = "closed";
c.oh = "closing";
c.jr = "currentTimeChanged";
c.hE = "downloadComplete";
c.gP = "inactivated";
c.X8a = "licenseAdded";
c.CY = "licensed";
c.FY = "locationSelected";
c.Xva = "manifestClosing";
c.oJ = "manifestPresenting";
c.Qaa = "mediaBufferChanged";
c.xba = "nextBranchingSegmentChosen";
c.Xv = "playbackStart";
c.En = "playbackReady";
c.Pk = "repositioned";
c.eK = "repositioning";
c.Cfb = "safePlayRequested";
c.pK = "segmentPresenting";
c.R_ = "serverSwitch";
c.Zgb = "shouldUpdateVideoDiagInfo";
c.tR = "subtitleError";
c.jCa = "throttledMediaTimeChanged";
c.Kjb = "unthrottledMediaTimeChanged";
c.yR = "timedTextRebuffer";
c.uw = "timedTextTrackListChanged";
c.K0 = "trickPlayFramesChanged";
c.QCa = "updateNextBranchingSegmentWeights";
c.Ycc = "userInitiatedPause";
c.Gkb = "userInitiatedResume";
c.ijb = "tracksHydrated";
})(b.ja || (b.ja = {}));
(function(c) {
c[c.HL = 0] = "NOTLOADED";
c[c.LOADING = 1] = "LOADING";
c[c.Ce = 2] = "NORMAL";
c[c.CLOSING = 3] = "CLOSING";
c[c.CLOSED = 4] = "CLOSED";
})(b.Zb || (b.Zb = {}));
(function(c) {
c[c.Ce = 1] = "NORMAL";
c[c.sd = 2] = "BUFFERING";
c[c.fQa = 3] = "STALLED";
})(b.Mf || (b.Mf = {}));
(function(c) {
c[c.$f = 1] = "WAITING";
c[c.Jc = 2] = "PLAYING";
c[c.Dh = 3] = "PAUSED";
c[c.hs = 4] = "ENDED";
})(b.lb || (b.lb = {}));
(function(c) {
c[c.mz = 0] = "INITIAL";
c[c.HG = 1] = "SEEK";
c[c.e4 = 2] = "TRACK_CHANGED";
c[c.RL = 3] = "SEGMENT_CHANGED";
c[c.j2 = 4] = "FORCE_REBUFFER";
})(b.ff || (b.ff = {}));
}, function(t, b, a) {
var g,
h,
d,
f,
l,
m,
n,
p,
q,
r,
u,
v,
w,
x,
y,
z,
A,
B,
C;
function c(D) {
return (D = b.config.Lbc[k(D)]) ? D : {};
}
function k(D) {
if (D)
return 0 <= D.indexOf("billboard") ? "billboard" : 0 <= D.toLowerCase().indexOf("preplay") ? "preplay" : 0 <= D.indexOf("embedded") ? "embedded" : 0 <= D.indexOf("content-sampling") ? "content-sampling" : 0 <= D.indexOf("video-merch-bob-horizontal") ? "video-merch-bob-horizontal" : 0 <= D.indexOf("mini-modal-horizontal") ? "mini-modal-horizontal" : 0 <= D.indexOf("standard") ? "standard" : 0 <= D.indexOf("branching") ? "branching" : 0 <= D.indexOf("live") ? "live" : D;
}
Object.defineProperty(b, "__esModule", {
value: !0
});
b.TFb = b.GZa = b.FZa = b.Woa = b.HZa = b.Voa = b.config = void 0;
g = a(16);
h = a(43);
d = a(8);
f = a(40);
l = a(23);
m = a(26);
n = a(42);
p = a(25);
a(6);
q = a(13);
r = a(15);
u = a(171);
v = a(50);
w = a(87);
x = a(108);
y = a(51);
z = a(5);
A = a(48);
B = a(19);
C = a(118);
b.HZa = function(D, F) {
var wa,
Ca,
Ba,
N,
Q,
V,
ca,
ra,
Ha;
function G(Ja, Na) {
(0, p.Vg)(Ja, function(Oa, Ua) {
(0, r.fd)(Ua) ? Na[Oa] = Ua.call(void 0, Na[Oa]) : (0, r.Mj)(Ua) && (Na[Oa] = Na[Oa] || ({}), G(Ua, Na[Oa]));
});
}
function E(Ja, Na, Oa, Ua) {
for (var $a = [], sb = 3; sb < arguments.length; ++sb) {
$a[sb - 3] = arguments[sb];
}
return function(kb) {
(0, r.pd)(kb) && (Oa = kb);
(0, l.ib)((0, r.fd)(Ja));
return Ja.apply(void 0, [Na, Oa].concat(ha($a)));
};
}
function I(Ja) {
Ja = Ja.toLowerCase();
N.hasOwnProperty(Ja) && (Ba[Ja] = N[Ja], Q[Ja] = N[Ja]);
return Ja;
}
function L(Ja, Na, Oa) {
var Ua;
Ja = Ja.toLowerCase();
if (Ba.hasOwnProperty(Ja)) {
Ua = Ba[Ja];
try {
Ua = Oa ? Oa(Ua) : Ua;
} catch ($a) {
Ua = void 0;
}
if (void 0 !== Ua)
return Ua;
(0, l.ib)(!1);
d.log.error("Invalid configuration value. Name: " + Ja);
}
return Na;
}
function K(Ja, Na, Oa, Ua) {
return L(Ja, Na, function($a) {
(0, r.kg)($a) && ($a = (0, p.Xj)($a));
if ((0, r.Q7a)($a, Oa, Ua))
return $a;
});
}
function H(Ja, Na, Oa, Ua) {
return L(Ja, Na, function($a) {
(0, r.kg)($a) && ($a = (0, p.Xj)($a));
if ((0, r.NE)($a, Oa, Ua))
return $a;
});
}
function R(Ja, Na, Oa, Ua) {
return L(Ja, Na, function($a) {
(0, r.kg)($a) && ($a = parseFloat($a));
if ((0, r.Ja)($a, Oa, Ua))
return $a;
});
}
function O(Ja, Na, Oa) {
return L(Ja, Na, function(Ua) {
if (Oa ? Oa.test(Ua) : (0, r.kg)(Ua))
return Ua;
});
}
function J(Ja, Na) {
return L(Ja, Na, function(Oa) {
if ("true" == Oa || !0 === Oa)
return !0;
if ("false" == Oa || !1 === Oa)
return !1;
});
}
function M(Ja, Na) {
return L(Ja, Na, function(Oa) {
if ((0, r.kg)(Oa))
return JSON.parse((0, q.v3)(Oa));
if ((0, r.Mj)(Oa))
return Oa;
});
}
function P(Ja, Na, Oa, Ua, $a, sb) {
var kb;
Ja = Ja.toLowerCase();
Ba.hasOwnProperty(Ja) && (kb = Ba[Ja]);
if (!(0, r.pd)(kb))
return Na;
if ((0, r.kg)(kb))
if (kb[0] !== Oa)
kb = Ua(kb);
else
try {
kb = JSON.parse((0, q.v3)(kb));
} catch (Bb) {
kb = void 0;
}
if (void 0 === kb)
return Na;
for (Ja = 0; Ja < $a.length; Ja++) {
if (!$a[Ja](kb))
return Na;
}
return sb ? sb(kb) : kb;
}
function S(Ja, Na, Oa, Ua, $a) {
return P(Ja, Na, "[", function(sb) {
sb = sb.split("|");
for (var kb = sb.length; kb--;) {
sb[kb] = (0, p.Xj)(sb[kb]);
}
return sb;
}, [function(sb) {
return (0, r.isArray)(sb) && 0 < sb.length;
}, function(sb) {
for (var kb = sb.length; kb--;) {
if (!(0, r.NE)(sb[kb], Oa, Ua))
return !1;
}
return !0;
}, function(sb) {
return void 0 === $a || sb.length >= $a;
}]);
}
function U(Ja, Na) {
return P(Ja, Na, "[", function(Oa) {
Oa = (0, r.isArray)(Oa) ? Oa : Oa.split("|");
for (var Ua = Oa.length; Ua--;) {
try {
Oa[Ua] = JSON.parse((0, q.v3)(Oa[Ua]));
} catch ($a) {
Oa = void 0;
break;
}
}
return Oa;
}, [function(Oa) {
return (0, r.isArray)(Oa) && 0 < Oa.length;
}, function(Oa) {
for (var Ua = Oa.length; Ua--;) {
if (!(0, r.pd)(Oa[Ua]) || !(0, r.Mj)(Oa[Ua]))
return !1;
}
return !0;
}]);
}
function T(Ja, Na) {
var Oa;
Oa = W(Ja, []);
return Oa && 0 < Oa.length ? (0, C.Yo)(Oa) : U(Ja, Na);
}
function W(Ja, Na, Oa, Ua) {
return P(Ja, Na, "[", function($a) {
return (0, r.isArray)($a) ? $a : $a.split("|");
}, [function($a) {
return (0, r.isArray)($a) && 0 < $a.length;
}, function($a) {
for (var sb = $a.length; sb--;) {
if (Oa ? !Oa.test($a[sb]) : !(0, r.vP)($a[sb]))
return !1;
}
return !0;
}, function($a) {
return void 0 === Ua || $a.length >= Ua;
}]);
}
function ia(Ja, Na, Oa) {
return P(Ja, Na, "{", function(Ua) {
var $a,
kb,
Bb;
$a = {};
Ua = Ua.split(";");
for (var sb = Ua.length; sb--;) {
kb = Ua[sb];
Bb = kb.indexOf(":");
if (0 >= Bb)
return;
$a[kb.substring(0, Bb)] = kb.substring(Bb + 1);
}
return $a;
}, [function(Ua) {
return (0, r.Mj)(Ua) && 0 < Object.keys(Ua).length;
}, function(Ua) {
if (Oa)
for (var $a in Ua) {
if (!Oa.test(Ua[$a]))
return !1;
}
return !0;
}], function(Ua) {
var $a;
$a = {};
(0, p.ve)($a, Na);
(0, p.ve)($a, Ua);
return $a;
});
}
function pa(Ja) {
var Na;
Na = [];
(0, p.Vg)(Ja, function(Oa, Ua) {
var $a;
try {
$a = "videoapp" === Oa.toLowerCase() ? "[object object]" : JSON.stringify(Ua);
} catch (sb) {
$a = "cantparse";
}
Na.push(Oa + "=" + $a);
});
return Na.join("\n");
}
wa = /^[0-9]+[%]?$/;
Ca = /^[0-9]*$/;
Q = {};
V = d.ya.get(f.mp);
ca = d.ya.get(x.BG);
(function(Ja) {
function Na(Oa) {
Oa.split(",").forEach(function(Ua) {
var $a;
$a = Ua.indexOf("=");
0 < $a && (Ba[Ua.substring(0, $a).toLowerCase()] = Ua.substring($a + 1));
});
}
Ba = {};
(0, p.ve)(Ba, Ja);
D && D.length && q.forEach.call(D, function(Oa) {
(0, r.kg)(Oa) ? Na(Oa) : (0, r.Mj)(Oa) && (0, p.ve)(Ba, Oa, {
LY: !0
});
});
N = (0, p.ve)({}, (0, h.F9)(), {
LY: !0
});
if (Ja = (0, h.Xdb)().cadmiumconfig)
(d.log.info("Config cookie loaded", Ja),
Na(Ja));
if (d.ya.get(A.Hq).p6 || Ba.istestaccount)
((0, p.ve)(Ba, N),
Q = N);
})(F);
b.config = {};
ra = {
pMb: E(J, I("enableXHEAAC"), !1),
o1a: E(J, I("enableDDPlus20"), !0),
n1a: E(J, I("enableDDPlus"), !0),
oO: E(J, I("enableDDPlusAtmos"), !0),
WLb: E(J, I("enableLSSDH"), !0),
RLb: E(J, I("enableHEVC"), !0),
Ybb: E(J, I("overrideEnableHEVC"), !1),
mqa: E(J, I("enableHDR"), !0),
Xbb: E(J, I("overrideEnableHDR"), !0),
Wbb: E(J, I("overrideEnableDV"), !0),
mO: E(J, I("enableAVCHigh"), ca.mO),
Vbb: E(J, I("overrideEnableAVCHigh"), !1),
lMb: E(J, I("enableVP9"), !0),
Zbb: E(J, I("overrideEnableVP9"), !1),
JLb: E(J, I("enableAV1"), !0),
Ubb: E(J, I("overrideEnableAV1"), !1),
$1b: E(J, I("overrideEnableXHEAAC"), !1),
Y1b: E(J, "overrideEnableAllAudioProfiles", !1),
Z1b: E(J, "overrideEnableAllVideoProfiles", !1),
bMb: E(J, I("enablePRK"), !1),
OLb: E(J, I("enableDV"), !0),
r1a: E(J, I("enableHWDRM"), !1),
TLb: E(J, I("enableImageSubs"), !0),
PH: E(T, I("audioProfiles"), ca.PH),
QLb: E(J, I("enableFullHdForWidevineL1"), !1),
jMb: E(J, I("enableUHD"), !0),
Yea: E(H, "videoCapabilityDetectorType", m.Gm.ez),
hna: E(H, "audioCapabilityDetectorType", m.Ew.ez),
Wn: E(T, I("videoProfiles"), ca.Wn),
yWa: E(T, I("additionalVideoProfiles"), []),
uzb: E(W, I("timedTextProfiles"), ca.tw),
tw: function() {
return ra.uzb().filter(function(Ja) {
return Ja === n.Em.lga ? ra.WLb() : Ja === n.Em.GL ? ra.TLb() : !0;
});
},
endpoint: E(J, I("endpoint"), !1),
version: E(O, "version", "unknown"),
SLb: E(J, I("enableHdcp"), !1),
dw: E(J, I("prepareCadmium"), !1),
Wzb: E(J, I("acceptManifestOnPrepareItemParams"), !0),
E3b: E(M, "ppmconfig", {
maxNumberTitlesScheduled: 1
}),
zW: E(J, I("enableLdlPrefetch"), !1),
v1a: E(J, I("enableMediaPrefetch"), !1),
XLb: E(J, I("enableManifestCache"), !0),
cKb: E(J, I("deleteCachedManifestOnPlayback"), !1),
bKb: E(J, I("deleteCachedManifestOnCreate"), !1),
fKb: E(J, I("deleteOtherManifestCacheOnCreate"), !1),
eKb: E(J, I("deleteOtherLdlCacheOnCreate"), !1),
boc: E(H, I("periodicPrepareLogsIntervalMilliseconds"), 36E5),
Z3b: E(H, I("prepareManifestCacheMaxCount"), 50),
X3b: E(H, I("prepareLdlCacheMaxCount"), 30),
mdb: E(H, I("prepareManifestExpiryMilliseconds"), 12E5),
Y3b: E(H, I("prepareLdlExpiryMilliseconds"), 78E4),
R3b: E(H, I("prefetcherMaxWishlistSize"), 10),
Q3b: E(H, I("prefetcherBudgetInBytes"), Infinity),
S3b: E(J, I("prefetcherOverrideItemPriority"), !0),
W3b: E(O, I("prepareInsertStrategyPersistentTasks"), "append", /^(prepend|append|ignore)$/),
Spc: E(M, "videoApp"),
FF: E(M, "storageRules"),
W8: E(J, "ftlEnabled", ca.W8),
Sta: E(H, I("imageSubsResolution"), 0),
xUb: E(H, I("imageSubsMaxBuffer"), ca.TYb.da(y.Fw), 0),
FV: E(J, I("captureBatteryStatus"), !1),
tPb: E(H, I("getBatteryApiTimeoutMilliseconds"), 5E3),
yn: E(O, I("keySystemId"), ca.yn),
F8a: E(W, I("keySystemList"), void 0, void 0),
gDa: E(J, I("validateKeySystemAccess"), !1),
IZb: E(H, I("hdcpGlobalTimeout1"), 1E4),
JZb: E(H, I("hdcpGlobalTimeout2"), 1E4),
unc: E(H, I("hdcpQueryTimeout1"), 1E3),
vnc: E(H, I("hdcpQueryTimeout2"), 1E3),
T$a: E(H, I("hdcpQueryTimeout2"), 100),
KZb: E(J, I("microsoftHwdrmRequiresHevc"), !1),
S$a: E(J, I("microsoftClearLeadRequiresSwdrm"), !1),
FZb: E(J, I("microsoftEnableDeviceInfo"), !1),
GZb: E(J, I("microsoftEnableHardwareInfo"), !1),
HZb: E(J, I("microsoftEnableHardwareReset"), !1),
Mcc: E(J, I("useHevcCodecForDolbyVision"), !1),
ZLb: E(J, I("enableMediaCapabilities"), !1),
D3b: E(J, I("powerEfficientForVideo"), !1),
$Lb: E(J, I("enableMediaCapabilitiesSourceBufferCheck"), !1),
VXb: E(J, "logMediaPipelineStatus", !1),
s_: E(J, I("renderDomDiagnostics"), !0),
u9a: function() {
return -1;
},
CP: E(K, I("logDisplayMaxEntryCount"), ca.CP, -1),
aYb: E(K, I("logToConsoleLevel"), -1),
lkc: E(K, I("bladerunnerCmdHistorySize"), 10),
NA: function() {
return V.NA;
},
Cva: E(J, "logErrorIfEsnNotProvided", !0),
sqa: E(J, "enforceSinglePlayback", ca.sqa),
j8: E(J, "enforceSingleSession", ca.j8),
Joa: E(J, "closeOtherPlaybacks", !0),
aCb: E(H, "asyncLoadTimeout", 15E3, 1),
jYb: E(H, "mainThreadMonitorPollRate", 0),
TI: function() {
return V.TI;
},
GN: function() {
return V.GN;
},
O0: function() {
return V.O0;
},
Nkb: E(H, I("verbosePlaybackInfoDenominator"), 0),
Zca: E(J, "renderTimedText", !0),
F3b: E(J, "preBufferTimedText", !0),
lNb: E(J, "fatalOnTimedTextLoadError", !0),
Rib: E(ia, "timedTextStyleDefaults", {}),
oCa: E(ia, "timedTextStyleOverrides", {}),
sea: E(ia, "timedTextFontFamilyMapping", ca.sea || ({
"default": "font-family:Arial,Helvetica;font-weight:bolder"
})),
zR: E(H, "timedTextSimpleFallbackThreshold", ca.zR.da(y.Fw)),
fP: E(W, I("imscLanguageList"), ca.fP, []),
paa: E(W, I("lessBoldLanguageList"), ca.paa, []),
tpa: E(O, I("customDfxpUrl")),
iMb: E(J, I("enableSubtitleTrackerLogging"), !1),
g8b: E(J, I("sendSubtitleQoeLogblobOnMidplay"), !1),
eoa: E(S, "cdnIdWhiteList", []),
doa: E(S, "cdnIdBlackList", []),
qra: E(O, I("forceAudioTrack")),
ura: E(O, I("forceTimedTextTrack")),
aZb: E(H, I("maxRetriesTimedTextDownload"), 0),
Qac: E(H, I("timedTextRetryInterval"), 8E3),
w$b: E(O, "storageType", "idb", /^(none|fs|idb|ls)$/),
q9a: E(H, "lockExpiration", 1E4),
TXb: E(H, "lockRefresh", 3E3),
lEb: E(J, "captureUnhandledExceptions", !0),
wUb: E(J, "ignoreUnhandledExceptionDuringPlayback", !0),
Obc: E(J, "unhandledExceptionsArePlaybackErrors", !1),
Fjb: E(O, "unhandledExceptionSource", ""),
j4b: E(J, "preserveLastFrame", !1),
RZb: E(H, "minBufferingTimeInMilliseconds", 4E3),
H4b: E(H, "progressBackwardsGraceTimeMilliseconds", 4E3),
I4b: E(H, "progressBackwardsMinPercent", 10),
YCb: E(O, I("bookmarkIgnoreBeginning"), "0", wa),
ZCb: E(O, I("bookmarkIgnoreEnd"), "5%", wa),
$Cb: E(O, I("bookmarkIgnoreEndForBranching"), "60000", wa),
HP: E(H, "maxParallelConnections", 3),
Eza: E(J, "reportThroughputInLogblobs", !0),
ky: E(H, "minAudioMediaRequestDuration", 16E3),
PZb: E(H, "minAudioMediaRequestDurationBranching", 0),
AB: E(H, "minVideoMediaRequestDuration", 4E3),
ZZb: E(H, "minVideoMediaRequestDurationVariableGOP", 0),
XZb: E(H, "minVideoMediaRequestDurationBranching", 0),
aba: E(H, "minAudioMediaRequestSizeBytes", 0),
iba: E(H, "minVideoMediaRequestSizeBytes", 0),
mLb: E(J, "droppedFrameRateFilterEnabled", !1),
nLb: E(H, "droppedFrameRateFilterMaxObservation", 60, 10, 1E3),
pLb: E(function(Ja, Na, Oa, Ua, $a, sb) {
return P(Ja, Na, "[", function(kb) {
kb = kb.split(";");
for (var Bb = kb.length; Bb--;) {
kb[Bb] = kb[Bb].split("|");
for (var Pa = kb[Bb].length; Pa--;) {
kb[Bb][Pa] = (0, p.Xj)(kb[Bb][Pa]);
}
}
return kb;
}, [function(kb) {
return (0, r.isArray)(kb) && 0 < kb.length;
}, function(kb) {
for (var Bb = kb.length; Bb-- && void 0 !== kb;) {
if (!(0, r.isArray)(kb[Bb]))
return !1;
for (var Pa = kb[Bb].length; Pa--;) {
if (!(0, r.NE)(kb[Bb][Pa], Oa, Ua))
return !1;
}
}
return !0;
}, function(kb) {
if (void 0 !== $a)
for (var Bb = kb.length; Bb--;) {
if ($a !== kb[Bb].length)
return !1;
}
return !0;
}, function(kb) {
return void 0 === sb || kb.length >= sb;
}]);
}, "droppedFrameRateFilterPolicy", [[3, 15], [6, 9], [9, 2], [15, 1]], void 0, void 0, 2, 0),
oLb: E(H, "droppedFrameRateFilterMinHeight", 384),
qLb: E(S, "droppedFramesPercentilesList", []),
LZb: E(J, "microsoftScreenSizeFilterEnabled", !1),
HWb: E(J, "keyStatusFilterEnabled", !1),
p6a: E(H, "hdcpEngagementWaitTime", 0),
Kbc: E(J, "uiLabelFilterEnabled", !0),
Jbc: E(M, "uiLabelFilter", {}),
OJb: E(H, I("defaultVolume"), 100, 0, 100),
mwa: E(H, I("maxPlaybackRate"), 2, 0, 16),
f2a: E(J, "fastForwardAds", !1),
B0a: E(J, "disableVideoRightClickMenu", !1),
eba: E(H, "minDecoderBufferMilliseconds", 1E3, 0, g.Lw),
gF: E(H, "optimalDecoderBufferMilliseconds", 5E3, 0, g.Lw),
Fxa: E(H, "optimalDecoderBufferMillisecondsBranching", 3E3, 0, g.Lw),
Vba: E(H, "optimalDecoderBufferMillisecondsLive", 2E3, 0, g.Lw),
$E: E(H, "minimumTimeBeforeBranchDecision", 3E3, 0, g.Lw),
jab: E(H, "minimumTimeBeforeDelayedSeekToQueuedSegment", 500, 0, g.Lw),
uB: E(H, "maxDecoderBufferMilliseconds", ca.uB.da(z.ma), 0, g.Lw),
a0a: E(H, "decoderTimeoutMilliseconds", 1E4, 1),
Pab: E(H, "noRenderTimeoutMilliseconds", 0),
z2b: E(H, "pauseTimeoutLimitMilliseconds", 18E5),
Uta: E(H, "inactivityMonitorInterval", 3E4, 0),
Vzb: E(S, "abrdelLogPointsSeconds", [15, 30, 60, 120], 0, void 0, 4),
rO: E(J, "enableTrickPlay", !1),
aBb: E(S, "additionalDownloadSimulationParams", [2E3, 2E3, 100], 0, void 0, 3),
tbc: E(H, "trickPlayHighResolutionBitrateThreshold", 1E3),
ubc: E(H, "trickPlayHighResolutionThresholdMilliseconds", 1E4),
xbc: E(R, "trickplayBufferFactor", .5),
sbc: E(H, "trickPlayDownloadRetryCount", 1),
awa: E(O, "marginPredictor", "simple", /^(simple|scale|iqr|percentile|ci)$/),
SMb: E(W, "experimentalFilter", ["throughput-wssl"]),
woa: E(O, "ciPredictorSource", "throughput-ci"),
rBa: E(O, "simulationDurationStrategy", "default"),
Twa: E(O, "networkMeasurementGranularity", "video_location", /^(location|video_location)$/),
ZIa: E(M, "HistoricalTDigestConfig", {
maxc: 25,
rc: "ewma",
c: .5,
hl: 7200
}),
l$a: E(K, "maxIQRSamples", Infinity),
bab: E(K, "minIQRSamples", 5),
Akb: E(J, "useResourceTimingAPI", !1),
tUb: E(J, "ignoreFirstByte", !0),
vwa: E(J, "mediaRequestAsyncLoadStart", ca.vwa),
Vcc: E(J, "useXHROnLoadStart", !1),
Oqa: E(S, "failedDownloadRetryWaitsASE", [10, 200, 500, 1E3, 2E3, 4E3]),
o7: E(H, "connectTimeoutMilliseconds", 8E3, 500),
Zwa: E(H, "noProgressTimeoutMilliseconds", 8E3, 500),
Qib: E(H, "timedTextDownloadRetryCountBeforeCdnSwitch", 3),
Inc: E(H, "netflixRequestExpiryTimeout", 0),
Ldc: E(J, "webkitDecodedFrameCountIncorrectlyReported", !1),
N7b: E(H, "seekBackOnAudioTrackChangeMilliseconds", 8E3),
kea: E(W, I("supportedAudioTrackTypes"), [], void 0, 1),
z$: E(H, "initialLogFlushTimeout", 5E3),
Ncb: E(O, "playdataPersistKey", V.NA ? "unsentplaydatatest" : "unsentplaydata"),
Soc: E(J, "sendPersistedPlaydata", !0),
g3b: E(H, "playdataPersistIntervalMilliseconds", 4E3),
doc: E(H, "playdataSendDelayMilliseconds", 1E4),
Toc: E(J, "sendPlaydataBackupOnInit", !0),
YXb: E(W, "logPerformanceTiming", ("navigationStart redirectStart fetchStart secureConnectionStart requestStart domLoading").split(" ")),
U$a: E(J, "midplayEnabled", !0),
Zaa: E(H, "midplayIntervalMilliseconds", 3E5),
V$a: E(S, "midplayKeyPoints", [15E3, 3E4, 6E4, 12E4]),
b8: E(H, "downloadReportDenominator", 0),
bLb: E(H, "downloadReportInterval", 3E5),
t9a: E(H, "logConfigApplyDenominator", 0),
NXa: E(ia, I("bookmarkByMovieId"), {}),
UW: E(J, I("forceLimitedDurationLicense"), !1),
RE: E(H, I("licenseRenewalRequestDelay"), 0),
bya: E(H, I("persistedReleaseDelay"), 1E4),
Umc: E(J, I("limitedDurationFlagOverride"), void 0),
Bfb: E(H, "safariPlayPauseWorkaroundDelay", 100),
Wdc: E(H, "workaroundValueForSeekIssue", 1200),
aoa: E(J, I("callEndOfStream"), ca.aoa),
L2b: E(J, "performRewindCheck", !0),
nNb: E(J, "fatalOnUnexpectedSeeking", !0),
mNb: E(J, "fatalOnUnexpectedSeeked", !0),
c9b: E(J, I("setVideoElementSize")),
pFb: E(J, I("clearVideoSrc"), !0),
o0a: E(H, I("delayPlayPause"), 0),
$t: E(J, I("useTypescriptEme"), !1),
qkb: E(J, I("useEncryptedEvent"), !0),
rW: E(O, I("drmPersistKey"), "unsentDrmData"),
Ddb: E(J, I("promiseBasedEme"), !1),
i0b: E(J, I("nudgeSourceBuffer"), !1),
sAa: E(K, I("seekDelta"), 1),
UZ: E(J, I("preciseSeeking"), !1),
H3b: E(J, I("preciseSeekingOnTwoCoreDevice"), !1),
n0a: E(ia, I("delayErrorHandling")),
ql: E(O, "esn", ""),
j2a: E(O, "fesn", ""),
dMb: E(J, I("enablePerformanceLogging"), !1),
q1a: E(J, I("enableEmeVerboseLogging"), !1),
appId: E(O, "appId", "", Ca),
sessionId: E(O, "sessionId", "", Ca),
foa: E(O, "cdnProxyUrl"),
Scc: E(J, "usePlayReadyHeaderObject", !1),
P2a: E(H, "forceXhrErrorResponseCode", void 0),
mr: {
Enc: E(O, "mslApiPath", "/msl/"),
noc: E(O, "proxyPath", ""),
Py: E(O, "uiVersion"),
Iea: E(O, "uiPlatform"),
xkc: function() {
return "0";
},
yya: E(W, "preferredLanguages", g.fGa, /^[a-zA-Z-]{2,5}$/, 1),
oOb: E(O, I("forceDebugLogLevel"), void 0, /^(ERROR|WARN|INFO|TRACE)$/),
dac: E(J, "supportPreviewContentPin", !0),
eac: E(J, "supportWatermarking", !0),
F9b: E(J, "showAllSubDubTracks", !1),
Glc: E(J, I("failOnGuidMismatch"), !1)
},
Ica: {
enabled: E(J, "qcEnabled", !1),
Wo: E(O, "qcPackageId", "")
},
Zt: E(J, "useRangeHeader", !1),
AW: E(J, "enableMilestoneEventList", !0),
xCb: E(ia, "authenticationKeyNames", (0, p.ve)({
e: "DKE",
h: "DKH",
w: "DKW",
s: "DKS"
})),
pac: E(O, "systemKeyWrapFormat"),
z9b: E(J, "shouldSendUserAuthData", !0),
FAa: E(J, "sendUserAuthIfRequired", ca.FAa),
t9b: E(J, "shouldClearUserData", !1),
KR: E(J, "usesMsl", !0),
q_b: E(J, "mslDeleteStore", !1),
s_b: E(J, "mslPersistStore", !0),
oGb: E(J, "correctNetworkForShortTitles", !0),
C3b: E(J, "postplayHighInitBitrate", !1),
jac: E(J, "supportsUnequalizedDownloadables", !0),
V_a: E(H, I("debugAseDenominator"), 100),
B6: E(H, "aseAudioBufferSizeBytes", ca.B6.da(y.Fw)),
E6: E(H, "aseVideoBufferSizeBytes", ca.E6.da(y.Fw)),
Rv: E(H, "minInitVideoBitrate", 560),
Gwa: E(H, "minHCInitVideoBitrate", 560),
wB: E(H, "maxInitVideoBitrate", Infinity),
dZ: E(H, "minInitAudioBitrate", 0),
bZ: E(H, "minHCInitAudioBitrate", 0),
OY: E(H, "maxInitAudioBitrate", 65535),
$aa: E(H, "minAcceptableVideoBitrate", 235),
ZE: E(H, "minRequiredBuffer", 3E4),
kj: E(H, "minPrebufSize", 7800),
dba: E(H, "minCheckBufferingCompleteInterval", 999999),
gza: E(R, "rebufferingFactor", 1),
Fr: E(H, "maxBufferingTime", 2600),
bDa: E(J, "useMaxPrebufSize", !0),
Mv: E(H, "maxPrebufSize", 45E3),
owa: E(H, "maxRebufSize", Infinity),
w$: E(U, "initialBitrateSelectionCurve", null),
c7a: E(H, "initSelectionLowerBound", 560),
d7a: E(H, "initSelectionUpperBound", 1050),
y0: E(H, "throughputPercentForAudio", 15),
sna: E(H, "bandwidthMargin", 10),
tna: E(J, "bandwidthMarginContinuous", !1),
una: E(U, "bandwidthMarginCurve", [{
m: 65,
b: 8E3
}, {
m: 65,
b: 3E4
}, {
m: 50,
b: 6E4
}, {
m: 45,
b: 9E4
}, {
m: 40,
b: 12E4
}, {
m: 20,
b: 18E4
}, {
m: 5,
b: 24E4
}]),
Yoa: E(H, "conservBandwidthMargin", 20),
dCa: E(J, "switchConfigBasedOnInSessionTput", !1),
PV: E(H, "conservBandwidthMarginTputThreshold", 0),
Zoa: E(U, "conservBandwidthMarginCurve", [{
m: 80,
b: 8E3
}, {
m: 80,
b: 3E4
}, {
m: 70,
b: 6E4
}, {
m: 60,
b: 9E4
}, {
m: 50,
b: 12E4
}, {
m: 30,
b: 18E4
}, {
m: 10,
b: 24E4
}]),
qib: E(J, "switchAlgoBasedOnHistIQR", !1),
HF: E(O, "switchConfigBasedOnThroughputHistory", "none", /^(none|iqr|avg)$/),
nwa: E(K, "maxPlayerStateToSwitchConfig", -1),
Nva: E(O, "lowEndMarkingCriteria", "none", /^(none|iqr|avg)$/),
hha: E(R, "IQRThreshold", .5),
Hta: E(O, "histIQRCalcToUse", "simple"),
Nv: E(H, "maxTotalBufferLevelPerSession", 0),
xW: E(J, "enableCombinedPlaygraphs", !0),
sI: E(J, "enableAdPlaygraphs", !0),
jda: E(J, "retainSbrOnFade", !1),
Hqa: E(W, "excludedContentPlaygraphIds", []),
g8: E(J, "enableDiscontiguousBuffering", !1),
sra: E(S, "forceImmediateTransitionTypeForTitles", []),
rra: E(H, "forceImmediateTransitionExitZone", 0),
Pea: E(J, "useBufferSizeLimiter", !1),
aDa: E(J, "useLegacyFragmentRounding", !1),
x6a: E(H, "highWatermarkLevel", 3E4),
Zib: E(H, "toStableThreshold", 3E4),
wea: E(H, "toUnstableThreshold", ca.wea.da(z.ma)),
uBa: E(J, "skipBitrateInUpswitch", !1),
tDa: E(H, "watermarkLevelForSkipStart", 8E3),
h$: E(H, "highStreamRetentionWindow", 9E4),
yaa: E(H, "lowStreamTransitionWindow", 51E4),
Cta: E(H, "highStreamRetentionWindowUp", 3E5),
Pva: E(H, "lowStreamTransitionWindowUp", 3E5),
Bta: E(H, "highStreamRetentionWindowDown", 6E5),
Ova: E(H, "lowStreamTransitionWindowDown", 0),
Ata: E(R, "highStreamInfeasibleBitrateFactor", .5),
rB: E(H, "lowestBufForUpswitch", 15E3),
taa: E(H, "lockPeriodAfterDownswitch", 15E3),
Rva: E(H, "lowWatermarkLevel", 25E3),
by: E(H, "lowestWaterMarkLevel", 2E4),
Sva: E(J, "lowestWaterMarkLevelBufferRelaxed", !1),
Uaa: E(R, "mediaRate", 1),
sJ: E(H, "maxTrailingBufferLen", 1E4),
hV: E(H, "audioBufferTargetAvailableSize", 262144),
Z0: E(H, "videoBufferTargetAvailableSize", 1048576),
B$a: E(H, "maxVideoTrailingBufferSize", 8388608),
d$a: E(H, "maxAudioTrailingBufferSize", 393216),
z8: E(R, "fastUpswitchFactor", 3),
Pqa: E(R, "fastDownswitchFactor", 1),
hq: E(H, "maxMediaBufferAllowed", 24E4),
pBa: E(J, "simulatePartialBlocks", !0),
bhb: E(J, "simulateBufferFull", !0),
$oa: E(J, "considerConnectTime", !1),
Xoa: E(R, "connectTimeMultiplier", 1),
A9a: E(H, "lowGradeModeEnterThreshold", 12E4),
B9a: E(H, "lowGradeModeExitThreshold", 9E4),
g$a: E(H, "maxDomainFailureWaitDuration", 3E4),
c$a: E(H, "maxAttemptsOnFailure", 18),
W1a: E(J, "exhaustAllLocationsForFailure", !0),
p$a: E(H, "maxNetworkErrorsDuringBuffering", 20),
Daa: E(H, "maxBufferingTimeAllowedWithNetworkError", 12E4),
e2a: E(H, "fastDomainSelectionBwThreshold", 2E3),
Dib: E(H, "throughputProbingEnterThreshold", 4E4),
Eib: E(H, "throughputProbingExitThreshold", 34E3),
o9a: E(H, "locationProbingTimeout", 1E4),
m2a: E(H, "finalLocationSelectionBwThreshold", 1E4),
Bib: E(R, "throughputHighConfidenceLevel", .75),
Cib: E(R, "throughputLowConfidenceLevel", .4),
x1a: E(J, "enablePerfBasedLocationSwitch", !1),
fw: E(J, "probeServerWhenError", !0),
Jya: E(H, "probeRequestTimeoutMilliseconds", 8E3),
hA: E(J, "allowSwitchback", !0),
ZJ: E(H, "probeDetailDenominator", 100),
Eaa: E(H, "maxDelayToReportFailure", 300),
zva: E(H, "locationStatisticsUpdateInterval", 6E4),
YZa: E(J, "countGapInBuffer", !1),
EWa: E(J, "allowCallToStreamSelector", !0),
XXa: E(H, "bufferThresholdForAbort", 1E4),
$Yb: E(H, "maxResponsesInitialTput", 6),
s1a: E(J, "enableInitialTputLogging", !1),
dya: E(H, "pipelineScheduleTimeoutMs", 2),
xB: E(H, "maxPartialBuffersAtBufferingStart", 2),
pwa: E(H, "maxStreamingSkew", 4E3),
lwa: E(H, "maxPendingBufferPercentage", 10),
f$: E(H, "headerRequestSize", 4096),
zqa: E(J, "estimateHeaderSize", !1),
$Y: E(H, "minBufferLenForHeaderDownloading", 1E4),
E_: E(H, "reserveForSkipbackBufferMs", 1E4),
lxa: E(H, "numExtraFragmentsAllowed", 2),
Ir: E(J, "pipelineEnabled", !1),
mhb: E(H, "socketReceiveBufferSize", 0),
J6: E(H, "audioSocketReceiveBufferSize", 32768),
QR: E(H, "videoSocketReceiveBufferSize", 65536),
yta: E(H, "headersSocketReceiveBufferSize", 32768),
Nea: E(H, "updatePtsIntervalMs", 1E3),
Gna: E(H, "bufferTraceDenominator", 100),
yN: E(H, "bufferLevelNotifyIntervalMs", 2E3),
pN: E(H, "aseReportDenominator", 0),
C6: E(H, "aseReportIntervalMs", 3E5),
KLb: E(J, "enableAbortTesting", !1),
Tzb: E(H, "abortRequestFrequency", 8),
TBa: E(H, "streamingStatusIntervalMs", 2E3),
QB: E(H, "prebufferTimeLimit", 24E4),
cba: E(H, "minBufferLevelForTrackSwitch", 2E3),
Xxa: E(H, "penaltyFactorForLongConnectTime", 2),
Lva: E(H, "longConnectTimeThreshold", 200),
Fma: E(H, "additionalBufferingLongConnectTime", 2E3),
Gma: E(H, "additionalBufferingPerFailure", 8E3),
l_: E(H, "rebufferCheckDuration", 6E4),
u1a: E(J, "enableLookaheadHints", !1),
x9a: E(H, "lookaheadFragments", 2),
LA: E(J, "enableOCSideChannel", !0),
y3: E(M, "OCSCBufferQuantizationConfig", {
lv: 5,
mx: 240
}),
Rjb: E(J, "updateDrmRequestOnNetworkFailure", !1),
m0a: E(J, "deferAseScheduling", !1),
f$a: E(H, "maxDiffAudioVideoEndPtsMs", 16E3),
K7: E(H, "defaultHeaderCacheSize", 4),
J7: E(H, "defaultHeaderCacheDataPrefetchMs", 8E3),
EJ: E(J, "neverWipeHeaderCache", !0),
Swa: E(H, "networkFailureResetWaitMs", 2E3),
Rwa: E(H, "networkFailureAbandonMs", 6E4),
Kaa: E(H, "maxThrottledNetworkFailures", 3),
pea: E(H, "throttledNetworkFailureThresholdMs", 200),
Qva: E(K, "lowThroughputThreshold", 400),
Gqa: E(J, "excludeSessionWithoutHistoryFromLowThroughputThreshold", !1),
rab: E(J, "mp4ParsingInNative", !1),
ohb: E(J, "sourceBufferInOrderAppend", !0),
hK: E(J, "requireAudioStreamToEncompassVideo", !0),
DWa: E(J, "allowAudioToStreamPastVideo", !0),
Ni: E(J, "enableManagerDebugTraces", !1),
N9a: E(H, "managerDebugMessageInterval", 1E3),
M9a: E(H, "managerDebugMessageCount", 20),
dbb: E(J, "notifyManifestCacheEom", !1),
Fna: E(H, "bufferThresholdToSwitchToSingleConnMs", 18E4),
Ena: E(H, "bufferThresholdToSwitchToParallelConnMs", 12E4),
hca: E(H, "periodicHistoryPersistMs", 3E5),
vda: E(H, "saveVideoBitrateMs", 18E4),
TWa: E(J, "appendMediaRequestOnComplete", !0),
dfa: E(J, "waitForDrmToAppendMedia", !1),
L8: E(J, I("forceAppendHeadersAfterDrm"), !1),
mOb: E(J, I("forceAppendEncryptedStreamHeaderFirst"), !0),
j5b: E(J, I("reappendRequestsOnSkip"), !1),
w_b: E(H, "netIntrStoreWindow", 36E3),
TZb: E(H, "minNetIntrDuration", 8E3),
iNb: E(H, "fastHistoricBandwidthExpirationTime", 10368E3),
GCb: E(H, "bandwidthExpirationTime", 5184E3),
fNb: E(H, "failureExpirationTime", 86400),
UTb: E(H, "historyTimeOfDayGranularity", 4),
RMb: E(J, "expandDownloadTime", !1),
f_b: E(H, "minimumMeasurementTime", 500),
e_b: E(H, "minimumMeasurementBytes", 131072),
Fac: E(H, "throughputMeasurementTimeout", 2E3),
TUb: E(H, "initThroughputMeasureDataSize", 262144),
Gac: E(O, "throughputPredictor", "ewma"),
Eac: E(H, "throughputMeasureWindow", 5E3),
Kac: E(H, "throughputWarmupTime", 5E3),
Dac: E(H, "throughputIQRMeasureWindow", 5E3),
wqb: E(H, "IQRBucketizerWindow", 15E3),
VFb: E(H, "connectTimeHalflife", 10),
$6b: E(H, "responseTimeHalflife", 10),
TTb: E(H, "historicBandwidthUpdateInterval", 2E3),
d_b: E(H, "minimumBufferToStopProbing", 1E4),
rAa: E(O, "secondThroughputEstimator", "none"),
Lfb: E(K, "secondThroughputMeasureWindowInMs", Infinity),
PLb: E(W, "enableFilters", ("throughput-ewma throughput-sw throughput-iqr throughput-tdigest avtp entropy").split(" ")),
zNb: E(M, "filterDefinitionOverrides", {}),
HJb: E(O, "defaultFilter", "throughput-ewma"),
M7b: E(O, "secondaryFilter", "none"),
IJb: E(M, "defaultFilterDefinitions", {
"throughput-ewma": {
type: "discontiguous-ewma",
mw: 5E3,
wt: 5E3
},
"throughput-sw": {
type: "slidingwindow",
mw: 5E3
},
"throughput-iqr": {
type: "iqr",
mx: Infinity,
mn: 5,
bw: 15E3,
iv: 1E3
},
"throughput-iqr-history": {
type: "iqr-history"
},
"throughput-location-history": {
type: "discrete-ewma",
hl: 14400,
"in": 3600
},
"respconn-location-history": {
type: "discrete-ewma",
hl: 100,
"in": 25
},
"throughput-tdigest": {
type: "tdigest",
maxc: 25,
c: .5,
b: 1E3,
w: 15E3,
mn: 6
},
"throughput-tdigest-history": {
type: "tdigest-history",
maxc: 25,
rc: "ewma",
c: .5,
hl: 7200
},
"respconn-ewma": {
type: "discrete-ewma",
hl: 10,
"in": 10
},
avtp: {
type: "avtp"
},
entropy: {
type: "entropy",
mw: 2E3,
sw: 6E4,
"in": "none",
mins: 1,
hdl: [150, 230, 352, 539, 825, 1264, 1936, 2966, 4543, 6958],
uhdl: [150, 230, 352, 539, 825, 1264, 1936, 2966, 4543, 6958, 10657, 16322, 25E3]
}
}),
jZ: E(J, "needMinimumNetworkConfidence", !0),
xna: E(J, "biasTowardHistoricalThroughput", !0),
tma: E(J, "addHeaderDataToNetworkMonitor", !1),
CBa: E(J, "startMonitorOnLoadStart", !1),
Dza: E(J, "reportFailedRequestsToNetworkMonitor", !1),
Faa: E(K, "maxFastPlayBufferInMs", Infinity),
iwa: E(K, "maxFastPlayBitThreshold", Infinity),
Rma: E(J, "appendFirstHeaderOnComplete", !0),
OBb: E(O, "ase_stream_selector", "optimized"),
fua: E(O, "initBitrateSelectorAlgorithm", "default"),
Lna: E(O, "bufferingSelectorAlgorithm", "default"),
W_a: E(O, "ase_ls_failure_simulation", ""),
wpa: E(J, "ase_dump_fragments", !1),
xpa: E(H, "ase_location_history", 0),
X_a: E(H, "ase_throughput", 0),
Z_a: E(J, "ase_simulate_verbose", !1),
x3b: E(H, "pollingPeriod", 150),
MXb: E(H, "loadTimeMs", 18E4),
CYb: E(H, "marginTimeMs", 1E4),
Xra: E(J, "getDeviceIdFromBindDevice", !1),
sma: E(J, "addFailedLogBlobsToQueue", !0),
Lbc: {
"content-sampling": {
Fr: E(H, "contentSamplingMaxBufferingTime", 3E3),
UQ: E(O, "contentSamplingSelectStartingVMAFMethod", "fallback"),
RU: E(J, "contentSamplingActivateSelectStartingVMAF", !0),
Sv: E(H, "contentSamplingMinStartingVideoVMAF", 80),
ZY: E(H, "contentSamplingMinAcceptableVMAF", 70),
yJ: E(H, "contentSamplingMinAllowedVmaf", 60)
},
billboard: {
Rv: E(H, "billboardMinInitVideoBitrate", 1050),
wB: E(H, "billboardMaxInitVideoBitrate", null),
kj: E(H, "billboardMinPrebufSize", null),
Mv: E(H, "billboardMaxPrebufSize", null),
Fr: E(H, "billboardMaxBufferingTime", null),
xB: E(H, "billboardMaxPartialBuffersAtBufferingStart", null),
by: E(H, "billboardLowestWaterMarkLevel", 6E3),
rB: E(H, "billboardLowestBufForUpswitch", 25E3),
HF: E(O, "billboardSwitchConfigBasedOnThroughputHistory", "none", /^(none|iqr|avg)$/)
},
preplay: {
Rv: E(H, "preplayMinInitVideoBitrate", 1050),
wB: E(H, "preplayMaxInitVideoBitrate", null),
kj: E(H, "preplayMinPrebufSize", null),
Mv: E(H, "preplayMaxPrebufSize", null),
Fr: E(H, "preplayMaxBufferingTime", null),
xB: E(H, "preplayMaxPartialBuffersAtBufferingStart", null),
by: E(H, "preplayLowestWaterMarkLevel", 6E3),
rB: E(H, "preplayLowestBufForUpswitch", 25E3)
},
embedded: {
Rv: E(H, "embeddedMinInitVideoBitrate", 1050),
wB: E(H, "embeddedMaxInitVideoBitrate", null),
kj: E(H, "embeddedMinPrebufSize", null),
Mv: E(H, "embeddedMaxPrebufSize", null),
Fr: E(H, "embeddedMaxBufferingTime", null),
xB: E(H, "embeddedMaxPartialBuffersAtBufferingStart", null),
by: E(H, "embeddedLowestWaterMarkLevel", 6E3),
rB: E(H, "embeddedLowestBufForUpswitch", 25E3)
},
"video-merch-bob-horizontal": {
Rv: E(H, "videoMerchBobHorizontalMinInitVideoBitrate", null),
wB: E(H, "videoMerchBobHorizontalMaxInitVideoBitrate", null),
kj: E(H, "videoMerchBobHorizontalMinPrebufSize", null),
Mv: E(H, "videoMerchBobHorizontalMaxPrebufSize", null),
Fr: E(H, "videoMerchBobHorizontalMaxBufferingTime", null),
xB: E(H, "videoMerchBobHorizontalMaxPartialBuffersAtBufferingStart", null),
by: E(H, "videoMerchBobHorizontalLowestWaterMarkLevel", null),
rB: E(H, "videoMerchBobHorizontalLowestBufForUpswitch", null)
},
"mini-modal-horizontal": {
Rv: E(H, "miniModalHorizontalMinInitVideoBitrate", null),
wB: E(H, "miniModalHorizontalMaxInitVideoBitrate", null),
kj: E(H, "miniModalHorizontalMinPrebufSize", null),
Mv: E(H, "miniModalHorizontalMaxPrebufSize", null),
Fr: E(H, "miniModalHorizontalMaxBufferingTime", 500),
xB: E(H, "miniModalHorizontalMaxPartialBuffersAtBufferingStart", null),
by: E(H, "miniModalHorizontalLowestWaterMarkLevel", null),
rB: E(H, "miniModalHorizontalLowestBufForUpswitch", null)
},
live: {
kj: E(H, "liveMinPrebufSize", 2E3),
Mv: E(H, "liveMaxPrebufSize", 4E3),
Fr: E(H, "liveMaxBufferingTime", 500)
}
},
mMb: E(J, "enableVerbosePlaydelayLogging", !1),
gMb: E(J, "enableSeamless", !1),
Gta: E(H, "hindsightDenominator", 0),
Fta: E(H, "hindsightDebugDenominator", 0),
j$: E(M, "hindsightParam", {
numB: Infinity,
bSizeMs: 1E3,
fillS: "last",
fillHl: 1E3
}),
BW: E(J, "enableSessionHistoryReport", !1),
gqa: E(H, "earlyStageEstimatePeriod", 1E4),
U8a: E(H, "lateStageEstimatePeriod", 3E4),
Iaa: E(H, "maxNumSessionHistoryStored", 30),
hba: E(H, "minSessionHistoryDuration", 3E4),
gy: E(H, "maxActiveRequestsPerSession", 3),
Baa: E(H, "maxActiveRequestsSABCell100", 2),
vva: E(J, "limitAudioDiscountByMaxAudioBitrate", !0),
ke: E(M, "browserInfo", {}),
vDb: E(H, I("busyGracePeriod"), 199),
h8b: E(J, I("sendTransitionLogblob"), !0),
ALb: E(J, I("editVideoFragments"), !0),
e8: E(J, I("earlyAppendSingleChildBranch"), !0),
FUb: E(J, I("includeSegmentInfoOnLogblobs"), !0),
XMb: E(J, "exposeTestData", !1),
WMb: E(J, I("exposeErrorData"), !1),
ypa: E(J, "declareBufferingCompleteAtSegmentEnd", !0),
OH: E(J, I("applyProfileTimestampOffset"), !1),
mo: E(J, I("applyProfileStreamingOffset"), !1),
WY: E(J, I("mediaSourceSupportsNegativePts"), !1),
qBb: E(J, I("allowSmallSeekDelta"), !1),
V9b: E(H, I("smallSeekDeltaThresholdMilliseconds"), u.W3),
NLb: E(J, "enableCDMAttestedDescriptors", !1),
cda: E(J, "requireDownloadDataAtBuffering", !1),
dda: E(J, "requireSetupConnectionDuringBuffering", !1),
iza: E(J, "recordFirstFragmentOnSubBranchCreate", !1),
fDb: E(J, "branchingAudioTrackFrameDropSmallSeekFix", !0),
ukb: E(J, "useMobileVMAF", !1),
v0a: E(O, "desiredVMAFTypeMobile", "phone_plus_lts"),
w0a: E(O, "desiredVMAFTypeNonMobile", "plus_lts"),
RU: E(J, "activateSelectStartingVMAF", !1),
Sv: E(H, "minStartingVideoVMAF", 1),
ZY: E(H, "minAcceptableVMAF", 1),
yJ: E(H, "minAllowedVmaf", 1),
tBb: E(J, "alwaysNotifyEOSForPlaygraph", !0),
qO: E(J, "enableNewAse", !0),
U0: E(J, "useNewApi", !0),
Caa: E(H, "maxAllowedOutstandingRequests", 4),
lN: E(J, "alwaysRunUnderflowTimer", !0),
Hwa: E(H, "minStreamableConcurrencyWindow", 3E3),
QBa: E(R, "streamableConcurrencyFactor", .3),
AV: E(H, "bufferingConcurrencyWindow", 7800),
O9b: E(J, "singleStreamablePerBranch", !0),
i8: E(J, "enableResolutionVMAFStreamFilter", !1),
ida: E(M, "resolutionVMAFCappingRuleList", {}),
$xa: E(K, "percentCapTitlesForResolutionVMAFStreamFilter", 100),
HKb: E(J, "disableSkipping", !1),
Rea: E(J, "useHLSPlayer", ca.Rea),
ZCa: E(J, I("useExitZones"), !0),
I6b: E(J, "requestSegmentVmaf", !1),
nQ: E(M, "perFragmentVMAFConfig", {
enabled: !1
}),
Kxa: E(H, "paddingDurationMs", 1E3),
Lxa: E(O, "paddingMediaType", "padding")
};
Ha = !0;
b.Voa = function(Ja) {
var Na,
Oa,
Ua;
Na = d.ya.get(B.$c).id;
if (0 < b.config.t9a && 0 === Na % b.config.t9a)
try {
Oa = d.ya.get(v.Yn);
Ua = d.ya.get(w.oz).Wu("config", "info", {
params: Ja
});
Oa.Fc(Ua);
} catch ($a) {
d.log.error("Failed to log config$apply", $a);
}
mb._cad_global.config = b.config;
(0, l.ib)(Ja);
Ja && (Ba = (0, p.ve)({}, Ja, {
LY: !0
}), (0, p.ve)(Ba, Q, {
LY: !0
}), G(ra, b.config), Ba.istestaccount && d.log.trace("Config applied for", pa(Ha ? Ba : Ja)), Ha = !1);
};
(0, b.Voa)(Ba);
};
b.Woa = function(D) {
D = c(D);
return (0, p.ve)({}, a(187)(D), {
Rba: !0
});
};
b.FZa = function(D, F, G) {
G = !!G && (0 <= G.indexOf("h264hpl") || 0 <= G.indexOf("vp9") || 0 <= G.indexOf("av1"));
D = {
ky: D ? b.config.PZb : b.config.ky,
AB: D ? b.config.XZb : G ? b.config.ZZb : b.config.AB,
e8: !F
};
return (0, p.ve)({}, a(187)(D), {
Rba: !0
});
};
b.GZa = c;
b.TFb = k;
}, function(t, b) {
Object.defineProperty(b, "__esModule", {
value: !0
});
b.$c = "ApplicationSymbol";
}, function(t, b, a) {
var k;
function c(g, h) {
return g && h ? Math.abs(g * h / k.rE(g, h)) : 0;
}
Object.defineProperties(b, {
__esModule: {
value: !0
}
});
b.M = void 0;
k = a(367);
t = (function() {
function g(h, d) {
"object" === typeof h ? (this.vc = h.Xa, this.nb = h.U) : (this.vc = h, this.nb = d);
isFinite(this.vc) || (this.nb = 1);
}
g.compare = function(h, d) {
return h.Wl(d);
};
g.abs = function(h) {
return new g(Math.abs(h.vc), h.nb);
};
g.Ha = function(h) {
return 0 === h ? g.La : new g(h, 1E3);
};
g.vea = function(h, d) {
return Math.floor(1E3 * h / d);
};
g.tab = function(h, d) {
return Math.floor(h * d / 1E3);
};
g.max = function() {
for (var h = [], d = 0; d < arguments.length; d++) {
h[d] = arguments[d];
}
return h.reduce(function(f, l) {
return f.greaterThan(l) ? f : l;
});
};
g.min = function() {
for (var h = [], d = 0; d < arguments.length; d++) {
h[d] = arguments[d];
}
return h.reduce(function(f, l) {
return f.lessThan(l) ? f : l;
});
};
g.rE = function(h, d) {
var f;
if (h.nb === d.nb)
return new g(k.rE(h.vc, d.vc), h.nb);
f = c(h.nb, d.nb);
return new g(k.rE(h.vc * f / h.nb, d.vc * f / d.nb), f);
};
Object.defineProperties(g.prototype, {
Xa: {
get: function() {
return this.vc;
},
enumerable: !1,
configurable: !0
}
});
Object.defineProperties(g.prototype, {
U: {
get: function() {
return this.nb;
},
enumerable: !1,
configurable: !0
}
});
Object.defineProperties(g.prototype, {
S: {
get: function() {
return g.vea(this.vc, this.nb);
},
enumerable: !1,
configurable: !0
}
});
Object.defineProperties(g.prototype, {
TJ: {
get: function() {
return 1E3 * this.vc / this.nb;
},
enumerable: !1,
configurable: !0
}
});
Object.defineProperties(g.prototype, {
mK: {
get: function() {
var h;
h = this.TJ;
return 0 > h ? Math.ceil(h) : Math.floor(h);
},
enumerable: !1,
configurable: !0
}
});
Object.defineProperties(g.prototype, {
si: {
get: function() {
return this.vc / this.nb;
},
enumerable: !1,
configurable: !0
}
});
g.prototype.Wf = function(h) {
h /= this.nb;
return new g(Math.floor(this.vc * h), Math.floor(this.nb * h));
};
g.prototype.add = function(h) {
var d;
if (this.nb === h.nb)
return new g(this.vc + h.vc, this.nb);
d = c(this.nb, h.nb);
return new g(this.vc * d / this.nb + h.vc * d / h.nb, d);
};
g.prototype.Ba = function(h) {
var d;
if (this.nb === h.nb)
return new g(this.vc - h.vc, this.nb);
d = c(this.nb, h.nb);
return new g(this.vc * d / this.nb - h.vc * d / h.nb, d);
};
g.prototype.DB = function(h) {
return new g(this.vc * h, this.nb);
};
g.prototype.Dk = function(h) {
var d;
if ("number" === typeof h) {
if (Math.floor(h) === h) {
d = c(this.vc, h);
if (d !== this.vc)
return this.Wf(d / this.vc * this.nb).Dk(h);
}
return new g(Math.floor(this.vc / h), this.nb);
}
if (this.nb === h.nb)
return this.vc / h.vc;
d = c(this.nb, h.nb);
return this.vc * d / this.nb / (h.vc * d / h.nb);
};
g.prototype.V7 = function(h) {
var d;
if (this.nb === h.nb)
return new g(Math.abs(this.vc - h.vc), this.nb);
d = c(this.nb, h.nb);
return new g(Math.abs(this.vc * d / this.nb - h.vc * d / h.nb), d);
};
g.prototype.reb = function() {
return new g(this.nb, this.vc);
};
g.prototype.compare = function(h, d) {
var f;
if (this.nb === d.nb)
return h(this.vc, d.vc);
f = c(this.nb, d.nb);
return h(this.vc * f / this.nb, d.vc * f / d.nb);
};
g.prototype.Wl = function(h) {
var d;
if (this.nb === h.nb)
return this.Xa === h.vc ? 0 : this.vc - h.vc;
d = c(this.nb, h.nb);
return this.vc * d / this.nb - h.vc * d / h.nb;
};
g.prototype.equal = function(h) {
return this.compare(function(d, f) {
return d === f;
}, h);
};
g.prototype.cxa = function(h) {
return this.compare(function(d, f) {
return d !== f;
}, h);
};
g.prototype.lessThan = function(h) {
return this.compare(function(d, f) {
return d < f;
}, h);
};
g.prototype.greaterThan = function(h) {
return this.compare(function(d, f) {
return d > f;
}, h);
};
g.prototype.xY = function(h) {
return this.compare(function(d, f) {
return d <= f;
}, h);
};
g.prototype.sn = function(h) {
return this.compare(function(d, f) {
return d >= f;
}, h);
};
g.prototype.isFinite = function() {
return !!this.nb && isFinite(this.vc);
};
g.prototype.G5a = function(h) {
return c(this.U, h);
};
g.prototype.toJSON = function() {
return {
ticks: this.vc,
timescale: this.nb
};
};
g.prototype.toString = function() {
return this.vc + "/" + this.nb;
};
g.prototype.jc = function() {
return this.vc + "/" + this.nb + " (" + this.S + "ms)";
};
g.La = new g(0, 1E3);
g.IB = new g(1, 1E3);
g.Wx = new g(Infinity, 1);
return g;
})();
b.M = t;
}, function(t, b, a) {
function c() {
c = Object.assign || (function(E) {
for (var I, L = 1, K = arguments.length; L < K; L++) {
I = arguments[L];
for (var H in I) {
Object.prototype.hasOwnProperty.call(I, H) && (E[H] = I[H]);
}
}
return E;
});
return c.apply(this, arguments);
}
function k(E, I) {
k = Object.setPrototypeOf || ({
__proto__: []
}) instanceof Array && (function(L, K) {
L.__proto__ = K;
}) || (function(L, K) {
for (var H in K) {
K.hasOwnProperty(H) && (L[H] = K[H]);
}
});
return k(E, I);
}
function g(E, I) {
function L() {
this.constructor = E;
}
k(E, I);
E.prototype = null === I ? Object.create(I) : (L.prototype = I.prototype, new L());
}
function h(E, I) {
var L,
K,
H;
L = {};
for (K in E) {
Object.prototype.hasOwnProperty.call(E, K) && 0 > I.indexOf(K) && (L[K] = E[K]);
}
if (null != E && "function" === typeof Object.getOwnPropertySymbols) {
H = 0;
for (K = Object.getOwnPropertySymbols(E); H < K.length; H++) {
0 > I.indexOf(K[H]) && Object.prototype.propertyIsEnumerable.call(E, K[H]) && (L[K[H]] = E[K[H]]);
}
}
return L;
}
function d(E, I, L, K) {
var H,
R,
O;
H = arguments.length;
R = 3 > H ? I : null === K ? K = Object.getOwnPropertyDescriptor(I, L) : K;
if ("object" === typeof Reflect && "function" === typeof Reflect.Qp)
R = Reflect.Qp(E, I, L, K);
else
for (var J = E.length - 1; 0 <= J; J--) {
if (O = E[J])
R = (3 > H ? O(R) : 3 < H ? O(I, L, R) : O(I, L)) || R;
}
return ( 3 < H && R && Object.defineProperty(I, L, R), R) ;
}
function f(E, I) {
return function(L, K) {
I(L, K, E);
};
}
function l(E, I) {
if ("object" === typeof Reflect && "function" === typeof Reflect.Ac)
return Reflect.Ac(E, I);
}
function m(E, I, L, K) {
function H(R) {
return R instanceof L ? R : new L(function(O) {
O(R);
});
}
return new (L || (L = Promise))(function(R, O) {
function J(S) {
try {
P(K.next(S));
} catch (U) {
O(U);
}
}
function M(S) {
try {
P(K["throw"](S));
} catch (U) {
O(U);
}
}
function P(S) {
S.done ? R(S.value) : H(S.value).then(J, M);
}
P((K = K.apply(E, I || [])).next());
});
}
function n(E, I) {
var H,
R,
O,
J,
M;
function L(P) {
return function(S) {
return K([P, S]);
};
}
function K(P) {
if (R)
throw new TypeError("Generator is already executing.");
for (; H;) {
try {
if ((R = 1, O && (J = P[0] & 2 ? O["return"] : P[0] ? O["throw"] || ((J = O["return"]) && J.call(O), 0) : O.next) && !(J = J.call(O, P[1])).done))
return J;
if ((O = 0, J))
P = [P[0] & 2, J.value];
switch (P[0]) {
case 0:
case 1:
J = P;
break;
case 4:
return ( H.label++, {
value: P[1],
done: !1
}) ;
case 5:
H.label++;
O = P[1];
P = [0];
continue;
case 7:
P = H.Nk.pop();
H.Vh.pop();
continue;
default:
if (!(J = H.Vh, J = 0 < J.length && J[J.length - 1]) && (6 === P[0] || 2 === P[0])) {
H = 0;
continue;
}
if (3 === P[0] && (!J || P[1] > J[0] && P[1] < J[3]))
H.label = P[1];
else if (6 === P[0] && H.label < J[1])
(H.label = J[1],
J = P);
else if (J && H.label < J[2])
(H.label = J[2],
H.Nk.push(P));
else {
J[2] && H.Nk.pop();
H.Vh.pop();
continue;
}
}
P = I.call(E, H);
} catch (S) {
P = [6, S];
O = 0;
} finally {
R = J = 0;
}
}
if (P[0] & 5)
throw P[1];
return {
value: P[0] ? P[1] : void 0,
done: !0
};
}
H = {
label: 0,
Eb: function() {
if (J[0] & 1)
throw J[1];
return J[1];
},
Vh: [],
Nk: []
};
return ( M = {
next: L(0),
"throw": L(1),
"return": L(2)
}, "function" === typeof Symbol && (M[Symbol.iterator] = function() {
return this;
}), M) ;
}
function p(E, I, L, K) {
void 0 === K && (K = L);
E[K] = I[L];
}
function q(E, I) {
for (var L in E) {
"default" === L || I.hasOwnProperty(L) || (I[L] = E[L]);
}
}
function r(E) {
var I,
L,
K;
I = "function" === typeof Symbol && Symbol.iterator;
L = I && E[I];
K = 0;
if (L)
return L.call(E);
if (E && "number" === typeof E.length)
return {
next: function() {
E && K >= E.length && (E = void 0);
return {
value: E && E[K++],
done: !E
};
}
};
throw new TypeError(I ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
function u(E, I) {
var L,
K,
H;
L = "function" === typeof Symbol && E[Symbol.iterator];
if (!L)
return E;
E = L.call(E);
H = [];
try {
for (; (void 0 === I || 0 < I--) && !(K = E.next()).done;) {
H.push(K.value);
}
} catch (O) {
var R;
R = {
error: O
};
} finally {
try {
K && !K.done && (L = E["return"]) && L.call(E);
} finally {
if (R)
throw R.error;
}
}
return H;
}
function v() {
for (var E = [], I = 0; I < arguments.length; I++) {
E = E.concat(u(arguments[I]));
}
return E;
}
function w() {
var K;
for (var E = 0, I = 0, L = arguments.length; I < L; I++) {
E += arguments[I].length;
}
E = Array(E);
K = 0;
for (I = 0; I < L; I++) {
for (var H = arguments[I], R = 0, O = H.length; R < O;(R++, K++)) {
E[K] = H[R];
}
}
return E;
}
function x(E) {
return this instanceof x ? (this.Ty = E, this) : new x(E);
}
function y(E, I, L) {
var M,
P,
S;
function K(U) {
M[U] && (P[U] = function(T) {
return new Promise(function(W, ia) {
1 < S.push([U, T, W, ia]) || H(U, T);
});
});
}
function H(U, T) {
var W;
try {
W = M[U](T);
W.value instanceof x ? Promise.resolve(W.value.Ty).then(R, O) : J(S[0][2], W);
} catch (ia) {
J(S[0][3], ia);
}
}
function R(U) {
H("next", U);
}
function O(U) {
H("throw", U);
}
function J(U, T) {
(U(T), S.shift(), S.length) && H(S[0][0], S[0][1]);
}
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
M = L.apply(E, I || []);
S = [];
return ( P = {}, K("next"), K("throw"), K("return"), P[Symbol.asyncIterator] = function() {
return this;
}, P) ;
}
function z(E) {
var L,
K;
function I(H, R) {
L[H] = E[H] ? function(O) {
return (K = !K) ? {
value: x(E[H](O)),
done: "return" === H
} : R ? R(O) : O;
} : R;
}
return ( L = {}, I("next"), I("throw", function(H) {
throw H;
}), I("return"), L[Symbol.iterator] = function() {
return this;
}, L) ;
}
function A(E) {
var K,
H;
function I(R) {
H[R] = E[R] && (function(O) {
return new Promise(function(J, M) {
O = E[R](O);
L(J, M, O.done, O.value);
});
});
}
function L(R, O, J, M) {
Promise.resolve(M).then(function(P) {
R({
value: P,
done: J
});
}, O);
}
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
K = E[Symbol.asyncIterator];
return K ? K.call(E) : (E = "function" === typeof r ? r(E) : E[Symbol.iterator](), H = {}, I("next"), I("throw"), I("return"), H[Symbol.asyncIterator] = function() {
return this;
}, H);
}
function B(E, I) {
Object.defineProperty ? Object.defineProperty(E, "raw", {
value: I
}) : E.raw = I;
return E;
}
function C(E) {
var I;
if (E && E.__esModule)
return E;
I = {};
if (null != E)
for (var L in E) {
Object.hasOwnProperty.call(E, L) && (I[L] = E[L]);
}
I.default = E;
return I;
}
function D(E) {
return E && E.__esModule ? E : {
default: E
};
}
function F(E, I) {
if (!I.has(E))
throw new TypeError("attempted to get private field on non-instance");
return I.get(E);
}
function G(E, I, L) {
if (!I.has(E))
throw new TypeError("attempted to set private field on non-instance");
I.set(E, L);
return L;
}
a.r(b);
a.d(b, "__extends", function() {
return g;
});
a.d(b, "__assign", function() {
return c;
});
a.d(b, "__rest", function() {
return h;
});
a.d(b, "__decorate", function() {
return d;
});
a.d(b, "__param", function() {
return f;
});
a.d(b, "__metadata", function() {
return l;
});
a.d(b, "__awaiter", function() {
return m;
});
a.d(b, "__generator", function() {
return n;
});
a.d(b, "__createBinding", function() {
return p;
});
a.d(b, "__exportStar", function() {
return q;
});
a.d(b, "__values", function() {
return r;
});
a.d(b, "__read", function() {
return u;
});
a.d(b, "__spread", function() {
return v;
});
a.d(b, "__spreadArrays", function() {
return w;
});
a.d(b, "__await", function() {
return x;
});
a.d(b, "__asyncGenerator", function() {
return y;
});
a.d(b, "__asyncDelegator", function() {
return z;
});
a.d(b, "__asyncValues", function() {
return A;
});
a.d(b, "__makeTemplateObject", function() {
return B;
});
a.d(b, "__importStar", function() {
return C;
});
a.d(b, "__importDefault", function() {
return D;
});
a.d(b, "__classPrivateFieldGet", function() {
return F;
});
a.d(b, "__classPrivateFieldSet", function() {
return G;
});
}, function(t, b, a) {
var k;
function c(g) {
return g.filter(function(h, d) {
return g.indexOf(h) === d;
});
}
Object.defineProperties(b, {
__esModule: {
value: !0
}
});
b.Bba = b.VSb = b.pGb = b.flatten = b.Z$a = b.GFb = b.A6 = b.Ju = b.cXa = b.eV = b.z6 = b.oo = b.Yma = b.Xc = void 0;
k = a(0);
b.Xc = function(g, h) {
for (var d = 0; d < g.length; d++) {
if (h(g[d], d, g))
return g[d];
}
};
b.Yma = function(g, h) {
for (var d = g.length - 1; 0 <= d; --d) {
if (h(g[d], d, g))
return g[d];
}
};
b.oo = function(g, h) {
var d;
d = -1;
return g.some(function(f, l, m) {
d = l;
return h(f, l, m);
}) ? d : -1;
@VCK02
Copy link

VCK02 commented Oct 25, 2023

Not working with cadmium player 6.0042.618.911. Can you please share updated file ?
Screenshot 2023-10-25 at 9 44 22 PM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment