wp/wp-includes/js/mediaelement/mediaelement.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_(9);
       
   300 
       
   301 var _general = _dereq_(18);
       
   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}((\-|_)[a-z]{2})?)|([a-z]{3}))$/i.test(args[0])) {
       
   319 			throw new TypeError('Language code must have format `xx`, `xxx`, `xx_XX` or `xx-xx`');
       
   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 },{"18":18,"7":7,"9":9}],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_(18);
       
   575 
       
   576 var _media2 = _dereq_(19);
       
   577 
       
   578 var _renderer = _dereq_(8);
       
   579 
       
   580 var _constants = _dereq_(16);
       
   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 },{"16":16,"18":18,"19":19,"2":2,"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 Object.defineProperty(exports, "__esModule", {
       
  1146 	value: true
       
  1147 });
       
  1148 var EN = exports.EN = {
       
  1149 	'mejs.plural-form': 1,
       
  1150 
       
  1151 	'mejs.download-file': 'Download File',
       
  1152 
       
  1153 	'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/',
       
  1154 
       
  1155 	'mejs.fullscreen': 'Fullscreen',
       
  1156 
       
  1157 	'mejs.play': 'Play',
       
  1158 	'mejs.pause': 'Pause',
       
  1159 
       
  1160 	'mejs.time-slider': 'Time Slider',
       
  1161 	'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.',
       
  1162 	'mejs.live-broadcast': 'Live Broadcast',
       
  1163 
       
  1164 	'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.',
       
  1165 	'mejs.unmute': 'Unmute',
       
  1166 	'mejs.mute': 'Mute',
       
  1167 	'mejs.volume-slider': 'Volume Slider',
       
  1168 
       
  1169 	'mejs.video-player': 'Video Player',
       
  1170 	'mejs.audio-player': 'Audio Player',
       
  1171 
       
  1172 	'mejs.captions-subtitles': 'Captions/Subtitles',
       
  1173 	'mejs.captions-chapters': 'Chapters',
       
  1174 	'mejs.none': 'None',
       
  1175 	'mejs.afrikaans': 'Afrikaans',
       
  1176 	'mejs.albanian': 'Albanian',
       
  1177 	'mejs.arabic': 'Arabic',
       
  1178 	'mejs.belarusian': 'Belarusian',
       
  1179 	'mejs.bulgarian': 'Bulgarian',
       
  1180 	'mejs.catalan': 'Catalan',
       
  1181 	'mejs.chinese': 'Chinese',
       
  1182 	'mejs.chinese-simplified': 'Chinese (Simplified)',
       
  1183 	'mejs.chinese-traditional': 'Chinese (Traditional)',
       
  1184 	'mejs.croatian': 'Croatian',
       
  1185 	'mejs.czech': 'Czech',
       
  1186 	'mejs.danish': 'Danish',
       
  1187 	'mejs.dutch': 'Dutch',
       
  1188 	'mejs.english': 'English',
       
  1189 	'mejs.estonian': 'Estonian',
       
  1190 	'mejs.filipino': 'Filipino',
       
  1191 	'mejs.finnish': 'Finnish',
       
  1192 	'mejs.french': 'French',
       
  1193 	'mejs.galician': 'Galician',
       
  1194 	'mejs.german': 'German',
       
  1195 	'mejs.greek': 'Greek',
       
  1196 	'mejs.haitian-creole': 'Haitian Creole',
       
  1197 	'mejs.hebrew': 'Hebrew',
       
  1198 	'mejs.hindi': 'Hindi',
       
  1199 	'mejs.hungarian': 'Hungarian',
       
  1200 	'mejs.icelandic': 'Icelandic',
       
  1201 	'mejs.indonesian': 'Indonesian',
       
  1202 	'mejs.irish': 'Irish',
       
  1203 	'mejs.italian': 'Italian',
       
  1204 	'mejs.japanese': 'Japanese',
       
  1205 	'mejs.korean': 'Korean',
       
  1206 	'mejs.latvian': 'Latvian',
       
  1207 	'mejs.lithuanian': 'Lithuanian',
       
  1208 	'mejs.macedonian': 'Macedonian',
       
  1209 	'mejs.malay': 'Malay',
       
  1210 	'mejs.maltese': 'Maltese',
       
  1211 	'mejs.norwegian': 'Norwegian',
       
  1212 	'mejs.persian': 'Persian',
       
  1213 	'mejs.polish': 'Polish',
       
  1214 	'mejs.portuguese': 'Portuguese',
       
  1215 	'mejs.romanian': 'Romanian',
       
  1216 	'mejs.russian': 'Russian',
       
  1217 	'mejs.serbian': 'Serbian',
       
  1218 	'mejs.slovak': 'Slovak',
       
  1219 	'mejs.slovenian': 'Slovenian',
       
  1220 	'mejs.spanish': 'Spanish',
       
  1221 	'mejs.swahili': 'Swahili',
       
  1222 	'mejs.swedish': 'Swedish',
       
  1223 	'mejs.tagalog': 'Tagalog',
       
  1224 	'mejs.thai': 'Thai',
       
  1225 	'mejs.turkish': 'Turkish',
       
  1226 	'mejs.ukrainian': 'Ukrainian',
       
  1227 	'mejs.vietnamese': 'Vietnamese',
       
  1228 	'mejs.welsh': 'Welsh',
       
  1229 	'mejs.yiddish': 'Yiddish'
       
  1230 };
       
  1231 
       
  1232 },{}],10:[function(_dereq_,module,exports){
       
  1233 'use strict';
       
  1234 
       
  1235 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; };
       
  1236 
       
  1237 var _window = _dereq_(3);
       
  1238 
       
  1239 var _window2 = _interopRequireDefault(_window);
       
  1240 
       
  1241 var _mejs = _dereq_(7);
       
  1242 
       
  1243 var _mejs2 = _interopRequireDefault(_mejs);
       
  1244 
       
  1245 var _renderer = _dereq_(8);
       
  1246 
       
  1247 var _general = _dereq_(18);
       
  1248 
       
  1249 var _media = _dereq_(19);
       
  1250 
       
  1251 var _constants = _dereq_(16);
       
  1252 
       
  1253 var _dom = _dereq_(17);
       
  1254 
       
  1255 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
       
  1256 
       
  1257 var NativeDash = {
       
  1258 
       
  1259 	promise: null,
       
  1260 
       
  1261 	load: function load(settings) {
       
  1262 		if (typeof dashjs !== 'undefined') {
       
  1263 			NativeDash.promise = new Promise(function (resolve) {
       
  1264 				resolve();
       
  1265 			}).then(function () {
       
  1266 				NativeDash._createPlayer(settings);
       
  1267 			});
       
  1268 		} else {
       
  1269 			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js';
       
  1270 
       
  1271 			NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path);
       
  1272 			NativeDash.promise.then(function () {
       
  1273 				NativeDash._createPlayer(settings);
       
  1274 			});
       
  1275 		}
       
  1276 
       
  1277 		return NativeDash.promise;
       
  1278 	},
       
  1279 
       
  1280 	_createPlayer: function _createPlayer(settings) {
       
  1281 		var player = dashjs.MediaPlayer().create();
       
  1282 		_window2.default['__ready__' + settings.id](player);
       
  1283 		return player;
       
  1284 	}
       
  1285 };
       
  1286 
       
  1287 var DashNativeRenderer = {
       
  1288 	name: 'native_dash',
       
  1289 	options: {
       
  1290 		prefix: 'native_dash',
       
  1291 		dash: {
       
  1292 			path: 'https://cdn.dashjs.org/latest/dash.all.min.js',
       
  1293 			debug: false,
       
  1294 			drm: {},
       
  1295 
       
  1296 			robustnessLevel: ''
       
  1297 		}
       
  1298 	},
       
  1299 
       
  1300 	canPlayType: function canPlayType(type) {
       
  1301 		return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1;
       
  1302 	},
       
  1303 
       
  1304 	create: function create(mediaElement, options, mediaFiles) {
       
  1305 
       
  1306 		var originalNode = mediaElement.originalNode,
       
  1307 		    id = mediaElement.id + '_' + options.prefix,
       
  1308 		    autoplay = originalNode.autoplay,
       
  1309 		    children = originalNode.children;
       
  1310 
       
  1311 		var node = null,
       
  1312 		    dashPlayer = null;
       
  1313 
       
  1314 		originalNode.removeAttribute('type');
       
  1315 		for (var i = 0, total = children.length; i < total; i++) {
       
  1316 			children[i].removeAttribute('type');
       
  1317 		}
       
  1318 
       
  1319 		node = originalNode.cloneNode(true);
       
  1320 		options = Object.assign(options, mediaElement.options);
       
  1321 
       
  1322 		var props = _mejs2.default.html5media.properties,
       
  1323 		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
       
  1324 		    attachNativeEvents = function attachNativeEvents(e) {
       
  1325 			if (e.type !== 'error') {
       
  1326 				var _event = (0, _general.createEvent)(e.type, mediaElement);
       
  1327 				mediaElement.dispatchEvent(_event);
       
  1328 			}
       
  1329 		},
       
  1330 		    assignGettersSetters = function assignGettersSetters(propName) {
       
  1331 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
       
  1332 
       
  1333 			node['get' + capName] = function () {
       
  1334 				return dashPlayer !== null ? node[propName] : null;
       
  1335 			};
       
  1336 
       
  1337 			node['set' + capName] = function (value) {
       
  1338 				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
       
  1339 					if (propName === 'src') {
       
  1340 						var source = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
       
  1341 						node[propName] = source;
       
  1342 						if (dashPlayer !== null) {
       
  1343 							dashPlayer.reset();
       
  1344 							for (var _i = 0, _total = events.length; _i < _total; _i++) {
       
  1345 								node.removeEventListener(events[_i], attachNativeEvents);
       
  1346 							}
       
  1347 							dashPlayer = NativeDash._createPlayer({
       
  1348 								options: options.dash,
       
  1349 								id: id
       
  1350 							});
       
  1351 
       
  1352 							if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(value.drm) === 'object') {
       
  1353 								dashPlayer.setProtectionData(value.drm);
       
  1354 								if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
       
  1355 									dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
       
  1356 								}
       
  1357 							}
       
  1358 							dashPlayer.attachSource(source);
       
  1359 							if (autoplay) {
       
  1360 								dashPlayer.play();
       
  1361 							}
       
  1362 						}
       
  1363 					} else {
       
  1364 						node[propName] = value;
       
  1365 					}
       
  1366 				}
       
  1367 			};
       
  1368 		};
       
  1369 
       
  1370 		for (var _i2 = 0, _total2 = props.length; _i2 < _total2; _i2++) {
       
  1371 			assignGettersSetters(props[_i2]);
       
  1372 		}
       
  1373 
       
  1374 		_window2.default['__ready__' + id] = function (_dashPlayer) {
       
  1375 			mediaElement.dashPlayer = dashPlayer = _dashPlayer;
       
  1376 
       
  1377 			var dashEvents = dashjs.MediaPlayer.events,
       
  1378 			    assignEvents = function assignEvents(eventName) {
       
  1379 				if (eventName === 'loadedmetadata') {
       
  1380 					dashPlayer.getDebug().setLogToBrowserConsole(options.dash.debug);
       
  1381 					dashPlayer.initialize();
       
  1382 					dashPlayer.setScheduleWhilePaused(false);
       
  1383 					dashPlayer.setFastSwitchEnabled(true);
       
  1384 					dashPlayer.attachView(node);
       
  1385 					dashPlayer.setAutoPlay(false);
       
  1386 
       
  1387 					if (_typeof(options.dash.drm) === 'object' && !_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) {
       
  1388 						dashPlayer.setProtectionData(options.dash.drm);
       
  1389 						if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
       
  1390 							dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
       
  1391 						}
       
  1392 					}
       
  1393 					dashPlayer.attachSource(node.getSrc());
       
  1394 				}
       
  1395 
       
  1396 				node.addEventListener(eventName, attachNativeEvents);
       
  1397 			};
       
  1398 
       
  1399 			for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
       
  1400 				assignEvents(events[_i3]);
       
  1401 			}
       
  1402 
       
  1403 			var assignMdashEvents = function assignMdashEvents(name, data) {
       
  1404 				if (name.toLowerCase() === 'error') {
       
  1405 					mediaElement.generateError(data.message, node.src);
       
  1406 					console.error(data);
       
  1407 				} else {
       
  1408 					var _event2 = (0, _general.createEvent)(name, mediaElement);
       
  1409 					_event2.data = data;
       
  1410 					mediaElement.dispatchEvent(_event2);
       
  1411 				}
       
  1412 			};
       
  1413 
       
  1414 			for (var eventType in dashEvents) {
       
  1415 				if (dashEvents.hasOwnProperty(eventType)) {
       
  1416 					dashPlayer.on(dashEvents[eventType], function (e) {
       
  1417 						for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
       
  1418 							args[_key - 1] = arguments[_key];
       
  1419 						}
       
  1420 
       
  1421 						return assignMdashEvents(e.type, args);
       
  1422 					});
       
  1423 				}
       
  1424 			}
       
  1425 		};
       
  1426 
       
  1427 		if (mediaFiles && mediaFiles.length > 0) {
       
  1428 			for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
       
  1429 				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
       
  1430 					node.setAttribute('src', mediaFiles[_i4].src);
       
  1431 					if (typeof mediaFiles[_i4].drm !== 'undefined') {
       
  1432 						options.dash.drm = mediaFiles[_i4].drm;
       
  1433 					}
       
  1434 					break;
       
  1435 				}
       
  1436 			}
       
  1437 		}
       
  1438 
       
  1439 		node.setAttribute('id', id);
       
  1440 
       
  1441 		originalNode.parentNode.insertBefore(node, originalNode);
       
  1442 		originalNode.autoplay = false;
       
  1443 		originalNode.style.display = 'none';
       
  1444 
       
  1445 		node.setSize = function (width, height) {
       
  1446 			node.style.width = width + 'px';
       
  1447 			node.style.height = height + 'px';
       
  1448 			return node;
       
  1449 		};
       
  1450 
       
  1451 		node.hide = function () {
       
  1452 			node.pause();
       
  1453 			node.style.display = 'none';
       
  1454 			return node;
       
  1455 		};
       
  1456 
       
  1457 		node.show = function () {
       
  1458 			node.style.display = '';
       
  1459 			return node;
       
  1460 		};
       
  1461 
       
  1462 		node.destroy = function () {
       
  1463 			if (dashPlayer !== null) {
       
  1464 				dashPlayer.reset();
       
  1465 			}
       
  1466 		};
       
  1467 
       
  1468 		var event = (0, _general.createEvent)('rendererready', node);
       
  1469 		mediaElement.dispatchEvent(event);
       
  1470 
       
  1471 		mediaElement.promises.push(NativeDash.load({
       
  1472 			options: options.dash,
       
  1473 			id: id
       
  1474 		}));
       
  1475 
       
  1476 		return node;
       
  1477 	}
       
  1478 };
       
  1479 
       
  1480 _media.typeChecks.push(function (url) {
       
  1481 	return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null;
       
  1482 });
       
  1483 
       
  1484 _renderer.renderer.add(DashNativeRenderer);
       
  1485 
       
  1486 },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],11:[function(_dereq_,module,exports){
       
  1487 'use strict';
       
  1488 
       
  1489 Object.defineProperty(exports, "__esModule", {
       
  1490 	value: true
       
  1491 });
       
  1492 exports.PluginDetector = undefined;
       
  1493 
       
  1494 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; };
       
  1495 
       
  1496 var _window = _dereq_(3);
       
  1497 
       
  1498 var _window2 = _interopRequireDefault(_window);
       
  1499 
       
  1500 var _document = _dereq_(2);
       
  1501 
       
  1502 var _document2 = _interopRequireDefault(_document);
       
  1503 
       
  1504 var _mejs = _dereq_(7);
       
  1505 
       
  1506 var _mejs2 = _interopRequireDefault(_mejs);
       
  1507 
       
  1508 var _i18n = _dereq_(5);
       
  1509 
       
  1510 var _i18n2 = _interopRequireDefault(_i18n);
       
  1511 
       
  1512 var _renderer = _dereq_(8);
       
  1513 
       
  1514 var _general = _dereq_(18);
       
  1515 
       
  1516 var _constants = _dereq_(16);
       
  1517 
       
  1518 var _media = _dereq_(19);
       
  1519 
       
  1520 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
       
  1521 
       
  1522 var PluginDetector = exports.PluginDetector = {
       
  1523 	plugins: [],
       
  1524 
       
  1525 	hasPluginVersion: function hasPluginVersion(plugin, v) {
       
  1526 		var pv = PluginDetector.plugins[plugin];
       
  1527 		v[1] = v[1] || 0;
       
  1528 		v[2] = v[2] || 0;
       
  1529 		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];
       
  1530 	},
       
  1531 
       
  1532 	addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
       
  1533 		PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
       
  1534 	},
       
  1535 
       
  1536 	detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
       
  1537 
       
  1538 		var version = [0, 0, 0],
       
  1539 		    description = void 0,
       
  1540 		    ax = void 0;
       
  1541 
       
  1542 		if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
       
  1543 			description = _constants.NAV.plugins[pluginName].description;
       
  1544 			if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
       
  1545 				version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.');
       
  1546 				for (var i = 0, total = version.length; i < total; i++) {
       
  1547 					version[i] = parseInt(version[i].match(/\d+/), 10);
       
  1548 				}
       
  1549 			}
       
  1550 		} else if (_window2.default.ActiveXObject !== undefined) {
       
  1551 			try {
       
  1552 				ax = new ActiveXObject(activeX);
       
  1553 				if (ax) {
       
  1554 					version = axDetect(ax);
       
  1555 				}
       
  1556 			} catch (e) {
       
  1557 				
       
  1558 			}
       
  1559 		}
       
  1560 		return version;
       
  1561 	}
       
  1562 };
       
  1563 
       
  1564 PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
       
  1565 	var version = [],
       
  1566 	    d = ax.GetVariable("$version");
       
  1567 
       
  1568 	if (d) {
       
  1569 		d = d.split(" ")[1].split(",");
       
  1570 		version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
       
  1571 	}
       
  1572 	return version;
       
  1573 });
       
  1574 
       
  1575 var FlashMediaElementRenderer = {
       
  1576 	create: function create(mediaElement, options, mediaFiles) {
       
  1577 
       
  1578 		var flash = {};
       
  1579 		var isActive = false;
       
  1580 
       
  1581 		flash.options = options;
       
  1582 		flash.id = mediaElement.id + '_' + flash.options.prefix;
       
  1583 		flash.mediaElement = mediaElement;
       
  1584 		flash.flashState = {};
       
  1585 		flash.flashApi = null;
       
  1586 		flash.flashApiStack = [];
       
  1587 
       
  1588 		var props = _mejs2.default.html5media.properties,
       
  1589 		    assignGettersSetters = function assignGettersSetters(propName) {
       
  1590 			flash.flashState[propName] = null;
       
  1591 
       
  1592 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
       
  1593 
       
  1594 			flash['get' + capName] = function () {
       
  1595 				if (flash.flashApi !== null) {
       
  1596 					if (typeof flash.flashApi['get_' + propName] === 'function') {
       
  1597 						var value = flash.flashApi['get_' + propName]();
       
  1598 
       
  1599 						if (propName === 'buffered') {
       
  1600 							return {
       
  1601 								start: function start() {
       
  1602 									return 0;
       
  1603 								},
       
  1604 								end: function end() {
       
  1605 									return value;
       
  1606 								},
       
  1607 								length: 1
       
  1608 							};
       
  1609 						}
       
  1610 						return value;
       
  1611 					} else {
       
  1612 						return null;
       
  1613 					}
       
  1614 				} else {
       
  1615 					return null;
       
  1616 				}
       
  1617 			};
       
  1618 
       
  1619 			flash['set' + capName] = function (value) {
       
  1620 				if (propName === 'src') {
       
  1621 					value = (0, _media.absolutizeUrl)(value);
       
  1622 				}
       
  1623 
       
  1624 				if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
       
  1625 					try {
       
  1626 						flash.flashApi['set_' + propName](value);
       
  1627 					} catch (e) {
       
  1628 						
       
  1629 					}
       
  1630 				} else {
       
  1631 					flash.flashApiStack.push({
       
  1632 						type: 'set',
       
  1633 						propName: propName,
       
  1634 						value: value
       
  1635 					});
       
  1636 				}
       
  1637 			};
       
  1638 		};
       
  1639 
       
  1640 		for (var i = 0, total = props.length; i < total; i++) {
       
  1641 			assignGettersSetters(props[i]);
       
  1642 		}
       
  1643 
       
  1644 		var methods = _mejs2.default.html5media.methods,
       
  1645 		    assignMethods = function assignMethods(methodName) {
       
  1646 			flash[methodName] = function () {
       
  1647 				if (isActive) {
       
  1648 					if (flash.flashApi !== null) {
       
  1649 						if (flash.flashApi['fire_' + methodName]) {
       
  1650 							try {
       
  1651 								flash.flashApi['fire_' + methodName]();
       
  1652 							} catch (e) {
       
  1653 								
       
  1654 							}
       
  1655 						} else {
       
  1656 							
       
  1657 						}
       
  1658 					} else {
       
  1659 						flash.flashApiStack.push({
       
  1660 							type: 'call',
       
  1661 							methodName: methodName
       
  1662 						});
       
  1663 					}
       
  1664 				}
       
  1665 			};
       
  1666 		};
       
  1667 		methods.push('stop');
       
  1668 		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
       
  1669 			assignMethods(methods[_i]);
       
  1670 		}
       
  1671 
       
  1672 		var initEvents = ['rendererready'];
       
  1673 
       
  1674 		for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
       
  1675 			var event = (0, _general.createEvent)(initEvents[_i2], flash);
       
  1676 			mediaElement.dispatchEvent(event);
       
  1677 		}
       
  1678 
       
  1679 		_window2.default['__ready__' + flash.id] = function () {
       
  1680 
       
  1681 			flash.flashReady = true;
       
  1682 			flash.flashApi = _document2.default.getElementById('__' + flash.id);
       
  1683 
       
  1684 			if (flash.flashApiStack.length) {
       
  1685 				for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
       
  1686 					var stackItem = flash.flashApiStack[_i3];
       
  1687 
       
  1688 					if (stackItem.type === 'set') {
       
  1689 						var propName = stackItem.propName,
       
  1690 						    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
       
  1691 
       
  1692 						flash['set' + capName](stackItem.value);
       
  1693 					} else if (stackItem.type === 'call') {
       
  1694 						flash[stackItem.methodName]();
       
  1695 					}
       
  1696 				}
       
  1697 			}
       
  1698 		};
       
  1699 
       
  1700 		_window2.default['__event__' + flash.id] = function (eventName, message) {
       
  1701 			var event = (0, _general.createEvent)(eventName, flash);
       
  1702 			if (message) {
       
  1703 				try {
       
  1704 					event.data = JSON.parse(message);
       
  1705 					event.details.data = JSON.parse(message);
       
  1706 				} catch (e) {
       
  1707 					event.message = message;
       
  1708 				}
       
  1709 			}
       
  1710 
       
  1711 			flash.mediaElement.dispatchEvent(event);
       
  1712 		};
       
  1713 
       
  1714 		flash.flashWrapper = _document2.default.createElement('div');
       
  1715 
       
  1716 		if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) {
       
  1717 			flash.options.shimScriptAccess = 'sameDomain';
       
  1718 		}
       
  1719 
       
  1720 		var autoplay = mediaElement.originalNode.autoplay,
       
  1721 		    flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess, 'preload=' + (mediaElement.originalNode.getAttribute('preload') || '')],
       
  1722 		    isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video',
       
  1723 		    flashHeight = isVideo ? mediaElement.originalNode.height : 1,
       
  1724 		    flashWidth = isVideo ? mediaElement.originalNode.width : 1;
       
  1725 
       
  1726 		if (mediaElement.originalNode.getAttribute('src')) {
       
  1727 			flashVars.push('src=' + mediaElement.originalNode.getAttribute('src'));
       
  1728 		}
       
  1729 
       
  1730 		if (flash.options.enablePseudoStreaming === true) {
       
  1731 			flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam);
       
  1732 			flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType);
       
  1733 		}
       
  1734 
       
  1735 		if (flash.options.streamDelimiter) {
       
  1736 			flashVars.push('streamdelimiter=' + encodeURIComponent(flash.options.streamDelimiter));
       
  1737 		}
       
  1738 
       
  1739 		if (flash.options.proxyType) {
       
  1740 			flashVars.push('proxytype=' + flash.options.proxyType);
       
  1741 		}
       
  1742 
       
  1743 		mediaElement.appendChild(flash.flashWrapper);
       
  1744 		mediaElement.originalNode.style.display = 'none';
       
  1745 
       
  1746 		var settings = [];
       
  1747 
       
  1748 		if (_constants.IS_IE || _constants.IS_EDGE) {
       
  1749 			var specialIEContainer = _document2.default.createElement('div');
       
  1750 			flash.flashWrapper.appendChild(specialIEContainer);
       
  1751 
       
  1752 			if (_constants.IS_EDGE) {
       
  1753 				settings = ['type="application/x-shockwave-flash"', 'data="' + flash.options.pluginPath + flash.options.filename + '"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '\'"'];
       
  1754 			} else {
       
  1755 				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 + '"'];
       
  1756 			}
       
  1757 
       
  1758 			if (!isVideo) {
       
  1759 				settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
       
  1760 			}
       
  1761 
       
  1762 			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>';
       
  1763 		} else {
       
  1764 
       
  1765 			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('&') + '"'];
       
  1766 
       
  1767 			if (isVideo) {
       
  1768 				settings.push('width="' + flashWidth + '"');
       
  1769 				settings.push('height="' + flashHeight + '"');
       
  1770 			} else {
       
  1771 				settings.push('style="position: fixed; left: -9999em; top: -9999em;"');
       
  1772 			}
       
  1773 
       
  1774 			flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>';
       
  1775 		}
       
  1776 
       
  1777 		flash.flashNode = flash.flashWrapper.lastChild;
       
  1778 
       
  1779 		flash.hide = function () {
       
  1780 			isActive = false;
       
  1781 			if (isVideo) {
       
  1782 				flash.flashNode.style.display = 'none';
       
  1783 			}
       
  1784 		};
       
  1785 		flash.show = function () {
       
  1786 			isActive = true;
       
  1787 			if (isVideo) {
       
  1788 				flash.flashNode.style.display = '';
       
  1789 			}
       
  1790 		};
       
  1791 		flash.setSize = function (width, height) {
       
  1792 			flash.flashNode.style.width = width + 'px';
       
  1793 			flash.flashNode.style.height = height + 'px';
       
  1794 
       
  1795 			if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') {
       
  1796 				flash.flashApi.fire_setSize(width, height);
       
  1797 			}
       
  1798 		};
       
  1799 
       
  1800 		flash.destroy = function () {
       
  1801 			flash.flashNode.remove();
       
  1802 		};
       
  1803 
       
  1804 		if (mediaFiles && mediaFiles.length > 0) {
       
  1805 			for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
       
  1806 				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
       
  1807 					flash.setSrc(mediaFiles[_i4].src);
       
  1808 					break;
       
  1809 				}
       
  1810 			}
       
  1811 		}
       
  1812 
       
  1813 		return flash;
       
  1814 	}
       
  1815 };
       
  1816 
       
  1817 var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
       
  1818 
       
  1819 if (hasFlash) {
       
  1820 	_media.typeChecks.push(function (url) {
       
  1821 		url = url.toLowerCase();
       
  1822 
       
  1823 		if (url.startsWith('rtmp')) {
       
  1824 			if (~url.indexOf('.mp3')) {
       
  1825 				return 'audio/rtmp';
       
  1826 			} else {
       
  1827 				return 'video/rtmp';
       
  1828 			}
       
  1829 		} else if (/\.og(a|g)/i.test(url)) {
       
  1830 			return 'audio/ogg';
       
  1831 		} else if (~url.indexOf('.m3u8')) {
       
  1832 			return 'application/x-mpegURL';
       
  1833 		} else if (~url.indexOf('.mpd')) {
       
  1834 			return 'application/dash+xml';
       
  1835 		} else if (~url.indexOf('.flv')) {
       
  1836 			return 'video/flv';
       
  1837 		} else {
       
  1838 			return null;
       
  1839 		}
       
  1840 	});
       
  1841 
       
  1842 	var FlashMediaElementVideoRenderer = {
       
  1843 		name: 'flash_video',
       
  1844 		options: {
       
  1845 			prefix: 'flash_video',
       
  1846 			filename: 'mediaelement-flash-video.swf',
       
  1847 			enablePseudoStreaming: false,
       
  1848 
       
  1849 			pseudoStreamingStartQueryParam: 'start',
       
  1850 
       
  1851 			pseudoStreamingType: 'byte',
       
  1852 
       
  1853 			proxyType: '',
       
  1854 
       
  1855 			streamDelimiter: ''
       
  1856 		},
       
  1857 
       
  1858 		canPlayType: function canPlayType(type) {
       
  1859 			return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase());
       
  1860 		},
       
  1861 
       
  1862 		create: FlashMediaElementRenderer.create
       
  1863 
       
  1864 	};
       
  1865 	_renderer.renderer.add(FlashMediaElementVideoRenderer);
       
  1866 
       
  1867 	var FlashMediaElementHlsVideoRenderer = {
       
  1868 		name: 'flash_hls',
       
  1869 		options: {
       
  1870 			prefix: 'flash_hls',
       
  1871 			filename: 'mediaelement-flash-video-hls.swf'
       
  1872 		},
       
  1873 
       
  1874 		canPlayType: function canPlayType(type) {
       
  1875 			return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase());
       
  1876 		},
       
  1877 
       
  1878 		create: FlashMediaElementRenderer.create
       
  1879 	};
       
  1880 	_renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
       
  1881 
       
  1882 	var FlashMediaElementMdashVideoRenderer = {
       
  1883 		name: 'flash_dash',
       
  1884 		options: {
       
  1885 			prefix: 'flash_dash',
       
  1886 			filename: 'mediaelement-flash-video-mdash.swf'
       
  1887 		},
       
  1888 
       
  1889 		canPlayType: function canPlayType(type) {
       
  1890 			return ~['application/dash+xml'].indexOf(type.toLowerCase());
       
  1891 		},
       
  1892 
       
  1893 		create: FlashMediaElementRenderer.create
       
  1894 	};
       
  1895 	_renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
       
  1896 
       
  1897 	var FlashMediaElementAudioRenderer = {
       
  1898 		name: 'flash_audio',
       
  1899 		options: {
       
  1900 			prefix: 'flash_audio',
       
  1901 			filename: 'mediaelement-flash-audio.swf'
       
  1902 		},
       
  1903 
       
  1904 		canPlayType: function canPlayType(type) {
       
  1905 			return ~['audio/mp3'].indexOf(type.toLowerCase());
       
  1906 		},
       
  1907 
       
  1908 		create: FlashMediaElementRenderer.create
       
  1909 	};
       
  1910 	_renderer.renderer.add(FlashMediaElementAudioRenderer);
       
  1911 
       
  1912 	var FlashMediaElementAudioOggRenderer = {
       
  1913 		name: 'flash_audio_ogg',
       
  1914 		options: {
       
  1915 			prefix: 'flash_audio_ogg',
       
  1916 			filename: 'mediaelement-flash-audio-ogg.swf'
       
  1917 		},
       
  1918 
       
  1919 		canPlayType: function canPlayType(type) {
       
  1920 			return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase());
       
  1921 		},
       
  1922 
       
  1923 		create: FlashMediaElementRenderer.create
       
  1924 	};
       
  1925 	_renderer.renderer.add(FlashMediaElementAudioOggRenderer);
       
  1926 }
       
  1927 
       
  1928 },{"16":16,"18":18,"19":19,"2":2,"3":3,"5":5,"7":7,"8":8}],12:[function(_dereq_,module,exports){
       
  1929 'use strict';
       
  1930 
       
  1931 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; };
       
  1932 
       
  1933 var _window = _dereq_(3);
       
  1934 
       
  1935 var _window2 = _interopRequireDefault(_window);
       
  1936 
       
  1937 var _mejs = _dereq_(7);
       
  1938 
       
  1939 var _mejs2 = _interopRequireDefault(_mejs);
       
  1940 
       
  1941 var _renderer = _dereq_(8);
       
  1942 
       
  1943 var _general = _dereq_(18);
       
  1944 
       
  1945 var _constants = _dereq_(16);
       
  1946 
       
  1947 var _media = _dereq_(19);
       
  1948 
       
  1949 var _dom = _dereq_(17);
       
  1950 
       
  1951 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
       
  1952 
       
  1953 var NativeFlv = {
       
  1954 
       
  1955 	promise: null,
       
  1956 
       
  1957 	load: function load(settings) {
       
  1958 		if (typeof flvjs !== 'undefined') {
       
  1959 			NativeFlv.promise = new Promise(function (resolve) {
       
  1960 				resolve();
       
  1961 			}).then(function () {
       
  1962 				NativeFlv._createPlayer(settings);
       
  1963 			});
       
  1964 		} else {
       
  1965 			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';
       
  1966 
       
  1967 			NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path);
       
  1968 			NativeFlv.promise.then(function () {
       
  1969 				NativeFlv._createPlayer(settings);
       
  1970 			});
       
  1971 		}
       
  1972 
       
  1973 		return NativeFlv.promise;
       
  1974 	},
       
  1975 
       
  1976 	_createPlayer: function _createPlayer(settings) {
       
  1977 		flvjs.LoggingControl.enableDebug = settings.options.debug;
       
  1978 		flvjs.LoggingControl.enableVerbose = settings.options.debug;
       
  1979 		var player = flvjs.createPlayer(settings.options, settings.configs);
       
  1980 		_window2.default['__ready__' + settings.id](player);
       
  1981 		return player;
       
  1982 	}
       
  1983 };
       
  1984 
       
  1985 var FlvNativeRenderer = {
       
  1986 	name: 'native_flv',
       
  1987 	options: {
       
  1988 		prefix: 'native_flv',
       
  1989 		flv: {
       
  1990 			path: 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.3.3/flv.min.js',
       
  1991 
       
  1992 			cors: true,
       
  1993 			debug: false
       
  1994 		}
       
  1995 	},
       
  1996 
       
  1997 	canPlayType: function canPlayType(type) {
       
  1998 		return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1;
       
  1999 	},
       
  2000 
       
  2001 	create: function create(mediaElement, options, mediaFiles) {
       
  2002 
       
  2003 		var originalNode = mediaElement.originalNode,
       
  2004 		    id = mediaElement.id + '_' + options.prefix;
       
  2005 
       
  2006 		var node = null,
       
  2007 		    flvPlayer = null;
       
  2008 
       
  2009 		node = originalNode.cloneNode(true);
       
  2010 		options = Object.assign(options, mediaElement.options);
       
  2011 
       
  2012 		var props = _mejs2.default.html5media.properties,
       
  2013 		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
       
  2014 		    attachNativeEvents = function attachNativeEvents(e) {
       
  2015 			if (e.type !== 'error') {
       
  2016 				var _event = (0, _general.createEvent)(e.type, mediaElement);
       
  2017 				mediaElement.dispatchEvent(_event);
       
  2018 			}
       
  2019 		},
       
  2020 		    assignGettersSetters = function assignGettersSetters(propName) {
       
  2021 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
       
  2022 
       
  2023 			node['get' + capName] = function () {
       
  2024 				return flvPlayer !== null ? node[propName] : null;
       
  2025 			};
       
  2026 
       
  2027 			node['set' + capName] = function (value) {
       
  2028 				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
       
  2029 					if (propName === 'src') {
       
  2030 						node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
       
  2031 						if (flvPlayer !== null) {
       
  2032 							var _flvOptions = {};
       
  2033 							_flvOptions.type = 'flv';
       
  2034 							_flvOptions.url = value;
       
  2035 							_flvOptions.cors = options.flv.cors;
       
  2036 							_flvOptions.debug = options.flv.debug;
       
  2037 							_flvOptions.path = options.flv.path;
       
  2038 							var _flvConfigs = options.flv.configs;
       
  2039 
       
  2040 							flvPlayer.destroy();
       
  2041 							for (var i = 0, total = events.length; i < total; i++) {
       
  2042 								node.removeEventListener(events[i], attachNativeEvents);
       
  2043 							}
       
  2044 							flvPlayer = NativeFlv._createPlayer({
       
  2045 								options: _flvOptions,
       
  2046 								configs: _flvConfigs,
       
  2047 								id: id
       
  2048 							});
       
  2049 							flvPlayer.attachMediaElement(node);
       
  2050 							flvPlayer.load();
       
  2051 						}
       
  2052 					} else {
       
  2053 						node[propName] = value;
       
  2054 					}
       
  2055 				}
       
  2056 			};
       
  2057 		};
       
  2058 
       
  2059 		for (var i = 0, total = props.length; i < total; i++) {
       
  2060 			assignGettersSetters(props[i]);
       
  2061 		}
       
  2062 
       
  2063 		_window2.default['__ready__' + id] = function (_flvPlayer) {
       
  2064 			mediaElement.flvPlayer = flvPlayer = _flvPlayer;
       
  2065 
       
  2066 			var flvEvents = flvjs.Events,
       
  2067 			    assignEvents = function assignEvents(eventName) {
       
  2068 				if (eventName === 'loadedmetadata') {
       
  2069 					flvPlayer.unload();
       
  2070 					flvPlayer.detachMediaElement();
       
  2071 					flvPlayer.attachMediaElement(node);
       
  2072 					flvPlayer.load();
       
  2073 				}
       
  2074 
       
  2075 				node.addEventListener(eventName, attachNativeEvents);
       
  2076 			};
       
  2077 
       
  2078 			for (var _i = 0, _total = events.length; _i < _total; _i++) {
       
  2079 				assignEvents(events[_i]);
       
  2080 			}
       
  2081 
       
  2082 			var assignFlvEvents = function assignFlvEvents(name, data) {
       
  2083 				if (name === 'error') {
       
  2084 					var message = data[0] + ': ' + data[1] + ' ' + data[2].msg;
       
  2085 					mediaElement.generateError(message, node.src);
       
  2086 				} else {
       
  2087 					var _event2 = (0, _general.createEvent)(name, mediaElement);
       
  2088 					_event2.data = data;
       
  2089 					mediaElement.dispatchEvent(_event2);
       
  2090 				}
       
  2091 			};
       
  2092 
       
  2093 			var _loop = function _loop(eventType) {
       
  2094 				if (flvEvents.hasOwnProperty(eventType)) {
       
  2095 					flvPlayer.on(flvEvents[eventType], function () {
       
  2096 						for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
       
  2097 							args[_key] = arguments[_key];
       
  2098 						}
       
  2099 
       
  2100 						return assignFlvEvents(flvEvents[eventType], args);
       
  2101 					});
       
  2102 				}
       
  2103 			};
       
  2104 
       
  2105 			for (var eventType in flvEvents) {
       
  2106 				_loop(eventType);
       
  2107 			}
       
  2108 		};
       
  2109 
       
  2110 		if (mediaFiles && mediaFiles.length > 0) {
       
  2111 			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
       
  2112 				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
       
  2113 					node.setAttribute('src', mediaFiles[_i2].src);
       
  2114 					break;
       
  2115 				}
       
  2116 			}
       
  2117 		}
       
  2118 
       
  2119 		node.setAttribute('id', id);
       
  2120 
       
  2121 		originalNode.parentNode.insertBefore(node, originalNode);
       
  2122 		originalNode.autoplay = false;
       
  2123 		originalNode.style.display = 'none';
       
  2124 
       
  2125 		var flvOptions = {};
       
  2126 		flvOptions.type = 'flv';
       
  2127 		flvOptions.url = node.src;
       
  2128 		flvOptions.cors = options.flv.cors;
       
  2129 		flvOptions.debug = options.flv.debug;
       
  2130 		flvOptions.path = options.flv.path;
       
  2131 		var flvConfigs = options.flv.configs;
       
  2132 
       
  2133 		node.setSize = function (width, height) {
       
  2134 			node.style.width = width + 'px';
       
  2135 			node.style.height = height + 'px';
       
  2136 			return node;
       
  2137 		};
       
  2138 
       
  2139 		node.hide = function () {
       
  2140 			if (flvPlayer !== null) {
       
  2141 				flvPlayer.pause();
       
  2142 			}
       
  2143 			node.style.display = 'none';
       
  2144 			return node;
       
  2145 		};
       
  2146 
       
  2147 		node.show = function () {
       
  2148 			node.style.display = '';
       
  2149 			return node;
       
  2150 		};
       
  2151 
       
  2152 		node.destroy = function () {
       
  2153 			if (flvPlayer !== null) {
       
  2154 				flvPlayer.destroy();
       
  2155 			}
       
  2156 		};
       
  2157 
       
  2158 		var event = (0, _general.createEvent)('rendererready', node);
       
  2159 		mediaElement.dispatchEvent(event);
       
  2160 
       
  2161 		mediaElement.promises.push(NativeFlv.load({
       
  2162 			options: flvOptions,
       
  2163 			configs: flvConfigs,
       
  2164 			id: id
       
  2165 		}));
       
  2166 
       
  2167 		return node;
       
  2168 	}
       
  2169 };
       
  2170 
       
  2171 _media.typeChecks.push(function (url) {
       
  2172 	return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null;
       
  2173 });
       
  2174 
       
  2175 _renderer.renderer.add(FlvNativeRenderer);
       
  2176 
       
  2177 },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],13:[function(_dereq_,module,exports){
       
  2178 'use strict';
       
  2179 
       
  2180 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; };
       
  2181 
       
  2182 var _window = _dereq_(3);
       
  2183 
       
  2184 var _window2 = _interopRequireDefault(_window);
       
  2185 
       
  2186 var _mejs = _dereq_(7);
       
  2187 
       
  2188 var _mejs2 = _interopRequireDefault(_mejs);
       
  2189 
       
  2190 var _renderer = _dereq_(8);
       
  2191 
       
  2192 var _general = _dereq_(18);
       
  2193 
       
  2194 var _constants = _dereq_(16);
       
  2195 
       
  2196 var _media = _dereq_(19);
       
  2197 
       
  2198 var _dom = _dereq_(17);
       
  2199 
       
  2200 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
       
  2201 
       
  2202 var NativeHls = {
       
  2203 
       
  2204 	promise: null,
       
  2205 
       
  2206 	load: function load(settings) {
       
  2207 		if (typeof Hls !== 'undefined') {
       
  2208 			NativeHls.promise = new Promise(function (resolve) {
       
  2209 				resolve();
       
  2210 			}).then(function () {
       
  2211 				NativeHls._createPlayer(settings);
       
  2212 			});
       
  2213 		} else {
       
  2214 			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';
       
  2215 
       
  2216 			NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path);
       
  2217 			NativeHls.promise.then(function () {
       
  2218 				NativeHls._createPlayer(settings);
       
  2219 			});
       
  2220 		}
       
  2221 
       
  2222 		return NativeHls.promise;
       
  2223 	},
       
  2224 
       
  2225 	_createPlayer: function _createPlayer(settings) {
       
  2226 		var player = new Hls(settings.options);
       
  2227 		_window2.default['__ready__' + settings.id](player);
       
  2228 		return player;
       
  2229 	}
       
  2230 };
       
  2231 
       
  2232 var HlsNativeRenderer = {
       
  2233 	name: 'native_hls',
       
  2234 	options: {
       
  2235 		prefix: 'native_hls',
       
  2236 		hls: {
       
  2237 			path: 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/0.8.4/hls.min.js',
       
  2238 
       
  2239 			autoStartLoad: false,
       
  2240 			debug: false
       
  2241 		}
       
  2242 	},
       
  2243 
       
  2244 	canPlayType: function canPlayType(type) {
       
  2245 		return _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1;
       
  2246 	},
       
  2247 
       
  2248 	create: function create(mediaElement, options, mediaFiles) {
       
  2249 
       
  2250 		var originalNode = mediaElement.originalNode,
       
  2251 		    id = mediaElement.id + '_' + options.prefix,
       
  2252 		    preload = originalNode.getAttribute('preload'),
       
  2253 		    autoplay = originalNode.autoplay;
       
  2254 
       
  2255 		var hlsPlayer = null,
       
  2256 		    node = null,
       
  2257 		    index = 0,
       
  2258 		    total = mediaFiles.length;
       
  2259 
       
  2260 		node = originalNode.cloneNode(true);
       
  2261 		options = Object.assign(options, mediaElement.options);
       
  2262 		options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
       
  2263 
       
  2264 		var props = _mejs2.default.html5media.properties,
       
  2265 		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
       
  2266 		    attachNativeEvents = function attachNativeEvents(e) {
       
  2267 			if (e.type !== 'error') {
       
  2268 				var _event = (0, _general.createEvent)(e.type, mediaElement);
       
  2269 				mediaElement.dispatchEvent(_event);
       
  2270 			}
       
  2271 		},
       
  2272 		    assignGettersSetters = function assignGettersSetters(propName) {
       
  2273 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
       
  2274 
       
  2275 			node['get' + capName] = function () {
       
  2276 				return hlsPlayer !== null ? node[propName] : null;
       
  2277 			};
       
  2278 
       
  2279 			node['set' + capName] = function (value) {
       
  2280 				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
       
  2281 					if (propName === 'src') {
       
  2282 						node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
       
  2283 						if (hlsPlayer !== null) {
       
  2284 							hlsPlayer.destroy();
       
  2285 							for (var i = 0, _total = events.length; i < _total; i++) {
       
  2286 								node.removeEventListener(events[i], attachNativeEvents);
       
  2287 							}
       
  2288 							hlsPlayer = NativeHls._createPlayer({
       
  2289 								options: options.hls,
       
  2290 								id: id
       
  2291 							});
       
  2292 							hlsPlayer.loadSource(value);
       
  2293 							hlsPlayer.attachMedia(node);
       
  2294 						}
       
  2295 					} else {
       
  2296 						node[propName] = value;
       
  2297 					}
       
  2298 				}
       
  2299 			};
       
  2300 		};
       
  2301 
       
  2302 		for (var i = 0, _total2 = props.length; i < _total2; i++) {
       
  2303 			assignGettersSetters(props[i]);
       
  2304 		}
       
  2305 
       
  2306 		_window2.default['__ready__' + id] = function (_hlsPlayer) {
       
  2307 			mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;
       
  2308 			var hlsEvents = Hls.Events,
       
  2309 			    assignEvents = function assignEvents(eventName) {
       
  2310 				if (eventName === 'loadedmetadata') {
       
  2311 					var url = mediaElement.originalNode.src;
       
  2312 					hlsPlayer.detachMedia();
       
  2313 					hlsPlayer.loadSource(url);
       
  2314 					hlsPlayer.attachMedia(node);
       
  2315 				}
       
  2316 
       
  2317 				node.addEventListener(eventName, attachNativeEvents);
       
  2318 			};
       
  2319 
       
  2320 			for (var _i = 0, _total3 = events.length; _i < _total3; _i++) {
       
  2321 				assignEvents(events[_i]);
       
  2322 			}
       
  2323 
       
  2324 			var recoverDecodingErrorDate = void 0,
       
  2325 			    recoverSwapAudioCodecDate = void 0;
       
  2326 			var assignHlsEvents = function assignHlsEvents(name, data) {
       
  2327 				if (name === 'hlsError') {
       
  2328 					console.warn(data);
       
  2329 					data = data[1];
       
  2330 
       
  2331 					if (data.fatal) {
       
  2332 						switch (data.type) {
       
  2333 							case 'mediaError':
       
  2334 								var now = new Date().getTime();
       
  2335 								if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) {
       
  2336 									recoverDecodingErrorDate = new Date().getTime();
       
  2337 									hlsPlayer.recoverMediaError();
       
  2338 								} else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) {
       
  2339 									recoverSwapAudioCodecDate = new Date().getTime();
       
  2340 									console.warn('Attempting to swap Audio Codec and recover from media error');
       
  2341 									hlsPlayer.swapAudioCodec();
       
  2342 									hlsPlayer.recoverMediaError();
       
  2343 								} else {
       
  2344 									var message = 'Cannot recover, last media error recovery failed';
       
  2345 									mediaElement.generateError(message, node.src);
       
  2346 									console.error(message);
       
  2347 								}
       
  2348 								break;
       
  2349 							case 'networkError':
       
  2350 								if (data.details === 'manifestLoadError') {
       
  2351 									if (index < total && mediaFiles[index + 1] !== undefined) {
       
  2352 										node.setSrc(mediaFiles[index++].src);
       
  2353 										node.load();
       
  2354 										node.play();
       
  2355 									} else {
       
  2356 										var _message = 'Network error';
       
  2357 										mediaElement.generateError(_message, mediaFiles);
       
  2358 										console.error(_message);
       
  2359 									}
       
  2360 								} else {
       
  2361 									var _message2 = 'Network error';
       
  2362 									mediaElement.generateError(_message2, mediaFiles);
       
  2363 									console.error(_message2);
       
  2364 								}
       
  2365 								break;
       
  2366 							default:
       
  2367 								hlsPlayer.destroy();
       
  2368 								break;
       
  2369 						}
       
  2370 					}
       
  2371 				} else {
       
  2372 					var _event2 = (0, _general.createEvent)(name, mediaElement);
       
  2373 					_event2.data = data;
       
  2374 					mediaElement.dispatchEvent(_event2);
       
  2375 				}
       
  2376 			};
       
  2377 
       
  2378 			var _loop = function _loop(eventType) {
       
  2379 				if (hlsEvents.hasOwnProperty(eventType)) {
       
  2380 					hlsPlayer.on(hlsEvents[eventType], function () {
       
  2381 						for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
       
  2382 							args[_key] = arguments[_key];
       
  2383 						}
       
  2384 
       
  2385 						return assignHlsEvents(hlsEvents[eventType], args);
       
  2386 					});
       
  2387 				}
       
  2388 			};
       
  2389 
       
  2390 			for (var eventType in hlsEvents) {
       
  2391 				_loop(eventType);
       
  2392 			}
       
  2393 		};
       
  2394 
       
  2395 		if (total > 0) {
       
  2396 			for (; index < total; index++) {
       
  2397 				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
       
  2398 					node.setAttribute('src', mediaFiles[index].src);
       
  2399 					break;
       
  2400 				}
       
  2401 			}
       
  2402 		}
       
  2403 
       
  2404 		if (preload !== 'auto' && !autoplay) {
       
  2405 			node.addEventListener('play', function () {
       
  2406 				if (hlsPlayer !== null) {
       
  2407 					hlsPlayer.startLoad();
       
  2408 				}
       
  2409 			});
       
  2410 
       
  2411 			node.addEventListener('pause', function () {
       
  2412 				if (hlsPlayer !== null) {
       
  2413 					hlsPlayer.stopLoad();
       
  2414 				}
       
  2415 			});
       
  2416 		}
       
  2417 
       
  2418 		node.setAttribute('id', id);
       
  2419 
       
  2420 		originalNode.parentNode.insertBefore(node, originalNode);
       
  2421 		originalNode.autoplay = false;
       
  2422 		originalNode.style.display = 'none';
       
  2423 
       
  2424 		node.setSize = function (width, height) {
       
  2425 			node.style.width = width + 'px';
       
  2426 			node.style.height = height + 'px';
       
  2427 			return node;
       
  2428 		};
       
  2429 
       
  2430 		node.hide = function () {
       
  2431 			node.pause();
       
  2432 			node.style.display = 'none';
       
  2433 			return node;
       
  2434 		};
       
  2435 
       
  2436 		node.show = function () {
       
  2437 			node.style.display = '';
       
  2438 			return node;
       
  2439 		};
       
  2440 
       
  2441 		node.destroy = function () {
       
  2442 			if (hlsPlayer !== null) {
       
  2443 				hlsPlayer.stopLoad();
       
  2444 				hlsPlayer.destroy();
       
  2445 			}
       
  2446 		};
       
  2447 
       
  2448 		var event = (0, _general.createEvent)('rendererready', node);
       
  2449 		mediaElement.dispatchEvent(event);
       
  2450 
       
  2451 		mediaElement.promises.push(NativeHls.load({
       
  2452 			options: options.hls,
       
  2453 			id: id
       
  2454 		}));
       
  2455 
       
  2456 		return node;
       
  2457 	}
       
  2458 };
       
  2459 
       
  2460 _media.typeChecks.push(function (url) {
       
  2461 	return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;
       
  2462 });
       
  2463 
       
  2464 _renderer.renderer.add(HlsNativeRenderer);
       
  2465 
       
  2466 },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],14:[function(_dereq_,module,exports){
       
  2467 'use strict';
       
  2468 
       
  2469 var _window = _dereq_(3);
       
  2470 
       
  2471 var _window2 = _interopRequireDefault(_window);
       
  2472 
       
  2473 var _document = _dereq_(2);
       
  2474 
       
  2475 var _document2 = _interopRequireDefault(_document);
       
  2476 
       
  2477 var _mejs = _dereq_(7);
       
  2478 
       
  2479 var _mejs2 = _interopRequireDefault(_mejs);
       
  2480 
       
  2481 var _renderer = _dereq_(8);
       
  2482 
       
  2483 var _general = _dereq_(18);
       
  2484 
       
  2485 var _constants = _dereq_(16);
       
  2486 
       
  2487 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
       
  2488 
       
  2489 var HtmlMediaElement = {
       
  2490 	name: 'html5',
       
  2491 	options: {
       
  2492 		prefix: 'html5'
       
  2493 	},
       
  2494 
       
  2495 	canPlayType: function canPlayType(type) {
       
  2496 
       
  2497 		var mediaElement = _document2.default.createElement('video');
       
  2498 
       
  2499 		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) {
       
  2500 			return 'yes';
       
  2501 		} else if (mediaElement.canPlayType) {
       
  2502 			return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, '');
       
  2503 		} else {
       
  2504 			return '';
       
  2505 		}
       
  2506 	},
       
  2507 
       
  2508 	create: function create(mediaElement, options, mediaFiles) {
       
  2509 
       
  2510 		var id = mediaElement.id + '_' + options.prefix;
       
  2511 		var isActive = false;
       
  2512 
       
  2513 		var node = null;
       
  2514 
       
  2515 		if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
       
  2516 			node = _document2.default.createElement('audio');
       
  2517 			mediaElement.appendChild(node);
       
  2518 		} else {
       
  2519 			node = mediaElement.originalNode;
       
  2520 		}
       
  2521 
       
  2522 		node.setAttribute('id', id);
       
  2523 
       
  2524 		var props = _mejs2.default.html5media.properties,
       
  2525 		    assignGettersSetters = function assignGettersSetters(propName) {
       
  2526 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
       
  2527 
       
  2528 			node['get' + capName] = function () {
       
  2529 				return node[propName];
       
  2530 			};
       
  2531 
       
  2532 			node['set' + capName] = function (value) {
       
  2533 				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
       
  2534 					node[propName] = value;
       
  2535 				}
       
  2536 			};
       
  2537 		};
       
  2538 
       
  2539 		for (var i = 0, _total = props.length; i < _total; i++) {
       
  2540 			assignGettersSetters(props[i]);
       
  2541 		}
       
  2542 
       
  2543 		var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
       
  2544 		    assignEvents = function assignEvents(eventName) {
       
  2545 			node.addEventListener(eventName, function (e) {
       
  2546 				if (isActive) {
       
  2547 					var _event = (0, _general.createEvent)(e.type, e.target);
       
  2548 					mediaElement.dispatchEvent(_event);
       
  2549 				}
       
  2550 			});
       
  2551 		};
       
  2552 
       
  2553 		for (var _i = 0, _total2 = events.length; _i < _total2; _i++) {
       
  2554 			assignEvents(events[_i]);
       
  2555 		}
       
  2556 
       
  2557 		node.setSize = function (width, height) {
       
  2558 			node.style.width = width + 'px';
       
  2559 			node.style.height = height + 'px';
       
  2560 			return node;
       
  2561 		};
       
  2562 
       
  2563 		node.hide = function () {
       
  2564 			isActive = false;
       
  2565 			node.style.display = 'none';
       
  2566 
       
  2567 			return node;
       
  2568 		};
       
  2569 
       
  2570 		node.show = function () {
       
  2571 			isActive = true;
       
  2572 			node.style.display = '';
       
  2573 
       
  2574 			return node;
       
  2575 		};
       
  2576 
       
  2577 		var index = 0,
       
  2578 		    total = mediaFiles.length;
       
  2579 		if (total > 0) {
       
  2580 			for (; index < total; index++) {
       
  2581 				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
       
  2582 					node.setAttribute('src', mediaFiles[index].src);
       
  2583 					break;
       
  2584 				}
       
  2585 			}
       
  2586 		}
       
  2587 
       
  2588 		node.addEventListener('error', function (e) {
       
  2589 			if (e.target.error.code === 4 && isActive) {
       
  2590 				if (index < total && mediaFiles[index + 1] !== undefined) {
       
  2591 					node.src = mediaFiles[index++].src;
       
  2592 					node.load();
       
  2593 					node.play();
       
  2594 				} else {
       
  2595 					mediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles);
       
  2596 				}
       
  2597 			}
       
  2598 		});
       
  2599 
       
  2600 		var event = (0, _general.createEvent)('rendererready', node);
       
  2601 		mediaElement.dispatchEvent(event);
       
  2602 
       
  2603 		return node;
       
  2604 	}
       
  2605 };
       
  2606 
       
  2607 _window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement;
       
  2608 
       
  2609 _renderer.renderer.add(HtmlMediaElement);
       
  2610 
       
  2611 },{"16":16,"18":18,"2":2,"3":3,"7":7,"8":8}],15:[function(_dereq_,module,exports){
       
  2612 'use strict';
       
  2613 
       
  2614 var _window = _dereq_(3);
       
  2615 
       
  2616 var _window2 = _interopRequireDefault(_window);
       
  2617 
       
  2618 var _document = _dereq_(2);
       
  2619 
       
  2620 var _document2 = _interopRequireDefault(_document);
       
  2621 
       
  2622 var _mejs = _dereq_(7);
       
  2623 
       
  2624 var _mejs2 = _interopRequireDefault(_mejs);
       
  2625 
       
  2626 var _renderer = _dereq_(8);
       
  2627 
       
  2628 var _general = _dereq_(18);
       
  2629 
       
  2630 var _media = _dereq_(19);
       
  2631 
       
  2632 var _dom = _dereq_(17);
       
  2633 
       
  2634 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
       
  2635 
       
  2636 var YouTubeApi = {
       
  2637 	isIframeStarted: false,
       
  2638 
       
  2639 	isIframeLoaded: false,
       
  2640 
       
  2641 	iframeQueue: [],
       
  2642 
       
  2643 	enqueueIframe: function enqueueIframe(settings) {
       
  2644 		YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;
       
  2645 
       
  2646 		if (YouTubeApi.isLoaded) {
       
  2647 			YouTubeApi.createIframe(settings);
       
  2648 		} else {
       
  2649 			YouTubeApi.loadIframeApi();
       
  2650 			YouTubeApi.iframeQueue.push(settings);
       
  2651 		}
       
  2652 	},
       
  2653 
       
  2654 	loadIframeApi: function loadIframeApi() {
       
  2655 		if (!YouTubeApi.isIframeStarted) {
       
  2656 			(0, _dom.loadScript)('https://www.youtube.com/player_api');
       
  2657 			YouTubeApi.isIframeStarted = true;
       
  2658 		}
       
  2659 	},
       
  2660 
       
  2661 	iFrameReady: function iFrameReady() {
       
  2662 
       
  2663 		YouTubeApi.isLoaded = true;
       
  2664 		YouTubeApi.isIframeLoaded = true;
       
  2665 
       
  2666 		while (YouTubeApi.iframeQueue.length > 0) {
       
  2667 			var settings = YouTubeApi.iframeQueue.pop();
       
  2668 			YouTubeApi.createIframe(settings);
       
  2669 		}
       
  2670 	},
       
  2671 
       
  2672 	createIframe: function createIframe(settings) {
       
  2673 		return new YT.Player(settings.containerId, settings);
       
  2674 	},
       
  2675 
       
  2676 	getYouTubeId: function getYouTubeId(url) {
       
  2677 
       
  2678 		var youTubeId = '';
       
  2679 
       
  2680 		if (url.indexOf('?') > 0) {
       
  2681 			youTubeId = YouTubeApi.getYouTubeIdFromParam(url);
       
  2682 
       
  2683 			if (youTubeId === '') {
       
  2684 				youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
       
  2685 			}
       
  2686 		} else {
       
  2687 			youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
       
  2688 		}
       
  2689 
       
  2690 		var id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1);
       
  2691 		youTubeId = id.split('?');
       
  2692 		return youTubeId[0];
       
  2693 	},
       
  2694 
       
  2695 	getYouTubeIdFromParam: function getYouTubeIdFromParam(url) {
       
  2696 
       
  2697 		if (url === undefined || url === null || !url.trim().length) {
       
  2698 			return null;
       
  2699 		}
       
  2700 
       
  2701 		var parts = url.split('?'),
       
  2702 		    parameters = parts[1].split('&');
       
  2703 
       
  2704 		var youTubeId = '';
       
  2705 
       
  2706 		for (var i = 0, total = parameters.length; i < total; i++) {
       
  2707 			var paramParts = parameters[i].split('=');
       
  2708 			if (paramParts[0] === 'v') {
       
  2709 				youTubeId = paramParts[1];
       
  2710 				break;
       
  2711 			}
       
  2712 		}
       
  2713 
       
  2714 		return youTubeId;
       
  2715 	},
       
  2716 
       
  2717 	getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {
       
  2718 
       
  2719 		if (url === undefined || url === null || !url.trim().length) {
       
  2720 			return null;
       
  2721 		}
       
  2722 
       
  2723 		var parts = url.split('?');
       
  2724 		url = parts[0];
       
  2725 		return url.substring(url.lastIndexOf('/') + 1);
       
  2726 	},
       
  2727 
       
  2728 	getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {
       
  2729 		if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) {
       
  2730 			return url;
       
  2731 		}
       
  2732 
       
  2733 		var parts = url.split('/');
       
  2734 		parts[2] = parts[2].replace('.com', '-nocookie.com');
       
  2735 		return parts.join('/');
       
  2736 	}
       
  2737 };
       
  2738 
       
  2739 var YouTubeIframeRenderer = {
       
  2740 	name: 'youtube_iframe',
       
  2741 
       
  2742 	options: {
       
  2743 		prefix: 'youtube_iframe',
       
  2744 
       
  2745 		youtube: {
       
  2746 			autoplay: 0,
       
  2747 			controls: 0,
       
  2748 			disablekb: 1,
       
  2749 			end: 0,
       
  2750 			loop: 0,
       
  2751 			modestbranding: 0,
       
  2752 			playsinline: 0,
       
  2753 			rel: 0,
       
  2754 			showinfo: 0,
       
  2755 			start: 0,
       
  2756 			iv_load_policy: 3,
       
  2757 
       
  2758 			nocookie: false,
       
  2759 
       
  2760 			imageQuality: null
       
  2761 		}
       
  2762 	},
       
  2763 
       
  2764 	canPlayType: function canPlayType(type) {
       
  2765 		return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase());
       
  2766 	},
       
  2767 
       
  2768 	create: function create(mediaElement, options, mediaFiles) {
       
  2769 
       
  2770 		var youtube = {},
       
  2771 		    apiStack = [],
       
  2772 		    readyState = 4;
       
  2773 
       
  2774 		var youTubeApi = null,
       
  2775 		    paused = true,
       
  2776 		    ended = false,
       
  2777 		    youTubeIframe = null,
       
  2778 		    volume = 1;
       
  2779 
       
  2780 		youtube.options = options;
       
  2781 		youtube.id = mediaElement.id + '_' + options.prefix;
       
  2782 		youtube.mediaElement = mediaElement;
       
  2783 
       
  2784 		var props = _mejs2.default.html5media.properties,
       
  2785 		    assignGettersSetters = function assignGettersSetters(propName) {
       
  2786 
       
  2787 			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
       
  2788 
       
  2789 			youtube['get' + capName] = function () {
       
  2790 				if (youTubeApi !== null) {
       
  2791 					var value = null;
       
  2792 
       
  2793 					switch (propName) {
       
  2794 						case 'currentTime':
       
  2795 							return youTubeApi.getCurrentTime();
       
  2796 						case 'duration':
       
  2797 							return youTubeApi.getDuration();
       
  2798 						case 'volume':
       
  2799 							volume = youTubeApi.getVolume() / 100;
       
  2800 							return volume;
       
  2801 						case 'paused':
       
  2802 							return paused;
       
  2803 						case 'ended':
       
  2804 							return ended;
       
  2805 						case 'muted':
       
  2806 							return youTubeApi.isMuted();
       
  2807 						case 'buffered':
       
  2808 							var percentLoaded = youTubeApi.getVideoLoadedFraction(),
       
  2809 							    duration = youTubeApi.getDuration();
       
  2810 							return {
       
  2811 								start: function start() {
       
  2812 									return 0;
       
  2813 								},
       
  2814 								end: function end() {
       
  2815 									return percentLoaded * duration;
       
  2816 								},
       
  2817 								length: 1
       
  2818 							};
       
  2819 						case 'src':
       
  2820 							return youTubeApi.getVideoUrl();
       
  2821 						case 'readyState':
       
  2822 							return readyState;
       
  2823 					}
       
  2824 
       
  2825 					return value;
       
  2826 				} else {
       
  2827 					return null;
       
  2828 				}
       
  2829 			};
       
  2830 
       
  2831 			youtube['set' + capName] = function (value) {
       
  2832 				if (youTubeApi !== null) {
       
  2833 					switch (propName) {
       
  2834 						case 'src':
       
  2835 							var url = typeof value === 'string' ? value : value[0].src,
       
  2836 							    _videoId = YouTubeApi.getYouTubeId(url);
       
  2837 
       
  2838 							if (mediaElement.originalNode.autoplay) {
       
  2839 								youTubeApi.loadVideoById(_videoId);
       
  2840 							} else {
       
  2841 								youTubeApi.cueVideoById(_videoId);
       
  2842 							}
       
  2843 							break;
       
  2844 						case 'currentTime':
       
  2845 							youTubeApi.seekTo(value);
       
  2846 							break;
       
  2847 						case 'muted':
       
  2848 							if (value) {
       
  2849 								youTubeApi.mute();
       
  2850 							} else {
       
  2851 								youTubeApi.unMute();
       
  2852 							}
       
  2853 							setTimeout(function () {
       
  2854 								var event = (0, _general.createEvent)('volumechange', youtube);
       
  2855 								mediaElement.dispatchEvent(event);
       
  2856 							}, 50);
       
  2857 							break;
       
  2858 						case 'volume':
       
  2859 							volume = value;
       
  2860 							youTubeApi.setVolume(value * 100);
       
  2861 							setTimeout(function () {
       
  2862 								var event = (0, _general.createEvent)('volumechange', youtube);
       
  2863 								mediaElement.dispatchEvent(event);
       
  2864 							}, 50);
       
  2865 							break;
       
  2866 						case 'readyState':
       
  2867 							var event = (0, _general.createEvent)('canplay', youtube);
       
  2868 							mediaElement.dispatchEvent(event);
       
  2869 							break;
       
  2870 						default:
       
  2871 							
       
  2872 							break;
       
  2873 					}
       
  2874 				} else {
       
  2875 					apiStack.push({ type: 'set', propName: propName, value: value });
       
  2876 				}
       
  2877 			};
       
  2878 		};
       
  2879 
       
  2880 		for (var i = 0, total = props.length; i < total; i++) {
       
  2881 			assignGettersSetters(props[i]);
       
  2882 		}
       
  2883 
       
  2884 		var methods = _mejs2.default.html5media.methods,
       
  2885 		    assignMethods = function assignMethods(methodName) {
       
  2886 			youtube[methodName] = function () {
       
  2887 				if (youTubeApi !== null) {
       
  2888 					switch (methodName) {
       
  2889 						case 'play':
       
  2890 							paused = false;
       
  2891 							return youTubeApi.playVideo();
       
  2892 						case 'pause':
       
  2893 							paused = true;
       
  2894 							return youTubeApi.pauseVideo();
       
  2895 						case 'load':
       
  2896 							return null;
       
  2897 					}
       
  2898 				} else {
       
  2899 					apiStack.push({ type: 'call', methodName: methodName });
       
  2900 				}
       
  2901 			};
       
  2902 		};
       
  2903 
       
  2904 		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
       
  2905 			assignMethods(methods[_i]);
       
  2906 		}
       
  2907 
       
  2908 		var youtubeContainer = _document2.default.createElement('div');
       
  2909 		youtubeContainer.id = youtube.id;
       
  2910 
       
  2911 		if (youtube.options.youtube.nocookie) {
       
  2912 			mediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src);
       
  2913 		}
       
  2914 
       
  2915 		mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode);
       
  2916 		mediaElement.originalNode.style.display = 'none';
       
  2917 
       
  2918 		var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',
       
  2919 		    height = isAudio ? '1' : mediaElement.originalNode.height,
       
  2920 		    width = isAudio ? '1' : mediaElement.originalNode.width,
       
  2921 		    videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),
       
  2922 		    youtubeSettings = {
       
  2923 			id: youtube.id,
       
  2924 			containerId: youtubeContainer.id,
       
  2925 			videoId: videoId,
       
  2926 			height: height,
       
  2927 			width: width,
       
  2928 			playerVars: Object.assign({
       
  2929 				controls: 0,
       
  2930 				rel: 0,
       
  2931 				disablekb: 1,
       
  2932 				showinfo: 0,
       
  2933 				modestbranding: 0,
       
  2934 				html5: 1,
       
  2935 				iv_load_policy: 3
       
  2936 			}, youtube.options.youtube),
       
  2937 			origin: _window2.default.location.host,
       
  2938 			events: {
       
  2939 				onReady: function onReady(e) {
       
  2940 					mediaElement.youTubeApi = youTubeApi = e.target;
       
  2941 					mediaElement.youTubeState = {
       
  2942 						paused: true,
       
  2943 						ended: false
       
  2944 					};
       
  2945 
       
  2946 					if (apiStack.length) {
       
  2947 						for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
       
  2948 
       
  2949 							var stackItem = apiStack[_i2];
       
  2950 
       
  2951 							if (stackItem.type === 'set') {
       
  2952 								var propName = stackItem.propName,
       
  2953 								    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
       
  2954 
       
  2955 								youtube['set' + capName](stackItem.value);
       
  2956 							} else if (stackItem.type === 'call') {
       
  2957 								youtube[stackItem.methodName]();
       
  2958 							}
       
  2959 						}
       
  2960 					}
       
  2961 
       
  2962 					youTubeIframe = youTubeApi.getIframe();
       
  2963 
       
  2964 					if (mediaElement.originalNode.muted) {
       
  2965 						youTubeApi.mute();
       
  2966 					}
       
  2967 
       
  2968 					var events = ['mouseover', 'mouseout'],
       
  2969 					    assignEvents = function assignEvents(e) {
       
  2970 						var newEvent = (0, _general.createEvent)(e.type, youtube);
       
  2971 						mediaElement.dispatchEvent(newEvent);
       
  2972 					};
       
  2973 
       
  2974 					for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
       
  2975 						youTubeIframe.addEventListener(events[_i3], assignEvents, false);
       
  2976 					}
       
  2977 
       
  2978 					var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
       
  2979 
       
  2980 					for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) {
       
  2981 						var event = (0, _general.createEvent)(initEvents[_i4], youtube);
       
  2982 						mediaElement.dispatchEvent(event);
       
  2983 					}
       
  2984 				},
       
  2985 				onStateChange: function onStateChange(e) {
       
  2986 					var events = [];
       
  2987 
       
  2988 					switch (e.data) {
       
  2989 						case -1:
       
  2990 							events = ['loadedmetadata'];
       
  2991 							paused = true;
       
  2992 							ended = false;
       
  2993 							break;
       
  2994 						case 0:
       
  2995 							events = ['ended'];
       
  2996 							paused = false;
       
  2997 							ended = !youtube.options.youtube.loop;
       
  2998 							if (!youtube.options.youtube.loop) {
       
  2999 								youtube.stopInterval();
       
  3000 							}
       
  3001 							break;
       
  3002 						case 1:
       
  3003 							events = ['play', 'playing'];
       
  3004 							paused = false;
       
  3005 							ended = false;
       
  3006 							youtube.startInterval();
       
  3007 							break;
       
  3008 						case 2:
       
  3009 							events = ['pause'];
       
  3010 							paused = true;
       
  3011 							ended = false;
       
  3012 							youtube.stopInterval();
       
  3013 							break;
       
  3014 						case 3:
       
  3015 							events = ['progress'];
       
  3016 							ended = false;
       
  3017 							break;
       
  3018 						case 5:
       
  3019 							events = ['loadeddata', 'loadedmetadata', 'canplay'];
       
  3020 							paused = true;
       
  3021 							ended = false;
       
  3022 							break;
       
  3023 					}
       
  3024 
       
  3025 					for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) {
       
  3026 						var event = (0, _general.createEvent)(events[_i5], youtube);
       
  3027 						mediaElement.dispatchEvent(event);
       
  3028 					}
       
  3029 				},
       
  3030 				onError: function onError(e) {
       
  3031 					var event = (0, _general.createEvent)('error', youtube);
       
  3032 					event.data = e.data;
       
  3033 					mediaElement.dispatchEvent(event);
       
  3034 				}
       
  3035 			}
       
  3036 		};
       
  3037 
       
  3038 		if (isAudio || mediaElement.originalNode.hasAttribute('playsinline')) {
       
  3039 			youtubeSettings.playerVars.playsinline = 1;
       
  3040 		}
       
  3041 
       
  3042 		if (mediaElement.originalNode.controls) {
       
  3043 			youtubeSettings.playerVars.controls = 1;
       
  3044 		}
       
  3045 		if (mediaElement.originalNode.autoplay) {
       
  3046 			youtubeSettings.playerVars.autoplay = 1;
       
  3047 		}
       
  3048 		if (mediaElement.originalNode.loop) {
       
  3049 			youtubeSettings.playerVars.loop = 1;
       
  3050 		}
       
  3051 
       
  3052 		YouTubeApi.enqueueIframe(youtubeSettings);
       
  3053 
       
  3054 		youtube.onEvent = function (eventName, player, _youTubeState) {
       
  3055 			if (_youTubeState !== null && _youTubeState !== undefined) {
       
  3056 				mediaElement.youTubeState = _youTubeState;
       
  3057 			}
       
  3058 		};
       
  3059 
       
  3060 		youtube.setSize = function (width, height) {
       
  3061 			if (youTubeApi !== null) {
       
  3062 				youTubeApi.setSize(width, height);
       
  3063 			}
       
  3064 		};
       
  3065 		youtube.hide = function () {
       
  3066 			youtube.stopInterval();
       
  3067 			youtube.pause();
       
  3068 			if (youTubeIframe) {
       
  3069 				youTubeIframe.style.display = 'none';
       
  3070 			}
       
  3071 		};
       
  3072 		youtube.show = function () {
       
  3073 			if (youTubeIframe) {
       
  3074 				youTubeIframe.style.display = '';
       
  3075 			}
       
  3076 		};
       
  3077 		youtube.destroy = function () {
       
  3078 			youTubeApi.destroy();
       
  3079 		};
       
  3080 		youtube.interval = null;
       
  3081 
       
  3082 		youtube.startInterval = function () {
       
  3083 			youtube.interval = setInterval(function () {
       
  3084 				var event = (0, _general.createEvent)('timeupdate', youtube);
       
  3085 				mediaElement.dispatchEvent(event);
       
  3086 			}, 250);
       
  3087 		};
       
  3088 		youtube.stopInterval = function () {
       
  3089 			if (youtube.interval) {
       
  3090 				clearInterval(youtube.interval);
       
  3091 			}
       
  3092 		};
       
  3093 		youtube.getPosterUrl = function () {
       
  3094 			var quality = options.youtube.imageQuality,
       
  3095 			    resolutions = ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'],
       
  3096 			    id = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
       
  3097 			return quality && resolutions.indexOf(quality) > -1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : '';
       
  3098 		};
       
  3099 
       
  3100 		return youtube;
       
  3101 	}
       
  3102 };
       
  3103 
       
  3104 _window2.default.onYouTubePlayerAPIReady = function () {
       
  3105 	YouTubeApi.iFrameReady();
       
  3106 };
       
  3107 
       
  3108 _media.typeChecks.push(function (url) {
       
  3109 	return (/\/\/(www\.youtube|youtu\.?be)/i.test(url) ? 'video/x-youtube' : null
       
  3110 	);
       
  3111 });
       
  3112 
       
  3113 _renderer.renderer.add(YouTubeIframeRenderer);
       
  3114 
       
  3115 },{"17":17,"18":18,"19":19,"2":2,"3":3,"7":7,"8":8}],16:[function(_dereq_,module,exports){
       
  3116 'use strict';
       
  3117 
       
  3118 Object.defineProperty(exports, "__esModule", {
       
  3119 	value: true
       
  3120 });
       
  3121 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;
       
  3122 
       
  3123 var _window = _dereq_(3);
       
  3124 
       
  3125 var _window2 = _interopRequireDefault(_window);
       
  3126 
       
  3127 var _document = _dereq_(2);
       
  3128 
       
  3129 var _document2 = _interopRequireDefault(_document);
       
  3130 
       
  3131 var _mejs = _dereq_(7);
       
  3132 
       
  3133 var _mejs2 = _interopRequireDefault(_mejs);
       
  3134 
       
  3135 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
       
  3136 
       
  3137 var NAV = exports.NAV = _window2.default.navigator;
       
  3138 var UA = exports.UA = NAV.userAgent.toLowerCase();
       
  3139 var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA) && !_window2.default.MSStream;
       
  3140 var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA) && !_window2.default.MSStream;
       
  3141 var IS_IPOD = exports.IS_IPOD = /ipod/i.test(UA) && !_window2.default.MSStream;
       
  3142 var IS_IOS = exports.IS_IOS = /ipad|iphone|ipod/i.test(UA) && !_window2.default.MSStream;
       
  3143 var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA);
       
  3144 var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName);
       
  3145 var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
       
  3146 var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA);
       
  3147 var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA);
       
  3148 var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME;
       
  3149 var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA);
       
  3150 var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
       
  3151 var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
       
  3152 	var element = _document2.default.createElement('x'),
       
  3153 	    documentElement = _document2.default.documentElement,
       
  3154 	    getComputedStyle = _window2.default.getComputedStyle;
       
  3155 
       
  3156 	if (!('pointerEvents' in element.style)) {
       
  3157 		return false;
       
  3158 	}
       
  3159 
       
  3160 	element.style.pointerEvents = 'auto';
       
  3161 	element.style.pointerEvents = 'x';
       
  3162 	documentElement.appendChild(element);
       
  3163 	var supports = getComputedStyle && getComputedStyle(element, '').pointerEvents === 'auto';
       
  3164 	element.remove();
       
  3165 	return !!supports;
       
  3166 }();
       
  3167 
       
  3168 var SUPPORT_PASSIVE_EVENT = exports.SUPPORT_PASSIVE_EVENT = function () {
       
  3169 	var supportsPassive = false;
       
  3170 	try {
       
  3171 		var opts = Object.defineProperty({}, 'passive', {
       
  3172 			get: function get() {
       
  3173 				supportsPassive = true;
       
  3174 			}
       
  3175 		});
       
  3176 		_window2.default.addEventListener('test', null, opts);
       
  3177 	} catch (e) {}
       
  3178 
       
  3179 	return supportsPassive;
       
  3180 }();
       
  3181 
       
  3182 var html5Elements = ['source', 'track', 'audio', 'video'];
       
  3183 var video = void 0;
       
  3184 
       
  3185 for (var i = 0, total = html5Elements.length; i < total; i++) {
       
  3186 	video = _document2.default.createElement(html5Elements[i]);
       
  3187 }
       
  3188 
       
  3189 var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && /edge/i.test(UA);
       
  3190 
       
  3191 var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
       
  3192 
       
  3193 var hasNativeFullscreen = video.requestFullscreen !== undefined;
       
  3194 
       
  3195 if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) {
       
  3196 	hasNativeFullscreen = false;
       
  3197 	hasiOSFullScreen = false;
       
  3198 }
       
  3199 
       
  3200 var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
       
  3201 var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
       
  3202 var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
       
  3203 var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
       
  3204 var nativeFullScreenEnabled = hasTrueNativeFullScreen;
       
  3205 var fullScreenEventName = '';
       
  3206 var isFullScreen = void 0,
       
  3207     requestFullScreen = void 0,
       
  3208     cancelFullScreen = void 0;
       
  3209 
       
  3210 if (hasMozNativeFullScreen) {
       
  3211 	nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
       
  3212 } else if (hasMsNativeFullScreen) {
       
  3213 	nativeFullScreenEnabled = _document2.default.msFullscreenEnabled;
       
  3214 }
       
  3215 
       
  3216 if (IS_CHROME) {
       
  3217 	hasiOSFullScreen = false;
       
  3218 }
       
  3219 
       
  3220 if (hasTrueNativeFullScreen) {
       
  3221 	if (hasWebkitNativeFullScreen) {
       
  3222 		fullScreenEventName = 'webkitfullscreenchange';
       
  3223 	} else if (hasMozNativeFullScreen) {
       
  3224 		fullScreenEventName = 'mozfullscreenchange';
       
  3225 	} else if (hasMsNativeFullScreen) {
       
  3226 		fullScreenEventName = 'MSFullscreenChange';
       
  3227 	}
       
  3228 
       
  3229 	exports.isFullScreen = isFullScreen = function isFullScreen() {
       
  3230 		if (hasMozNativeFullScreen) {
       
  3231 			return _document2.default.mozFullScreen;
       
  3232 		} else if (hasWebkitNativeFullScreen) {
       
  3233 			return _document2.default.webkitIsFullScreen;
       
  3234 		} else if (hasMsNativeFullScreen) {
       
  3235 			return _document2.default.msFullscreenElement !== null;
       
  3236 		}
       
  3237 	};
       
  3238 
       
  3239 	exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
       
  3240 		if (hasWebkitNativeFullScreen) {
       
  3241 			el.webkitRequestFullScreen();
       
  3242 		} else if (hasMozNativeFullScreen) {
       
  3243 			el.mozRequestFullScreen();
       
  3244 		} else if (hasMsNativeFullScreen) {
       
  3245 			el.msRequestFullscreen();
       
  3246 		}
       
  3247 	};
       
  3248 
       
  3249 	exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() {
       
  3250 		if (hasWebkitNativeFullScreen) {
       
  3251 			_document2.default.webkitCancelFullScreen();
       
  3252 		} else if (hasMozNativeFullScreen) {
       
  3253 			_document2.default.mozCancelFullScreen();
       
  3254 		} else if (hasMsNativeFullScreen) {
       
  3255 			_document2.default.msExitFullscreen();
       
  3256 		}
       
  3257 	};
       
  3258 }
       
  3259 
       
  3260 var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen;
       
  3261 var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen;
       
  3262 var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen;
       
  3263 var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen;
       
  3264 var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
       
  3265 var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
       
  3266 var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
       
  3267 var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
       
  3268 exports.isFullScreen = isFullScreen;
       
  3269 exports.requestFullScreen = requestFullScreen;
       
  3270 exports.cancelFullScreen = cancelFullScreen;
       
  3271 
       
  3272 
       
  3273 _mejs2.default.Features = _mejs2.default.Features || {};
       
  3274 _mejs2.default.Features.isiPad = IS_IPAD;
       
  3275 _mejs2.default.Features.isiPod = IS_IPOD;
       
  3276 _mejs2.default.Features.isiPhone = IS_IPHONE;
       
  3277 _mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad;
       
  3278 _mejs2.default.Features.isAndroid = IS_ANDROID;
       
  3279 _mejs2.default.Features.isIE = IS_IE;
       
  3280 _mejs2.default.Features.isEdge = IS_EDGE;
       
  3281 _mejs2.default.Features.isChrome = IS_CHROME;
       
  3282 _mejs2.default.Features.isFirefox = IS_FIREFOX;
       
  3283 _mejs2.default.Features.isSafari = IS_SAFARI;
       
  3284 _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
       
  3285 _mejs2.default.Features.hasMSE = HAS_MSE;
       
  3286 _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
       
  3287 _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
       
  3288 _mejs2.default.Features.supportsPassiveEvent = SUPPORT_PASSIVE_EVENT;
       
  3289 _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
       
  3290 _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
       
  3291 _mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN;
       
  3292 _mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN;
       
  3293 _mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN;
       
  3294 _mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN;
       
  3295 _mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED;
       
  3296 _mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME;
       
  3297 _mejs2.default.Features.isFullScreen = isFullScreen;
       
  3298 _mejs2.default.Features.requestFullScreen = requestFullScreen;
       
  3299 _mejs2.default.Features.cancelFullScreen = cancelFullScreen;
       
  3300 
       
  3301 },{"2":2,"3":3,"7":7}],17:[function(_dereq_,module,exports){
       
  3302 'use strict';
       
  3303 
       
  3304 Object.defineProperty(exports, "__esModule", {
       
  3305 	value: true
       
  3306 });
       
  3307 exports.removeClass = exports.addClass = exports.hasClass = undefined;
       
  3308 exports.loadScript = loadScript;
       
  3309 exports.offset = offset;
       
  3310 exports.toggleClass = toggleClass;
       
  3311 exports.fadeOut = fadeOut;
       
  3312 exports.fadeIn = fadeIn;
       
  3313 exports.siblings = siblings;
       
  3314 exports.visible = visible;
       
  3315 exports.ajax = ajax;
       
  3316 
       
  3317 var _window = _dereq_(3);
       
  3318 
       
  3319 var _window2 = _interopRequireDefault(_window);
       
  3320 
       
  3321 var _document = _dereq_(2);
       
  3322 
       
  3323 var _document2 = _interopRequireDefault(_document);
       
  3324 
       
  3325 var _mejs = _dereq_(7);
       
  3326 
       
  3327 var _mejs2 = _interopRequireDefault(_mejs);
       
  3328 
       
  3329 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
       
  3330 
       
  3331 function loadScript(url) {
       
  3332 	return new Promise(function (resolve, reject) {
       
  3333 		var script = _document2.default.createElement('script');
       
  3334 		script.src = url;
       
  3335 		script.async = true;
       
  3336 		script.onload = function () {
       
  3337 			script.remove();
       
  3338 			resolve();
       
  3339 		};
       
  3340 		script.onerror = function () {
       
  3341 			script.remove();
       
  3342 			reject();
       
  3343 		};
       
  3344 		_document2.default.head.appendChild(script);
       
  3345 	});
       
  3346 }
       
  3347 
       
  3348 function offset(el) {
       
  3349 	var rect = el.getBoundingClientRect(),
       
  3350 	    scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,
       
  3351 	    scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop;
       
  3352 	return { top: rect.top + scrollTop, left: rect.left + scrollLeft };
       
  3353 }
       
  3354 
       
  3355 var hasClassMethod = void 0,
       
  3356     addClassMethod = void 0,
       
  3357     removeClassMethod = void 0;
       
  3358 
       
  3359 if ('classList' in _document2.default.documentElement) {
       
  3360 	hasClassMethod = function hasClassMethod(el, className) {
       
  3361 		return el.classList !== undefined && el.classList.contains(className);
       
  3362 	};
       
  3363 	addClassMethod = function addClassMethod(el, className) {
       
  3364 		return el.classList.add(className);
       
  3365 	};
       
  3366 	removeClassMethod = function removeClassMethod(el, className) {
       
  3367 		return el.classList.remove(className);
       
  3368 	};
       
  3369 } else {
       
  3370 	hasClassMethod = function hasClassMethod(el, className) {
       
  3371 		return new RegExp('\\b' + className + '\\b').test(el.className);
       
  3372 	};
       
  3373 	addClassMethod = function addClassMethod(el, className) {
       
  3374 		if (!hasClass(el, className)) {
       
  3375 			el.className += ' ' + className;
       
  3376 		}
       
  3377 	};
       
  3378 	removeClassMethod = function removeClassMethod(el, className) {
       
  3379 		el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), '');
       
  3380 	};
       
  3381 }
       
  3382 
       
  3383 var hasClass = exports.hasClass = hasClassMethod;
       
  3384 var addClass = exports.addClass = addClassMethod;
       
  3385 var removeClass = exports.removeClass = removeClassMethod;
       
  3386 
       
  3387 function toggleClass(el, className) {
       
  3388 	hasClass(el, className) ? removeClass(el, className) : addClass(el, className);
       
  3389 }
       
  3390 
       
  3391 function fadeOut(el) {
       
  3392 	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
       
  3393 	var callback = arguments[2];
       
  3394 
       
  3395 	if (!el.style.opacity) {
       
  3396 		el.style.opacity = 1;
       
  3397 	}
       
  3398 
       
  3399 	var start = null;
       
  3400 	_window2.default.requestAnimationFrame(function animate(timestamp) {
       
  3401 		start = start || timestamp;
       
  3402 		var progress = timestamp - start;
       
  3403 		var opacity = parseFloat(1 - progress / duration, 2);
       
  3404 		el.style.opacity = opacity < 0 ? 0 : opacity;
       
  3405 		if (progress > duration) {
       
  3406 			if (callback && typeof callback === 'function') {
       
  3407 				callback();
       
  3408 			}
       
  3409 		} else {
       
  3410 			_window2.default.requestAnimationFrame(animate);
       
  3411 		}
       
  3412 	});
       
  3413 }
       
  3414 
       
  3415 function fadeIn(el) {
       
  3416 	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
       
  3417 	var callback = arguments[2];
       
  3418 
       
  3419 	if (!el.style.opacity) {
       
  3420 		el.style.opacity = 0;
       
  3421 	}
       
  3422 
       
  3423 	var start = null;
       
  3424 	_window2.default.requestAnimationFrame(function animate(timestamp) {
       
  3425 		start = start || timestamp;
       
  3426 		var progress = timestamp - start;
       
  3427 		var opacity = parseFloat(progress / duration, 2);
       
  3428 		el.style.opacity = opacity > 1 ? 1 : opacity;
       
  3429 		if (progress > duration) {
       
  3430 			if (callback && typeof callback === 'function') {
       
  3431 				callback();
       
  3432 			}
       
  3433 		} else {
       
  3434 			_window2.default.requestAnimationFrame(animate);
       
  3435 		}
       
  3436 	});
       
  3437 }
       
  3438 
       
  3439 function siblings(el, filter) {
       
  3440 	var siblings = [];
       
  3441 	el = el.parentNode.firstChild;
       
  3442 	do {
       
  3443 		if (!filter || filter(el)) {
       
  3444 			siblings.push(el);
       
  3445 		}
       
  3446 	} while (el = el.nextSibling);
       
  3447 	return siblings;
       
  3448 }
       
  3449 
       
  3450 function visible(elem) {
       
  3451 	if (elem.getClientRects !== undefined && elem.getClientRects === 'function') {
       
  3452 		return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
       
  3453 	}
       
  3454 	return !!(elem.offsetWidth || elem.offsetHeight);
       
  3455 }
       
  3456 
       
  3457 function ajax(url, dataType, success, error) {
       
  3458 	var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
       
  3459 
       
  3460 	var type = 'application/x-www-form-urlencoded; charset=UTF-8',
       
  3461 	    completed = false,
       
  3462 	    accept = '*/'.concat('*');
       
  3463 
       
  3464 	switch (dataType) {
       
  3465 		case 'text':
       
  3466 			type = 'text/plain';
       
  3467 			break;
       
  3468 		case 'json':
       
  3469 			type = 'application/json, text/javascript';
       
  3470 			break;
       
  3471 		case 'html':
       
  3472 			type = 'text/html';
       
  3473 			break;
       
  3474 		case 'xml':
       
  3475 			type = 'application/xml, text/xml';
       
  3476 			break;
       
  3477 	}
       
  3478 
       
  3479 	if (type !== 'application/x-www-form-urlencoded') {
       
  3480 		accept = type + ', */*; q=0.01';
       
  3481 	}
       
  3482 
       
  3483 	if (xhr) {
       
  3484 		xhr.open('GET', url, true);
       
  3485 		xhr.setRequestHeader('Accept', accept);
       
  3486 		xhr.onreadystatechange = function () {
       
  3487 			if (completed) {
       
  3488 				return;
       
  3489 			}
       
  3490 
       
  3491 			if (xhr.readyState === 4) {
       
  3492 				if (xhr.status === 200) {
       
  3493 					completed = true;
       
  3494 					var data = void 0;
       
  3495 					switch (dataType) {
       
  3496 						case 'json':
       
  3497 							data = JSON.parse(xhr.responseText);
       
  3498 							break;
       
  3499 						case 'xml':
       
  3500 							data = xhr.responseXML;
       
  3501 							break;
       
  3502 						default:
       
  3503 							data = xhr.responseText;
       
  3504 							break;
       
  3505 					}
       
  3506 					success(data);
       
  3507 				} else if (typeof error === 'function') {
       
  3508 					error(xhr.status);
       
  3509 				}
       
  3510 			}
       
  3511 		};
       
  3512 
       
  3513 		xhr.send();
       
  3514 	}
       
  3515 }
       
  3516 
       
  3517 _mejs2.default.Utils = _mejs2.default.Utils || {};
       
  3518 _mejs2.default.Utils.offset = offset;
       
  3519 _mejs2.default.Utils.hasClass = hasClass;
       
  3520 _mejs2.default.Utils.addClass = addClass;
       
  3521 _mejs2.default.Utils.removeClass = removeClass;
       
  3522 _mejs2.default.Utils.toggleClass = toggleClass;
       
  3523 _mejs2.default.Utils.fadeIn = fadeIn;
       
  3524 _mejs2.default.Utils.fadeOut = fadeOut;
       
  3525 _mejs2.default.Utils.siblings = siblings;
       
  3526 _mejs2.default.Utils.visible = visible;
       
  3527 _mejs2.default.Utils.ajax = ajax;
       
  3528 _mejs2.default.Utils.loadScript = loadScript;
       
  3529 
       
  3530 },{"2":2,"3":3,"7":7}],18:[function(_dereq_,module,exports){
       
  3531 'use strict';
       
  3532 
       
  3533 Object.defineProperty(exports, "__esModule", {
       
  3534 	value: true
       
  3535 });
       
  3536 exports.escapeHTML = escapeHTML;
       
  3537 exports.debounce = debounce;
       
  3538 exports.isObjectEmpty = isObjectEmpty;
       
  3539 exports.splitEvents = splitEvents;
       
  3540 exports.createEvent = createEvent;
       
  3541 exports.isNodeAfter = isNodeAfter;
       
  3542 exports.isString = isString;
       
  3543 
       
  3544 var _mejs = _dereq_(7);
       
  3545 
       
  3546 var _mejs2 = _interopRequireDefault(_mejs);
       
  3547 
       
  3548 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
       
  3549 
       
  3550 function escapeHTML(input) {
       
  3551 
       
  3552 	if (typeof input !== 'string') {
       
  3553 		throw new Error('Argument passed must be a string');
       
  3554 	}
       
  3555 
       
  3556 	var map = {
       
  3557 		'&': '&amp;',
       
  3558 		'<': '&lt;',
       
  3559 		'>': '&gt;',
       
  3560 		'"': '&quot;'
       
  3561 	};
       
  3562 
       
  3563 	return input.replace(/[&<>"]/g, function (c) {
       
  3564 		return map[c];
       
  3565 	});
       
  3566 }
       
  3567 
       
  3568 function debounce(func, wait) {
       
  3569 	var _this = this,
       
  3570 	    _arguments = arguments;
       
  3571 
       
  3572 	var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
       
  3573 
       
  3574 
       
  3575 	if (typeof func !== 'function') {
       
  3576 		throw new Error('First argument must be a function');
       
  3577 	}
       
  3578 
       
  3579 	if (typeof wait !== 'number') {
       
  3580 		throw new Error('Second argument must be a numeric value');
       
  3581 	}
       
  3582 
       
  3583 	var timeout = void 0;
       
  3584 	return function () {
       
  3585 		var context = _this,
       
  3586 		    args = _arguments;
       
  3587 		var later = function later() {
       
  3588 			timeout = null;
       
  3589 			if (!immediate) {
       
  3590 				func.apply(context, args);
       
  3591 			}
       
  3592 		};
       
  3593 		var callNow = immediate && !timeout;
       
  3594 		clearTimeout(timeout);
       
  3595 		timeout = setTimeout(later, wait);
       
  3596 
       
  3597 		if (callNow) {
       
  3598 			func.apply(context, args);
       
  3599 		}
       
  3600 	};
       
  3601 }
       
  3602 
       
  3603 function isObjectEmpty(instance) {
       
  3604 	return Object.getOwnPropertyNames(instance).length <= 0;
       
  3605 }
       
  3606 
       
  3607 function splitEvents(events, id) {
       
  3608 	var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
       
  3609 
       
  3610 	var ret = { d: [], w: [] };
       
  3611 	(events || '').split(' ').forEach(function (v) {
       
  3612 		var eventName = '' + v + (id ? '.' + id : '');
       
  3613 
       
  3614 		if (eventName.startsWith('.')) {
       
  3615 			ret.d.push(eventName);
       
  3616 			ret.w.push(eventName);
       
  3617 		} else {
       
  3618 			ret[rwindow.test(v) ? 'w' : 'd'].push(eventName);
       
  3619 		}
       
  3620 	});
       
  3621 
       
  3622 	ret.d = ret.d.join(' ');
       
  3623 	ret.w = ret.w.join(' ');
       
  3624 	return ret;
       
  3625 }
       
  3626 
       
  3627 function createEvent(eventName, target) {
       
  3628 
       
  3629 	if (typeof eventName !== 'string') {
       
  3630 		throw new Error('Event name must be a string');
       
  3631 	}
       
  3632 
       
  3633 	var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i),
       
  3634 	    detail = {
       
  3635 		target: target
       
  3636 	};
       
  3637 
       
  3638 	if (eventFrags !== null) {
       
  3639 		eventName = eventFrags[1];
       
  3640 		detail.namespace = eventFrags[2];
       
  3641 	}
       
  3642 
       
  3643 	return new window.CustomEvent(eventName, {
       
  3644 		detail: detail
       
  3645 	});
       
  3646 }
       
  3647 
       
  3648 function isNodeAfter(sourceNode, targetNode) {
       
  3649 
       
  3650 	return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2);
       
  3651 }
       
  3652 
       
  3653 function isString(value) {
       
  3654 	return typeof value === 'string';
       
  3655 }
       
  3656 
       
  3657 _mejs2.default.Utils = _mejs2.default.Utils || {};
       
  3658 _mejs2.default.Utils.escapeHTML = escapeHTML;
       
  3659 _mejs2.default.Utils.debounce = debounce;
       
  3660 _mejs2.default.Utils.isObjectEmpty = isObjectEmpty;
       
  3661 _mejs2.default.Utils.splitEvents = splitEvents;
       
  3662 _mejs2.default.Utils.createEvent = createEvent;
       
  3663 _mejs2.default.Utils.isNodeAfter = isNodeAfter;
       
  3664 _mejs2.default.Utils.isString = isString;
       
  3665 
       
  3666 },{"7":7}],19:[function(_dereq_,module,exports){
       
  3667 'use strict';
       
  3668 
       
  3669 Object.defineProperty(exports, "__esModule", {
       
  3670 	value: true
       
  3671 });
       
  3672 exports.typeChecks = undefined;
       
  3673 exports.absolutizeUrl = absolutizeUrl;
       
  3674 exports.formatType = formatType;
       
  3675 exports.getMimeFromType = getMimeFromType;
       
  3676 exports.getTypeFromFile = getTypeFromFile;
       
  3677 exports.getExtension = getExtension;
       
  3678 exports.normalizeExtension = normalizeExtension;
       
  3679 
       
  3680 var _mejs = _dereq_(7);
       
  3681 
       
  3682 var _mejs2 = _interopRequireDefault(_mejs);
       
  3683 
       
  3684 var _general = _dereq_(18);
       
  3685 
       
  3686 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
       
  3687 
       
  3688 var typeChecks = exports.typeChecks = [];
       
  3689 
       
  3690 function absolutizeUrl(url) {
       
  3691 
       
  3692 	if (typeof url !== 'string') {
       
  3693 		throw new Error('`url` argument must be a string');
       
  3694 	}
       
  3695 
       
  3696 	var el = document.createElement('div');
       
  3697 	el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>';
       
  3698 	return el.firstChild.href;
       
  3699 }
       
  3700 
       
  3701 function formatType(url) {
       
  3702 	var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
       
  3703 
       
  3704 	return url && !type ? getTypeFromFile(url) : type;
       
  3705 }
       
  3706 
       
  3707 function getMimeFromType(type) {
       
  3708 
       
  3709 	if (typeof type !== 'string') {
       
  3710 		throw new Error('`type` argument must be a string');
       
  3711 	}
       
  3712 
       
  3713 	return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type;
       
  3714 }
       
  3715 
       
  3716 function getTypeFromFile(url) {
       
  3717 
       
  3718 	if (typeof url !== 'string') {
       
  3719 		throw new Error('`url` argument must be a string');
       
  3720 	}
       
  3721 
       
  3722 	for (var i = 0, total = typeChecks.length; i < total; i++) {
       
  3723 		var type = typeChecks[i](url);
       
  3724 
       
  3725 		if (type) {
       
  3726 			return type;
       
  3727 		}
       
  3728 	}
       
  3729 
       
  3730 	var ext = getExtension(url),
       
  3731 	    normalizedExt = normalizeExtension(ext);
       
  3732 
       
  3733 	var mime = 'video/mp4';
       
  3734 
       
  3735 	if (normalizedExt) {
       
  3736 		if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt)) {
       
  3737 			mime = 'video/' + normalizedExt;
       
  3738 		} else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) {
       
  3739 			mime = 'audio/' + normalizedExt;
       
  3740 		}
       
  3741 	}
       
  3742 
       
  3743 	return mime;
       
  3744 }
       
  3745 
       
  3746 function getExtension(url) {
       
  3747 
       
  3748 	if (typeof url !== 'string') {
       
  3749 		throw new Error('`url` argument must be a string');
       
  3750 	}
       
  3751 
       
  3752 	var baseUrl = url.split('?')[0],
       
  3753 	    baseName = baseUrl.split('\\').pop().split('/').pop();
       
  3754 	return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
       
  3755 }
       
  3756 
       
  3757 function normalizeExtension(extension) {
       
  3758 
       
  3759 	if (typeof extension !== 'string') {
       
  3760 		throw new Error('`extension` argument must be a string');
       
  3761 	}
       
  3762 
       
  3763 	switch (extension) {
       
  3764 		case 'mp4':
       
  3765 		case 'm4v':
       
  3766 			return 'mp4';
       
  3767 		case 'webm':
       
  3768 		case 'webma':
       
  3769 		case 'webmv':
       
  3770 			return 'webm';
       
  3771 		case 'ogg':
       
  3772 		case 'oga':
       
  3773 		case 'ogv':
       
  3774 			return 'ogg';
       
  3775 		default:
       
  3776 			return extension;
       
  3777 	}
       
  3778 }
       
  3779 
       
  3780 _mejs2.default.Utils = _mejs2.default.Utils || {};
       
  3781 _mejs2.default.Utils.typeChecks = typeChecks;
       
  3782 _mejs2.default.Utils.absolutizeUrl = absolutizeUrl;
       
  3783 _mejs2.default.Utils.formatType = formatType;
       
  3784 _mejs2.default.Utils.getMimeFromType = getMimeFromType;
       
  3785 _mejs2.default.Utils.getTypeFromFile = getTypeFromFile;
       
  3786 _mejs2.default.Utils.getExtension = getExtension;
       
  3787 _mejs2.default.Utils.normalizeExtension = normalizeExtension;
       
  3788 
       
  3789 },{"18":18,"7":7}],20:[function(_dereq_,module,exports){
       
  3790 'use strict';
       
  3791 
       
  3792 var _document = _dereq_(2);
       
  3793 
       
  3794 var _document2 = _interopRequireDefault(_document);
       
  3795 
       
  3796 var _promisePolyfill = _dereq_(4);
       
  3797 
       
  3798 var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);
       
  3799 
       
  3800 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
       
  3801 
       
  3802 (function (arr) {
       
  3803 	arr.forEach(function (item) {
       
  3804 		if (item.hasOwnProperty('remove')) {
       
  3805 			return;
       
  3806 		}
       
  3807 		Object.defineProperty(item, 'remove', {
       
  3808 			configurable: true,
       
  3809 			enumerable: true,
       
  3810 			writable: true,
       
  3811 			value: function remove() {
       
  3812 				this.parentNode.removeChild(this);
       
  3813 			}
       
  3814 		});
       
  3815 	});
       
  3816 })([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
       
  3817 
       
  3818 (function () {
       
  3819 
       
  3820 	if (typeof window.CustomEvent === 'function') {
       
  3821 		return false;
       
  3822 	}
       
  3823 
       
  3824 	function CustomEvent(event, params) {
       
  3825 		params = params || { bubbles: false, cancelable: false, detail: undefined };
       
  3826 		var evt = _document2.default.createEvent('CustomEvent');
       
  3827 		evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
       
  3828 		return evt;
       
  3829 	}
       
  3830 
       
  3831 	CustomEvent.prototype = window.Event.prototype;
       
  3832 	window.CustomEvent = CustomEvent;
       
  3833 })();
       
  3834 
       
  3835 if (typeof Object.assign !== 'function') {
       
  3836 	Object.assign = function (target) {
       
  3837 
       
  3838 		if (target === null || target === undefined) {
       
  3839 			throw new TypeError('Cannot convert undefined or null to object');
       
  3840 		}
       
  3841 
       
  3842 		var to = Object(target);
       
  3843 
       
  3844 		for (var index = 1, total = arguments.length; index < total; index++) {
       
  3845 			var nextSource = arguments[index];
       
  3846 
       
  3847 			if (nextSource !== null) {
       
  3848 				for (var nextKey in nextSource) {
       
  3849 					if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
       
  3850 						to[nextKey] = nextSource[nextKey];
       
  3851 					}
       
  3852 				}
       
  3853 			}
       
  3854 		}
       
  3855 		return to;
       
  3856 	};
       
  3857 }
       
  3858 
       
  3859 if (!String.prototype.startsWith) {
       
  3860 	String.prototype.startsWith = function (searchString, position) {
       
  3861 		position = position || 0;
       
  3862 		return this.substr(position, searchString.length) === searchString;
       
  3863 	};
       
  3864 }
       
  3865 
       
  3866 if (!Element.prototype.matches) {
       
  3867 	Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
       
  3868 		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
       
  3869 		    i = matches.length - 1;
       
  3870 		while (--i >= 0 && matches.item(i) !== this) {}
       
  3871 		return i > -1;
       
  3872 	};
       
  3873 }
       
  3874 
       
  3875 if (window.Element && !Element.prototype.closest) {
       
  3876 	Element.prototype.closest = function (s) {
       
  3877 		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
       
  3878 		    i = void 0,
       
  3879 		    el = this;
       
  3880 		do {
       
  3881 			i = matches.length;
       
  3882 			while (--i >= 0 && matches.item(i) !== el) {}
       
  3883 		} while (i < 0 && (el = el.parentElement));
       
  3884 		return el;
       
  3885 	};
       
  3886 }
       
  3887 
       
  3888 (function () {
       
  3889 	var lastTime = 0;
       
  3890 	var vendors = ['ms', 'moz', 'webkit', 'o'];
       
  3891 	for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
       
  3892 		window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
       
  3893 		window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
       
  3894 	}
       
  3895 
       
  3896 	if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) {
       
  3897 		var currTime = new Date().getTime();
       
  3898 		var timeToCall = Math.max(0, 16 - (currTime - lastTime));
       
  3899 		var id = window.setTimeout(function () {
       
  3900 			callback(currTime + timeToCall);
       
  3901 		}, timeToCall);
       
  3902 		lastTime = currTime + timeToCall;
       
  3903 		return id;
       
  3904 	};
       
  3905 
       
  3906 	if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {
       
  3907 		clearTimeout(id);
       
  3908 	};
       
  3909 })();
       
  3910 
       
  3911 if (/firefox/i.test(navigator.userAgent)) {
       
  3912 	var getComputedStyle = window.getComputedStyle;
       
  3913 	window.getComputedStyle = function (el, pseudoEl) {
       
  3914 		var t = getComputedStyle(el, pseudoEl);
       
  3915 		return t === null ? { getPropertyValue: function getPropertyValue() {} } : t;
       
  3916 	};
       
  3917 }
       
  3918 
       
  3919 if (!window.Promise) {
       
  3920 	window.Promise = _promisePolyfill2.default;
       
  3921 }
       
  3922 
       
  3923 (function (constructor) {
       
  3924 	if (constructor && constructor.prototype && constructor.prototype.children === null) {
       
  3925 		Object.defineProperty(constructor.prototype, 'children', {
       
  3926 			get: function get() {
       
  3927 				var i = 0,
       
  3928 				    node = void 0,
       
  3929 				    nodes = this.childNodes,
       
  3930 				    children = [];
       
  3931 				while (node = nodes[i++]) {
       
  3932 					if (node.nodeType === 1) {
       
  3933 						children.push(node);
       
  3934 					}
       
  3935 				}
       
  3936 				return children;
       
  3937 			}
       
  3938 		});
       
  3939 	}
       
  3940 })(window.Node || window.Element);
       
  3941 
       
  3942 },{"2":2,"4":4}]},{},[20,6,5,9,14,11,10,12,13,15]);