What the heck is the novelty T-shirt company doing about this terrible year?

Emilee Geist

Photo illustration by Slate. Photos by Anomaly on Unsplash. Honestly, Is Kim Kardashian Any Worse Than the NBA? That New York Post Story Raises One Legitimate Question: Is Hunter Biden Hot? The Year’s Most Coveted Halloween Decoration Is Actually Worth the Hype What Was Your Last Night Out Before Lockdown? […]

Person wearing a "Life Is Good" T-shirt, with the word "not" drawn in and inserted before "good"
Photo illustration by Slate. Photos by Anomaly on Unsplash.

Scrolling through an online sale recently, I was shocked to come across a batch of “Life Is Good” T-shirts. If you’re not familiar, the brand makes apparel featuring various upbeat designs, all printed with the slogan “Life is good.” But wait, I thought: Life is not good! A pandemic is ravaging our country! This damned election! I thought we were all on the same page that life is bad!

In normal times, Life Is Good apparel holds a certain appeal. The brand is most famous for its “Jake” shirts, featuring a grinning stick figure participating in a variety of activities—kayaking, roasting marshmallows, shooting hoops. It symbolizes to me the wholesome fun and good humor of the people from my New England hometown, where the brand is especially popular. It’s a lifestyle I do not embody myself, but it seems pleasant and harmless.

But now, as I stared into Jake’s beaming cartoon face, I simply could not get into his mindset. I had a series of increasingly paranoid questions: Why wasn’t he wearing a mask? Where exactly was this game of hoops taking place? Was he playing with a buddy? If so, were they quarantining together, or was he playing with a stranger? Had the stranger been out of state recently? Also: Who is buying this stuff right now?

I wanted to speak to someone at the brand to understand how they were thinking through this moment. Life Is Good is run by brothers Bert and John Jacobs, who started making T-shirts together in 1989 and selling them from a van at East Coast colleges. The company has since grown enormously—in a normal year, it can pull in $100 million, and it has both a wholesale business and brick-and-mortar stores. Beyond its wide range of apparel, there is also a variety of branded miscellany, including but not limited to flying discs, tire covers, and Adirondack chairs. It even has a line of wines “celebrating the power of optimism.”

When I reached Bert Jacobs by phone, I first had to know: Did he think life is good now?

I admire all of this, but when I reached Bert Jacobs by phone, I first had to know: Did he think life is good now?

“What we like to say is that life isn’t easy, and life isn’t perfect, but life is good,” he told me, practiced and unperturbed. “We like to think of ourselves as rational optimists.” He went on to espouse the need for positivity in trying times.

Jacobs said Life Is Good experienced its own unique catastrophes as much of the U.S. went into lockdown. Store closures led retailers to cancel orders, and the company lost much of the 45 percent of its business made up by wholesale. And there was a deeper trouble: Could you really sell a T-shirt that said “Life is good” in 2020? The brothers decided very quickly that they had to make a radical shift to stay afloat.

But this was not the first time the company faced a problem like this. Following 9/11, Jacobs said, the brothers faced a test. “Everyone was saying to us ‘Life is not good right now. World War III is about to start.’ We froze in our tracks. We didn’t know what to do,” he said. Then, one employee had the idea to print an American flag T-shirt and donate all the revenue to United Way. The design was phenomenally popular, and the revenue from accompanying purchases ended up saving the business.

This time, the company decided to switch its whole business model to print-to-order. This meant that rather than creating designs 12 to 18 months in advance, Life Is Good could speak to what was happening now. The majority of these efforts went into cutesy riffs on the present moment. A couple of the initial designs included a dog in a bathtub with the slogan “Wash Your Paws” and one that read, “Stay Cool, Stay Calm, Stay Home.”

”Of course there was a lot of internal trepidation,” Jacobs told me. “People are suffering. You have to be careful about what your messages are and are not. But it showed that a lot of people who were quarantining wanted messages about being in this together, supporting each other, being rational optimists.” (One might venture that what people really wanted was reliable government support and a coordinated public health response, but yes, these are cute and comforting.)

These shirts, with their mild, cheery humor, have been a success. The jokes are not edgy or controversial—one of the bestselling shirts simply reads, “Weirdest Year in History.” (Jacobs said of that design, “You might say that’s not necessarily optimistic, but it’s a sentiment that everyone’s thinking out there—the world is weird.”) With this new plan in place, the Jacobs brothers were not only able to avoid layoffs, but managed to recoup all their initial losses and will be increasing their workforce by 100 people. In the apparel business right now, that’s remarkable.

Even so, I can’t shake the idea that Life Is Good and its laid-back, Margaritaville-style ethos simply don’t make sense with the anxiety and uncertainty of this moment. If your shirts absolutely must say something, do they have to say “Quarantini”? Could Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh fit on a T-shirt?

On second thought, maybe I should leave this to the Jacobs brothers.

');
}

function tryGetCriteoFastBid() {
try {
var fastBidStorageKey = "criteo_fast_bid",
hashPrefix = "// Hash: ",
fastBidFromStorage = storage.getDataFromLocalStorage(fastBidStorageKey),
firstLineEndPosition,
firstLine,
publisherTagHash,
publisherTag;
null !== fastBidFromStorage && (firstLineEndPosition = fastBidFromStorage.indexOf("n"), firstLine = fastBidFromStorage.substr(0, firstLineEndPosition).trim(), firstLine.substr(0, hashPrefix.length) !== hashPrefix ? (__WEBPACK_IMPORTED_MODULE_4__src_utils_js__.logWarn("No hash found in FastBid"), storage.removeDataFromLocalStorage(fastBidStorageKey)) : (publisherTagHash = firstLine.substr(hashPrefix.length), publisherTag = fastBidFromStorage.substr(firstLineEndPosition + 1), Object(__WEBPACK_IMPORTED_MODULE_6_criteo_direct_rsa_validate_build_verify_js__.verify)(publisherTag, publisherTagHash, FAST_BID_PUBKEY_N, FAST_BID_PUBKEY_E) ? (__WEBPACK_IMPORTED_MODULE_4__src_utils_js__.logInfo("Using Criteo FastBid"), eval(publisherTag)) : (__WEBPACK_IMPORTED_MODULE_4__src_utils_js__.logWarn("Invalid Criteo FastBid found"), storage.removeDataFromLocalStorage(fastBidStorageKey))));
} catch (t) {}
}

Object(__WEBPACK_IMPORTED_MODULE_1__src_adapters_bidderFactory_js__.registerBidder)(spec);
},
377: function _(t, e, r) {
"use strict";

Object.defineProperty(e, "__esModule", {
value: !0
});
var a = r(378),
n = r(379);

e.verify = function (t, e, r, i) {
var s = new a.BigInteger(a.b64toHex(e)),
o = new a.BigInteger(a.b64toHex(r)),
_ = s.modPowInt(i, o);

return a.removeExtraSymbols(_.toHexString()) === n.Sha256.hash(t);
};
},
378: function _(t, e, r) {
"use strict";

var i;
Object.defineProperty(e, "__esModule", {
value: !0
});
var s = (T.prototype.toHexString = function () {
if (this.s < 0) return "-" + this.negate().toHexString(); var t, e = !1, r = "", i = this.t, s = this.DB - i * this.DB % 4; if (0 < i--) for (s < this.DB && 0 < (t = this[i] >> s) && (e = !0, r = c(t)); 0 <= i;) { s < 4 ? (t = (this[i] & (1 << s) - 1) << 4 - s, t |= this[--i] >> (s += this.DB - 4)) : (t = this[i] >> (s -= 4) & 15, s <= 0 && (s += this.DB, --i)), 0 < t && (e = !0), e && (r += c(t)); } return e ? r : "0"; }, T.prototype.fromHexString = function (t) { if (null !== t) { this.t = 0, this.s = 0; for (var e = t.length, r = !1, i = 0; 0 <= --e;) { var s = n(t, e); s < 0 ? "-" == t.charAt(e) && (r = !0) : (r = !1, 0 == i ? this[this.t++] = s : i + 4 > this.DB ? (this[this.t - 1] |= (s & (1 << this.DB - i) - 1) << i, this[this.t++] = s >> this.DB - i) : this[this.t - 1] |= s << i, (i += 4) >= this.DB && (i -= this.DB));
}

this.clamp(), r && T.ZERO.subTo(this, this);
}
}, T.prototype.negate = function () {
var t = b();
return T.ZERO.subTo(this, t), t;
}, T.prototype.abs = function () {
return this.s < 0 ? this.negate() : this; }, T.prototype.mod = function (t) { var e = b(); return this.abs().divRemTo(t, null, e), this.s < 0 && 0 < e.compareTo(T.ZERO) && t.subTo(e, e), e; }, T.prototype.copyTo = function (t) { for (var e = this.t - 1; 0 <= e; --e) { t[e] = this[e]; } t.t = this.t, t.s = this.s; }, T.prototype.lShiftTo = function (t, e) { for (var r = t % this.DB, i = this.DB - r, s = (1 << i) - 1, o = Math.floor(t / this.DB), _ = this.s << r & this.DM, a = this.t - 1; 0 <= a; --a) { e[a + o + 1] = this[a] >> i | _, _ = (this[a] & s) << r; } for (a = o - 1; 0 <= a; --a) { e[a] = 0; } e[o] = _, e.t = this.t + o + 1, e.s = this.s, e.clamp(); }, T.prototype.invDigit = function () { if (this.t < 1) return 0; var t = this[0]; if (0 == (1 & t)) return 0; var e = 3 & t; return 0 < (e = (e = (e = (e = e * (2 - (15 & t) * e) & 15) * (2 - (255 & t) * e) & 255) * (2 - ((65535 & t) * e & 65535)) & 65535) * (2 - t * e % this.DV) % this.DV) ? this.DV - e : -e; }, T.prototype.dlShiftTo = function (t, e) { for (var r = this.t - 1; 0 <= r; --r) { e[r + t] = this[r]; } for (r = t - 1; 0 <= r; --r) { e[r] = 0; } e.t = this.t + t, e.s = this.s; }, T.prototype.squareTo = function (t) { for (var e = this.abs(), r = t.t = 2 * e.t; 0 <= --r;) { t[r] = 0; } for (r = 0; r < e.t - 1; ++r) { var i = e.am(r, e[r], t, 2 * r, 0, 1); (t[r + e.t] += e.am(r + 1, 2 * e[r], t, 2 * r + 1, i, e.t - r - 1)) >= e.DV && (t[r + e.t] -= e.DV, t[r + e.t + 1] = 1);
}

0 < t.t && (t[t.t - 1] += e.am(r, e[r], t, 2 * r, 0, 1)), t.s = 0, t.clamp(); }, T.prototype.multiplyTo = function (t, e) { var r = this.abs(), i = t.abs(), s = r.t; for (e.t = s + i.t; 0 <= --s;) { e[s] = 0; } for (s = 0; s < i.t; ++s) { e[s + r.t] = r.am(0, i[s], e, s, 0, r.t); } e.s = 0, e.clamp(), this.s != t.s && T.ZERO.subTo(e, e); }, T.prototype.divRemTo = function (t, e, r) { var i = t.abs(); if (!(i.t <= 0)) { var s = this.abs(); if (s.t < i.t) return null != e && e.fromHexString("0"), void (null != r && this.copyTo(r)); null == r && (r = b()); var o = b(), _ = this.s, a = t.s, n = this.DB - D(i[i.t - 1]); 0 < n ? (i.lShiftTo(n, o), s.lShiftTo(n, r)) : (i.copyTo(o), s.copyTo(r)); var p = o.t, c = o[p - 1]; if (0 != c) { var d = c * (1 << this.F1) + (1 < p ? o[p - 2] >> this.F2 : 0),
u = this.FV / d,
h = (1 << this.F1) / d, l = 1 << this.F2, f = r.t, E = f - p, v = null == e ? b() : e; for (o.dlShiftTo(E, v), 0 <= r.compareTo(v) && (r[r.t++] = 1, r.subTo(v, r)), T.ONE.dlShiftTo(p, v), v.subTo(o, o); o.t < p;) { o[o.t++] = 0; } for (; 0 <= --E;) { var m = r[--f] == c ? this.DM : Math.floor(r[f] * u + (r[f - 1] + l) * h); if ((r[f] += o.am(0, m, r, E, 0, p)) < m) for (o.dlShiftTo(E, v), r.subTo(v, r); r[f] < --m;) { r.subTo(v, r); } } null != e && (r.drShiftTo(p, e), _ != a && T.ZERO.subTo(e, e)), r.t = p, r.clamp(), 0 < n && r.rShiftTo(n, r), _ < 0 && T.ZERO.subTo(r, r); } } }, T.prototype.rShiftTo = function (t, e) { e.s = this.s; var r = Math.floor(t / this.DB); if (r >= this.t) e.t = 0;else {
var i = t % this.DB,
s = this.DB - i,
o = (1 << i) - 1; e[0] = this[r] >> i;

for (var _ = r + 1; _ < this.t; ++_) { e[_ - r - 1] |= (this[_] & o) << s, e[_ - r] = this[_] >> i;
}

0 < i && (e[this.t - r - 1] |= (this.s & o) << s), e.t = this.t - r, e.clamp(); } }, T.prototype.drShiftTo = function (t, e) { for (var r = t; r < this.t; ++r) { e[r - t] = this[r]; } e.t = Math.max(this.t - t, 0), e.s = this.s; }, T.prototype.subTo = function (t, e) { for (var r = 0, i = 0, s = Math.min(t.t, this.t); r < s;) { i += this[r] - t[r], e[r++] = i & this.DM, i >>= this.DB;
}

if (t.t < this.t) { for (i -= t.s; r < this.t;) { i += this[r], e[r++] = i & this.DM, i >>= this.DB;
}

i += this.s;
} else {
for (i += this.s; r < t.t;) { i -= t[r], e[r++] = i & this.DM, i >>= this.DB;
}

i -= t.s;
}

e.s = i < 0 ? -1 : 0, i < -1 ? e[r++] = this.DV + i : 0 < i && (e[r++] = i), e.t = r, e.clamp(); }, T.prototype.clamp = function () { for (var t = this.s & this.DM; 0 < this.t && this[this.t - 1] == t;) { --this.t; } }, T.prototype.modPowInt = function (t, e) { var r = new (t < 256 || e.isEven() ? d : h)(e); return this.exp(t, r); }, T.prototype.exp = function (t, e) { if (4294967295 < t || t < 1) return T.ONE; var r, i = b(), s = b(), o = e.convert(this), _ = D(t) - 1; for (o.copyTo(i); 0 <= --_;) { e.sqrTo(i, s), 0 < (t & 1 << _) ? e.mulTo(s, o, i) : (r = i, i = s, s = r); } return e.revert(i); }, T.prototype.isEven = function () { return 0 == (0 < this.t ? 1 & this[0] : this.s); }, T.prototype.compareTo = function (t) { var e = this.s - t.s; if (0 != e) return e; var r = this.t; if (0 != (e = r - t.t)) return this.s < 0 ? -e : e; for (; 0 <= --r;) { if (0 != (e = this[r] - t[r])) return e; } return 0; }, T.prototype.am1 = function (t, e, r, i, s, o) { for (; 0 <= --o;) { var _ = e * this[t++] + r[i] + s; s = Math.floor(_ / 67108864), r[i++] = 67108863 & _; } return s; }, T.prototype.am2 = function (t, e, r, i, s, o) { for (var _ = 32767 & e, a = e >> 15; 0 <= --o;) { var n = 32767 & this[t], p = this[t++] >> 15,
c = a * n + p * _;
s = ((n = _ * n + ((32767 & c) << 15) + r[i] + (1073741823 & s)) >>> 30) + (c >>> 15) + a * p + (s >>> 30), r[i++] = 1073741823 & n;
}

return s;
}, T.prototype.am3 = function (t, e, r, i, s, o) {
for (var _ = 16383 & e, a = e >> 14; 0 <= --o;) { var n = 16383 & this[t], p = this[t++] >> 14,
c = a * n + p * _;
s = ((n = _ * n + ((16383 & c) << 14) + r[i] + s) >> 28) + (c >> 14) + a * p, r[i++] = 268435455 & n;
}

return s;
}, T);

function T(t) {
null !== t && this.fromHexString(t);
}

function b() {
return new s(null);
}

function D(t) {
var e,
r = 1;
return 0 != (e = t >>> 16) && (t = e, r += 16), 0 != (e = t >> 8) && (t = e, r += 8), 0 != (e = t >> 4) && (t = e, r += 4), 0 != (e = t >> 2) && (t = e, r += 2), 0 != (e = t >> 1) && (t = e, r += 1), r;
}

e.BigInteger = s, e.nbi = b, e.nbits = D;

for (var o = [], _ = "0".charCodeAt(0), a = 0; a <= 9; ++a) { o[_++] = a; } for (_ = "a".charCodeAt(0), a = 10; a < 36; ++a) { o[_++] = a; } for (_ = "A".charCodeAt(0), a = 10; a < 36; ++a) { o[_++] = a; } function n(t, e) { var r = o[t.charCodeAt(e)]; return null == r ? -1 : r; } e.intAt = n; var p = "0123456789abcdefghijklmnopqrstuvwxyz"; function c(t) { return p.charAt(t); } e.int2char = c; e.b64toHex = function (t) { for (var e = "", r = 0, i = 0, s = 0; s < t.length && "=" != t.charAt(s); ++s) { var o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(t.charAt(s)); o < 0 || (r = 0 == r ? (e += c(o >> 2), i = 3 & o, 1) : 1 == r ? (e += c(i << 2 | o >> 4), i = 15 & o, 2) : 2 == r ? (e += c(i), e += c(o >> 2), i = 3 & o, 3) : (e += c(i << 2 | o >> 4), e += c(15 & o), 0));
}

return 1 == r && (e += c(i << 2)), e; }, e.removeExtraSymbols = function (t) { return t.replace(/^1f+00/, "").replace("3031300d060960864801650304020105000420"https://r.search.yahoo.com/,""); }; var d = (u.prototype.convert = function (t) { return t.s < 0 || 0 <= t.compareTo(this.m) ? t.mod(this.m) : t; }, u.prototype.revert = function (t) { return t; }, u.prototype.reduce = function (t) { t.divRemTo(this.m, null, t); }, u.prototype.mulTo = function (t, e, r) { t.multiplyTo(e, r), this.reduce(r); }, u.prototype.sqrTo = function (t, e) { t.squareTo(e), this.reduce(e); }, u); function u(t) { this.m = t; } var h = (l.prototype.convert = function (t) { var e = b(); return t.abs().dlShiftTo(this.m.t, e), e.divRemTo(this.m, null, e), t.s < 0 && 0 < e.compareTo(s.ZERO) && this.m.subTo(e, e), e; }, l.prototype.revert = function (t) { var e = b(); return t.copyTo(e), this.reduce(e), e; }, l.prototype.reduce = function (t) { for (; t.t <= this.mt2;) { t[t.t++] = 0; } for (var e = 0; e < this.m.t; ++e) { var r = 32767 & t[e], i = r * this.mpl + ((r * this.mph + (t[e] >> 15) * this.mpl & this.um) << 15) & t.DM; for (t[r = e + this.m.t] += this.m.am(0, i, t, e, 0, this.m.t); t[r] >= t.DV;) {
t[r] -= t.DV, t[++r]++;
}
}

t.clamp(), t.drShiftTo(this.m.t, t), 0 <= t.compareTo(this.m) && t.subTo(this.m, t); }, l.prototype.mulTo = function (t, e, r) { t.multiplyTo(e, r), this.reduce(r); }, l.prototype.sqrTo = function (t, e) { t.squareTo(e), this.reduce(e); }, l); function l(t) { this.m = t, this.mp = t.invDigit(), this.mpl = 32767 & this.mp, this.mph = this.mp >> 15, this.um = (1 << t.DB - 15) - 1, this.mt2 = 2 * t.t; } function f(t) { var e = b(); return e.fromHexString(t.toString()), e; } e.nbv = f, s.ZERO = f(0), s.ONE = f(1), i = "Microsoft Internet Explorer" == navigator.appName ? (s.prototype.am = s.prototype.am2, 30) : "Netscape" != navigator.appName ? (s.prototype.am = s.prototype.am1, 26) : (s.prototype.am = s.prototype.am3, 28), s.prototype.DB = i, s.prototype.DM = (1 << i) - 1, s.prototype.DV = 1 << i; s.prototype.FV = Math.pow(2, 52), s.prototype.F1 = 52 - i, s.prototype.F2 = 2 * i - 52; }, 379: function _(t, e, r) { "use strict"; Object.defineProperty(e, "__esModule", { value: !0 }); var i = (y.hash = function (t) { t = y.utf8Encode(t || ""); for (var e = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], r = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225], i = (t += String.fromCharCode(128)).length / 4 + 2, s = Math.ceil(i / 16), o = new Array(s), _ = 0; _ < s; _++) { o[_] = new Array(16); for (var a = 0; a < 16; a++) { o[_][a] = t.charCodeAt(64 * _ + 4 * a) << 24 | t.charCodeAt(64 * _ + 4 * a + 1) << 16 | t.charCodeAt(64 * _ + 4 * a + 2) << 8 | t.charCodeAt(64 * _ + 4 * a + 3) << 0; } } var n = 8 * (t.length - 1) / Math.pow(2, 32), p = 8 * (t.length - 1) >>> 0;

for (o[s - 1][14] = Math.floor(n), o[s - 1][15] = p, _ = 0; _ < s; _++) { for (var c = new Array(64), d = 0; d < 16; d++) { c[d] = o[_][d]; } for (d = 16; d < 64; d++) { c[d] = y.q1(c[d - 2]) + c[d - 7] + y.q0(c[d - 15]) + c[d - 16] >>> 0;
}

for (var u = r[0], h = r[1], l = r[2], f = r[3], E = r[4], v = r[5], m = r[6], T = r[7], d = 0; d < 64; d++) { var b = T + y.z1(E) + y.Ch(E, v, m) + e[d] + c[d], D = y.z0(u) + y.Maj(u, h, l); T = m, m = v, v = E, E = f + b >>> 0, f = l, l = h, h = u, u = b + D >>> 0;
}

r[0] = r[0] + u >>> 0, r[1] = r[1] + h >>> 0, r[2] = r[2] + l >>> 0, r[3] = r[3] + f >>> 0, r[4] = r[4] + E >>> 0, r[5] = r[5] + v >>> 0, r[6] = r[6] + m >>> 0, r[7] = r[7] + T >>> 0;
}

for (var P = new Array(r.length), T = 0; T < r.length; T++) { P[T] = ("00000000" + r[T].toString(16)).slice(-8); } return P.join(""); }, y.utf8Encode = function (e) { try { return new TextEncoder().encode(e).reduce(function (t, e) { return t + String.fromCharCode(e); }, ""); } catch (t) { return unescape(encodeURIComponent(e)); } }, y.ROTR = function (t, e) { return e >>> t | e << 32 - t; }, y.z0 = function (t) { return y.ROTR(2, t) ^ y.ROTR(13, t) ^ y.ROTR(22, t); }, y.z1 = function (t) { return y.ROTR(6, t) ^ y.ROTR(11, t) ^ y.ROTR(25, t); }, y.q0 = function (t) { return y.ROTR(7, t) ^ y.ROTR(18, t) ^ t >>> 3;
}, y.q1 = function (t) {
return y.ROTR(17, t) ^ y.ROTR(19, t) ^ t >>> 10;
}, y.Ch = function (t, e, r) {
return t & e ^ ~t & r;
}, y.Maj = function (t, e, r) {
return t & e ^ t & r ^ e & r;
}, y);

function y() {}

e.Sha256 = i;
}
}, [375]);
pbjsChunk([214], {
496: function _(e, r, i) {
e.exports = i(497);
},
497: function _(e, r, i) {
"use strict";

Object.defineProperty(r, "__esModule", {
value: !0
}), i.d(r, "spec", function () {
return p;
});
var T = i(0),
S = i(2),
v = i(3),
t = i(10),
l = i.n(t),
a = i(498),
n = i.n(a),
s = i(1);

function g(e) {
return (g = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) {
return _typeof(e);
} : function (e) {
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e);
})(e);
}

var o = [S.b, S.d],
y = 100,
b = 300,
h = 3600,
w = !0,
x = {
JPY: 1
};

function C(e) {
var r = {};
return r.id = e.bidId, r.ext = {}, r.ext.siteID = e.params.siteId, !e.params.hasOwnProperty("id") || "string" != typeof e.params.id && "number" != typeof e.params.id ? r.ext.sid = "".concat(e.params.size[0], "x").concat(e.params.size[1]) : r.ext.sid = String(e.params.id), e.params.hasOwnProperty("bidFloor") && e.params.hasOwnProperty("bidFloorCur") && (r.bidfloor = e.params.bidFloor, r.bidfloorcur = e.params.bidFloorCur), r;
}

function d(e) {
return Array.isArray(e) && 2 === e.length && n()(e[0]) && n()(e[1]);
}

function A(e, r) {
if (d(e)) return e[0] === r[0] && e[1] === r[1];

for (var i = 0; i < e.length; i++) { if (e[i][0] === r[0] && e[i][1] === r[1]) return 1; } } function j(e, r, i, t) { var a = [], n = {}, s = e[0].userId; if (s && "object" === g(s) && s.idl_env && function (e, r, i, t, a, n) { if (i) return r[a] = 1, e.push({ source: t, uids: [{ id: i, ext: { rtiPartner: n } }] }); T.logWarn("Tried to add a user ID from Prebid, the ID received was null"); }(a, n, s.idl_env, "liveramp.com"https://r.search.yahoo.com/,"LiveRampIp"https://r.search.yahoo.com/,"idl"), window.headertag && "function" == typeof window.headertag.getIdentityInfo) { var o, d = window.headertag.getIdentityInfo(); if (d && "object" === g(d)) for (var p in d) { d.hasOwnProperty(p) && (n.hasOwnProperty(p) || !(o = d[p]).responsePending && o.data && "object" === g(o.data) && Object.keys(o.data).length && a.push(o.data)); } } var m, c = {}; c.id = e[0].bidderRequestId, c.imp = i, c.site = {}, c.ext = {}, c.ext.source = "prebid", e[0].schain && (c.source = { ext: { schain: e[0].schain } }), 0 < a.length && (c.user = {}, c.user.eids = a), document.referrer && "" !== document.referrer && (c.site.ref = document.referrer), r && (r.gdprConsent && ((m = r.gdprConsent).hasOwnProperty("gdprApplies") && (c.regs = { ext: { gdpr: m.gdprApplies ? 1 : 0 } }), m.hasOwnProperty("consentString") && (c.user = c.user || {}, c.user.ext = { consent: m.consentString || "" })), r.uspConsent && T.deepSetValue(c, "regs.ext.us_privacy", r.uspConsent), r.refererInfo && (c.site.page = r.refererInfo.referer)); var u = {}, f = r && r.bidderCode || "ix", l = v.b.getConfig(f); if (l) { if ("object" === g(l.firstPartyData)) { var y = l.firstPartyData, b = "?"; for (var h in y) { y.hasOwnProperty(h) && (b += "".concat(encodeURIComponent(h), "=").concat(encodeURIComponent(y[h]), "&")); } b = b.slice(0, -1), c.site.page += b; } "number" == typeof l.timeout && (u.t = l.timeout); } return u.s = e[0].params.siteId, u.v = t, u.r = JSON.stringify(c), u.ac = "j", u.sd = 1, 8.1 === t && (u.nf = 1), { method: "GET", url: "https://htlb.casalemedia.com/cygnus", data: u }; } function F(e, r) { for (var i = 0; i < e.length; i++) { if (r[0] == e[i][0] && r[1] == e[i][1]) return e.splice(i, 1), 1; } } var p = { code: "ix", gvlid: 10, supportedMediaTypes: o, isBidRequestValid: function isBidRequestValid(e) { if (!d(e.params.size)) return T.logError("ix bidder params: bid size has invalid format."), !1; if (!A(e.sizes, e.params.size)) return T.logError("ix bidder params: bid size is not included in ad unit sizes."), !1; if (e.hasOwnProperty("mediaType") && !T.contains(o, e.mediaType)) return !1; if (e.hasOwnProperty("mediaTypes") && !T.deepAccess(e, "mediaTypes.banner.sizes") && !T.deepAccess(e, "mediaTypes.video.playerSize")) return !1; if ("string" != typeof e.params.siteId && "number" != typeof e.params.siteId) return T.logError("ix bidder params: siteId must be string or number value."), !1; var r, i, t = e.params.hasOwnProperty("bidFloor"), a = e.params.hasOwnProperty("bidFloorCur"); return !!(!t && !a || t && a && (r = e.params.bidFloor, i = e.params.bidFloorCur, Boolean("number" == typeof r && "string" == typeof i && i.match(/^[A-Z]{3}$/)))) || (T.logError("ix bidder params: bidFloor / bidFloorCur parameter has invalid format."), !1); }, buildRequests: function buildRequests(e, r) { for (var i, t, a, n, s, o, d, p, m, c, u, f, l, y = [], b = [], h = [], v = null, g = {}, w = 0; w < e.length; w++) { (v = e[w]).mediaType !== S.d && !T.deepAccess(v, "mediaTypes.video") || (v.mediaType === S.d || A(v.mediaTypes.video.playerSize, v.params.size) ? h.push(function (e) { var r = C(e); r.video = T.deepClone(e.params.video), r.video.w = e.params.size[0], r.video.h = e.params.size[1]; var i = T.deepAccess(e, "mediaTypes.video.context"); return i && ("instream" === i ? r.video.placement = 1 : "outstream" === i ? r.video.placement = 4 : T.logWarn("ix bidder params: video context '".concat(i, "' is not supported"))), r; }(v)) : T.logError("Bid size is not included in video playerSize")), v.mediaType !== S.b && !T.deepAccess(v, "mediaTypes.banner") && (v.mediaType || v.mediaTypes) || (c = void 0, (c = C(m = v)).banner = {}, c.banner.w = m.params.size[0], c.banner.h = m.params.size[1], c.banner.topframe = T.inIframe() ? 0 : 1, i = c, b.push(i), a = g, n = i, p = d = o = s = void 0, p = (t = v).transactionId, a.hasOwnProperty(p) ? (s = [], a[p].hasOwnProperty("missingSizes") && (s = a[p].missingSizes), F(s, t.params.size), a[p].missingSizes = s) : T.deepAccess(t, "mediaTypes.banner.sizes") && (F(o = T.deepClone(t.mediaTypes.banner.sizes), t.params.size), d = { missingSizes: o, impression: n }, a[p] = d)); } for (var x in g) { if (g.hasOwnProperty(x)) for (var I = g[x].missingSizes, P = 0; P < I.length; P++) { var z = g[x].impression, O = (u = z, f = I[P], l = void 0, (l = T.deepClone(u)).ext.sid = "".concat(f[0], "x").concat(f[1]), l.banner.w = f[0], l.banner.h = f[1], l); b.push(O); } } return 0 < b.length && y.push(j(e, r, b, 7.2)), 0 < h.length && y.push(j(e, r, h, 8.1)), y; }, interpretResponse: function interpretResponse(e, r) { var i = []; if (!e.hasOwnProperty("body") || !e.body.hasOwnProperty("seatbid")) return i; for (var t, a, n, s, o = e.body, d = o.seatbid, p = 0; p < d.length; p++) { if (d[p].hasOwnProperty("bid")) for (var m = d[p].bid, c = JSON.parse(r.data.r), u = 0; u < m.length; u++) { var f = function (r, e) { if (r) return l()(e, function (e) { return e.id === r; }); }(m[u].impid, c.imp); t = m[u], a = o.cur, n = f, s = void 0, s = {}, x.hasOwnProperty(a) ? s.cpm = t.price / x[a] : s.cpm = t.price / y, s.requestId = t.impid, s.dealId = T.deepAccess(t, "ext.dealid"), s.netRevenue = w, s.currency = a, s.creativeId = t.hasOwnProperty("crid") ? t.crid : "-", T.deepAccess(t, "ext.vasturl") ? (s.vastUrl = t.ext.vasturl, s.width = n.video.w, s.height = n.video.h, s.mediaType = S.d, s.ttl = h) : (s.ad = t.adm, s.width = t.w, s.height = t.h, s.mediaType = S.b, s.ttl = b), s.meta = {}, s.meta.networkId = T.deepAccess(t, "ext.dspid"), s.meta.brandId = T.deepAccess(t, "ext.advbrandid"), s.meta.brandName = T.deepAccess(t, "ext.advbrand"), t.adomain && 0 < t.adomain.length && (s.meta.advertiserDomains = t.adomain), i.push(s); } } return i; }, transformBidParams: function transformBidParams(e) { return T.convertTypes({ siteID: "number" }, e); }, getUserSyncs: function getUserSyncs(e) { return e.iframeEnabled ? [{ type: "iframe", url: "https://js-sec.indexww.com/um/ixmatch.html" }] : []; } }; Object(s.registerBidder)(p); } }, [496]); pbjsChunk([209], { 512: function _(e, t, r) { e.exports = r(513); }, 513: function _(e, t, r) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), r.d(t, "spec", function () { return l; }); var s = r(0), d = r(3), n = r(1), a = r(7); function g() { return (g = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) { Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]); } } return e; }).apply(this, arguments); } var o, i, c, u = Object(a.b)(), l = { code: "kargo", isBidRequestValid: function isBidRequestValid(e) { return !(!e || !e.params) && !!e.params.placementId; }, buildRequests: function buildRequests(e, t) { var r, n = d.b.getConfig("currency"), a = n && n.adServerCurrency || "USD", o = {}, i = {}; s._each(e, function (e) { o[e.bidId] = e.params.placementId, i[e.bidId] = e.sizes; }), 0 < e.length && e[0].userId && e[0].userId.tdid && (r = e[0].userId.tdid); var c = g({}, { sessionId: l._getSessionId(), requestCount: l._getRequestCount(), timeout: t.timeout, currency: a, cpmGranularity: 1, timestamp: new Date().getTime(), cpmRange: { floor: 0, ceil: 20 }, bidIDs: o, bidSizes: i, prebidRawBidRequests: e }, l._getAllMetadata(r, t.uspConsent)), u = encodeURIComponent(JSON.stringify(c)); return g({}, t, { method: "GET", url: "".concat("https://krk.kargo.com"https://r.search.yahoo.com/,"/api/v2/bid"), data: "json=".concat(u), currency: a }); }, interpretResponse: function interpretResponse(e, t) { var r = e.body, n = []; for (var a in r) { var o = r[a], i = void 0; o.metadata && o.metadata.landingPageDomain && (i = { clickUrl: o.metadata.landingPageDomain, advertiserDomains: [o.metadata.landingPageDomain] }), n.push({ requestId: a, cpm: Number(o.cpm), width: o.width, height: o.height, ad: o.adm, ttl: 300, creativeId: o.id, dealId: o.targetingCustom, netRevenue: !0, currency: t.currency, meta: i }); } return n; }, getUserSyncs: function getUserSyncs(e) { var t = [], r = l._generateRandomUuid(), n = l._getClientId(); if (e.iframeEnabled && r && n) for (var a = 0; a < 5; a++) { t.push({ type: "iframe", url: "https://crb.kargo.com/api/v1/initsyncrnd/{UUID}?seed={SEED}&idx={INDEX}".replace("{UUID}", n).replace("{SEED}", r).replace("{INDEX}", a) }); } return t; }, _readCookie: function _readCookie(e) { if (!u.cookiesAreEnabled()) return null; for (var t = "".concat(e, "="), r = document.cookie.split(";"), n = 0; n < r.length; n++) { for (var a = r[n]; " " === a.charAt(0);) { a = a.substring(1, a.length); } if (0 === a.indexOf(t)) return a.substring(t.length, a.length); } return null; }, _getCrbFromCookie: function _getCrbFromCookie() { try { var e = JSON.parse(decodeURIComponent(l._readCookie("krg_crb"))); if (e && e.v) { var t = JSON.parse(atob(e.v)); if (t) return t; } return {}; } catch (e) { return {}; } }, _getCrbFromLocalStorage: function _getCrbFromLocalStorage() { try { return JSON.parse(atob(l._getLocalStorageSafely("krg_crb"))); } catch (e) { return {}; } }, _getCrb: function _getCrb() { var e = l._getCrbFromLocalStorage(); return Object.keys(e).length ? e : l._getCrbFromCookie(); }, _getKruxUserId: function _getKruxUserId() { return l._getLocalStorageSafely("kxkar_user"); }, _getKruxSegments: function _getKruxSegments() { return l._getLocalStorageSafely("kxkar_segs"); }, _getKrux: function _getKrux() { var e = l._getKruxSegments(), t = []; return e && (t = e.split(",")), { userID: l._getKruxUserId(), segments: t }; }, _getLocalStorageSafely: function _getLocalStorageSafely(e) { try { return u.getDataFromLocalStorage(e); } catch (e) { return null; } }, _getUserIds: function _getUserIds(e, t) { var r = l._getCrb(), n = { kargoID: r.userId, clientID: r.clientId, crbIDs: r.syncIds || {}, optOut: r.optOut, usp: t }; return e && (n.tdID = e), n; }, _getClientId: function _getClientId() { return l._getCrb().clientId; }, _getAllMetadata: function _getAllMetadata(e, t) { return { userIDs: l._getUserIds(e, t), krux: l._getKrux(), pageURL: window.location.href, rawCRB: l._readCookie("krg_crb"), rawCRBLocalStorage: l._getLocalStorageSafely("krg_crb") }; }, _getSessionId: function _getSessionId() { return o = o || l._generateRandomUuid(); }, _getRequestCount: function _getRequestCount() { return i === window.location.pathname ? ++c : (i = window.location.pathname, c = 0); }, _generateRandomUuid: function _generateRandomUuid() { try { var e = new Uint8Array(16); crypto.getRandomValues(e), e[6] = -177 & e[6] | 64, e[8] = -65 & e[8] | 128; var t = Array.prototype.map.call(new Uint8Array(e), function (e) { return ("00" + e.toString(16)).slice(-2); }).join(""); return t.slice(0, 8) + "-" + t.slice(8, 12) + "-" + t.slice(12, 16) + "-" + t.slice(16, 20) + "-" + t.slice(20); } catch (e) { return ""; } } }; Object(n.registerBidder)(l); } }, [512]); pbjsChunk([125], { 720: function _(e, r, t) { e.exports = t(721); }, 721: function _(e, r, t) { "use strict"; Object.defineProperty(r, "__esModule", { value: !0 }), t.d(r, "spec", function () { return z; }), r.hasVideoMediaType = s, t.d(r, "resetRubiConf", function () { return c; }), r.masSizeOrdering = d, r.determineRubiconVideoSizeId = g, r.getPriceGranularity = v, r.hasValidVideoParams = l, r.hasValidSupplyChainParams = T, r.encodeParam = b, r.resetUserSync = function () { y = !1; }; var S = t(0), i = t(1), I = t(3), u = t(2), n = t(10), C = t.n(n); function j(e, r) { return function (e) { if (Array.isArray(e)) return e; }(e) || function (e, r) { if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return; var t = [], i = !0, n = !1, o = void 0; try { for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (t.push(a.value), !r || t.length !== r); i = !0) { ; } } catch (e) { n = !0, o = e; } finally { try { i || null == s.return || s.return(); } finally { if (n) throw o; } } return t; }(e, r) || function (e, r) { if (!e) return; if ("string" == typeof e) return o(e, r); var t = Object.prototype.toString.call(e).slice(8, -1); "Object" === t && e.constructor && (t = e.constructor.name); if ("Map" === t || "Set" === t) return Array.from(e); if ("Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)) return o(e, r); }(e, r) || function () { throw new TypeError("Invalid attempt to destructure non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function o(e, r) { (null == r || r > e.length) && (r = e.length);

for (var t = 0, i = new Array(r); t < r; t++) { i[t] = e[t]; } return i; } function k() { return (k = Object.assign || function (e) { for (var r = 1; r < arguments.length; r++) { var t = arguments[r]; for (var i in t) { Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); } } return e; }).apply(this, arguments); } function f(e, r, t) { return r in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function E(e) { return (E = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) { return _typeof(e); } : function (e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e); })(e); } var w = {}; I.b.getConfig("rubicon", function (e) { S.mergeDeep(w, e.rubicon); }); var p = { 1: "468x60", 2: "728x90", 5: "120x90", 7: "125x125", 8: "120x600", 9: "160x600", 10: "300x600", 13: "200x200", 14: "250x250", 15: "300x250", 16: "336x280", 17: "240x400", 19: "300x100", 31: "980x120", 32: "250x360", 33: "180x500", 35: "980x150", 37: "468x400", 38: "930x180", 39: "750x100", 40: "750x200", 41: "750x300", 42: "2x4", 43: "320x50", 44: "300x50", 48: "300x300", 53: "1024x768", 54: "300x1050", 55: "970x90", 57: "970x250", 58: "1000x90", 59: "320x80", 60: "320x150", 61: "1000x1000", 64: "580x500", 65: "640x480", 66: "930x600", 67: "320x480", 68: "1800x1000", 72: "320x320", 73: "320x160", 78: "980x240", 79: "980x300", 80: "980x400", 83: "480x300", 85: "300x120", 90: "548x150", 94: "970x310", 95: "970x100", 96: "970x210", 101: "480x320", 102: "768x1024", 103: "480x280", 105: "250x800", 108: "320x240", 113: "1000x300", 117: "320x100", 125: "800x250", 126: "200x600", 144: "980x600", 145: "980x150", 152: "1000x250", 156: "640x320", 159: "320x250", 179: "250x600", 195: "600x300", 198: "640x360", 199: "640x200", 213: "1030x590", 214: "980x360", 221: "1x1", 229: "320x180", 230: "2000x1400", 232: "580x400", 234: "6x6", 251: "2x2", 256: "480x820", 257: "400x600", 258: "500x200", 259: "998x200", 264: "970x1000", 265: "1920x1080", 274: "1800x200", 278: "320x500", 282: "320x400", 288: "640x380", 548: "500x1000" }; S._each(p, function (e, r) { return p[e] = r; }); var z = { code: "rubicon", gvlid: 52, supportedMediaTypes: [u.b, u.d], isBidRequestValid: function isBidRequestValid(e) { if ("object" !== E(e.params)) return !1; for (var r = 0, t = ["accountId"https://r.search.yahoo.com/,"siteId"https://r.search.yahoo.com/,"zoneId"]; r < t.length; r++) { if (e.params[t[r]] = parseInt(e.params[t[r]]), isNaN(e.params[t[r]])) return S.logError("Rubicon: wrong format of accountId or siteId or zoneId."), !1; } var i = m(e, !0); return !!i && ("video" !== i || l(e)); }, buildRequests: function buildRequests(e, l) { var n, r = e.filter(function (e) { return "video" === m(e); }).map(function (t) { t.startTime = new Date().getTime(); var e, r, i, n = { id: t.transactionId, test: I.b.getConfig("debug") ? 1 : 0, cur: ["USD"], source: { tid: t.transactionId }, tmax: l.timeout, imp: [{ exp: I.b.getConfig("s2sConfig.defaultTtl"), id: t.adUnitCode, secure: 1, ext: f({}, t.bidder, t.params), video: S.deepAccess(t, "mediaTypes.video") || {} }], ext: { prebid: { cache: { vastxml: { returnCreative: !0 === w.returnVast } }, targeting: { includewinners: !0, includebidderkeys: !1, pricegranularity: v(I.b) }, bidders: { rubicon: { integration: w.int_type || "pbjs" } } } } }; if ("rubicon" !== t.bidder && (n.ext.prebid.aliases = f({}, t.bidder, "rubicon")), "function" != typeof t.getFloor || w.disableFloors) e = parseFloat(S.deepAccess(t, "params.floor"));else { try { r = t.getFloor({ currency: "USD", mediaType: "video", size: O(t, "video") }); } catch (e) { S.logError("Rubicon: getFloor threw an error: ", e); } e = "object" !== E(r) || "USD" !== r.currency || isNaN(parseInt(r.floor)) ? void 0 : parseFloat(r.floor); } isNaN(e) || (n.imp[0].bidfloor = e), n.imp[0].ext[t.bidder].video.size_id = g(t), function (r, t, e) { if (!r) return; "object" === E(I.b.getConfig("app")) ? r.app = I.b.getConfig("app") : r.site = { page: R(t, e) }; "object" === E(I.b.getConfig("device")) && (r.device = I.b.getConfig("device")); t.params.video.language && ["site"https://r.search.yahoo.com/,"device"].forEach(function (e) { r[e] && (r[e].content = k({ language: t.params.video.language }, r[e].content)); }); }(n, t, l), function (e, r) { "object" === E(e.imp[0].video) && void 0 === e.imp[0].video.skip && (e.imp[0].video.skip = r.params.video.skip); "object" === E(e.imp[0].video) && void 0 === e.imp[0].video.skipafter && (e.imp[0].video.skipafter = r.params.video.skipdelay); "object" === E(e.imp[0].video) && void 0 === e.imp[0].video.pos && ("atf" === r.params.position ? e.imp[0].video.pos = 1 : "btf" === r.params.position && (e.imp[0].video.pos = 3)); var t = O(r, "video"); e.imp[0].video.w = t[0], e.imp[0].video.h = t[1]; }(n, t), l.gdprConsent && ("boolean" == typeof l.gdprConsent.gdprApplies && (i = l.gdprConsent.gdprApplies ? 1 : 0), S.deepSetValue(n, "regs.ext.gdpr", i), S.deepSetValue(n, "user.ext.consent", l.gdprConsent.consentString)), l.uspConsent && S.deepSetValue(n, "regs.ext.us_privacy", l.uspConsent); var o, a = S.deepAccess(l, "bids.0.userIdAsEids"); a && a.length && (S.deepSetValue(n, "user.ext.eids", a), (o = C()(n.user.ext.eids, function (e) { return "liveintent.com" === e.source; })) && (S.deepSetValue(n, "user.ext.tpid", { source: o.source, uid: o.uids[0].id }), o.ext && o.ext.segments && S.deepSetValue(n, "rp.target.LIseg", o.ext.segments))); var s = I.b.getConfig("user.id"); s && S.deepSetValue(n, "user.id", s), !0 === I.b.getConfig("coppa") && S.deepSetValue(n, "regs.coppa", 1), t.schain && T(t.schain) && S.deepSetValue(n, "source.ext.schain", t.schain); var c, d = k({}, t.params.inventory, I.b.getConfig("fpd.context")), u = k({}, t.params.visitor, I.b.getConfig("fpd.user")); S.isEmpty(d) && S.isEmpty(u) || (c = { bidders: [l.bidderCode], config: { fpd: {} } }, S.isEmpty(d) || (c.config.fpd.site = d), S.isEmpty(u) || (c.config.fpd.user = u), S.deepSetValue(n, "ext.prebid.bidderconfig.0", c)); var p = S.deepAccess(t, "fpd.context.pbAdSlot"); return "string" == typeof p && p && S.deepSetValue(n.imp[0].ext, "context.data.pbadslot", p), ["name"https://r.search.yahoo.com/,"adSlot"].forEach(function (e) { var r = S.deepAccess(t, "fpd.context.adserver.".concat(e)); "string" == typeof r && r && S.deepSetValue(n.imp[0].ext, "context.data.adserver.".concat(e.toLowerCase()), r); }), t.storedAuctionResponse && S.deepSetValue(n.imp[0], "ext.prebid.storedauctionresponse.id", t.storedAuctionResponse.toString()), S.deepSetValue(n.imp[0], "ext.prebid.auctiontimestamp", l.auctionStart), { method: "POST", url: "https://".concat(w.videoHost || "prebid-server"https://r.search.yahoo.com/,".rubiconproject.com/openrtb2/auction"), data: n, bidRequest: t }; }); return !0 !== w.singleRequest ? r.concat(e.filter(function (e) { return "banner" === m(e); }).map(function (e) { var i = z.createSlotParams(e, l); return { method: "GET", url: "https://".concat(w.bannerHost || "fastlane"https://r.search.yahoo.com/,".rubiconproject.com/a/api/fastlane.json"), data: z.getOrderedParams(i).reduce(function (e, r) { var t = i[r]; return S.isStr(t) && "" !== t || S.isNumber(t) ? "".concat(e).concat(b(r, t), "&") : e; }, "") + "slots=1&rand=".concat(Math.random()), bidRequest: e }; })) : (n = e.filter(function (e) { return "banner" === m(e); }).reduce(function (e, r) { return (e[r.params.siteId] = e[r.params.siteId] || []).push(r), e; }, {}), r.concat(Object.keys(n).reduce(function (r, e) { var t, i; return t = n[e], i = 10, t.map(function (e, r) { return r % i == 0 ? t.slice(r, r + i) : null; }).filter(function (e) { return e; }).forEach(function (e) { var i = z.combineSlotUrlParams(e.map(function (e) { return z.createSlotParams(e, l); })); r.push({ method: "GET", url: "https://".concat(w.bannerHost || "fastlane"https://r.search.yahoo.com/,".rubiconproject.com/a/api/fastlane.json"), data: z.getOrderedParams(i).reduce(function (e, r) { var t = i[r]; return S.isStr(t) && "" !== t || S.isNumber(t) ? "".concat(e).concat(b(r, t), "&") : e; }, "") + "slots=".concat(e.length, "&rand=").concat(Math.random()), bidRequest: e }); }), r; }, []))); }, getOrderedParams: function getOrderedParams(e) { var r = /^tg_v/, t = /^tg_i/, i = ["account_id"https://r.search.yahoo.com/,"site_id"https://r.search.yahoo.com/,"zone_id"https://r.search.yahoo.com/,"size_id"https://r.search.yahoo.com/,"alt_size_ids"https://r.search.yahoo.com/,"p_pos"https://r.search.yahoo.com/,"gdpr"https://r.search.yahoo.com/,"gdpr_consent"https://r.search.yahoo.com/,"us_privacy"https://r.search.yahoo.com/,"rp_schain"https://r.search.yahoo.com/,"tpid_tdid"https://r.search.yahoo.com/,"tpid_liveintent.com"https://r.search.yahoo.com/,"tg_v.LIseg"https://r.search.yahoo.com/,"ppuid"https://r.search.yahoo.com/,"eid_pubcid.org"https://r.search.yahoo.com/,"eid_sharedid.org"https://r.search.yahoo.com/,"eid_criteo.com"https://r.search.yahoo.com/,"rf"https://r.search.yahoo.com/,"p_geo.latitude"https://r.search.yahoo.com/,"p_geo.longitude"https://r.search.yahoo.com/,"kw"].concat(Object.keys(e).filter(function (e) { return r.test(e); })).concat(Object.keys(e).filter(function (e) { return t.test(e); })).concat(["tk_flint"https://r.search.yahoo.com/,"x_source.tid"https://r.search.yahoo.com/,"x_source.pchain"https://r.search.yahoo.com/,"p_screen_res"https://r.search.yahoo.com/,"rp_floor"https://r.search.yahoo.com/,"rp_secure"https://r.search.yahoo.com/,"tk_user_key"]); return i.concat(Object.keys(e).filter(function (e) { return -1 === i.indexOf(e); })); }, combineSlotUrlParams: function combineSlotUrlParams(n) { if (1 === n.length) return n[0]; var i = n.reduce(function (r, t, i) { return Object.keys(t).forEach(function (e) { r.hasOwnProperty(e) || (r[e] = new Array(n.length)), r[e].splice(i, 1, t[e]); }), r; }, {}), o = new RegExp("^([^;]*)(;1)+$"); return Object.keys(i).forEach(function (e) { var r = i[e].join(";"), t = r.match(o); i[e] = t ? t[1] : r; }), i; }, createSlotParams: function createSlotParams(e, r) { e.startTime = new Date().getTime(); var t, i, n, o, a, s, c, d = e.params, u = O(e, "banner"), p = j(d.latLong || [], 2), l = p[0], f = p[1], m = { account_id: d.accountId, site_id: d.siteId, zone_id: d.zoneId, size_id: u[0], alt_size_ids: u.slice(1).join(",") || void 0, rp_floor: .01 < (d.floor = parseFloat(d.floor)) ? d.floor : .01, rp_secure: "1", tk_flint: "".concat(w.int_type || "pbjs_lite"https://r.search.yahoo.com/,"_v4.13.0"), "x_source.tid": e.transactionId, "x_source.pchain": d.pchain, p_screen_res: [window.screen.width, window.screen.height].join("x"), tk_user_key: d.userId, "p_geo.latitude": isNaN(parseFloat(l)) ? void 0 : parseFloat(l).toFixed(4), "p_geo.longitude": isNaN(parseFloat(f)) ? void 0 : parseFloat(f).toFixed(4), "tg_fl.eid": e.code, rf: R(e, r) }; if ("function" == typeof e.getFloor && !w.disableFloors) { try { t = e.getFloor({ currency: "USD", mediaType: "banner", size: "*" }); } catch (e) { S.logError("Rubicon: getFloor threw an error: ", e); } m.rp_hard_floor = "object" !== E(t) || "USD" !== t.currency || isNaN(parseInt(t.floor)) ? void 0 : t.floor; } m.p_pos = "atf" === d.position || "btf" === d.position ? d.position : "", e.userIdAsEids && e.userIdAsEids.length && ((i = C()(e.userIdAsEids, function (e) { return "adserver.org" === e.source; })) && (m.tpid_tdid = i.uids[0].id), (n = C()(e.userIdAsEids, function (e) { return "liveintent.com" === e.source; })) && (m["tpid_liveintent.com"] = n.uids[0].id, n.ext && Array.isArray(n.ext.segments) && n.ext.segments.length && (m["tg_v.LIseg"] = n.ext.segments.join(","))), (o = C()(e.userIdAsEids, function (e) { return "liveramp.com" === e.source; })) && (m.x_liverampidl = o.uids[0].id), (a = C()(e.userIdAsEids, function (e) { return "sharedid.org" === e.source; })) && (m["eid_sharedid.org"] = "".concat(a.uids[0].id, "^").concat(a.uids[0].atype, "^").concat(a.uids[0].ext.third)), (s = C()(e.userIdAsEids, function (e) { return "pubcid.org" === e.source; })) && (m["eid_pubcid.org"] = "".concat(s.uids[0].id, "^").concat(s.uids[0].atype)), (c = C()(e.userIdAsEids, function (e) { return "criteo.com" === e.source; })) && (m["eid_criteo.com"] = "".concat(c.uids[0].id, "^").concat(c.uids[0].atype))); var g = I.b.getConfig("user.id"); if (g) m.ppuid = g;else for (var v = 0; e.userIdAsEids && v < e.userIdAsEids.length; v++) { if (e.userIdAsEids[v].uids) { var b = C()(e.userIdAsEids[v].uids, function (e) { return e.ext && "ppuid" === e.ext.stype; }); if (b && b.id) { m.ppuid = b.id; break; } } } r.gdprConsent && ("boolean" == typeof r.gdprConsent.gdprApplies && (m.gdpr = Number(r.gdprConsent.gdprApplies)), m.gdpr_consent = r.gdprConsent.consentString), r.uspConsent && (m.us_privacy = encodeURIComponent(r.uspConsent)); var y = k({}, d.visitor, I.b.getConfig("fpd.user")); Object.keys(y).forEach(function (e) { null != y[e] && "keywords" !== e && (m["tg_v.".concat(e)] = "object" !== E(y[e]) || Array.isArray(y[e]) ? y[e].toString() : JSON.stringify(y[e])); }); var x = k({}, d.inventory, I.b.getConfig("fpd.context")); Object.keys(x).forEach(function (e) { null != x[e] && "keywords" !== e && (m["tg_i.".concat(e)] = "object" !== E(x[e]) || Array.isArray(x[e]) ? x[e].toString() : JSON.stringify(x[e])); }); var h = (d.keywords || []).concat(S.deepAccess(I.b.getConfig("fpd.user"), "keywords") || [], S.deepAccess(I.b.getConfig("fpd.context"), "keywords") || []); m.kw = Array.isArray(h) && h.length ? h.join(",") : ""; var _ = S.deepAccess(e, "fpd.context.pbAdSlot"); "string" == typeof _ && _ && (m["tg_i.pbadslot"] = _.replace(/^/+/, "")); var A = S.deepAccess(e, "fpd.context.adServer.adSlot"); return "string" == typeof A && A && (m["tg_i.dfp_ad_unit_code"] = A.replace(/^/+/, "")), !0 === I.b.getConfig("coppa") && (m.coppa = 1), e.schain && T(e.schain) && (m.rp_schain = z.serializeSupplyChain(e.schain)), m; }, serializeSupplyChain: function serializeSupplyChain(e) { if (!T(e)) return ""; var r = e.ver, t = e.complete, i = e.nodes; return "".concat(r, ",").concat(t, "!").concat(z.serializeSupplyChainNodes(i)); }, serializeSupplyChainNodes: function serializeSupplyChainNodes(e) { var t = ["asi"https://r.search.yahoo.com/,"sid"https://r.search.yahoo.com/,"hp"https://r.search.yahoo.com/,"rid"https://r.search.yahoo.com/,"name"https://r.search.yahoo.com/,"domain"]; return e.map(function (r) { return t.map(function (e) { return encodeURIComponent(r[e] || ""); }).join(","); }).join("!"); }, interpretResponse: function interpretResponse(c, e) { var d = e.bidRequest; if (!(c = c.body) || "object" !== E(c)) return []; if (c.seatbid) { var r = S.deepAccess(c, "ext.errors.rubicon"); Array.isArray(r) && 0 < r.length && S.logWarn("Rubicon: Error in video response"); var o = []; return c.seatbid.forEach(function (n) { (n.bid || []).forEach(function (e) { var r = { requestId: d.bidId, currency: c.cur || "USD", creativeId: e.crid, cpm: e.price || 0, bidderCode: n.seat, ttl: 300, netRevenue: !1 !== w.netRevenue, width: e.w || S.deepAccess(d, "mediaTypes.video.w") || S.deepAccess(d, "params.video.playerWidth"), height: e.h || S.deepAccess(d, "mediaTypes.video.h") || S.deepAccess(d, "params.video.playerHeight") }; e.id && (r.seatBidId = e.id), e.dealid && (r.dealId = e.dealid); var t, i = S.deepAccess(c, "ext.responsetimemillis.rubicon"); d && i && (d.serverResponseTimeMs = i), S.deepAccess(e, "ext.prebid.type") === u.d ? (r.mediaType = u.d, (t = S.deepAccess(e, "ext.prebid.targeting")) && "object" === E(t) && (r.adserverTargeting = t), e.ext.prebid.cache && "object" === E(e.ext.prebid.cache.vastXml) && e.ext.prebid.cache.vastXml.cacheId && e.ext.prebid.cache.vastXml.url ? (r.videoCacheKey = e.ext.prebid.cache.vastXml.cacheId, r.vastUrl = e.ext.prebid.cache.vastXml.url) : t && t.hb_uuid && t.hb_cache_host && t.hb_cache_path && (r.videoCacheKey = t.hb_uuid, r.vastUrl = "https://".concat(t.hb_cache_host).concat(t.hb_cache_path, "?uuid=").concat(t.hb_uuid)), e.adm && (r.vastXml = e.adm), e.nurl && (r.vastUrl = e.nurl), !r.vastUrl && e.nurl && (r.vastUrl = e.nurl)) : S.logWarn("Rubicon: video response received non-video media type"), o.push(r); }); }), o; } var t = c.ads; return "object" !== E(d) || Array.isArray(d) || "video" !== m(d) || "object" !== E(t) || (t = t[d.adUnitCode]), !Array.isArray(t) || t.length < 1 ? [] : t.reduce(function (e, r, t) { if ("ok" !== r.status) return e; var i, n, o, a, s = Array.isArray(d) ? d[t] : d; return s && "object" === E(s) ? (i = { requestId: s.bidId, currency: "USD", creativeId: r.creative_id || "".concat(r.network || ""https://r.search.yahoo.com/,"-").concat(r.advertiser || ""), cpm: r.cpm || 0, dealId: r.deal, ttl: 300, netRevenue: !1 !== w.netRevenue, rubicon: { advertiserId: r.advertiser, networkId: r.network }, meta: { advertiserId: r.advertiser, networkId: r.network } }, r.creative_type && (i.mediaType = r.creative_type), r.creative_type === u.d ? (i.width = s.params.video.playerWidth, i.height = s.params.video.playerHeight, i.vastUrl = r.creative_depot_url, i.impression_id = r.impression_id, i.videoCacheKey = r.impression_id) : (i.ad = (o = r.script, a = r.impression_id, "nnnx3c!-- Rubicon Project Ad Tag --x3en

nn

nn")), n = j(p[r.size_id].split("x").map(function (e) {
return Number(e);
}), 2), i.width = n[0], i.height = n[1]), i.rubiconTargeting = (Array.isArray(r.targeting) ? r.targeting : []).reduce(function (e, r) {
return e[r.key] = r.values[0], e;
}, {
rpfl_elemid: s.adUnitCode
}), e.push(i)) : S.logError("Rubicon: bidRequest undefined at index position:".concat(t), d, c), e;
}, []).sort(function (e, r) {
return (r.cpm || 0) - (e.cpm || 0);
});
},
getUserSyncs: function getUserSyncs(e, r, t, i) {
if (!y && e.iframeEnabled) {
var n = "";
return t && "string" == typeof t.consentString && ("boolean" == typeof t.gdprApplies ? n += "?gdpr=".concat(Number(t.gdprApplies), "&gdpr_consent=").concat(t.consentString) : n += "?gdpr_consent=".concat(t.consentString)), i && (n += "".concat(n ? "&" : "?"https://r.search.yahoo.com/,"us_privacy=").concat(encodeURIComponent(i))), y = !0, {
type: "iframe",
url: "https://".concat(w.syncHost || "eus"https://r.search.yahoo.com/,".rubiconproject.com/usync.html") + n
};
}
},
transformBidParams: function transformBidParams(e) {
return S.convertTypes({
accountId: "number",
siteId: "number",
zoneId: "number"
}, e);
}
};

function R(e, r) {
var t = I.b.getConfig("pageUrl"),
t = e.params.referrer ? e.params.referrer : t || r.refererInfo.referer;
return e.params.secure ? t.replace(/^http:/i, "https:") : t;
}

function O(e, r) {
var t = e.params;

if ("video" === r) {
var i = [];
return t.video && t.video.playerWidth && t.video.playerHeight ? i = [t.video.playerWidth, t.video.playerHeight] : Array.isArray(S.deepAccess(e, "mediaTypes.video.playerSize")) && 1 === e.mediaTypes.video.playerSize.length ? i = e.mediaTypes.video.playerSize[0] : Array.isArray(e.sizes) && 0 < e.sizes.length && Array.isArray(e.sizes[0]) && 1 < e.sizes[0].length && (i = e.sizes[0]), i; } var n = []; return Array.isArray(t.sizes) ? n = t.sizes : void 0 !== S.deepAccess(e, "mediaTypes.banner.sizes") ? n = a(e.mediaTypes.banner.sizes) : Array.isArray(e.sizes) && 0 < e.sizes.length ? n = a(e.sizes) : S.logWarn("Rubicon: no sizes are setup or found"), d(n); } function a(e) { return S.parseSizesInput(e).reduce(function (e, r) { var t = parseInt(p[r], 10); return t && e.push(t), e; }, []); } function s(e) { return "object" === E(S.deepAccess(e, "params.video")) && void 0 !== S.deepAccess(e, "mediaTypes.".concat(u.d)); } function m(e, r) { var t = 1 < arguments.length && void 0 !== r && r; return s(e) ? -1 === ["outstream"https://r.search.yahoo.com/,"instream"].indexOf(S.deepAccess(e, "mediaTypes.".concat(u.d, ".context"))) ? void (t && S.logError("Rubicon: mediaTypes.video.context must be outstream or instream")) : O(e, "video").length < 2 ? void (t && S.logError("Rubicon: could not determine the playerSize of the video")) : (t && S.logMessage("Rubicon: making video request for adUnit", e.adUnitCode), "video") : 0 === O(e, "banner").length ? void (t && S.logError("Rubicon: could not determine the sizes for banner request")) : (t && S.logMessage("Rubicon: making banner request for adUnit", e.adUnitCode), "banner"); } var c = function c() { return w = {}; }; function d(e) { var n = [15, 2, 9]; return e.sort(function (e, r) { var t = n.indexOf(e), i = n.indexOf(r); return -1 < t || -1 < i ? -1 === t ? 1 : -1 === i ? -1 : t - i : e - r; }); } function g(e) { var r = parseInt(S.deepAccess(e, "params.video.size_id")); return isNaN(r) ? "outstream" === S.deepAccess(e, "mediaTypes.".concat(u.d, ".context")) ? 203 : 201 : r; } function v(e) { return { ranges: { low: [{ max: 5, increment: .5 }], medium: [{ max: 20, increment: .1 }], high: [{ max: 20, increment: .01 }], auto: [{ max: 5, increment: .05 }, { min: 5, max: 10, increment: .1 }, { min: 10, max: 20, increment: .5 }], dense: [{ max: 3, increment: .01 }, { min: 3, max: 8, increment: .05 }, { min: 8, max: 20, increment: .5 }], custom: e.getConfig("customPriceBucket") && e.getConfig("customPriceBucket").buckets }[e.getConfig("priceGranularity")] }; } function l(r) { var t = !0, e = Object.prototype.toString.call([]), i = Object.prototype.toString.call(0), n = { mimes: e, protocols: e, maxduration: i, linearity: i, api: e }; return Object.keys(n).forEach(function (e) { Object.prototype.toString.call(S.deepAccess(r, "mediaTypes.video." + e)) !== n[e] && (t = !1, S.logError("Rubicon: mediaTypes.video." + e + " is required and must be of type: " + n[e])); }), t; } function T(e) { var r = !1, t = ["asi"https://r.search.yahoo.com/,"sid"https://r.search.yahoo.com/,"hp"]; return e.nodes && ((r = e.nodes.reduce(function (e, r) { return e ? t.every(function (e) { return r.hasOwnProperty(e); }) : e; }, !0)) || S.logError("Rubicon: required schain params missing")), r; } function b(e, r) { return "rp_schain" === e ? "rp_schain=".concat(r) : "".concat(e, "=").concat(encodeURIComponent(r)); } var y = !1; Object(i.registerBidder)(z); } }, [720]); pbjsChunk([105], { 770: function _(e, t, r) { e.exports = r(771); }, 771: function _(e, t, r) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), r.d(t, "spec", function () { return a; }), r.d(t, "_isInbounds", function () { return m; }), t._getPlatform = v; var n = r(1), y = r(0), i = r(2), o = r(3), g = r(11), c = r(43); function h(e, t) { return function (e) { if (Array.isArray(e)) return e; }(e) || function (e, t) { if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return; var r = [], n = !0, i = !1, s = void 0; try { for (var a, o = e[Symbol.iterator](); !(n = (a = o.next()).done) && (r.push(a.value), !t || r.length !== t); n = !0) { ; } } catch (e) { i = !0, s = e; } finally { try { n || null == o.return || o.return(); } finally { if (i) throw s; } } return r; }(e, t) || function (e, t) { if (!e) return; if ("string" == typeof e) return s(e, t); var r = Object.prototype.toString.call(e).slice(8, -1); "Object" === r && e.constructor && (r = e.constructor.name); if ("Map" === r || "Set" === r) return Array.from(e); if ("Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)) return s(e, t); }(e, t) || function () { throw new TypeError("Invalid attempt to destructure non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function s(e, t) { (null == t || t > e.length) && (t = e.length);

for (var r = 0, n = new Array(t); r < t; r++) { n[r] = e[r]; } return n; } function d() { return (d = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) { Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]); } } return e; }).apply(this, arguments); } function u(e, t, r) { return t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e; } var p = "sonobi", b = Object(y.generateUUID)(), a = { code: p, supportedMediaTypes: [i.b, i.d], isBidRequestValid: function isBidRequestValid(e) { if (!e.params) return !1; if (!e.params.ad_unit && !e.params.placement_id) return !1; if (!Object(y.deepAccess)(e, "mediaTypes.banner") && !Object(y.deepAccess)(e, "mediaTypes.video")) return !1; if (Object(y.deepAccess)(e, "mediaTypes.banner")) { if (!Object(y.deepAccess)(e, "mediaTypes.banner.sizes") && !e.params.sizes) return !1; } else if (Object(y.deepAccess)(e, "mediaTypes.video")) { if ("outstream" === Object(y.deepAccess)(e, "mediaTypes.video.context") && !e.params.sizes) return !1; if ("instream" === Object(y.deepAccess)(e, "mediaTypes.video.context") && !Object(y.deepAccess)(e, "mediaTypes.video.playerSize")) return !1; } return !0; }, buildRequests: function buildRequests(e, t) { var r = e.map(function (e) { var t = function (e) { if (e.params.ad_unit) return e.params.ad_unit; return e.params.placement_id; }(e); return /^[/]?[d]+[[/].+[/]?]?$/.test(t) ? (t = "/" === t.charAt(0) ? t : "/" + t, u({}, "".concat(t, "|").concat(e.bidId), "".concat(l(e)).concat(f(e)))) : /^[0-9a-fA-F]{20}$/.test(t) && 20 === t.length ? u({}, e.bidId, "".concat(t, "|").concat(l(e)).concat(f(e))) : void Object(y.logError)("The ad unit code or Sonobi Placement id for slot ".concat(e.bidId, " is invalid")); }), n = {}; r.forEach(function (e) { d(n, e); }); var i = { key_maker: JSON.stringify(n), ref: t.refererInfo.referer, s: Object(y.generateUUID)(), pv: b, vp: v(), lib_name: "prebid", lib_v: "4.13.0", us: 0 }; o.b.getConfig("userSync") && o.b.getConfig("userSync").syncsPerBidder && (i.us = o.b.getConfig("userSync").syncsPerBidder), c.a.canBidderRegisterSync("iframe", p) ? i.ius = 1 : i.ius = 0, Object(y.deepAccess)(e[0], "params.hfa") && (i.hfa = Object(y.deepAccess)(e[0], "params.hfa")), e[0].params.referrer && (i.ref = e[0].params.referrer), t && t.gdprConsent && (i.gdpr = t.gdprConsent.gdprApplies ? "true" : "false", t.gdprConsent.consentString && (i.consent_string = t.gdprConsent.consentString)), e[0].schain && (i.schain = JSON.stringify(e[0].schain)), Object(y.deepAccess)(e[0], "userId") && 0 < Object.keys(e[0].userId).length && (i.userid = JSON.stringify(e[0].userId)); var s = e[0].params.keywords; if (s && (i.kw = s), t && t.uspConsent && (i.us_privacy = t.uspConsent), Object(y.isEmpty)(n)) return null; var a = "https://apex.go.sonobi.com/trinity.json"; return Object(y.deepAccess)(e[0], "params.bid_request_url") && (a = Object(y.deepAccess)(e[0], "params.bid_request_url")), { method: "GET", url: a, withCredentials: !0, data: i, bidderRequests: e }; }, interpretResponse: function interpretResponse(e, l) { var f = e.body, m = [], v = l.data.ref; return 0 === Object.keys(f.slots).length || Object.keys(f.slots).forEach(function (e) { var t = f.slots[e], r = e.split("|").slice(-1)[0], n = function (e, t) { for (var r = 0; r < e.length; r++) { if (e[r].bidId === t) return e[r]; } }(l.bidderRequests, r), i = null; "video" === t.sbi_ct && (i = "video"https://r.search.yahoo.com/,"outstream" === Object(y.deepAccess)(n, "mediaTypes.video.context") && (i = "outstream")); var s, a, o, c, d, u, p, b = j(i, v); t.sbi_aid && t.sbi_mouse && t.sbi_size && (o = void 0 === (a = (s = h(t.sbi_size.split("x"), 2))[0]) ? 1 : a, d = void 0 === (c = s[1]) ? 1 : c, u = { requestId: r, cpm: Number(t.sbi_mouse), width: Number(o), height: Number(d), ad: b(f.sbi_dc, t.sbi_aid), ttl: 500, creativeId: t.sbi_crid || t.sbi_aid, aid: t.sbi_aid, netRevenue: !0, currency: "USD" }, t.sbi_dozer && (u.dealId = t.sbi_dozer), "video" === i ? (u.mediaType = "video", u.vastUrl = b(f.sbi_dc, t.sbi_aid), delete u.ad, delete u.width, delete u.height) : "outstream" === i && n && (u.mediaType = "video", u.vastUrl = b(f.sbi_dc, t.sbi_aid), u.renderer = function (e, t) { var r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}, n = g.a.install({ id: t.aid, url: "https://mtrx.go.sonobi.com/sbi_outstream_renderer.js", config: r, loaded: !1, adUnitCode: e }); try { n.setRender(O); } catch (e) { Object(y.logWarn)("Prebid Error calling setRender on renderer", e); } return n.setEventHandlers({ impression: function impression() { return Object(y.logMessage)("Sonobi outstream video impression event"); }, loaded: function loaded() { return Object(y.logMessage)("Sonobi outstream video loaded event"); }, ended: function ended() { Object(y.logMessage)("Sonobi outstream renderer video event"); } }), n; }(n.adUnitCode, u, Object(y.deepAccess)(n, "renderer.options")), p = Object(y.deepAccess)(n, "params.sizes"), Array.isArray(p) && Array.isArray(p[0]) && (p = p[0]), p && (u.width = p[0], u.height = p[1])), m.push(u)); }), m; }, getUserSyncs: function getUserSyncs(e, t) { var r = []; try { e.pixelEnabled && t[0].body.sbi_px.forEach(function (e) { r.push({ type: e.type, url: e.url }); }); } catch (e) {} return r; } }; function l(e) { return Object(y.deepAccess)(e, "mediaTypes.video") ? "" : e.params.sizes ? Object(y.parseSizesInput)(e.params.sizes).join(",") : Object(y.deepAccess)(e, "mediaTypes.banner.sizes") ? Object(y.parseSizesInput)(Object(y.deepAccess)(e, "mediaTypes.banner.sizes")).join(",") : e.sizes ? Object(y.parseSizesInput)(e.sizes).join(",") : void 0; } function f(e) { return e.params.floor ? "|f=".concat(e.params.floor) : ""; } var j = function j(i, s) { return function (e, t) { return "video" === i || "outstream" === i ? (r = t, n = s, "https://".concat(e, "apex.go.sonobi.com/vast.xml?vid=").concat(r, "&ref=").concat(encodeURIComponent(n))) : '‘;
var r, n;
};
};

var m = function m(e) {
var r = 0 < arguments.length && void 0 !== e ? e : window; return function () { var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 0, t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : Number.MAX_SAFE_INTEGER; return r.innerWidth >= e && r.innerWidth < t; }; }; function v() { var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : window, t = m(e), r = 992, n = 768; return t(0, 768) ? "mobile" : t(n, r) ? "tablet" : "desktop"; } function O(i) { i.renderer.push(function () { var e = h(i.getSize().split("x"), 2), t = e[0], r = e[1], n = new window.SbiOutstreamRenderer(); n.init({ vastUrl: i.vastUrl, height: r, width: t }), n.setRootElement(i.adUnitCode); }); } Object(n.registerBidder)(a); } }, [770]); pbjsChunk([96], { 796: function _(e, t, r) { e.exports = r(797); }, 797: function _(e, t, r) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), r.d(t, "spec", function () { return i; }); var n = r(1), a = r(0), p = 12, c = 11, u = 0, g = 22, i = { code: "teads", supportedMediaTypes: ["video"https://r.search.yahoo.com/,"banner"], isBidRequestValid: function isBidRequestValid(e) { var t, r, n = !1; return void 0 !== e.params && (t = s(a.getValue(e.params, "placementId")), r = s(a.getValue(e.params, "pageId")), n = t && r), n || a.logError("Teads placementId and pageId parameters are required. Bid aborted."), n; }, buildRequests: function buildRequests(e, t) { var r, n = e.map(f), i = { referrer: function (e) { var t = ""; e && e.refererInfo && e.refererInfo.referer && (t = e.refererInfo.referer); return t; }(t), pageReferrer: document.referrer, networkBandwidth: (r = window.navigator) && r.connection && 0 <= r.connection.downlink ? r.connection.downlink.toString() : "", timeToFirstByte: function (e) { var t = e.performance || e.webkitPerformance || e.msPerformance || e.mozPerformance, r = t && "function" == typeof t.getEntriesByType && "[object Function]" === Object.prototype.toString.call(t.getEntriesByType) && t.getEntriesByType("navigation")[0] && t.getEntriesByType("navigation")[0].responseStart && t.getEntriesByType("navigation")[0].requestStart && 0 < t.getEntriesByType("navigation")[0].responseStart && 0 < t.getEntriesByType("navigation")[0].requestStart && Math.round(t.getEntriesByType("navigation")[0].responseStart - t.getEntriesByType("navigation")[0].requestStart); if (r) return r.toString(); var n = t && t.timing.responseStart && t.timing.requestStart && 0 < t.timing.responseStart && 0 < t.timing.requestStart && t.timing.responseStart - t.timing.requestStart; return n ? n.toString() : ""; }(window), data: n, deviceWidth: screen.width, hb_version: "4.13.0" }; e[0].schain && (i.schain = e[0].schain); var a, s, o, d = t.gdprConsent; return t && d && (a = "boolean" == typeof d.gdprApplies, s = "string" == typeof d.consentString, o = a ? function (e, t, r) { var n = p; e ? function (e, t) { return e && 1 === t ? e.hasGlobalScope || e.hasGlobalConsent : !(!e || 2 !== t) && !e.isServiceSpecific; }(t, r) && (n = c) : n = u; return n; }(d.gdprApplies, d.vendorData, d.apiVersion) : g, i.gdpr_iab = { consent: s ? d.consentString : "", status: o, apiVersion: d.apiVersion }), t && t.uspConsent && (i.us_privacy = t.uspConsent), { method: "POST", url: "https://a.teads.tv/hb/bid-request", data: JSON.stringify(i) }; }, interpretResponse: function interpretResponse(e) { var r = []; return (e = e.body).responses && e.responses.forEach(function (e) { var t = { cpm: e.cpm, width: e.width, height: e.height, currency: e.currency, netRevenue: !0, ttl: e.ttl, ad: e.ad, requestId: e.bidId, creativeId: e.creativeId, placementId: e.placementId }; e.dealId && (t.dealId = e.dealId), r.push(t); }), r; } }; function f(e) { var t, r = {}, n = a.getValue(e.params, "placementId"), i = a.getValue(e.params, "pageId"); return r.sizes = (t = e, a.parseSizesInput(function (e) { var t = a.deepAccess(e, "mediaTypes.video.playerSize"), r = a.deepAccess(e, "mediaTypes.video.sizes"), n = a.deepAccess(e, "mediaTypes.banner.sizes"); return a.isArray(n) || a.isArray(t) || a.isArray(r) ? [n, r, t].reduce(function (t, e) { return a.isArray(e) && (a.isArray(e[0]) ? e.forEach(function (e) { t.push(e); }) : t.push(e)), t; }, []) : e.sizes; }(t))), r.bidId = a.getBidIdParameter("bidId", e), r.bidderRequestId = a.getBidIdParameter("bidderRequestId", e), r.placementId = parseInt(n, 10), r.pageId = parseInt(i, 10), r.adUnitCode = a.getBidIdParameter("adUnitCode", e), r.auctionId = a.getBidIdParameter("auctionId", e), r.transactionId = a.getBidIdParameter("transactionId", e), r; } function s(e) { return 0 < parseInt(e); } Object(n.registerBidder)(i); } }, [796]); pbjsChunk([87], { 816: function _(e, r, t) { e.exports = t(817); }, 817: function _(e, r, t) { "use strict"; Object.defineProperty(r, "__esModule", { value: !0 }), t.d(r, "tripleliftAdapterSpec", function () { return m; }); var n = t(2), i = t(1), u = t(0), a = t(3); function p() { return (p = Object.assign || function (e) { for (var r = 1; r < arguments.length; r++) { var t = arguments[r]; for (var n in t) { Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]); } } return e; }).apply(this, arguments); } function c(e) { return (c = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) { return _typeof(e); } : function (e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e); })(e); } function d(r, e) { var t, n = Object.keys(r); return Object.getOwnPropertySymbols && (t = Object.getOwnPropertySymbols(r), e && (t = t.filter(function (e) { return Object.getOwnPropertyDescriptor(r, e).enumerable; })), n.push.apply(n, t)), n; } function s(i) { for (var e = 1; e < arguments.length; e++) { var o = null != arguments[e] ? arguments[e] : {}; e % 2 ? d(Object(o), !0).forEach(function (e) { var r, t, n; r = i, n = o[t = e], t in r ? Object.defineProperty(r, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : r[t] = n; }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(i, Object.getOwnPropertyDescriptors(o)) : d(Object(o)).forEach(function (e) { Object.defineProperty(i, e, Object.getOwnPropertyDescriptor(o, e)); }); } return i; } function f(e) { return function (e) { if (Array.isArray(e)) return o(e); }(e) || function (e) { if ("undefined" != typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e); }(e) || function (e, r) { if (!e) return; if ("string" == typeof e) return o(e, r); var t = Object.prototype.toString.call(e).slice(8, -1); "Object" === t && e.constructor && (t = e.constructor.name); if ("Map" === t || "Set" === t) return Array.from(e); if ("Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)) return o(e, r); }(e) || function () { throw new TypeError("Invalid attempt to spread non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function o(e, r) { (null == r || r > e.length) && (r = e.length);

for (var t = 0, n = new Array(r); t < r; t++) { n[t] = e[t]; } return n; } var y = !0, l = null, m = { code: "triplelift", supportedMediaTypes: [n.b, n.d], isBidRequestValid: function isBidRequestValid(e) { if (e.mediaTypes.video) { var r = b(e); if (!r.w || !r.h) return !1; } return void 0 !== e.params.inventoryCode; }, buildRequests: function buildRequests(e, r) { var t, n = "https://tlx.3lift.com/header/auction?", i = function (e) { var r = {}, t = e[0].schain, n = function () { var e = {}, r = p({}, a.b.getConfig("fpd.context")), t = p({}, a.b.getConfig("fpd.user")); return g(e, r), g(e, t), e; }(); r.imp = e.map(function (e, r) { var t = { id: r, tagid: e.params.inventoryCode, floor: function (e) { var r = null; { var t; "function" == typeof e.getFloor && ("object" !== c(t = e.getFloor({ currency: "USD", mediaType: "banner", size: S(e.sizes) })) || "USD" !== t.currency || isNaN(parseFloat(t.floor)) || (r = parseFloat(t.floor))); } return null !== r ? r : e.params.floor; }(e) }; return !function (e) { if (!e.mediaTypes.video) return !1; if (!e.mediaTypes.video.context) return !1; return "instream" === e.mediaTypes.video.context.toLowerCase(); }(e) ? e.mediaTypes.banner && (t.banner = { format: S(e.sizes) }) : t.video = b(e), t; }); var i = [].concat(f(function (e) { return v(e, "tdid"https://r.search.yahoo.com/,"adserver.org"https://r.search.yahoo.com/,"TDID"); }(e)), f(function (e) { return v(e, "idl_env"https://r.search.yahoo.com/,"liveramp.com"https://r.search.yahoo.com/,"idl"); }(e)), f(function (e) { return v(e, "criteoId"https://r.search.yahoo.com/,"criteo.com"https://r.search.yahoo.com/,"criteoId"); }(e))); 0 < i.length && (r.user = { ext: { eids: i } }); var o = function (e, r) { var t = {}; u.isEmpty(e) || (t.schain = s({}, e)); u.isEmpty(r) || (t.fpd = s({}, r)); return t; }(t, n); u.isEmpty(o) || (r.ext = o); return r; }(e); return n = u.tryAppendQueryString(n, "lib"https://r.search.yahoo.com/,"prebid"), n = u.tryAppendQueryString(n, "v"https://r.search.yahoo.com/,"4.13.0"), r && r.refererInfo && (t = r.refererInfo.referer, n = u.tryAppendQueryString(n, "referrer", t)), r && r.timeout && (n = u.tryAppendQueryString(n, "tmax", r.timeout)), r && r.gdprConsent && (void 0 !== r.gdprConsent.gdprApplies && (y = r.gdprConsent.gdprApplies, n = u.tryAppendQueryString(n, "gdpr", y.toString())), void 0 !== r.gdprConsent.consentString && (l = r.gdprConsent.consentString, n = u.tryAppendQueryString(n, "cmp_cs", l))), r && r.uspConsent && (n = u.tryAppendQueryString(n, "us_privacy", r.uspConsent)), !0 === a.b.getConfig("coppa") && (n = u.tryAppendQueryString(n, "coppa", !0)), n.lastIndexOf("&") === n.length - 1 && (n = n.substring(0, n.length - 1)), u.logMessage("tlCall request built: " + n), { method: "POST", url: n, data: i, bidderRequest: r }; }, interpretResponse: function interpretResponse(e, r) { var t = r.bidderRequest; return (e.body.bids || []).map(function (e) { return function (e, r) { var t = {}, n = r.width || 1, i = r.height || 1, o = r.deal_id || "", u = r.crid || "", a = e.bids[r.imp_id]; 0 != r.cpm && r.ad && (t = { requestId: a.bidId, cpm: r.cpm, width: n, height: i, netRevenue: !0, ad: r.ad, creativeId: u, dealId: o, currency: "USD", ttl: 300, tl_source: r.tl_source, meta: {} }, a.mediaTypes.video && (t.vastXml = r.ad, t.mediaType = "video"), r.advertiser_name && (t.meta.advertiserName = r.advertiser_name)); return t; }(t, e); }); }, getUserSyncs: function getUserSyncs(e, r, t, n) { var i = function (e) { if (!e) return; if (e.iframeEnabled) return "iframe"; if (e.pixelEnabled) return "image"; }(e); if (i) { var o = "https://eb2.3lift.com/sync?"; return "image" === i && (o = u.tryAppendQueryString(o, "px", 1), o = u.tryAppendQueryString(o, "src"https://r.search.yahoo.com/,"prebid")), null !== l && (o = u.tryAppendQueryString(o, "gdpr", y), o = u.tryAppendQueryString(o, "cmp_cs", l)), n && (o = u.tryAppendQueryString(o, "us_privacy", n)), [{ type: i, url: o }]; } } }; function b(e) { var r = s(s({}, e.params.video), e.mediaTypes.video); return r.w || (r.w = r.playerSize[0][0]), r.h || (r.h = r.playerSize[0][1]), "instream" === r.context && (r.placement = 1), delete r.playerSize, r; } function g(r, t) { u.isEmpty(t) || Object.keys(t).forEach(function (e) { null != t[e] && (r[e] = t[e]); }); } function v(e, r, t, n) { return e.map((u = r, function (e) { return e && e.userId && e.userId[u]; })).filter(function (e) { return !!e; }).map((i = t, o = n, function (e) { return { source: i, uids: [{ id: e, ext: { rtiPartner: o } }] }; })); var i, o, u; } function S(e) { return e.filter(h).map(function (e) { return { w: e[0], h: e[1] }; }); } function h(e) { return 2 === e.length && "number" == typeof e[0] && "number" == typeof e[1]; } Object(i.registerBidder)(m); } }, [816]); pbjs.processQueue(); }, {}]; window.modules["via.legacy"] = [function(require,module,exports){"use strict"; DS.service("via", function () { "use strict"; // remove `via` from url, to be used after amplitude logs it to prevent users from sharing such urls function removeFromLocation() { var url = new URL(location.href); url.searchParams.delete("via"); history.replaceState(null, "", url.toString()); } // and add `via` param to any outbound links function addViaToUrl(href, via) { if (!href || href.substr(0, 1) === "#") { return href; // don't add to jumps on the current page, e.g. "Skip to main content" } var url = new URL(href); var apexDomain = new URL(location.href).hostname.split(".").slice(-2).join("."); if (url.hostname.indexOf(apexDomain) === -1) { return href; // don't add it to external links } url.searchParams.set("via", via); return url.toString(); } // keys correspond to "page_types" in editable_components.yml var PREFIXES = { article: "article", homepage: "homepage", "vertical front": "section", "rubric front": "rubric" }; var pageType; function setPageType(amplitudePageType) { pageType = PREFIXES[amplitudePageType]; } var DELIMITER = "_"; function concatVia(node, via) { var tag = node.dataset && node.dataset.via; if (tag) { via = (via.length ? tag + DELIMITER : tag) + via; } return via; } function addToClickedLinks() { document.documentElement.addEventListener("click", function (e) { var a; var via = ""; // detect link nodes and collect via directives to append to the href var node = e.target; // the element where this event originated may have been removed from the dom, e.g. in the case of the OIL CMP which disappears after you interact with it while (node && node !== e.currentTarget) { if (node.tagName === "A") { a = node; } via = concatVia(node, via); node = node.parentNode; } if (a && via) { if (pageType) { via = pageType + DELIMITER + via; } a.href = addViaToUrl(a.href, via); } }); } function addToSubmittedForms() { document.documentElement.addEventListener("submit", function (e) { var form = e.target; // collect via directives var via = ""; var node = e.target; while (node !== e.currentTarget) { via = concatVia(node, via); node = node.parentNode; } if (via) { if (pageType) { via = pageType + DELIMITER + via; } // dynamically create a hidden input for the form url var input = document.createElement("input"); input.type = "hidden"; input.name = "via"; input.value = via; form.appendChild(input); } }); } // start listening only once, when first injected addToClickedLinks(); addToSubmittedForms(); return { setPageType: setPageType, removeFromLocation: removeFromLocation }; }); }, {}]; window.modules["visibility.legacy"] = [function(require,module,exports){"use strict"; DS.service("$visibility", ["$document"https://r.search.yahoo.com/,"$window"https://r.search.yahoo.com/,"_throttle"https://r.search.yahoo.com/,"Eventify", function ($document, $window, _throttle, Eventify) { var list = [], Visible, VisibleEvent; /** * @param {number} a * @param {number} b * @returns {*} * @see http://jsperf.com/math-min-vs-if-condition-vs/8 */ function min(a, b) { return a < b ? a : b; } /** * @param {number} a * @param {number} b * @returns {*} * @see http://jsperf.com/math-min-vs-if-condition-vs/8 */ function max(a, b) { return a > b ? a : b;
}
/**
* Fast loop through watched elements
*/

function onScroll() {
list.forEach(updateVisibility);
}
/**
* updates seen property
* @param {Visble} item
* @param {{}} evt
* @fires Visible#shown
* @fires Visible#hidden
*/

function updateSeen(item, evt) {
var px = evt.visiblePx,
percent = evt.visiblePercent; // if some pixels are visible and we’re greater/equal to threshold

if (px && percent >= item.shownThreshold && !item.seen) {
item.seen = true;
setTimeout(function () {
item.trigger(“shown”, new VisibleEvent(“shown”, evt));
}, 15); // if no pixels or percent is less than threshold
} else if ((!px || percent < item.hiddenThreshold) && item.seen) { item.seen = false; setTimeout(function () { item.trigger("hidden", new VisibleEvent("hidden", evt)); }, 15); } } /** * sets preload property * @param {Visible} item * @param {{}} evt * @param {Number} innerHeight * @fires Visible#preload */ function updatePreload(item, evt, innerHeight) { if (!item.preload && item.preloadThreshhold && shouldBePreloaded(evt.target, evt.rect, item.preloadThreshhold, innerHeight)) { item.preload = true; setTimeout(function () { item.trigger("preload", new VisibleEvent("preload", evt)); }, 15); } } /** * Trigger events * @param {Visible} item */ function updateVisibility(item) { var rect = item.el.getBoundingClientRect(), innerHeight = $window.innerHeight || $document.documentElement.clientHeight, px = getVerticallyVisiblePixels(rect, innerHeight), percent = px / (rect.height || innerHeight), evt = { target: item.el, rect: rect, visiblePx: px, visiblePercent: percent }; updateSeen(item, evt); updatePreload(item, evt, innerHeight); } /** * Return normalized viewport height * @return {number} */ function getViewportHeight() { return $window.innerHeight || $document.documentElement.clientHeight || $document.body.clientHeight; } /** * Return normalized viewport width * @return {number} */ function getViewportWidth() { return $window.innerWidth || $document.documentElement.clientWidth || $document.body.clientWidth; } /** * make sure an element isn't hidden by styles or etc * @param {Element} el * @return {Boolean} */ function isElementNotHidden(el) { return el && el.offsetParent !== null && !el.getAttribute("hidden") && getComputedStyle(el).display !== "none" && getComputedStyle(el).visibility !== "hidden"; } /** * Apparently the fastest way... * @param {Element} el * @returns {boolean} * @example if (!$visibility.isElementInViewport(el)) { ... } */ function isElementInViewport(el) { var rect = el.getBoundingClientRect(); return rect.top >= 0 && rect.left >= 0 && rect.bottom <= ($window.innerHeight || $document.documentElement.clientHeight) && rect.right <= ($window.innerWidth || $document.documentElement.clientWidth); } /** * @param {Element} el * @param {ClientRect} rect * @param {Number} preloadThreshhold * @param {Number} innerHeight * @return {Boolean} */ function shouldBePreloaded(el, rect, preloadThreshhold, innerHeight) { return rect.top <= innerHeight + preloadThreshhold && isElementNotHidden(el); } /** * Create a one-dimensional spacial hash of x * @param {number} x * @param {number} stepSize * @param {number} optimalK * @param {number} base * @return {number} */ function getLinearSpacialHash(x, stepSize, optimalK, base) { var index = Math.floor(x / (stepSize || 1)), remainder = x % stepSize, result = index.toString(base); if (optimalK > 1) {
result += getLinearSpacialHash(remainder, Math.floor(stepSize / base), optimalK – 1, base);
}

return result;
}
/**
* @param {ClientRect} rect
* @param {number} innerHeight
* @returns {number}
*/

function getVerticallyVisiblePixels(rect, innerHeight) {
return min(innerHeight, max(rect.bottom, 0)) – min(max(rect.top, 0), innerHeight);
}
/**
* Get offset of element relative to entire page
*
* @param {Element} el
* @returns {{left: number, top: number}}
* @see http://jsperf.com/offset-vs-getboundingclientrect/7
*/

function getPageOffset(el) {
var offsetLeft = el.offsetLeft,
offsetTop = el.offsetTop;

while (el = el.offsetParent) {
offsetLeft += el.offsetLeft;
offsetTop += el.offsetTop;
}

return {
left: offsetLeft,
top: offsetTop
};
}
/**
* Create a new Visible class to observe when elements enter and leave the viewport
*
* Call destroy function to stop listening (this is until we have better support for watching for Node Removal)
* @param {Element} el
* @param {{shownThreshold: number, hiddenThreshold: number}} [options]
* @class
* @example this.visible = new $visibility.Visible(el);
*/

Visible = function Visible(el, options) {
options = options || {};
this.el = el;
this.seen = false;
this.preload = false;
this.preloadThreshhold = options && options.preloadThreshhold || 0;
this.shownThreshold = options && options.shownThreshold || 0;
this.hiddenThreshold = options && min(options.shownThreshold, options.hiddenThreshold) || 0;
list.push(this);
updateVisibility(this); // set immediately to visible or not
};

Visible.prototype = {
/**
* Stop triggering.
*/
destroy: function destroy() {
// remove from list
list.splice(list.indexOf(this), 1);
}
/**
* @name Visible#on
* @function
* @param {‘shown’|’hidden’} e EventName
* @param {function} cb Callback
*/

/**
* @name Visible#trigger
* @function
* @param {‘shown’|’hidden’} e
* @param {{}}
*/

};
Eventify.enable(Visible.prototype);

VisibleEvent = function VisibleEvent(type, options) {
var _this = this;

this.type = type;
Object.keys(options).forEach(function (key) {
_this[key] = options[key];
});
}; // listen for scroll events (throttled)

$document.addEventListener(“scroll”, _throttle(onScroll, 200)); // public

this.getPageOffset = getPageOffset;
this.getLinearSpacialHash = getLinearSpacialHash;
this.getVerticallyVisiblePixels = getVerticallyVisiblePixels;
this.getViewportHeight = getViewportHeight;
this.getViewportWidth = getViewportWidth;
this.isElementNotHidden = isElementNotHidden;
this.isElementInViewport = isElementInViewport;
this.Visible = Visible;
}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==”function”&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(“Cannot find module ‘”+o+”‘”);throw f.code=”MODULE_NOT_FOUND”,f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==”function”&&require;for(var o=0;o

Source Article

Next Post

The reinvented, remote world of co-ops under COVID-19 | Life and Arts

The University of Cincinnati is known for being one of America’s best co-op schools. With the pandemic, students are continuing a fully online co-op experience in the comfort of their homes. Pixabay | jagritparajuli99 Like everyone else, the COVID-19 has deeply affected College students. COVID has altered the way they […]