PageSourceSearch

https://www.daltile.com/-/media/Base-Themes/Core-Libraries/scripts/mediaelement-and-player.js

js daltile.com collected 2026-09-24 19:02:51 UTC 394,229 bytes, 8,529 lines download raw bytes

vendor: 35,663 bytes, lines 1-703
1/*!
2 * MediaElement.js
3 * http://www.mediaelementjs.com/
4 *
5 * Wrapper that mimics native HTML5 MediaElement (audio and video)
6 * using a variety of technologies (pure JavaScript, Flash, iframe)
7 *
8 * Copyright 2010-2017, John Dyer (http://j.hn/)
9 * License: MIT
10 *
11 */(function () { function e(t, n, r) { function s(o, u) { if (!n[o]) { if (!t[o]) { var a = typeof require == "function" && require; if (!u && a) return a(o, !0); if (i) return i(o, !0); var f = new Error("Cannot find module '" + o + "'"); throw f.code = "MODULE_NOT_FOUND", f } var l = n[o] = { exports: {} }; t[o][0].call(l.exports, function (e) { var n = t[o][1][e]; return s(n ? n : e) }, l, l.exports, e, t, n, r) } return n[o].exports } var i = typeof require == "function" && require; for (var o = 0; o < r.length; o++)s(r[o]); return s } return e })()({
12     1: [function (_dereq_, module, exports) {
13
14     }, {}], 2: [function (_dereq_, module, exports) {
15         (function (global) {
16             var topLevel = typeof global !== 'undefined' ? global :
17                 typeof window !== 'undefined' ? window : {}
18             var minDoc = _dereq_(1);
19
20             var doccy;
21
22             if (typeof document !== 'undefined') {
23                 doccy = document;
24             } else {
25                 doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];
26
27                 if (!doccy) {
28                     doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;
29                 }
30             }
31
32             module.exports = doccy;
33
34         }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
35     }, { "1": 1 }], 3: [function (_dereq_, module, exports) {
36         (function (global) {
37             var win;
38
39             if (typeof window !== "undefined") {
40                 win = window;
41             } else if (typeof global !== "undefined") {
42                 win = global;
43             } else if (typeof self !== "undefined") {
44                 win = self;
45             } else {
46                 win = {};
47             }
48
49             module.exports = win;
50
51         }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
52     }, {}], 4: [function (_dereq_, module, exports) {
53         (function (root) {
54
55             // Store setTimeout reference so promise-polyfill will be unaffected by
56             // other code modifying setTimeout (like sinon.useFakeTimers())
57             var setTimeoutFunc = setTimeout;
58
59             function noop() { }
60
61             // Polyfill for Function.prototype.bind
62             function bind(fn, thisArg) {
63                 return function () {
64                     fn.apply(thisArg, arguments);
65                 };
66             }
67
68             function Promise(fn) {
69                 if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');
70                 if (typeof fn !== 'function') throw new TypeError('not a function');
71                 this._state = 0;
72                 this._handled = false;
73                 this._value = undefined;
74                 this._deferreds = [];
75
76                 doResolve(fn, this);
77             }
78
79             function handle(self, deferred) {
80                 while (self._state === 3) {
81                     self = self._value;
82                 }
83                 if (self._state === 0) {
84                     self._deferreds.push(deferred);
85                     return;
86                 }
87                 self._handled = true;
88                 Promise._immediateFn(function () {
89                     var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
90                     if (cb === null) {
91                         (self._state === 1 ? resolve : reject)(deferred.promise, self._value);
92                         return;
93                     }
94                     var ret;
95                     try {
96                         ret = cb(self._value);
97                     } catch (e) {
98                         reject(deferred.promise, e);
99                         return;
100                     }
101                     resolve(deferred.promise, ret);
102                 });
103             }
104
105             function resolve(self, newValue) {
106                 try {
107                     // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
108                     if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');
109                     if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
110                         var then = newValue.then;
111                         if (newValue instanceof Promise) {
112                             self._state = 3;
113                             self._value = newValue;
114                             finale(self);
115                             return;
116                         } else if (typeof then === 'function') {
117                             doResolve(bind(then, newValue), self);
118                             return;
119                         }
120                     }
121                     self._state = 1;
122                     self._value = newValue;
123                     finale(self);
124                 } catch (e) {
125                     reject(self, e);
126                 }
127             }
128
129             function reject(self, newValue) {
130                 self._state = 2;
131                 self._value = newValue;
132                 finale(self);
133             }
134
135             function finale(self) {
136                 if (self._state === 2 && self._deferreds.length === 0) {
137                     Promise._immediateFn(function () {
138                         if (!self._handled) {
139                             Promise._unhandledRejectionFn(self._value);
140                         }
141                     });
142                 }
143
144                 for (var i = 0, len = self._deferreds.length; i < len; i++) {
145                     handle(self, self._deferreds[i]);
146                 }
147                 self._deferreds = null;
148             }
149
150             function Handler(onFulfilled, onRejected, promise) {
151                 this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
152                 this.onRejected = typeof onRejected === 'function' ? onRejected : null;
153                 this.promise = promise;
154             }
155
156             /**
157              * Take a potentially misbehaving resolver function and make sure
158              * onFulfilled and onRejected are only called once.
159              *
160              * Makes no guarantees about asynchrony.
161              */
162             function doResolve(fn, self) {
163                 var done = false;
164                 try {
165                     fn(function (value) {
166                         if (done) return;
167                         done = true;
168                         resolve(self, value);
169                     }, function (reason) {
170                         if (done) return;
171                         done = true;
172                         reject(self, reason);
173                     });
174                 } catch (ex) {
175                     if (done) return;
176                     done = true;
177                     reject(self, ex);
178                 }
179             }
180
181             Promise.prototype['catch'] = function (onRejected) {
182                 return this.then(null, onRejected);
183             };
184
185             Promise.prototype.then = function (onFulfilled, onRejected) {
186                 var prom = new (this.constructor)(noop);
187
188                 handle(this, new Handler(onFulfilled, onRejected, prom));
189                 return prom;
190             };
191
192             Promise.all = function (arr) {
193                 var args = Array.prototype.slice.call(arr);
194
195                 return new Promise(function (resolve, reject) {
196                     if (args.length === 0) return resolve([]);
197                     var remaining = args.length;
198
199                     function res(i, val) {
200                         try {
201                             if (val && (typeof val === 'object' || typeof val === 'function')) {
202                                 var then = val.then;
203                                 if (typeof then === 'function') {
204                                     then.call(val, function (val) {
205                                         res(i, val);
206                                     }, reject);
207                                     return;
208                                 }
209                             }
210                             args[i] = val;
211                             if (--remaining === 0) {
212                                 resolve(args);
213                             }
214                         } catch (ex) {
215                             reject(ex);
216                         }
217                     }
218
219                     for (var i = 0; i < args.length; i++) {
220                         res(i, args[i]);
221                     }
222                 });
223             };
224
225             Promise.resolve = function (value) {
226                 if (value && typeof value === 'object' && value.constructor === Promise) {
227                     return value;
228                 }
229
230                 return new Promise(function (resolve) {
231                     resolve(value);
232                 });
233             };
234
235             Promise.reject = function (value) {
236                 return new Promise(function (resolve, reject) {
237                     reject(value);
238                 });
239             };
240
241             Promise.race = function (values) {
242                 return new Promise(function (resolve, reject) {
243                     for (var i = 0, len = values.length; i < len; i++) {
244                         values[i].then(resolve, reject);
245                     }
246                 });
247             };
248
249             // Use polyfill for setImmediate for performance gains
250             Promise._immediateFn = (typeof setImmediate === 'function' && function (fn) { setImmediate(fn); }) ||
251                 function (fn) {
252                     setTimeoutFunc(fn, 0);
253                 };
254
255             Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {
256                 if (typeof console !== 'undefined' && console) {
257                     console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console
258                 }
259             };
260
261             /**
262              * Set the immediate function to execute callbacks
263              * @param fn {function} Function to execute
264              * @deprecated
265              */
266             Promise._setImmediateFn = function _setImmediateFn(fn) {
267                 Promise._immediateFn = fn;
268             };
269
270             /**
271              * Change the function to execute on unhandled rejection
272              * @param {function} fn Function to execute on unhandled rejection
273              * @deprecated
274              */
275             Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {
276                 Promise._unhandledRejectionFn = fn;
277             };
278
279             if (typeof module !== 'undefined' && module.exports) {
280                 module.exports = Promise;
281             } else if (!root.Promise) {
282                 root.Promise = Promise;
283             }
284
285         })(this);
286
287     }, {}], 5: [function (_dereq_, module, exports) {
288         'use strict';
289
290         Object.defineProperty(exports, "__esModule", {
291             value: true
292         });
293
294         var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
295
296         var _mejs = _dereq_(7);
297
298         var _mejs2 = _interopRequireDefault(_mejs);
299
300         var _en = _dereq_(15);
301
302         var _general = _dereq_(27);
303
304         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
305
306         var i18n = { lang: 'en', en: _en.EN };
307
308         i18n.language = function () {
309             for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
310                 args[_key] = arguments[_key];
311             }
312
313             if (args !== null && args !== undefined && args.length) {
314
315                 if (typeof args[0] !== 'string') {
316                     throw new TypeError('Language code must be a string value');
317                 }
318
319                 if (!/^[a-z]{2,3}((\-|_)[a-z]{2})?$/i.test(args[0])) {
320                     throw new TypeError('Language code must have format 2-3 letters and. optionally, hyphen, underscore followed by 2 more letters');
321                 }
322
323                 i18n.lang = args[0];
324
325                 if (i18n[args[0]] === undefined) {
326                     args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {};
327                     i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN;
328                 } else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') {
329                     i18n[args[0]] = args[1];
330                 }
331             }
332
333             return i18n.lang;
334         };
335
336         i18n.t = function (message) {
337             var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
338
339
340             if (typeof message === 'string' && message.length) {
341
342                 var str = void 0,
343                     pluralForm = void 0;
344
345                 var language = i18n.language();
346
347                 var _plural = function _plural(input, number, form) {
348
349                     if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') {
350                         return input;
351                     }
352
353                     var _pluralForms = function () {
354                         return [function () {
355                             return arguments.length <= 1 ? undefined : arguments[1];
356                         }, function () {
357                             return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
358                         }, function () {
359                             return (arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
360                         }, function () {
361                             if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
362                                 return arguments.length <= 1 ? undefined : arguments[1];
363                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) {
364                                 return arguments.length <= 2 ? undefined : arguments[2];
365                             } else {
366                                 return arguments.length <= 3 ? undefined : arguments[3];
367                             }
368                         }, function () {
369                             if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) {
370                                 return arguments.length <= 1 ? undefined : arguments[1];
371                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) {
372                                 return arguments.length <= 2 ? undefined : arguments[2];
373                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) {
374                                 return arguments.length <= 3 ? undefined : arguments[3];
375                             } else {
376                                 return arguments.length <= 4 ? undefined : arguments[4];
377                             }
378                         }, function () {
379                             if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
380                                 return arguments.length <= 1 ? undefined : arguments[1];
381                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 0 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
382                                 return arguments.length <= 2 ? undefined : arguments[2];
383                             } else {
384                                 return arguments.length <= 3 ? undefined : arguments[3];
385                             }
386                         }, function () {
387                             if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
388                                 return arguments.length <= 1 ? undefined : arguments[1];
389                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
390                                 return arguments.length <= 2 ? undefined : arguments[2];
391                             } else {
392                                 return [3];
393                             }
394                         }, function () {
395                             if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
396                                 return arguments.length <= 1 ? undefined : arguments[1];
397                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
398                                 return arguments.length <= 2 ? undefined : arguments[2];
399                             } else {
400                                 return arguments.length <= 3 ? undefined : arguments[3];
401                             }
402                         }, function () {
403                             if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
404                                 return arguments.length <= 1 ? undefined : arguments[1];
405                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) {
406                                 return arguments.length <= 2 ? undefined : arguments[2];
407                             } else {
408                                 return arguments.length <= 3 ? undefined : arguments[3];
409                             }
410                         }, function () {
411                             if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
412                                 return arguments.length <= 1 ? undefined : arguments[1];
413                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
414                                 return arguments.length <= 2 ? undefined : arguments[2];
415                             } else {
416                                 return arguments.length <= 3 ? undefined : arguments[3];
417                             }
418                         }, function () {
419                             if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) {
420                                 return arguments.length <= 2 ? undefined : arguments[2];
421                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) {
422                                 return arguments.length <= 3 ? undefined : arguments[3];
423                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) {
424                                 return arguments.length <= 4 ? undefined : arguments[4];
425                             } else {
426                                 return arguments.length <= 1 ? undefined : arguments[1];
427                             }
428                         }, function () {
429                             if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
430                                 return arguments.length <= 1 ? undefined : arguments[1];
431                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
432                                 return arguments.length <= 2 ? undefined : arguments[2];
433                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) {
434                                 return arguments.length <= 3 ? undefined : arguments[3];
435                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) {
436                                 return arguments.length <= 4 ? undefined : arguments[4];
437                             } else {
438                                 return arguments.length <= 5 ? undefined : arguments[5];
439                             }
440                         }, function () {
441                             if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
442                                 return arguments.length <= 1 ? undefined : arguments[1];
443                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
444                                 return arguments.length <= 2 ? undefined : arguments[2];
445                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
446                                 return arguments.length <= 3 ? undefined : arguments[3];
447                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) {
448                                 return arguments.length <= 4 ? undefined : arguments[4];
449                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) {
450                                 return arguments.length <= 5 ? undefined : arguments[5];
451                             } else {
452                                 return arguments.length <= 6 ? undefined : arguments[6];
453                             }
454                         }, function () {
455                             if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
456                                 return arguments.length <= 1 ? undefined : arguments[1];
457                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 11) {
458                                 return arguments.length <= 2 ? undefined : arguments[2];
459                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
460                                 return arguments.length <= 3 ? undefined : arguments[3];
461                             } else {
462                                 return arguments.length <= 4 ? undefined : arguments[4];
463                             }
464                         }, function () {
465                             if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) {
466                                 return arguments.length <= 1 ? undefined : arguments[1];
467                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) {
468                                 return arguments.length <= 2 ? undefined : arguments[2];
469                             } else {
470                                 return arguments.length <= 3 ? undefined : arguments[3];
471                             }
472                         }, function () {
473                             return (arguments.length <= 0 ? undefined : arguments[0]) !== 11 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
474                         }, function () {
475                             if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
476                                 return arguments.length <= 1 ? undefined : arguments[1];
477                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
478                                 return arguments.length <= 2 ? undefined : arguments[2];
479                             } else {
480                                 return arguments.length <= 3 ? undefined : arguments[3];
481                             }
482                         }, function () {
483                             if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
484                                 return arguments.length <= 1 ? undefined : arguments[1];
485                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
486                                 return arguments.length <= 2 ? undefined : arguments[2];
487                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) {
488                                 return arguments.length <= 3 ? undefined : arguments[3];
489                             } else {
490                                 return arguments.length <= 4 ? undefined : arguments[4];
491                             }
492                         }, function () {
493                             return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
494                         }, function () {
495                             if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
496                                 return arguments.length <= 1 ? undefined : arguments[1];
497                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
498                                 return arguments.length <= 2 ? undefined : arguments[2];
499                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) {
500                                 return arguments.length <= 3 ? undefined : arguments[3];
501                             } else {
502                                 return arguments.length <= 4 ? undefined : arguments[4];
503                             }
504                         }, function () {
505                             if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
506                                 return arguments.length <= 1 ? undefined : arguments[1];
507                             } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
508                                 return arguments.length <= 2 ? undefined : arguments[2];
509                             } else {
510                                 return arguments.length <= 3 ? undefined : arguments[3];
511                             }
512                         }];
513                     }();
514
515                     return _pluralForms[form].apply(null, [number].concat(input));
516                 };
517
518                 if (i18n[language] !== undefined) {
519                     str = i18n[language][message];
520                     if (pluralParam !== null && typeof pluralParam === 'number') {
521                         pluralForm = i18n[language]['mejs.plural-form'];
522                         str = _plural.apply(null, [str, pluralParam, pluralForm]);
523                     }
524                 }
525
526                 if (!str && i18n.en) {
527                     str = i18n.en[message];
528                     if (pluralParam !== null && typeof pluralParam === 'number') {
529                         pluralForm = i18n.en['mejs.plural-form'];
530                         str = _plural.apply(null, [str, pluralParam, pluralForm]);
531                     }
532                 }
533
534                 str = str || message;
535
536                 if (pluralParam !== null && typeof pluralParam === 'number') {
537                     str = str.replace('%1', pluralParam);
538                 }
539
540                 return (0, _general.escapeHTML)(str);
541             }
542
543             return message;
544         };
545
546         _mejs2.default.i18n = i18n;
547
548         if (typeof mejsL10n !== 'undefined') {
549             _mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings);
550         }
551
552         exports.default = i18n;
553
554     }, { "15": 15, "27": 27, "7": 7 }], 6: [function (_dereq_, module, exports) {
555         'use strict';
556
557         Object.defineProperty(exports, "__esModule", {
558             value: true
559         });
560
561         var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
562
563         var _window = _dereq_(3);
564
565         var _window2 = _interopRequireDefault(_window);
566
567         var _document = _dereq_(2);
568
569         var _document2 = _interopRequireDefault(_document);
570
571         var _mejs = _dereq_(7);
572
573         var _mejs2 = _interopRequireDefault(_mejs);
574
575         var _general = _dereq_(27);
576
577         var _media2 = _dereq_(28);
578
579         var _renderer = _dereq_(8);
580
581         var _constants = _dereq_(25);
582
583         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
584
585         function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
586
587         var MediaElement = function MediaElement(idOrNode, options, sources) {
588             var _this = this;
589
590             _classCallCheck(this, MediaElement);
591
592             var t = this;
593
594             sources = Array.isArray(sources) ? sources : null;
595
596             t.defaults = {
597                 renderers: [],
598
599                 fakeNodeName: 'mediaelementwrapper',
600
601                 pluginPath: 'build/',
602
603                 shimScriptAccess: 'sameDomain'
604             };
605
606             options = Object.assign(t.defaults, options);
607
608             t.mediaElement = _document2.default.createElement(options.fakeNodeName);
609
610             var id = idOrNode,
611                 error = false;
612
613             if (typeof idOrNode === 'string') {
614                 t.mediaElement.originalNode = _document2.default.getElementById(idOrNode);
615             } else {
616                 t.mediaElement.originalNode = idOrNode;
617                 id = idOrNode.id;
618             }
619
620             if (t.mediaElement.originalNode === undefined || t.mediaElement.originalNode === null) {
621                 return null;
622             }
623
624             t.mediaElement.options = options;
625             id = id || 'mejs_' + Math.random().toString().slice(2);
626
627             t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs');
628
629             var tagName = t.mediaElement.originalNode.tagName.toLowerCase();
630             if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) {
631                 t.mediaElement.originalNode.setAttribute('preload', 'none');
632             }
633
634             t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode);
635
636             t.mediaElement.appendChild(t.mediaElement.originalNode);
637
638             var processURL = function processURL(url, type) {
639                 if (_window2.default.location.protocol === 'https:' && url.indexOf('http:') === 0 && _constants.IS_IOS && _mejs2.default.html5media.mediaTypes.indexOf(type) > -1) {
640                     var xhr = new XMLHttpRequest();
641                     xhr.onreadystatechange = function () {
642                         if (this.readyState === 4 && this.status === 200) {
643                             var _url = _window2.default.URL || _window2.default.webkitURL,
644                                 blobUrl = _url.createObjectURL(this.response);
645                             t.mediaElement.originalNode.setAttribute('src', blobUrl);
646                             return blobUrl;
647                         }
648                         return url;
649                     };
650                     xhr.open('GET', url);
651                     xhr.responseType = 'blob';
652                     xhr.send();
653                 }
654
655                 return url;
656             };
657
658             var mediaFiles = void 0;
659
660             if (sources !== null) {
661                 mediaFiles = sources;
662             } else if (t.mediaElement.originalNode !== null) {
663
664                 mediaFiles = [];
665
666                 switch (t.mediaElement.originalNode.nodeName.toLowerCase()) {
667                     case 'iframe':
668                         mediaFiles.push({
669                             type: '',
670                             src: t.mediaElement.originalNode.getAttribute('src')
671                         });
672                         break;
673                     case 'audio':
674                     case 'video':
675                         var _sources = t.mediaElement.originalNode.children.length,
676                             nodeSource = t.mediaElement.originalNode.getAttribute('src');
677
678                         if (nodeSource) {
679                             var node = t.mediaElement.originalNode,
680                                 type = (0, _media2.formatType)(nodeSource, node.getAttribute('type'));
681                             mediaFiles.push({
682                                 type: type,
683                                 src: processURL(nodeSource, type)
684                             });
685                         }
686
687                         for (var i = 0; i < _sources; i++) {
688                             var n = t.mediaElement.originalNode.children[i];
689                             if (n.tagName.toLowerCase() === 'source') {
690                                 var src = n.getAttribute('src'),
691                                     _type = (0, _media2.formatType)(src, n.getAttribute('type'));
692                                 mediaFiles.push({ type: _type, src: processURL(src, _type) });
693                             }
694                         }
695                         break;
696                 }
697             }
698
699             t.mediaElement.id = id;
700             t.mediaElement.renderers = {};
701             t.mediaElement.events = {};
702             t.mediaElement.promises = [];
703             t.mediaElement.renderer = null;
704             t.mediaElement.rendererName = null;
705
706             t.mediaElement.changeRenderer = function (rendererName, mediaFiles) {
707
708                 var t = _this,
709                     media = Object.keys(mediaFiles[0]).length > 2 ? mediaFiles[0] : mediaFiles[0].src;
710
711                 if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) {
712                     t.mediaElement.renderer.pause();
713                     if (t.mediaElement.renderer.stop) {
714                         t.mediaElement.renderer.stop();
715                     }
716                     t.mediaElement.renderer.show();
717                     t.mediaElement.renderer.setSrc(media);
718                     return true;
719                 }
720
721                 if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
722                     t.mediaElement.renderer.pause();
723                     if (t.mediaElement.renderer.stop) {
724                         t.mediaElement.renderer.stop();
725                     }
726                     t.mediaElement.renderer.hide();
727                 }
728
729                 var newRenderer = t.mediaElement.renderers[rendererName],
730                     newRendererType = null;
731
732                 if (newRenderer !== undefined && newRenderer !== null) {
733                     newRenderer.show();
734                     newRenderer.setSrc(media);
735                     t.mediaElement.renderer = newRenderer;
vendor: 24,781 bytes, lines 736-1271
736                     t.mediaElement.rendererName = rendererName;
737                     return true;
738                 }
739
740                 var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order;
741
742                 for (var _i = 0, total = rendererArray.length; _i < total; _i++) {
743                     var index = rendererArray[_i];
744
745                     if (index === rendererName) {
746                         var rendererList = _renderer.renderer.renderers;
747                         newRendererType = rendererList[index];
748
749                         var renderOptions = Object.assign(newRendererType.options, t.mediaElement.options);
750                         newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles);
751                         newRenderer.name = rendererName;
752
753                         t.mediaElement.renderers[newRendererType.name] = newRenderer;
754                         t.mediaElement.renderer = newRenderer;
755                         t.mediaElement.rendererName = rendererName;
756                         newRenderer.show();
757                         return true;
758                     }
759                 }
760
761                 return false;
762             };
763
764             t.mediaElement.setSize = function (width, height) {
765                 if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
766                     t.mediaElement.renderer.setSize(width, height);
767                 }
768             };
769
770             t.mediaElement.generateError = function (message, urlList) {
771                 message = message || '';
772                 urlList = Array.isArray(urlList) ? urlList : [];
773                 var event = (0, _general.createEvent)('error', t.mediaElement);
774                 event.message = message;
775                 event.urls = urlList;
776                 t.mediaElement.dispatchEvent(event);
777                 error = true;
778             };
779
780             var props = _mejs2.default.html5media.properties,
781                 methods = _mejs2.default.html5media.methods,
782                 addProperty = function addProperty(obj, name, onGet, onSet) {
783                     var oldValue = obj[name];
784                     var getFn = function getFn() {
785                         return onGet.apply(obj, [oldValue]);
786                     },
787                         setFn = function setFn(newValue) {
788                             oldValue = onSet.apply(obj, [newValue]);
789                             return oldValue;
790                         };
791
792                     Object.defineProperty(obj, name, {
793                         get: getFn,
794                         set: setFn
795                     });
796                 },
797                 assignGettersSetters = function assignGettersSetters(propName) {
798                     if (propName !== 'src') {
799
800                         var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1),
801                             getFn = function getFn() {
802                                 return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['get' + capName] === 'function' ? t.mediaElement.renderer['get' + capName]() : null;
803                             },
804                             setFn = function setFn(value) {
805                                 if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['set' + capName] === 'function') {
806                                     t.mediaElement.renderer['set' + capName](value);
807                                 }
808                             };
809
810                         addProperty(t.mediaElement, propName, getFn, setFn);
811                         t.mediaElement['get' + capName] = getFn;
812                         t.mediaElement['set' + capName] = setFn;
813                     }
814                 },
815                 getSrc = function getSrc() {
816                     return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null;
817                 },
818                 setSrc = function setSrc(value) {
819                     var mediaFiles = [];
820
821                     if (typeof value === 'string') {
822                         mediaFiles.push({
823                             src: value,
824                             type: value ? (0, _media2.getTypeFromFile)(value) : ''
825                         });
826                     } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src !== undefined) {
827                         var _src = (0, _media2.absolutizeUrl)(value.src),
828                             _type2 = value.type,
829                             media = Object.assign(value, {
830                                 src: _src,
831                                 type: (_type2 === '' || _type2 === null || _type2 === undefined) && _src ? (0, _media2.getTypeFromFile)(_src) : _type2
832                             });
833                         mediaFiles.push(media);
834                     } else if (Array.isArray(value)) {
835                         for (var _i2 = 0, total = value.length; _i2 < total; _i2++) {
836
837                             var _src2 = (0, _media2.absolutizeUrl)(value[_i2].src),
838                                 _type3 = value[_i2].type,
839                                 _media = Object.assign(value[_i2], {
840                                     src: _src2,
841                                     type: (_type3 === '' || _type3 === null || _type3 === undefined) && _src2 ? (0, _media2.getTypeFromFile)(_src2) : _type3
842                                 });
843
844                             mediaFiles.push(_media);
845                         }
846                     }
847
848                     var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []),
849                         event = void 0;
850
851                     if (!t.mediaElement.paused && !(t.mediaElement.src == null || t.mediaElement.src === '')) {
852                         t.mediaElement.pause();
853                         event = (0, _general.createEvent)('pause', t.mediaElement);
854                         t.mediaElement.dispatchEvent(event);
855                     }
856                     t.mediaElement.originalNode.src = mediaFiles[0].src || '';
857
858                     if (renderInfo === null && mediaFiles[0].src) {
859                         t.mediaElement.generateError('No renderer found', mediaFiles);
860                         return;
861                     }
862
863                     var shouldChangeRenderer = !(mediaFiles[0].src == null || mediaFiles[0].src === '');
864                     return shouldChangeRenderer ? t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles) : null;
865                 },
866                 triggerAction = function triggerAction(methodName, args) {
867                     try {
868                         if (methodName === 'play' && (t.mediaElement.rendererName === 'native_dash' || t.mediaElement.rendererName === 'native_hls' || t.mediaElement.rendererName === 'vimeo_iframe')) {
869                             var response = t.mediaElement.renderer[methodName](args);
870                             if (response && typeof response.then === 'function') {
871                                 response.catch(function () {
872                                     if (t.mediaElement.paused) {
873                                         setTimeout(function () {
874                                             var tmpResponse = t.mediaElement.renderer.play();
875                                             if (tmpResponse !== undefined) {
876                                                 tmpResponse.catch(function () {
877                                                     if (!t.mediaElement.renderer.paused) {
878                                                         t.mediaElement.renderer.pause();
879                                                     }
880                                                 });
881                                             }
882                                         }, 150);
883                                     }
884                                 });
885                             }
886                         } else {
887                             t.mediaElement.renderer[methodName](args);
888                         }
889                     } catch (e) {
890                         t.mediaElement.generateError(e, mediaFiles);
891                     }
892                 },
893                 assignMethods = function assignMethods(methodName) {
894                     t.mediaElement[methodName] = function () {
895                         for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
896                             args[_key] = arguments[_key];
897                         }
898
899                         if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') {
900                             if (t.mediaElement.promises.length) {
901                                 Promise.all(t.mediaElement.promises).then(function () {
902                                     triggerAction(methodName, args);
903                                 }).catch(function (e) {
904                                     t.mediaElement.generateError(e, mediaFiles);
905                                 });
906                             } else {
907                                 triggerAction(methodName, args);
908                             }
909                         }
910                         return null;
911                     };
912                 };
913
914             addProperty(t.mediaElement, 'src', getSrc, setSrc);
915             t.mediaElement.getSrc = getSrc;
916             t.mediaElement.setSrc = setSrc;
917
918             for (var _i3 = 0, total = props.length; _i3 < total; _i3++) {
919                 assignGettersSetters(props[_i3]);
920             }
921
922             for (var _i4 = 0, _total = methods.length; _i4 < _total; _i4++) {
923                 assignMethods(methods[_i4]);
924             }
925
926             t.mediaElement.addEventListener = function (eventName, callback) {
927                 t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];
928
929                 t.mediaElement.events[eventName].push(callback);
930             };
931             t.mediaElement.removeEventListener = function (eventName, callback) {
932                 if (!eventName) {
933                     t.mediaElement.events = {};
934                     return true;
935                 }
936
937                 var callbacks = t.mediaElement.events[eventName];
938
939                 if (!callbacks) {
940                     return true;
941                 }
942
943                 if (!callback) {
944                     t.mediaElement.events[eventName] = [];
945                     return true;
946                 }
947
948                 for (var _i5 = 0; _i5 < callbacks.length; _i5++) {
949                     if (callbacks[_i5] === callback) {
950                         t.mediaElement.events[eventName].splice(_i5, 1);
951                         return true;
952                     }
953                 }
954                 return false;
955             };
956
957             t.mediaElement.dispatchEvent = function (event) {
958                 var callbacks = t.mediaElement.events[event.type];
959                 if (callbacks) {
960                     for (var _i6 = 0; _i6 < callbacks.length; _i6++) {
961                         callbacks[_i6].apply(null, [event]);
962                     }
963                 }
964             };
965
966             t.mediaElement.destroy = function () {
967                 var mediaElement = t.mediaElement.originalNode.cloneNode(true);
968                 var wrapper = t.mediaElement.parentElement;
969                 mediaElement.removeAttribute('id');
970                 mediaElement.remove();
971                 t.mediaElement.remove();
972                 wrapper.appendChild(mediaElement);
973             };
974
975             if (mediaFiles.length) {
976                 t.mediaElement.src = mediaFiles;
977             }
978
979             if (t.mediaElement.promises.length) {
980                 Promise.all(t.mediaElement.promises).then(function () {
981                     if (t.mediaElement.options.success) {
982                         t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
983                     }
984                 }).catch(function () {
985                     if (error && t.mediaElement.options.error) {
986                         t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
987                     }
988                 });
989             } else {
990                 if (t.mediaElement.options.success) {
991                     t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
992                 }
993
994                 if (error && t.mediaElement.options.error) {
995                     t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
996                 }
997             }
998
999             return t.mediaElement;
1000         };
1001
1002         _window2.default.MediaElement = MediaElement;
1003         _mejs2.default.MediaElement = MediaElement;
1004
1005         exports.default = MediaElement;
1006
1007     }, { "2": 2, "25": 25, "27": 27, "28": 28, "3": 3, "7": 7, "8": 8 }], 7: [function (_dereq_, module, exports) {
1008         'use strict';
1009
1010         Object.defineProperty(exports, "__esModule", {
1011             value: true
1012         });
1013
1014         var _window = _dereq_(3);
1015
1016         var _window2 = _interopRequireDefault(_window);
1017
1018         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1019
1020         var mejs = {};
1021
1022         mejs.version = '4.2.16';
1023
1024         mejs.html5media = {
1025             properties: ['volume', 'src', 'currentTime', 'muted', 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'],
1026             readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
1027
1028             methods: ['load', 'play', 'pause', 'canPlayType'],
1029
1030             events: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'progress', 'canplay', 'canplaythrough', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'playing', 'pause', 'waiting', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'volumechange'],
1031
1032             mediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg', 'video/ogv']
1033         };
1034
1035         _window2.default.mejs = mejs;
1036
1037         exports.default = mejs;
1038
1039     }, { "3": 3 }], 8: [function (_dereq_, module, exports) {
1040         'use strict';
1041
1042         Object.defineProperty(exports, "__esModule", {
1043             value: true
1044         });
1045         exports.renderer = undefined;
1046
1047         var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
1048
1049         var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
1050
1051         var _mejs = _dereq_(7);
1052
1053         var _mejs2 = _interopRequireDefault(_mejs);
1054
1055         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1056
1057         function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1058
1059         var Renderer = function () {
1060             function Renderer() {
1061                 _classCallCheck(this, Renderer);
1062
1063                 this.renderers = {};
1064                 this.order = [];
1065             }
1066
1067             _createClass(Renderer, [{
1068                 key: 'add',
1069                 value: function add(renderer) {
1070                     if (renderer.name === undefined) {
1071                         throw new TypeError('renderer must contain at least `name` property');
1072                     }
1073
1074                     this.renderers[renderer.name] = renderer;
1075                     this.order.push(renderer.name);
1076                 }
1077             }, {
1078                 key: 'select',
1079                 value: function select(mediaFiles) {
1080                     var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
1081
1082                     var renderersLength = renderers.length;
1083
1084                     renderers = renderers.length ? renderers : this.order;
1085
1086                     if (!renderersLength) {
1087                         var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i],
1088                             rendererRanking = function rendererRanking(renderer) {
1089                                 for (var i = 0, total = rendererIndicator.length; i < total; i++) {
1090                                     if (rendererIndicator[i].test(renderer)) {
1091                                         return i;
1092                                     }
1093                                 }
1094                                 return rendererIndicator.length;
1095                             };
1096
1097                         renderers.sort(function (a, b) {
1098                             return rendererRanking(a) - rendererRanking(b);
1099                         });
1100                     }
1101
1102                     for (var i = 0, total = renderers.length; i < total; i++) {
1103                         var key = renderers[i],
1104                             _renderer = this.renderers[key];
1105
1106                         if (_renderer !== null && _renderer !== undefined) {
1107                             for (var j = 0, jl = mediaFiles.length; j < jl; j++) {
1108                                 if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) {
1109                                     return {
1110                                         rendererName: _renderer.name,
1111                                         src: mediaFiles[j].src
1112                                     };
1113                                 }
1114                             }
1115                         }
1116                     }
1117
1118                     return null;
1119                 }
1120             }, {
1121                 key: 'order',
1122                 set: function set(order) {
1123                     if (!Array.isArray(order)) {
1124                         throw new TypeError('order must be an array of strings.');
1125                     }
1126
1127                     this._order = order;
1128                 },
1129                 get: function get() {
1130                     return this._order;
1131                 }
1132             }, {
1133                 key: 'renderers',
1134                 set: function set(renderers) {
1135                     if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {
1136                         throw new TypeError('renderers must be an array of objects.');
1137                     }
1138
1139                     this._renderers = renderers;
1140                 },
1141                 get: function get() {
1142                     return this._renderers;
1143                 }
1144             }]);
1145
1146             return Renderer;
1147         }();
1148
1149         var renderer = exports.renderer = new Renderer();
1150
1151         _mejs2.default.Renderers = renderer;
1152
1153     }, { "7": 7 }], 9: [function (_dereq_, module, exports) {
1154         'use strict';
1155
1156         var _window = _dereq_(3);
1157
1158         var _window2 = _interopRequireDefault(_window);
1159
1160         var _document = _dereq_(2);
1161
1162         var _document2 = _interopRequireDefault(_document);
1163
1164         var _i18n = _dereq_(5);
1165
1166         var _i18n2 = _interopRequireDefault(_i18n);
1167
1168         var _player = _dereq_(16);
1169
1170         var _player2 = _interopRequireDefault(_player);
1171
1172         var _constants = _dereq_(25);
1173
1174         var Features = _interopRequireWildcard(_constants);
1175
1176         var _general = _dereq_(27);
1177
1178         var _dom = _dereq_(26);
1179
1180         var _media = _dereq_(28);
1181
1182         function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
1183
1184         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1185
1186         Object.assign(_player.config, {
1187             usePluginFullScreen: true,
1188
1189             fullscreenText: null,
1190
1191             useFakeFullscreen: false
1192         });
1193
1194         Object.assign(_player2.default.prototype, {
1195             isFullScreen: false,
1196
1197             isNativeFullScreen: false,
1198
1199             isInIframe: false,
1200
1201             isPluginClickThroughCreated: false,
1202
1203             fullscreenMode: '',
1204
1205             containerSizeTimeout: null,
1206
1207             buildfullscreen: function buildfullscreen(player) {
1208                 if (!player.isVideo) {
1209                     return;
1210                 }
1211
1212                 player.isInIframe = _window2.default.location !== _window2.default.parent.location;
1213
1214                 player.detectFullscreenMode();
1215
1216                 var t = this,
1217                     fullscreenTitle = (0, _general.isString)(t.options.fullscreenText) ? t.options.fullscreenText : _i18n2.default.t('mejs.fullscreen'),
1218                     fullscreenBtn = _document2.default.createElement('div');
1219
1220                 fullscreenBtn.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'fullscreen-button';
1221                 fullscreenBtn.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + fullscreenTitle + '" aria-label="' + fullscreenTitle + '" tabindex="0"></button>';
1222                 t.addControlElement(fullscreenBtn, 'fullscreen');
1223
1224                 fullscreenBtn.addEventListener('click', function () {
1225                     var isFullScreen = Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || player.isFullScreen;
1226
1227                     if (isFullScreen) {
1228                         player.exitFullScreen();
1229                     } else {
1230                         player.enterFullScreen();
1231                     }
1232                 });
1233
1234                 player.fullscreenBtn = fullscreenBtn;
1235
1236                 t.options.keyActions.push({
1237                     keys: [70],
1238                     action: function action(player, media, key, event) {
1239                         if (!event.ctrlKey) {
1240                             if (typeof player.enterFullScreen !== 'undefined') {
1241                                 if (player.isFullScreen) {
1242                                     player.exitFullScreen();
1243                                 } else {
1244                                     player.enterFullScreen();
1245                                 }
1246                             }
1247                         }
1248                     }
1249                 });
1250
1251                 t.exitFullscreenCallback = function (e) {
1252                     var key = e.which || e.keyCode || 0;
1253                     if (t.options.enableKeyboard && key === 27 && (Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || t.isFullScreen)) {
1254                         player.exitFullScreen();
1255                     }
1256                 };
1257
1258                 t.globalBind('keydown', t.exitFullscreenCallback);
1259
1260                 t.normalHeight = 0;
1261                 t.normalWidth = 0;
1262
1263                 if (Features.HAS_TRUE_NATIVE_FULLSCREEN) {
1264                     var fullscreenChanged = function fullscreenChanged() {
1265                         if (player.isFullScreen) {
1266                             if (Features.isFullScreen()) {
1267                                 player.isNativeFullScreen = true;
1268
1269                                 player.setControlsSize();
1270                             } else {
1271                                 player.isNativeFullScreen = false;
1272
1273                                 player.exitFullScreen();
1274                             }
1275                         }
1276                     };
1277
1278                     player.globalBind(Features.FULLSCREEN_EVENT_NAME, fullscreenChanged);
1279                 }
1280             },
1281             cleanfullscreen: function cleanfullscreen(player) {
1282                 player.exitFullScreen();
1283                 player.globalUnbind('keydown', player.exitFullscreenCallback);
1284             },
1285             detectFullscreenMode: function detectFullscreenMode() {
1286                 var t = this,
1287                     isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
1288
1289                 var mode = '';
1290
1291                 if (Features.HAS_TRUE_NATIVE_FULLSCREEN && isNative) {
1292                     mode = 'native-native';
1293                 } else if (Features.HAS_TRUE_NATIVE_FULLSCREEN && !isNative) {
1294                     mode = 'plugin-native';
1295                 } else if (t.usePluginFullScreen && Features.SUPPORT_POINTER_EVENTS) {
1296                     mode = 'plugin-click';
1297                 }
1298
1299                 t.fullscreenMode = mode;
1300                 return mode;
1301             },
1302             enterFullScreen: function enterFullScreen() {
1303                 var t = this,
1304                     isNative = t.media.rendererName !== null && /(html5|native)/i.test(t.media.rendererName),
1305                     containerStyles = getComputedStyle(t.getElement(t.container));
1306
1307                 if (!t.isVideo) {
1308                     return;
1309                 }
1310
1311                 if (t.options.useFakeFullscreen === false && Features.IS_IOS && Features.HAS_IOS_FULLSCREEN && typeof t.media.originalNode.webkitEnterFullscreen === 'function' && t.media.originalNode.canPlayType((0, _media.getTypeFromFile)(t.media.getSrc()))) {
1312                     t.media.originalNode.webkitEnterFullscreen();
1313                     return;
1314                 }
1315
1316                 (0, _dom.addClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
1317                 (0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'container-fullscreen');
1318
1319                 t.normalHeight = parseFloat(containerStyles.height);
1320                 t.normalWidth = parseFloat(containerStyles.width);
1321
1322                 if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') {
1323                     Features.requestFullScreen(t.getElement(t.container));
1324
1325                     if (t.isInIframe) {
1326                         setTimeout(function checkFullscreen() {
1327
1328                             if (t.isNativeFullScreen) {
1329                                 var percentErrorMargin = 0.002,
1330                                     windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth,
1331                                     screenWidth = screen.width,
1332                                     absDiff = Math.abs(screenWidth - windowWidth),
1333                                     marginError = screenWidth * percentErrorMargin;
1334
1335                                 if (absDiff > marginError) {
1336                                     t.exitFullScreen();
1337                                 } else {
1338                                     setTimeout(checkFullscreen, 500);
1339                                 }
1340                             }
1341                         }, 1000);
1342                     }
1343                 }
1344
1345                 t.getElement(t.container).style.width = '100%';
1346                 t.getElement(t.container).style.height = '100%';
1347
1348                 t.containerSizeTimeout = setTimeout(function () {
1349                     t.getElement(t.container).style.width = '100%';
1350                     t.getElement(t.container).style.height = '100%';
1351                     t.setControlsSize();
1352                 }, 500);
1353
1354                 if (isNative) {
1355                     t.node.style.width = '100%';
1356                     t.node.style.height = '100%';
1357                 } else {
1358                     var elements = t.getElement(t.container).querySelectorAll('embed, object, video'),
1359                         _total = elements.length;
1360                     for (var i = 0; i < _total; i++) {
1361                         elements[i].style.width = '100%';
1362                         elements[i].style.height = '100%';
1363                     }
1364                 }
1365
1366                 if (t.options.setDimensions && typeof t.media.setSize === 'function') {
1367                     t.media.setSize(screen.width, screen.height);
1368                 }
1369
1370                 var layers = t.getElement(t.layers).children,
1371                     total = layers.length;
1372                 for (var _i = 0; _i < total; _i++) {
1373                     layers[_i].style.width = '100%';
1374                     layers[_i].style.height = '100%';
1375                 }
1376
1377                 if (t.fullscreenBtn) {
1378                     (0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
1379                     (0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
1380                 }
1381
1382                 t.setControlsSize();
1383                 t.isFullScreen = true;
1384
1385                 var zoomFactor = Math.min(screen.width / t.width, screen.height / t.height),
1386                     captionText = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-text');
1387                 if (captionText) {
1388                     captionText.style.fontSize = zoomFactor * 100 + '%';
1389                     captionText.style.lineHeight = 'normal';
1390                     t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = (screen.height - t.normalHeight) / 2 - t.getElement(t.controls).offsetHeight / 2 + zoomFactor + 15 + 'px';
1391                 }
1392                 var event = (0, _general.createEvent)('enteredfullscreen', t.getElement(t.container));
1393                 t.getElement(t.container).dispatchEvent(event);
1394             },
1395             exitFullScreen: function exitFullScreen() {
1396                 var t = this,
vendor: 40,359 bytes, lines 1397-2205
1397                     isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
1398
1399                 if (!t.isVideo) {
1400                     return;
1401                 }
1402
1403                 clearTimeout(t.containerSizeTimeout);
1404
1405                 if (Features.HAS_TRUE_NATIVE_FULLSCREEN && (Features.IS_FULLSCREEN || t.isFullScreen)) {
1406                     Features.cancelFullScreen();
1407                 }
1408
1409                 (0, _dom.removeClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
1410                 (0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'container-fullscreen');
1411
1412                 if (t.options.setDimensions) {
1413                     t.getElement(t.container).style.width = t.normalWidth + 'px';
1414                     t.getElement(t.container).style.height = t.normalHeight + 'px';
1415
1416                     if (isNative) {
1417                         t.node.style.width = t.normalWidth + 'px';
1418                         t.node.style.height = t.normalHeight + 'px';
1419                     } else {
1420                         var elements = t.getElement(t.container).querySelectorAll('embed, object, video'),
1421                             _total2 = elements.length;
1422                         for (var i = 0; i < _total2; i++) {
1423                             elements[i].style.width = t.normalWidth + 'px';
1424                             elements[i].style.height = t.normalHeight + 'px';
1425                         }
1426                     }
1427
1428                     if (typeof t.media.setSize === 'function') {
1429                         t.media.setSize(t.normalWidth, t.normalHeight);
1430                     }
1431
1432                     var layers = t.getElement(t.layers).children,
1433                         total = layers.length;
1434                     for (var _i2 = 0; _i2 < total; _i2++) {
1435                         layers[_i2].style.width = t.normalWidth + 'px';
1436                         layers[_i2].style.height = t.normalHeight + 'px';
1437                     }
1438                 }
1439
1440                 if (t.fullscreenBtn) {
1441                     (0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
1442                     (0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
1443                 }
1444
1445                 t.setControlsSize();
1446                 t.isFullScreen = false;
1447
1448                 var captionText = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-text');
1449                 if (captionText) {
1450                     captionText.style.fontSize = '';
1451                     captionText.style.lineHeight = '';
1452                     t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = '';
1453                 }
1454                 var event = (0, _general.createEvent)('exitedfullscreen', t.getElement(t.container));
1455                 t.getElement(t.container).dispatchEvent(event);
1456             }
1457         });
1458
1459     }, { "16": 16, "2": 2, "25": 25, "26": 26, "27": 27, "28": 28, "3": 3, "5": 5 }], 10: [function (_dereq_, module, exports) {
1460         'use strict';
1461
1462         var _document = _dereq_(2);
1463
1464         var _document2 = _interopRequireDefault(_document);
1465
1466         var _player = _dereq_(16);
1467
1468         var _player2 = _interopRequireDefault(_player);
1469
1470         var _i18n = _dereq_(5);
1471
1472         var _i18n2 = _interopRequireDefault(_i18n);
1473
1474         var _general = _dereq_(27);
1475
1476         var _dom = _dereq_(26);
1477
1478         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1479
1480         Object.assign(_player.config, {
1481             playText: null,
1482
1483             pauseText: null
1484         });
1485
1486         Object.assign(_player2.default.prototype, {
1487             buildplaypause: function buildplaypause(player, controls, layers, media) {
1488                 var t = this,
1489                     op = t.options,
1490                     playTitle = (0, _general.isString)(op.playText) ? op.playText : _i18n2.default.t('mejs.play'),
1491                     pauseTitle = (0, _general.isString)(op.pauseText) ? op.pauseText : _i18n2.default.t('mejs.pause'),
1492                     play = _document2.default.createElement('div');
1493
1494                 play.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'playpause-button ' + t.options.classPrefix + 'play';
1495                 play.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + playTitle + '" aria-label="' + pauseTitle + '" tabindex="0"></button>';
1496                 play.addEventListener('click', function () {
1497                     if (t.paused) {
1498                         t.play();
1499                     } else {
1500                         t.pause();
1501                     }
1502                 });
1503
1504                 var playBtn = play.querySelector('button');
1505                 t.addControlElement(play, 'playpause');
1506
1507                 function togglePlayPause(which) {
1508                     if ('play' === which) {
1509                         (0, _dom.removeClass)(play, t.options.classPrefix + 'play');
1510                         (0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
1511                         (0, _dom.addClass)(play, t.options.classPrefix + 'pause');
1512                         playBtn.setAttribute('title', pauseTitle);
1513                         playBtn.setAttribute('aria-label', pauseTitle);
1514                     } else {
1515
1516                         (0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
1517                         (0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
1518                         (0, _dom.addClass)(play, t.options.classPrefix + 'play');
1519                         playBtn.setAttribute('title', playTitle);
1520                         playBtn.setAttribute('aria-label', playTitle);
1521                     }
1522                 }
1523
1524                 togglePlayPause('pse');
1525
1526                 media.addEventListener('loadedmetadata', function () {
1527                     if (media.rendererName.indexOf('flash') === -1) {
1528                         togglePlayPause('pse');
1529                     }
1530                 });
1531                 media.addEventListener('play', function () {
1532                     togglePlayPause('play');
1533                 });
1534                 media.addEventListener('playing', function () {
1535                     togglePlayPause('play');
1536                 });
1537                 media.addEventListener('pause', function () {
1538                     togglePlayPause('pse');
1539                 });
1540                 media.addEventListener('ended', function () {
1541                     if (!player.options.loop) {
1542                         (0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
1543                         (0, _dom.removeClass)(play, t.options.classPrefix + 'play');
1544                         (0, _dom.addClass)(play, t.options.classPrefix + 'replay');
1545                         playBtn.setAttribute('title', playTitle);
1546                         playBtn.setAttribute('aria-label', playTitle);
1547                     }
1548                 });
1549             }
1550         });
1551
1552     }, { "16": 16, "2": 2, "26": 26, "27": 27, "5": 5 }], 11: [function (_dereq_, module, exports) {
1553         'use strict';
1554
1555         var _document = _dereq_(2);
1556
1557         var _document2 = _interopRequireDefault(_document);
1558
1559         var _player = _dereq_(16);
1560
1561         var _player2 = _interopRequireDefault(_player);
1562
1563         var _i18n = _dereq_(5);
1564
1565         var _i18n2 = _interopRequireDefault(_i18n);
1566
1567         var _constants = _dereq_(25);
1568
1569         var _time = _dereq_(30);
1570
1571         var _dom = _dereq_(26);
1572
1573         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1574
1575         Object.assign(_player.config, {
1576             enableProgressTooltip: true,
1577
1578             useSmoothHover: true,
1579
1580             forceLive: false
1581         });
1582
1583         Object.assign(_player2.default.prototype, {
1584             buildprogress: function buildprogress(player, controls, layers, media) {
1585
1586                 var lastKeyPressTime = 0,
1587                     mouseIsDown = false,
1588                     startedPaused = false;
1589
1590                 var t = this,
1591                     autoRewindInitial = player.options.autoRewind,
1592                     tooltip = player.options.enableProgressTooltip ? '<span class="' + t.options.classPrefix + 'time-float">' + ('<span class="' + t.options.classPrefix + 'time-float-current">00:00</span>') + ('<span class="' + t.options.classPrefix + 'time-float-corner"></span>') + '</span>' : '',
1593                     rail = _document2.default.createElement('div');
1594
1595                 rail.className = t.options.classPrefix + 'time-rail';
1596                 rail.innerHTML = '<span class="' + t.options.classPrefix + 'time-total ' + t.options.classPrefix + 'time-slider">' + ('<span class="' + t.options.classPrefix + 'time-buffering"></span>') + ('<span class="' + t.options.classPrefix + 'time-loaded"></span>') + ('<span class="' + t.options.classPrefix + 'time-current"></span>') + ('<span class="' + t.options.classPrefix + 'time-hovered no-hover"></span>') + ('<span class="' + t.options.classPrefix + 'time-handle"><span class="' + t.options.classPrefix + 'time-handle-content"></span></span>') + ('' + tooltip) + '</span>';
1597
1598                 t.addControlElement(rail, 'progress');
1599
1600                 t.options.keyActions.push({
1601                     keys: [37, 227],
1602                     action: function action(player) {
1603                         if (!isNaN(player.duration) && player.duration > 0) {
1604                             if (player.isVideo) {
1605                                 player.showControls();
1606                                 player.startControlsTimer();
1607                             }
1608
1609                             var timeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'time-total');
1610                             if (timeSlider) {
1611                                 timeSlider.focus();
1612                             }
1613
1614                             var newTime = Math.max(player.currentTime - player.options.defaultSeekBackwardInterval(player), 0);
1615
1616                             if (!player.paused) {
1617                                 player.pause();
1618                             }
1619
1620                             setTimeout(function () {
1621                                 player.setCurrentTime(newTime);
1622                             }, 0);
1623
1624                             setTimeout(function () {
1625                                 player.play();
1626                             }, 0);
1627                         }
1628                     }
1629                 }, {
1630                     keys: [39, 228],
1631                     action: function action(player) {
1632
1633                         if (!isNaN(player.duration) && player.duration > 0) {
1634                             if (player.isVideo) {
1635                                 player.showControls();
1636                                 player.startControlsTimer();
1637                             }
1638
1639                             var timeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'time-total');
1640                             if (timeSlider) {
1641                                 timeSlider.focus();
1642                             }
1643
1644                             var newTime = Math.min(player.currentTime + player.options.defaultSeekForwardInterval(player), player.duration);
1645
1646                             if (!player.paused) {
1647                                 player.pause();
1648                             }
1649
1650                             setTimeout(function () {
1651                                 player.setCurrentTime(newTime);
1652                             }, 0);
1653
1654                             setTimeout(function () {
1655                                 player.play();
1656                             }, 0);
1657                         }
1658                     }
1659                 });
1660
1661                 t.rail = controls.querySelector('.' + t.options.classPrefix + 'time-rail');
1662                 t.total = controls.querySelector('.' + t.options.classPrefix + 'time-total');
1663                 t.loaded = controls.querySelector('.' + t.options.classPrefix + 'time-loaded');
1664                 t.current = controls.querySelector('.' + t.options.classPrefix + 'time-current');
1665                 t.handle = controls.querySelector('.' + t.options.classPrefix + 'time-handle');
1666                 t.timefloat = controls.querySelector('.' + t.options.classPrefix + 'time-float');
1667                 t.timefloatcurrent = controls.querySelector('.' + t.options.classPrefix + 'time-float-current');
1668                 t.slider = controls.querySelector('.' + t.options.classPrefix + 'time-slider');
1669                 t.hovered = controls.querySelector('.' + t.options.classPrefix + 'time-hovered');
1670                 t.buffer = controls.querySelector('.' + t.options.classPrefix + 'time-buffering');
1671                 t.newTime = 0;
1672                 t.forcedHandlePause = false;
1673                 t.setTransformStyle = function (element, value) {
1674                     element.style.transform = value;
1675                     element.style.webkitTransform = value;
1676                     element.style.MozTransform = value;
1677                     element.style.msTransform = value;
1678                     element.style.OTransform = value;
1679                 };
1680
1681                 t.buffer.style.display = 'none';
1682
1683                 var handleMouseMove = function handleMouseMove(e) {
1684                     var totalStyles = getComputedStyle(t.total),
1685                         offsetStyles = (0, _dom.offset)(t.total),
1686                         width = t.total.offsetWidth,
1687                         transform = function () {
1688                             if (totalStyles.webkitTransform !== undefined) {
1689                                 return 'webkitTransform';
1690                             } else if (totalStyles.mozTransform !== undefined) {
1691                                 return 'mozTransform ';
1692                             } else if (totalStyles.oTransform !== undefined) {
1693                                 return 'oTransform';
1694                             } else if (totalStyles.msTransform !== undefined) {
1695                                 return 'msTransform';
1696                             } else {
1697                                 return 'transform';
1698                             }
1699                         }(),
1700                         cssMatrix = function () {
1701                             if ('WebKitCSSMatrix' in window) {
1702                                 return 'WebKitCSSMatrix';
1703                             } else if ('MSCSSMatrix' in window) {
1704                                 return 'MSCSSMatrix';
1705                             } else if ('CSSMatrix' in window) {
1706                                 return 'CSSMatrix';
1707                             }
1708                         }();
1709
1710                     var percentage = 0,
1711                         leftPos = 0,
1712                         pos = 0,
1713                         x = void 0;
1714
1715                     if (e.originalEvent && e.originalEvent.changedTouches) {
1716                         x = e.originalEvent.changedTouches[0].pageX;
1717                     } else if (e.changedTouches) {
1718                         x = e.changedTouches[0].pageX;
1719                     } else {
1720                         x = e.pageX;
1721                     }
1722
1723                     if (t.getDuration()) {
1724                         if (x < offsetStyles.left) {
1725                             x = offsetStyles.left;
1726                         } else if (x > width + offsetStyles.left) {
1727                             x = width + offsetStyles.left;
1728                         }
1729
1730                         pos = x - offsetStyles.left;
1731                         percentage = pos / width;
1732                         t.newTime = percentage * t.getDuration();
1733
1734                         if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) {
1735                             t.setCurrentRailHandle(t.newTime);
1736                             t.updateCurrent(t.newTime);
1737                         }
1738
1739                         if (!_constants.IS_IOS && !_constants.IS_ANDROID) {
1740                             if (pos < 0) {
1741                                 pos = 0;
1742                             }
1743                             if (t.options.useSmoothHover && cssMatrix !== null && typeof window[cssMatrix] !== 'undefined') {
1744                                 var matrix = new window[cssMatrix](getComputedStyle(t.handle)[transform]),
1745                                     handleLocation = matrix.m41,
1746                                     hoverScaleX = pos / parseFloat(getComputedStyle(t.total).width) - handleLocation / parseFloat(getComputedStyle(t.total).width);
1747
1748                                 t.hovered.style.left = handleLocation + 'px';
1749                                 t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')');
1750                                 t.hovered.setAttribute('pos', pos);
1751
1752                                 if (hoverScaleX >= 0) {
1753                                     (0, _dom.removeClass)(t.hovered, 'negative');
1754                                 } else {
1755                                     (0, _dom.addClass)(t.hovered, 'negative');
1756                                 }
1757                             }
1758
1759                             if (t.timefloat) {
1760                                 var half = t.timefloat.offsetWidth / 2,
1761                                     offsetContainer = mejs.Utils.offset(t.getElement(t.container)),
1762                                     tooltipStyles = getComputedStyle(t.timefloat);
1763
1764                                 if (x - offsetContainer.left < t.timefloat.offsetWidth) {
1765                                     leftPos = half;
1766                                 } else if (x - offsetContainer.left >= t.getElement(t.container).offsetWidth - half) {
1767                                     leftPos = t.total.offsetWidth - half;
1768                                 } else {
1769                                     leftPos = pos;
1770                                 }
1771
1772                                 if ((0, _dom.hasClass)(t.getElement(t.container), t.options.classPrefix + 'long-video')) {
1773                                     leftPos += parseFloat(tooltipStyles.marginLeft) / 2 + t.timefloat.offsetWidth / 2;
1774                                 }
1775
1776                                 t.timefloat.style.left = leftPos + 'px';
1777                                 t.timefloatcurrent.innerHTML = (0, _time.secondsToTimeCode)(t.newTime, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat);
1778                                 t.timefloat.style.display = 'block';
1779                             }
1780                         }
1781                     } else if (!_constants.IS_IOS && !_constants.IS_ANDROID && t.timefloat) {
1782                         leftPos = t.timefloat.offsetWidth + width >= t.getElement(t.container).offsetWidth ? t.timefloat.offsetWidth / 2 : 0;
1783                         t.timefloat.style.left = leftPos + 'px';
1784                         t.timefloat.style.left = leftPos + 'px';
1785                         t.timefloat.style.display = 'block';
1786                     }
1787                 },
1788                     updateSlider = function updateSlider() {
1789                         var seconds = t.getCurrentTime(),
1790                             timeSliderText = _i18n2.default.t('mejs.time-slider'),
1791                             time = (0, _time.secondsToTimeCode)(seconds, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat),
1792                             duration = t.getDuration();
1793
1794                         t.slider.setAttribute('role', 'slider');
1795                         t.slider.tabIndex = 0;
1796
1797                         if (media.paused) {
1798                             t.slider.setAttribute('aria-label', timeSliderText);
1799                             t.slider.setAttribute('aria-valuemin', 0);
1800                             t.slider.setAttribute('aria-valuemax', isNaN(duration) ? 0 : duration);
1801                             t.slider.setAttribute('aria-valuenow', seconds);
1802                             t.slider.setAttribute('aria-valuetext', time);
1803                         } else {
1804                             t.slider.removeAttribute('aria-label');
1805                             t.slider.removeAttribute('aria-valuemin');
1806                             t.slider.removeAttribute('aria-valuemax');
1807                             t.slider.removeAttribute('aria-valuenow');
1808                             t.slider.removeAttribute('aria-valuetext');
1809                         }
1810                     },
1811                     restartPlayer = function restartPlayer() {
1812                         if (new Date() - lastKeyPressTime >= 1000) {
1813                             t.play();
1814                         }
1815                     },
1816                     handleMouseup = function handleMouseup() {
1817                         if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) {
1818                             t.setCurrentTime(t.newTime);
1819                             t.setCurrentRailHandle(t.newTime);
1820                             t.updateCurrent(t.newTime);
1821                         }
1822                         if (t.forcedHandlePause) {
1823                             t.slider.focus();
1824                             t.play();
1825                         }
1826                         t.forcedHandlePause = false;
1827                     };
1828
1829                 t.slider.addEventListener('focus', function () {
1830                     player.options.autoRewind = false;
1831                 });
1832                 t.slider.addEventListener('blur', function () {
1833                     player.options.autoRewind = autoRewindInitial;
1834                 });
1835                 t.slider.addEventListener('keydown', function (e) {
1836                     if (new Date() - lastKeyPressTime >= 1000) {
1837                         startedPaused = t.paused;
1838                     }
1839
1840                     if (t.options.enableKeyboard && t.options.keyActions.length) {
1841
1842                         var keyCode = e.which || e.keyCode || 0,
1843                             duration = t.getDuration(),
1844                             seekForward = player.options.defaultSeekForwardInterval(media),
1845                             seekBackward = player.options.defaultSeekBackwardInterval(media);
1846
1847                         var seekTime = t.getCurrentTime();
1848                         var volume = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-slider');
1849
1850                         if (keyCode === 38 || keyCode === 40) {
1851                             if (volume) {
1852                                 volume.style.display = 'block';
1853                             }
1854                             if (t.isVideo) {
1855                                 t.showControls();
1856                                 t.startControlsTimer();
1857                             }
1858
1859                             var newVolume = keyCode === 38 ? Math.min(t.volume + 0.1, 1) : Math.max(t.volume - 0.1, 0),
1860                                 mutePlayer = newVolume <= 0;
1861                             t.setVolume(newVolume);
1862                             t.setMuted(mutePlayer);
1863                             return;
1864                         } else {
1865                             if (volume) {
1866                                 volume.style.display = 'none';
1867                             }
1868                         }
1869
1870                         switch (keyCode) {
1871                             case 37:
1872                                 if (t.getDuration() !== Infinity) {
1873                                     seekTime -= seekBackward;
1874                                 }
1875                                 break;
1876                             case 39:
1877                                 if (t.getDuration() !== Infinity) {
1878                                     seekTime += seekForward;
1879                                 }
1880                                 break;
1881                             case 36:
1882                                 seekTime = 0;
1883                                 break;
1884                             case 35:
1885                                 seekTime = duration;
1886                                 break;
1887                             case 13:
1888                             case 32:
1889                                 if (_constants.IS_FIREFOX) {
1890                                     if (t.paused) {
1891                                         t.play();
1892                                     } else {
1893                                         t.pause();
1894                                     }
1895                                 }
1896                                 return;
1897                             default:
1898                                 return;
1899                         }
1900
1901                         seekTime = seekTime < 0 || isNaN(seekTime) ? 0 : seekTime >= duration ? duration : Math.floor(seekTime);
1902                         lastKeyPressTime = new Date();
1903                         if (!startedPaused) {
1904                             player.pause();
1905                         }
1906
1907                         setTimeout(function () {
1908                             t.setCurrentTime(seekTime);
1909                         }, 0);
1910
1911                         if (seekTime < t.getDuration() && !startedPaused) {
1912                             setTimeout(restartPlayer, 1100);
1913                         }
1914
1915                         player.showControls();
1916
1917                         e.preventDefault();
1918                         e.stopPropagation();
1919                     }
1920                 });
1921
1922                 var events = ['mousedown', 'touchstart'];
1923
1924                 t.slider.addEventListener('dragstart', function () {
1925                     return false;
1926                 });
1927
1928                 for (var i = 0, total = events.length; i < total; i++) {
1929                     t.slider.addEventListener(events[i], function (e) {
1930                         t.forcedHandlePause = false;
1931                         if (t.getDuration() !== Infinity) {
1932                             if (e.which === 1 || e.which === 0) {
1933                                 if (!t.paused) {
1934                                     t.pause();
1935                                     t.forcedHandlePause = true;
1936                                 }
1937
1938                                 mouseIsDown = true;
1939                                 handleMouseMove(e);
1940                                 var endEvents = ['mouseup', 'touchend'];
1941
1942                                 for (var j = 0, totalEvents = endEvents.length; j < totalEvents; j++) {
1943                                     t.getElement(t.container).addEventListener(endEvents[j], function (event) {
1944                                         var target = event.target;
1945                                         if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
1946                                             handleMouseMove(event);
1947                                         }
1948                                     });
1949                                 }
1950                                 t.globalBind('mouseup.dur touchend.dur', function () {
1951                                     handleMouseup();
1952                                     mouseIsDown = false;
1953                                     if (t.timefloat) {
1954                                         t.timefloat.style.display = 'none';
1955                                     }
1956                                 });
1957                             }
1958                         }
1959                     }, _constants.SUPPORT_PASSIVE_EVENT && events[i] === 'touchstart' ? { passive: true } : false);
1960                 }
1961                 t.slider.addEventListener('mouseenter', function (e) {
1962                     if (e.target === t.slider && t.getDuration() !== Infinity) {
1963                         t.getElement(t.container).addEventListener('mousemove', function (event) {
1964                             var target = event.target;
1965                             if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
1966                                 handleMouseMove(event);
1967                             }
1968                         });
1969                         if (t.timefloat && !_constants.IS_IOS && !_constants.IS_ANDROID) {
1970                             t.timefloat.style.display = 'block';
1971                         }
1972                         if (t.hovered && !_constants.IS_IOS && !_constants.IS_ANDROID && t.options.useSmoothHover) {
1973                             (0, _dom.removeClass)(t.hovered, 'no-hover');
1974                         }
1975                     }
1976                 });
1977                 t.slider.addEventListener('mouseleave', function () {
1978                     if (t.getDuration() !== Infinity) {
1979                         if (!mouseIsDown) {
1980                             if (t.timefloat) {
1981                                 t.timefloat.style.display = 'none';
1982                             }
1983                             if (t.hovered && t.options.useSmoothHover) {
1984                                 (0, _dom.addClass)(t.hovered, 'no-hover');
1985                             }
1986                         }
1987                     }
1988                 });
1989
1990                 t.broadcastCallback = function (e) {
1991                     var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast');
1992                     if (!t.options.forceLive && t.getDuration() !== Infinity) {
1993                         if (broadcast) {
1994                             t.slider.style.display = '';
1995                             broadcast.remove();
1996                         }
1997
1998                         player.setProgressRail(e);
1999                         if (!t.forcedHandlePause) {
2000                             player.setCurrentRail(e);
2001                         }
2002                         updateSlider();
2003                     } else if (!broadcast && t.options.forceLive) {
2004                         var label = _document2.default.createElement('span');
2005                         label.className = t.options.classPrefix + 'broadcast';
2006                         label.innerText = _i18n2.default.t('mejs.live-broadcast');
2007                         t.slider.style.display = 'none';
2008                         t.rail.appendChild(label);
2009                     }
2010                 };
2011
2012                 media.addEventListener('progress', t.broadcastCallback);
2013                 media.addEventListener('timeupdate', t.broadcastCallback);
2014                 media.addEventListener('play', function () {
2015                     t.buffer.style.display = 'none';
2016                 });
2017                 media.addEventListener('playing', function () {
2018                     t.buffer.style.display = 'none';
2019                 });
2020                 media.addEventListener('seeking', function () {
2021                     t.buffer.style.display = '';
2022                 });
2023                 media.addEventListener('seeked', function () {
2024                     t.buffer.style.display = 'none';
2025                 });
2026                 media.addEventListener('pause', function () {
2027                     t.buffer.style.display = 'none';
2028                 });
2029                 media.addEventListener('waiting', function () {
2030                     t.buffer.style.display = '';
2031                 });
2032                 media.addEventListener('loadeddata', function () {
2033                     t.buffer.style.display = '';
2034                 });
2035                 media.addEventListener('canplay', function () {
2036                     t.buffer.style.display = 'none';
2037                 });
2038                 media.addEventListener('error', function () {
2039                     t.buffer.style.display = 'none';
2040                 });
2041
2042                 t.getElement(t.container).addEventListener('controlsresize', function (e) {
2043                     if (t.getDuration() !== Infinity) {
2044                         player.setProgressRail(e);
2045                         if (!t.forcedHandlePause) {
2046                             player.setCurrentRail(e);
2047                         }
2048                     }
2049                 });
2050             },
2051             cleanprogress: function cleanprogress(player, controls, layers, media) {
2052                 media.removeEventListener('progress', player.broadcastCallback);
2053                 media.removeEventListener('timeupdate', player.broadcastCallback);
2054                 if (player.rail) {
2055                     player.rail.remove();
2056                 }
2057             },
2058             setProgressRail: function setProgressRail(e) {
2059                 var t = this,
2060                     target = e !== undefined ? e.detail.target || e.target : t.media;
2061
2062                 var percent = null;
2063
2064                 if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && t.getDuration()) {
2065                     percent = target.buffered.end(target.buffered.length - 1) / t.getDuration();
2066                 } else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) {
2067                     percent = target.bufferedBytes / target.bytesTotal;
2068                 } else if (e && e.lengthComputable && e.total !== 0) {
2069                     percent = e.loaded / e.total;
2070                 }
2071
2072                 if (percent !== null) {
2073                     percent = Math.min(1, Math.max(0, percent));
2074
2075                     if (t.loaded) {
2076                         t.setTransformStyle(t.loaded, 'scaleX(' + percent + ')');
2077                     }
2078                 }
2079             },
2080             setCurrentRailHandle: function setCurrentRailHandle(fakeTime) {
2081                 var t = this;
2082                 t.setCurrentRailMain(t, fakeTime);
2083             },
2084             setCurrentRail: function setCurrentRail() {
2085                 var t = this;
2086                 t.setCurrentRailMain(t);
2087             },
2088             setCurrentRailMain: function setCurrentRailMain(t, fakeTime) {
2089                 if (t.getCurrentTime() !== undefined && t.getDuration()) {
2090                     var nTime = typeof fakeTime === 'undefined' ? t.getCurrentTime() : fakeTime;
2091
2092                     if (t.total && t.handle) {
2093                         var tW = parseFloat(getComputedStyle(t.total).width);
2094
2095                         var newWidth = Math.round(tW * nTime / t.getDuration()),
2096                             handlePos = newWidth - Math.round(t.handle.offsetWidth / 2);
2097
2098                         handlePos = handlePos < 0 ? 0 : handlePos;
2099                         t.setTransformStyle(t.current, 'scaleX(' + newWidth / tW + ')');
2100                         t.setTransformStyle(t.handle, 'translateX(' + handlePos + 'px)');
2101
2102                         if (t.options.useSmoothHover && !(0, _dom.hasClass)(t.hovered, 'no-hover')) {
2103                             var pos = parseInt(t.hovered.getAttribute('pos'), 10);
2104                             pos = isNaN(pos) ? 0 : pos;
2105
2106                             var hoverScaleX = pos / tW - handlePos / tW;
2107
2108                             t.hovered.style.left = handlePos + 'px';
2109                             t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')');
2110
2111                             if (hoverScaleX >= 0) {
2112                                 (0, _dom.removeClass)(t.hovered, 'negative');
2113                             } else {
2114                                 (0, _dom.addClass)(t.hovered, 'negative');
2115                             }
2116                         }
2117                     }
2118                 }
2119             }
2120         });
2121
2122     }, { "16": 16, "2": 2, "25": 25, "26": 26, "30": 30, "5": 5 }], 12: [function (_dereq_, module, exports) {
2123         'use strict';
2124
2125         var _document = _dereq_(2);
2126
2127         var _document2 = _interopRequireDefault(_document);
2128
2129         var _player = _dereq_(16);
2130
2131         var _player2 = _interopRequireDefault(_player);
2132
2133         var _time = _dereq_(30);
2134
2135         var _dom = _dereq_(26);
2136
2137         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2138
2139         Object.assign(_player.config, {
2140             duration: 0,
2141
2142             timeAndDurationSeparator: '<span> | </span>'
2143         });
2144
2145         Object.assign(_player2.default.prototype, {
2146             buildcurrent: function buildcurrent(player, controls, layers, media) {
2147                 var t = this,
2148                     time = _document2.default.createElement('div');
2149
2150                 time.className = t.options.classPrefix + 'time';
2151                 time.setAttribute('role', 'timer');
2152                 time.setAttribute('aria-live', 'off');
2153                 time.innerHTML = '<span class="' + t.options.classPrefix + 'currenttime">' + (0, _time.secondsToTimeCode)(0, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat) + '</span>';
2154
2155                 t.addControlElement(time, 'current');
2156                 player.updateCurrent();
2157                 t.updateTimeCallback = function () {
2158                     if (t.controlsAreVisible) {
2159                         player.updateCurrent();
2160                     }
2161                 };
2162                 media.addEventListener('timeupdate', t.updateTimeCallback);
2163             },
2164             cleancurrent: function cleancurrent(player, controls, layers, media) {
2165                 media.removeEventListener('timeupdate', player.updateTimeCallback);
2166             },
2167             buildduration: function buildduration(player, controls, layers, media) {
2168                 var t = this,
2169                     currTime = controls.lastChild.querySelector('.' + t.options.classPrefix + 'currenttime');
2170
2171                 if (currTime) {
2172                     controls.querySelector('.' + t.options.classPrefix + 'time').innerHTML += t.options.timeAndDurationSeparator + '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat) + '</span>');
2173                 } else {
2174                     if (controls.querySelector('.' + t.options.classPrefix + 'currenttime')) {
2175                         (0, _dom.addClass)(controls.querySelector('.' + t.options.classPrefix + 'currenttime').parentNode, t.options.classPrefix + 'currenttime-container');
2176                     }
2177
2178                     var duration = _document2.default.createElement('div');
2179                     duration.className = t.options.classPrefix + 'time ' + t.options.classPrefix + 'duration-container';
2180                     duration.innerHTML = '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat) + '</span>');
2181
2182                     t.addControlElement(duration, 'duration');
2183                 }
2184
2185                 t.updateDurationCallback = function () {
2186                     if (t.controlsAreVisible) {
2187                         player.updateDuration();
2188                     }
2189                 };
2190
2191                 media.addEventListener('timeupdate', t.updateDurationCallback);
2192             },
2193             cleanduration: function cleanduration(player, controls, layers, media) {
2194                 media.removeEventListener('timeupdate', player.updateDurationCallback);
2195             },
2196             updateCurrent: function updateCurrent() {
2197                 var t = this;
2198
2199                 var currentTime = t.getCurrentTime();
2200
2201                 if (isNaN(currentTime)) {
2202                     currentTime = 0;
2203                 }
2204
2205                 var timecode = (0, _time.secondsToTimeCode)(currentTime, t.options.alwaysShowHours, t.options.showTimeco
2205deFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat);
2206
2207                 if (timecode.length > 5) {
2208                     (0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2209                 } else {
2210                     (0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2211                 }
2212
2213                 if (t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'currenttime')) {
2214                     t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'currenttime').innerText = timecode;
2215                 }
2216             },
2217             updateDuration: function updateDuration() {
2218                 var t = this;
2219
2220                 var duration = t.getDuration();
2221
2222                 if (t.media !== undefined && (isNaN(duration) || duration === Infinity || duration < 0)) {
2223                     t.media.duration = t.options.duration = duration = 0;
2224                 }
2225
2226                 if (t.options.duration > 0) {
2227                     duration = t.options.duration;
2228                 }
2229
2230                 var timecode = (0, _time.secondsToTimeCode)(duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat);
2231
2232                 if (timecode.length > 5) {
2233                     (0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2234                 } else {
2235                     (0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2236                 }
2237
2238                 if (t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'duration') && duration > 0) {
2239                     t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'duration').innerHTML = timecode;
2240                 }
2241             }
2242         });
2243
2244     }, { "16": 16, "2": 2, "26": 26, "30": 30 }], 13: [function (_dereq_, module, exports) {
2245         'use strict';
2246
2247         var _document = _dereq_(2);
2248
2249         var _document2 = _interopRequireDefault(_document);
2250
2251         var _mejs = _dereq_(7);
2252
2253         var _mejs2 = _interopRequireDefault(_mejs);
2254
2255         var _i18n = _dereq_(5);
2256
2257         var _i18n2 = _interopRequireDefault(_i18n);
2258
2259         var _player = _dereq_(16);
2260
2261         var _player2 = _interopRequireDefault(_player);
2262
2263         var _time = _dereq_(30);
2264
2265         var _general = _dereq_(27);
2266
2267         var _dom = _dereq_(26);
2268
2269         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2270
2271         Object.assign(_player.config, {
2272             startLanguage: '',
2273
2274             tracksText: null,
2275
2276             chaptersText: null,
2277
2278             tracksAriaLive: false,
2279
2280             hideCaptionsButtonWhenEmpty: true,
2281
2282             toggleCaptionsButtonWhenOnlyOne: false,
2283
2284             slidesSelector: ''
2285         });
2286
2287         Object.assign(_player2.default.prototype, {
2288             hasChapters: false,
2289
2290             buildtracks: function buildtracks(player, controls, layers, media) {
2291
2292                 this.findTracks();
2293
2294                 if (!player.tracks.length && (!player.trackFiles || !player.trackFiles.length === 0)) {
2295                     return;
2296                 }
2297
2298                 var t = this,
2299                     attr = t.options.tracksAriaLive ? ' role="log" aria-live="assertive" aria-atomic="false"' : '',
2300                     tracksTitle = (0, _general.isString)(t.options.tracksText) ? t.options.tracksText : _i18n2.default.t('mejs.captions-subtitles'),
2301                     chaptersTitle = (0, _general.isString)(t.options.chaptersText) ? t.options.chaptersText : _i18n2.default.t('mejs.captions-chapters'),
2302                     total = player.trackFiles === null ? player.tracks.length : player.trackFiles.length;
2303
2304                 if (t.domNode.textTracks) {
2305                     for (var i = t.domNode.textTracks.length - 1; i >= 0; i--) {
2306                         t.domNode.textTracks[i].mode = 'hidden';
2307                     }
2308                 }
2309
2310                 t.cleartracks(player);
2311
2312                 player.captions = _document2.default.createElement('div');
2313                 player.captions.className = t.options.classPrefix + 'captions-layer ' + t.options.classPrefix + 'layer';
2314                 player.captions.innerHTML = '<div class="' + t.options.classPrefix + 'captions-position ' + t.options.classPrefix + 'captions-position-hover"' + attr + '>' + ('<span class="' + t.options.classPrefix + 'captions-text"></span>') + '</div>';
2315                 player.captions.style.display = 'none';
2316                 layers.insertBefore(player.captions, layers.firstChild);
2317
2318                 player.captionsText = player.captions.querySelector('.' + t.options.classPrefix + 'captions-text');
2319
2320                 player.captionsButton = _document2.default.createElement('div');
2321                 player.captionsButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'captions-button';
2322                 player.captionsButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + tracksTitle + '" aria-label="' + tracksTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'captions-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'captions-selector-list">') + ('<li class="' + t.options.classPrefix + 'captions-selector-list-item">') + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + player.id + '_captions" id="' + player.id + '_captions_none" ') + 'value="none" checked disabled>' + ('<label class="' + t.options.classPrefix + 'captions-selector-label ') + (t.options.classPrefix + 'captions-selected" ') + ('for="' + player.id + '_captions_none">' + _i18n2.default.t('mejs.none') + '</label>') + '</li>' + '</ul>' + '</div>';
2323
2324                 t.addControlElement(player.captionsButton, 'tracks');
2325
2326                 player.captionsButton.querySelector('.' + t.options.classPrefix + 'captions-selector-input').disabled = false;
2327
2328                 player.chaptersButton = _document2.default.createElement('div');
2329                 player.chaptersButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'chapters-button';
2330                 player.chaptersButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + chaptersTitle + '" aria-label="' + chaptersTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'chapters-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'chapters-selector-list"></ul>') + '</div>';
2331
2332                 var subtitleCount = 0;
2333
2334                 for (var _i = 0; _i < total; _i++) {
2335                     var kind = player.tracks[_i].kind,
2336                         src = player.tracks[_i].src;
2337                     if (src.trim()) {
2338                         if (kind === 'subtitles' || kind === 'captions') {
2339                             subtitleCount++;
2340                         } else if (kind === 'chapters' && !controls.querySelector('.' + t.options.classPrefix + 'chapter-selector')) {
2341                             player.captionsButton.parentNode.insertBefore(player.chaptersButton, player.captionsButton);
2342                         }
2343                     }
2344                 }
2345
2346                 player.trackToLoad = -1;
2347                 player.selectedTrack = null;
2348                 player.isLoadingTrack = false;
2349
2350                 for (var _i2 = 0; _i2 < total; _i2++) {
2351                     var _kind = player.tracks[_i2].kind;
2352                     if (player.tracks[_i2].src.trim() && (_kind === 'subtitles' || _kind === 'captions')) {
2353                         player.addTrackButton(player.tracks[_i2].trackId, player.tracks[_i2].srclang, player.tracks[_i2].label);
2354                     }
2355                 }
2356
2357                 player.loadNextTrack();
2358
2359                 var inEvents = ['mouseenter', 'focusin'],
2360                     outEvents = ['mouseleave', 'focusout'];
2361
2362                 if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1) {
2363                     player.captionsButton.addEventListener('click', function (e) {
2364                         var trackId = 'none';
2365                         if (player.selectedTrack === null) {
2366                             trackId = player.tracks[0].trackId;
2367                         }
2368                         var keyboard = e.keyCode || e.which;
2369                         player.setTrack(trackId, typeof keyboard !== 'undefined');
2370                     });
2371                 } else {
2372                     var labels = player.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selector-label'),
2373                         captions = player.captionsButton.querySelectorAll('input[type=radio]');
2374
2375                     for (var _i3 = 0, _total = inEvents.length; _i3 < _total; _i3++) {
2376                         player.captionsButton.addEventListener(inEvents[_i3], function () {
2377                             (0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
2378                         });
2379                     }
2380
2381                     for (var _i4 = 0, _total2 = outEvents.length; _i4 < _total2; _i4++) {
2382                         player.captionsButton.addEventListener(outEvents[_i4], function () {
2383                             (0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
2384                         });
2385                     }
2386
2387                     for (var _i5 = 0, _total3 = captions.length; _i5 < _total3; _i5++) {
2388                         captions[_i5].addEventListener('click', function (e) {
2389                             var keyboard = e.keyCode || e.which;
2390                             player.setTrack(this.value, typeof keyboard !== 'undefined');
2391                         });
2392                     }
2393
2394                     for (var _i6 = 0, _total4 = labels.length; _i6 < _total4; _i6++) {
2395                         labels[_i6].addEventListener('click', function (e) {
2396                             var radio = (0, _dom.siblings)(this, function (el) {
2397                                 return el.tagName === 'INPUT';
2398                             })[0],
2399                                 event = (0, _general.createEvent)('click', radio);
2400                             radio.dispatchEvent(event);
2401                             e.preventDefault();
2402                         });
2403                     }
2404
2405                     player.captionsButton.addEventListener('keydown', function (e) {
2406                         e.stopPropagation();
2407                     });
2408                 }
2409
2410                 for (var _i7 = 0, _total5 = inEvents.length; _i7 < _total5; _i7++) {
2411                     player.chaptersButton.addEventListener(inEvents[_i7], function () {
2412                         if (this.querySelector('.' + t.options.classPrefix + 'chapters-selector-list').children.length) {
2413                             (0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
2414                         }
2415                     });
2416                 }
2417
2418                 for (var _i8 = 0, _total6 = outEvents.length; _i8 < _total6; _i8++) {
2419                     player.chaptersButton.addEventListener(outEvents[_i8], function () {
2420                         (0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
2421                     });
2422                 }
2423
2424                 player.chaptersButton.addEventListener('keydown', function (e) {
2425                     e.stopPropagation();
2426                 });
2427
2428                 if (!player.options.alwaysShowControls) {
2429                     player.getElement(player.container).addEventListener('controlsshown', function () {
2430                         (0, _dom.addClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2431                     });
2432
2433                     player.getElement(player.container).addEventListener('controlshidden', function () {
2434                         if (!media.paused) {
2435                             (0, _dom.removeClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2436                         }
2437                     });
2438                 } else {
2439                     (0, _dom.addClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2440                 }
2441
2442                 media.addEventListener('timeupdate', function () {
2443                     player.displayCaptions();
2444                 });
2445
2446                 if (player.options.slidesSelector !== '') {
2447                     player.slidesContainer = _document2.default.querySelectorAll(player.options.slidesSelector);
2448
2449                     media.addEventListener('timeupdate', function () {
2450                         player.displaySlides();
2451                     });
2452                 }
2453             },
2454             cleartracks: function cleartracks(player) {
2455                 if (player) {
2456                     if (player.captions) {
2457                         player.captions.remove();
2458                     }
2459                     if (player.chapters) {
2460                         player.chapters.remove();
2461                     }
2462                     if (player.captionsText) {
2463                         player.captionsText.remove();
2464                     }
2465                     if (player.captionsButton) {
2466                         player.captionsButton.remove();
2467                     }
2468                     if (player.chaptersButton) {
2469                         player.chaptersButton.remove();
2470                     }
2471                 }
2472             },
2473             rebuildtracks: function rebuildtracks() {
2474                 var t = this;
2475                 t.findTracks();
2476                 t.buildtracks(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
2477             },
2478             findTracks: function findTracks() {
2479                 var t = this,
2480                     tracktags = t.trackFiles === null ? t.node.querySelectorAll('track') : t.trackFiles,
2481                     total = tracktags.length;
2482
2483                 t.tracks = [];
2484                 for (var i = 0; i < total; i++) {
2485                     var track = tracktags[i],
2486                         srclang = track.getAttribute('srclang').toLowerCase() || '',
2487                         trackId = t.id + '_track_' + i + '_' + track.getAttribute('kind') + '_' + srclang;
2488                     t.tracks.push({
2489                         trackId: trackId,
2490                         srclang: srclang,
2491                         src: track.getAttribute('src'),
2492                         kind: track.getAttribute('kind'),
2493                         label: track.getAttribute('label') || '',
2494                         entries: [],
2495                         isLoaded: false
2496                     });
2497                 }
2498             },
2499             setTrack: function setTrack(trackId, setByKeyboard) {
2500
2501                 var t = this,
2502                     radios = t.captionsButton.querySelectorAll('input[type="radio"]'),
2503                     captions = t.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selected'),
2504                     track = t.captionsButton.querySelector('input[value="' + trackId + '"]');
2505
2506                 for (var i = 0, total = radios.length; i < total; i++) {
2507                     radios[i].checked = false;
2508                 }
2509
2510                 for (var _i9 = 0, _total7 = captions.length; _i9 < _total7; _i9++) {
2511                     (0, _dom.removeClass)(captions[_i9], t.options.classPrefix + 'captions-selected');
2512                 }
2513
2514                 track.checked = true;
2515                 var labels = (0, _dom.siblings)(track, function (el) {
2516                     return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
2517                 });
2518                 for (var _i10 = 0, _total8 = labels.length; _i10 < _total8; _i10++) {
2519                     (0, _dom.addClass)(labels[_i10], t.options.classPrefix + 'captions-selected');
2520                 }
2521
2522                 if (trackId === 'none') {
2523                     t.selectedTrack = null;
2524                     (0, _dom.removeClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
2525                 } else {
2526                     for (var _i11 = 0, _total9 = t.tracks.length; _i11 < _total9; _i11++) {
2527                         var _track = t.tracks[_i11];
2528                         if (_track.trackId === trackId) {
2529                             if (t.selectedTrack === null) {
2530                                 (0, _dom.addClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
2531                             }
2532                             t.selectedTrack = _track;
2533                             t.captions.setAttribute('lang', t.selectedTrack.srclang);
2534                             t.displayCaptions();
2535                             break;
2536                         }
2537                     }
2538                 }
2539
2540                 var event = (0, _general.createEvent)('captionschange', t.media);
2541                 event.detail.caption = t.selectedTrack;
2542                 t.media.dispatchEvent(event);
2543
2544                 if (!setByKeyboard) {
2545                     setTimeout(function () {
2546                         t.getElement(t.container).focus();
2547                     }, 500);
2548                 }
2549             },
2550             loadNextTrack: function loadNextTrack() {
2551                 var t = this;
2552
2553                 t.trackToLoad++;
2554                 if (t.trackToLoad < t.tracks.length) {
2555                     t.isLoadingTrack = true;
2556                     t.loadTrack(t.trackToLoad);
2557                 } else {
2558                     t.isLoadingTrack = false;
2559                     t.checkForTracks();
2560                 }
2561             },
2562             loadTrack: function loadTrack(index) {
2563                 var t = this,
2564                     track = t.tracks[index];
2565
2566                 if (track !== undefined && (track.src !== undefined || track.src !== "")) {
2567                     (0, _dom.ajax)(track.src, 'text', function (d) {
2568                         track.entries = typeof d === 'string' && /<tt\s+xml/ig.exec(d) ? _mejs2.default.TrackFormatParser.dfxp.parse(d) : _mejs2.default.TrackFormatParser.webvtt.parse(d);
2569
2570                         track.isLoaded = true;
2571                         t.enableTrackButton(track);
2572                         t.loadNextTrack();
2573
2574                         if (track.kind === 'slides') {
2575                             t.setupSlides(track);
2576                         } else if (track.kind === 'chapters' && !t.hasChapters) {
2577                             t.drawChapters(track);
2578                             t.hasChapters = true;
2579                         }
2580                     }, function () {
2581                         t.removeTrackButton(track.trackId);
2582                         t.loadNextTrack();
2583                     });
2584                 }
2585             },
2586             enableTrackButton: function enableTrackButton(track) {
2587                 var t = this,
2588                     lang = track.srclang,
2589                     target = _document2.default.getElementById('' + track.trackId);
2590
2591                 if (!target) {
2592                     return;
2593                 }
2594
2595                 var label = track.label;
2596
2597                 if (label === '') {
2598                     label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
2599                 }
2600                 target.disabled = false;
2601                 var targetSiblings = (0, _dom.siblings)(target, function (el) {
2602                     return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
2603                 });
2604                 for (var i = 0, total = targetSiblings.length; i < total; i++) {
2605                     targetSiblings[i].innerHTML = label;
2606                 }
2607
2608                 if (t.options.startLanguage === lang) {
2609                     target.checked = true;
2610                     var event = (0, _general.createEvent)('click', target);
2611                     target.dispatchEvent(event);
2612                 }
2613             },
2614             removeTrackButton: function removeTrackButton(trackId) {
2615                 var element = _document2.default.getElementById('' + trackId);
2616                 if (element) {
2617                     var button = element.closest('li');
2618                     if (button) {
2619                         button.remove();
2620                     }
2621                 }
2622             },
2623             addTrackButton: function addTrackButton(trackId, lang, label) {
2624                 var t = this;
2625                 if (label === '') {
2626                     label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
2627                 }
2628
2629                 t.captionsButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'captions-selector-list-item">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_captions" id="' + trackId + '" value="' + trackId + '" disabled>') + ('<label class="' + t.options.classPrefix + 'captions-selector-label"') + ('for="' + trackId + '">' + label + ' (loading)</label>') + '</li>';
2630             },
2631             checkForTracks: function checkForTracks() {
2632                 var t = this;
2633
2634                 var hasSubtitles = false;
2635
2636                 if (t.options.hideCaptionsButtonWhenEmpty) {
2637                     for (var i = 0, total = t.tracks.length; i < total; i++) {
2638                         var kind = t.tracks[i].kind;
2639                         if ((kind === 'subtitles' || kind === 'captions') && t.tracks[i].isLoaded) {
2640                             hasSubtitles = true;
2641                             break;
2642                         }
2643                     }
2644
2645                     t.captionsButton.style.display = hasSubtitles ? '' : 'none';
2646                     t.setControlsSize();
2647                 }
2648             },
2649             displayCaptions: function displayCaptions() {
2650                 if (this.tracks === undefined) {
2651                     return;
2652                 }
2653
2654                 var t = this,
2655                     track = t.selectedTrack,
2656                     sanitize = function sanitize(html) {
2657                         var div = _document2.default.createElement('div');
2658                         div.innerHTML = html;
2659
2660                         var scripts = div.getElementsByTagName('script');
2661                         var i = scripts.length;
2662                         while (i--) {
2663                             scripts[i].remove();
2664                         }
2665
2666                         var allElements = div.getElementsByTagName('*');
2667                         for (var _i12 = 0, n = allElements.length; _i12 < n; _i12++) {
2668                             var attributesObj = allElements[_i12].attributes,
2669                                 attributes = Array.prototype.slice.call(attributesObj);
2670
2671                             for (var j = 0, total = attributes.length; j < total; j++) {
2672                                 if (attributes[j].name.startsWith('on') || attributes[j].value.startsWith('javascript')) {
2673                                     allElements[_i12].remove();
2674                                 } else if (attributes[j].name === 'style') {
2675                                     allElements[_i12].removeAttribute(attributes[j].name);
2676                                 }
2677                             }
2678                         }
2679                         return div.innerHTML;
2680                     };
2681
2682                 if (track !== null && track.isLoaded) {
2683                     var i = t.searchTrackPosition(track.entries, t.media.currentTime);
2684                     if (i > -1) {
2685                         var text = track.entries[i].text;
2686                         if (typeof t.options.captionTextPreprocessor === 'function') text = t.options.captionTextPreprocessor(text);
2687                         t.captionsText.innerHTML = sanitize(text);
2688                         t.captionsText.className = t.options.classPrefix + 'captions-text ' + (track.entries[i].identifier || '');
2689                         t.captions.style.display = '';
2690                         t.captions.style.height = '0px';
2691                         return;
2692                     }
2693                     t.captions.style.display = 'none';
2694                 } else {
2695                     t.captions.style.display = 'none';
2696                 }
2697             },
2698             setupSlides: function setupSlides(track) {
2699                 var t = this;
2700                 t.slides = track;
2701                 t.slides.entries.imgs = [t.slides.entries.length];
2702                 t.showSlide(0);
2703             },
2704             showSlide: function showSlide(index) {
2705                 var _this = this;
2706
2707                 var t = this;
2708
2709                 if (t.tracks === undefined || t.slidesContainer === undefined) {
2710                     return;
2711                 }
2712
2713                 var url = t.slides.entries[index].text;
2714
2715                 var img = t.slides.entries[index].imgs;
2716
2717                 if (img === undefined || img.fadeIn === undefined) {
2718                     var image = _document2.default.createElement('img');
2719                     image.src = url;
2720                     image.addEventListener('load', function () {
2721                         var self = _this,
2722                             visible = (0, _dom.siblings)(self, function (el) {
2723                                 return visible(el);
2724                             });
2725                         self.style.display = 'none';
2726                         t.slidesContainer.innerHTML += self.innerHTML;
2727                         (0, _dom.fadeIn)(t.slidesContainer.querySelector(image));
2728                         for (var i = 0, total = visible.length; i < total; i++) {
2729                             (0, _dom.fadeOut)(visible[i], 400);
2730                         }
2731                     });
2732                     t.slides.entries[index].imgs = img = image;
2733                 } else if (!(0, _dom.visible)(img)) {
2734                     var _visible = (0, _dom.siblings)(self, function (el) {
2735                         return _visible(el);
2736                     });
2737                     (0, _dom.fadeIn)(t.slidesContainer.querySelector(img));
2738                     for (var i = 0, total = _visible.length; i < total; i++) {
2739                         (0, _dom.fadeOut)(_visible[i]);
2740                     }
2741                 }
2742             },
2743             displaySlides: function displaySlides() {
2744                 var t = this;
2745
2746                 if (this.slides === undefined) {
2747                     return;
2748                 }
2749
2750                 var slides = t.slides,
2751                     i = t.searchTrackPosition(slides.entries, t.media.currentTime);
2752
2753                 if (i > -1) {
2754                     t.showSlide(i);
2755                 }
2756             },
2757             drawChapters: function drawChapters(chapters) {
2758                 var t = this,
vendor: 6,288 bytes, lines 2759-2895
2759                     total = chapters.entries.length;
2760
2761                 if (!total) {
2762                     return;
2763                 }
2764
2765                 t.chaptersButton.querySelector('ul').innerHTML = '';
2766
2767                 for (var i = 0; i < total; i++) {
2768                     t.chaptersButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'chapters-selector-list-item" ' + 'role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_chapters" id="' + t.id + '_chapters_' + i + '" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label"') + ('for="' + t.id + '_chapters_' + i + '">' + chapters.entries[i].text + '</label>') + '</li>';
2769                 }
2770
2771                 var radios = t.chaptersButton.querySelectorAll('input[type="radio"]'),
2772                     labels = t.chaptersButton.querySelectorAll('.' + t.options.classPrefix + 'chapters-selector-label');
2773
2774                 for (var _i13 = 0, _total10 = radios.length; _i13 < _total10; _i13++) {
2775                     radios[_i13].disabled = false;
2776                     radios[_i13].checked = false;
2777                     radios[_i13].addEventListener('click', function (e) {
2778                         var self = this,
2779                             listItems = t.chaptersButton.querySelectorAll('li'),
2780                             label = (0, _dom.siblings)(self, function (el) {
2781                                 return (0, _dom.hasClass)(el, t.options.classPrefix + 'chapters-selector-label');
2782                             })[0];
2783
2784                         self.checked = true;
2785                         self.parentNode.setAttribute('aria-checked', true);
2786                         (0, _dom.addClass)(label, t.options.classPrefix + 'chapters-selected');
2787                         (0, _dom.removeClass)(t.chaptersButton.querySelector('.' + t.options.classPrefix + 'chapters-selected'), t.options.classPrefix + 'chapters-selected');
2788
2789                         for (var _i14 = 0, _total11 = listItems.length; _i14 < _total11; _i14++) {
2790                             listItems[_i14].setAttribute('aria-checked', false);
2791                         }
2792
2793                         var keyboard = e.keyCode || e.which;
2794                         if (typeof keyboard === 'undefined') {
2795                             setTimeout(function () {
2796                                 t.getElement(t.container).focus();
2797                             }, 500);
2798                         }
2799
2800                         t.media.setCurrentTime(parseFloat(self.value));
2801                         if (t.media.paused) {
2802                             t.media.play();
2803                         }
2804                     });
2805                 }
2806
2807                 for (var _i15 = 0, _total12 = labels.length; _i15 < _total12; _i15++) {
2808                     labels[_i15].addEventListener('click', function (e) {
2809                         var radio = (0, _dom.siblings)(this, function (el) {
2810                             return el.tagName === 'INPUT';
2811                         })[0],
2812                             event = (0, _general.createEvent)('click', radio);
2813                         radio.dispatchEvent(event);
2814                         e.preventDefault();
2815                     });
2816                 }
2817             },
2818             searchTrackPosition: function searchTrackPosition(tracks, currentTime) {
2819                 var lo = 0,
2820                     hi = tracks.length - 1,
2821                     mid = void 0,
2822                     start = void 0,
2823                     stop = void 0;
2824
2825                 while (lo <= hi) {
2826                     mid = lo + hi >> 1;
2827                     start = tracks[mid].start;
2828                     stop = tracks[mid].stop;
2829
2830                     if (currentTime >= start && currentTime < stop) {
2831                         return mid;
2832                     } else if (start < currentTime) {
2833                         lo = mid + 1;
2834                     } else if (start > currentTime) {
2835                         hi = mid - 1;
2836                     }
2837                 }
2838
2839                 return -1;
2840             }
2841         });
2842
2843         _mejs2.default.language = {
2844             codes: {
2845                 af: 'mejs.afrikaans',
2846                 sq: 'mejs.albanian',
2847                 ar: 'mejs.arabic',
2848                 be: 'mejs.belarusian',
2849                 bg: 'mejs.bulgarian',
2850                 ca: 'mejs.catalan',
2851                 zh: 'mejs.chinese',
2852                 'zh-cn': 'mejs.chinese-simplified',
2853                 'zh-tw': 'mejs.chines-traditional',
2854                 hr: 'mejs.croatian',
2855                 cs: 'mejs.czech',
2856                 da: 'mejs.danish',
2857                 nl: 'mejs.dutch',
2858                 en: 'mejs.english',
2859                 et: 'mejs.estonian',
2860                 fl: 'mejs.filipino',
2861                 fi: 'mejs.finnish',
2862                 fr: 'mejs.french',
2863                 gl: 'mejs.galician',
2864                 de: 'mejs.german',
2865                 el: 'mejs.greek',
2866                 ht: 'mejs.haitian-creole',
2867                 iw: 'mejs.hebrew',
2868                 hi: 'mejs.hindi',
2869                 hu: 'mejs.hungarian',
2870                 is: 'mejs.icelandic',
2871                 id: 'mejs.indonesian',
2872                 ga: 'mejs.irish',
2873                 it: 'mejs.italian',
2874                 ja: 'mejs.japanese',
2875                 ko: 'mejs.korean',
2876                 lv: 'mejs.latvian',
2877                 lt: 'mejs.lithuanian',
2878                 mk: 'mejs.macedonian',
2879                 ms: 'mejs.malay',
2880                 mt: 'mejs.maltese',
2881                 no: 'mejs.norwegian',
2882                 fa: 'mejs.persian',
2883                 pl: 'mejs.polish',
2884                 pt: 'mejs.portuguese',
2885                 ro: 'mejs.romanian',
2886                 ru: 'mejs.russian',
2887                 sr: 'mejs.serbian',
2888                 sk: 'mejs.slovak',
2889                 sl: 'mejs.slovenian',
2890                 es: 'mejs.spanish',
2891                 sw: 'mejs.swahili',
2892                 sv: 'mejs.swedish',
2893                 tl: 'mejs.tagalog',
2894                 th: 'mejs.thai',
2895                 tr: 'mejs.turkish',
2896                 uk: 'mejs.ukrainian',
2897                 vi: 'mejs.vietnamese',
2898                 cy: 'mejs.welsh',
2899                 yi: 'mejs.yiddish'
2900             }
2901         };
2902
2903         _mejs2.default.TrackFormatParser = {
2904             webvtt: {
2905                 pattern: /^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,
2906
2907                 parse: function parse(trackText) {
2908                     var lines = trackText.split(/\r?\n/),
2909                         entries = [];
2910
2911                     var timecode = void 0,
2912                         text = void 0,
2913                         identifier = void 0;
2914
2915                     for (var i = 0, total = lines.length; i < total; i++) {
2916                         timecode = this.pattern.exec(lines[i]);
2917
2918                         if (timecode && i < lines.length) {
2919                             if (i - 1 >= 0 && lines[i - 1] !== '') {
2920                                 identifier = lines[i - 1];
2921                             }
2922                             i++;
2923
2924                             text = lines[i];
2925                             i++;
2926                             while (lines[i] !== '' && i < lines.length) {
2927                                 text = text + '\n' + lines[i];
2928                                 i++;
2929                             }
2930                             text = text === null ? '' : text.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
2931                             entries.push({
2932                                 identifier: identifier,
2933                                 start: (0, _time.convertSMPTEtoSeconds)(timecode[1]) === 0 ? 0.200 : (0, _time.convertSMPTEtoSeconds)(timecode[1]),
2934                                 stop: (0, _time.convertSMPTEtoSeconds)(timecode[3]),
2935                                 text: text,
2936                                 settings: timecode[5]
2937                             });
2938                         }
2939                         identifier = '';
2940                     }
2941                     return entries;
2942                 }
2943             },
2944
2945             dfxp: {
2946                 parse: function parse(trackText) {
2947                     trackText = $(trackText).filter('tt');
2948                     var container = trackText.firstChild,
2949                         lines = container.querySelectorAll('p'),
2950                         styleNode = trackText.getElementById('' + container.attr('style')),
2951                         entries = [];
2952
2953                     var styles = void 0;
2954
2955                     if (styleNode.length) {
2956                         styleNode.removeAttribute('id');
2957                         var attributes = styleNode.attributes;
2958                         if (attributes.length) {
2959                             styles = {};
2960                             for (var i = 0, total = attributes.length; i < total; i++) {
2961                                 styles[attributes[i].name.split(":")[1]] = attributes[i].value;
2962                             }
2963                         }
2964                     }
2965
2966                     for (var _i16 = 0, _total13 = lines.length; _i16 < _total13; _i16++) {
2967                         var style = void 0,
2968                             _temp = {
2969                                 start: null,
2970                                 stop: null,
2971                                 style: null,
2972                                 text: null
2973                             };
2974
2975                         if (lines.eq(_i16).attr('begin')) {
2976                             _temp.start = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16).attr('begin'));
2977                         }
2978                         if (!_temp.start && lines.eq(_i16 - 1).attr('end')) {
2979                             _temp.start = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16 - 1).attr('end'));
2980                         }
2981                         if (lines.eq(_i16).attr('end')) {
2982                             _temp.stop = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16).attr('end'));
2983                         }
2984                         if (!_temp.stop && lines.eq(_i16 + 1).attr('begin')) {
2985                             _temp.stop = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16 + 1).attr('begin'));
2986                         }
2987
2988                         if (styles) {
2989                             style = '';
2990                             for (var _style in styles) {
2991                                 style += _style + ':' + styles[_style] + ';';
2992                             }
2993                         }
2994                         if (style) {
2995                             _temp.style = style;
2996                         }
2997                         if (_temp.start === 0) {
2998                             _temp.start = 0.200;
2999                         }
3000                         _temp.text = lines.eq(_i16).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
vendor: 18,622 bytes, lines 3001-3365
3001                         entries.push(_temp);
3002                     }
3003                     return entries;
3004                 }
3005             }
3006         };
3007
3008     }, { "16": 16, "2": 2, "26": 26, "27": 27, "30": 30, "5": 5, "7": 7 }], 14: [function (_dereq_, module, exports) {
3009         'use strict';
3010
3011         var _document = _dereq_(2);
3012
3013         var _document2 = _interopRequireDefault(_document);
3014
3015         var _player = _dereq_(16);
3016
3017         var _player2 = _interopRequireDefault(_player);
3018
3019         var _i18n = _dereq_(5);
3020
3021         var _i18n2 = _interopRequireDefault(_i18n);
3022
3023         var _constants = _dereq_(25);
3024
3025         var _general = _dereq_(27);
3026
3027         var _dom = _dereq_(26);
3028
3029         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3030
3031         Object.assign(_player.config, {
3032             muteText: null,
3033
3034             unmuteText: null,
3035
3036             allyVolumeControlText: null,
3037
3038             hideVolumeOnTouchDevices: true,
3039
3040             audioVolume: 'horizontal',
3041
3042             videoVolume: 'vertical',
3043
3044             startVolume: 0.8
3045         });
3046
3047         Object.assign(_player2.default.prototype, {
3048             buildvolume: function buildvolume(player, controls, layers, media) {
3049                 if ((_constants.IS_ANDROID || _constants.IS_IOS) && this.options.hideVolumeOnTouchDevices) {
3050                     return;
3051                 }
3052
3053                 var t = this,
3054                     mode = t.isVideo ? t.options.videoVolume : t.options.audioVolume,
3055                     muteText = (0, _general.isString)(t.options.muteText) ? t.options.muteText : _i18n2.default.t('mejs.mute'),
3056                     unmuteText = (0, _general.isString)(t.options.unmuteText) ? t.options.unmuteText : _i18n2.default.t('mejs.unmute'),
3057                     volumeControlText = (0, _general.isString)(t.options.allyVolumeControlText) ? t.options.allyVolumeControlText : _i18n2.default.t('mejs.volume-help-text'),
3058                     mute = _document2.default.createElement('div');
3059
3060                 mute.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'volume-button ' + t.options.classPrefix + 'mute';
3061                 mute.innerHTML = mode === 'horizontal' ? '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' : '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' + ('<a href="javascript:void(0);" class="' + t.options.classPrefix + 'volume-slider" ') + ('aria-label="' + _i18n2.default.t('mejs.volume-slider') + '" aria-valuemin="0" aria-valuemax="100" role="slider" ') + 'aria-orientation="vertical">' + ('<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>') + ('<div class="' + t.options.classPrefix + 'volume-total">') + ('<div class="' + t.options.classPrefix + 'volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'volume-handle"></div>') + '</div>' + '</a>';
3062
3063                 t.addControlElement(mute, 'volume');
3064
3065                 t.options.keyActions.push({
3066                     keys: [38],
3067                     action: function action(player) {
3068                         var volumeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'volume-slider');
3069                         if (volumeSlider && volumeSlider.matches(':focus')) {
3070                             volumeSlider.style.display = 'block';
3071                         }
3072                         if (player.isVideo) {
3073                             player.showControls();
3074                             player.startControlsTimer();
3075                         }
3076
3077                         var newVolume = Math.min(player.volume + 0.1, 1);
3078                         player.setVolume(newVolume);
3079                         if (newVolume > 0) {
3080                             player.setMuted(false);
3081                         }
3082                     }
3083                 }, {
3084                     keys: [40],
3085                     action: function action(player) {
3086                         var volumeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'volume-slider');
3087                         if (volumeSlider) {
3088                             volumeSlider.style.display = 'block';
3089                         }
3090
3091                         if (player.isVideo) {
3092                             player.showControls();
3093                             player.startControlsTimer();
3094                         }
3095
3096                         var newVolume = Math.max(player.volume - 0.1, 0);
3097                         player.setVolume(newVolume);
3098
3099                         if (newVolume <= 0.1) {
3100                             player.setMuted(true);
3101                         }
3102                     }
3103                 }, {
3104                     keys: [77],
3105                     action: function action(player) {
3106                         var volumeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'volume-slider');
3107                         if (volumeSlider) {
3108                             volumeSlider.style.display = 'block';
3109                         }
3110
3111                         if (player.isVideo) {
3112                             player.showControls();
3113                             player.startControlsTimer();
3114                         }
3115                         if (player.media.muted) {
3116                             player.setMuted(false);
3117                         } else {
3118                             player.setMuted(true);
3119                         }
3120                     }
3121                 });
3122
3123                 if (mode === 'horizontal') {
3124                     var anchor = _document2.default.createElement('a');
3125                     anchor.className = t.options.classPrefix + 'horizontal-volume-slider';
3126                     anchor.href = 'javascript:void(0);';
3127                     anchor.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider'));
3128                     anchor.setAttribute('aria-valuemin', 0);
3129                     anchor.setAttribute('aria-valuemax', 100);
3130                     anchor.setAttribute('aria-valuenow', 100);
3131                     anchor.setAttribute('role', 'slider');
3132                     anchor.innerHTML += '<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>' + ('<div class="' + t.options.classPrefix + 'horizontal-volume-total">') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-handle"></div>') + '</div>';
3133                     mute.parentNode.insertBefore(anchor, mute.nextSibling);
3134                 }
3135
3136                 var mouseIsDown = false,
3137                     mouseIsOver = false,
3138                     modified = false,
3139                     updateVolumeSlider = function updateVolumeSlider() {
3140                         var volume = Math.floor(media.volume * 100);
3141                         volumeSlider.setAttribute('aria-valuenow', volume);
3142                         volumeSlider.setAttribute('aria-valuetext', volume + '%');
3143                     };
3144
3145                 var volumeSlider = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-slider') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-slider'),
3146                     volumeTotal = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-total') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-total'),
3147                     volumeCurrent = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-current') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-current'),
3148                     volumeHandle = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-handle') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-handle'),
3149                     positionVolumeHandle = function positionVolumeHandle(volume) {
3150
3151                         if (volume === null || isNaN(volume) || volume === undefined) {
3152                             return;
3153                         }
3154
3155                         volume = Math.max(0, volume);
3156                         volume = Math.min(volume, 1);
3157
3158                         if (volume === 0) {
3159                             (0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
3160                             (0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
3161                             var button = mute.firstElementChild;
3162                             button.setAttribute('title', unmuteText);
3163                             button.setAttribute('aria-label', unmuteText);
3164                         } else {
3165                             (0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
3166                             (0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
3167                             var _button = mute.firstElementChild;
3168                             _button.setAttribute('title', muteText);
3169                             _button.setAttribute('aria-label', muteText);
3170                         }
3171
3172                         var volumePercentage = volume * 100 + '%',
3173                             volumeStyles = getComputedStyle(volumeHandle);
3174
3175                         if (mode === 'vertical') {
3176                             volumeCurrent.style.bottom = 0;
3177                             volumeCurrent.style.height = volumePercentage;
3178                             volumeHandle.style.bottom = volumePercentage;
3179                             volumeHandle.style.marginBottom = -parseFloat(volumeStyles.height) / 2 + 'px';
3180                         } else {
3181                             volumeCurrent.style.left = 0;
3182                             volumeCurrent.style.width = volumePercentage;
3183                             volumeHandle.style.left = volumePercentage;
3184                             volumeHandle.style.marginLeft = -parseFloat(volumeStyles.width) / 2 + 'px';
3185                         }
3186                     },
3187                     handleVolumeMove = function handleVolumeMove(e) {
3188                         var totalOffset = (0, _dom.offset)(volumeTotal),
3189                             volumeStyles = getComputedStyle(volumeTotal);
3190
3191                         modified = true;
3192
3193                         var volume = null;
3194
3195                         if (mode === 'vertical') {
3196                             var railHeight = parseFloat(volumeStyles.height),
3197                                 newY = e.pageY - totalOffset.top;
3198
3199                             volume = (railHeight - newY) / railHeight;
3200
3201                             if (totalOffset.top === 0 || totalOffset.left === 0) {
3202                                 return;
3203                             }
3204                         } else {
3205                             var railWidth = parseFloat(volumeStyles.width),
3206                                 newX = e.pageX - totalOffset.left;
3207
3208                             volume = newX / railWidth;
3209                         }
3210
3211                         volume = Math.max(0, volume);
3212                         volume = Math.min(volume, 1);
3213
3214                         positionVolumeHandle(volume);
3215
3216                         t.setMuted(volume === 0);
3217                         t.setVolume(volume);
3218
3219                         e.preventDefault();
3220                         e.stopPropagation();
3221                     },
3222                     toggleMute = function toggleMute() {
3223                         if (t.muted) {
3224                             positionVolumeHandle(0);
3225                             (0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
3226                             (0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
3227                         } else {
3228                             positionVolumeHandle(media.volume);
3229                             (0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
3230                             (0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
3231                         }
3232                     };
3233
3234                 player.getElement(player.container).addEventListener('keydown', function (e) {
3235                     var hasFocus = !!e.target.closest('.' + t.options.classPrefix + 'container');
3236                     if (!hasFocus && mode === 'vertical') {
3237                         volumeSlider.style.display = 'none';
3238                     }
3239                 });
3240
3241                 mute.addEventListener('mouseenter', function (e) {
3242                     if (e.target === mute) {
3243                         volumeSlider.style.display = 'block';
3244                         mouseIsOver = true;
3245                         e.preventDefault();
3246                         e.stopPropagation();
3247                     }
3248                 });
3249                 mute.addEventListener('focusin', function () {
3250                     volumeSlider.style.display = 'block';
3251                     mouseIsOver = true;
3252                 });
3253
3254                 mute.addEventListener('focusout', function (e) {
3255                     if ((!e.relatedTarget || e.relatedTarget && !e.relatedTarget.matches('.' + t.options.classPrefix + 'volume-slider')) && mode === 'vertical') {
3256                         volumeSlider.style.display = 'none';
3257                     }
3258                 });
3259                 mute.addEventListener('mouseleave', function () {
3260                     mouseIsOver = false;
3261                     if (!mouseIsDown && mode === 'vertical') {
3262                         volumeSlider.style.display = 'none';
3263                     }
3264                 });
3265                 mute.addEventListener('focusout', function () {
3266                     mouseIsOver = false;
3267                 });
3268                 mute.addEventListener('keydown', function (e) {
3269                     if (t.options.enableKeyboard && t.options.keyActions.length) {
3270                         var keyCode = e.which || e.keyCode || 0,
3271                             volume = media.volume;
3272
3273                         switch (keyCode) {
3274                             case 38:
3275                                 volume = Math.min(volume + 0.1, 1);
3276                                 break;
3277                             case 40:
3278                                 volume = Math.max(0, volume - 0.1);
3279                                 break;
3280                             default:
3281                                 return true;
3282                         }
3283
3284                         mouseIsDown = false;
3285                         positionVolumeHandle(volume);
3286                         media.setVolume(volume);
3287
3288                         e.preventDefault();
3289                         e.stopPropagation();
3290                     }
3291                 });
3292                 mute.querySelector('button').addEventListener('click', function () {
3293                     media.setMuted(!media.muted);
3294                     var event = (0, _general.createEvent)('volumechange', media);
3295                     media.dispatchEvent(event);
3296                 });
3297
3298                 volumeSlider.addEventListener('dragstart', function () {
3299                     return false;
3300                 });
3301
3302                 volumeSlider.addEventListener('mouseover', function () {
3303                     mouseIsOver = true;
3304                 });
3305                 volumeSlider.addEventListener('focusin', function () {
3306                     volumeSlider.style.display = 'block';
3307                     mouseIsOver = true;
3308                 });
3309                 volumeSlider.addEventListener('focusout', function () {
3310                     mouseIsOver = false;
3311                     if (!mouseIsDown && mode === 'vertical') {
3312                         volumeSlider.style.display = 'none';
3313                     }
3314                 });
3315                 volumeSlider.addEventListener('mousedown', function (e) {
3316                     handleVolumeMove(e);
3317                     t.globalBind('mousemove.vol', function (event) {
3318                         var target = event.target;
3319                         if (mouseIsDown && (target === volumeSlider || target.closest(mode === 'vertical' ? '.' + t.options.classPrefix + 'volume-slider' : '.' + t.options.classPrefix + 'horizontal-volume-slider'))) {
3320                             handleVolumeMove(event);
3321                         }
3322                     });
3323                     t.globalBind('mouseup.vol', function () {
3324                         mouseIsDown = false;
3325                         if (!mouseIsOver && mode === 'vertical') {
3326                             volumeSlider.style.display = 'none';
3327                         }
3328                     });
3329                     mouseIsDown = true;
3330                     e.preventDefault();
3331                     e.stopPropagation();
3332                 });
3333
3334                 media.addEventListener('volumechange', function (e) {
3335                     if (!mouseIsDown) {
3336                         toggleMute();
3337                     }
3338                     updateVolumeSlider(e);
3339                 });
3340
3341                 var rendered = false;
3342                 media.addEventListener('rendererready', function () {
3343                     if (!modified) {
3344                         setTimeout(function () {
3345                             rendered = true;
3346                             if (player.options.startVolume === 0 || media.originalNode.muted) {
3347                                 media.setMuted(true);
3348                                 player.options.startVolume = 0;
3349                             }
3350                             media.setVolume(player.options.startVolume);
3351                             t.setControlsSize();
3352                         }, 250);
3353                     }
3354                 });
3355
3356                 media.addEventListener('loadedmetadata', function () {
3357                     setTimeout(function () {
3358                         if (!modified && !rendered) {
3359                             if (player.options.startVolume === 0 || media.originalNode.muted) {
3360                                 media.setMuted(true);
3361                             }
3362                             media.setVolume(player.options.startVolume);
3363                             t.setControlsSize();
3364                         }
3365                         rendered = false;
3366                     }, 250);
3367                 });
3368
3369                 if (player.options.startVolume === 0 || media.originalNode.muted) {
3370                     media.setMuted(true);
3371                     player.options.startVolume = 0;
3372                     toggleMute();
3373                 }
3374
3375                 t.getElement(t.container).addEventListener('controlsresize', function () {
3376                     toggleMute();
3377                 });
3378             }
3379         });
3380
3381     }, { "16": 16, "2": 2, "25": 25, "26": 26, "27": 27, "5": 5 }], 15: [function (_dereq_, module, exports) {
3382         'use strict';
3383
3384         Object.defineProperty(exports, "__esModule", {
3385             value: true
3386         });
3387         var EN = exports.EN = {
3388             'mejs.plural-form': 1,
3389
3390             'mejs.download-file': 'Download File',
3391
3392             'mejs.install-flash': 'You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/',
3393
3394             'mejs.fullscreen': 'Fullscreen',
3395
3396             'mejs.play': 'Play',
3397             'mejs.pause': 'Pause',
3398
3399             'mejs.time-slider': 'Time Slider',
3400             'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.',
3401             'mejs.live-broadcast': 'Live Broadcast',
3402
3403             'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.',
3404             'mejs.unmute': 'Unmute',
3405             'mejs.mute': 'Mute',
3406             'mejs.volume-slider': 'Volume Slider',
3407
3408             'mejs.video-player': 'Video Player',
3409             'mejs.audio-player': 'Audio Player',
3410
3411             'mejs.captions-subtitles': 'Captions/Subtitles',
3412             'mejs.captions-chapters': 'Chapters',
3413             'mejs.none': 'None',
3414             'mejs.afrikaans': 'Afrikaans',
3415             'mejs.albanian': 'Albanian',
3416             'mejs.arabic': 'Arabic',
3417             'mejs.belarusian': 'Belarusian',
3418             'mejs.bulgarian': 'Bulgarian',
3419             'mejs.catalan': 'Catalan',
3420             'mejs.chinese': 'Chinese',
3421             'mejs.chinese-simplified': 'Chinese (Simplified)',
3422             'mejs.chinese-traditional': 'Chinese (Traditional)',
3423             'mejs.croatian': 'Croatian',
3424             'mejs.czech': 'Czech',
3425             'mejs.danish': 'Danish',
3426             'mejs.dutch': 'Dutch',
3427             'mejs.english': 'English',
3428             'mejs.estonian': 'Estonian',
3429             'mejs.filipino': 'Filipino',
3430             'mejs.finnish': 'Finnish',
3431             'mejs.french': 'French',
3432             'mejs.galician': 'Galician',
3433             'mejs.german': 'German',
3434             'mejs.greek': 'Greek',
3435             'mejs.haitian-creole': 'Haitian Creole',
3436             'mejs.hebrew': 'Hebrew',
3437             'mejs.hindi': 'Hindi',
3438             'mejs.hungarian': 'Hungarian',
3439             'mejs.icelandic': 'Icelandic',
3440             'mejs.indonesian': 'Indonesian',
3441             'mejs.irish': 'Irish',
3442             'mejs.italian': 'Italian',
3443             'mejs.japanese': 'Japanese',
3444             'mejs.korean': 'Korean',
3445             'mejs.latvian': 'Latvian',
3446             'mejs.lithuanian': 'Lithuanian',
3447             'mejs.macedonian': 'Macedonian',
3448             'mejs.malay': 'Malay',
3449             'mejs.maltese': 'Maltese',
3450             'mejs.norwegian': 'Norwegian',
3451             'mejs.persian': 'Persian',
3452             'mejs.polish': 'Polish',
3453             'mejs.portuguese': 'Portuguese',
3454             'mejs.romanian': 'Romanian',
3455             'mejs.russian': 'Russian',
3456             'mejs.serbian': 'Serbian',
3457             'mejs.slovak': 'Slovak',
3458             'mejs.slovenian': 'Slovenian',
3459             'mejs.spanish': 'Spanish',
3460             'mejs.swahili': 'Swahili',
3461             'mejs.swedish': 'Swedish',
3462             'mejs.tagalog': 'Tagalog',
3463             'mejs.thai': 'Thai',
3464             'mejs.turkish': 'Turkish',
3465             'mejs.ukrainian': 'Ukrainian',
3466             'mejs.vietnamese': 'Vietnamese',
3467             'mejs.welsh': 'Welsh',
3468             'mejs.yiddish': 'Yiddish'
3469         };
3470
3471     }, {}
vendor: 52,664 bytes, lines 3471-4575
3471], 16: [function (_dereq_, module, exports) {
3472         'use strict';
3473
3474         Object.defineProperty(exports, "__esModule", {
3475             value: true
3476         });
3477         exports.config = undefined;
3478
3479         var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
3480
3481         var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
3482
3483         var _window = _dereq_(3);
3484
3485         var _window2 = _interopRequireDefault(_window);
3486
3487         var _document = _dereq_(2);
3488
3489         var _document2 = _interopRequireDefault(_document);
3490
3491         var _mejs = _dereq_(7);
3492
3493         var _mejs2 = _interopRequireDefault(_mejs);
3494
3495         var _mediaelement = _dereq_(6);
3496
3497         var _mediaelement2 = _interopRequireDefault(_mediaelement);
3498
3499         var _default = _dereq_(17);
3500
3501         var _default2 = _interopRequireDefault(_default);
3502
3503         var _i18n = _dereq_(5);
3504
3505         var _i18n2 = _interopRequireDefault(_i18n);
3506
3507         var _constants = _dereq_(25);
3508
3509         var _general = _dereq_(27);
3510
3511         var _time = _dereq_(30);
3512
3513         var _media = _dereq_(28);
3514
3515         var _dom = _dereq_(26);
3516
3517         var dom = _interopRequireWildcard(_dom);
3518
3519         function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
3520
3521         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3522
3523         function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3524
3525         _mejs2.default.mepIndex = 0;
3526
3527         _mejs2.default.players = {};
3528
3529         var config = exports.config = {
3530             poster: '',
3531
3532             showPosterWhenEnded: false,
3533
3534             showPosterWhenPaused: false,
3535
3536             defaultVideoWidth: 480,
3537
3538             defaultVideoHeight: 270,
3539
3540             videoWidth: -1,
3541
3542             videoHeight: -1,
3543
3544             defaultAudioWidth: 400,
3545
3546             defaultAudioHeight: 40,
3547
3548             defaultSeekBackwardInterval: function defaultSeekBackwardInterval(media) {
3549                 return media.getDuration() * 0.05;
3550             },
3551
3552             defaultSeekForwardInterval: function defaultSeekForwardInterval(media) {
3553                 return media.getDuration() * 0.05;
3554             },
3555
3556             setDimensions: true,
3557
3558             audioWidth: -1,
3559
3560             audioHeight: -1,
3561
3562             loop: false,
3563
3564             autoRewind: true,
3565
3566             enableAutosize: true,
3567
3568             timeFormat: '',
3569
3570             alwaysShowHours: false,
3571
3572             showTimecodeFrameCount: false,
3573
3574             framesPerSecond: 25,
3575
3576             alwaysShowControls: false,
3577
3578             hideVideoControlsOnLoad: false,
3579
3580             hideVideoControlsOnPause: false,
3581
3582             clickToPlayPause: true,
3583
3584             controlsTimeoutDefault: 1500,
3585
3586             controlsTimeoutMouseEnter: 2500,
3587
3588             controlsTimeoutMouseLeave: 1000,
3589
3590             iPadUseNativeControls: false,
3591
3592             iPhoneUseNativeControls: false,
3593
3594             AndroidUseNativeControls: false,
3595
3596             features: ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'],
3597
3598             useDefaultControls: false,
3599
3600             isVideo: true,
3601
3602             stretching: 'auto',
3603
3604             classPrefix: 'mejs__',
3605
3606             enableKeyboard: true,
3607
3608             pauseOtherPlayers: true,
3609
3610             secondsDecimalLength: 0,
3611
3612             customError: null,
3613
3614             keyActions: [{
3615                 keys: [32, 179],
3616                 action: function action(player) {
3617
3618                     if (!_constants.IS_FIREFOX) {
3619                         if (player.paused || player.ended) {
3620                             player.play();
3621                         } else {
3622                             player.pause();
3623                         }
3624                     }
3625                 }
3626             }]
3627         };
3628
3629         _mejs2.default.MepDefaults = config;
3630
3631         var MediaElementPlayer = function () {
3632             function MediaElementPlayer(node, o) {
3633                 _classCallCheck(this, MediaElementPlayer);
3634
3635                 var t = this,
3636                     element = typeof node === 'string' ? _document2.default.getElementById(node) : node;
3637
3638                 if (!(t instanceof MediaElementPlayer)) {
3639                     return new MediaElementPlayer(element, o);
3640                 }
3641
3642                 t.node = t.media = element;
3643
3644                 if (!t.node) {
3645                     return;
3646                 }
3647
3648                 if (t.media.player) {
3649                     return t.media.player;
3650                 }
3651
3652                 t.hasFocus = false;
3653
3654                 t.controlsAreVisible = true;
3655
3656                 t.controlsEnabled = true;
3657
3658                 t.controlsTimer = null;
3659
3660                 t.currentMediaTime = 0;
3661
3662                 t.proxy = null;
3663
3664                 if (o === undefined) {
3665                     var options = t.node.getAttribute('data-mejsoptions');
3666                     o = options ? JSON.parse(options) : {};
3667                 }
3668
3669                 t.options = Object.assign({}, config, o);
3670
3671                 if (t.options.loop && !t.media.getAttribute('loop')) {
3672                     t.media.loop = true;
3673                     t.node.loop = true;
3674                 } else if (t.media.loop) {
3675                     t.options.loop = true;
3676                 }
3677
3678                 if (!t.options.timeFormat) {
3679                     t.options.timeFormat = 'mm:ss';
3680                     if (t.options.alwaysShowHours) {
3681                         t.options.timeFormat = 'hh:mm:ss';
3682                     }
3683                     if (t.options.showTimecodeFrameCount) {
3684                         t.options.timeFormat += ':ff';
3685                     }
3686                 }
3687
3688                 (0, _time.calculateTimeFormat)(0, t.options, t.options.framesPerSecond || 25);
3689
3690                 t.id = 'mep_' + _mejs2.default.mepIndex++;
3691
3692                 _mejs2.default.players[t.id] = t;
3693
3694                 t.init();
3695
3696                 return t;
3697             }
3698
3699             _createClass(MediaElementPlayer, [{
3700                 key: 'getElement',
3701                 value: function getElement(element) {
3702                     return element;
3703                 }
3704             }, {
3705                 key: 'init',
3706                 value: function init() {
3707                     var t = this,
3708                         playerOptions = Object.assign({}, t.options, {
3709                             success: function success(media, domNode) {
3710                                 t._meReady(media, domNode);
3711                             },
3712                             error: function error(e) {
3713                                 t._handleError(e);
3714                             }
3715                         }),
3716                         tagName = t.node.tagName.toLowerCase();
3717
3718                     t.isDynamic = tagName !== 'audio' && tagName !== 'video' && tagName !== 'iframe';
3719                     t.isVideo = t.isDynamic ? t.options.isVideo : tagName !== 'audio' && t.options.isVideo;
3720                     t.mediaFiles = null;
3721                     t.trackFiles = null;
3722
3723                     if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls) {
3724                         t.node.setAttribute('controls', true);
3725
3726                         if (_constants.IS_IPAD && t.node.getAttribute('autoplay')) {
3727                             t.play();
3728                         }
3729                     } else if ((t.isVideo || !t.isVideo && (t.options.features.length || t.options.useDefaultControls)) && !(_constants.IS_ANDROID && t.options.AndroidUseNativeControls)) {
3730                         t.node.removeAttribute('controls');
3731                         var videoPlayerTitle = t.isVideo ? _i18n2.default.t('mejs.video-player') : _i18n2.default.t('mejs.audio-player');
3732
3733                         var offscreen = _document2.default.createElement('span');
3734                         offscreen.className = t.options.classPrefix + 'offscreen';
3735                         offscreen.innerText = videoPlayerTitle;
3736                         t.media.parentNode.insertBefore(offscreen, t.media);
3737
3738                         t.container = _document2.default.createElement('div');
3739                         t.getElement(t.container).id = t.id;
3740                         t.getElement(t.container).className = t.options.classPrefix + 'container ' + t.options.classPrefix + 'container-keyboard-inactive ' + t.media.className;
3741                         t.getElement(t.container).tabIndex = 0;
3742                         t.getElement(t.container).setAttribute('role', 'application');
3743                         t.getElement(t.container).setAttribute('aria-label', videoPlayerTitle);
3744                         t.getElement(t.container).innerHTML = '<div class="' + t.options.classPrefix + 'inner">' + ('<div class="' + t.options.classPrefix + 'mediaelement"></div>') + ('<div class="' + t.options.classPrefix + 'layers"></div>') + ('<div class="' + t.options.classPrefix + 'controls"></div>') + '</div>';
3745                         t.getElement(t.container).addEventListener('focus', function (e) {
3746                             if (!t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) {
3747                                 t.showControls(true);
3748
3749                                 var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.getElement(t.container)) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button',
3750                                     button = t.getElement(t.container).querySelector(btnSelector);
3751
3752                                 button.focus();
3753                             }
3754                         });
3755                         t.node.parentNode.insertBefore(t.getElement(t.container), t.node);
3756
3757                         if (!t.options.features.length && !t.options.useDefaultControls) {
3758                             t.getElement(t.container).style.background = 'transparent';
3759                             t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'controls').style.display = 'none';
3760                         }
3761
3762                         if (t.isVideo && t.options.stretching === 'fill' && !dom.hasClass(t.getElement(t.container).parentNode, t.options.classPrefix + 'fill-container')) {
3763                             t.outerContainer = t.media.parentNode;
3764
3765                             var wrapper = _document2.default.createElement('div');
3766                             wrapper.className = t.options.classPrefix + 'fill-container';
3767                             t.getElement(t.container).parentNode.insertBefore(wrapper, t.getElement(t.container));
3768                             wrapper.appendChild(t.getElement(t.container));
3769                         }
3770
3771                         if (_constants.IS_ANDROID) {
3772                             dom.addClass(t.getElement(t.container), t.options.classPrefix + 'android');
3773                         }
3774                         if (_constants.IS_IOS) {
3775                             dom.addClass(t.getElement(t.container), t.options.classPrefix + 'ios');
3776                         }
3777                         if (_constants.IS_IPAD) {
3778                             dom.addClass(t.getElement(t.container), t.options.classPrefix + 'ipad');
3779                         }
3780                         if (_constants.IS_IPHONE) {
3781                             dom.addClass(t.getElement(t.container), t.options.classPrefix + 'iphone');
3782                         }
3783                         dom.addClass(t.getElement(t.container), t.isVideo ? t.options.classPrefix + 'video' : t.options.classPrefix + 'audio');
3784
3785                         t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'mediaelement').appendChild(t.node);
3786
3787                         t.media.player = t;
3788
3789                         t.controls = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'controls');
3790                         t.layers = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'layers');
3791
3792                         var tagType = t.isVideo ? 'video' : 'audio',
3793                             capsTagName = tagType.substring(0, 1).toUpperCase() + tagType.substring(1);
3794
3795                         if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) {
3796                             t.width = t.options[tagType + 'Width'];
3797                         } else if (t.node.style.width !== '' && t.node.style.width !== null) {
3798                             t.width = t.node.style.width;
3799                         } else if (t.node.getAttribute('width')) {
3800                             t.width = t.node.getAttribute('width');
3801                         } else {
3802                             t.width = t.options['default' + capsTagName + 'Width'];
3803                         }
3804
3805                         if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) {
3806                             t.height = t.options[tagType + 'Height'];
3807                         } else if (t.node.style.height !== '' && t.node.style.height !== null) {
3808                             t.height = t.node.style.height;
3809                         } else if (t.node.getAttribute('height')) {
3810                             t.height = t.node.getAttribute('height');
3811                         } else {
3812                             t.height = t.options['default' + capsTagName + 'Height'];
3813                         }
3814
3815                         t.initialAspectRatio = t.height >= t.width ? t.width / t.height : t.height / t.width;
3816
3817                         t.setPlayerSize(t.width, t.height);
3818
3819                         playerOptions.pluginWidth = t.width;
3820                         playerOptions.pluginHeight = t.height;
3821                     } else if (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) {
3822                         t.node.style.display = 'none';
3823                     }
3824
3825                     _mejs2.default.MepDefaults = playerOptions;
3826
3827                     new _mediaelement2.default(t.media, playerOptions, t.mediaFiles);
3828
3829                     if (t.getElement(t.container) !== undefined && t.options.features.length && t.controlsAreVisible && !t.options.hideVideoControlsOnLoad) {
3830                         var event = (0, _general.createEvent)('controlsshown', t.getElement(t.container));
3831                         t.getElement(t.container).dispatchEvent(event);
3832                     }
3833                 }
3834             }, {
3835                 key: 'showControls',
3836                 value: function showControls(doAnimation) {
3837                     var t = this;
3838
3839                     doAnimation = doAnimation === undefined || doAnimation;
3840
3841                     if (t.controlsAreVisible || !t.isVideo) {
3842                         return;
3843                     }
3844
3845                     if (doAnimation) {
3846                         (function () {
3847                             dom.fadeIn(t.getElement(t.controls), 200, function () {
3848                                 dom.removeClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3849                                 var event = (0, _general.createEvent)('controlsshown', t.getElement(t.container));
3850                                 t.getElement(t.container).dispatchEvent(event);
3851                             });
3852
3853                             var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3854
3855                             var _loop = function _loop(i, total) {
3856                                 dom.fadeIn(controls[i], 200, function () {
3857                                     dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
3858                                 });
3859                             };
3860
3861                             for (var i = 0, total = controls.length; i < total; i++) {
3862                                 _loop(i, total);
3863                             }
3864                         })();
3865                     } else {
3866                         dom.removeClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3867                         t.getElement(t.controls).style.display = '';
3868                         t.getElement(t.controls).style.opacity = 1;
3869
3870                         var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3871                         for (var i = 0, total = controls.length; i < total; i++) {
3872                             dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
3873                             controls[i].style.display = '';
3874                         }
3875
3876                         var event = (0, _general.createEvent)('controlsshown', t.getElement(t.container));
3877                         t.getElement(t.container).dispatchEvent(event);
3878                     }
3879
3880                     t.controlsAreVisible = true;
3881                     t.setControlsSize();
3882                 }
3883             }, {
3884                 key: 'hideControls',
3885                 value: function hideControls(doAnimation, forceHide) {
3886                     var t = this;
3887
3888                     doAnimation = doAnimation === undefined || doAnimation;
3889
3890                     if (forceHide !== true && (!t.controlsAreVisible || t.options.alwaysShowControls || t.paused && t.readyState === 4 && (!t.options.hideVideoControlsOnLoad && t.currentTime <= 0 || !t.options.hideVideoControlsOnPause && t.currentTime > 0) || t.isVideo && !t.options.hideVideoControlsOnLoad && !t.readyState || t.ended)) {
3891                         return;
3892                     }
3893
3894                     if (doAnimation) {
3895                         (function () {
3896                             dom.fadeOut(t.getElement(t.controls), 200, function () {
3897                                 dom.addClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3898                                 t.getElement(t.controls).style.display = '';
3899                                 var event = (0, _general.createEvent)('controlshidden', t.getElement(t.container));
3900                                 t.getElement(t.container).dispatchEvent(event);
3901                             });
3902
3903                             var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3904
3905                             var _loop2 = function _loop2(i, total) {
3906                                 dom.fadeOut(controls[i], 200, function () {
3907                                     dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
3908                                     controls[i].style.display = '';
3909                                 });
3910                             };
3911
3912                             for (var i = 0, total = controls.length; i < total; i++) {
3913                                 _loop2(i, total);
3914                             }
3915                         })();
3916                     } else {
3917                         dom.addClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3918                         t.getElement(t.controls).style.display = '';
3919                         t.getElement(t.controls).style.opacity = 0;
3920
3921                         var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3922                         for (var i = 0, total = controls.length; i < total; i++) {
3923                             dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
3924                             controls[i].style.display = '';
3925                         }
3926
3927                         var event = (0, _general.createEvent)('controlshidden', t.getElement(t.container));
3928                         t.getElement(t.container).dispatchEvent(event);
3929                     }
3930
3931                     t.controlsAreVisible = false;
3932                 }
3933             }, {
3934                 key: 'startControlsTimer',
3935                 value: function startControlsTimer(timeout) {
3936                     var t = this;
3937
3938                     timeout = typeof timeout !== 'undefined' ? timeout : t.options.controlsTimeoutDefault;
3939
3940                     t.killControlsTimer('start');
3941
3942                     t.controlsTimer = setTimeout(function () {
3943                         t.hideControls();
3944                         t.killControlsTimer('hide');
3945                     }, timeout);
3946                 }
3947             }, {
3948                 key: 'killControlsTimer',
3949                 value: function killControlsTimer() {
3950                     var t = this;
3951
3952                     if (t.controlsTimer !== null) {
3953                         clearTimeout(t.controlsTimer);
3954                         delete t.controlsTimer;
3955                         t.controlsTimer = null;
3956                     }
3957                 }
3958             }, {
3959                 key: 'disableControls',
3960                 value: function disableControls() {
3961                     var t = this;
3962
3963                     t.killControlsTimer();
3964                     t.controlsEnabled = false;
3965                     t.hideControls(false, true);
3966                 }
3967             }, {
3968                 key: 'enableControls',
3969                 value: function enableControls() {
3970                     var t = this;
3971
3972                     t.controlsEnabled = true;
3973                     t.showControls(false);
3974                 }
3975             }, {
3976                 key: '_setDefaultPlayer',
3977                 value: function _setDefaultPlayer() {
3978                     var t = this;
3979                     if (t.proxy) {
3980                         t.proxy.pause();
3981                     }
3982                     t.proxy = new _default2.default(t);
3983                     t.media.addEventListener('loadedmetadata', function () {
3984                         if (t.getCurrentTime() > 0 && t.currentMediaTime > 0) {
3985                             t.setCurrentTime(t.currentMediaTime);
3986                             if (!_constants.IS_IOS && !_constants.IS_ANDROID) {
3987                                 t.play();
3988                             }
3989                         }
3990                     });
3991                 }
3992             }, {
3993                 key: '_meReady',
3994                 value: function _meReady(media, domNode) {
3995                     var t = this,
3996                         autoplayAttr = domNode.getAttribute('autoplay'),
3997                         autoplay = !(autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false'),
3998                         isNative = media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
3999
4000                     if (t.getElement(t.controls)) {
4001                         t.enableControls();
4002                     }
4003
4004                     if (t.getElement(t.container) && t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-play')) {
4005                         t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-play').style.display = '';
4006                     }
4007
4008                     if (t.created) {
4009                         return;
4010                     }
4011
4012                     t.created = true;
4013                     t.media = media;
4014                     t.domNode = domNode;
4015
4016                     if (!(_constants.IS_ANDROID && t.options.AndroidUseNativeControls) && !(_constants.IS_IPAD && t.options.iPadUseNativeControls) && !(_constants.IS_IPHONE && t.options.iPhoneUseNativeControls)) {
4017                         if (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) {
4018                             if (autoplay && isNative) {
4019                                 t.play();
4020                             }
4021
4022                             if (t.options.success) {
4023
4024                                 if (typeof t.options.success === 'string') {
4025                                     _window2.default[t.options.success](t.media, t.domNode, t);
4026                                 } else {
4027                                     t.options.success(t.media, t.domNode, t);
4028                                 }
4029                             }
4030
4031                             return;
4032                         }
4033
4034                         t.featurePosition = {};
4035
4036                         t._setDefaultPlayer();
4037
4038                         t.buildposter(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4039                         t.buildkeyboard(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4040                         t.buildoverlays(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4041
4042                         if (t.options.useDefaultControls) {
4043                             var defaultControls = ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'];
4044                             t.options.features = defaultControls.concat(t.options.features.filter(function (item) {
4045                                 return defaultControls.indexOf(item) === -1;
4046                             }));
4047                         }
4048
4049                         t.buildfeatures(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4050
4051                         var event = (0, _general.createEvent)('controlsready', t.getElement(t.container));
4052                         t.getElement(t.container).dispatchEvent(event);
4053
4054                         t.setPlayerSize(t.width, t.height);
4055                         t.setControlsSize();
4056
4057                         if (t.isVideo) {
4058                             t.clickToPlayPauseCallback = function () {
4059
4060                                 if (t.options.clickToPlayPause) {
4061                                     var button = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-button'),
4062                                         pressed = button.getAttribute('aria-pressed');
4063
4064                                     if (t.paused && pressed) {
4065                                         t.pause();
4066                                     } else if (t.paused) {
4067                                         t.play();
4068                                     } else {
4069                                         t.pause();
4070                                     }
4071
4072                                     button.setAttribute('aria-pressed', !pressed);
4073                                     t.getElement(t.container).focus();
4074                                 }
4075                             };
4076
4077                             t.createIframeLayer();
4078
4079                             t.media.addEventListener('click', t.clickToPlayPauseCallback);
4080
4081                             if ((_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls) {
4082                                 t.node.addEventListener('touchstart', function () {
4083                                     if (t.controlsAreVisible) {
4084                                         t.hideControls(false);
4085                                     } else {
4086                                         if (t.controlsEnabled) {
4087                                             t.showControls(false);
4088                                         }
4089                                     }
4090                                 }, _constants.SUPPORT_PASSIVE_EVENT ? { passive: true } : false);
4091                             } else {
4092                                 t.getElement(t.container).addEventListener('mouseenter', function () {
4093                                     if (t.controlsEnabled) {
4094                                         if (!t.options.alwaysShowControls) {
4095                                             t.killControlsTimer('enter');
4096                                             t.showControls();
4097                                             t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4098                                         }
4099                                     }
4100                                 });
4101                                 t.getElement(t.container).addEventListener('mousemove', function () {
4102                                     if (t.controlsEnabled) {
4103                                         if (!t.controlsAreVisible) {
4104                                             t.showControls();
4105                                         }
4106                                         if (!t.options.alwaysShowControls) {
4107                                             t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4108                                         }
4109                                     }
4110                                 });
4111                                 t.getElement(t.container).addEventListener('mouseleave', function () {
4112                                     if (t.controlsEnabled) {
4113                                         if (!t.paused && !t.options.alwaysShowControls) {
4114                                             t.startControlsTimer(t.options.controlsTimeoutMouseLeave);
4115                                         }
4116                                     }
4117                                 });
4118                             }
4119
4120                             if (t.options.hideVideoControlsOnLoad) {
4121                                 t.hideControls(false);
4122                             }
4123
4124                             if (t.options.enableAutosize) {
4125                                 t.media.addEventListener('loadedmetadata', function (e) {
4126                                     var target = e !== undefined ? e.detail.target || e.target : t.media;
4127                                     if (t.options.videoHeight <= 0 && !t.domNode.getAttribute('height') && !t.domNode.style.height && target !== null && !isNaN(target.videoHeight)) {
4128                                         t.setPlayerSize(target.videoWidth, target.videoHeight);
4129                                         t.setControlsSize();
4130                                         t.media.setSize(target.videoWidth, target.videoHeight);
4131                                     }
4132                                 });
4133                             }
4134                         }
4135
4136                         t.media.addEventListener('play', function () {
4137                             t.hasFocus = true;
4138
4139                             for (var playerIndex in _mejs2.default.players) {
4140                                 if (_mejs2.default.players.hasOwnProperty(playerIndex)) {
4141                                     var p = _mejs2.default.players[playerIndex];
4142
4143                                     if (p.id !== t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended && p.options.ignorePauseOtherPlayersOption !== true) {
4144                                         p.pause();
4145                                         p.hasFocus = false;
4146                                     }
4147                                 }
4148                             }
4149
4150                             if (!(_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls && t.isVideo) {
4151                                 t.hideControls();
4152                             }
4153                         });
4154
4155                         t.media.addEventListener('ended', function () {
4156                             if (t.options.autoRewind) {
4157                                 try {
4158                                     t.setCurrentTime(0);
4159
4160                                     setTimeout(function () {
4161                                         var loadingElement = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-loading');
4162                                         if (loadingElement && loadingElement.parentNode) {
4163                                             loadingElement.parentNode.style.display = 'none';
4164                                         }
4165                                     }, 20);
4166                                 } catch (exp) {
4167
4168                                 }
4169                             }
4170
4171                             if (typeof t.media.renderer.stop === 'function') {
4172                                 t.media.renderer.stop();
4173                             } else {
4174                                 t.pause();
4175                             }
4176
4177                             if (t.setProgressRail) {
4178                                 t.setProgressRail();
4179                             }
4180                             if (t.setCurrentRail) {
4181                                 t.setCurrentRail();
4182                             }
4183
4184                             if (t.options.loop) {
4185                                 t.play();
4186                             } else if (!t.options.alwaysShowControls && t.controlsEnabled) {
4187                                 t.showControls();
4188                             }
4189                         });
4190
4191                         t.media.addEventListener('loadedmetadata', function () {
4192
4193                             (0, _time.calculateTimeFormat)(t.getDuration(), t.options, t.options.framesPerSecond || 25);
4194
4195                             if (t.updateDuration) {
4196                                 t.updateDuration();
4197                             }
4198                             if (t.updateCurrent) {
4199                                 t.updateCurrent();
4200                             }
4201
4202                             if (!t.isFullScreen) {
4203                                 t.setPlayerSize(t.width, t.height);
4204                                 t.setControlsSize();
4205                             }
4206                         });
4207
4208                         var duration = null;
4209                         t.media.addEventListener('timeupdate', function () {
4210                             if (!isNaN(t.getDuration()) && duration !== t.getDuration()) {
4211                                 duration = t.getDuration();
4212                                 (0, _time.calculateTimeFormat)(duration, t.options, t.options.framesPerSecond || 25);
4213
4214                                 if (t.updateDuration) {
4215                                     t.updateDuration();
4216                                 }
4217                                 if (t.updateCurrent) {
4218                                     t.updateCurrent();
4219                                 }
4220
4221                                 t.setControlsSize();
4222                             }
4223                         });
4224
4225                         t.getElement(t.container).addEventListener('click', function (e) {
4226                             dom.addClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
4227                         });
4228
4229                         t.getElement(t.container).addEventListener('focusin', function (e) {
4230                             dom.removeClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
4231                             if (t.isVideo && !_constants.IS_ANDROID && !_constants.IS_IOS && t.controlsEnabled && !t.options.alwaysShowControls) {
4232                                 t.killControlsTimer('enter');
4233                                 t.showControls();
4234                                 t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4235                             }
4236                         });
4237
4238                         t.getElement(t.container).addEventListener('focusout', function (e) {
4239                             setTimeout(function () {
4240                                 if (e.relatedTarget) {
4241                                     if (t.keyboardAction && !e.relatedTarget.closest('.' + t.options.classPrefix + 'container')) {
4242                                         t.keyboardAction = false;
4243                                         if (t.isVideo && !t.options.alwaysShowControls && !t.paused) {
4244                                             t.startControlsTimer(t.options.controlsTimeoutMouseLeave);
4245                                         }
4246                                     }
4247                                 }
4248                             }, 0);
4249                         });
4250
4251                         setTimeout(function () {
4252                             t.setPlayerSize(t.width, t.height);
4253                             t.setControlsSize();
4254                         }, 0);
4255
4256                         t.globalResizeCallback = function () {
4257                             if (!(t.isFullScreen || _constants.HAS_TRUE_NATIVE_FULLSCREEN && _document2.default.webkitIsFullScreen)) {
4258                                 t.setPlayerSize(t.width, t.height);
4259                             }
4260
4261                             t.setControlsSize();
4262                         };
4263
4264                         t.globalBind('resize', t.globalResizeCallback);
4265                     }
4266
4267                     if (autoplay && isNative) {
4268                         t.play();
4269                     }
4270
4271                     if (t.options.success) {
4272                         if (typeof t.options.success === 'string') {
4273                             _window2.default[t.options.success](t.media, t.domNode, t);
4274                         } else {
4275                             t.options.success(t.media, t.domNode, t);
4276                         }
4277                     }
4278                 }
4279             }, {
4280                 key: '_handleError',
4281                 value: function _handleError(e, media, node) {
4282                     var t = this,
4283                         play = t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-play');
4284
4285                     if (play) {
4286                         play.style.display = 'none';
4287                     }
4288
4289                     if (t.options.error) {
4290                         t.options.error(e, media, node);
4291                     }
4292
4293                     if (t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'cannotplay')) {
4294                         t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'cannotplay').remove();
4295                     }
4296
4297                     var errorContainer = _document2.default.createElement('div');
4298                     errorContainer.className = t.options.classPrefix + 'cannotplay';
4299                     errorContainer.style.width = '100%';
4300                     errorContainer.style.height = '100%';
4301
4302                     var errorContent = typeof t.options.customError === 'function' ? t.options.customError(t.media, t.media.originalNode) : t.options.customError,
4303                         imgError = '';
4304
4305                     if (!errorContent) {
4306                         var poster = t.media.originalNode.getAttribute('poster');
4307                         if (poster) {
4308                             imgError = '<img src="' + poster + '" alt="' + _mejs2.default.i18n.t('mejs.download-file') + '">';
4309                         }
4310
4311                         if (e.message) {
4312                             errorContent = '<p>' + e.message + '</p>';
4313                         }
4314
4315                         if (e.urls) {
4316                             for (var i = 0, total = e.urls.length; i < total; i++) {
4317                                 var url = e.urls[i];
4318                                 errorContent += '<a href="' + url.src + '" data-type="' + url.type + '"><span>' + _mejs2.default.i18n.t('mejs.download-file') + ': ' + url.src + '</span></a>';
4319                             }
4320                         }
4321                     }
4322
4323                     if (errorContent && t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error')) {
4324                         errorContainer.innerHTML = errorContent;
4325                         t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error').innerHTML = '' + imgError + errorContainer.outerHTML;
4326                         t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error').parentNode.style.display = 'block';
4327                     }
4328
4329                     if (t.controlsEnabled) {
4330                         t.disableControls();
4331                     }
4332                 }
4333             }, {
4334                 key: 'setPlayerSize',
4335                 value: function setPlayerSize(width, height) {
4336                     var t = this;
4337
4338                     if (!t.options.setDimensions) {
4339                         return false;
4340                     }
4341
4342                     if (typeof width !== 'undefined') {
4343                         t.width = width;
4344                     }
4345
4346                     if (typeof height !== 'undefined') {
4347                         t.height = height;
4348                     }
4349
4350                     switch (t.options.stretching) {
4351                         case 'fill':
4352                             if (t.isVideo) {
4353                                 t.setFillMode();
4354                             } else {
4355                                 t.setDimensions(t.width, t.height);
4356                             }
4357                             break;
4358                         case 'responsive':
4359                             t.setResponsiveMode();
4360                             break;
4361                         case 'none':
4362                             t.setDimensions(t.width, t.height);
4363                             break;
4364
4365                         default:
4366                             if (t.hasFluidMode() === true) {
4367                                 t.setResponsiveMode();
4368                             } else {
4369                                 t.setDimensions(t.width, t.height);
4370                             }
4371                             break;
4372                     }
4373                 }
4374             }, {
4375                 key: 'hasFluidMode',
4376                 value: function hasFluidMode() {
4377                     var t = this;
4378
4379                     return t.height.toString().indexOf('%') !== -1 || t.node && t.node.style.maxWidth && t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width || t.node && t.node.currentStyle && t.node.currentStyle.maxWidth === '100%';
4380                 }
4381             }, {
4382                 key: 'setResponsiveMode',
4383                 value: function setResponsiveMode() {
4384                     var t = this,
4385                         parent = function () {
4386
4387                             var parentEl = void 0,
4388                                 el = t.getElement(t.container);
4389
4390                             while (el) {
4391                                 try {
4392                                     if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) {
4393                                         return _window2.default.frameElement;
4394                                     } else {
4395                                         parentEl = el.parentElement;
4396                                     }
4397                                 } catch (e) {
4398                                     parentEl = el.parentElement;
4399                                 }
4400
4401                                 if (parentEl && dom.visible(parentEl)) {
4402                                     return parentEl;
4403                                 }
4404                                 el = parentEl;
4405                             }
4406
4407                             return null;
4408                         }(),
4409                         parentStyles = parent ? getComputedStyle(parent, null) : getComputedStyle(_document2.default.body, null),
4410                         nativeWidth = function () {
4411                             if (t.isVideo) {
4412                                 if (t.node.videoWidth && t.node.videoWidth > 0) {
4413                                     return t.node.videoWidth;
4414                                 } else if (t.node.getAttribute('width')) {
4415                                     return t.node.getAttribute('width');
4416                                 } else {
4417                                     return t.options.defaultVideoWidth;
4418                                 }
4419                             } else {
4420                                 return t.options.defaultAudioWidth;
4421                             }
4422                         }(),
4423                         nativeHeight = function () {
4424                             if (t.isVideo) {
4425                                 if (t.node.videoHeight && t.node.videoHeight > 0) {
4426                                     return t.node.videoHeight;
4427                                 } else if (t.node.getAttribute('height')) {
4428                                     return t.node.getAttribute('height');
4429                                 } else {
4430                                     return t.options.defaultVideoHeight;
4431                                 }
4432                             } else {
4433                                 return t.options.defaultAudioHeight;
4434                             }
4435                         }(),
4436                         aspectRatio = function () {
4437                             var ratio = 1;
4438                             if (!t.isVideo) {
4439                                 return ratio;
4440                             }
4441
4442                             if (t.node.videoWidth && t.node.videoWidth > 0 && t.node.videoHeight && t.node.videoHeight > 0) {
4443                                 ratio = t.height >= t.width ? t.node.videoWidth / t.node.videoHeight : t.node.videoHeight / t.node.videoWidth;
4444                             } else {
4445                                 ratio = t.initialAspectRatio;
4446                             }
4447
4448                             if (isNaN(ratio) || ratio < 0.01 || ratio > 100) {
4449                                 ratio = 1;
4450                             }
4451
4452                             return ratio;
4453                         }(),
4454                         parentHeight = parseFloat(parentStyles.height);
4455
4456                     var newHeight = void 0,
4457                         parentWidth = parseFloat(parentStyles.width);
4458
4459                     if (t.isVideo) {
4460                         if (t.height === '100%') {
4461                             newHeight = parseFloat(parentWidth * nativeHeight / nativeWidth, 10);
4462                         } else {
4463                             newHeight = t.height >= t.width ? parseFloat(parentWidth / aspectRatio, 10) : parseFloat(parentWidth * aspectRatio, 10);
4464                         }
4465                     } else {
4466                         newHeight = nativeHeight;
4467                     }
4468
4469                     if (isNaN(newHeight)) {
4470                         newHeight = parentHeight;
4471                     }
4472
4473                     if (t.getElement(t.container).parentNode.length > 0 && t.getElement(t.container).parentNode.tagName.toLowerCase() === 'body') {
4474                         parentWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth;
4475                         newHeight = _window2.default.innerHeight || _document2.default.documentElement.clientHeight || _document2.default.body.clientHeight;
4476                     }
4477
4478                     if (newHeight && parentWidth) {
4479                         t.getElement(t.container).style.width = parentWidth + 'px';
4480                         t.getElement(t.container).style.height = newHeight + 'px';
4481
4482                         t.node.style.width = '100%';
4483                         t.node.style.height = '100%';
4484
4485                         if (t.isVideo && t.media.setSize) {
4486                             t.media.setSize(parentWidth, newHeight);
4487                         }
4488
4489                         var layerChildren = t.getElement(t.layers).children;
4490                         for (var i = 0, total = layerChildren.length; i < total; i++) {
4491                             layerChildren[i].style.width = '100%';
4492                             layerChildren[i].style.height = '100%';
4493                         }
4494                     }
4495                 }
4496             }, {
4497                 key: 'setFillMode',
4498                 value: function setFillMode() {
4499                     var t = this;
4500                     var isIframe = _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null;
4501                     var parent = function () {
4502                         var parentEl = void 0,
4503                             el = t.getElement(t.container);
4504
4505                         while (el) {
4506                             try {
4507                                 if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) {
4508                                     return _window2.default.frameElement;
4509                                 } else {
4510                                     parentEl = el.parentElement;
4511                                 }
4512                             } catch (e) {
4513                                 parentEl = el.parentElement;
4514                             }
4515
4516                             if (parentEl && dom.visible(parentEl)) {
4517                                 return parentEl;
4518                             }
4519                             el = parentEl;
4520                         }
4521
4522                         return null;
4523                     }();
4524                     var parentStyles = parent ? getComputedStyle(parent, null) : getComputedStyle(_document2.default.body, null);
4525
4526                     if (t.node.style.height !== 'none' && t.node.style.height !== t.height) {
4527                         t.node.style.height = 'auto';
4528                     }
4529                     if (t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width) {
4530                         t.node.style.maxWidth = 'none';
4531                     }
4532
4533                     if (t.node.style.maxHeight !== 'none' && t.node.style.maxHeight !== t.height) {
4534                         t.node.style.maxHeight = 'none';
4535                     }
4536
4537                     if (t.node.currentStyle) {
4538                         if (t.node.currentStyle.height === '100%') {
4539                             t.node.currentStyle.height = 'auto';
4540                         }
4541                         if (t.node.currentStyle.maxWidth === '100%') {
4542                             t.node.currentStyle.maxWidth = 'none';
4543                         }
4544                         if (t.node.currentStyle.maxHeight === '100%') {
4545                             t.node.currentStyle.maxHeight = 'none';
4546                         }
4547                     }
4548
4549                     if (!isIframe && !parseFloat(parentStyles.width)) {
4550                         parent.style.width = t.media.offsetWidth + 'px';
4551                     }
4552
4553                     if (!isIframe && !parseFloat(parentStyles.height)) {
4554                         parent.style.height = t.media.offsetHeight + 'px';
4555                     }
4556
4557                     parentStyles = getComputedStyle(parent);
4558
4559                     var parentWidth = parseFloat(parentStyles.width),
4560                         parentHeight = parseFloat(parentStyles.height);
4561
4562                     t.setDimensions('100%', '100%');
4563
4564                     var poster = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster>img');
4565                     if (poster) {
4566                         poster.style.display = '';
4567                     }
4568
4569                     var targetElement = t.getElement(t.container).querySelectorAll('object, embed, iframe, video'),
4570                         initHeight = t.height,
4571                         initWidth = t.width,
4572                         scaleX1 = parentWidth,
4573                         scaleY1 = initHeight * parentWidth / initWidth,
4574                         scaleX2 = initWidth * parentHeight / initHeight,
4575                         scaleY2 = parentHeight,
4576                         bScaleOnWidth = scaleX2 > parentWidth === false,
4577                         finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2),
4578                         finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2),
4579                         width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px',
4580                         height = bScaleOnWidth ? finalHeight + 'px' : parentHeight + 'px';
4581
4582                     for (var i = 0, total = targetElement.length; i < total; i++) {
4583                         targetElement[i].style.height = height;
4584                         targetElement[i].style.width = width;
4585                         if (t.media.setSize) {
4586                             t.media.setSize(width, height);
4587                         }
4588
4589                         targetElement[i].style.marginLeft = Math.floor((parentWidth - finalWidth) / 2) + 'px';
4590                         targetElement[i].style.marginTop = 0;
4591                     }
4592                 }
4593             }, {
4594                 key: 'setDimensions',
4595                 value: function setDimensions(width, height) {
4596                     var t = this;
4597
4598                     width = (0, _general.isString)(width) && width.indexOf('%') > -1 ? width : parseFloat(width) + 'px';
4599                     height = (0, _general.isString)(height) && height.indexOf('%') > -1 ? height : parseFloat(height) + 'px';
4600
4601                     t.getElement(t.container).style.width = width;
4602                     t.getElement(t.container).style.height = height;
4603
4604                     var layers = t.getElement(t.layers).children;
4605                     for (var i = 0, total = layers.length; i < total; i++) {
4606                         layers[i].style.width = width;
4607                         layers[i].style.height = height;
4608                     }
4609                 }
4610             }, {
4611                 key: 'setControlsSize',
4612                 value: function setControlsSize() {
4613                     var t = this;
4614
4615                     if (!dom.visible(t.getElement(t.container))) {
4616                         return;
4617                     }
4618
4619                     if (t.rail && dom.visible(t.rail)) {
4620                         var totalStyles = t.total ? getComputedStyle(t.total, null) : null,
4621                             totalMargin = totalStyles ? parseFloat(totalStyles.marginLeft) + parseFloat(totalStyles.marginRight) : 0,
4622                             railStyles = getComputedStyle(t.rail),
4623                             railMargin = parseFloat(railStyles.marginLeft) + parseFloat(railStyles.marginRight);
4624
4625                         var siblingsWidth = 0;
4626
4627                         var siblings = dom.siblings(t.rail, function (el) {
4628                             return el !== t.rail;
4629                         }),
4630                             total = siblings.length;
4631                         for (var i = 0; i < total; i++) {
4632                             siblingsWidth += siblings[i].offsetWidth;
4633                         }
4634
4635                         siblingsWidth += totalMargin + (totalMargin === 0 ? railMargin * 2 : railMargin) + 1;
4636
4637                         t.getElement(t.container).style.minWidth = siblingsWidth + 'px';
4638
4639                         var event = (0, _general.createEvent)('controlsresize', t.getElement(t.container));
4640                         t.getElement(t.container).dispatchEvent(event);
4641                     } else {
4642                         var children = t.getElement(t.controls).children;
4643                         var minWidth = 0;
4644
4645                         for (var _i = 0, _total = children.length; _i < _total; _i++) {
4646                             minWidth += children[_i].offsetWidth;
4647                         }
4648
4649                         t.getElement(t.container).style.minWidth = minWidth + 'px';
4650                     }
4651                 }
4652             }, {
4653                 key: 'addControlElement',
4654                 value: function addControlElement(element, key) {
4655
4656                     var t = this;
4657
4658                     if (t.featurePosition[key] !== undefined) {
4659                         var child = t.getElement(t.controls).children[t.featurePosition[key] - 1];
4660                         child.parentNode.insertBefore(element, child.nextSibling);
4661                     } else {
4662                         t.getElement(t.controls).appendChild(element);
4663                         var children = t.getElement(t.controls).children;
4664                         for (var i = 0, total = children.length; i < total; i++) {
4665                             if (element === children[i]) {
4666                                 t.featurePosition[key] = i;
4667                                 break;
4668                             }
4669                         }
4670                     }
4671                 }
4672             }, {
4673                 key: 'createIframeLayer',
4674                 value: function createIframeLayer() {
4675                     var t = this;
4676
vendor: 46,852 bytes, lines 4677-5739
4677                     if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.indexOf('iframe') > -1 && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) {
4678
4679                         var layer = _document2.default.createElement('div'),
4680                             target = _document2.default.getElementById(t.media.id + '_' + t.media.rendererName);
4681
4682                         layer.id = t.media.id + '-iframe-overlay';
4683                         layer.className = t.options.classPrefix + 'iframe-overlay';
4684                         layer.addEventListener('click', function (e) {
4685                             if (t.options.clickToPlayPause) {
4686                                 if (t.paused) {
4687                                     t.play();
4688                                 } else {
4689                                     t.pause();
4690                                 }
4691
4692                                 e.preventDefault();
4693                                 e.stopPropagation();
4694                             }
4695                         });
4696
4697                         target.parentNode.insertBefore(layer, target);
4698                     }
4699                 }
4700             }, {
4701                 key: 'resetSize',
4702                 value: function resetSize() {
4703                     var t = this;
4704
4705                     setTimeout(function () {
4706                         t.setPlayerSize(t.width, t.height);
4707                         t.setControlsSize();
4708                     }, 50);
4709                 }
4710             }, {
4711                 key: 'setPoster',
4712                 value: function setPoster(url) {
4713                     var t = this;
4714
4715                     if (t.getElement(t.container)) {
4716                         var posterDiv = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster');
4717
4718                         if (!posterDiv) {
4719                             posterDiv = _document2.default.createElement('div');
4720                             posterDiv.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';
4721                             t.getElement(t.layers).appendChild(posterDiv);
4722                         }
4723
4724                         var posterImg = posterDiv.querySelector('img');
4725
4726                         if (!posterImg && url) {
4727                             posterImg = _document2.default.createElement('img');
4728                             posterImg.className = t.options.classPrefix + 'poster-img';
4729                             posterImg.width = '100%';
4730                             posterImg.height = '100%';
4731                             posterDiv.style.display = '';
4732                             posterDiv.appendChild(posterImg);
4733                         }
4734
4735                         if (url) {
4736                             posterImg.setAttribute('src', url);
4737                             posterDiv.style.backgroundImage = 'url("' + url + '")';
4738                             posterDiv.style.display = '';
4739                         } else if (posterImg) {
4740                             posterDiv.style.backgroundImage = 'none';
4741                             posterDiv.style.display = 'none';
4742                             posterImg.remove();
4743                         } else {
4744                             posterDiv.style.display = 'none';
4745                         }
4746                     } else if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls || _constants.IS_ANDROID && t.options.AndroidUseNativeControls) {
4747                         t.media.originalNode.poster = url;
4748                     }
4749                 }
4750             }, {
4751                 key: 'changeSkin',
4752                 value: function changeSkin(className) {
4753                     var t = this;
4754
4755                     t.getElement(t.container).className = t.options.classPrefix + 'container ' + className;
4756                     t.setPlayerSize(t.width, t.height);
4757                     t.setControlsSize();
4758                 }
4759             }, {
4760                 key: 'globalBind',
4761                 value: function globalBind(events, callback) {
4762                     var t = this,
4763                         doc = t.node ? t.node.ownerDocument : _document2.default;
4764
4765                     events = (0, _general.splitEvents)(events, t.id);
4766                     if (events.d) {
4767                         var eventList = events.d.split(' ');
4768                         for (var i = 0, total = eventList.length; i < total; i++) {
4769                             eventList[i].split('.').reduce(function (part, e) {
4770                                 doc.addEventListener(e, callback, false);
4771                                 return e;
4772                             }, '');
4773                         }
4774                     }
4775                     if (events.w) {
4776                         var _eventList = events.w.split(' ');
4777                         for (var _i2 = 0, _total2 = _eventList.length; _i2 < _total2; _i2++) {
4778                             _eventList[_i2].split('.').reduce(function (part, e) {
4779                                 _window2.default.addEventListener(e, callback, false);
4780                                 return e;
4781                             }, '');
4782                         }
4783                     }
4784                 }
4785             }, {
4786                 key: 'globalUnbind',
4787                 value: function globalUnbind(events, callback) {
4788                     var t = this,
4789                         doc = t.node ? t.node.ownerDocument : _document2.default;
4790
4791                     events = (0, _general.splitEvents)(events, t.id);
4792                     if (events.d) {
4793                         var eventList = events.d.split(' ');
4794                         for (var i = 0, total = eventList.length; i < total; i++) {
4795                             eventList[i].split('.').reduce(function (part, e) {
4796                                 doc.removeEventListener(e, callback, false);
4797                                 return e;
4798                             }, '');
4799                         }
4800                     }
4801                     if (events.w) {
4802                         var _eventList2 = events.w.split(' ');
4803                         for (var _i3 = 0, _total3 = _eventList2.length; _i3 < _total3; _i3++) {
4804                             _eventList2[_i3].split('.').reduce(function (part, e) {
4805                                 _window2.default.removeEventListener(e, callback, false);
4806                                 return e;
4807                             }, '');
4808                         }
4809                     }
4810                 }
4811             }, {
4812                 key: 'buildfeatures',
4813                 value: function buildfeatures(player, controls, layers, media) {
4814                     var t = this;
4815
4816                     for (var i = 0, total = t.options.features.length; i < total; i++) {
4817                         var feature = t.options.features[i];
4818                         if (t['build' + feature]) {
4819                             try {
4820                                 t['build' + feature](player, controls, layers, media);
4821                             } catch (e) {
4822                                 console.error('error building ' + feature, e);
4823                             }
4824                         }
4825                     }
4826                 }
4827             }, {
4828                 key: 'buildposter',
4829                 value: function buildposter(player, controls, layers, media) {
4830                     var t = this,
4831                         poster = _document2.default.createElement('div');
4832
4833                     poster.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';
4834                     layers.appendChild(poster);
4835
4836                     var posterUrl = media.originalNode.getAttribute('poster');
4837
4838                     if (player.options.poster !== '') {
4839                         if (posterUrl && _constants.IS_IOS) {
4840                             media.originalNode.removeAttribute('poster');
4841                         }
4842                         posterUrl = player.options.poster;
4843                     }
4844
4845                     if (posterUrl) {
4846                         t.setPoster(posterUrl);
4847                     } else if (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') {
4848                         t.setPoster(t.media.renderer.getPosterUrl());
4849                     } else {
4850                         poster.style.display = 'none';
4851                     }
4852
4853                     media.addEventListener('play', function () {
4854                         poster.style.display = 'none';
4855                     });
4856
4857                     media.addEventListener('playing', function () {
4858                         poster.style.display = 'none';
4859                     });
4860
4861                     if (player.options.showPosterWhenEnded && player.options.autoRewind) {
4862                         media.addEventListener('ended', function () {
4863                             poster.style.display = '';
4864                         });
4865                     }
4866
4867                     media.addEventListener('error', function () {
4868                         poster.style.display = 'none';
4869                     });
4870
4871                     if (player.options.showPosterWhenPaused) {
4872                         media.addEventListener('pause', function () {
4873                             if (!player.ended) {
4874                                 poster.style.display = '';
4875                             }
4876                         });
4877                     }
4878                 }
4879             }, {
4880                 key: 'buildoverlays',
4881                 value: function buildoverlays(player, controls, layers, media) {
4882
4883                     if (!player.isVideo) {
4884                         return;
4885                     }
4886
4887                     var t = this,
4888                         loading = _document2.default.createElement('div'),
4889                         error = _document2.default.createElement('div'),
4890                         bigPlay = _document2.default.createElement('div');
4891
4892                     loading.style.display = 'none';
4893                     loading.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
4894                     loading.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-loading">' + ('<span class="' + t.options.classPrefix + 'overlay-loading-bg-img"></span>') + '</div>';
4895                     layers.appendChild(loading);
4896
4897                     error.style.display = 'none';
4898                     error.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
4899                     error.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-error"></div>';
4900                     layers.appendChild(error);
4901
4902                     bigPlay.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer ' + t.options.classPrefix + 'overlay-play';
4903                     bigPlay.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-button" role="button" tabindex="0" ' + ('aria-label="' + _i18n2.default.t('mejs.play') + '" aria-pressed="false"></div>');
4904                     bigPlay.addEventListener('click', function () {
4905                         if (t.options.clickToPlayPause) {
4906
4907                             var button = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-button'),
4908                                 pressed = button.getAttribute('aria-pressed');
4909
4910                             if (t.paused) {
4911                                 t.play();
4912                             } else {
4913                                 t.pause();
4914                             }
4915
4916                             button.setAttribute('aria-pressed', !!pressed);
4917                             t.getElement(t.container).focus();
4918                         }
4919                     });
4920
4921                     bigPlay.addEventListener('keydown', function (e) {
4922                         var keyPressed = e.keyCode || e.which || 0;
4923
4924                         if (keyPressed === 13 || _constants.IS_FIREFOX && keyPressed === 32) {
4925                             var event = (0, _general.createEvent)('click', bigPlay);
4926                             bigPlay.dispatchEvent(event);
4927                             return false;
4928                         }
4929                     });
4930
4931                     layers.appendChild(bigPlay);
4932
4933                     if (t.media.rendererName !== null && (/(youtube|facebook)/i.test(t.media.rendererName) && !(t.media.originalNode.getAttribute('poster') || player.options.poster || typeof t.media.renderer.getPosterUrl === 'function' && t.media.renderer.getPosterUrl()) || _constants.IS_STOCK_ANDROID || t.media.originalNode.getAttribute('autoplay'))) {
4934                         bigPlay.style.display = 'none';
4935                     }
4936
4937                     var hasError = false;
4938
4939                     media.addEventListener('play', function () {
4940                         bigPlay.style.display = 'none';
4941                         loading.style.display = 'none';
4942                         error.style.display = 'none';
4943                         hasError = false;
4944                     });
4945                     media.addEventListener('playing', function () {
4946                         bigPlay.style.display = 'none';
4947                         loading.style.display = 'none';
4948                         error.style.display = 'none';
4949                         hasError = false;
4950                     });
4951                     media.addEventListener('seeking', function () {
4952                         bigPlay.style.display = 'none';
4953                         loading.style.display = '';
4954                         hasError = false;
4955                     });
4956                     media.addEventListener('seeked', function () {
4957                         bigPlay.style.display = t.paused && !_constants.IS_STOCK_ANDROID ? '' : 'none';
4958                         loading.style.display = 'none';
4959                         hasError = false;
4960                     });
4961                     media.addEventListener('pause', function () {
4962                         loading.style.display = 'none';
4963                         if (!_constants.IS_STOCK_ANDROID && !hasError) {
4964                             bigPlay.style.display = '';
4965                         }
4966                         hasError = false;
4967                     });
4968                     media.addEventListener('waiting', function () {
4969                         loading.style.display = '';
4970                         hasError = false;
4971                     });
4972
4973                     media.addEventListener('loadeddata', function () {
4974                         loading.style.display = '';
4975
4976                         if (_constants.IS_ANDROID) {
4977                             media.canplayTimeout = setTimeout(function () {
4978                                 if (_document2.default.createEvent) {
4979                                     var evt = _document2.default.createEvent('HTMLEvents');
4980                                     evt.initEvent('canplay', true, true);
4981                                     return media.dispatchEvent(evt);
4982                                 }
4983                             }, 300);
4984                         }
4985                         hasError = false;
4986                     });
4987                     media.addEventListener('canplay', function () {
4988                         loading.style.display = 'none';
4989
4990                         clearTimeout(media.canplayTimeout);
4991                         hasError = false;
4992                     });
4993
4994                     media.addEventListener('error', function (e) {
4995                         t._handleError(e, t.media, t.node);
4996                         loading.style.display = 'none';
4997                         bigPlay.style.display = 'none';
4998                         hasError = true;
4999                     });
5000
5001                     media.addEventListener('loadedmetadata', function () {
5002                         if (!t.controlsEnabled) {
5003                             t.enableControls();
5004                         }
5005                     });
5006
5007                     media.addEventListener('keydown', function (e) {
5008                         t.onkeydown(player, media, e);
5009                         hasError = false;
5010                     });
5011                 }
5012             }, {
5013                 key: 'buildkeyboard',
5014                 value: function buildkeyboard(player, controls, layers, media) {
5015
5016                     var t = this;
5017
5018                     t.getElement(t.container).addEventListener('keydown', function () {
5019                         t.keyboardAction = true;
5020                     });
5021
5022                     t.globalKeydownCallback = function (event) {
5023                         var container = _document2.default.activeElement.closest('.' + t.options.classPrefix + 'container'),
5024                             target = t.media.closest('.' + t.options.classPrefix + 'container');
5025                         t.hasFocus = !!(container && target && container.id === target.id);
5026                         return t.onkeydown(player, media, event);
5027                     };
5028
5029                     t.globalClickCallback = function (event) {
5030                         t.hasFocus = !!event.target.closest('.' + t.options.classPrefix + 'container');
5031                     };
5032
5033                     t.globalBind('keydown', t.globalKeydownCallback);
5034
5035                     t.globalBind('click', t.globalClickCallback);
5036                 }
5037             }, {
5038                 key: 'onkeydown',
5039                 value: function onkeydown(player, media, e) {
5040
5041                     if (player.hasFocus && player.options.enableKeyboard) {
5042                         for (var i = 0, total = player.options.keyActions.length; i < total; i++) {
5043                             var keyAction = player.options.keyActions[i];
5044
5045                             for (var j = 0, jl = keyAction.keys.length; j < jl; j++) {
5046                                 if (e.keyCode === keyAction.keys[j]) {
5047                                     keyAction.action(player, media, e.keyCode, e);
5048                                     e.preventDefault();
5049                                     e.stopPropagation();
5050                                     return;
5051                                 }
5052                             }
5053                         }
5054                     }
5055
5056                     return true;
5057                 }
5058             }, {
5059                 key: 'play',
5060                 value: function play() {
5061                     this.proxy.play();
5062                 }
5063             }, {
5064                 key: 'pause',
5065                 value: function pause() {
5066                     this.proxy.pause();
5067                 }
5068             }, {
5069                 key: 'load',
5070                 value: function load() {
5071                     this.proxy.load();
5072                 }
5073             }, {
5074                 key: 'setCurrentTime',
5075                 value: function setCurrentTime(time) {
5076                     this.proxy.setCurrentTime(time);
5077                 }
5078             }, {
5079                 key: 'getCurrentTime',
5080                 value: function getCurrentTime() {
5081                     return this.proxy.currentTime;
5082                 }
5083             }, {
5084                 key: 'getDuration',
5085                 value: function getDuration() {
5086                     return this.proxy.duration;
5087                 }
5088             }, {
5089                 key: 'setVolume',
5090                 value: function setVolume(volume) {
5091                     this.proxy.volume = volume;
5092                 }
5093             }, {
5094                 key: 'getVolume',
5095                 value: function getVolume() {
5096                     return this.proxy.getVolume();
5097                 }
5098             }, {
5099                 key: 'setMuted',
5100                 value: function setMuted(value) {
5101                     this.proxy.setMuted(value);
5102                 }
5103             }, {
5104                 key: 'setSrc',
5105                 value: function setSrc(src) {
5106                     if (!this.controlsEnabled) {
5107                         this.enableControls();
5108                     }
5109                     this.proxy.setSrc(src);
5110                 }
5111             }, {
5112                 key: 'getSrc',
5113                 value: function getSrc() {
5114                     return this.proxy.getSrc();
5115                 }
5116             }, {
5117                 key: 'canPlayType',
5118                 value: function canPlayType(type) {
5119                     return this.proxy.canPlayType(type);
5120                 }
5121             }, {
5122                 key: 'remove',
5123                 value: function remove() {
5124                     var t = this,
5125                         rendererName = t.media.rendererName,
5126                         src = t.media.originalNode.src;
5127
5128                     for (var featureIndex in t.options.features) {
5129                         var feature = t.options.features[featureIndex];
5130                         if (t['clean' + feature]) {
5131                             try {
5132                                 t['clean' + feature](t, t.getElement(t.layers), t.getElement(t.controls), t.media);
5133                             } catch (e) {
5134                                 console.error('error cleaning ' + feature, e);
5135                             }
5136                         }
5137                     }
5138
5139                     var nativeWidth = t.node.getAttribute('width'),
5140                         nativeHeight = t.node.getAttribute('height');
5141
5142                     if (nativeWidth) {
5143                         if (nativeWidth.indexOf('%') === -1) {
5144                             nativeWidth = nativeWidth + 'px';
5145                         }
5146                     } else {
5147                         nativeWidth = 'auto';
5148                     }
5149
5150                     if (nativeHeight) {
5151                         if (nativeHeight.indexOf('%') === -1) {
5152                             nativeHeight = nativeHeight + 'px';
5153                         }
5154                     } else {
5155                         nativeHeight = 'auto';
5156                     }
5157
5158                     t.node.style.width = nativeWidth;
5159                     t.node.style.height = nativeHeight;
5160
5161                     t.setPlayerSize(0, 0);
5162
5163                     if (!t.isDynamic) {
5164                         (function () {
5165                             t.node.setAttribute('controls', true);
5166                             t.node.setAttribute('id', t.node.getAttribute('id').replace('_' + rendererName, '').replace('_from_mejs', ''));
5167                             var poster = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster>img');
5168                             if (poster) {
5169                                 t.node.setAttribute('poster', poster.src);
5170                             }
5171
5172                             delete t.node.autoplay;
5173
5174                             t.node.setAttribute('src', '');
5175                             if (t.media.canPlayType((0, _media.getTypeFromFile)(src)) !== '') {
5176                                 t.node.setAttribute('src', src);
5177                             }
5178
5179                             if (rendererName && rendererName.indexOf('iframe') > -1) {
5180                                 var layer = _document2.default.getElementById(t.media.id + '-iframe-overlay');
5181                                 layer.remove();
5182                             }
5183
5184                             var node = t.node.cloneNode();
5185                             node.style.display = '';
5186                             t.getElement(t.container).parentNode.insertBefore(node, t.getElement(t.container));
5187                             t.node.remove();
5188
5189                             if (t.mediaFiles) {
5190                                 for (var i = 0, total = t.mediaFiles.length; i < total; i++) {
5191                                     var source = _document2.default.createElement('source');
5192                                     source.setAttribute('src', t.mediaFiles[i].src);
5193                                     source.setAttribute('type', t.mediaFiles[i].type);
5194                                     node.appendChild(source);
5195                                 }
5196                             }
5197                             if (t.trackFiles) {
5198                                 var _loop3 = function _loop3(_i4, _total4) {
5199                                     var track = t.trackFiles[_i4];
5200                                     var newTrack = _document2.default.createElement('track');
5201                                     newTrack.kind = track.kind;
5202                                     newTrack.label = track.label;
5203                                     newTrack.srclang = track.srclang;
5204                                     newTrack.src = track.src;
5205
5206                                     node.appendChild(newTrack);
5207                                     newTrack.addEventListener('load', function () {
5208                                         this.mode = 'showing';
5209                                         node.textTracks[_i4].mode = 'showing';
5210                                     });
5211                                 };
5212
5213                                 for (var _i4 = 0, _total4 = t.trackFiles.length; _i4 < _total4; _i4++) {
5214                                     _loop3(_i4, _total4);
5215                                 }
5216                             }
5217
5218                             delete t.node;
5219                             delete t.mediaFiles;
5220                             delete t.trackFiles;
5221                         })();
5222                     } else {
5223                         t.getElement(t.container).parentNode.insertBefore(t.node, t.getElement(t.container));
5224                     }
5225
5226                     if (t.media.renderer && typeof t.media.renderer.destroy === 'function') {
5227                         t.media.renderer.destroy();
5228                     }
5229
5230                     delete _mejs2.default.players[t.id];
5231
5232                     if (_typeof(t.getElement(t.container)) === 'object') {
5233                         var offscreen = t.getElement(t.container).parentNode.querySelector('.' + t.options.classPrefix + 'offscreen');
5234                         offscreen.remove();
5235                         t.getElement(t.container).remove();
5236                     }
5237                     t.globalUnbind('resize', t.globalResizeCallback);
5238                     t.globalUnbind('keydown', t.globalKeydownCallback);
5239                     t.globalUnbind('click', t.globalClickCallback);
5240
5241                     delete t.media.player;
5242                 }
5243             }, {
5244                 key: 'paused',
5245                 get: function get() {
5246                     return this.proxy.paused;
5247                 }
5248             }, {
5249                 key: 'muted',
5250                 get: function get() {
5251                     return this.proxy.muted;
5252                 },
5253                 set: function set(muted) {
5254                     this.setMuted(muted);
5255                 }
5256             }, {
5257                 key: 'ended',
5258                 get: function get() {
5259                     return this.proxy.ended;
5260                 }
5261             }, {
5262                 key: 'readyState',
5263                 get: function get() {
5264                     return this.proxy.readyState;
5265                 }
5266             }, {
5267                 key: 'currentTime',
5268                 set: function set(time) {
5269                     this.setCurrentTime(time);
5270                 },
5271                 get: function get() {
5272                     return this.getCurrentTime();
5273                 }
5274             }, {
5275                 key: 'duration',
5276                 get: function get() {
5277                     return this.getDuration();
5278                 }
5279             }, {
5280                 key: 'volume',
5281                 set: function set(volume) {
5282                     this.setVolume(volume);
5283                 },
5284                 get: function get() {
5285                     return this.getVolume();
5286                 }
5287             }, {
5288                 key: 'src',
5289                 set: function set(src) {
5290                     this.setSrc(src);
5291                 },
5292                 get: function get() {
5293                     return this.getSrc();
5294                 }
5295             }]);
5296
5297             return MediaElementPlayer;
5298         }();
5299
5300         _window2.default.MediaElementPlayer = MediaElementPlayer;
5301         _mejs2.default.MediaElementPlayer = MediaElementPlayer;
5302
5303         exports.default = MediaElementPlayer;
5304
5305     }, { "17": 17, "2": 2, "25": 25, "26": 26, "27": 27, "28": 28, "3": 3, "30": 30, "5": 5, "6": 6, "7": 7 }], 17: [function (_dereq_, module, exports) {
5306         'use strict';
5307
5308         Object.defineProperty(exports, "__esModule", {
5309             value: true
5310         });
5311
5312         var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
5313
5314         var _window = _dereq_(3);
5315
5316         var _window2 = _interopRequireDefault(_window);
5317
5318         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5319
5320         function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5321
5322         var DefaultPlayer = function () {
5323             function DefaultPlayer(player) {
5324                 _classCallCheck(this, DefaultPlayer);
5325
5326                 this.media = player.media;
5327                 this.isVideo = player.isVideo;
5328                 this.classPrefix = player.options.classPrefix;
5329                 this.createIframeLayer = function () {
5330                     return player.createIframeLayer();
5331                 };
5332                 this.setPoster = function (url) {
5333                     return player.setPoster(url);
5334                 };
5335                 return this;
5336             }
5337
5338             _createClass(DefaultPlayer, [{
5339                 key: 'play',
5340                 value: function play() {
5341                     this.media.play();
5342                 }
5343             }, {
5344                 key: 'pause',
5345                 value: function pause() {
5346                     this.media.pause();
5347                 }
5348             }, {
5349                 key: 'load',
5350                 value: function load() {
5351                     var t = this;
5352
5353                     if (!t.isLoaded) {
5354                         t.media.load();
5355                     }
5356
5357                     t.isLoaded = true;
5358                 }
5359             }, {
5360                 key: 'setCurrentTime',
5361                 value: function setCurrentTime(time) {
5362                     this.media.setCurrentTime(time);
5363                 }
5364             }, {
5365                 key: 'getCurrentTime',
5366                 value: function getCurrentTime() {
5367                     return this.media.currentTime;
5368                 }
5369             }, {
5370                 key: 'getDuration',
5371                 value: function getDuration() {
5372                     var duration = this.media.getDuration();
5373                     if (duration === Infinity && this.media.seekable && this.media.seekable.length) {
5374                         duration = this.media.seekable.end(0);
5375                     }
5376                     return duration;
5377                 }
5378             }, {
5379                 key: 'setVolume',
5380                 value: function setVolume(volume) {
5381                     this.media.setVolume(volume);
5382                 }
5383             }, {
5384                 key: 'getVolume',
5385                 value: function getVolume() {
5386                     return this.media.getVolume();
5387                 }
5388             }, {
5389                 key: 'setMuted',
5390                 value: function setMuted(value) {
5391                     this.media.setMuted(value);
5392                 }
5393             }, {
5394                 key: 'setSrc',
5395                 value: function setSrc(src) {
5396                     var t = this,
5397                         layer = document.getElementById(t.media.id + '-iframe-overlay');
5398
5399                     if (layer) {
5400                         layer.remove();
5401                     }
5402
5403                     t.media.setSrc(src);
5404                     t.createIframeLayer();
5405                     if (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') {
5406                         t.setPoster(t.media.renderer.getPosterUrl());
5407                     }
5408                 }
5409             }, {
5410                 key: 'getSrc',
5411                 value: function getSrc() {
5412                     return this.media.getSrc();
5413                 }
5414             }, {
5415                 key: 'canPlayType',
5416                 value: function canPlayType(type) {
5417                     return this.media.canPlayType(type);
5418                 }
5419             }, {
5420                 key: 'paused',
5421                 get: function get() {
5422                     return this.media.paused;
5423                 }
5424             }, {
5425                 key: 'muted',
5426                 set: function set(muted) {
5427                     this.setMuted(muted);
5428                 },
5429                 get: function get() {
5430                     return this.media.muted;
5431                 }
5432             }, {
5433                 key: 'ended',
5434                 get: function get() {
5435                     return this.media.ended;
5436                 }
5437             }, {
5438                 key: 'readyState',
5439                 get: function get() {
5440                     return this.media.readyState;
5441                 }
5442             }, {
5443                 key: 'currentTime',
5444                 set: function set(time) {
5445                     this.setCurrentTime(time);
5446                 },
5447                 get: function get() {
5448                     return this.getCurrentTime();
5449                 }
5450             }, {
5451                 key: 'duration',
5452                 get: function get() {
5453                     return this.getDuration();
5454                 }
5455             }, {
5456                 key: 'remainingTime',
5457                 get: function get() {
5458                     return this.getDuration() - this.currentTime();
5459                 }
5460             }, {
5461                 key: 'volume',
5462                 set: function set(volume) {
5463                     this.setVolume(volume);
5464                 },
5465                 get: function get() {
5466                     return this.getVolume();
5467                 }
5468             }, {
5469                 key: 'src',
5470                 set: function set(src) {
5471                     this.setSrc(src);
5472                 },
5473                 get: function get() {
5474                     return this.getSrc();
5475                 }
5476             }]);
5477
5478             return DefaultPlayer;
5479         }();
5480
5481         exports.default = DefaultPlayer;
5482
5483
5484         _window2.default.DefaultPlayer = DefaultPlayer;
5485
5486     }, { "3": 3 }], 18: [function (_dereq_, module, exports) {
5487         'use strict';
5488
5489         var _window = _dereq_(3);
5490
5491         var _window2 = _interopRequireDefault(_window);
5492
5493         var _mejs = _dereq_(7);
5494
5495         var _mejs2 = _interopRequireDefault(_mejs);
5496
5497         var _player = _dereq_(16);
5498
5499         var _player2 = _interopRequireDefault(_player);
5500
5501         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5502
5503         if (typeof jQuery !== 'undefined') {
5504             _mejs2.default.$ = jQuery;
5505         } else if (typeof Zepto !== 'undefined') {
5506             _mejs2.default.$ = Zepto;
5507         } else if (typeof ender !== 'undefined') {
5508             _mejs2.default.$ = ender;
5509         }
5510
5511         (function ($) {
5512             if (typeof $ !== 'undefined') {
5513                 $.fn.mediaelementplayer = function (options) {
5514                     if (options === false) {
5515                         this.each(function () {
5516                             var player = $(this).data('mediaelementplayer');
5517                             if (player) {
5518                                 player.remove();
5519                             }
5520                             $(this).removeData('mediaelementplayer');
5521                         });
5522                     } else {
5523                         this.each(function () {
5524                             $(this).data('mediaelementplayer', new _player2.default(this, options));
5525                         });
5526                     }
5527                     return this;
5528                 };
5529
5530                 $(document).ready(function () {
5531                     $('.' + _mejs2.default.MepDefaults.classPrefix + 'player').mediaelementplayer();
5532                 });
5533             }
5534         })(_mejs2.default.$);
5535
5536     }, { "16": 16, "3": 3, "7": 7 }], 19: [function (_dereq_, module, exports) {
5537         'use strict';
5538
5539         var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
5540
5541         var _window = _dereq_(3);
5542
5543         var _window2 = _interopRequireDefault(_window);
5544
5545         var _mejs = _dereq_(7);
5546
5547         var _mejs2 = _interopRequireDefault(_mejs);
5548
5549         var _renderer = _dereq_(8);
5550
5551         var _general = _dereq_(27);
5552
5553         var _media = _dereq_(28);
5554
5555         var _constants = _dereq_(25);
5556
5557         var _dom = _dereq_(26);
5558
5559         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5560
5561         var NativeDash = {
5562
5563             promise: null,
5564
5565             load: function load(settings) {
5566                 if (typeof dashjs !== 'undefined') {
5567                     NativeDash.promise = new Promise(function (resolve) {
5568                         resolve();
5569                     }).then(function () {
5570                         NativeDash._createPlayer(settings);
5571                     });
5572                 } else {
5573                     settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js';
5574
5575                     NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path);
5576                     NativeDash.promise.then(function () {
5577                         NativeDash._createPlayer(settings);
5578                     });
5579                 }
5580
5581                 return NativeDash.promise;
5582             },
5583
5584             _createPlayer: function _createPlayer(settings) {
5585                 var player = dashjs.MediaPlayer().create();
5586                 _window2.default['__ready__' + settings.id](player);
5587                 return player;
5588             }
5589         };
5590
5591         var DashNativeRenderer = {
5592             name: 'native_dash',
5593             options: {
5594                 prefix: 'native_dash',
5595                 dash: {
5596                     path: 'https://cdn.dashjs.org/latest/dash.all.min.js',
5597                     debug: false,
5598                     drm: {},
5599
5600                     robustnessLevel: ''
5601                 }
5602             },
5603
5604             canPlayType: function canPlayType(type) {
5605                 return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1;
5606             },
5607
5608             create: function create(mediaElement, options, mediaFiles) {
5609
5610                 var originalNode = mediaElement.originalNode,
5611                     id = mediaElement.id + '_' + options.prefix,
5612                     autoplay = originalNode.autoplay,
5613                     children = originalNode.children;
5614
5615                 var node = null,
5616                     dashPlayer = null;
5617
5618                 originalNode.removeAttribute('type');
5619                 for (var i = 0, total = children.length; i < total; i++) {
5620                     children[i].removeAttribute('type');
5621                 }
5622
5623                 node = originalNode.cloneNode(true);
5624                 options = Object.assign(options, mediaElement.options);
5625
5626                 var props = _mejs2.default.html5media.properties,
5627                     events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
5628                         return e !== 'error';
5629                     }),
5630                     attachNativeEvents = function attachNativeEvents(e) {
5631                         var event = (0, _general.createEvent)(e.type, mediaElement);
5632                         mediaElement.dispatchEvent(event);
5633                     },
5634                     assignGettersSetters = function assignGettersSetters(propName) {
5635                         var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5636
5637                         node['get' + capName] = function () {
5638                             return dashPlayer !== null ? node[propName] : null;
5639                         };
5640
5641                         node['set' + capName] = function (value) {
5642                             if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
5643                                 if (propName === 'src') {
5644                                     var source = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
5645                                     node[propName] = source;
5646                                     if (dashPlayer !== null) {
5647                                         dashPlayer.reset();
5648                                         for (var _i = 0, _total = events.length; _i < _total; _i++) {
5649                                             node.removeEventListener(events[_i], attachNativeEvents);
5650                                         }
5651                                         dashPlayer = NativeDash._createPlayer({
5652                                             options: options.dash,
5653                                             id: id
5654                                         });
5655
5656                                         if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(value.drm) === 'object') {
5657                                             dashPlayer.setProtectionData(value.drm);
5658                                             if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
5659                                                 dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
5660                                             }
5661                                         }
5662                                         dashPlayer.attachSource(source);
5663                                         if (autoplay) {
5664                                             dashPlayer.play();
5665                                         }
5666                                     }
5667                                 } else {
5668                                     node[propName] = value;
5669                                 }
5670                             }
5671                         };
5672                     };
5673
5674                 for (var _i2 = 0, _total2 = props.length; _i2 < _total2; _i2++) {
5675                     assignGettersSetters(props[_i2]);
5676                 }
5677
5678                 _window2.default['__ready__' + id] = function (_dashPlayer) {
5679                     mediaElement.dashPlayer = dashPlayer = _dashPlayer;
5680
5681                     var dashEvents = dashjs.MediaPlayer.events,
5682                         assignEvents = function assignEvents(eventName) {
5683                             if (eventName === 'loadedmetadata') {
5684                                 dashPlayer.initialize();
5685                                 dashPlayer.attachView(node);
5686                                 dashPlayer.setAutoPlay(false);
5687
5688                                 if (_typeof(options.dash.drm) === 'object' && !_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) {
5689                                     dashPlayer.setProtectionData(options.dash.drm);
5690                                     if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
5691                                         dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
5692                                     }
5693                                 }
5694                                 dashPlayer.attachSource(node.getSrc());
5695                             }
5696
5697                             node.addEventListener(eventName, attachNativeEvents);
5698                         };
5699
5700                     for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
5701                         assignEvents(events[_i3]);
5702                     }
5703
5704                     var assignMdashEvents = function assignMdashEvents(e) {
5705                         if (e.type.toLowerCase() === 'error') {
5706                             mediaElement.generateError(e.message, node.src);
5707                             console.error(e);
5708                         } else {
5709                             var _event = (0, _general.createEvent)(e.type, mediaElement);
5710                             _event.data = e;
5711                             mediaElement.dispatchEvent(_event);
5712                         }
5713                     };
5714
5715                     for (var eventType in dashEvents) {
5716                         if (dashEvents.hasOwnProperty(eventType)) {
5717                             dashPlayer.on(dashEvents[eventType], function (e) {
5718                                 return assignMdashEvents(e);
5719                             });
5720                         }
5721                     }
5722                 };
5723
5724                 if (mediaFiles && mediaFiles.length > 0) {
5725                     for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
5726                         if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
5727                             node.setAttribute('src', mediaFiles[_i4].src);
5728                             if (typeof mediaFiles[_i4].drm !== 'undefined') {
5729                                 options.dash.drm = mediaFiles[_i4].drm;
5730                             }
5731                             break;
5732                         }
5733                     }
5734                 }
5735
5736                 node.setAttribute('id', id);
5737
5738                 originalNode.parentNode.insertBefore(node, originalNode);
5739                 originalNode.autoplay = false;
5740                 originalNode.style.display = 'none';
5741
5742                 node.setSize = function (width, height) {
5743                     node.style.width = width + 'px';
5744                     node.style.height = height + 'px';
5745                     return node;
5746                 };
5747
5748                 node.hide = function () {
5749                     node.pause();
5750                     node.style.display = 'none';
5751                     return node;
5752                 };
5753
5754                 node.show = function () {
5755                     node.style.display = '';
5756                     return node;
5757                 };
5758
5759                 node.destroy = function () {
5760                     if (dashPlayer !== null) {
5761                         dashPlayer.reset();
5762                     }
5763                 };
5764
5765                 var event = (0, _general.createEvent)('rendererready', node);
5766                 mediaElement.dispatchEvent(event);
5767
5768                 mediaElement.promises.push(NativeDash.load({
5769                     options: options.dash,
5770                     id: id
5771                 }));
5772
5773                 return node;
5774             }
5775         };
5776
5777         _media.typeChecks.push(function (url) {
5778             return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null;
5779         });
5780
5781         _renderer.renderer.add(DashNativeRenderer);
5782
5783     }, { "25": 25, "26": 26, "27": 27, "28": 28, "3": 3, "7": 7, "8": 8 }], 20: [function (_dereq_, module, exports) {
5784         'use strict';
5785
5786         Object.defineProperty(exports, "__esModule", {
5787             value: true
5788         });
5789         exports.PluginDetector = undefined;
5790
5791         var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
5792
5793         var _window = _dereq_(3);
5794
5795         var _window2 = _interopRequireDefault(_window);
5796
5797         var _document = _dereq_(2);
5798
5799         var _document2 = _interopRequireDefault(_document);
5800
5801         var _mejs = _dereq_(7);
5802
5803         var _mejs2 = _interopRequireDefault(_mejs);
5804
5805         var _i18n = _dereq_(5);
5806
5807         var _i18n2 = _interopRequireDefault(_i18n);
5808
5809         var _renderer = _dereq_(8);
5810
5811         var _general = _dereq_(27);
5812
5813         var _constants = _dereq_(25);
5814
5815         var _media = _dereq_(28);
5816
5817         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5818
5819         var PluginDetector = exports.PluginDetector = {
5820             plugins: [],
5821
5822             hasPluginVersion: function hasPluginVersion(plugin, v) {
5823                 var pv = PluginDetector.plugins[plugin];
5824                 v[1] = v[1] || 0;
5825                 v[2] = v[2] || 0;
5826                 return pv[0] > v[0] || pv[0] === v[0] && pv[1] > v[1] || pv[0] === v[0] && pv[1] === v[1] && pv[2] >= v[2];
5827             },
5828
5829             addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
5830                 PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
5831             },
5832
5833             detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
5834
5835                 var version = [0, 0, 0],
5836                     description = void 0,
5837                     ax = void 0;
5838
5839                 if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
5840                     description = _constants.NAV.plugins[pluginName].description;
5841                     if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
5842                         version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.');
5843                         for (var i = 0, total = version.length; i < total; i++) {
5844                             version[i] = parseInt(version[i].match(/\d+/), 10);
5845                         }
5846                     }
5847                 } else if (_window2.default.ActiveXObject !== undefined) {
5848                     try {
5849                         ax = new ActiveXObject(activeX);
5850                         if (ax) {
5851                             version = axDetect(ax);
5852                         }
5853                     } catch (e) {
5854
5855                     }
5856                 }
5857                 return version;
5858             }
5859         };
5860
5861         PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
5862             var version = [],
5863                 d = ax.GetVariable("$version");
5864
5865             if (d) {
5866                 d = d.split(" ")[1].split(",");
5867                 version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
5868             }
5869             return version;
5870         });
5871
5872         var FlashMediaElementRenderer = {
5873             create: function create(mediaElement, options, mediaFiles) {
5874
5875                 var flash = {};
5876                 var isActive = false;
5877
5878                 flash.options = options;
5879                 flash.id = mediaElement.id + '_' + flash.options.prefix;
5880                 flash.mediaElement = mediaElement;
5881                 flash.flashState = {};
5882                 flash.flashApi = null;
5883                 flash.flashApiStack = [];
5884
5885                 var props = _mejs2.default.html5media.properties,
5886                     assignGettersSetters = function assignGettersSetters(propName) {
5887                         flash.flashState[propName] = null;
5888
5889                         var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5890
5891                         flash['get' + capName] = function () {
5892                             if (flash.flashApi !== null) {
5893                                 if (typeof flash.flashApi['get_' + propName] === 'function') {
5894                                     var value = flash.flashApi['get_' + propName]();
5895
5896                                     if (propName === 'buffered') {
5897                                         return {
5898                                             start: function start() {
5899                                                 return 0;
5900                                             },
5901                                             end: function end() {
5902                                                 return value;
5903                                             },
5904                                             length: 1
5905                                         };
5906                                     }
5907                                     return value;
5908                                 } else {
5909                                     return null;
5910                                 }
5911                             } else {
5912                                 return null;
5913                             }
5914                         };
5915
5916                         flash['set' + capName] = function (value) {
5917                             if (propName === 'src') {
5918                                 value = (0, _media.absolutizeUrl)(value);
5919                             }
5920
5921                             if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
5922                                 try {
5923                                     flash.flashApi['set_' + propName](value);
5924                                 } catch (e) {
5925
5926                                 }
5927                             } else {
5928                                 flash.flashApiStack.push({
5929                                     type: 'set',
5930                                     propName: propName,
5931                                     value: value
5932                                 });
5933                             }
5934                         };
5935                     };
5936
5937                 for (var i = 0, total = props.length; i < total; i++) {
5938                     assignGettersSetters(props[i]);
5939                 }
5940
5941                 var methods = _mejs2.default.html5media.methods,
5942                     assignMethods = function assignMethods(methodName) {
5943                         flash[methodName] = function () {
5944                             if (isActive) {
5945                                 if (flash.flashApi !== null) {
5946                                     if (flash.flashApi['fire_' + methodName]) {
5947                                         try {
5948                                             flash.flashApi['fire_' + methodName]();
5949                                         } catch (e) {
5950
5951                                         }
5952                                     } else {
5953
5954                                     }
5955                                 } else {
5956                                     flash.flashApiStack.push({
5957                                         type: 'call',
5958                                         methodName: methodName
5959                                     });
5960                                 }
5961                             }
5962                         };
5963                     };
5964                 methods.push('stop');
5965                 for (var _i = 0, _total = methods.length; _i < _total; _i++) {
5966                     assignMethods(methods[_i]);
5967                 }
5968
5969                 var initEvents = ['rendererready'];
5970
5971                 for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
5972                     var event = (0, _general.createEvent)(initEvents[_i2], flash);
5973                     mediaElement.dispatchEvent(event);
5974                 }
5975
5976                 _window2.default['__ready__' + flash.id] = function () {
5977
5978                     flash.flashReady = true;
5979                     flash.flashApi = _document2.default.getElementById('__' + flash.id);
5980
5981                     if (flash.flashApiStack.length) {
5982                         for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
5983                             var stackItem = flash.flashApiStack[_i3];
5984
5985                             if (stackItem.type === 'set') {
5986                                 var propName = stackItem.propName,
5987                                     capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5988
5989                                 flash['set' + capName](stackItem.value);
5990                             } else if (stackItem.type === 'call') {
5991                                 flash[stackItem.methodName]();
5992                             }
5993                         }
5994                     }
5995                 };
5996
5997                 _window2.default['__event__' + flash.id] = function (eventName, message) {
5998                     var event = (0, _general.createEvent)(eventName, flash);
5999                     if (message) {
6000                         try {
6001                             event.data = JSON.parse(message);
6002                             event.details.data = JSON.parse(message);
6003                         } catch (e) {
6004                             event.message = message;
6005                         }
6006                     }
6007
6008                     flash.mediaElement.dispatchEvent(event);
6009                 };
6010
6011                 flash.flashWrapper = _document2.default.createElement('div');
6012
6013                 if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) {
6014                     flash.options.shimScriptAccess = 'sameDomain';
6015                 }
6016
6017                 var autoplay = mediaElement.originalNode.autoplay,
6018                     flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess, 'preload=' + (mediaElement.originalNode.getAttribute('preload') || '')],
6019                     isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video',
6020                     flashHeight = isVideo ? mediaElement.originalNode.height : 1,
6021                     flashWidth = isVideo ? mediaElement.originalNode.width : 1;
6022
6023                 if (mediaElement.originalNode.getAttribute('src')) {
6024                     flashVars.push('src=' + mediaElement.originalNode.getAttribute('src'));
6025                 }
6026
6027                 if (flash.options.enablePseudoStreaming === true) {
6028                     flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam);
6029                     flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType);
6030                 }
6031
6032                 if (flash.options.streamDelimiter) {
6033                     flashVars.push('streamdelimiter=' + encodeURIComponent(flash.options.streamDelimiter));
6034                 }
6035
6036                 if (flash.options.proxyType) {
6037                     flashVars.push('proxytype=' + flash.options.proxyType);
6038                 }
6039
6040                 mediaElement.appendChild(flash.flashWrapper);
6041                 mediaElement.originalNode.style.display = 'none';
6042
6043                 var settings = [];
6044
6045                 if (_constants.IS_IE || _constants.IS_EDGE) {
6046                     var specialIEContainer = _document2.default.createElement('div');
6047                     flash.flashWrapper.appendChild(specialIEContainer);
6048
6049                     if (_constants.IS_EDGE) {
6050                         settings = ['type="application/x-shockwave-flash"', 'data="' + flash.options.pluginPath + flash.options.filename + '"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '\'"'];
6051                     } else {
6052                         settings = ['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"', 'codebase="//download.macromedia.com/pub/s
6052hockwave/cabs/flash/swflash.cab"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
6053                     }
6054
6055                     if (!isVideo) {
6056                         settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
6057                     }
6058
6059                     specialIEContainer.outerHTML = '<object ' + settings.join(' ') + '>' + ('<param name="movie" value="' + flash.options.pluginPath + flash.options.filename + '?x=' + new Date() + '" />') + ('<param name="flashvars" value="' + flashVars.join('&amp;') + '" />') + '<param name="quality" value="high" />' + '<param name="bgcolor" value="#000000" />' + '<param name="wmode" value="transparent" />' + ('<param name="allowScriptAccess" value="' + flash.options.shimScriptAccess + '" />') + '<param name="allowFullScreen" value="true" />' + ('<div>' + _i18n2.default.t('mejs.install-flash') + '</div>') + '</object>';
6060                 } else {
6061
6062                     settings = ['id="__' + flash.id + '"', 'name="__' + flash.id + '"', 'play="true"', 'loop="false"', 'quality="high"', 'bgcolor="#000000"', 'wmode="transparent"', 'allowScriptAccess="' + flash.options.shimScriptAccess + '"', 'allowFullScreen="true"', 'type="application/x-shockwave-flash"', 'pluginspage="//www.macromedia.com/go/getflashplayer"', 'src="' + flash.options.pluginPath + flash.options.filename + '"', 'flashvars="' + flashVars.join('&') + '"'];
6063
6064                     if (isVideo) {
6065                         settings.push('width="' + flashWidth + '"');
6066                         settings.push('height="' + flashHeight + '"');
6067                     } else {
6068                         settings.push('style="position: fixed; left: -9999em; top: -9999em;"');
6069                     }
6070
6071                     flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>';
6072                 }
6073
6074                 flash.flashNode = flash.flashWrapper.lastChild;
6075
6076                 flash.hide = function () {
6077                     isActive = false;
6078                     if (isVideo) {
6079                         flash.flashNode.style.display = 'none';
6080                     }
6081                 };
6082                 flash.show = function () {
6083                     isActive = true;
6084                     if (isVideo) {
6085                         flash.flashNode.style.display = '';
6086                     }
6087                 };
6088                 flash.setSize = function (width, height) {
6089                     flash.flashNode.style.width = width + 'px';
6090                     flash.flashNode.style.height = height + 'px';
6091
6092                     if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') {
6093                         flash.flashApi.fire_setSize(width, height);
6094                     }
6095                 };
6096
6097                 flash.destroy = function () {
6098                     flash.flashNode.remove();
6099                 };
6100
6101                 if (mediaFiles && mediaFiles.length > 0) {
6102                     for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
6103                         if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
6104                             flash.setSrc(mediaFiles[_i4].src);
6105                             break;
6106                         }
6107                     }
6108                 }
6109
6110                 return flash;
6111             }
6112         };
6113
6114         var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
6115
6116         if (hasFlash) {
6117             _media.typeChecks.push(function (url) {
6118                 url = url.toLowerCase();
6119
6120                 if (url.startsWith('rtmp')) {
6121                     if (~url.indexOf('.mp3')) {
6122                         return 'audio/rtmp';
6123                     } else {
6124                         return 'video/rtmp';
6125                     }
6126                 } else if (/\.og(a|g)/i.test(url)) {
6127                     return 'audio/ogg';
6128                 } else if (~url.indexOf('.m3u8')) {
6129                     return 'application/x-mpegURL';
6130                 } else if (~url.indexOf('.mpd')) {
6131                     return 'application/dash+xml';
6132                 } else if (~url.indexOf('.flv')) {
6133                     return 'video/flv';
6134                 } else {
6135                     return null;
6136                 }
6137             });
6138
6139             var FlashMediaElementVideoRenderer = {
6140                 name: 'flash_video',
6141                 options: {
6142                     prefix: 'flash_video',
6143                     filename: 'mediaelement-flash-video.swf',
6144                     enablePseudoStreaming: false,
6145
6146                     pseudoStreamingStartQueryParam: 'start',
6147
6148                     pseudoStreamingType: 'byte',
6149
6150                     proxyType: '',
6151
6152                     streamDelimiter: ''
6153                 },
6154
6155                 canPlayType: function canPlayType(type) {
6156                     return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase());
6157                 },
6158
6159                 create: FlashMediaElementRenderer.create
6160
6161             };
6162             _renderer.renderer.add(FlashMediaElementVideoRenderer);
6163
6164             var FlashMediaElementHlsVideoRenderer = {
6165                 name: 'flash_hls',
6166                 options: {
6167                     prefix: 'flash_hls',
6168                     filename: 'mediaelement-flash-video-hls.swf'
6169                 },
6170
6171                 canPlayType: function canPlayType(type) {
6172                     return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase());
6173                 },
6174
6175                 create: FlashMediaElementRenderer.create
6176             };
6177             _renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
6178
6179             var FlashMediaElementMdashVideoRenderer = {
6180                 name: 'flash_dash',
6181                 options: {
6182                     prefix: 'flash_dash',
6183                     filename: 'mediaelement-flash-video-mdash.swf'
6184                 },
6185
6186                 canPlayType: function canPlayType(type) {
6187                     return ~['application/dash+xml'].indexOf(type.toLowerCase());
6188                 },
6189
6190                 create: FlashMediaElementRenderer.create
6191             };
6192             _renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
6193
6194             var FlashMediaElementAudioRenderer = {
6195                 name: 'flash_audio',
6196                 options: {
6197                     prefix: 'flash_audio',
6198                     filename: 'mediaelement-flash-audio.swf'
6199                 },
6200
6201                 canPlayType: function canPlayType(type) {
6202                     return ~['audio/mp3'].indexOf(type.toLowerCase());
6203                 },
6204
6205                 create: FlashMediaElementRenderer.create
6206             };
6207             _renderer.renderer.add(FlashMediaElementAudioRenderer);
6208
6209             var FlashMediaElementAudioOggRenderer = {
6210                 name: 'flash_audio_ogg',
6211                 options: {
6212                     prefix: 'flash_audio_ogg',
6213                     filename: 'mediaelement-flash-audio-ogg.swf'
6214                 },
6215
6216                 canPlayType: function canPlayType(type) {
6217                     return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase());
6218                 },
6219
6220                 create: FlashMediaElementRenderer.create
6221             };
6222             _renderer.renderer.add(FlashMediaElementAudioOggRenderer);
6223         }
6224
6225     }, { "2": 2, "25": 25, "27": 27, "28": 28, "3": 3, "5": 5, "7": 7, "8": 8 }], 21: [function (_dereq_, module, exports) {
6226         'use strict';
6227
6228         var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
6229
6230         var _window = _dereq_(3);
6231
6232         var _window2 = _interopRequireDefault(_window);
6233
6234         var _mejs = _dereq_(7);
6235
6236         var _mejs2 = _interopRequireDefault(_mejs);
6237
6238         var _renderer = _dereq_(8);
6239
6240         var _general = _dereq_(27);
6241
6242         var _constants = _dereq_(25);
6243
6244         var _media = _dereq_(28);
6245
6246         var _dom = _dereq_(26);
6247
6248         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6249
6250         var NativeFlv = {
6251
6252             promise: null,
6253
6254             load: function load(settings) {
6255                 if (typeof flvjs !== 'undefined') {
6256                     NativeFlv.promise = new Promise(function (resolve) {
6257                         resolve();
6258                     }).then(function () {
6259                         NativeFlv._createPlayer(settings);
6260                     });
6261                 } else {
6262                     settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/flv.js@latest';
6263
6264                     NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path);
6265                     NativeFlv.promise.then(function () {
6266                         NativeFlv._createPlayer(settings);
6267                     });
6268                 }
6269
6270                 return NativeFlv.promise;
6271             },
6272
6273             _createPlayer: function _createPlayer(settings) {
6274                 flvjs.LoggingControl.enableDebug = settings.options.debug;
6275                 flvjs.LoggingControl.enableVerbose = settings.options.debug;
6276                 var player = flvjs.createPlayer(settings.options, settings.configs);
6277                 _window2.default['__ready__' + settings.id](player);
6278                 return player;
6279             }
6280         };
6281
6282         var FlvNativeRenderer = {
6283             name: 'native_flv',
6284             options: {
6285                 prefix: 'native_flv',
6286                 flv: {
6287                     path: 'https://cdn.jsdelivr.net/npm/flv.js@latest',
6288
6289                     cors: true,
6290                     debug: false
6291                 }
6292             },
6293
6294             canPlayType: function canPlayType(type) {
6295                 return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1;
6296             },
6297
6298             create: function create(mediaElement, options, mediaFiles) {
6299
6300                 var originalNode = mediaElement.originalNode,
6301                     id = mediaElement.id + '_' + options.prefix;
6302
6303                 var node = null,
6304                     flvPlayer = null;
6305
6306                 node = originalNode.cloneNode(true);
6307                 options = Object.assign(options, mediaElement.options);
6308
6309                 var props = _mejs2.default.html5media.properties,
6310                     events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
6311                         return e !== 'error';
6312                     }),
6313                     attachNativeEvents = function attachNativeEvents(e) {
6314                         var event = (0, _general.createEvent)(e.type, mediaElement);
6315                         mediaElement.dispatchEvent(event);
6316                     },
6317                     assignGettersSetters = function assignGettersSetters(propName) {
6318                         var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6319
6320                         node['get' + capName] = function () {
6321                             return flvPlayer !== null ? node[propName] : null;
6322                         };
6323
6324                         node['set' + capName] = function (value) {
6325                             if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6326                                 if (propName === 'src') {
6327                                     node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
6328                                     if (flvPlayer !== null) {
6329                                         var _flvOptions = {};
6330                                         _flvOptions.type = 'flv';
6331                                         _flvOptions.url = value;
6332                                         _flvOptions.cors = options.flv.cors;
6333                                         _flvOptions.debug = options.flv.debug;
6334                                         _flvOptions.path = options.flv.path;
6335                                         var _flvConfigs = options.flv.configs;
6336
6337                                         flvPlayer.destroy();
6338                                         for (var i = 0, total = events.length; i < total; i++) {
6339                                             node.removeEventListener(events[i], attachNativeEvents);
6340                                         }
6341                                         flvPlayer = NativeFlv._createPlayer({
6342                                             options: _flvOptions,
6343                                             configs: _flvConfigs,
6344                                             id: id
6345                                         });
6346                                         flvPlayer.attachMediaElement(node);
6347                                         flvPlayer.load();
6348                                     }
6349                                 } else {
6350                                     node[propName] = value;
6351                                 }
6352                             }
6353                         };
6354                     };
6355
6356                 for (var i = 0, total = props.length; i < total; i++) {
6357                     assignGettersSetters(props[i]);
6358                 }
6359
6360                 _window2.default['__ready__' + id] = function (_flvPlayer) {
6361                     mediaElement.flvPlayer = flvPlayer = _flvPlayer;
6362
6363                     var flvEvents = flvjs.Events,
6364                         assignEvents = function assignEvents(eventName) {
6365                             if (eventName === 'loadedmetadata') {
6366                                 flvPlayer.unload();
6367                                 flvPlayer.detachMediaElement();
6368                                 flvPlayer.attachMediaElement(node);
6369                                 flvPlayer.load();
6370                             }
6371
6372                             node.addEventListener(eventName, attachNativeEvents);
6373                         };
6374
6375                     for (var _i = 0, _total = events.length; _i < _total; _i++) {
6376                         assignEvents(events[_i]);
6377                     }
6378
6379                     var assignFlvEvents = function assignFlvEvents(name, data) {
6380                         if (name === 'error') {
6381                             var message = data[0] + ': ' + data[1] + ' ' + data[2].msg;
6382                             mediaElement.generateError(message, node.src);
6383                         } else {
6384                             var _event = (0, _general.createEvent)(name, mediaElement);
6385                             _event.data = data;
6386                             mediaElement.dispatchEvent(_event);
6387                         }
6388                     };
6389
6390                     var _loop = function _loop(eventType) {
6391                         if (flvEvents.hasOwnProperty(eventType)) {
6392                             flvPlayer.on(flvEvents[eventType], function () {
6393                                 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
6394                                     args[_key] = arguments[_key];
6395                                 }
6396
6397                                 return assignFlvEvents(flvEvents[eventType], args);
6398                             });
6399                         }
6400                     };
6401
6402                     for (var eventType in flvEvents) {
6403                         _loop(eventType);
6404                     }
6405                 };
6406
6407                 if (mediaFiles && mediaFiles.length > 0) {
6408                     for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
6409                         if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
6410                             node.setAttribute('src', mediaFiles[_i2].src);
6411                             break;
6412                         }
6413                     }
6414                 }
6415
6416                 node.setAttribute('id', id);
6417
6418                 originalNode.parentNode.insertBefore(node, originalNode);
6419                 originalNode.autoplay = false;
vendor: 47,248 bytes, lines 6420-7475
6420                 originalNode.style.display = 'none';
6421
6422                 var flvOptions = {};
6423                 flvOptions.type = 'flv';
6424                 flvOptions.url = node.src;
6425                 flvOptions.cors = options.flv.cors;
6426                 flvOptions.debug = options.flv.debug;
6427                 flvOptions.path = options.flv.path;
6428                 var flvConfigs = options.flv.configs;
6429
6430                 node.setSize = function (width, height) {
6431                     node.style.width = width + 'px';
6432                     node.style.height = height + 'px';
6433                     return node;
6434                 };
6435
6436                 node.hide = function () {
6437                     if (flvPlayer !== null) {
6438                         flvPlayer.pause();
6439                     }
6440                     node.style.display = 'none';
6441                     return node;
6442                 };
6443
6444                 node.show = function () {
6445                     node.style.display = '';
6446                     return node;
6447                 };
6448
6449                 node.destroy = function () {
6450                     if (flvPlayer !== null) {
6451                         flvPlayer.destroy();
6452                     }
6453                 };
6454
6455                 var event = (0, _general.createEvent)('rendererready', node);
6456                 mediaElement.dispatchEvent(event);
6457
6458                 mediaElement.promises.push(NativeFlv.load({
6459                     options: flvOptions,
6460                     configs: flvConfigs,
6461                     id: id
6462                 }));
6463
6464                 return node;
6465             }
6466         };
6467
6468         _media.typeChecks.push(function (url) {
6469             return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null;
6470         });
6471
6472         _renderer.renderer.add(FlvNativeRenderer);
6473
6474     }, { "25": 25, "26": 26, "27": 27, "28": 28, "3": 3, "7": 7, "8": 8 }], 22: [function (_dereq_, module, exports) {
6475         'use strict';
6476
6477         var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
6478
6479         var _window = _dereq_(3);
6480
6481         var _window2 = _interopRequireDefault(_window);
6482
6483         var _mejs = _dereq_(7);
6484
6485         var _mejs2 = _interopRequireDefault(_mejs);
6486
6487         var _renderer = _dereq_(8);
6488
6489         var _general = _dereq_(27);
6490
6491         var _constants = _dereq_(25);
6492
6493         var _media = _dereq_(28);
6494
6495         var _dom = _dereq_(26);
6496
6497         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6498
6499         var NativeHls = {
6500
6501             promise: null,
6502
6503             load: function load(settings) {
6504                 if (typeof Hls !== 'undefined') {
6505                     NativeHls.promise = new Promise(function (resolve) {
6506                         resolve();
6507                     }).then(function () {
6508                         NativeHls._createPlayer(settings);
6509                     });
6510                 } else {
6511                     settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/hls.js@latest';
6512
6513                     NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path);
6514                     NativeHls.promise.then(function () {
6515                         NativeHls._createPlayer(settings);
6516                     });
6517                 }
6518
6519                 return NativeHls.promise;
6520             },
6521
6522             _createPlayer: function _createPlayer(settings) {
6523                 var player = new Hls(settings.options);
6524                 _window2.default['__ready__' + settings.id](player);
6525                 return player;
6526             }
6527         };
6528
6529         var HlsNativeRenderer = {
6530             name: 'native_hls',
6531             options: {
6532                 prefix: 'native_hls',
6533                 hls: {
6534                     path: 'https://cdn.jsdelivr.net/npm/hls.js@latest',
6535
6536                     autoStartLoad: false,
6537                     debug: false
6538                 }
6539             },
6540
6541             canPlayType: function canPlayType(type) {
6542                 return _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1;
6543             },
6544
6545             create: function create(mediaElement, options, mediaFiles) {
6546
6547                 var originalNode = mediaElement.originalNode,
6548                     id = mediaElement.id + '_' + options.prefix,
6549                     preload = originalNode.getAttribute('preload'),
6550                     autoplay = originalNode.autoplay;
6551
6552                 var hlsPlayer = null,
6553                     node = null,
6554                     index = 0,
6555                     total = mediaFiles.length;
6556
6557                 node = originalNode.cloneNode(true);
6558                 options = Object.assign(options, mediaElement.options);
6559                 options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
6560
6561                 var props = _mejs2.default.html5media.properties,
6562                     events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
6563                         return e !== 'error';
6564                     }),
6565                     attachNativeEvents = function attachNativeEvents(e) {
6566                         var event = (0, _general.createEvent)(e.type, mediaElement);
6567                         mediaElement.dispatchEvent(event);
6568                     },
6569                     assignGettersSetters = function assignGettersSetters(propName) {
6570                         var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6571
6572                         node['get' + capName] = function () {
6573                             return hlsPlayer !== null ? node[propName] : null;
6574                         };
6575
6576                         node['set' + capName] = function (value) {
6577                             if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6578                                 if (propName === 'src') {
6579                                     node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
6580                                     if (hlsPlayer !== null) {
6581                                         hlsPlayer.destroy();
6582                                         for (var i = 0, _total = events.length; i < _total; i++) {
6583                                             node.removeEventListener(events[i], attachNativeEvents);
6584                                         }
6585                                         hlsPlayer = NativeHls._createPlayer({
6586                                             options: options.hls,
6587                                             id: id
6588                                         });
6589                                         hlsPlayer.loadSource(value);
6590                                         hlsPlayer.attachMedia(node);
6591                                     }
6592                                 } else {
6593                                     node[propName] = value;
6594                                 }
6595                             }
6596                         };
6597                     };
6598
6599                 for (var i = 0, _total2 = props.length; i < _total2; i++) {
6600                     assignGettersSetters(props[i]);
6601                 }
6602
6603                 _window2.default['__ready__' + id] = function (_hlsPlayer) {
6604                     mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;
6605                     var hlsEvents = Hls.Events,
6606                         assignEvents = function assignEvents(eventName) {
6607                             if (eventName === 'loadedmetadata') {
6608                                 var url = mediaElement.originalNode.src;
6609                                 hlsPlayer.detachMedia();
6610                                 hlsPlayer.loadSource(url);
6611                                 hlsPlayer.attachMedia(node);
6612                             }
6613
6614                             node.addEventListener(eventName, attachNativeEvents);
6615                         };
6616
6617                     for (var _i = 0, _total3 = events.length; _i < _total3; _i++) {
6618                         assignEvents(events[_i]);
6619                     }
6620
6621                     var recoverDecodingErrorDate = void 0,
6622                         recoverSwapAudioCodecDate = void 0;
6623                     var assignHlsEvents = function assignHlsEvents(name, data) {
6624                         if (name === 'hlsError') {
6625                             console.warn(data);
6626                             data = data[1];
6627
6628                             if (data.fatal) {
6629                                 switch (data.type) {
6630                                     case 'mediaError':
6631                                         var now = new Date().getTime();
6632                                         if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) {
6633                                             recoverDecodingErrorDate = new Date().getTime();
6634                                             hlsPlayer.recoverMediaError();
6635                                         } else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) {
6636                                             recoverSwapAudioCodecDate = new Date().getTime();
6637                                             console.warn('Attempting to swap Audio Codec and recover from media error');
6638                                             hlsPlayer.swapAudioCodec();
6639                                             hlsPlayer.recoverMediaError();
6640                                         } else {
6641                                             var message = 'Cannot recover, last media error recovery failed';
6642                                             mediaElement.generateError(message, node.src);
6643                                             console.error(message);
6644                                         }
6645                                         break;
6646                                     case 'networkError':
6647                                         if (data.details === 'manifestLoadError') {
6648                                             if (index < total && mediaFiles[index + 1] !== undefined) {
6649                                                 node.setSrc(mediaFiles[index++].src);
6650                                                 node.load();
6651                                                 node.play();
6652                                             } else {
6653                                                 var _message = 'Network error';
6654                                                 mediaElement.generateError(_message, mediaFiles);
6655                                                 console.error(_message);
6656                                             }
6657                                         } else {
6658                                             var _message2 = 'Network error';
6659                                             mediaElement.generateError(_message2, mediaFiles);
6660                                             console.error(_message2);
6661                                         }
6662                                         break;
6663                                     default:
6664                                         hlsPlayer.destroy();
6665                                         break;
6666                                 }
6667                                 return;
6668                             }
6669                         }
6670                         var event = (0, _general.createEvent)(name, mediaElement);
6671                         event.data = data;
6672                         mediaElement.dispatchEvent(event);
6673                     };
6674
6675                     var _loop = function _loop(eventType) {
6676                         if (hlsEvents.hasOwnProperty(eventType)) {
6677                             hlsPlayer.on(hlsEvents[eventType], function () {
6678                                 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
6679                                     args[_key] = arguments[_key];
6680                                 }
6681
6682                                 return assignHlsEvents(hlsEvents[eventType], args);
6683                             });
6684                         }
6685                     };
6686
6687                     for (var eventType in hlsEvents) {
6688                         _loop(eventType);
6689                     }
6690                 };
6691
6692                 if (total > 0) {
6693                     for (; index < total; index++) {
6694                         if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
6695                             node.setAttribute('src', mediaFiles[index].src);
6696                             break;
6697                         }
6698                     }
6699                 }
6700
6701                 if (preload !== 'auto' && !autoplay) {
6702                     node.addEventListener('play', function () {
6703                         if (hlsPlayer !== null) {
6704                             hlsPlayer.startLoad();
6705                         }
6706                     });
6707
6708                     node.addEventListener('pause', function () {
6709                         if (hlsPlayer !== null) {
6710                             hlsPlayer.stopLoad();
6711                         }
6712                     });
6713                 }
6714
6715                 node.setAttribute('id', id);
6716
6717                 originalNode.parentNode.insertBefore(node, originalNode);
6718                 originalNode.autoplay = false;
6719                 originalNode.style.display = 'none';
6720
6721                 node.setSize = function (width, height) {
6722                     node.style.width = width + 'px';
6723                     node.style.height = height + 'px';
6724                     return node;
6725                 };
6726
6727                 node.hide = function () {
6728                     node.pause();
6729                     node.style.display = 'none';
6730                     return node;
6731                 };
6732
6733                 node.show = function () {
6734                     node.style.display = '';
6735                     return node;
6736                 };
6737
6738                 node.destroy = function () {
6739                     if (hlsPlayer !== null) {
6740                         hlsPlayer.stopLoad();
6741                         hlsPlayer.destroy();
6742                     }
6743                 };
6744
6745                 var event = (0, _general.createEvent)('rendererready', node);
6746                 mediaElement.dispatchEvent(event);
6747
6748                 mediaElement.promises.push(NativeHls.load({
6749                     options: options.hls,
6750                     id: id
6751                 }));
6752
6753                 return node;
6754             }
6755         };
6756
6757         _media.typeChecks.push(function (url) {
6758             return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;
6759         });
6760
6761         _renderer.renderer.add(HlsNativeRenderer);
6762
6763     }, { "25": 25, "26": 26, "27": 27, "28": 28, "3": 3, "7": 7, "8": 8 }], 23: [function (_dereq_, module, exports) {
6764         'use strict';
6765
6766         var _window = _dereq_(3);
6767
6768         var _window2 = _interopRequireDefault(_window);
6769
6770         var _document = _dereq_(2);
6771
6772         var _document2 = _interopRequireDefault(_document);
6773
6774         var _mejs = _dereq_(7);
6775
6776         var _mejs2 = _interopRequireDefault(_mejs);
6777
6778         var _renderer = _dereq_(8);
6779
6780         var _general = _dereq_(27);
6781
6782         var _constants = _dereq_(25);
6783
6784         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6785
6786         var HtmlMediaElement = {
6787             name: 'html5',
6788             options: {
6789                 prefix: 'html5'
6790             },
6791
6792             canPlayType: function canPlayType(type) {
6793
6794                 var mediaElement = _document2.default.createElement('video');
6795
6796                 if (_constants.IS_ANDROID && /\/mp(3|4)$/i.test(type) || ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) {
6797                     return 'yes';
6798                 } else if (mediaElement.canPlayType) {
6799                     return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, '');
6800                 } else {
6801                     return '';
6802                 }
6803             },
6804
6805             create: function create(mediaElement, options, mediaFiles) {
6806
6807                 var id = mediaElement.id + '_' + options.prefix;
6808                 var isActive = false;
6809
6810                 var node = null;
6811
6812                 if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
6813                     node = _document2.default.createElement('audio');
6814                     mediaElement.appendChild(node);
6815                 } else {
6816                     node = mediaElement.originalNode;
6817                 }
6818
6819                 node.setAttribute('id', id);
6820
6821                 var props = _mejs2.default.html5media.properties,
6822                     assignGettersSetters = function assignGettersSetters(propName) {
6823                         var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6824
6825                         node['get' + capName] = function () {
6826                             return node[propName];
6827                         };
6828
6829                         node['set' + capName] = function (value) {
6830                             if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6831                                 node[propName] = value;
6832                             }
6833                         };
6834                     };
6835
6836                 for (var i = 0, _total = props.length; i < _total; i++) {
6837                     assignGettersSetters(props[i]);
6838                 }
6839
6840                 var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
6841                     return e !== 'error';
6842                 }),
6843                     assignEvents = function assignEvents(eventName) {
6844                         node.addEventListener(eventName, function (e) {
6845                             if (isActive) {
6846                                 var _event = (0, _general.createEvent)(e.type, e.target);
6847                                 mediaElement.dispatchEvent(_event);
6848                             }
6849                         });
6850                     };
6851
6852                 for (var _i = 0, _total2 = events.length; _i < _total2; _i++) {
6853                     assignEvents(events[_i]);
6854                 }
6855
6856                 node.setSize = function (width, height) {
6857                     node.style.width = width + 'px';
6858                     node.style.height = height + 'px';
6859                     return node;
6860                 };
6861
6862                 node.hide = function () {
6863                     isActive = false;
6864                     node.style.display = 'none';
6865
6866                     return node;
6867                 };
6868
6869                 node.show = function () {
6870                     isActive = true;
6871                     node.style.display = '';
6872
6873                     return node;
6874                 };
6875
6876                 var index = 0,
6877                     total = mediaFiles.length;
6878                 if (total > 0) {
6879                     for (; index < total; index++) {
6880                         if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
6881                             node.setAttribute('src', mediaFiles[index].src);
6882                             break;
6883                         }
6884                     }
6885                 }
6886
6887                 node.addEventListener('error', function (e) {
6888                     if (e && e.target && e.target.error && e.target.error.code === 4 && isActive) {
6889                         if (index < total && mediaFiles[index + 1] !== undefined) {
6890                             node.src = mediaFiles[index++].src;
6891                             node.load();
6892                             node.play();
6893                         } else {
6894                             mediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles);
6895                         }
6896                     }
6897                 });
6898
6899                 var event = (0, _general.createEvent)('rendererready', node);
6900                 mediaElement.dispatchEvent(event);
6901
6902                 return node;
6903             }
6904         };
6905
6906         _window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement;
6907
6908         _renderer.renderer.add(HtmlMediaElement);
6909
6910     }, { "2": 2, "25": 25, "27": 27, "3": 3, "7": 7, "8": 8 }], 24: [function (_dereq_, module, exports) {
6911         'use strict';
6912
6913         var _window = _dereq_(3);
6914
6915         var _window2 = _interopRequireDefault(_window);
6916
6917         var _document = _dereq_(2);
6918
6919         var _document2 = _interopRequireDefault(_document);
6920
6921         var _mejs = _dereq_(7);
6922
6923         var _mejs2 = _interopRequireDefault(_mejs);
6924
6925         var _renderer = _dereq_(8);
6926
6927         var _general = _dereq_(27);
6928
6929         var _media = _dereq_(28);
6930
6931         var _dom = _dereq_(26);
6932
6933         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6934
6935         var YouTubeApi = {
6936             isIframeStarted: false,
6937
6938             isIframeLoaded: false,
6939
6940             iframeQueue: [],
6941
6942             enqueueIframe: function enqueueIframe(settings) {
6943                 YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;
6944
6945                 if (YouTubeApi.isLoaded) {
6946                     YouTubeApi.createIframe(settings);
6947                 } else {
6948                     YouTubeApi.loadIframeApi();
6949                     YouTubeApi.iframeQueue.push(settings);
6950                 }
6951             },
6952
6953             loadIframeApi: function loadIframeApi() {
6954                 if (!YouTubeApi.isIframeStarted) {
6955                     (0, _dom.loadScript)('https://www.youtube.com/player_api');
6956                     YouTubeApi.isIframeStarted = true;
6957                 }
6958             },
6959
6960             iFrameReady: function iFrameReady() {
6961
6962                 YouTubeApi.isLoaded = true;
6963                 YouTubeApi.isIframeLoaded = true;
6964
6965                 while (YouTubeApi.iframeQueue.length > 0) {
6966                     var settings = YouTubeApi.iframeQueue.pop();
6967                     YouTubeApi.createIframe(settings);
6968                 }
6969             },
6970
6971             createIframe: function createIframe(settings) {
6972                 return new YT.Player(settings.containerId, settings);
6973             },
6974
6975             getYouTubeId: function getYouTubeId(url) {
6976
6977                 var youTubeId = '';
6978
6979                 if (url.indexOf('?') > 0) {
6980                     youTubeId = YouTubeApi.getYouTubeIdFromParam(url);
6981
6982                     if (youTubeId === '') {
6983                         youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
6984                     }
6985                 } else {
6986                     youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
6987                 }
6988
6989                 var id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1);
6990                 youTubeId = id.split('?');
6991                 return youTubeId[0];
6992             },
6993
6994             getYouTubeIdFromParam: function getYouTubeIdFromParam(url) {
6995
6996                 if (url === undefined || url === null || !url.trim().length) {
6997                     return null;
6998                 }
6999
7000                 var parts = url.split('?'),
7001                     parameters = parts[1].split('&');
7002
7003                 var youTubeId = '';
7004
7005                 for (var i = 0, total = parameters.length; i < total; i++) {
7006                     var paramParts = parameters[i].split('=');
7007                     if (paramParts[0] === 'v') {
7008                         youTubeId = paramParts[1];
7009                         break;
7010                     }
7011                 }
7012
7013                 return youTubeId;
7014             },
7015
7016             getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {
7017
7018                 if (url === undefined || url === null || !url.trim().length) {
7019                     return null;
7020                 }
7021
7022                 var parts = url.split('?');
7023                 url = parts[0];
7024                 return url.substring(url.lastIndexOf('/') + 1);
7025             },
7026
7027             getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {
7028                 if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) {
7029                     return url;
7030                 }
7031
7032                 var parts = url.split('/');
7033                 parts[2] = parts[2].replace('.com', '-nocookie.com');
7034                 return parts.join('/');
7035             }
7036         };
7037
7038         var YouTubeIframeRenderer = {
7039             name: 'youtube_iframe',
7040
7041             options: {
7042                 prefix: 'youtube_iframe',
7043
7044                 youtube: {
7045                     autoplay: 0,
7046                     controls: 0,
7047                     disablekb: 1,
7048                     end: 0,
7049                     loop: 0,
7050                     modestbranding: 0,
7051                     playsinline: 0,
7052                     rel: 0,
7053                     showinfo: 0,
7054                     start: 0,
7055                     iv_load_policy: 3,
7056
7057                     nocookie: false,
7058
7059                     imageQuality: null
7060                 }
7061             },
7062
7063             canPlayType: function canPlayType(type) {
7064                 return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase());
7065             },
7066
7067             create: function create(mediaElement, options, mediaFiles) {
7068
7069                 var youtube = {},
7070                     apiStack = [],
7071                     readyState = 4;
7072
7073                 var youTubeApi = null,
7074                     paused = true,
7075                     ended = false,
7076                     youTubeIframe = null,
7077                     volume = 1;
7078
7079                 youtube.options = options;
7080                 youtube.id = mediaElement.id + '_' + options.prefix;
7081                 youtube.mediaElement = mediaElement;
7082
7083                 var props = _mejs2.default.html5media.properties,
7084                     assignGettersSetters = function assignGettersSetters(propName) {
7085
7086                         var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
7087
7088                         youtube['get' + capName] = function () {
7089                             if (youTubeApi !== null) {
7090                                 var value = null;
7091
7092                                 switch (propName) {
7093                                     case 'currentTime':
7094                                         return youTubeApi.getCurrentTime();
7095                                     case 'duration':
7096                                         return youTubeApi.getDuration();
7097                                     case 'volume':
7098                                         volume = youTubeApi.getVolume() / 100;
7099                                         return volume;
7100                                     case 'playbackRate':
7101                                         return youTubeApi.getPlaybackRate();
7102                                     case 'paused':
7103                                         return paused;
7104                                     case 'ended':
7105                                         return ended;
7106                                     case 'muted':
7107                                         return youTubeApi.isMuted();
7108                                     case 'buffered':
7109                                         var percentLoaded = youTubeApi.getVideoLoadedFraction(),
7110                                             duration = youTubeApi.getDuration();
7111                                         return {
7112                                             start: function start() {
7113                                                 return 0;
7114                                             },
7115                                             end: function end() {
7116                                                 return percentLoaded * duration;
7117                                             },
7118                                             length: 1
7119                                         };
7120                                     case 'src':
7121                                         return youTubeApi.getVideoUrl();
7122                                     case 'readyState':
7123                                         return readyState;
7124                                 }
7125
7126                                 return value;
7127                             } else {
7128                                 return null;
7129                             }
7130                         };
7131
7132                         youtube['set' + capName] = function (value) {
7133                             if (youTubeApi !== null) {
7134                                 switch (propName) {
7135                                     case 'src':
7136                                         var url = typeof value === 'string' ? value : value[0].src,
7137                                             _videoId = YouTubeApi.getYouTubeId(url);
7138
7139                                         if (mediaElement.originalNode.autoplay) {
7140                                             youTubeApi.loadVideoById(_videoId);
7141                                         } else {
7142                                             youTubeApi.cueVideoById(_videoId);
7143                                         }
7144                                         break;
7145                                     case 'currentTime':
7146                                         youTubeApi.seekTo(value);
7147                                         break;
7148                                     case 'muted':
7149                                         if (value) {
7150                                             youTubeApi.mute();
7151                                         } else {
7152                                             youTubeApi.unMute();
7153                                         }
7154                                         setTimeout(function () {
7155                                             var event = (0, _general.createEvent)('volumechange', youtube);
7156                                             mediaElement.dispatchEvent(event);
7157                                         }, 50);
7158                                         break;
7159                                     case 'volume':
7160                                         volume = value;
7161                                         youTubeApi.setVolume(value * 100);
7162                                         setTimeout(function () {
7163                                             var event = (0, _general.createEvent)('volumechange', youtube);
7164                                             mediaElement.dispatchEvent(event);
7165                                         }, 50);
7166                                         break;
7167                                     case 'playbackRate':
7168                                         youTubeApi.setPlaybackRate(value);
7169                                         setTimeout(function () {
7170                                             var event = (0, _general.createEvent)('ratechange', youtube);
7171                                             mediaElement.dispatchEvent(event);
7172                                         }, 50);
7173                                         break;
7174                                     case 'readyState':
7175                                         var event = (0, _general.createEvent)('canplay', youtube);
7176                                         mediaElement.dispatchEvent(event);
7177                                         break;
7178                                     default:
7179
7180                                         break;
7181                                 }
7182                             } else {
7183                                 apiStack.push({ type: 'set', propName: propName, value: value });
7184                             }
7185                         };
7186                     };
7187
7188                 for (var i = 0, total = props.length; i < total; i++) {
7189                     assignGettersSetters(props[i]);
7190                 }
7191
7192                 var methods = _mejs2.default.html5media.methods,
7193                     assignMethods = function assignMethods(methodName) {
7194                         youtube[methodName] = function () {
7195                             if (youTubeApi !== null) {
7196                                 switch (methodName) {
7197                                     case 'play':
7198                                         paused = false;
7199                                         return youTubeApi.playVideo();
7200                                     case 'pause':
7201                                         paused = true;
7202                                         return youTubeApi.pauseVideo();
7203                                     case 'load':
7204                                         return null;
7205                                 }
7206                             } else {
7207                                 apiStack.push({ type: 'call', methodName: methodName });
7208                             }
7209                         };
7210                     };
7211
7212                 for (var _i = 0, _total = methods.length; _i < _total; _i++) {
7213                     assignMethods(methods[_i]);
7214                 }
7215
7216                 var errorHandler = function errorHandler(error) {
7217                     var message = '';
7218                     switch (error.data) {
7219                         case 2:
7220                             message = 'The request contains an invalid parameter value. Verify that video ID has 11 characters and that contains no invalid characters, such as exclamation points or asterisks.';
7221                             break;
7222                         case 5:
7223                             message = 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.';
7224                             break;
7225                         case 100:
7226                             message = 'The video requested was not found. Either video has been removed or has been marked as private.';
7227                             break;
7228                         case 101:
7229                         case 105:
7230                             message = 'The owner of the requested video does not allow it to be played in embedded players.';
7231                             break;
7232                         default:
7233                             message = 'Unknown error.';
7234                             break;
7235                     }
7236                     mediaElement.generateError('Code ' + error.data + ': ' + message, mediaFiles);
7237                 };
7238
7239                 var youtubeContainer = _document2.default.createElement('div');
7240                 youtubeContainer.id = youtube.id;
7241
7242                 if (youtube.options.youtube.nocookie) {
7243                     mediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src);
7244                 }
7245
7246                 mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode);
7247                 mediaElement.originalNode.style.display = 'none';
7248
7249                 var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',
7250                     height = isAudio ? '1' : mediaElement.originalNode.height,
7251                     width = isAudio ? '1' : mediaElement.originalNode.width,
7252                     videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),
7253                     youtubeSettings = {
7254                         id: youtube.id,
7255                         containerId: youtubeContainer.id,
7256                         videoId: videoId,
7257                         height: height,
7258                         width: width,
7259                         playerVars: Object.assign({
7260                             controls: 0,
7261                             rel: 0,
7262                             disablekb: 1,
7263                             showinfo: 0,
7264                             modestbranding: 0,
7265                             html5: 1,
7266                             iv_load_policy: 3
7267                         }, youtube.options.youtube),
7268                         origin: _window2.default.location.host,
7269                         events: {
7270                             onReady: function onReady(e) {
7271                                 mediaElement.youTubeApi = youTubeApi = e.target;
7272                                 mediaElement.youTubeState = {
7273                                     paused: true,
7274                                     ended: false
7275                                 };
7276
7277                                 if (apiStack.length) {
7278                                     for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
7279
7280                                         var stackItem = apiStack[_i2];
7281
7282                                         if (stackItem.type === 'set') {
7283                                             var propName = stackItem.propName,
7284                                                 capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
7285
7286                                             youtube['set' + capName](stackItem.value);
7287                                         } else if (stackItem.type === 'call') {
7288                                             youtube[stackItem.methodName]();
7289                                         }
7290                                     }
7291                                 }
7292
7293                                 youTubeIframe = youTubeApi.getIframe();
7294
7295                                 if (mediaElement.originalNode.muted) {
7296                                     youTubeApi.mute();
7297                                 }
7298
7299                                 var events = ['mouseover', 'mouseout'],
7300                                     assignEvents = function assignEvents(e) {
7301                                         var newEvent = (0, _general.createEvent)(e.type, youtube);
7302                                         mediaElement.dispatchEvent(newEvent);
7303                                     };
7304
7305                                 for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
7306                                     youTubeIframe.addEventListener(events[_i3], assignEvents, false);
7307                                 }
7308
7309                                 var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
7310
7311                                 for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) {
7312                                     var event = (0, _general.createEvent)(initEvents[_i4], youtube);
7313                                     mediaElement.dispatchEvent(event);
7314                                 }
7315                             },
7316                             onStateChange: function onStateChange(e) {
7317                                 var events = [];
7318
7319                                 switch (e.data) {
7320                                     case -1:
7321                                         events = ['loadedmetadata'];
7322                                         paused = true;
7323                                         ended = false;
7324                                         break;
7325                                     case 0:
7326                                         events = ['ended'];
7327                                         paused = false;
7328                                         ended = !youtube.options.youtube.loop;
7329                                         if (!youtube.options.youtube.loop) {
7330                                             youtube.stopInterval();
7331                                         }
7332                                         break;
7333                                     case 1:
7334                                         events = ['play', 'playing'];
7335                                         paused = false;
7336                                         ended = false;
7337                                         youtube.startInterval();
7338                                         break;
7339                                     case 2:
7340                                         events = ['pause'];
7341                                         paused = true;
7342                                         ended = false;
7343                                         youtube.stopInterval();
7344                                         break;
7345                                     case 3:
7346                                         events = ['progress'];
7347                                         ended = false;
7348                                         break;
7349                                     case 5:
7350                                         events = ['loadeddata', 'loadedmetadata', 'canplay'];
7351                                         paused = true;
7352                                         ended = false;
7353                                         break;
7354                                 }
7355
7356                                 for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) {
7357                                     var event = (0, _general.createEvent)(events[_i5], youtube);
7358                                     mediaElement.dispatchEvent(event);
7359                                 }
7360                             },
7361                             onError: function onError(e) {
7362                                 return errorHandler(e);
7363                             }
7364                         }
7365                     };
7366
7367                 if (isAudio || mediaElement.originalNode.hasAttribute('playsinline')) {
7368                     youtubeSettings.playerVars.playsinline = 1;
7369                 }
7370
7371                 if (mediaElement.originalNode.controls) {
7372                     youtubeSettings.playerVars.controls = 1;
7373                 }
7374                 if (mediaElement.originalNode.autoplay) {
7375                     youtubeSettings.playerVars.autoplay = 1;
7376                 }
7377                 if (mediaElement.originalNode.loop) {
7378                     youtubeSettings.playerVars.loop = 1;
7379                 }
7380
7381                 if ((youtubeSettings.playerVars.loop && parseInt(youtubeSettings.playerVars.loop, 10) === 1 || mediaElement.originalNode.src.indexOf('loop=') > -1) && !youtubeSettings.playerVars.playlist && mediaElement.originalNode.src.indexOf('playlist=') === -1) {
7382                     youtubeSettings.playerVars.playlist = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
7383                 }
7384
7385                 YouTubeApi.enqueueIframe(youtubeSettings);
7386
7387                 youtube.onEvent = function (eventName, player, _youTubeState) {
7388                     if (_youTubeState !== null && _youTubeState !== undefined) {
7389                         mediaElement.youTubeState = _youTubeState;
7390                     }
7391                 };
7392
7393                 youtube.setSize = function (width, height) {
7394                     if (youTubeApi !== null) {
7395                         youTubeApi.setSize(width, height);
7396                     }
7397                 };
7398                 youtube.hide = function () {
7399                     youtube.stopInterval();
7400                     youtube.pause();
7401                     if (youTubeIframe) {
7402                         youTubeIframe.style.display = 'none';
7403                     }
7404                 };
7405                 youtube.show = function () {
7406                     if (youTubeIframe) {
7407                         youTubeIframe.style.display = '';
7408                     }
7409                 };
7410                 youtube.destroy = function () {
7411                     youTubeApi.destroy();
7412                 };
7413                 youtube.interval = null;
7414
7415                 youtube.startInterval = function () {
7416                     youtube.interval = setInterval(function () {
7417                         var event = (0, _general.createEvent)('timeupdate', youtube);
7418                         mediaElement.dispatchEvent(event);
7419                     }, 250);
7420                 };
7421                 youtube.stopInterval = function () {
7422                     if (youtube.interval) {
7423                         clearInterval(youtube.interval);
7424                     }
7425                 };
7426                 youtube.getPosterUrl = function () {
7427                     var quality = options.youtube.imageQuality,
7428                         resolutions = ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'],
7429                         id = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
7430                     return quality && resolutions.indexOf(quality) > -1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : '';
7431                 };
7432
7433                 return youtube;
7434             }
7435         };
7436
7437         _window2.default.onYouTubePlayerAPIReady = function () {
7438             YouTubeApi.iFrameReady();
7439         };
7440
7441         _media.typeChecks.push(function (url) {
7442             return (/\/\/(www\.youtube|youtu\.?be)/i.test(url) ? 'video/x-youtube' : null
7443             );
7444         });
7445
7446         _renderer.renderer.add(YouTubeIframeRenderer);
7447
7448     }, { "2": 2, "26": 26, "27": 27, "28": 28, "3": 3, "7": 7, "8": 8 }], 25: [function (_dereq_, module, exports) {
7449         'use strict';
7450
7451         Object.defineProperty(exports, "__esModule", {
7452             value: true
7453         });
7454         exports.cancelFullScreen = exports.requestFullScreen = exports.isFullScreen = exports.FULLSCREEN_EVENT_NAME = exports.HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = exports.SUPPORTS_NATIVE_HLS = exports.SUPPORT_PASSIVE_EVENT = exports.SUPPORT_POINTER_EVENTS = exports.HAS_MSE = exports.IS_STOCK_ANDROID = exports.IS_SAFARI = exports.IS_FIREFOX = exports.IS_CHROME = exports.IS_EDGE = exports.IS_IE = exports.IS_ANDROID = exports.IS_IOS = exports.IS_IPOD = exports.IS_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined;
7455
7456         var _window = _dereq_(3);
7457
7458         var _window2 = _interopRequireDefault(_window);
7459
7460         var _document = _dereq_(2);
7461
7462         var _document2 = _interopRequireDefault(_document);
7463
7464         var _mejs = _dereq_(7);
7465
7466         var _mejs2 = _interopRequireDefault(_mejs);
7467
7468         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7469
7470         var NAV = exports.NAV = _window2.default.navigator;
7471         var UA = exports.UA = NAV.userAgent.toLowerCase();
7472         var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA) && !_window2.default.MSStream;
7473         var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA) && !_window2.default.MSStream;
7474         var IS_IPOD = exports.IS_IPOD = /ipod/i.test(UA) && !_window2.default.MSStream;
7475         var IS_IOS = exports.IS_IOS = /ipad|iphone|ipod/i.test(UA) && !_window2.default.MSStream;
7476         var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA);
7477         var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName);
7478         var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
7479         var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA);
7480         var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA);
7481         var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME;
7482         var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA);
7483         var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
7484         var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
7485             var element = _document2.default.createElement('x'),
7486                 documentElement = _document2.default.documentElement,
7487                 getComputedStyle = _window2.default.getComputedStyle;
7488
7489             if (!('pointerEvents' in element.style)) {
7490                 return false;
7491             }
7492
7493             element.style.pointerEvents = 'auto';
7494             element.style.pointerEvents = 'x';
7495             documentElement.appendChild(element);
7496             var supports = getComputedStyle && (getComputedStyle(element, '') || {}).pointerEvents === 'auto';
7497             element.remove();
7498             return !!supports;
7499         }();
7500
7501         var SUPPORT_PASSIVE_EVENT = exports.SUPPORT_PASSIVE_EVENT = function () {
7502             var supportsPassive = false;
7503             try {
7504                 var opts = Object.defineProperty({}, 'passive', {
7505                     get: function get() {
7506                         supportsPassive = true;
7507                     }
7508                 });
7509                 _window2.default.addEventListener('test', null, opts);
7510             } catch (e) { }
7511
7512             return supportsPassive;
7513         }();
7514
7515         var html5Elements = ['source', 'track', 'audio', 'video'];
7516         var video = void 0;
7517
7518         for (var i = 0, total = html5Elements.length; i < total; i++) {
7519             video = _document2.default.createElement(html5Elements[i]);
7520         }
7521
7522         var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_IE && /edge/i.test(UA);
7523
7524         var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
7525
7526         var hasNativeFullscreen = video.requestFullscreen !== undefined;
7527
7528         if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) {
7529             hasNativeFullscreen = false;
7530             hasiOSFullScreen = false;
7531         }
7532
7533         var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
7534         var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
7535         var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
7536         var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
7537         var nativeFullScreenEnabled = hasTrueNativeFullScreen;
7538         var fullScreenEventName = '';
7539         var isFullScreen = void 0,
7540             requestFullScreen = void 0,
7541             cancelFullScreen = void 0;
7542
7543         if (hasMozNativeFullScreen) {
7544             nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
7545         } else if (hasMsNativeFullScreen) {
7546             nativeFullScreenEnabled = _document2.default.msFullscreenEnabled;
7547         }
7548
7549         if (IS_CHROME) {
7550             hasiOSFullScreen = false;
7551         }
7552
7553         if (hasTrueNativeFullScreen) {
7554             if (hasWebkitNativeFullScreen) {
7555                 fullScreenEventName = 'webkitfullscreenchange';
7556             } else if (hasMozNativeFullScreen) {
7557                 fullScreenEventName = 'fullscreenchange';
7558             } else if (hasMsNativeFullScreen) {
7559                 fullScreenEventName = 'MSFullscreenChange';
7560             }
7561
7562             exports.isFullScreen = isFullScreen = function isFullScreen() {
7563                 if (hasMozNativeFullScreen) {
7564                     return _document2.default.mozFullScreen;
7565                 } else if (hasWebkitNativeFullScreen) {
7566                     return _document2.default.webkitIsFullScreen;
7567                 } else if (hasMsNativeFullScreen) {
7568                     return _document2.default.msFullscreenElement !== null;
7569                 }
7570             };
7571
7572             exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
7573                 if (hasWebkitNativeFullScreen) {
7574                     el.webkitRequestFullScreen();
7575                 } else if (hasMozNativeFullScreen) {
7576                     el.mozRequestFullScreen();
7577                 } else if (hasMsNativeFullScreen) {
7578                     el.msRequestFullscreen();
7579                 }
7580             };
7581
7582             exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() {
7583                 if (hasWebkitNativeFullScreen) {
7584                     _document2.default.webkitCancelFullScreen();
7585                 } else if (hasMozNativeFullScreen) {
7586                     _document2.default.mozCancelFullScreen();
7587                 } else if (hasMsNativeFullScreen) {
7588                     _document2.default.msExitFullscreen();
7589                 }
7590             };
7591         }
7592
7593         var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen;
7594         var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen;
7595         var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen;
7596         var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen;
7597         var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
7598         var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
vendor: 36,147 bytes, lines 7599-8529
7599         var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
7600         var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
7601         exports.isFullScreen = isFullScreen;
7602         exports.requestFullScreen = requestFullScreen;
7603         exports.cancelFullScreen = cancelFullScreen;
7604
7605
7606         _mejs2.default.Features = _mejs2.default.Features || {};
7607         _mejs2.default.Features.isiPad = IS_IPAD;
7608         _mejs2.default.Features.isiPod = IS_IPOD;
7609         _mejs2.default.Features.isiPhone = IS_IPHONE;
7610         _mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad;
7611         _mejs2.default.Features.isAndroid = IS_ANDROID;
7612         _mejs2.default.Features.isIE = IS_IE;
7613         _mejs2.default.Features.isEdge = IS_EDGE;
7614         _mejs2.default.Features.isChrome = IS_CHROME;
7615         _mejs2.default.Features.isFirefox = IS_FIREFOX;
7616         _mejs2.default.Features.isSafari = IS_SAFARI;
7617         _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
7618         _mejs2.default.Features.hasMSE = HAS_MSE;
7619         _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
7620         _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
7621         _mejs2.default.Features.supportsPassiveEvent = SUPPORT_PASSIVE_EVENT;
7622         _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
7623         _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
7624         _mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN;
7625         _mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN;
7626         _mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN;
7627         _mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN;
7628         _mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED;
7629         _mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME;
7630         _mejs2.default.Features.isFullScreen = isFullScreen;
7631         _mejs2.default.Features.requestFullScreen = requestFullScreen;
7632         _mejs2.default.Features.cancelFullScreen = cancelFullScreen;
7633
7634     }, { "2": 2, "3": 3, "7": 7 }], 26: [function (_dereq_, module, exports) {
7635         'use strict';
7636
7637         Object.defineProperty(exports, "__esModule", {
7638             value: true
7639         });
7640         exports.removeClass = exports.addClass = exports.hasClass = undefined;
7641         exports.loadScript = loadScript;
7642         exports.offset = offset;
7643         exports.toggleClass = toggleClass;
7644         exports.fadeOut = fadeOut;
7645         exports.fadeIn = fadeIn;
7646         exports.siblings = siblings;
7647         exports.visible = visible;
7648         exports.ajax = ajax;
7649
7650         var _window = _dereq_(3);
7651
7652         var _window2 = _interopRequireDefault(_window);
7653
7654         var _document = _dereq_(2);
7655
7656         var _document2 = _interopRequireDefault(_document);
7657
7658         var _mejs = _dereq_(7);
7659
7660         var _mejs2 = _interopRequireDefault(_mejs);
7661
7662         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7663
7664         function loadScript(url) {
7665             return new Promise(function (resolve, reject) {
7666                 var script = _document2.default.createElement('script');
7667                 script.src = url;
7668                 script.async = true;
7669                 script.onload = function () {
7670                     script.remove();
7671                     resolve();
7672                 };
7673                 script.onerror = function () {
7674                     script.remove();
7675                     reject();
7676                 };
7677                 _document2.default.head.appendChild(script);
7678             });
7679         }
7680
7681         function offset(el) {
7682             var rect = el.getBoundingClientRect(),
7683                 scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,
7684                 scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop;
7685             return { top: rect.top + scrollTop, left: rect.left + scrollLeft };
7686         }
7687
7688         var hasClassMethod = void 0,
7689             addClassMethod = void 0,
7690             removeClassMethod = void 0;
7691
7692         if ('classList' in _document2.default.documentElement) {
7693             hasClassMethod = function hasClassMethod(el, className) {
7694                 return el.classList !== undefined && el.classList.contains(className);
7695             };
7696             addClassMethod = function addClassMethod(el, className) {
7697                 return el.classList.add(className);
7698             };
7699             removeClassMethod = function removeClassMethod(el, className) {
7700                 return el.classList.remove(className);
7701             };
7702         } else {
7703             hasClassMethod = function hasClassMethod(el, className) {
7704                 return new RegExp('\\b' + className + '\\b').test(el.className);
7705             };
7706             addClassMethod = function addClassMethod(el, className) {
7707                 if (!hasClass(el, className)) {
7708                     el.className += ' ' + className;
7709                 }
7710             };
7711             removeClassMethod = function removeClassMethod(el, className) {
7712                 el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), '');
7713             };
7714         }
7715
7716         var hasClass = exports.hasClass = hasClassMethod;
7717         var addClass = exports.addClass = addClassMethod;
7718         var removeClass = exports.removeClass = removeClassMethod;
7719
7720         function toggleClass(el, className) {
7721             hasClass(el, className) ? removeClass(el, className) : addClass(el, className);
7722         }
7723
7724         function fadeOut(el) {
7725             var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
7726             var callback = arguments[2];
7727
7728             if (!el.style.opacity) {
7729                 el.style.opacity = 1;
7730             }
7731
7732             var start = null;
7733             _window2.default.requestAnimationFrame(function animate(timestamp) {
7734                 start = start || timestamp;
7735                 var progress = timestamp - start;
7736                 var opacity = parseFloat(1 - progress / duration, 2);
7737                 el.style.opacity = opacity < 0 ? 0 : opacity;
7738                 if (progress > duration) {
7739                     if (callback && typeof callback === 'function') {
7740                         callback();
7741                     }
7742                 } else {
7743                     _window2.default.requestAnimationFrame(animate);
7744                 }
7745             });
7746         }
7747
7748         function fadeIn(el) {
7749             var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
7750             var callback = arguments[2];
7751
7752             if (!el.style.opacity) {
7753                 el.style.opacity = 0;
7754             }
7755
7756             var start = null;
7757             _window2.default.requestAnimationFrame(function animate(timestamp) {
7758                 start = start || timestamp;
7759                 var progress = timestamp - start;
7760                 var opacity = parseFloat(progress / duration, 2);
7761                 el.style.opacity = opacity > 1 ? 1 : opacity;
7762                 if (progress > duration) {
7763                     if (callback && typeof callback === 'function') {
7764                         callback();
7765                     }
7766                 } else {
7767                     _window2.default.requestAnimationFrame(animate);
7768                 }
7769             });
7770         }
7771
7772         function siblings(el, filter) {
7773             var siblings = [];
7774             el = el.parentNode.firstChild;
7775             do {
7776                 if (!filter || filter(el)) {
7777                     siblings.push(el);
7778                 }
7779             } while (el = el.nextSibling);
7780             return siblings;
7781         }
7782
7783         function visible(elem) {
7784             if (elem.getClientRects !== undefined && elem.getClientRects === 'function') {
7785                 return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
7786             }
7787             return !!(elem.offsetWidth || elem.offsetHeight);
7788         }
7789
7790         function ajax(url, dataType, success, error) {
7791             var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
7792
7793             var type = 'application/x-www-form-urlencoded; charset=UTF-8',
7794                 completed = false,
7795                 accept = '*/'.concat('*');
7796
7797             switch (dataType) {
7798                 case 'text':
7799                     type = 'text/plain';
7800                     break;
7801                 case 'json':
7802                     type = 'application/json, text/javascript';
7803                     break;
7804                 case 'html':
7805                     type = 'text/html';
7806                     break;
7807                 case 'xml':
7808                     type = 'application/xml, text/xml';
7809                     break;
7810             }
7811
7812             if (type !== 'application/x-www-form-urlencoded') {
7813                 accept = type + ', */*; q=0.01';
7814             }
7815
7816             if (xhr) {
7817                 xhr.open('GET', url, true);
7818                 xhr.setRequestHeader('Accept', accept);
7819                 xhr.onreadystatechange = function () {
7820                     if (completed) {
7821                         return;
7822                     }
7823
7824                     if (xhr.readyState === 4) {
7825                         if (xhr.status === 200) {
7826                             completed = true;
7827                             var data = void 0;
7828                             switch (dataType) {
7829                                 case 'json':
7830                                     data = JSON.parse(xhr.responseText);
7831                                     break;
7832                                 case 'xml':
7833                                     data = xhr.responseXML;
7834                                     break;
7835                                 default:
7836                                     data = xhr.responseText;
7837                                     break;
7838                             }
7839                             success(data);
7840                         } else if (typeof error === 'function') {
7841                             error(xhr.status);
7842                         }
7843                     }
7844                 };
7845
7846                 xhr.send();
7847             }
7848         }
7849
7850         _mejs2.default.Utils = _mejs2.default.Utils || {};
7851         _mejs2.default.Utils.offset = offset;
7852         _mejs2.default.Utils.hasClass = hasClass;
7853         _mejs2.default.Utils.addClass = addClass;
7854         _mejs2.default.Utils.removeClass = removeClass;
7855         _mejs2.default.Utils.toggleClass = toggleClass;
7856         _mejs2.default.Utils.fadeIn = fadeIn;
7857         _mejs2.default.Utils.fadeOut = fadeOut;
7858         _mejs2.default.Utils.siblings = siblings;
7859         _mejs2.default.Utils.visible = visible;
7860         _mejs2.default.Utils.ajax = ajax;
7861         _mejs2.default.Utils.loadScript = loadScript;
7862
7863     }, { "2": 2, "3": 3, "7": 7 }], 27: [function (_dereq_, module, exports) {
7864         'use strict';
7865
7866         Object.defineProperty(exports, "__esModule", {
7867             value: true
7868         });
7869         exports.escapeHTML = escapeHTML;
7870         exports.debounce = debounce;
7871         exports.isObjectEmpty = isObjectEmpty;
7872         exports.splitEvents = splitEvents;
7873         exports.createEvent = createEvent;
7874         exports.isNodeAfter = isNodeAfter;
7875         exports.isString = isString;
7876
7877         var _mejs = _dereq_(7);
7878
7879         var _mejs2 = _interopRequireDefault(_mejs);
7880
7881         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7882
7883         function escapeHTML(input) {
7884
7885             if (typeof input !== 'string') {
7886                 throw new Error('Argument passed must be a string');
7887             }
7888
7889             var map = {
7890                 '&': '&amp;',
7891                 '<': '&lt;',
7892                 '>': '&gt;',
7893                 '"': '&quot;'
7894             };
7895
7896             return input.replace(/[&<>"]/g, function (c) {
7897                 return map[c];
7898             });
7899         }
7900
7901         function debounce(func, wait) {
7902             var _this = this,
7903                 _arguments = arguments;
7904
7905             var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
7906
7907
7908             if (typeof func !== 'function') {
7909                 throw new Error('First argument must be a function');
7910             }
7911
7912             if (typeof wait !== 'number') {
7913                 throw new Error('Second argument must be a numeric value');
7914             }
7915
7916             var timeout = void 0;
7917             return function () {
7918                 var context = _this,
7919                     args = _arguments;
7920                 var later = function later() {
7921                     timeout = null;
7922                     if (!immediate) {
7923                         func.apply(context, args);
7924                     }
7925                 };
7926                 var callNow = immediate && !timeout;
7927                 clearTimeout(timeout);
7928                 timeout = setTimeout(later, wait);
7929
7930                 if (callNow) {
7931                     func.apply(context, args);
7932                 }
7933             };
7934         }
7935
7936         function isObjectEmpty(instance) {
7937             return Object.getOwnPropertyNames(instance).length <= 0;
7938         }
7939
7940         function splitEvents(events, id) {
7941             var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
7942
7943             var ret = { d: [], w: [] };
7944             (events || '').split(' ').forEach(function (v) {
7945                 var eventName = '' + v + (id ? '.' + id : '');
7946
7947                 if (eventName.startsWith('.')) {
7948                     ret.d.push(eventName);
7949                     ret.w.push(eventName);
7950                 } else {
7951                     ret[rwindow.test(v) ? 'w' : 'd'].push(eventName);
7952                 }
7953             });
7954
7955             ret.d = ret.d.join(' ');
7956             ret.w = ret.w.join(' ');
7957             return ret;
7958         }
7959
7960         function createEvent(eventName, target) {
7961
7962             if (typeof eventName !== 'string') {
7963                 throw new Error('Event name must be a string');
7964             }
7965
7966             var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i),
7967                 detail = {
7968                     target: target
7969                 };
7970
7971             if (eventFrags !== null) {
7972                 eventName = eventFrags[1];
7973                 detail.namespace = eventFrags[2];
7974             }
7975
7976             return new window.CustomEvent(eventName, {
7977                 detail: detail
7978             });
7979         }
7980
7981         function isNodeAfter(sourceNode, targetNode) {
7982
7983             return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2);
7984         }
7985
7986         function isString(value) {
7987             return typeof value === 'string';
7988         }
7989
7990         _mejs2.default.Utils = _mejs2.default.Utils || {};
7991         _mejs2.default.Utils.escapeHTML = escapeHTML;
7992         _mejs2.default.Utils.debounce = debounce;
7993         _mejs2.default.Utils.isObjectEmpty = isObjectEmpty;
7994         _mejs2.default.Utils.splitEvents = splitEvents;
7995         _mejs2.default.Utils.createEvent = createEvent;
7996         _mejs2.default.Utils.isNodeAfter = isNodeAfter;
7997         _mejs2.default.Utils.isString = isString;
7998
7999     }, { "7": 7 }], 28: [function (_dereq_, module, exports) {
8000         'use strict';
8001
8002         Object.defineProperty(exports, "__esModule", {
8003             value: true
8004         });
8005         exports.typeChecks = undefined;
8006         exports.absolutizeUrl = absolutizeUrl;
8007         exports.formatType = formatType;
8008         exports.getMimeFromType = getMimeFromType;
8009         exports.getTypeFromFile = getTypeFromFile;
8010         exports.getExtension = getExtension;
8011         exports.normalizeExtension = normalizeExtension;
8012
8013         var _mejs = _dereq_(7);
8014
8015         var _mejs2 = _interopRequireDefault(_mejs);
8016
8017         var _general = _dereq_(27);
8018
8019         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8020
8021         var typeChecks = exports.typeChecks = [];
8022
8023         function absolutizeUrl(url) {
8024
8025             if (typeof url !== 'string') {
8026                 throw new Error('`url` argument must be a string');
8027             }
8028
8029             var el = document.createElement('div');
8030             el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>';
8031             return el.firstChild.href;
8032         }
8033
8034         function formatType(url) {
8035             var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
8036
8037             return url && !type ? getTypeFromFile(url) : type;
8038         }
8039
8040         function getMimeFromType(type) {
8041
8042             if (typeof type !== 'string') {
8043                 throw new Error('`type` argument must be a string');
8044             }
8045
8046             return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type;
8047         }
8048
8049         function getTypeFromFile(url) {
8050
8051             if (typeof url !== 'string') {
8052                 throw new Error('`url` argument must be a string');
8053             }
8054
8055             for (var i = 0, total = typeChecks.length; i < total; i++) {
8056                 var type = typeChecks[i](url);
8057
8058                 if (type) {
8059                     return type;
8060                 }
8061             }
8062
8063             var ext = getExtension(url),
8064                 normalizedExt = normalizeExtension(ext);
8065
8066             var mime = 'video/mp4';
8067
8068             if (normalizedExt) {
8069                 if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt)) {
8070                     mime = 'video/' + normalizedExt;
8071                 } else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) {
8072                     mime = 'audio/' + normalizedExt;
8073                 }
8074             }
8075
8076             return mime;
8077         }
8078
8079         function getExtension(url) {
8080
8081             if (typeof url !== 'string') {
8082                 throw new Error('`url` argument must be a string');
8083             }
8084
8085             var baseUrl = url.split('?')[0],
8086                 baseName = baseUrl.split('\\').pop().split('/').pop();
8087             return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
8088         }
8089
8090         function normalizeExtension(extension) {
8091
8092             if (typeof extension !== 'string') {
8093                 throw new Error('`extension` argument must be a string');
8094             }
8095
8096             switch (extension) {
8097                 case 'mp4':
8098                 case 'm4v':
8099                     return 'mp4';
8100                 case 'webm':
8101                 case 'webma':
8102                 case 'webmv':
8103                     return 'webm';
8104                 case 'ogg':
8105                 case 'oga':
8106                 case 'ogv':
8107                     return 'ogg';
8108                 default:
8109                     return extension;
8110             }
8111         }
8112
8113         _mejs2.default.Utils = _mejs2.default.Utils || {};
8114         _mejs2.default.Utils.typeChecks = typeChecks;
8115         _mejs2.default.Utils.absolutizeUrl = absolutizeUrl;
8116         _mejs2.default.Utils.formatType = formatType;
8117         _mejs2.default.Utils.getMimeFromType = getMimeFromType;
8118         _mejs2.default.Utils.getTypeFromFile = getTypeFromFile;
8119         _mejs2.default.Utils.getExtension = getExtension;
8120         _mejs2.default.Utils.normalizeExtension = normalizeExtension;
8121
8122     }, { "27": 27, "7": 7 }], 29: [function (_dereq_, module, exports) {
8123         'use strict';
8124
8125         var _document = _dereq_(2);
8126
8127         var _document2 = _interopRequireDefault(_document);
8128
8129         var _promisePolyfill = _dereq_(4);
8130
8131         var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);
8132
8133         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8134
8135         (function (arr) {
8136             arr.forEach(function (item) {
8137                 if (item.hasOwnProperty('remove')) {
8138                     return;
8139                 }
8140                 Object.defineProperty(item, 'remove', {
8141                     configurable: true,
8142                     enumerable: true,
8143                     writable: true,
8144                     value: function remove() {
8145                         this.parentNode.removeChild(this);
8146                     }
8147                 });
8148             });
8149         })([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
8150
8151         (function () {
8152
8153             if (typeof window.CustomEvent === 'function') {
8154                 return false;
8155             }
8156
8157             function CustomEvent(event, params) {
8158                 params = params || { bubbles: false, cancelable: false, detail: undefined };
8159                 var evt = _document2.default.createEvent('CustomEvent');
8160                 evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
8161                 return evt;
8162             }
8163
8164             CustomEvent.prototype = window.Event.prototype;
8165             window.CustomEvent = CustomEvent;
8166         })();
8167
8168         if (typeof Object.assign !== 'function') {
8169             Object.assign = function (target) {
8170
8171                 if (target === null || target === undefined) {
8172                     throw new TypeError('Cannot convert undefined or null to object');
8173                 }
8174
8175                 var to = Object(target);
8176
8177                 for (var index = 1, total = arguments.length; index < total; index++) {
8178                     var nextSource = arguments[index];
8179
8180                     if (nextSource !== null) {
8181                         for (var nextKey in nextSource) {
8182                             if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
8183                                 to[nextKey] = nextSource[nextKey];
8184                             }
8185                         }
8186                     }
8187                 }
8188                 return to;
8189             };
8190         }
8191
8192         if (!String.prototype.startsWith) {
8193             String.prototype.startsWith = function (searchString, position) {
8194                 position = position || 0;
8195                 return this.substr(position, searchString.length) === searchString;
8196             };
8197         }
8198
8199         if (!Element.prototype.matches) {
8200             Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
8201                 var matches = (this.document || this.ownerDocument).querySelectorAll(s),
8202                     i = matches.length - 1;
8203                 while (--i >= 0 && matches.item(i) !== this) { }
8204                 return i > -1;
8205             };
8206         }
8207
8208         if (window.Element && !Element.prototype.closest) {
8209             Element.prototype.closest = function (s) {
8210                 var matches = (this.document || this.ownerDocument).querySelectorAll(s),
8211                     i = void 0,
8212                     el = this;
8213                 do {
8214                     i = matches.length;
8215                     while (--i >= 0 && matches.item(i) !== el) { }
8216                 } while (i < 0 && (el = el.parentElement));
8217                 return el;
8218             };
8219         }
8220
8221         (function () {
8222             var lastTime = 0;
8223             var vendors = ['ms', 'moz', 'webkit', 'o'];
8224             for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
8225                 window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
8226                 window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
8227             }
8228
8229             if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) {
8230                 var currTime = new Date().getTime();
8231                 var timeToCall = Math.max(0, 16 - (currTime - lastTime));
8232                 var id = window.setTimeout(function () {
8233                     callback(currTime + timeToCall);
8234                 }, timeToCall);
8235                 lastTime = currTime + timeToCall;
8236                 return id;
8237             };
8238
8239             if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {
8240                 clearTimeout(id);
8241             };
8242         })();
8243
8244         if (/firefox/i.test(navigator.userAgent)) {
8245             var getComputedStyle = window.getComputedStyle;
8246             window.getComputedStyle = function (el, pseudoEl) {
8247                 var t = getComputedStyle(el, pseudoEl);
8248                 return t === null ? { getPropertyValue: function getPropertyValue() { } } : t;
8249             };
8250         }
8251
8252         if (!window.Promise) {
8253             window.Promise = _promisePolyfill2.default;
8254         }
8255
8256         (function (constructor) {
8257             if (constructor && constructor.prototype && constructor.prototype.children === null) {
8258                 Object.defineProperty(constructor.prototype, 'children', {
8259                     get: function get() {
8260                         var i = 0,
8261                             node = void 0,
8262                             nodes = this.childNodes,
8263                             children = [];
8264                         while (node = nodes[i++]) {
8265                             if (node.nodeType === 1) {
8266                                 children.push(node);
8267                             }
8268                         }
8269                         return children;
8270                     }
8271                 });
8272             }
8273         })(window.Node || window.Element);
8274
8275     }, { "2": 2, "4": 4 }], 30: [function (_dereq_, module, exports) {
8276         'use strict';
8277
8278         Object.defineProperty(exports, "__esModule", {
8279             value: true
8280         });
8281         exports.isDropFrame = isDropFrame;
8282         exports.secondsToTimeCode = secondsToTimeCode;
8283         exports.timeCodeToSeconds = timeCodeToSeconds;
8284         exports.calculateTimeFormat = calculateTimeFormat;
8285         exports.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
8286
8287         var _mejs = _dereq_(7);
8288
8289         var _mejs2 = _interopRequireDefault(_mejs);
8290
8291         function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8292
8293         function isDropFrame() {
8294             var fps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 25;
8295
8296             return !(fps % 1 === 0);
8297         }
8298         function secondsToTimeCode(time) {
8299             var forceHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
8300             var showFrameCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
8301             var fps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25;
8302             var secondsDecimalLength = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
8303             var timeFormat = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'hh:mm:ss';
8304
8305
8306             time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
8307
8308             var dropFrames = Math.round(fps * 0.066666),
8309                 timeBase = Math.round(fps),
8310                 framesPer24Hours = Math.round(fps * 3600) * 24,
8311                 framesPer10Minutes = Math.round(fps * 600),
8312                 frameSep = isDropFrame(fps) ? ';' : ':',
8313                 hours = void 0,
8314                 minutes = void 0,
8315                 seconds = void 0,
8316                 frames = void 0,
8317                 f = Math.round(time * fps);
8318
8319             if (isDropFrame(fps)) {
8320
8321                 if (f < 0) {
8322                     f = framesPer24Hours + f;
8323                 }
8324
8325                 f = f % framesPer24Hours;
8326
8327                 var d = Math.floor(f / framesPer10Minutes);
8328                 var m = f % framesPer10Minutes;
8329                 f = f + dropFrames * 9 * d;
8330                 if (m > dropFrames) {
8331                     f = f + dropFrames * Math.floor((m - dropFrames) / Math.round(timeBase * 60 - dropFrames));
8332                 }
8333
8334                 var timeBaseDivision = Math.floor(f / timeBase);
8335
8336                 hours = Math.floor(Math.floor(timeBaseDivision / 60) / 60);
8337                 minutes = Math.floor(timeBaseDivision / 60) % 60;
8338
8339                 if (showFrameCount) {
8340                     seconds = timeBaseDivision % 60;
8341                 } else {
8342                     seconds = Math.floor(f / timeBase % 60).toFixed(secondsDecimalLength);
8343                 }
8344             } else {
8345                 hours = Math.floor(time / 3600) % 24;
8346                 minutes = Math.floor(time / 60) % 60;
8347                 if (showFrameCount) {
8348                     seconds = Math.floor(time % 60);
8349                 } else {
8350                     seconds = Math.floor(time % 60).toFixed(secondsDecimalLength);
8351                 }
8352             }
8353             hours = hours <= 0 ? 0 : hours;
8354             minutes = minutes <= 0 ? 0 : minutes;
8355             seconds = seconds <= 0 ? 0 : seconds;
8356
8357             seconds = seconds === 60 ? 0 : seconds;
8358             minutes = minutes === 60 ? 0 : minutes;
8359
8360             var timeFormatFrags = timeFormat.split(':');
8361             var timeFormatSettings = {};
8362             for (var i = 0, total = timeFormatFrags.length; i < total; ++i) {
8363                 var unique = '';
8364                 for (var j = 0, t = timeFormatFrags[i].length; j < t; j++) {
8365                     if (unique.indexOf(timeFormatFrags[i][j]) < 0) {
8366                         unique += timeFormatFrags[i][j];
8367                     }
8368                 }
8369                 if (~['f', 's', 'm', 'h'].indexOf(unique)) {
8370                     timeFormatSettings[unique] = timeFormatFrags[i].length;
8371                 }
8372             }
8373
8374             var result = forceHours || hours > 0 ? (hours < 10 && timeFormatSettings.h > 1 ? '0' + hours : hours) + ':' : '';
8375             result += (minutes < 10 && timeFormatSettings.m > 1 ? '0' + minutes : minutes) + ':';
8376             result += '' + (seconds < 10 && timeFormatSettings.s > 1 ? '0' + seconds : seconds);
8377
8378             if (showFrameCount) {
8379                 frames = (f % timeBase).toFixed(0);
8380                 frames = frames <= 0 ? 0 : frames;
8381                 result += frames < 10 && timeFormatSettings.f ? frameSep + '0' + frames : '' + frameSep + frames;
8382             }
8383
8384             return result;
8385         }
8386
8387         function timeCodeToSeconds(time) {
8388             var fps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 25;
8389
8390
8391             if (typeof time !== 'string') {
8392                 throw new TypeError('Time must be a string');
8393             }
8394
8395             if (time.indexOf(';') > 0) {
8396                 time = time.replace(';', ':');
8397             }
8398
8399             if (!/\d{2}(\:\d{2}){0,3}/i.test(time)) {
8400                 throw new TypeError('Time code must have the format `00:00:00`');
8401             }
8402
8403             var parts = time.split(':');
8404
8405             var output = void 0,
8406                 hours = 0,
8407                 minutes = 0,
8408                 seconds = 0,
8409                 frames = 0,
8410                 totalMinutes = 0,
8411                 dropFrames = Math.round(fps * 0.066666),
8412                 timeBase = Math.round(fps),
8413                 hFrames = timeBase * 3600,
8414                 mFrames = timeBase * 60;
8415
8416             switch (parts.length) {
8417                 default:
8418                 case 1:
8419                     seconds = parseInt(parts[0], 10);
8420                     break;
8421                 case 2:
8422                     minutes = parseInt(parts[0], 10);
8423                     seconds = parseInt(parts[1], 10);
8424                     break;
8425                 case 3:
8426                     hours = parseInt(parts[0], 10);
8427                     minutes = parseInt(parts[1], 10);
8428                     seconds = parseInt(parts[2], 10);
8429                     break;
8430                 case 4:
8431                     hours = parseInt(parts[0], 10);
8432                     minutes = parseInt(parts[1], 10);
8433                     seconds = parseInt(parts[2], 10);
8434                     frames = parseInt(parts[3], 10);
8435                     break;
8436             }
8437
8438             if (isDropFrame(fps)) {
8439                 totalMinutes = 60 * hours + minutes;
8440                 output = hFrames * hours + mFrames * minutes + timeBase * seconds + frames - dropFrames * (totalMinutes - Math.floor(totalMinutes / 10));
8441             } else {
8442                 output = (hFrames * hours + mFrames * minutes + fps * seconds + frames) / fps;
8443             }
8444
8445             return parseFloat(output.toFixed(3));
8446         }
8447
8448         function calculateTimeFormat(time, options) {
8449             var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 25;
8450
8451
8452             time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
8453
8454             var hours = Math.floor(time / 3600) % 24,
8455                 minutes = Math.floor(time / 60) % 60,
8456                 seconds = Math.floor(time % 60),
8457                 frames = Math.floor((time % 1 * fps).toFixed(3)),
8458                 lis = [[frames, 'f'], [seconds, 's'], [minutes, 'm'], [hours, 'h']];
8459
8460             var format = options.timeFormat,
8461                 firstTwoPlaces = format[1] === format[0],
8462                 separatorIndex = firstTwoPlaces ? 2 : 1,
8463                 separator = format.length < separatorIndex ? format[separatorIndex] : ':',
8464                 firstChar = format[0],
8465                 required = false;
8466
8467             for (var i = 0, len = lis.length; i < len; i++) {
8468                 if (~format.indexOf(lis[i][1])) {
8469                     required = true;
8470                 } else if (required) {
8471                     var hasNextValue = false;
8472                     for (var j = i; j < len; j++) {
8473                         if (lis[j][0] > 0) {
8474                             hasNextValue = true;
8475                             break;
8476                         }
8477                     }
8478
8479                     if (!hasNextValue) {
8480                         break;
8481                     }
8482
8483                     if (!firstTwoPlaces) {
8484                         format = firstChar + format;
8485                     }
8486                     format = lis[i][1] + separator + format;
8487                     if (firstTwoPlaces) {
8488                         format = lis[i][1] + format;
8489                     }
8490                     firstChar = lis[i][1];
8491                 }
8492             }
8493
8494             options.timeFormat = format;
8495         }
8496
8497         function convertSMPTEtoSeconds(SMPTE) {
8498
8499             if (typeof SMPTE !== 'string') {
8500                 throw new TypeError('Argument must be a string value');
8501             }
8502
8503             SMPTE = SMPTE.replace(',', '.');
8504
8505             var decimalLen = ~SMPTE.indexOf('.') ? SMPTE.split('.')[1].length : 0;
8506
8507             var secs = 0,
8508                 multiplier = 1;
8509
8510             SMPTE = SMPTE.split(':').reverse();
8511
8512             for (var i = 0, total = SMPTE.length; i < total; i++) {
8513                 multiplier = 1;
8514                 if (i > 0) {
8515                     multiplier = Math.pow(60, i);
8516                 }
8517                 secs += Number(SMPTE[i]) * multiplier;
8518             }
8519             return Number(secs.toFixed(decimalLen));
8520         }
8521
8522         _mejs2.default.Utils = _mejs2.default.Utils || {};
8523         _mejs2.default.Utils.secondsToTimeCode = secondsToTimeCode;
8524         _mejs2.default.Utils.timeCodeToSeconds = timeCodeToSeconds;
8525         _mejs2.default.Utils.calculateTimeFormat = calculateTimeFormat;
8526         _mejs2.default.Utils.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
8527
8528     }, { "7": 7 }]
8529 }, {}, [29, 6, 5, 15, 23, 20, 19, 21, 22, 24, 16, 18, 17, 9, 10, 11, 12, 13, 14]);

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.