PageSourceSearch

https://www.kloos.at/wp-content/themes/kloos-theme/js/vendor/plyr.min.js?ver=1

js kloos.at collected 2026-10-08 03:40:23 UTC 89,744 bytes, 1,712 lines download raw bytes

1!function (e, t) {
2  "use strict";
3  "object" == typeof module && "object" == typeof module.exports ? module.exports = t(e, document) : "function" == typeof define && define.amd ? define([], function () {
4    return t(e, document)
5  }) : e.plyr = t(e, document)
6}("undefined" != typeof window ? window : this, function (e, t) {
7  "use strict";
8
9  function n() {
10    var e = t.getElementsByTagName("script");
11    if (e && e.length) for (var n = 0; n < e.length; n++) if (e[n].src.indexOf("plyr.js") > -1 || e[n].src.indexOf("plyr.min.js") > -1) return e[n]
12  }
13
14  function a() {
15    var e, n, a, i = navigator.userAgent, r = navigator.appName, s = "" + parseFloat(navigator.appVersion),
16      o = parseInt(navigator.appVersion, 10), l = !1, u = !1, d = !1, c = !1, p = !1;
17    return -1 !== navigator.appVersion.indexOf("Windows NT") && -1 !== navigator.appVersion.indexOf("rv:11") ? (l = !0, r = "IE", s = "11") : -1 !== (n = i.indexOf("MSIE")) ? (l = !0, r = "IE", s = i.substring(n + 5)) : -1 !== (n = i.indexOf("Edge")) ? (u = !0, r = "Edge", s = i.substring(n + 5)) : -1 !== (n = i.indexOf("Chrome")) ? (c = !0, r = "Chrome", s = i.substring(n + 7)) : -1 !== (n = i.indexOf("Safari")) ? (p = !0, r = "Safari", s = i.substring(n + 7), -1 !== (n = i.indexOf("Version")) && (s = i.substring(n + 8))) : -1 !== (n = i.indexOf("Firefox")) ? (d = !0, r = "Firefox", s = i.substring(n + 8)) : (e = i.lastIndexOf(" ") + 1) < (n = i.lastIndexOf("/")) && (r = i.substring(e, n), s = i.substring(n + 1), r.toLowerCase() === r.toUpperCase() && (r = navigator.appName)), -1 !== (a = s.indexOf(";")) && (s = s.substring(0, a)), -1 !== (a = s.indexOf(" ")) && (s = s.substring(0, a)), o = parseInt("" + s, 10), isNaN(o) && (s = "" + parseFloat(navigator.appVersion), o = parseInt(navigator.appVersion, 10)), {
18      name: r,
19      version: o,
20      isIE: l,
21      isEdge: u,
22      isFirefox: d,
23      isChrome: c,
24      isSafari: p,
25      isIos: /(iPad|iPhone|iPod)/gi.test(navigator.platform),
26      isTouch: "ontouchstart" in t.documentElement
27    }
28  }
29
30  function i(e) {
31    if (!t.querySelectorAll('script[src="' + e + '"]').length) {
32      var n = t.createElement("script");
33      n.src = e;
34      var a = t.getElementsByTagName("script")[0];
35      a.parentNode.insertBefore(n, a)
36    }
37  }
38
39  function r(e, t) {
40    return Array.prototype.indexOf && -1 !== e.indexOf(t)
41  }
42
43  function s(e, t, n) {
44    return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g, "\\$1"), "g"), n)
45  }
46
47  function o(e, t) {
48    e.length || (e = [e]);
49    for (var n = e.length - 1; n >= 0; n--) {
50      var a = n > 0 ? t.cloneNode(!0) : t, i = e[n], r = i.parentNode, s = i.nextSibling;
51      return a.appendChild(i), s ? r.insertBefore(a, s) : r.appendChild(a), a
52    }
53  }
54
55  function l(e) {
56    e && e.parentNode.removeChild(e)
57  }
58
59  function u(e, t) {
60    e.insertBefore(t, e.firstChild)
61  }
62
63  function d(e, t) {
64    for (var n in t) e.setAttribute(n, F.boolean(t[n]) && t[n] ? "" : t[n])
65  }
66
67  function c(e, n, a) {
68    var i = t.createElement(e);
69    d(i, a), u(n, i)
70  }
71
72  function p(e, t, n) {
73    if (e) if (e.classList) e.classList[n ? "add" : "remove"](t); else {
74      var a = (" " + e.className + " ").replace(/\s+/g, " ").replace(" " + t + " ", "");
75      e.className = a + (n ? " " + t : "")
76    }
77  }
78
79  function y(e, t) {
80    return !!e && (e.classList ? e.classList.contains(t) : new RegExp("(\\s|^)" + t + "(\\s|$)").test(e.className))
81  }
82
83  function m(e, n) {
84    var a = Element.prototype;
85    return (a.matches || a.webkitMatchesSelector || a.mozMatchesSelector || a.msMatchesSelector || function (e) {
86      return -1 !== [].indexOf.call(t.querySelectorAll(e), this)
87    }).call(e, n)
88  }
89
90  function f(e, t, n, a, i) {
91    g(e, t, function (t) {
92      n && n.apply(e, [t]), a.apply(e, [t])
93    }, i)
94  }
95
96  function b(e, t, n, a, i) {
97    var r = t.split(" ");
98    if (F.boolean(i) || (i = !1), e instanceof NodeList) for (var s = 0; s < e.length; s++) e[s] instanceof Node && b(e[s], arguments[1], arguments[2], arguments[3]); else for (var o = 0; o < r.length; o++) e[a ? "addEventListener" : "removeEventListener"](r[o], n, i)
99  }
100
101  function g(e, t, n, a) {
102    F.undefined(e) || b(e, t, n, !0, a)
103  }
104
105  function v(e, t, n, a) {
106    F.undefined(e) || b(e, t, n, !1, a)
107  }
108
109  function h(e, t, n, a) {
110    if (e && t) {
111      F.boolean(n) || (n = !1);
112      var i = new CustomEvent(t, {bubbles: n, detail: a});
113      e.dispatchEvent(i)
114    }
115  }
116
117  function _(e, t) {
118    if (e) return t = F.boolean(t) ? t : !e.getAttribute("aria-pressed"), e.setAttribute("aria-pressed", t), t
119  }
120
121  function k(e, t) {
122    return 0 === e || 0 === t || isNaN(e) || isNaN(t) ? 0 : (e / t * 100).toFixed(2)
123  }
124
125  function x() {
126    var e = arguments;
127    if (e.length) {
128      if (1 === e.length) return e[0];
129      for (var t = Array.prototype.shift.call(e), n = e.length, a = 0; a < n; a++) {
130        var i = e[a];
131        for (var r in i) i[r] && i[r].constructor && i[r].constructor === Object ? (t[r] = t[r] || {}, x(t[r], i[r])) : t[r] = i[r]
132      }
133      return t
134    }
135  }
136
137  function S(n, b) {
138    function S(e, t, n, a) {
139      h(e, t, n, x({}, a, {plyr: xt}))
140    }
141
142    function C(t, n) {
143      b.debug && e.console && (n = Array.prototype.slice.call(n), F.string(b.logPrefix) && b.logPrefix.length && n.unshift(b.logPrefix), console[t].apply(console, n))
144    }
145
146    function N() {
147      return {url: b.iconUrl, absolute: 0 === b.iconUrl.indexOf("http") || St.browser.isIE}
148    }
149
150    function M(e, t) {
151      var n = ["font-style_none", "font-style_raised", "font-style_depressed", "font-style_uniform", "font-style_dropshadow"];
152      return 3 === e ? t.indexOf("black") > -1 || t.indexOf("blue") > -1 ? n[3] + "_white" : n[3] + "_black" : n[e]
153    }
154
155    function D() {
156      var e = ["white", "black", "red", "green", "blue", "yellow", "magenta", "cyan"],
157        t = ["opaque", "translucent", "semitransparent", "transparent"],
158        n = ["font_mono_serif", "font_proportional_serif", "font_mono_sans_serif", "font_proportional_sans_serif", "font_casual", "font_cursive", "font_small_caps"],
159        a = ["font-size_50", "font-size_100", "font-size_150", "font-size_200"],
160        i = "txt_" + e[St.captions.fontColorIndex] + "_" + t[St.captions.fontOpacityIndex],
161        r = "bg_" + e[St.captions.backgroundColorIndex] + "_" + t[St.captions.backgroundOpacityIndex];
162      return [n[St.captions.fontIndex], i, M(St.captions.fontStyleIndex, i), a[St.captions.fontSizeIndex], r].join(".")
163    }
164
165    function B() {
166      W(b.selectors.settings.font, St.captions.fonts, function () {
167        var e = this, t = parseInt(e.dataset.index);
168        St.captions.font = e.innerText, F.htmlElement(St.settings.font) && (St.settings.font.innerText = St.captions.font), St.captions.fontIndex = t, de(), oe()
169      })
170    }
171
172    function L() {
173      W(b.selectors.settings.fontColor, St.captions.colors, function () {
174        var e = this, t = parseInt(e.dataset.index);
175        St.captions.fontColor = e.innerText, F.htmlElement(St.settings.fontColor) && (St.settings.fontColor.innerText = St.captions.fontColor), St.captions.fontColorIndex = t, de(), oe()
176      })
177    }
178
179    function z() {
180      W(b.selectors.settings.fontSize, St.captions.fontSizes, function () {
181        var e = this, t = parseInt(e.dataset.index);
182        St.captions.fontSize = e.innerText, F.htmlElement(St.settings.fontSize) && (St.settings.fontSize.innerText = St.captions.fontSize), St.captions.fontSizeIndex = t, de(), oe()
183      })
184    }
185
186    function V() {
187      W(b.selectors.settings.fontOpacity, St.captions.opacities, function () {
188        var e = this, t = parseInt(e.dataset.index);
189        St.captions.fontOpacity = e.innerText, F.htmlElement(St.settings.fontOpacity) && (St.settings.fontOpacity.innerText = St.captions.fontOpacity), St.captions.fontOpacityIndex = t, de(), oe()
190      })
191    }
192
193    function j() {
194      W(b.selectors.settings.fontStyle, St.captions.fontStyles, function () {
195        var e = this, t = parseInt(e.dataset.index);
196        St.captions.fontStyle = e.innerText, F.htmlElement(St.settings.fontStyle) && (St.settings.fontStyle.innerText = St.captions.fontStyle), St.captions.fontStyleIndex = t, de(), oe()
197      })
198    }
199
200    function q() {
201      W(b.selectors.settings.backgroundColor, St.captions.colors, function () {
202        var e = this, t = parseInt(e.dataset.index);
203        St.captions.backgroundColor = e.innerText, F.htmlElement(St.settings.backgroundColor) && (St.settings.backgroundColor.innerText = St.captions.backgroundColor), St.captions.backgroundColorIndex = t, de(), oe()
204      })
205    }
206
207    function R() {
208      W(b.selectors.settings.backgroundOpacity, St.captions.opacities, function () {
209        var e = this, t = parseInt(e.dataset.index);
210        St.captions.backgroundOpacity = e.innerText, F.htmlElement(St.settings.backgroundOpacity) && (St.settings.backgroundOpacity.innerText = St.captions.backgroundOpacity), St.captions.backgroundOpacityIndex = t, de(), oe()
211      })
212    }
213
214    function W(e, n, a) {
215      var i = me(e);
216      if (F.htmlElement(i)) {
217        for (var r = t.createDocumentFragment(), s = 0; s < n.length; s++) r.appendChild(Y(n[s], s, a));
218        i.appendChild(r)
219      }
220    }
221
222    function Y(e, n, a) {
223      var i = t.createElement("li"), r = t.createElement("button");
224      return r.setAttribute("type", "button"), r.setAttribute("aria-controls", "plyr-settings-" + St.id + "-captionStyle"), r.innerText = e, r.dataset.index = n, a && (r.onclick = a), i.appendChild(r), i
225    }
226
227    function H() {
228      var e = this, t = parseInt(e.dataset.id, 10);
229      St.adaptivePlayer.audioTrackId = t, U(e.dataset.name)
230    }
231
232    function U(e) {
233      F.htmlElement(St.settings.audio) && (St.settings.audio.innerText = e)
234    }
235
236    function G() {
237      var e = this, t = parseInt(e.dataset.index);
238      Ke(t), St.captionsEnabled = t >= 0, oe()
239    }
240
241    function X(e) {
242      F.htmlElement(St.settings.caption) && (St.settings.caption.innerText = e)
243    }
244
245    function K() {
246      if (r(b.controls, "settings")) {
247        for (var e = me(b.selectors.settings.captions); e.lastChild && e.children.length > 1;) e.removeChild(e.lastChild);
248        var n = t.createDocumentFragment(), a = t.createElement("li"), i = t.createElement("button");
249        i.setAttribute("type", "button"), i.innerText = b.i18n.none, i.dataset.index = -1, i.onclick = G, a.appendChild(i), n.appendChild(a);
250        for (var s = 0; s < St.media.textTracks.length; s++) if ("subtitles" === St.media.textTracks[s].kind || "captions" === St.media.textTracks[s].kind) {
251          a = t.createElement("li"), i = t.createElement("button"), i.setAttribute("type", "button"), i.setAttribute("aria-controls", "plyr-settings-" + St.id + "-primary");
252          var o = St.media.textTracks[s].label;
253          "" === o && (o = "Subtitles"), i.innerText = o, i.dataset.index = s, i.onclick = G, a.appendChild(i), n.appendChild(a)
254        }
255        e.appendChild(n)
256      }
257    }
258
259    function J() {
260      if (r(b.controls, "settings")) {
261        for (var e = me(b.selectors.settings.audio); e.lastChild && e.children.length > 1;) e.removeChild(e.lastChild);
262        var n = t.createDocumentFragment(), a = St.adaptivePlayer.audioTracks;
263        if (!a) return;
264        for (var i = 0; i < a.length; i++) {
265          var s = a[i], o = ae(s), l = t.createElement("li"), u = t.createElement("button");
266          u.setAttribute("type", "button"), u.setAttribute("aria-controls", "plyr-settings-" + St.id + "-primary"), u.innerText = o, u.dataset.id = s.id, u.dataset.name = o, u.onclick = H, l.appendChild(u), n.appendChild(l), s.enabled && U(o)
267        }
268        e.appendChild(n)
269      }
270    }
271
272    function $() {
273      return !St.browser.isFirefox && (!St.browser.isEdge && !St.browser.isIE)
274    }
275
276    function Q() {
277      r(b.controls, "settings") && F.htmlElement(St.buttons.settings) && ($() ? (B(), L(), z(), V(), j(), q(), R()) : St.settings.captionTab.setAttribute("style", "display: none;"))
278    }
279
280    function Z() {
281      var e = "LIVE" === St.adaptivePlayer.playlistType;
282      if (Q(), b.showThumbnails && !St.adaptivePlayer.supportsThumbnails) {
283        St.progress.container.removeChild(St.progress.seek.container);
284        var n = t.createElement("span");
285        n.setAttribute("class", "plyr__tooltip plyr__tooltip--container plyr__tooltip--time"), n.innerText = "00:00", St.progress.container.appendChild(n), St.progress.seek = {
286          container: me(b.selectors.progress.seek.container),
287          tooltip: me(b.selectors.progress.seek.tooltip),
288          thumbnail: me(b.selectors.progress.seek.thumbnail)
289        }
290      }
291      if (e) {
292        p(St.progress.container, b.classes.hideProgress, !0), St.currentTime && (p(St.currentTime, "plyr__time--current", !1), p(St.currentTime, "plyr__time", !0), St.currentTime.innerHTML = "LIVE", St.currentTime = void 0), St.duration && St.duration.setAttribute("style", "display: none;"), St.buttons && St.buttons.pause && St.buttons.pause.setAttribute("style", "display: none;"), b.clickToPlay = !1;
293        var a = me("." + b.classes.videoWrapper);
294        a && (a.style.cursor = "default", v(a, "click", mt))
295      }
296    }
297
298    function ee() {
299      St.captions = {}, St.captions.fonts = [b.i18n.monoSerif, b.i18n.proportionalSerif, b.i18n.monoSansSerif, b.i18n.proportionalSansSerif, b.i18n.casual, b.i18n.cursive, b.i18n.smallCaps], St.captions.colors = [b.i18n.white, b.i18n.black, b.i18n.red, b.i18n.green, b.i18n.blue, b.i18n.yellow, b.i18n.magenta, b.i18n.cyan], St.captions.opacities = [b.i18n.opaque, b.i18n.translucent, b.i18n.semitransparent, b.i18n.transparent], St.captions.fontSizes = ["50%", "100%", "150%", "200%"], St.captions.fontStyles = [b.i18n.none, b.i18n.raised, b.i18n.depressed, b.i18n.uniform, b.i18n.dropShadow], re() || (St.captions.fontIndex = 3, St.captions.fontColorIndex = 0, St.captions.fontSizeIndex = 1, St.captions.fontOpacityIndex = 0, St.captions.fontStyleIndex = 4, St.captions.backgroundColorIndex = 1, St.captions.backgroundOpacityIndex = 3), St.captions.font = St.captions.fonts[St.captions.fontIndex], St.captions.fontColor = St.captions.colors[St.captions.fontColorIndex], St.captions.fontSize = St.captions.fontSizes[St.captions.fontSizeIndex], St.captions.fontOpacity = St.captions.opacities[St.captions.fontOpacityIndex], St.captions.fontStyle = St.captions.fontStyles[St.captions.fontStyleIndex], St.captions.backgroundColor = St.captions.colors[St.captions.backgroundColorIndex], St.captions.backgroundOpacity = St.captions.opacities[St.captions.backgroundOpacityIndex]
300    }
301
302    function te() {
303      var e = [], t = N(), n = (t.absolute ? "" : t.url) + "#" + b.iconPrefix;
304      return e.push('<div class="plyr__ad-overlay">'), e.push('<span class="plyr__time">', '<span class="plyr__sr-only">' + b.i18n.adDuration + "</span>", '<span class="plyr__time--ad-duration">00:00</span>
304', "</span>"), e.push("</div>"), r(b.controls, "play-large") && e.push('<button type="button" data-plyr="play" class="plyr__play-large">', '<svg><use xlink:href="' + n + '-play" /></svg>', '<span class="plyr__sr-only">' + b.i18n.play + "</span>", "</button>"), e.push('<div class="plyr__controls">'), r(b.controls, "restart") && e.push('<button type="button" data-plyr="restart">', '<svg><use xlink:href="' + n + '-restart" /></svg>', '<span class="plyr__sr-only">' + b.i18n.restart + "</span>", "</button>"), r(b.controls, "rewind") && e.push('<button type="button" data-plyr="rewind">', '<svg><use xlink:href="' + n + '-rewind" /></svg>', '<span class="plyr__sr-only">' + b.i18n.rewind + "</span>", "</button>"), r(b.controls, "play") && e.push('<button type="button" data-plyr="play">', '<svg><use xlink:href="' + n + '-play" /></svg>', '<span class="plyr__sr-only">' + b.i18n.play + "</span>", "</button>", '<button type="button" data-plyr="pause">', '<svg><use xlink:href="' + n + '-pause" /></svg>', '<span class="plyr__sr-only">' + b.i18n.pause + "</span>", "</button>"), r(b.controls, "fast-forward") && e.push('<button type="button" data-plyr="fast-forward">', '<svg><use xlink:href="' + n + '-fast-forward" /></svg>', '<span class="plyr__sr-only">' + b.i18n.forward + "</span>", "</button>"), r(b.controls, "current-time") && e.push('<span class="plyr__time">', '<span class="plyr__sr-only">' + b.i18n.currentTime + "</span>", '<span class="plyr__time--current">00:00</span>', "</span>"), r(b.controls, "progress") ? (e.push('<span class="plyr__progress">', '<label for="seek{id}" class="plyr__sr-only">Seek</label>', '<input id="seek{id}" class="plyr__progress--seek" type="range" min="0" max="100" step="0.1" value="0" data-plyr="seek">', '<progress class="plyr__progress--played" max="100" value="0" role="presentation"></progress>', '<progress class="plyr__progress--buffer" max="100" value="0">', "<span>0</span>% " + b.i18n.buffered, "</progress>"), b.tooltips.seek && (b.showThumbnails ? e.push('<div class="plyr__tooltip plyr__tooltip--container">', '<img class="plyr__tooltip--thumbnail" />', '<div class="plyr__tooltip--time">00:00</div>', "</div>") : e.push('<span class="plyr__tooltip plyr__tooltip--container plyr__tooltip--time">00:00</span>')), e.push("</span>")) : e.push('<span class="plyr__progress"></span>'), r(b.controls, "duration") && e.push('<span class="plyr__time">', '<span class="plyr__sr-only">' + b.i18n.duration + "</span>", '<span class="plyr__time--duration">00:00</span>', "</span>"), r(b.controls, "mute") && e.push('<button type="button" data-plyr="mute">', '<svg class="icon--muted"><use xlink:href="' + n + '-muted" /></svg>', '<svg><use xlink:href="' + n + '-volume" /></svg>', '<span class="plyr__sr-only">' + b.i18n.toggleMute + "</span>", "</button>"), r(b.controls, "volume") && e.push('<span class="plyr__volume">', '<label for="volume-{id}" class="plyr__sr-only">' + b.i18n.volume + "</label>", '<input id="volume-{id}" class="plyr__volume--input" type="range" min="' + b.volumeMin + '" max="' + b.volumeMax + '" value="' + b.volume + '" data-plyr="volume">', '<progress class="plyr__volume--display" max="' + b.volumeMax + '" value="' + b.volumeMin + '" role="presentation"></progress>', "</span>"), r(b.controls, "captions") && e.push('<button type="button" data-plyr="captions">', '<svg class="icon--captions-on"><use xlink:href="' + n + '-captions-on" /></svg>', '<svg><use xlink:href="' + n + '-captions-off" /></svg>', '<span class="plyr__sr-only">' + b.i18n.toggleCaptions + "</span>", "</button>"), r(b.controls, "settings") && e.push('<div class="plyr__menu" data-plyr="settings">', '<button type="button" id="plyr-settings-toggle-{id}" aria-haspopup="true" aria-controls="plyr-settings-{id}" aria-expanded="false">', '<svg><use xlink:href="' + n + '-settings" /></svg>', '<span class="plyr__sr-only">' + b.i18n.settings + "</span>", "</button>", '<div class="plyr__menu__container" id="plyr-settings-{id}" aria-hidden="true" aria-labelled-by="plyr-settings-toggle-{id}" role="tablist" tabindex="-1">', "<div>", '<div class="plyr__menu__primary" id="plyr-settings-{id}-primary" aria-hidden="false" aria-labelled-by="plyr-settings-toggle-{id}" role="tabpanel" tabindex="-1">', "<ul>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-audio-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-audio" aria-expanded="false">', b.i18n.audio + ' <span class="plyr__menu__btn__value">' + b.i18n.none + "</span>", "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-captions-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-captions" aria-expanded="false">', b.i18n.captions + ' <span class="plyr__menu__btn__value">' + b.i18n.none + "</span>", "</button>", "</li>", '<li role="tab" id="plyr-settings-{id}-captionStyle-tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-captionStyle-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.captionStyle, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-captions" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captions-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-captions">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-primary" aria-expanded="false">', b.i18n.captions, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-audio" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-audio-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-audio">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-primary" aria-expanded="false">', b.i18n.audio, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-captionStyle" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-captionStyle">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-primary" aria-expanded="false">', b.i18n.captionStyle, "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-font-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-font" aria-expanded="false">', b.i18n.font + ' <span class="plyr__menu__btn__value">' + St.captions.font + "</span>", "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-fontColor-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-fontColor" aria-expanded="false">', b.i18n.fontColor + ' <span class="plyr__menu__btn__value">' + St.captions.fontColor + "</span>", "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-fontSize-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-fontSize" aria-expanded="false">', b.i18n.fontSize + ' <span class="plyr__menu__btn__value">' + St.captions.fontSize + "</span>", "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-fontOpacity-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-fontOpacity" aria-expanded="false">', b.i18n.fontOpacity + ' <span class="plyr__menu__btn__value">' + St.captions.fontOpacity + "</span>", "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-fontStyle-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-fontStyle" aria-expanded="false">', b.i18n.fontStyle + ' <span class="plyr__menu__btn__value">' + St.captions.fontStyle + "</span>", "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-backgroundColor-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-backgroundColor" aria-expanded="false">', b.i18n.backgroundColor + ' <span class="plyr__menu__btn__value">' + St.captions.backgroundColor + "</span>", "</button>", "</li>", '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--forward" id="plyr-settings-{id}-backgroundOpacity-toggle" aria-haspopup="true" aria-controls="plyr-settings-{id}-backgroundOpacity" aria-expanded="false">', b.i18n.backgroundOpacity + ' <span class="plyr__menu__btn__value">' + St.captions.backgroundOpacity + "</span>", "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-font" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-font">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.font, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-fontColor" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-fontColor">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.fontColor, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-fontSize" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-fontSize">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.fontSize, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-fontOpacity" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-fontOpacity">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.fontOpacity, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-fontStyle" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-fontStyle">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.fontStyle, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-backgroundColor" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-backgroundColor">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.backgroundColor, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-backgroundOpacity" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-backgroundOpacity">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.backgroundOpacity, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-windowColor" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-windowColor">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.windowColor, "</button>", "</li>", "</ul>", "</div>", '<div class="plyr__menu__secondary" id="plyr-settings-{id}-windowOpacity" aria-hidden="true" aria-labelled-by="plyr-settings-{id}-captionStyle-toggle" role="tabpanel" tabindex="-1">', '<ul data-plyr="settings-windowOpacity">', '<li role="tab">', '<button type="button" class="plyr__menu__btn plyr__menu__btn--back" aria-haspopup="true" aria-controls="plyr-settings-{id}-captionStyle" aria-expanded="false">', b.i18n.windowOpacity, "</button>", "</li>", "</ul>", "</div>", "</div>", "</div>", "</div>"), r(b.controls, "pip") && P.pip && e.push('<button type="button" data-plyr="pip">', '<svg><use xlink:href="' + n + '-pip" /></svg>', '<span class="plyr__sr-only">PIP</span>', "</button>"), r(b.controls, "airplay") && P.airplay && e.push('<button type="button" data-plyr="airplay">', '<svg><use xlink:href="' + n + '-airplay" /></svg>', '<span class="plyr__sr-only">AirPlay</span>', "</button>"), !r(b.controls, "fullscreen") || St.browser.isIos || St.browser.isOldSafari || e.push('<button type="button" data-plyr="fullscreen">', '<svg class="icon--exit-fullscreen"><use xlink:href="' + n + '-exit-fullscreen" /></svg>', '<svg><use xlink:href="' + n + '-enter-fullscreen" /></svg>', '<span class="plyr__sr-only">' + b.i18n.toggleFullscreen + "</span>", "</button>"), e.push("</div>"), e.join("")
305    }
306
307    function ne() {
308      if (St.supported.full && ("audio" !== St.type || b.fullscreen.allowAudio) && b.fullscreen.enabled) {
309        var e = P.fullscreen;
310        e || b.fullscreen.fallback && !fe() ? (Ct((e ? "Native" : "Fallback") + " fullscreen enabled"), p(St.container, b.classes.fullscreen.enabled, !0)) : Ct("Fullscreen not supported and fallback disabled"), St.buttons && St.buttons.fullscreen && _(St.buttons.fullscreen, !1), be()
311      }
312    }
313
314    function ae(e) {
315      var t = {
316        en: b.i18n.english,
317        de: b.i18n.german,
318        es: b.i18n.spanish,
319        fr: b.i18n.french,
320        it: b.i18n.italian,
321        dut: b.i18n.dutch,
322        pl: b.i18n.polish,
323        pt: b.i18n.portuguese,
324        ru: b.i18n.russian,
325        vi: b.i18n.vietnamese,
326        da: b.i18n.danish,
327        zh: b.i18n.chinese,
328        sv: b.i18n.swedish,
329        th: b.i18n.thai
330      };
331      if (e.label) return e.label;
332      if (e.language) {
333        var n = e.language.toLowerCase();
334        return t.hasOwnProperty(n) ? t[n] : e.language
335      }
336      return e.id
337    }
338
339    function ie() {
340      "video" === St.type && J()
341    }
342
343    function re() {
344      return !(!St.storage || !St.storage.captions) && (St.captions.fontIndex = St.storage.captions.fontIndex, St.captions.fontColorIndex = St.storage.captions.fontColorIndex, St.captions.fontSizeIndex = St.storage.captions.fontSizeIndex, St.captions.fontOpacityIndex = St.storage.captions.fontOpacityIndex, St.captions.fontStyleIndex = St.storage.captions.fontStyleIndex, St.captions.backgroundColorIndex = St.storage.captions.backgroundColorIndex, St.captions.backgroundOpacityIndex = St.storage.captions.backgroundOpacityIndex, !0)
345    }
346
347    function se() {
348      St.storage && St.storage.captions && St.storage.captions.selectedIndex && St.storage.captions.selectedIndex > 0 && St.storage.captions.selectedIndex < St.media.textTracks.length && ("subtitles" === St.media.textTracks[St.storage.captions.selectedIndex].kind || "captions" === St.media.textTracks[St.storage.captions.selectedIndex].kind) && (St.captionsEnabled = !0, Ke(St.storage.captions.selectedIndex))
349    }
350
351    function oe() {
352      we({
353        captions: {
354          selectedIndex: b.captions.selectedIndex,
355          fontIndex: St.captions.fontIndex,
356          fontColorIndex: St.captions.fontColorIndex,
357          fo
357ntSizeIndex: St.captions.fontSizeIndex,
358          fontOpacityIndex: St.captions.fontOpacityIndex,
359          fontStyleIndex: St.captions.fontStyleIndex,
360          backgroundColorIndex: St.captions.backgroundColorIndex,
361          backgroundOpacityIndex: St.captions.backgroundOpacityIndex
362        }
363      })
364    }
365
366    function le() {
367      if ("video" === St.type) {
368        var e = TextTrack.prototype.addCue;
369        St.media.textTracks.addEventListener("addtrack", function (t) {
370          var n = t.track, a = "subtitles" === n.kind || "captions" === n.kind;
371          a && (K(), se()), n.addCue = function (t) {
372            if (a && n.cues && n.cues.length > 0 && t.startTime.toFixed(3) === n.cues[n.cues.length - 1].startTime.toFixed(3) && t.startTime + .1 < t.endTime && (t.startTime += .1), a && $() && ce(t), St.browser.isIE || St.browser.isEdge) if (n.cues && n.cues.length > 0) {
373              for (var i = [], r = 0; r < n.cues.length; r++) t.startTime < n.cues[r].startTime && i.push(n.cues[r]);
374              for (var r = 0; r < i.length; r++) n.removeCue(i[r]);
375              e.apply(this, arguments);
376              for (var r = 0; r < i.length; r++) e.apply(this, [i[r]])
377            } else e.apply(this, arguments); else e.apply(this, arguments)
378          }, a && $() && St.adaptivePlayer && "NativePlayer" === St.adaptivePlayer.className && n.addEventListener("cuechange", ue)
379        }), St.media.textTracks.addEventListener("change", function () {
380          for (var e = 0; e < St.media.textTracks.length; e++) {
381            var t = St.media.textTracks[e];
382            if (("subtitles" === t.kind || "captions" === t.kind) && "showing" === t.mode) return void X(t.label)
383          }
384        })
385      }
386    }
387
388    function ue() {
389      if ($()) {
390        var e = this;
391        if (e.cues && e.cues.length > 0) for (var t = D(), n = 0; n < e.cues.length; n++) {
392          var a = e.cues[n];
393          pe(a, t)
394        }
395      }
396    }
397
398    function de() {
399      if ($() && !(b.captions.selectedIndex < 0 || b.captions.selectedIndex >= St.media.textTracks.length)) {
400        var e = St.media.textTracks[b.captions.selectedIndex], t = D();
401        if (e.activeCues && e.activeCues.length > 0) for (var n = 0; n < e.activeCues.length; n++) {
402          var a = e.activeCues[n];
403          e.addCue(a)
404        }
405        if (e.cues && e.cues.length > 0) for (var n = 0; n < e.cues.length; n++) {
406          var a = e.cues[n];
407          pe(a, t)
408        }
409      }
410    }
411
412    function ce(e) {
413      if ($()) {
414        pe(e, D())
415      }
416    }
417
418    function pe(e, t) {
419      e.originalText ? e.text = "<c." + t + ">" + e.originalText + "</c>" : (e.originalText = e.text, e.text = "<c." + t + ">" + e.text + "</c>")
420    }
421
422    function ye(e) {
423      return St.container.querySelectorAll(e)
424    }
425
426    function me(e) {
427      return ye(e)[0]
428    }
429
430    function fe() {
431      try {
432        return e.self !== e.top
433      } catch (e) {
434        return !0
435      }
436    }
437
438    function be() {
439      function e(e) {
440        9 === e.which && St.isFullscreen && (e.target !== a || e.shiftKey ? e.target === n && e.shiftKey && (e.preventDefault(), a.focus()) : (e.preventDefault(), n.focus()))
441      }
442
443      var t = ye("input:not([disabled]), button:not([disabled])"), n = t[0], a = t[t.length - 1];
444      g(St.container, "keydown", e)
445    }
446
447    function ge(e, t) {
448      if (F.string(t)) c(e, St.media, {src: t}); else if (t.constructor === Array) for (var n = t.length - 1; n >= 0; n--) c(e, St.media, t[n])
449    }
450
451    function ve() {
452      if (b.loadSprite) {
453        var e = N();
454        e.absolute ? (Ct("AJAX loading absolute SVG sprite" + (St.browser.isIE ? " (due to IE)" : "")), w(e.url, "sprite-plyr")) : Ct("Sprite will be used as external resource directly")
455      }
456      var n = b.html;
457      Ct("Injecting custom controls"), n || (n = te()), n = s(n, "{seektime}", b.seekTime), n = s(n, "{speed}", b.currentSpeed.toFixed(1).toString().replace(".0", "") + "&times;"), n = s(n, "{lang}", "English"), St.id = Math.floor(1e4 * Math.random()), n = s(n, "{id}", St.id);
458      var a;
459      if (F.string(b.selectors.controls.container) && (a = t.querySelector(b.selectors.controls.container)), F.htmlElement(a) || (a = St.container), a.insertAdjacentHTML("beforeend", n), b.tooltips.controls) for (var i = ye([b.selectors.controls.wrapper, " ", b.selectors.labels, " .", b.classes.hidden].join("")), r = i.length - 1; r >= 0; r--) {
460        var o = i[r];
461        p(o, b.classes.hidden, !1), p(o, b.classes.tooltip, !0)
462      }
463    }
464
465    function he() {
466      try {
467        return St.controls = me(b.selectors.controls.wrapper), St.buttons = {
468          seek: me(b.selectors.buttons.seek),
469          play: ye(b.selectors.buttons.play),
470          pause: me(b.selectors.buttons.pause),
471          restart: me(b.selectors.buttons.restart),
472          rewind: me(b.selectors.buttons.rewind),
473          forward: me(b.selectors.buttons.forward),
474          fullscreen: me(b.selectors.buttons.fullscreen),
475          settings: me(b.selectors.buttons.settings),
476          pip: me(b.selectors.buttons.pip)
477        }, St.buttons.mute = me(b.selectors.buttons.mute), St.buttons.captions = me(b.selectors.buttons.captions), St.progress = {container: me(b.selectors.progress.container)}, St.progress.buffer = function () {
478          var e = me(b.selectors.progress.buffer);
479          return {bar: e, text: F.htmlElement(e) && e.getElementsByTagName("span")[0]}
480        }(), St.progress.played = me(b.selectors.progress.played), St.progress.seek = {
481          container: me(b.selectors.progress.seek.container),
482          tooltip: me(b.selectors.progress.seek.tooltip),
483          thumbnail: me(b.selectors.progress.seek.thumbnail)
484        }, St.volume = {
485          input: me(b.selectors.volume.input),
486          display: me(b.selectors.volume.display)
487        }, St.duration = me(b.selectors.duration), St.currentTime = me(b.selectors.currentTime), St.seekTime = ye(b.selectors.seekTime), St.adDuration = me(b.selectors.adDuration), St.settings = function () {
488          var e = me("#plyr-settings-" + St.id + "-captionStyle-tab"),
489            t = me("#plyr-settings-" + St.id + "-captions-toggle"), n = me("#plyr-settings-" + St.id + "-audio-toggle"),
490            a = me("#plyr-settings-" + St.id + "-font-toggle"), i = me("#plyr-settings-" + St.id + "-fontColor-toggle"),
491            r = me("#plyr-settings-" + St.id + "-fontSize-toggle"),
492            s = me("#plyr-settings-" + St.id + "-fontOpacity-toggle"),
493            o = me("#plyr-settings-" + St.id + "-fontStyle-toggle"),
494            l = me("#plyr-settings-" + St.id + "-backgroundColor-toggle"),
495            u = me("#plyr-settings-" + St.id + "-backgroundOpacity-toggle"),
496            d = me("#plyr-settings-" + St.id + "-windowColor-toggle"),
497            c = me("#plyr-settings-" + St.id + "-windowOpacity-toggle");
498          return {
499            captionTab: F.htmlElement(e) && e,
500            caption: F.htmlElement(t) && t.getElementsByTagName("span")[0],
501            audio: F.htmlElement(n) && n.getElementsByTagName("span")[0],
502            font: F.htmlElement(a) && a.getElementsByTagName("span")[0],
503            fontColor: F.htmlElement(i) && i.getElementsByTagName("span")[0],
504            fontSize: F.htmlElement(r) && r.getElementsByTagName("span")[0],
505            fontOpacity: F.htmlElement(s) && s.getElementsByTagName("span")[0],
506            fontStyle: F.htmlElement(o) && o.getElementsByTagName("span")[0],
507            backgroundColor: F.htmlElement(l) && l.getElementsByTagName("span")[0],
508            backgroundOpacity: F.htmlElement(u) && u.getElementsByTagName("span")[0],
509            windowColor: F.htmlElement(d) && d.getElementsByTagName("span")[0],
510            windowOpacity: F.htmlElement(c) && c.getElementsByTagName("span")[0]
511          }
512        }(), !0
513      } catch (e) {
514        return Et("It looks like there is a problem with your controls HTML", e), ke(!0), !1
515      }
516    }
517
518    function _e() {
519      p(St.container, b.selectors.container.replace(".", ""), St.supported.full)
520    }
521
522    function ke(e) {
523      e && r(b.types.html5, St.type) ? St.media.setAttribute("controls", "") : St.media.removeAttribute("controls")
524    }
525
526    function xe(e) {
527      var t = b.i18n.play;
528      if (F.string(b.title) && b.title.length && (t += ", " + b.title, St.container.setAttribute("aria-label", b.title)), St.supported.full && St.buttons.play) for (var n = St.buttons.play.length - 1; n >= 0; n--) St.buttons.play[n].setAttribute("aria-label", t);
529      F.htmlElement(e) && e.setAttribute("title", b.i18n.frameTitle.replace("{title}", b.title))
530    }
531
532    function Se() {
533      var t = null;
534      St.storage = {}, P.storage && b.storage.enabled && (e.localStorage.removeItem("plyr-volume"), (t = e.localStorage.getItem(b.storage.key)) && (/^\d+(\.\d+)?$/.test(t) ? we({volume: parseFloat(t)}) : St.storage = x(St.storage, JSON.parse(t))))
535    }
536
537    function we(t) {
538      x(St.storage, t), P.storage && b.storage.enabled && e.localStorage.setItem(b.storage.key, JSON.stringify(St.storage))
539    }
540
541    function Te() {
542      if (!St.media) return void Et("No media element found!");
543      if (St.supported.full && (p(St.container, b.classes.type.replace("{0}", St.type), !0), r(b.types.embed, St.type) && p(St.container, b.classes.type.replace("{0}", "video"), !0), p(St.container, b.classes.pip.enabled, P.pip), p(St.container, b.classes.stopped, b.autoplay), p(St.container, b.classes.isIos, St.browser.isIos), p(St.container, b.classes.isTouch, St.browser.isTouch), "video" === St.type)) {
544        var e = t.createElement("div");
545        e.setAttribute("class", b.classes.videoWrapper), o(St.media, e), St.videoContainer = e
546      }
547      r(b.types.embed, St.type) && Ce()
548    }
549
550    function Ce() {
551      for (var n = t.createElement("div"), a = St.embedId, r = St.type + "-" + Math.floor(1e4 * Math.random()), s = ye('[id^="' + St.type + '-"]'), o = s.length - 1; o >= 0; o--) l(s[o]);
552      if (p(St.media, b.classes.videoWrapper, !0), p(St.media, b.classes.embedWrapper, !0), "youtube" === St.type) St.media.appendChild(n), n.setAttribute("id", r), F.object(e.YT) ? Ie(a, n) : (i(b.urls.youtube.api), e.onYouTubeReadyCallbacks = e.onYouTubeReadyCallbacks || [], e.onYouTubeReadyCallbacks.push(function () {
553        Ie(a, n)
554      }), e.onYouTubeIframeAPIReady = function () {
555        e.onYouTubeReadyCallbacks.forEach(function (e) {
556          e()
557        })
558      }); else if ("vimeo" === St.type) if (St.supported.full ? St.media.appendChild(n) : n = St.media, n.setAttribute("id", r), F.object(e.Vimeo)) Ae(a, n); else {
559        i(b.urls.vimeo.api);
560        var u = e.setInterval(function () {
561          F.object(e.Vimeo) && (e.clearInterval(u), Ae(a, n))
562        }, 50)
563      } else if ("soundcloud" === St.type) {
564        var c = t.createElement("iframe");
565        c.loaded = !1, g(c, "load", function () {
566          c.loaded = !0
567        }), d(c, {
568          src: "https://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/" + a,
569          id: r
570        }), n.appendChild(c), St.media.appendChild(n), e.SC || i(b.urls.soundcloud.api);
571        var y = e.setInterval(function () {
572          e.SC && c.loaded && (e.clearInterval(y), Oe.call(c))
573        }, 50)
574      }
575    }
576
577    function Ee() {
578      St.supported.full && (_t(), kt()), xe(me("iframe"))
579    }
580
581    function Ie(t, n) {
582      St.embed = new e.YT.Player(n.id, {
583        videoId: t,
584        playerVars: {
585          autoplay: b.autoplay ? 1 : 0,
586          controls: St.supported.full ? 0 : 1,
587          rel: 0,
588          showinfo: 0,
589          iv_load_policy: 3,
590          cc_load_policy: b.captions.defaultActive ? 1 : 0,
591          cc_lang_pref: "en",
592          wmode: "transparent",
593          modestbranding: 1,
594          disablekb: 1,
595          origin: "*",
596        },
597        events: {
598          onError: function (e) {
599            S(St.container, "error", !0, {code: e.data, embed: e.target})
600          }, onReady: function (t) {
601            var n = t.target;
602            St.media.play = function () {
603              n.playVideo(), St.media.paused = !1
604            }, St.media.pause = function () {
605              n.pauseVideo(), St.media.paused = !0
606            }, St.media.stop = function () {
607              n.stopVideo(), St.media.paused = !0
608            }, St.media.duration = n.getDuration(), St.media.paused = !0, St.media.currentTime = 0, St.media.muted = n.isMuted(), b.title = n.getVideoData().title, St.supported.full && St.media.querySelector("iframe").setAttribute("tabindex", "-1"), Ee(), S(St.media, "timeupdate"), S(St.media, "durationchange"), e.clearInterval(wt.buffering), wt.buffering = e.setInterval(function () {
609              St.media.buffered = n.getVideoLoadedFraction(), (null === St.media.lastBuffered || St.media.lastBuffered < St.media.buffered) && S(St.media, "progress"), St.media.lastBuffered = St.media.buffered, 1 === St.media.buffered && (e.clearInterval(wt.buffering), S(St.media, "canplaythrough"))
610            }, 200)
611          }, onStateChange: function (t) {
612            var n = t.target;
613            switch (e.clearInterval(wt.playing), t.data) {
614              case 0:
615                St.media.paused = !0, S(St.media, "ended");
616                break;
617              case 1:
618                St.media.paused = !1, St.media.seeking = !1, S(St.media, "play"), S(St.media, "playing"), wt.playing = e.setInterval(function () {
619                  St.media.currentTime = n.getCurrentTime(), S(St.media, "timeupdate")
620                }, 100), St.media.duration !== n.getDuration() && (St.media.duration = n.getDuration(), S(St.media, "durationchange"));
621                break;
622              case 2:
623                St.media.paused = !0, S(St.media, "pause")
624            }
625            S(St.container, "statechange", !1, {code: t.data})
626          }
627        }
628      })
629    }
630
631    function Ae(t, n) {
632      St.embed = new e.Vimeo.Player(n, {
633        id: parseInt(t),
634        loop: b.loop,
635        autoplay: b.autoplay,
636        byline: !1,
637        portrait: !1,
638        title: !1
639      }), St.media.play = function () {
640        St.embed.play(), St.media.paused = !1
641      }, St.media.pause = function () {
642        St.embed.pause(), St.media.paused = !0
643      }, St.media.stop = function () {
644        St.embed.stop(), St.media.paused = !0
645      }, St.media.paused = !0, St.media.currentTime = 0, Ee(), St.embed.getCurrentTime().then(function (e) {
646        St.media.currentTime = e, S(St.media, "timeupdate")
647      }), St.embed.getDuration().then(function (e) {
648        St.media.duration = e, S(St.media, "durationchange")
649      }), St.embed.on("loaded", function () {
650        F.htmlElement(St.embed.element) && St.supported.full && St.embed.element.setAttribute("tabindex", "-1")
651      }), St.embed.on("play", function () {
652        St.media.paused = !1, S(St.media, "play"), S(St.media, "playing")
653      }), St.embed.on("pause", function () {
654        St.media.paused = !0, S(St.media, "pause")
655      }), St.embed.on("timeupdate", function (e) {
656        St.media.seeking = !1, St.media.currentTime = e.seconds, S(St.media, "timeupdate")
657      }), St.embed.on("progress", function (e) {
658        St.media.buffered = e.percent, S(St.media, "progress"), 1 === parseInt(e.percent) && S(St.media, "canplaythrough")
659      }), St.embed.on("ended", function () {
660        St.media.paused = !0, S(St.media, "ended")
661      })
662    }
663
664    function Oe() {
665      St.embed = e.SC.Widget(this), St.embed.bind(e.SC.Widget.Events.READY, function () {
666        St.media.play = function () {
667          St.embed.play(), St.media.paused = !1
668        }, St.media.pause = function () {
669          St.embed.pause(), St.media.paused = !0
670        }, St.media.stop = function () {
671          St.embed.seekTo(0), St.embed.pause(), St.media.paused = !0
672        }, St.media.paused = !0, St.media.currentTime = 0, St.embed.getDuration(function (e) {
673          St.media.duration = e / 1e3, Ee()
674        }), St.embed.getPosition(function (e) {
675          St.media.currentTime = e, S(St.media, "timeupdate")
676        }), St.embed.bind(e.SC.Widget.Events.PLAY, function () {
677          St.media.paused = !1, S(St.media, "play"), S(St.media, "playing")
678        }), St.embed.bind(e.SC.Widget.Events.PAUSE, function () {
679          St.media.paused = !0, S(St.media, "pause")
680        }), St.embed.bind(e.SC.Widget.Events.PLAY_PROGRESS, function (e) {
681          St.media.seeking = !1, St.media.currentTime = e.currentPosition / 1e3, S(St.media, "timeupdate")
682        }), St.embed.bind(e.SC.Widget.Events.LOAD_PROGRESS, function (e) {
683          St.media.buffered = e.loadProgress, S(St.media, "progress"), 1 === parseInt(e.loadProgress) && S(St.media, "canplaythrough")
684        }), St.embed.bind(e.SC.Widget.Events.FINISH, function () {
685          St.media.paused = !0, S(St.media, "ended")
686        })
687      })
688    }
689
690    function Fe() {
691      "play" in St.media && St.media.play()
692    }
693
694    function Pe() {
695      "LIVE" === St.adaptivePlayer.playlistType || "pause" in St.media && St.media.pause()
696    }
697
698    function Ne(e) {
699      return F.boolean(e) || (e = St.media.paused), e && St.media.ended ? (Le(), Fe()
699) : e ? Fe() : Pe(), e
700    }
701
702    function Me(e) {
703      F.number(e) || (e = b.seekTime), Le(St.media.currentTime - e)
704    }
705
706    function De(e) {
707      F.number(e) || (e = b.seekTime), Le(St.media.currentTime + e)
708    }
709
710    function Be(e) {
711      if (!F.array(b.speeds)) return void Et("Invalid speeds format");
712      if (!F.number(e)) {
713        var t = b.speeds.indexOf(b.currentSpeed);
714        if (-1 !== t) {
715          var n = t + 1;
716          n >= b.speeds.length && (n = 0), e = b.speeds[n]
717        } else e = b.defaultSpeed
718      }
719      b.currentSpeed = e, St.media.playbackRate = e, we({speed: e})
720    }
721
722    function Le(e) {
723      if (St.adaptivePlayer && St.adaptivePlayer.canSeek()) {
724        var t = 0, n = St.media.paused, a = ze();
725        F.number(e) ? t = e : F.event(e) && r(["input", "change"], e.type) && (t = e.target.value / e.target.max * a), t < 0 ? t = 0 : t > a && (t = a), nt(t);
726        try {
727          St.media.currentTime = t.toFixed(4)
728        } catch (e) {
729        }
730        if (r(b.types.embed, St.type)) {
731          switch (St.type) {
732            case"youtube":
733              St.embed.seekTo(t);
734              break;
735            case"vimeo":
736              St.embed.setCurrentTime(t.toFixed(0));
737              break;
738            case"soundcloud":
739              St.embed.seekTo(1e3 * t)
740          }
741          n && Pe(), S(St.media, "timeupdate"), St.media.seeking = !0, S(St.media, "seeking")
742        }
743        Ct("Seeking to " + St.media.currentTime + " seconds")
744      }
745    }
746
747    function ze() {
748      var e = b.duration;
749      e !== Number.POSITIVE_INFINITY && e !== Number.NEGATIVE_INFINITY && (e = parseInt(e));
750      var t = 0;
751      return null === St.media.duration || isNaN(St.media.duration) || (t = St.media.duration), isNaN(e) ? t : e
752    }
753
754    function Ve() {
755      p(St.container, b.classes.playing, !St.media.paused || St.media.seeking), p(St.container, b.classes.stopped, St.media.paused && !St.media.seeking), lt(St.media.paused), ot()
756    }
757
758    function je() {
759      A = {x: e.pageXOffset || 0, y: e.pageYOffset || 0}
760    }
761
762    function qe() {
763      e.scrollTo(A.x, A.y)
764    }
765
766    function Re(e) {
767      var n = P.fullscreen;
768      if (n) {
769        if (!e || e.type !== I.eventType) return I.isFullScreen(St.container) ? I.cancelFullScreen() : (je(), I.requestFullScreen(St.container)), void (St.isFullscreen = I.isFullScreen(St.container));
770        St.isFullscreen = I.isFullScreen(St.container)
771      } else St.isFullscreen = !St.isFullscreen, t.body.style.overflow = St.isFullscreen ? "hidden" : "";
772      p(St.container, b.classes.fullscreen.active, St.isFullscreen), be(St.isFullscreen), St.buttons && St.buttons.fullscreen && _(St.buttons.fullscreen, St.isFullscreen), S(St.container, St.isFullscreen ? "enterfullscreen" : "exitfullscreen", !0), !St.isFullscreen && n && qe()
773    }
774
775    function We(e) {
776      if (F.boolean(e) || (e = !St.media.muted), _(St.buttons.mute, e), St.media.muted = e, 0 === St.media.volume && Ye(b.volume), r(b.types.embed, St.type)) {
777        switch (St.type) {
778          case"youtube":
779            St.embed[St.media.muted ? "mute" : "unMute"]();
780            break;
781          case"vimeo":
782          case"soundcloud":
783            St.embed.setVolume(St.media.muted ? 0 : parseFloat(b.volume / b.volumeMax))
784        }
785        S(St.media, "volumechange")
786      }
787    }
788
789    function Ye(e) {
790      var t = b.volumeMax, n = b.volumeMin;
791      if (F.undefined(e) && (e = St.storage.volume), (null === e || isNaN(e)) && (e = b.volume), e > t && (e = t), e < n && (e = n), St.media.volume = parseFloat(e / t), St.volume.display && (St.volume.display.value = e), r(b.types.embed, St.type)) {
792        switch (St.type) {
793          case"youtube":
794            St.embed.setVolume(100 * St.media.volume);
795            break;
796          case"vimeo":
797          case"soundcloud":
798            St.embed.setVolume(St.media.volume)
799        }
800        S(St.media, "volumechange")
801      }
802      0 === e ? St.media.muted = !0 : St.media.muted && e > 0 && We()
803    }
804
805    function He(e) {
806      var t = St.media.muted ? 0 : St.media.volume * b.volumeMax;
807      F.number(e) || (e = b.volumeStep), Ye(t + e)
808    }
809
810    function Ue(e) {
811      var t = St.media.muted ? 0 : St.media.volume * b.volumeMax;
812      F.number(e) || (e = b.volumeStep), Ye(t - e)
813    }
814
815    function Ge() {
816      var e = St.media.muted ? 0 : St.media.volume * b.volumeMax;
817      St.supported.full && (St.volume.input && (St.volume.input.value = e), St.volume.display && (St.volume.display.value = e)), we({volume: e}), p(St.container, b.classes.muted, 0 === e), St.supported.full && St.buttons.mute && _(St.buttons.mute, 0 === e)
818    }
819
820    function Xe(e) {
821      St.supported.full && St.buttons.captions && (F.boolean(e) || (e = -1 === St.container.className.indexOf(b.classes.captions.active)), St.captionsEnabled = e, _(St.buttons.captions, St.captionsEnabled), p(St.container, b.classes.captions.active, St.captionsEnabled), S(St.container, St.captionsEnabled ? "captionsenabled" : "captionsdisabled", !0), we({captionsEnabled: St.captionsEnabled}))
822    }
823
824    function Ke(e) {
825      b.captions.selectedIndex = e;
826      for (var t = St.media.textTracks, n = b.i18n.none, a = 0; a < t.length; a++) "subtitles" !== t[a].kind && "captions" !== t[a].kind || (a == e ? (t[a].mode = "showing", n = t[a].label) : t[a].mode = "disabled");
827      (St.browser.isIE || St.browser.isEdge) && St.adaptivePlayer.onTextTrackChanged({
828        currentTarget: t,
829        target: t,
830        type: "change"
831      }), X(n)
832    }
833
834    function Je(e) {
835      var t = "waiting" === e.type;
836      clearTimeout(wt.loading), wt.loading = setTimeout(function () {
837        p(St.container, b.classes.loading, t), lt(t), ot()
838      }, t ? 250 : 0)
839    }
840
841    function $e(e) {
842      if (St.supported.full) {
843        var t = St.progress.played, n = 0, a = ze();
844        if (e) switch (e.type) {
845          case"timeupdate":
846          case"seeking":
847            if (St.controls.pressed) return;
848            n = k(St.media.currentTime, a), "timeupdate" === e.type && St.buttons.seek && (St.buttons.seek.value = n);
849            break;
850          case"playing":
851          case"progress":
852            t = St.progress.buffer, n = function () {
853              var e = St.media.buffered;
854              if (e && e.length) {
855                for (var t = St.media.currentTime, n = e.end(0), i = 0; i < e.length; i++) {
856                  var r = e.start(i), s = e.end(i);
857                  if (t >
857= r && t <= s) for (n = s, i++; i < e.length; i++) {
858                    var o = s;
859                    r = e.start(i), s = e.end(i), r - o <= .5 && (n = s)
860                  }
861                }
862                return k(n, a)
863              }
864              return F.number(e) ? 100 * e : 0
865            }()
866        }
867        Qe(t, n)
868      }
869    }
870
871    function Qe(e, t) {
872      if (St.supported.full) {
873        if (F.undefined(t) && (t = 0), F.undefined(e)) {
874          if (!St.progress || !St.progress.buffer) return;
875          e = St.progress.buffer
876        }
877        F.htmlElement(e) ? e.value = t : e && (e.bar && (e.bar.value = t), e.text && (e.text.innerHTML = t))
878      }
879    }
880
881    function Ze(e, t) {
882      if (t) {
883        isNaN(e) && (e = 0), St.secs = parseInt(e % 60), St.mins = parseInt(e / 60 % 60), St.hours = parseInt(e / 60 / 60 % 60);
884        var n = parseInt(ze() / 60 / 60 % 60) > 0;
885        St.secs = ("0" + St.secs).slice(-2), St.mins = ("0" + St.mins).slice(-2), t.innerHTML = (n ? St.hours + ":" : "") + St.mins + ":" + St.secs
886      }
887    }
888
889    function et() {
890      if (St.supported.full) {
891        var e = ze() || 0;
892        !St.duration && b.displayDuration && St.media.paused && Ze(e, St.currentTime), St.duration && Ze(e, St.duration), at()
893      }
894    }
895
896    function tt(e) {
897      Ze(St.media.currentTime, St.currentTime), St.inAd && gt(), e && "timeupdate" === e.type && St.media.seeking || $e(e)
898    }
899
900    function nt(e) {
901      F.number(e) || (e = 0);
902      var t = ze(), n = k(e, t);
903      St.progress && St.progress.played && (St.progress.played.value = n), St.buttons && St.buttons.seek && (St.buttons.seek.value = n)
904    }
905
906    function at(e) {
907      var t = Date.now(), n = ze();
908      if (b.tooltips.seek && St.progress.container && 0 !== n) {
909        var a = (St.progress.container.getBoundingClientRect(), 0), i = b.classes.tooltip + "--visible";
910        if (!St.adaptivePlayer || !St.adaptivePlayer.canSeek()) return void p(St.progress.seek.container, i, !1);
911        if (e) a = e.offsetX / e.target.clientWidth * 100; else {
912          if (!y(St.progress.seek.container, i)) return;
913          a = St.progress.seek.container.style.left.replace("%", "")
914        }
915        a < 0 ? a = 0 : a > 100 && (a = 100);
916        var s = parseInt(n / 100 * a);
917        St.time !== s && ((!St.lastUpdatedThumbnail || t - St.lastUpdatedThumbnail > 250) && (St.lastUpdatedThumbnail = t, b.showThumbnails && S(St.media, "thumbnail", !0, {
918          time: s,
919          img: St.progress.seek.thumbnail
920        })), Ze(s, St.progress.seek.tooltip)), St.time = s, r(b.controls, "progress") && (St.progress.seek.container.style.left = a + "%"), e && r(["mouseenter", "mouseleave"], e.type) && p(St.progress.seek.container, i, "mouseenter" === e.type)
921      }
922    }
923
924    function it(e) {
925      F.undefined(e) && (e = St.storage.speed || b.defaultSpeed), Be(e)
926    }
927
928    function rt(e) {
929      if (e.isAd && e.adData && e.adData.click && e.adData.click.length > 0 && e.adData.click[0]) {
930        var n = St.adDuration.parentElement, a = t.createElement("span");
931        a.setAttribute("class", "plyr__time--ad-duration"), a.innerText = " - ", n.appendChild(a);
932        var i = t.createElement("a");
933        i.setAttribute("class", "plyr__time--ad-duration"), i.setAttribute("target", "_blank"), i.setAttribute("href", e.adData.click[0]), i.text = b.i18n.adClick, n.appendChild(i)
934      }
935    }
936
937    function st(e) {
938      if (e.isAd && e.adData && e.adData.click && e.adData.click.length > 0 && e.adData.click[0]) {
939        var t = St.adDuration.parentElement;
940        "a" === t.lastChild.tagName.toLowerCase() && (t.removeChild(t.lastChild), t.removeChild(t.lastChild))
941      }
942    }
943
944    function ot() {
945      if (F.boolean(St.inAd) || (St.inAd = !1), p(St.container, b.classes.hideAdOverlay, !St.inAd), St.adaptivePlayer) {
946        var e = St.adaptivePlayer.canSeek();
947        p(St.buttons.seek, b.classes.hideSeekButton, !e)
948      }
949    }
950
951    function lt(t) {
952      if (b.hideControls && "audio" !== St.type) {
953        var n = 0, a = !1, i = t, s = y(St.container, b.classes.loading);
954        if (F.boolean(t) || (t && t.type ? (a = "enterfullscreen" === t.type, i = r(["mousemove", "touchstart", "mouseenter", "focu
954s"], t.type), r(["mousemove", "touchmove"], t.type) && (n = 2e3), "focus" === t.type && (n = 3e3)) : i = y(St.container, b.classes.hideControls)), e.clearTimeout(wt.hover), i || St.media.paused || s) {
955          if (p(St.container, b.classes.hideControls, !1), St.media.paused || s) return;
956          St.browser.isTouch && (n = 3e3)
957        }
958        i && St.media.paused || (wt.hover = e.setTimeout(function () {
959          (!St.controls.pressed && !St.controls.hover || a) && p(St.container, b.classes.hideControls, !0)
960        }, n))
961      }
962    }
963
964    function ut(e) {
965      if (!F.undefined(e)) return void dt(e);
966      var t;
967      switch (St.type) {
968        case"youtube":
969          t = St.embed.getVideoUrl();
970          break;
971        case"vimeo":
972          St.embed.getVideoUrl.then(function (e) {
973            t = e
974          });
975          break;
976        case"soundcloud":
977          St.embed.getCurrentSound(function (e) {
978            t = e.permalink_url
979          });
980          break;
981        default:
982          t = St.media.currentSrc
983      }
984      return t || ""
985    }
986
987    function dt(e) {
988      function n() {
989        if (St.embed = null, l(St.media), "video" === St.type && St.videoContainer && l(St.videoContainer), St.container && St.container.removeAttribute("class"), "type" in e && (St.type = e.type, "video" === St.type)) {
990          var n = e.sources[0];
991          "type" in n && r(b.types.embed, n.type) && (St.type = n.type)
992        }
993        switch (St.supported = T(St.type), St.type) {
994          case"video":
995            St.media = t.createElement("video");
996            break;
997          case"audio":
998            St.media = t.createElement("audio");
999            break;
1000          case"youtube":
1001          case"vimeo":
1002          case"soundcloud":
1003            St.media = t.createElement("div"), St.embedId = e.sources[0].src
1004        }
1005        u(St.container, St.media), F.boolean(e.autoplay) && (b.autoplay = e.autoplay), r(b.types.html5, St.type) && (b.crossorigin && St.media.setAttribute("crossorigin", ""), b.autoplay && St.media.setAttribute("autoplay", ""), "poster" in e && St.media.setAttribute("poster", e.poster), b.loop && St.media.setAttribute("loop", "")), p(St.container, b.classes.fullscreen.active, St.isFullscreen), p(St.container, b.classes.captions.active, St.captionsEnabled), _e(), r(b.types.html5, St.type) && ge("source", e.sources), Te(), r(b.types.html5, St.type) && ("tracks" in e && ge("track", e.tracks), St.media.load()), (r(b.types.html5, St.type) || r(b.types.embed, St.type) && !St.supported.full) && (_t(), kt()), b.title = e.title, xe()
1006      }
1007
1008      if (!(F.object(e) && "sources" in e && e.sources.length)) return void Et("Invalid source format");
1009      p(St.container, b.classes.ready, !1), Pe(), nt(), Qe(), ft(), ht(n, !1)
1010    }
1011
1012    function ct(e) {
1013      "video" === St.type && St.media.setAttribute("poster", e)
1014    }
1015
1016    function pt() {
1017      function n() {
1018        var e = Ne(), t = St.buttons[e ? "play" : "pause"], n = St.buttons[e ? "pause" : "play"];
1019        if (n = n && n.length > 1 ? n[n.length - 1] : n[0]) {
1020          var a = y(t, b.classes.tabFocus);
1021          setTimeout(function () {
1022            n.focus(), a && (p(t, b.classes.tabFocus, !1), p(n, b.classes.tabFocus, !0))
1023          }, 100)
1024        }
1025      }
1026
1027      function a() {
1028        var e = t.activeElement;
1029        return e = e && e !== t.body ? t.querySelector(":focus") : null
1030      }
1031
1032      function i(e) {
1033        return e.keyCode ? e.keyCode : e.which
1034      }
1035
1036      function s(e) {
1037        for (var t in St.buttons) {
1038          var n = St.buttons[t];
1039          if (F.nodeList(n)) for (var a = 0; a < n.length; a++) p(n[a], b.classes.tabFocus, n[a] === e); else p(n, b.classes.tabFocus, n === e)
1040        }
1041      }
1042
1043      function o(e) {
1044        var t = i(e), n = "keydown" === e.type, a = n && t === d;
1045        if (F.number(t)) if (n) {
1046          var s = [48, 49, 50, 51, 52, 53, 54, 56, 57, 32, 75, 38, 40, 77, 39, 37, 70, 67];
1047          switch (r(s, t) && (e.preventDefault(), e.stopPropagation()), t) {
1048            case 48:
1049            case 49:
1050            case 50:
1051            case 51:
1052            case 52:
1053            case 53:
1054            case 54:
1055            case 55:
1056            case 56:
1057            case 57:
1058              a || function () {
1059                var e = St.media.duration;
1060                F.number(e) && Le(e / 10 * (t - 48))
1061              }();
1062              break;
1063            case 32:
1064            case 75:
1065              a || Ne();
1066              break;
1067            case 38:
1068              He();
1069              break;
1070            case 40:
1071              Ue();
1072              break;
1073            case 77:
1074              a || We();
1075              break;
1076            case 39:
1077              De();
1078              break;
1079            case 37:
1080              Me();
1081              break;
1082            case 70:
1083              Re();
1084              break;
1085            case 67:
1086              a || Xe()
1087          }
1088          !P.fullscreen && St.isFullscreen && 27 === t && Re(), d = t
1089        } else d = null
1090      }
1091
1092      var u = St.browser.isIE ? "change" : "input";
1093      if (b.keyboardShorcuts.focused) {
1094        var d = null;
1095        b.keyboardShorcuts.global && g(e, "keydown keyup", function (e) {
1096          var t = i(e), n = a(), s = [48, 49, 50, 51, 52, 53, 54, 56, 57, 75, 77, 70, 67];
1097          1 !== E().length || !r(s, t) || F.htmlElement(n) && m(n, b.selectors.editable) || o(e)
1098        }), g(St.container, "keydown keyup", o)
1099      }
1100      g(e, "keyup", function (e) {
1101        var t = i(e), n = a();
1102        9 === t && s(n)
1103      }), g(t.body, "click", function () {
1104        p(me("." + b.classes.tabFocus), b.classes.tabFocus, !1)
1105      });
1106      for (var c in St.buttons) {
1107        var v = St.buttons[c];
1108        g(v, "blur", function () {
1109          p(v, "tab-focus", !1)
1110        })
1111      }
1112      f(St.buttons.play, "click", b.listeners.play, n), f(St.buttons.pause, "click", b.listeners.pause, n), f(St.buttons.restart, "click", b.listeners.restart, Le), f(St.buttons.rewind, "click", b.listeners.rewind, Me), f(St.buttons.forward, "click", b.listeners.forward, De), f(St.buttons.speed, "click", b.listeners.speed, Be), f(St.buttons.seek, u, b.listeners.seek, Le), f(St.volume.input, u, b.listeners.volume, function () {
1113        Ye(St.volume.input.value)
1114      }), f(St.buttons.mute, "click", b.listeners.mute, We), f(St.buttons.fullscreen, "click", b.listeners.fullscreen, Re), P.fullscreen && g(t, I.eventType, Re), g(St.buttons.captions, "click", Xe), g(St.buttons.settings, "click", function (n) {
1115        var a, i, r = this, s = n.target;
1116        if (s.tagName && "use" === s.tagName.toLowerCase() && (s = s.parentNode), s.tagName && "svg" === s.tagName.toLowerCase() && (s = s.parentNode), s.constructor && "SVGElementInstance" === s.constructor.name && (s = me("#plyr-settings-toggle-" + St.id)), s.getAttribute && (a = t.getElementById(s.getAttribute("aria-controls")), i = "false" === s.getAttribute("aria-expanded"), F.htmlElement(a))) {
1117          var o, u, d, c = "tabpanel" === a.getAttribute("role");
1118          if (c) {
1119            var p = r.querySelector('[role="tabpanel"][aria-hidden="false"]');
1120            d = p.parentNode, [].forEach.call(r.querySelectorAll('[aria-controls="' + p.getAttribute("id") + '"]'), function (e) {
1121              e.setAttribute("aria-expanded", !1)
1122            }), d.style.width = p.scrollWidth + "px", d.style.height = p.scrollHeight + "px", p.setAttribute("aria-hidden", !0), p.setAttribute("tabindex", -1);
1123            var y = a.cloneNode(!0);
1124            y.style.position = "absolute", y.style.opacity = 0, y.setAttribute("aria-hidden", !1), d.appendChild(y), o = y.scrollWidth, u = y.scrollHeight, l(y)
1125          }
1126          a.setAttribute("aria-hidden", !i), s.setAttribute("aria-expanded", i), a.setAttribute("tabindex", 0), c && (d.style.width = o + "px", d.style.height = u + "px", e.setTimeout(function () {
1127            d.style.width = "", d.style.height = ""
1128          }, 300))
1129        }
1130      }), g(St.buttons.pip, "click", function () {
1131        St.media.webkitSetPresentationMode("picture-in-picture" === St.media.webkitPresentationMode ? "inline" : "picture-in-picture")
1132      }), g(St.progress.container, "mouseenter mouseleave mousemove mouseup", at), b.hideControls && (g(St.container, "mouseenter mouseleave mousemove touchstart touchend touchcancel touchmove enterfullscreen", lt), g(St.controls, "mouseenter mouseleave", function (e) {
1133        St.controls.hover = "mouseenter" === e.type
1134      }), g(St.controls, "mousedown mouseup touchstart touchend touchcancel", function (e) {
1135        St.controls.pressed = r(["mousedown", "touchstart"], e.type)
1136      }), g(St.controls, "focus blur", lt, !0)), g(St.volume.input, "wheel", function (e) {
1137        e.preventDefault();
1138        var t = e.webkitDirectionInvertedFromDevice, n = b.volumeStep / 5;
1139        (e.deltaY < 0 || e.deltaX > 0) && (t ? Ue(n) : He(n)), (e.deltaY > 0 || e.deltaX < 0) && (t ? He(n) : Ue(n))
1140      })
1141    }
1142
1143    function yt() {
1144      if (g(St.media, "timeupdate seeking", tt), g(St.media, "durationchange loadedmetadata", et), g(St.media, "ended", function () {
1145        "video" === St.type && b.showPosterOnEnd && (Le(), St.media.load())
1146      }), g(St.media, "progress playing", $e), g(St.media, "volumechange", Ge), g(St.media, "play pause ended", Ve), g(St.media, "waiting canplay seeked", Je), b.clickToPlay && "audio" !== St.type) {
1147        var e = me("." + b.classes.videoWrapper);
1148        if (!e) return;
1149        e.style.cursor = "pointer", g(e, "click", mt)
1150      }
1151      b.disableContextMenu && g(St.media, "contextmenu", function (e) {
1152        e.preventDefault()
1153      }), g(St.media, b.events.concat(["keyup", "keydown"]).join(" "), function (e) {
1154        S(St.container, e.type, !0)
1155      })
1156    }
1157
1158    function mt() {
1159      b.hideControls && St.browser.isTouch && !St.media.paused || (St.media.paused && !St.media.ended ? Fe() : St.media.ended ? (Le(), Fe()
1159) : Pe())
1160    }
1161
1162    function ft() {
1163      if (r(b.types.html5, St.type)) {
1164        for (var e = St.media.querySelectorAll("source"), t = 0; t < e.length; t++) l(e[t]);
1165        St.media.setAttribute("src", "https://cdn.selz.com/plyr/blank.mp4"), St.media.load(), Ct("Cancelled network requests")
1166      }
1167    }
1168
1169    function bt(e) {
1170      (isNaN(e) || e < 0) && (e = 0);
1171      var t = e % 60 | 0, n = e / 60 % 60 | 0, a = e / 60 / 60 % 60 | 0, i = a < 10 ? "0" + a : "" + a,
1172        r = n < 10 ? "0" + n : "" + n, s = t < 10 ? "0" + t : "" + t;
1173      return a > 0 ? i + ":" + r + ":" + s : r + ":" + s
1174    }
1175
1176    function gt() {
1177      var e = St.media.currentTime, t = e - St.adBreak.startTime;
1178      t < 0 && (t = 0);
1179      var n = St.adBreak.duration - t;
1180      n < 0 && (n = 0), St.adDuration.innerHTML = bt(n)
1181    }
1182
1183    function vt(e) {
1184      e.setBrowser(St.browser.isSafari, St.browser.isIE, St.browser.isChrome, St.browser.isFirefox), St.adaptivePlayer = e;
1185      var n = !1;
1186      e.on(AdaptivePlayer.Event.Ready, function () {
1187        if (!n) {
1188          n = !0;
1189          var t = e.duration;
1190          "LIVE" === e.playlistType && (t = 1 / 0), b.duration = t, Z(), ie()
1191        }
1192      }), e.on(AdaptivePlayer.Event.AudioTrackAdded, function () {
1193        ie()
1194      }), b.showThumbnails && g(St.container, "thumbnail", function (t) {
1195        var n = t.detail.img, a = t.detail.time;
1196        if (n && St.adaptivePlayer.supportsThumbnails) {
1197          var i = e.getThumbnail(a, "small");
1198          i && (n.src = i.url, n.width = i.width, n.height = i.height)
1199        }
1200      }), b.showAdBreakMarkers && e.on(AdaptivePlayer.Event.LoadedAdBreaks, function (n) {
1201        if (r(b.controls, "progress")) {
1202          for (var a = t.createDocumentFragment(), i = n.adBreaks, s = 0; s < i.length; s++) {
1203            var o = i[s], l = t.createElement("div"), u = o.startTime / e.duration * 100,
1204              d = o.duration / e.duration * 100;
1205            l.setAttribute("style", "left: " + u + "%; width: " + d + "%; background-color: #FFFFFF; top:8px;height:4px;position:absolute;border-radius:4px"), a.appendChild(l)
1206          }
1207          var c = me(b.selectors.progress.container);
1208          c && c.appendChild(a)
1209        }
1210      }), b.disableSeekDuringAdBreak && (e.on(AdaptivePlayer.Event.AdBreakEntered, function (e) {
1211        St.inAd = !0, St.adBreak = e.adBreak, ot(), gt()
1212      }), e.on(AdaptivePlayer.Event.AdBreakExited, function (e) {
1213        St.inAd = !1, St.adBreak = null, ot()
1214      }), e.on(AdaptivePlayer.Event.AssetEntered, function (e) {
1215        var t = e.asset;
1216        t && t.isAd && rt(t)
1217      }), e.on(AdaptivePlayer.Event.AssetExited, function (e) {
1218        var t = e.asset;
1219        t && t.isAd && st(t)
1220      })), e.on(AdaptivePlayer.Event.AudioTrackSwitched, function (t) {
1221        var n = e.audioTrack;
1222        n && U(n.label)
1223      })
1224    }
1225
1226    function ht(t, n) {
1227      function a() {
1228        F.boolean(n) || (n = !0), F.function(t) && t.call(Tt), n && (St.init = !1, St.container.parentNode.replaceChild(Tt, St.container), S(Tt, "destroyed", !0))
1229      }
1230
1231      if (!St.init) return null;
1232      switch (St.type) {
1233        case"youtube":
1234          e.clearInterval(wt.buffering), e.clearInterval(wt.playing), St.embed.destroy(), a();
1235          break;
1236        case"vimeo":
1237          St.embed.unload().then(a), e.setTimeout(a, 200);
1238          break;
1239        case"video":
1240        case"audio":
1241          ke(!0), a()
1242      }
1243    }
1244
1245    function _t() {
1246      if (!St.supported.full) return Et("Basic support only", St.type), l(me(b.selectors.controls.wrapper)), l(me(b.selectors.buttons.play)), void ke(!0);
1247      var e = !ye(b.selectors.controls.wrapper).length;
1248      e && ve(), he() && (e && pt(), yt(), ke(), ne(), le(), Ye(), Ge(), it(), tt(), Ve())
1249    }
1250
1251    function kt() {
1252      e.setTimeout(function () {
1253        S(St.media, "ready")
1254      }, 0), p(St.media, O.classes.setup, !0), p(St.container, b.classes.ready, !0), St.media.plyr = xt, b.autoplay && Fe()
1255    }
1256
1257    var xt, St = this, wt = {};
1258    St.media = n;
1259    var Tt = n.cloneNode(!0), Ct = function () {
1260      C("log", arguments)
1261    }, Et = function () {
1262      C("warn", arguments)
1263    };
1264    return Ct("Config", b), xt = {
1265      getOriginal: function () {
1266        return Tt
1267      },
1268      getContainer: function () {
1269        return St.container
1270      },
1271      getEmbed: function () {
1272        return St.embed
1273      },
1274      getMedia: function () {
1275        return St.media
1276      },
1277      getType: function () {
1278        return St.type
1279      },
1280      getDuration: ze,
1281      getCurrentTime: function () {
1282        return St.media.currentTime
1283      },
1284      getVolume: function () {
1285        return St.media.volume
1286      },
1287      isMuted: function () {
1288        return St.media.muted
1289      },
1290      isReady: function () {
1291        return y(St.container, b.classes.ready)
1292      },
1293      isLoading: function () {
1294        return y(St.container, b.classes.loading)
1295      },
1296      isPaused: function () {
1297        return St.media.paused
1298      },
1299      on: function (e, t) {
1300        return g(St.container, e, t), this
1301      },
1302      play: Fe,
1303      pause: Pe,
1304      stop: function () {
1305        Pe(), Le()
1306      },
1307      restart: Le,
1308      rewind: Me,
1309      forward: De,
1310      seek: Le,
1311      source: ut,
1312      poster: ct,
1313      setVolume: Ye,
1314      setSpeed: it,
1315      togglePlay: Ne,
1316      toggleMute: We,
1317      toggleCaptions: Xe,
1318      toggleFullscreen: Re,
1319      toggleControls: lt,
1320      setCaptionIndex: Ke,
1321      isFullscreen: function () {
1322        return St.isFullscreen || !1
1323      },
1324      support: function (e) {
1325        return P.mime(St, e)
1326      },
1327      destroy: ht,
1328      setAdaptivePlayer: vt
1329    }, function () {
1330      if (St.init) return null;
1331      if (St.browser = a(), St.browser.isTouch && (b.showThumbnails = !1), F.htmlElement(St.media)) {
1332        Se();
1333        var e = n.tagName.toLowerCase();
1334        "div" === e ? (St.type = n.getAttribute("data-type"), St.embedId = n.getAttribute("data-video-id"), n.removeAttribute("data-type"), n.removeAttribute("data-video-id")) : (St.type = e, b.crossorigin = null !== n.getAttribute("crossorigin"), b.autoplay = b.autoplay || null !== n.getAttribute("autoplay"), b.loop = b.loop || null !== n.getAttribute("loop")), St.supported = T(St.type), St.supported.basic && (St.container = o(n, t.createElement("div")), St.container.setAttribute("tabindex", 0), _e(), Ct(St.browser.name + " " + St.browser.version), Te(), ee(), (r(b.types.html5, St.type) || r(b.types.embed, St.type) && !St.supported.full) && (_t(), kt(), xe()), St.init = !0)
1335      }
1336    }(), St.init ? xt : null
1337  }
1338
1339  function w(e, n) {
1340    var a = new XMLHttpRequest;
1341    if (!F.string(n) || !F.htmlElement(t.querySelector("#" + n))) {
1342      var i = t.createElement("div");
1343      i.setAttribute("hidden", ""), F.string(n) && i.setAttribute("id", n), t.body.insertBefore(i, t.body.childNodes[0]), "withCredentials" in a && (a.open("GET", e, !0), a.onload = function () {
1344        i.innerHTML = a.responseText
1345      }, a.send())
1346    }
1347  }
1348
1349  function T(e) {
1350    var n, i, r = a(), s = r.isIE && r.version <= 9, o = r.isIos, l = r.isSafari && r.version < 10,
1351      u = /iPhone|iPod/i.test(navigator.userAgent), d = !!t.createElement("audio").canPlayType,
1352      c = !!t.createElement("video").canPlayType;
1353    switch (e) {
1354      case"video":
1355        n = c, i = n && !s && !u && !l;
1356        break;
1357      case"audio":
1358        n = d, i = n && !s;
1359        break;
1360      case"vimeo":
1361      case"youtube":
1362      case"soundcloud":
1363        n = !0, i = !s && !o && !l;
1364        break;
1365      default:
1366        n = d && c, i = n && !s
1367    }
1368    return {basic: n, full: i}
1369  }
1370
1371  function C(e, n) {
1372    function a(e, t) {
1373      y(t, O.classes.hook) || i.push({target: e, media: t})
1374    }
1375
1376    var i = [], r = [], s = [O.selectors.html5, O.selectors.embed].join(",");
1377    if (F.string(e) ? e = t.querySelectorAll(e) : F.htmlElement(e) ? e = [e] : F.nodeList(e) || F.array(e) || F.string(e) || (F.undefined(n) && F.object(e) && (n = e), e = t.querySelectorAll(s)), F.nodeList(e) && (e = Array.prototype.slice.call(e)), !T().basic || !e.length) return !1;
1378    for (var o = 0; o < e.length; o++) {
1379      var l = e[o], u = l.querySelectorAll(s);
1380      if (u.length) for (var d = 0; d < u.length; d++) a(l, u[d]); else m(l, s) && a(l, l)
1381    }
1382    return i.forEach(function (e) {
1383      var t = e.target, a = e.media;
1384      var i = {};
1385      try {
1386        i = JSON.parse(t.getAttribute("data-plyr"))
1387      } catch (e) {
1388      }
1389      var s = x({}, O, n, i);
1390      if (!s.enabled) return null;
1391      var o = new S(a, s);
1392      if (F.object(o)) {
1393        if (s.debug) {
1394          var l = s.events.concat(["setup", "statechange", "enterfullscreen", "exitfullscreen", "captionsenabled", "captionsdisabled"]),
1395            u = l.indexOf("timeupdate");
1396          u > -1 && l.splice(u, 1), g(o.getContainer(), l.join(" "), function (e) {
1397            console.log([s.logPrefix, "event:", e.type].join(" "), e.detail.plyr)
1398          })
1399        }
1400        h(o.getContainer(), "setup", !0, {plyr: o}), r.push(o)
1401      }
1402    }), r
1403  }
1404
1405  function E(e) {
1406    if (F.string(e) ? e = t.querySelector(e) : F.undefined(e) && (e = t.body), F.htmlElement(e)) {
1407      var n = e.querySelectorAll("." + O.classes.setup), a = [];
1408      return Array.prototype.slice.call(n).forEach(function (e) {
1409        F.object(e.plyr) && a.push(e.plyr)
1410      }), a
1411    }
1412    return []
1413  }
1414
1415  var I, A = {x: 0, y: 0}, O = {
1416    enabled: !0,
1417    debug: !1,
1418    autoplay: !1,
1419    loop: !1,
1420    seekTime: 10,
1421    volume: 10,
1422    volumeMin: 0,
1423    volumeMax: 10,
1424    volumeStep: 1,
1425    defaultSpeed: 1,
1426    currentSpeed: 1,
1427    speeds: [.5, 1, 1.5, 2],
1428    duration: null,
1429    displayDuration: !0,
1430    loadSprite: !0,
1431    iconPrefix: "plyr",
1432    iconUrl: n().src.substring(0, n().src.lastIndexOf("/") + 1) + "plyr.svg",
1433    clickToPlay: !0,
1434    hideControls: !0,
1435    showPosterOnEnd: !1,
1436    showThumbnails: !1,
1437    disableContextMenu: !0,
1438    showAdBreakMarkers: !0,
1439    disableSeekDuringAdBreak: !0,
1440    keyboardShorcuts: {focused: !0, global: !1},
1441    tooltips: {controls: !0, seek: !0},
1442    selectors: {
1443      html5: "video, audio",
1444      embed: "[data-type]",
1445      editable: "input, textarea, select, [contenteditable]",
1446      container: ".plyr",
1447      controls: {container: null, wrapper: ".plyr__controls"},
1448      labels: "[data-plyr]",
1449      buttons: {
1450        seek: '[data-plyr="seek"]',
1451        play: '[data-plyr="play"]',
1452        pause: '[data-plyr="pause"]',
1453        restart: '[data-plyr="restart"]',
1454        rewind: '[data-plyr="rewind"]',
1455        forward: '[data-plyr="fast-forward"]',
1456        mute: '[data-plyr="mute"]',
1457        captions: '[data-plyr="captions"]',
1458        fullscreen: '[data-plyr="fullscreen"]',
1459        settings: '[data-plyr="settings"]',
1460        pip: '[data-plyr="pip"]',
1461        airplay: '[data-plyr="airplay"]'
1462      },
1463      volume: {input: '[data-plyr="volume"]', display: ".plyr__volume--display"},
1464      progress: {
1465        container: ".plyr__progress",
1466        buffer: ".plyr__progress--buffer",
1467        played: ".plyr__progress--played",
1468        seek: {
1469          container: ".plyr__tooltip--container",
1470          tooltip: ".plyr__tooltip--time",
1471          thumbnail: ".plyr__tooltip--thumbnail"
1472        }
1473      },
1474      captions: ".plyr__captions",
1475      currentTime: ".plyr__time--current",
1476      duration: ".plyr__time--duration",
1477      adDuration: ".plyr__time--ad-duration",
1478      settings: {
1479        captions: '[data-plyr="settings-captions"]',
1480        audio: '[data-plyr="settings-audio"]',
1481        font: '[data-plyr="settings-font"]',
1482        fontColor: '[data-plyr="settings-fontColor"]',
1483        fontSize: '[data-plyr="settings-fontSize"]',
1484        fontOpacity: '[data-plyr="settings-fontOpacity"]',
1485        fontStyle: '[data-plyr="settings-fontStyle"]',
1486        backgroundColor: '[data-plyr="settings-backgroundColor"]',
1487        backgroundOpacity: '[data-plyr="settings-backgroundOpacity"]',
1488        windowColor: '[data-plyr="settings-windowColor"]',
1489        windowOpacity: '[data-plyr="settings-windowOpacity"]'
1490      }
1491    },
1492    classes: {
1493      setup: "plyr--setup",
1494      ready: "plyr--ready",
1495      videoWrapper: "plyr__video-wrapper",
1496      embedWrapper: "plyr__video-embed",
1497      type: "plyr--{0}",
1498      stopped: "plyr--stopped",
1499      playing: "plyr--playing",
1500      muted: "plyr--muted",
1501      loading: "plyr--loading",
1502      hover: "plyr--hover",
1503      tooltip: "plyr__tooltip",
1504      hidden: "plyr__sr-only",
1505      hideControls: "plyr--hide-controls",
1506      hideAdOverlay: "plyr--hide-ad-overlay",
1507      hideSeekButton: "plyr--hide-seek-button",
1508      hideProgress: "plyr__progress--hidden",
1509      isIos: "plyr--is-ios",
1510      isTouch: "plyr--is-touch",
1511      captions: {enabled: "plyr--captions-enabled", active: "plyr--captions-active"},
1512      fullscreen: {enabled: "plyr--fullscreen-enabled", active: "plyr--fullscreen-active"},
1513      pip: {enabled: "plyr--pip-enabled", active: "plyr--pip-active"},
1514      tabFocus: "tab-focus"
1515    },
1516    captions: {defaultActive: !0, selectedIndex: -1},
1517    fullscreen: {enabled: !0, fallback: !0, allowAudio: !1},
1518    storage: {enabled: !0, key: "plyr"},
1519    controls: ["play-large", "play", "progress", "current-time", "duration", "mute", "volume", "settings", "pip", "fullscreen"],
1520    i18n: {
1521      restart: "Restart",
1522      rewind: "Rewind {seektime} secs",
1523      play: "Play",
1524      pause: "Pause",
1525      forward: "Forward {seektime} secs",
1526      played: "played",
1527      buffered: "buffered",
1528      currentTime: "Current time",
1529      duration: "Duration",
1530      volume: "Volume",
1531      toggleMute: "Toggle Mute",
1532      toggleCaptions: "Toggle Captions",
1533      toggleFullscreen: "Toggle Fullscreen",
1534      frameTitle: "Player for {title}",
1535      captions: "Captions",
1536      settings: "Settings",
1537      speed: "Speed",
1538      quality: "Quality",
1539      adDuration: "Ad Duration",
1540      adClick: "More Info",
1541      audio: "Audio",
1542      captionStyle: "Caption Style",
1543      font: "Font",
1544      fontSize: "Font Size",
1545      fontStyle: "Font Style",
1546      fontColor: "Font Color",
1547      fontOpacity: "Font Opacity",
1548      backgroundColor: "Background Color",
1549      backgroundOpacity: "Background Opacity",
1550      windowColor: "Window Color",
1551      windowOpacity: "Window Opacity",
1552      monoSerif: "Mono serif",
1553      proportionalSerif: "Proportional serif",
1554      monoSansSerif: "Mono sans serif",
1555      proportionalSansSerif: "Proportional sans serif",
1556      casual: "Casual",
1557      cursive: "Cursive",
1558      smallCaps: "Small caps",
1559      white: "White",
1560      black: "Black",
1561      red: "Red",
1562      green: "Green",
1563      blue: "Blue",
1564      yellow: "Yellow",
1565      magenta: "Magenta",
1566      cyan: "Cyan",
1567      opaque: "Opaque",
1568      translucent: "Translucent",
1569      semitransparent: "Semitransparent",
1570      transparent: "Transparent",
1571      none: "None",
1572      raised: "Raised",
1573      depressed: "Depressed",
1574      uniform: "Uniform",
1575      dropShadow: "Drop Shadow",
1576      english: "English",
1577      german: "German",
1578      spanish: "Spanish",
1579      french: "French",
1580      italian: "Italian",
1581      dutch: "Dutch",
1582      polish: "Polish",
1583      portuguese: "Portuguese",
1584      russian: "Russian",
1585      vietnamese: "Vietnamese",
1586      danish: "Danish",
1587      chinese: "Chinese",
1588      swedish: "Swedish",
1589      thai: "Thai"
1590    },
1591    types: {embed: ["youtube", "vimeo", "soundcloud"], html5: ["video", "audio"]},
1592    urls: {
1593      vimeo: {api: "https://player.vimeo.com/api/player.js"},
1594      youtube: {api: "https://www.youtube.com/iframe_api"},
1595      soundcloud: {api: "https://w.soundcloud.com/player/api.js"}
1596    },
1597    listeners: {
1598      seek: null,
1599      play: null,
1600      pause: null,
1601      restart: null,
1602      rewind: null,
1603      forward: null,
1604      mute: null,
1605      volume: null,
1606      captions: null,
1607      fullscreen: null,
1608      speed: null
1609    },
1610    events: ["ready", "ended", "progress", "stalled", "playing", "waiting", "canplay", "canplaythrough", "loadstart", "loadeddata", "loadedmetadata", "timeupdate", "volumechange", "play", "pause", "error", "seeking", "emptied"],
1611    logPrefix: "[Plyr]"
1612  }, F = {
1613    object: function (e) {
1614      return null !== e && "object" == typeof e && e.constructor === Object
1615    }, array: function (e) {
1616      return null !== e && "object" == typeof e && e.constructor === Array
1617    }, number: function (e) {
1618      return null !== e && ("number" == typeof e && !isNaN(e - 0) || "object" == typeof e && e.constructor === Number)
1619    }, string: function (e) {
1620      return null !== e && ("string" == typeof e || "object" == typeof e && e.constructor === String)
1621    }, boolean: function (e) {
1622      return null !== e && "boolean" == typeof e
1623    }, nodeList: function (e) {
1624      return null !== e && e instanceof NodeList
1625    }, htmlElement: function (e) {
1626      return null !== e && e instanceof HTMLElement
1627    }, function: function (e) {
1628      return null !== e && "function" == typeof e
1629    }, event: function (e) {
1630      return null !== e && "object" == typeof e && (e.constructor === Event || e.constructor === CustomEvent)
1631    }, undefined: function (e) {
1632      return null !== e && void 0 === e
1633    }, empty: function (e) {
1634      return null === e || this.undefined(e) || (this.string(e) || this.array(e) || this.nodeList(e)) && 0 === e.length || this.object(e) && 0 === Object.keys(e).length
1635    }
1636  };
1637  !function () {
1638    var e = function () {
1639      var e = !1;
1640      return F.function(t.cancelFullScreen) ? e = "" : ["webkit", "o", "moz", "ms", "khtml"].some(function (n) {
1641        return F.function(t[n + "CancelFullScreen"]) ? (e = n, !0) : F.function(t.msExitFullscreen) && t.msFullscreenEnabled ? (e = "ms", !0) : void 0
1642      }), e
1643    }();
1644    I = {
1645      eventType: "ms" === e ? "MSFullscreenChange" : e + "fullscreenchange", isFullScreen: function (n) {
1646        if (!P.fullscreen) return !1;
1647        switch (F.undefined(n) && (n = t.body), e) {
1648          case"":
1649            return t.fullscreenElement === n;
1650          case"moz":
1651            return t.mozFullScreenElement === n;
1652          default:
1653            return t[e + "FullscreenElement"] === n
1654        }
1655      }, requestFullScreen: function (n) {
1656        return !!P.fullscreen && (F.htmlElement(n) || (n = t.body), "" === e ? n.requestFullScreen() : n[e + ("ms" === e ? "RequestFullscreen" : "RequestFullScreen")]())
1657      }, cancelFullScreen: function () {
1658        return !!P.fullscreen && ("" === e ? t.cancelFullScreen() : t[e + ("ms" === e ? "ExitFullscreen" : "CancelFullScreen")]())
1659      }, element: function () {
1660        return P.fullscreen ? "" === e ? t.fullscreenElement : t[e + "FullscreenElement"] : null
1661      }
1662    }
1663  }();
1664  var P = {
1665    fullscreen: !1 !== I.prefix, storage: function () {
1666      if (!("localStorage" in e)) return !1;
1667      try {
1668        e.localStorage.setItem("___test", "OK");
1669        var t = e.localStorage.getItem("___test");
1670        return e.localStorage.removeItem("___test"), "OK" === t
1671      } catch (e) {
1672        return !1
1673      }
1674    }(), pip: function () {
1675      return F.function(t.createElement("video").webkitSetPresentationMode)
1676    }(), airplay: function () {
1677      return F.function(e.WebKitPlaybackTargetAvailabilityEvent)
1678    }(), mime: function (e, t) {
1679      var n = e.media;
1680      try {
1681        if (!F.function(n.canPlayType)) return !1;
1682        if ("video" === e.type) switch (t) {
1683          case"video/webm":
1684            return n.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/no/, "");
1685          case"video/mp4":
1686            return n.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/, "");
1687          case"video/ogg":
1688            return n.canPlayType('video/ogg; codecs="theora"').replace(/no/, "")
1689        } else if ("audio" === e.type) switch (t) {
1690          case"audio/mpeg":
1691            return n.canPlayType("audio/mpeg;").replace(/no/, "");
1692          case"audio/ogg":
1693            return n.canPlayType('audio/ogg; codecs="vorbis"').replace(/no/, "");
1694          case"audio/wav":
1695            return n.canPlayType('audio/wav; codecs="1"').replace(/no/, "")
1696        }
1697      } catch (e) {
1698        return !1
1699      }
1700      return !1
1701    }
1702  };
1703  return {setup: C, supported: T, loadSprite: w, get: E}
1704}), function () {
1705  function e(e, t) {
1706    t = t || {bubbles: !1, cancelable: !1, detail: void 0};
1707    var n = document.createEvent("CustomEvent");
1708    return n.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), n
1709  }
1710
1711  "function" != typeof window.CustomEvent && (e.prototype = window.Event.prototype, window.CustomEvent = e)
1712}();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.