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