/*
 * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
 * This devtool is neither made for production nor for readable output files.
 * It uses "eval()" calls to create a separate source file in the browser devtools.
 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 * or disable the default devtool with "devtool: false".
 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 */
(self["webpackChunk"] = self["webpackChunk"] || []).push([["src_views_warningDetail_vue"],{

/***/ "./node_modules/_core-js@3.25.5@core-js/internals/define-built-in-accessor.js":
/*!************************************************************************************!*\
  !*** ./node_modules/_core-js@3.25.5@core-js/internals/define-built-in-accessor.js ***!
  \************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("var makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ \"./node_modules/_core-js@3.25.5@core-js/internals/make-built-in.js\");\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/_core-js@3.25.5@core-js/internals/object-define-property.js\");\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, {\n    getter: true\n  });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, {\n    setter: true\n  });\n  return defineProperty.f(target, name, descriptor);\n};\n\n//# sourceURL=webpack:///./node_modules/_core-js@3.25.5@core-js/internals/define-built-in-accessor.js?");

/***/ }),

/***/ "./node_modules/_core-js@3.25.5@core-js/internals/regexp-flags.js":
/*!************************************************************************!*\
  !*** ./node_modules/_core-js@3.25.5@core-js/internals/regexp-flags.js ***!
  \************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

"use strict";
eval("\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/_core-js@3.25.5@core-js/internals/an-object.js\");\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.hasIndices) result += 'd';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.unicodeSets) result += 'v';\n  if (that.sticky) result += 'y';\n  return result;\n};\n\n//# sourceURL=webpack:///./node_modules/_core-js@3.25.5@core-js/internals/regexp-flags.js?");

/***/ }),

/***/ "./node_modules/_core-js@3.25.5@core-js/modules/es.regexp.flags.js":
/*!*************************************************************************!*\
  !*** ./node_modules/_core-js@3.25.5@core-js/modules/es.regexp.flags.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {

eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/_core-js@3.25.5@core-js/internals/global.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/_core-js@3.25.5@core-js/internals/descriptors.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/_core-js@3.25.5@core-js/internals/define-built-in-accessor.js\");\nvar regExpFlags = __webpack_require__(/*! ../internals/regexp-flags */ \"./node_modules/_core-js@3.25.5@core-js/internals/regexp-flags.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/_core-js@3.25.5@core-js/internals/fails.js\");\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\nvar FORCED = DESCRIPTORS && fails(function () {\n  var INDICES_SUPPORT = true;\n  try {\n    RegExp('.', 'd');\n  } catch (error) {\n    INDICES_SUPPORT = false;\n  }\n  var O = {};\n  // modern V8 bug\n  var calls = '';\n  var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n  var addGetter = function (key, chr) {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty(O, key, {\n      get: function () {\n        calls += chr;\n        return true;\n      }\n    });\n  };\n  var pairs = {\n    dotAll: 's',\n    global: 'g',\n    ignoreCase: 'i',\n    multiline: 'm',\n    sticky: 'y'\n  };\n  if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n  for (var key in pairs) addGetter(key, pairs[key]);\n\n  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n  var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n  return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n  configurable: true,\n  get: regExpFlags\n});\n\n//# sourceURL=webpack:///./node_modules/_core-js@3.25.5@core-js/modules/es.regexp.flags.js?");

/***/ }),

/***/ "./node_modules/_flv.js@1.6.2@flv.js/dist/flv.js":
/*!*******************************************************!*\
  !*** ./node_modules/_flv.js@1.6.2@flv.js/dist/flv.js ***!
  \*******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("__webpack_require__(/*! core-js/modules/es.typed-array.find-last.js */ \"./node_modules/_core-js@3.25.5@core-js/modules/es.typed-array.find-last.js\");\n__webpack_require__(/*! core-js/modules/es.typed-array.find-last-index.js */ \"./node_modules/_core-js@3.25.5@core-js/modules/es.typed-array.find-last-index.js\");\n__webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/_core-js@3.25.5@core-js/modules/es.array.push.js\");\n__webpack_require__(/*! core-js/modules/es.array.unshift.js */ \"./node_modules/_core-js@3.25.5@core-js/modules/es.array.unshift.js\");\n__webpack_require__(/*! core-js/modules/es.regexp.flags.js */ \"./node_modules/_core-js@3.25.5@core-js/modules/es.regexp.flags.js\");\n(function webpackUniversalModuleDefinition(root, factory) {\n  if (true) module.exports = factory();else {}\n})(self, function () {\n  return (/******/function () {\n      // webpackBootstrap\n      /******/\n      var __webpack_modules__ = {\n        /***/\"./node_modules/es6-promise/dist/es6-promise.js\":\n        /*!******************************************************!*\\\n          !*** ./node_modules/es6-promise/dist/es6-promise.js ***!\n          \\******************************************************/\n        /***/\n        function (module, __unused_webpack_exports, __nested_webpack_require_1044__) {\n          /*!\n           * @overview es6-promise - a tiny implementation of Promises/A+.\n           * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n           * @license   Licensed under MIT license\n           *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n           * @version   v4.2.8+1e68dce6\n           */\n          (function (global, factory) {\n             true ? module.exports = factory() : 0;\n          })(this, function () {\n            'use strict';\n\n            function objectOrFunction(x) {\n              var type = typeof x;\n              return x !== null && (type === 'object' || type === 'function');\n            }\n            function isFunction(x) {\n              return typeof x === 'function';\n            }\n            var _isArray = void 0;\n            if (Array.isArray) {\n              _isArray = Array.isArray;\n            } else {\n              _isArray = function (x) {\n                return Object.prototype.toString.call(x) === '[object Array]';\n              };\n            }\n            var isArray = _isArray;\n            var len = 0;\n            var vertxNext = void 0;\n            var customSchedulerFn = void 0;\n            var asap = function asap(callback, arg) {\n              queue[len] = callback;\n              queue[len + 1] = arg;\n              len += 2;\n              if (len === 2) {\n                // If len is 2, that means that we need to schedule an async flush.\n                // If additional callbacks are queued before the queue is flushed, they\n                // will be processed by this flush that we are scheduling.\n                if (customSchedulerFn) {\n                  customSchedulerFn(flush);\n                } else {\n                  scheduleFlush();\n                }\n              }\n            };\n            function setScheduler(scheduleFn) {\n              customSchedulerFn = scheduleFn;\n            }\n            function setAsap(asapFn) {\n              asap = asapFn;\n            }\n            var browserWindow = typeof window !== 'undefined' ? window : undefined;\n            var browserGlobal = browserWindow || {};\n            var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\n            var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n            // test for web worker but not in IE10\n            var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n            // node\n            function useNextTick() {\n              // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n              // see https://github.com/cujojs/when/issues/410 for details\n              return function () {\n                return process.nextTick(flush);\n              };\n            }\n            // vertx\n            function useVertxTimer() {\n              if (typeof vertxNext !== 'undefined') {\n                return function () {\n                  vertxNext(flush);\n                };\n              }\n              return useSetTimeout();\n            }\n            function useMutationObserver() {\n              var iterations = 0;\n              var observer = new BrowserMutationObserver(flush);\n              var node = document.createTextNode('');\n              observer.observe(node, {\n                characterData: true\n              });\n              return function () {\n                node.data = iterations = ++iterations % 2;\n              };\n            }\n            // web worker\n            function useMessageChannel() {\n              var channel = new MessageChannel();\n              channel.port1.onmessage = flush;\n              return function () {\n                return channel.port2.postMessage(0);\n              };\n            }\n            function useSetTimeout() {\n              // Store setTimeout reference so es6-promise will be unaffected by\n              // other code modifying setTimeout (like sinon.useFakeTimers())\n              var globalSetTimeout = setTimeout;\n              return function () {\n                return globalSetTimeout(flush, 1);\n              };\n            }\n            var queue = new Array(1000);\n            function flush() {\n              for (var i = 0; i < len; i += 2) {\n                var callback = queue[i];\n                var arg = queue[i + 1];\n                callback(arg);\n                queue[i] = undefined;\n                queue[i + 1] = undefined;\n              }\n              len = 0;\n            }\n            function attemptVertx() {\n              try {\n                var vertx = Function('return this')().require('vertx');\n                vertxNext = vertx.runOnLoop || vertx.runOnContext;\n                return useVertxTimer();\n              } catch (e) {\n                return useSetTimeout();\n              }\n            }\n            var scheduleFlush = void 0;\n            // Decide what async method to use to triggering processing of queued callbacks:\n            if (isNode) {\n              scheduleFlush = useNextTick();\n            } else if (BrowserMutationObserver) {\n              scheduleFlush = useMutationObserver();\n            } else if (isWorker) {\n              scheduleFlush = useMessageChannel();\n            } else if (browserWindow === undefined && \"function\" === 'function') {\n              scheduleFlush = attemptVertx();\n            } else {\n              scheduleFlush = useSetTimeout();\n            }\n            function then(onFulfillment, onRejection) {\n              var parent = this;\n              var child = new this.constructor(noop);\n              if (child[PROMISE_ID] === undefined) {\n                makePromise(child);\n              }\n              var _state = parent._state;\n              if (_state) {\n                var callback = arguments[_state - 1];\n                asap(function () {\n                  return invokeCallback(_state, child, callback, parent._result);\n                });\n              } else {\n                subscribe(parent, child, onFulfillment, onRejection);\n              }\n              return child;\n            }\n            /**\n              `Promise.resolve` returns a promise that will become resolved with the\n              passed `value`. It is shorthand for the following:\n            \n              ```javascript\n              let promise = new Promise(function(resolve, reject){\n                resolve(1);\n              });\n            \n              promise.then(function(value){\n                // value === 1\n              });\n              ```\n            \n              Instead of writing the above, your code now simply becomes the following:\n            \n              ```javascript\n              let promise = Promise.resolve(1);\n            \n              promise.then(function(value){\n                // value === 1\n              });\n              ```\n            \n              @method resolve\n              @static\n              @param {Any} value value that the returned promise will be resolved with\n              Useful for tooling.\n              @return {Promise} a promise that will become fulfilled with the given\n              `value`\n            */\n            function resolve$1(object) {\n              /*jshint validthis:true */\n              var Constructor = this;\n              if (object && typeof object === 'object' && object.constructor === Constructor) {\n                return object;\n              }\n              var promise = new Constructor(noop);\n              resolve(promise, object);\n              return promise;\n            }\n            var PROMISE_ID = Math.random().toString(36).substring(2);\n            function noop() {}\n            var PENDING = void 0;\n            var FULFILLED = 1;\n            var REJECTED = 2;\n            function selfFulfillment() {\n              return new TypeError(\"You cannot resolve a promise with itself\");\n            }\n            function cannotReturnOwn() {\n              return new TypeError('A promises callback cannot return that same promise.');\n            }\n            function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n              try {\n                then$$1.call(value, fulfillmentHandler, rejectionHandler);\n              } catch (e) {\n                return e;\n              }\n            }\n            function handleForeignThenable(promise, thenable, then$$1) {\n              asap(function (promise) {\n                var sealed = false;\n                var error = tryThen(then$$1, thenable, function (value) {\n                  if (sealed) {\n                    return;\n                  }\n                  sealed = true;\n                  if (thenable !== value) {\n                    resolve(promise, value);\n                  } else {\n                    fulfill(promise, value);\n                  }\n                }, function (reason) {\n                  if (sealed) {\n                    return;\n                  }\n                  sealed = true;\n                  reject(promise, reason);\n                }, 'Settle: ' + (promise._label || ' unknown promise'));\n                if (!sealed && error) {\n                  sealed = true;\n                  reject(promise, error);\n                }\n              }, promise);\n            }\n            function handleOwnThenable(promise, thenable) {\n              if (thenable._state === FULFILLED) {\n                fulfill(promise, thenable._result);\n              } else if (thenable._state === REJECTED) {\n                reject(promise, thenable._result);\n              } else {\n                subscribe(thenable, undefined, function (value) {\n                  return resolve(promise, value);\n                }, function (reason) {\n                  return reject(promise, reason);\n                });\n              }\n            }\n            function handleMaybeThenable(promise, maybeThenable, then$$1) {\n              if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n                handleOwnThenable(promise, maybeThenable);\n              } else {\n                if (then$$1 === undefined) {\n                  fulfill(promise, maybeThenable);\n                } else if (isFunction(then$$1)) {\n                  handleForeignThenable(promise, maybeThenable, then$$1);\n                } else {\n                  fulfill(promise, maybeThenable);\n                }\n              }\n            }\n            function resolve(promise, value) {\n              if (promise === value) {\n                reject(promise, selfFulfillment());\n              } else if (objectOrFunction(value)) {\n                var then$$1 = void 0;\n                try {\n                  then$$1 = value.then;\n                } catch (error) {\n                  reject(promise, error);\n                  return;\n                }\n                handleMaybeThenable(promise, value, then$$1);\n              } else {\n                fulfill(promise, value);\n              }\n            }\n            function publishRejection(promise) {\n              if (promise._onerror) {\n                promise._onerror(promise._result);\n              }\n              publish(promise);\n            }\n            function fulfill(promise, value) {\n              if (promise._state !== PENDING) {\n                return;\n              }\n              promise._result = value;\n              promise._state = FULFILLED;\n              if (promise._subscribers.length !== 0) {\n                asap(publish, promise);\n              }\n            }\n            function reject(promise, reason) {\n              if (promise._state !== PENDING) {\n                return;\n              }\n              promise._state = REJECTED;\n              promise._result = reason;\n              asap(publishRejection, promise);\n            }\n            function subscribe(parent, child, onFulfillment, onRejection) {\n              var _subscribers = parent._subscribers;\n              var length = _subscribers.length;\n              parent._onerror = null;\n              _subscribers[length] = child;\n              _subscribers[length + FULFILLED] = onFulfillment;\n              _subscribers[length + REJECTED] = onRejection;\n              if (length === 0 && parent._state) {\n                asap(publish, parent);\n              }\n            }\n            function publish(promise) {\n              var subscribers = promise._subscribers;\n              var settled = promise._state;\n              if (subscribers.length === 0) {\n                return;\n              }\n              var child = void 0,\n                callback = void 0,\n                detail = promise._result;\n              for (var i = 0; i < subscribers.length; i += 3) {\n                child = subscribers[i];\n                callback = subscribers[i + settled];\n                if (child) {\n                  invokeCallback(settled, child, callback, detail);\n                } else {\n                  callback(detail);\n                }\n              }\n              promise._subscribers.length = 0;\n            }\n            function invokeCallback(settled, promise, callback, detail) {\n              var hasCallback = isFunction(callback),\n                value = void 0,\n                error = void 0,\n                succeeded = true;\n              if (hasCallback) {\n                try {\n                  value = callback(detail);\n                } catch (e) {\n                  succeeded = false;\n                  error = e;\n                }\n                if (promise === value) {\n                  reject(promise, cannotReturnOwn());\n                  return;\n                }\n              } else {\n                value = detail;\n              }\n              if (promise._state !== PENDING) {\n                // noop\n              } else if (hasCallback && succeeded) {\n                resolve(promise, value);\n              } else if (succeeded === false) {\n                reject(promise, error);\n              } else if (settled === FULFILLED) {\n                fulfill(promise, value);\n              } else if (settled === REJECTED) {\n                reject(promise, value);\n              }\n            }\n            function initializePromise(promise, resolver) {\n              try {\n                resolver(function resolvePromise(value) {\n                  resolve(promise, value);\n                }, function rejectPromise(reason) {\n                  reject(promise, reason);\n                });\n              } catch (e) {\n                reject(promise, e);\n              }\n            }\n            var id = 0;\n            function nextId() {\n              return id++;\n            }\n            function makePromise(promise) {\n              promise[PROMISE_ID] = id++;\n              promise._state = undefined;\n              promise._result = undefined;\n              promise._subscribers = [];\n            }\n            function validationError() {\n              return new Error('Array Methods must be provided an Array');\n            }\n            var Enumerator = function () {\n              function Enumerator(Constructor, input) {\n                this._instanceConstructor = Constructor;\n                this.promise = new Constructor(noop);\n                if (!this.promise[PROMISE_ID]) {\n                  makePromise(this.promise);\n                }\n                if (isArray(input)) {\n                  this.length = input.length;\n                  this._remaining = input.length;\n                  this._result = new Array(this.length);\n                  if (this.length === 0) {\n                    fulfill(this.promise, this._result);\n                  } else {\n                    this.length = this.length || 0;\n                    this._enumerate(input);\n                    if (this._remaining === 0) {\n                      fulfill(this.promise, this._result);\n                    }\n                  }\n                } else {\n                  reject(this.promise, validationError());\n                }\n              }\n              Enumerator.prototype._enumerate = function _enumerate(input) {\n                for (var i = 0; this._state === PENDING && i < input.length; i++) {\n                  this._eachEntry(input[i], i);\n                }\n              };\n              Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n                var c = this._instanceConstructor;\n                var resolve$$1 = c.resolve;\n                if (resolve$$1 === resolve$1) {\n                  var _then = void 0;\n                  var error = void 0;\n                  var didError = false;\n                  try {\n                    _then = entry.then;\n                  } catch (e) {\n                    didError = true;\n                    error = e;\n                  }\n                  if (_then === then && entry._state !== PENDING) {\n                    this._settledAt(entry._state, i, entry._result);\n                  } else if (typeof _then !== 'function') {\n                    this._remaining--;\n                    this._result[i] = entry;\n                  } else if (c === Promise$1) {\n                    var promise = new c(noop);\n                    if (didError) {\n                      reject(promise, error);\n                    } else {\n                      handleMaybeThenable(promise, entry, _then);\n                    }\n                    this._willSettleAt(promise, i);\n                  } else {\n                    this._willSettleAt(new c(function (resolve$$1) {\n                      return resolve$$1(entry);\n                    }), i);\n                  }\n                } else {\n                  this._willSettleAt(resolve$$1(entry), i);\n                }\n              };\n              Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n                var promise = this.promise;\n                if (promise._state === PENDING) {\n                  this._remaining--;\n                  if (state === REJECTED) {\n                    reject(promise, value);\n                  } else {\n                    this._result[i] = value;\n                  }\n                }\n                if (this._remaining === 0) {\n                  fulfill(promise, this._result);\n                }\n              };\n              Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n                var enumerator = this;\n                subscribe(promise, undefined, function (value) {\n                  return enumerator._settledAt(FULFILLED, i, value);\n                }, function (reason) {\n                  return enumerator._settledAt(REJECTED, i, reason);\n                });\n              };\n              return Enumerator;\n            }();\n            /**\n              `Promise.all` accepts an array of promises, and returns a new promise which\n              is fulfilled with an array of fulfillment values for the passed promises, or\n              rejected with the reason of the first passed promise to be rejected. It casts all\n              elements of the passed iterable to promises as it runs this algorithm.\n            \n              Example:\n            \n              ```javascript\n              let promise1 = resolve(1);\n              let promise2 = resolve(2);\n              let promise3 = resolve(3);\n              let promises = [ promise1, promise2, promise3 ];\n            \n              Promise.all(promises).then(function(array){\n                // The array here would be [ 1, 2, 3 ];\n              });\n              ```\n            \n              If any of the `promises` given to `all` are rejected, the first promise\n              that is rejected will be given as an argument to the returned promises's\n              rejection handler. For example:\n            \n              Example:\n            \n              ```javascript\n              let promise1 = resolve(1);\n              let promise2 = reject(new Error(\"2\"));\n              let promise3 = reject(new Error(\"3\"));\n              let promises = [ promise1, promise2, promise3 ];\n            \n              Promise.all(promises).then(function(array){\n                // Code here never runs because there are rejected promises!\n              }, function(error) {\n                // error.message === \"2\"\n              });\n              ```\n            \n              @method all\n              @static\n              @param {Array} entries array of promises\n              @param {String} label optional string for labeling the promise.\n              Useful for tooling.\n              @return {Promise} promise that is fulfilled when all `promises` have been\n              fulfilled, or rejected if any of them become rejected.\n              @static\n            */\n            function all(entries) {\n              return new Enumerator(this, entries).promise;\n            }\n            /**\n              `Promise.race` returns a new promise which is settled in the same way as the\n              first passed promise to settle.\n            \n              Example:\n            \n              ```javascript\n              let promise1 = new Promise(function(resolve, reject){\n                setTimeout(function(){\n                  resolve('promise 1');\n                }, 200);\n              });\n            \n              let promise2 = new Promise(function(resolve, reject){\n                setTimeout(function(){\n                  resolve('promise 2');\n                }, 100);\n              });\n            \n              Promise.race([promise1, promise2]).then(function(result){\n                // result === 'promise 2' because it was resolved before promise1\n                // was resolved.\n              });\n              ```\n            \n              `Promise.race` is deterministic in that only the state of the first\n              settled promise matters. For example, even if other promises given to the\n              `promises` array argument are resolved, but the first settled promise has\n              become rejected before the other promises became fulfilled, the returned\n              promise will become rejected:\n            \n              ```javascript\n              let promise1 = new Promise(function(resolve, reject){\n                setTimeout(function(){\n                  resolve('promise 1');\n                }, 200);\n              });\n            \n              let promise2 = new Promise(function(resolve, reject){\n                setTimeout(function(){\n                  reject(new Error('promise 2'));\n                }, 100);\n              });\n            \n              Promise.race([promise1, promise2]).then(function(result){\n                // Code here never runs\n              }, function(reason){\n                // reason.message === 'promise 2' because promise 2 became rejected before\n                // promise 1 became fulfilled\n              });\n              ```\n            \n              An example real-world use case is implementing timeouts:\n            \n              ```javascript\n              Promise.race([ajax('foo.json'), timeout(5000)])\n              ```\n            \n              @method race\n              @static\n              @param {Array} promises array of promises to observe\n              Useful for tooling.\n              @return {Promise} a promise which settles in the same way as the first passed\n              promise to settle.\n            */\n            function race(entries) {\n              /*jshint validthis:true */\n              var Constructor = this;\n              if (!isArray(entries)) {\n                return new Constructor(function (_, reject) {\n                  return reject(new TypeError('You must pass an array to race.'));\n                });\n              } else {\n                return new Constructor(function (resolve, reject) {\n                  var length = entries.length;\n                  for (var i = 0; i < length; i++) {\n                    Constructor.resolve(entries[i]).then(resolve, reject);\n                  }\n                });\n              }\n            }\n            /**\n              `Promise.reject` returns a promise rejected with the passed `reason`.\n              It is shorthand for the following:\n            \n              ```javascript\n              let promise = new Promise(function(resolve, reject){\n                reject(new Error('WHOOPS'));\n              });\n            \n              promise.then(function(value){\n                // Code here doesn't run because the promise is rejected!\n              }, function(reason){\n                // reason.message === 'WHOOPS'\n              });\n              ```\n            \n              Instead of writing the above, your code now simply becomes the following:\n            \n              ```javascript\n              let promise = Promise.reject(new Error('WHOOPS'));\n            \n              promise.then(function(value){\n                // Code here doesn't run because the promise is rejected!\n              }, function(reason){\n                // reason.message === 'WHOOPS'\n              });\n              ```\n            \n              @method reject\n              @static\n              @param {Any} reason value that the returned promise will be rejected with.\n              Useful for tooling.\n              @return {Promise} a promise rejected with the given `reason`.\n            */\n            function reject$1(reason) {\n              /*jshint validthis:true */\n              var Constructor = this;\n              var promise = new Constructor(noop);\n              reject(promise, reason);\n              return promise;\n            }\n            function needsResolver() {\n              throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n            }\n            function needsNew() {\n              throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n            }\n            /**\n              Promise objects represent the eventual result of an asynchronous operation. The\n              primary way of interacting with a promise is through its `then` method, which\n              registers callbacks to receive either a promise's eventual value or the reason\n              why the promise cannot be fulfilled.\n            \n              Terminology\n              -----------\n            \n              - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n              - `thenable` is an object or function that defines a `then` method.\n              - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n              - `exception` is a value that is thrown using the throw statement.\n              - `reason` is a value that indicates why a promise was rejected.\n              - `settled` the final resting state of a promise, fulfilled or rejected.\n            \n              A promise can be in one of three states: pending, fulfilled, or rejected.\n            \n              Promises that are fulfilled have a fulfillment value and are in the fulfilled\n              state.  Promises that are rejected have a rejection reason and are in the\n              rejected state.  A fulfillment value is never a thenable.\n            \n              Promises can also be said to *resolve* a value.  If this value is also a\n              promise, then the original promise's settled state will match the value's\n              settled state.  So a promise that *resolves* a promise that rejects will\n              itself reject, and a promise that *resolves* a promise that fulfills will\n              itself fulfill.\n            \n            \n              Basic Usage:\n              ------------\n            \n              ```js\n              let promise = new Promise(function(resolve, reject) {\n                // on success\n                resolve(value);\n            \n                // on failure\n                reject(reason);\n              });\n            \n              promise.then(function(value) {\n                // on fulfillment\n              }, function(reason) {\n                // on rejection\n              });\n              ```\n            \n              Advanced Usage:\n              ---------------\n            \n              Promises shine when abstracting away asynchronous interactions such as\n              `XMLHttpRequest`s.\n            \n              ```js\n              function getJSON(url) {\n                return new Promise(function(resolve, reject){\n                  let xhr = new XMLHttpRequest();\n            \n                  xhr.open('GET', url);\n                  xhr.onreadystatechange = handler;\n                  xhr.responseType = 'json';\n                  xhr.setRequestHeader('Accept', 'application/json');\n                  xhr.send();\n            \n                  function handler() {\n                    if (this.readyState === this.DONE) {\n                      if (this.status === 200) {\n                        resolve(this.response);\n                      } else {\n                        reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n                      }\n                    }\n                  };\n                });\n              }\n            \n              getJSON('/posts.json').then(function(json) {\n                // on fulfillment\n              }, function(reason) {\n                // on rejection\n              });\n              ```\n            \n              Unlike callbacks, promises are great composable primitives.\n            \n              ```js\n              Promise.all([\n                getJSON('/posts'),\n                getJSON('/comments')\n              ]).then(function(values){\n                values[0] // => postsJSON\n                values[1] // => commentsJSON\n            \n                return values;\n              });\n              ```\n            \n              @class Promise\n              @param {Function} resolver\n              Useful for tooling.\n              @constructor\n            */\n            var Promise$1 = function () {\n              function Promise(resolver) {\n                this[PROMISE_ID] = nextId();\n                this._result = this._state = undefined;\n                this._subscribers = [];\n                if (noop !== resolver) {\n                  typeof resolver !== 'function' && needsResolver();\n                  this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n                }\n              }\n              /**\n              The primary way of interacting with a promise is through its `then` method,\n              which registers callbacks to receive either a promise's eventual value or the\n              reason why the promise cannot be fulfilled.\n               ```js\n              findUser().then(function(user){\n                // user is available\n              }, function(reason){\n                // user is unavailable, and you are given the reason why\n              });\n              ```\n               Chaining\n              --------\n               The return value of `then` is itself a promise.  This second, 'downstream'\n              promise is resolved with the return value of the first promise's fulfillment\n              or rejection handler, or rejected if the handler throws an exception.\n               ```js\n              findUser().then(function (user) {\n                return user.name;\n              }, function (reason) {\n                return 'default name';\n              }).then(function (userName) {\n                // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n                // will be `'default name'`\n              });\n               findUser().then(function (user) {\n                throw new Error('Found user, but still unhappy');\n              }, function (reason) {\n                throw new Error('`findUser` rejected and we're unhappy');\n              }).then(function (value) {\n                // never reached\n              }, function (reason) {\n                // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n                // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n              });\n              ```\n              If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n               ```js\n              findUser().then(function (user) {\n                throw new PedagogicalException('Upstream error');\n              }).then(function (value) {\n                // never reached\n              }).then(function (value) {\n                // never reached\n              }, function (reason) {\n                // The `PedgagocialException` is propagated all the way down to here\n              });\n              ```\n               Assimilation\n              ------------\n               Sometimes the value you want to propagate to a downstream promise can only be\n              retrieved asynchronously. This can be achieved by returning a promise in the\n              fulfillment or rejection handler. The downstream promise will then be pending\n              until the returned promise is settled. This is called *assimilation*.\n               ```js\n              findUser().then(function (user) {\n                return findCommentsByAuthor(user);\n              }).then(function (comments) {\n                // The user's comments are now available\n              });\n              ```\n               If the assimliated promise rejects, then the downstream promise will also reject.\n               ```js\n              findUser().then(function (user) {\n                return findCommentsByAuthor(user);\n              }).then(function (comments) {\n                // If `findCommentsByAuthor` fulfills, we'll have the value here\n              }, function (reason) {\n                // If `findCommentsByAuthor` rejects, we'll have the reason here\n              });\n              ```\n               Simple Example\n              --------------\n               Synchronous Example\n               ```javascript\n              let result;\n               try {\n                result = findResult();\n                // success\n              } catch(reason) {\n                // failure\n              }\n              ```\n               Errback Example\n               ```js\n              findResult(function(result, err){\n                if (err) {\n                  // failure\n                } else {\n                  // success\n                }\n              });\n              ```\n               Promise Example;\n               ```javascript\n              findResult().then(function(result){\n                // success\n              }, function(reason){\n                // failure\n              });\n              ```\n               Advanced Example\n              --------------\n               Synchronous Example\n               ```javascript\n              let author, books;\n               try {\n                author = findAuthor();\n                books  = findBooksByAuthor(author);\n                // success\n              } catch(reason) {\n                // failure\n              }\n              ```\n               Errback Example\n               ```js\n               function foundBooks(books) {\n               }\n               function failure(reason) {\n               }\n               findAuthor(function(author, err){\n                if (err) {\n                  failure(err);\n                  // failure\n                } else {\n                  try {\n                    findBoooksByAuthor(author, function(books, err) {\n                      if (err) {\n                        failure(err);\n                      } else {\n                        try {\n                          foundBooks(books);\n                        } catch(reason) {\n                          failure(reason);\n                        }\n                      }\n                    });\n                  } catch(error) {\n                    failure(err);\n                  }\n                  // success\n                }\n              });\n              ```\n               Promise Example;\n               ```javascript\n              findAuthor().\n                then(findBooksByAuthor).\n                then(function(books){\n                  // found books\n              }).catch(function(reason){\n                // something went wrong\n              });\n              ```\n               @method then\n              @param {Function} onFulfilled\n              @param {Function} onRejected\n              Useful for tooling.\n              @return {Promise}\n              */\n              /**\n              `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n              as the catch block of a try/catch statement.\n              ```js\n              function findAuthor(){\n              throw new Error('couldn't find that author');\n              }\n              // synchronous\n              try {\n              findAuthor();\n              } catch(reason) {\n              // something went wrong\n              }\n              // async with promises\n              findAuthor().catch(function(reason){\n              // something went wrong\n              });\n              ```\n              @method catch\n              @param {Function} onRejection\n              Useful for tooling.\n              @return {Promise}\n              */\n              Promise.prototype.catch = function _catch(onRejection) {\n                return this.then(null, onRejection);\n              };\n              /**\n                `finally` will be invoked regardless of the promise's fate just as native\n                try/catch/finally behaves\n              \n                Synchronous example:\n              \n                ```js\n                findAuthor() {\n                  if (Math.random() > 0.5) {\n                    throw new Error();\n                  }\n                  return new Author();\n                }\n              \n                try {\n                  return findAuthor(); // succeed or fail\n                } catch(error) {\n                  return findOtherAuther();\n                } finally {\n                  // always runs\n                  // doesn't affect the return value\n                }\n                ```\n              \n                Asynchronous example:\n              \n                ```js\n                findAuthor().catch(function(reason){\n                  return findOtherAuther();\n                }).finally(function(){\n                  // author was either found, or not\n                });\n                ```\n              \n                @method finally\n                @param {Function} callback\n                @return {Promise}\n              */\n              Promise.prototype.finally = function _finally(callback) {\n                var promise = this;\n                var constructor = promise.constructor;\n                if (isFunction(callback)) {\n                  return promise.then(function (value) {\n                    return constructor.resolve(callback()).then(function () {\n                      return value;\n                    });\n                  }, function (reason) {\n                    return constructor.resolve(callback()).then(function () {\n                      throw reason;\n                    });\n                  });\n                }\n                return promise.then(callback, callback);\n              };\n              return Promise;\n            }();\n            Promise$1.prototype.then = then;\n            Promise$1.all = all;\n            Promise$1.race = race;\n            Promise$1.resolve = resolve$1;\n            Promise$1.reject = reject$1;\n            Promise$1._setScheduler = setScheduler;\n            Promise$1._setAsap = setAsap;\n            Promise$1._asap = asap;\n            /*global self*/\n            function polyfill() {\n              var local = void 0;\n              if (typeof __nested_webpack_require_1044__.g !== 'undefined') {\n                local = __nested_webpack_require_1044__.g;\n              } else if (typeof self !== 'undefined') {\n                local = self;\n              } else {\n                try {\n                  local = Function('return this')();\n                } catch (e) {\n                  throw new Error('polyfill failed because global object is unavailable in this environment');\n                }\n              }\n              var P = local.Promise;\n              if (P) {\n                var promiseToString = null;\n                try {\n                  promiseToString = Object.prototype.toString.call(P.resolve());\n                } catch (e) {\n                  // silently ignored\n                }\n                if (promiseToString === '[object Promise]' && !P.cast) {\n                  return;\n                }\n              }\n              local.Promise = Promise$1;\n            }\n            // Strange compat..\n            Promise$1.polyfill = polyfill;\n            Promise$1.Promise = Promise$1;\n            return Promise$1;\n          });\n\n          /***/\n        },\n\n        /***/\"./node_modules/events/events.js\":\n        /*!***************************************!*\\\n          !*** ./node_modules/events/events.js ***!\n          \\***************************************/\n        /***/\n        function (module) {\n          \"use strict\";\n\n          // Copyright Joyent, Inc. and other Node contributors.\n          //\n          // Permission is hereby granted, free of charge, to any person obtaining a\n          // copy of this software and associated documentation files (the\n          // \"Software\"), to deal in the Software without restriction, including\n          // without limitation the rights to use, copy, modify, merge, publish,\n          // distribute, sublicense, and/or sell copies of the Software, and to permit\n          // persons to whom the Software is furnished to do so, subject to the\n          // following conditions:\n          //\n          // The above copyright notice and this permission notice shall be included\n          // in all copies or substantial portions of the Software.\n          //\n          // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n          // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n          // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n          // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n          // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n          // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n          // USE OR OTHER DEALINGS IN THE SOFTWARE.\n          var R = typeof Reflect === 'object' ? Reflect : null;\n          var ReflectApply = R && typeof R.apply === 'function' ? R.apply : function ReflectApply(target, receiver, args) {\n            return Function.prototype.apply.call(target, receiver, args);\n          };\n          var ReflectOwnKeys;\n          if (R && typeof R.ownKeys === 'function') {\n            ReflectOwnKeys = R.ownKeys;\n          } else if (Object.getOwnPropertySymbols) {\n            ReflectOwnKeys = function ReflectOwnKeys(target) {\n              return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));\n            };\n          } else {\n            ReflectOwnKeys = function ReflectOwnKeys(target) {\n              return Object.getOwnPropertyNames(target);\n            };\n          }\n          function ProcessEmitWarning(warning) {\n            if (console && console.warn) console.warn(warning);\n          }\n          var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n            return value !== value;\n          };\n          function EventEmitter() {\n            EventEmitter.init.call(this);\n          }\n          module.exports = EventEmitter;\n          module.exports.once = once;\n          // Backwards-compat with node 0.10.x\n          EventEmitter.EventEmitter = EventEmitter;\n          EventEmitter.prototype._events = undefined;\n          EventEmitter.prototype._eventsCount = 0;\n          EventEmitter.prototype._maxListeners = undefined;\n          // By default EventEmitters will print a warning if more than 10 listeners are\n          // added to it. This is a useful default which helps finding memory leaks.\n          var defaultMaxListeners = 10;\n          function checkListener(listener) {\n            if (typeof listener !== 'function') {\n              throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n            }\n          }\n          Object.defineProperty(EventEmitter, 'defaultMaxListeners', {\n            enumerable: true,\n            get: function () {\n              return defaultMaxListeners;\n            },\n            set: function (arg) {\n              if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n                throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n              }\n              defaultMaxListeners = arg;\n            }\n          });\n          EventEmitter.init = function () {\n            if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) {\n              this._events = Object.create(null);\n              this._eventsCount = 0;\n            }\n            this._maxListeners = this._maxListeners || undefined;\n          };\n          // Obviously not all Emitters should be limited to 10. This function allows\n          // that to be increased. Set to zero for unlimited.\n          EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n            if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n              throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n            }\n            this._maxListeners = n;\n            return this;\n          };\n          function _getMaxListeners(that) {\n            if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners;\n            return that._maxListeners;\n          }\n          EventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n            return _getMaxListeners(this);\n          };\n          EventEmitter.prototype.emit = function emit(type) {\n            var args = [];\n            for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n            var doError = type === 'error';\n            var events = this._events;\n            if (events !== undefined) doError = doError && events.error === undefined;else if (!doError) return false;\n            // If there is no 'error' event listener then throw.\n            if (doError) {\n              var er;\n              if (args.length > 0) er = args[0];\n              if (er instanceof Error) {\n                // Note: The comments on the `throw` lines are intentional, they show\n                // up in Node's output if this results in an unhandled exception.\n                throw er; // Unhandled 'error' event\n              }\n              // At least give some kind of context to the user\n              var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n              err.context = er;\n              throw err; // Unhandled 'error' event\n            }\n\n            var handler = events[type];\n            if (handler === undefined) return false;\n            if (typeof handler === 'function') {\n              ReflectApply(handler, this, args);\n            } else {\n              var len = handler.length;\n              var listeners = arrayClone(handler, len);\n              for (var i = 0; i < len; ++i) ReflectApply(listeners[i], this, args);\n            }\n            return true;\n          };\n          function _addListener(target, type, listener, prepend) {\n            var m;\n            var events;\n            var existing;\n            checkListener(listener);\n            events = target._events;\n            if (events === undefined) {\n              events = target._events = Object.create(null);\n              target._eventsCount = 0;\n            } else {\n              // To avoid recursion in the case that type === \"newListener\"! Before\n              // adding it to the listeners, first emit \"newListener\".\n              if (events.newListener !== undefined) {\n                target.emit('newListener', type, listener.listener ? listener.listener : listener);\n                // Re-assign `events` because a newListener handler could have caused the\n                // this._events to be assigned to a new object\n                events = target._events;\n              }\n              existing = events[type];\n            }\n            if (existing === undefined) {\n              // Optimize the case of one listener. Don't need the extra array object.\n              existing = events[type] = listener;\n              ++target._eventsCount;\n            } else {\n              if (typeof existing === 'function') {\n                // Adding the second element, need to change to array.\n                existing = events[type] = prepend ? [listener, existing] : [existing, listener];\n                // If we've already got an array, just append.\n              } else if (prepend) {\n                existing.unshift(listener);\n              } else {\n                existing.push(listener);\n              }\n              // Check for listener leak\n              m = _getMaxListeners(target);\n              if (m > 0 && existing.length > m && !existing.warned) {\n                existing.warned = true;\n                // No error code for this since it is a Warning\n                // eslint-disable-next-line no-restricted-syntax\n                var w = new Error('Possible EventEmitter memory leak detected. ' + existing.length + ' ' + String(type) + ' listeners ' + 'added. Use emitter.setMaxListeners() to ' + 'increase limit');\n                w.name = 'MaxListenersExceededWarning';\n                w.emitter = target;\n                w.type = type;\n                w.count = existing.length;\n                ProcessEmitWarning(w);\n              }\n            }\n            return target;\n          }\n          EventEmitter.prototype.addListener = function addListener(type, listener) {\n            return _addListener(this, type, listener, false);\n          };\n          EventEmitter.prototype.on = EventEmitter.prototype.addListener;\n          EventEmitter.prototype.prependListener = function prependListener(type, listener) {\n            return _addListener(this, type, listener, true);\n          };\n          function onceWrapper() {\n            if (!this.fired) {\n              this.target.removeListener(this.type, this.wrapFn);\n              this.fired = true;\n              if (arguments.length === 0) return this.listener.call(this.target);\n              return this.listener.apply(this.target, arguments);\n            }\n          }\n          function _onceWrap(target, type, listener) {\n            var state = {\n              fired: false,\n              wrapFn: undefined,\n              target: target,\n              type: type,\n              listener: listener\n            };\n            var wrapped = onceWrapper.bind(state);\n            wrapped.listener = listener;\n            state.wrapFn = wrapped;\n            return wrapped;\n          }\n          EventEmitter.prototype.once = function once(type, listener) {\n            checkListener(listener);\n            this.on(type, _onceWrap(this, type, listener));\n            return this;\n          };\n          EventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) {\n            checkListener(listener);\n            this.prependListener(type, _onceWrap(this, type, listener));\n            return this;\n          };\n          // Emits a 'removeListener' event if and only if the listener was removed.\n          EventEmitter.prototype.removeListener = function removeListener(type, listener) {\n            var list, events, position, i, originalListener;\n            checkListener(listener);\n            events = this._events;\n            if (events === undefined) return this;\n            list = events[type];\n            if (list === undefined) return this;\n            if (list === listener || list.listener === listener) {\n              if (--this._eventsCount === 0) this._events = Object.create(null);else {\n                delete events[type];\n                if (events.removeListener) this.emit('removeListener', type, list.listener || listener);\n              }\n            } else if (typeof list !== 'function') {\n              position = -1;\n              for (i = list.length - 1; i >= 0; i--) {\n                if (list[i] === listener || list[i].listener === listener) {\n                  originalListener = list[i].listener;\n                  position = i;\n                  break;\n                }\n              }\n              if (position < 0) return this;\n              if (position === 0) list.shift();else {\n                spliceOne(list, position);\n              }\n              if (list.length === 1) events[type] = list[0];\n              if (events.removeListener !== undefined) this.emit('removeListener', type, originalListener || listener);\n            }\n            return this;\n          };\n          EventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n          EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {\n            var listeners, events, i;\n            events = this._events;\n            if (events === undefined) return this;\n            // not listening for removeListener, no need to emit\n            if (events.removeListener === undefined) {\n              if (arguments.length === 0) {\n                this._events = Object.create(null);\n                this._eventsCount = 0;\n              } else if (events[type] !== undefined) {\n                if (--this._eventsCount === 0) this._events = Object.create(null);else delete events[type];\n              }\n              return this;\n            }\n            // emit removeListener for all listeners on all events\n            if (arguments.length === 0) {\n              var keys = Object.keys(events);\n              var key;\n              for (i = 0; i < keys.length; ++i) {\n                key = keys[i];\n                if (key === 'removeListener') continue;\n                this.removeAllListeners(key);\n              }\n              this.removeAllListeners('removeListener');\n              this._events = Object.create(null);\n              this._eventsCount = 0;\n              return this;\n            }\n            listeners = events[type];\n            if (typeof listeners === 'function') {\n              this.removeListener(type, listeners);\n            } else if (listeners !== undefined) {\n              // LIFO order\n              for (i = listeners.length - 1; i >= 0; i--) {\n                this.removeListener(type, listeners[i]);\n              }\n            }\n            return this;\n          };\n          function _listeners(target, type, unwrap) {\n            var events = target._events;\n            if (events === undefined) return [];\n            var evlistener = events[type];\n            if (evlistener === undefined) return [];\n            if (typeof evlistener === 'function') return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n            return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n          }\n          EventEmitter.prototype.listeners = function listeners(type) {\n            return _listeners(this, type, true);\n          };\n          EventEmitter.prototype.rawListeners = function rawListeners(type) {\n            return _listeners(this, type, false);\n          };\n          EventEmitter.listenerCount = function (emitter, type) {\n            if (typeof emitter.listenerCount === 'function') {\n              return emitter.listenerCount(type);\n            } else {\n              return listenerCount.call(emitter, type);\n            }\n          };\n          EventEmitter.prototype.listenerCount = listenerCount;\n          function listenerCount(type) {\n            var events = this._events;\n            if (events !== undefined) {\n              var evlistener = events[type];\n              if (typeof evlistener === 'function') {\n                return 1;\n              } else if (evlistener !== undefined) {\n                return evlistener.length;\n              }\n            }\n            return 0;\n          }\n          EventEmitter.prototype.eventNames = function eventNames() {\n            return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n          };\n          function arrayClone(arr, n) {\n            var copy = new Array(n);\n            for (var i = 0; i < n; ++i) copy[i] = arr[i];\n            return copy;\n          }\n          function spliceOne(list, index) {\n            for (; index + 1 < list.length; index++) list[index] = list[index + 1];\n            list.pop();\n          }\n          function unwrapListeners(arr) {\n            var ret = new Array(arr.length);\n            for (var i = 0; i < ret.length; ++i) {\n              ret[i] = arr[i].listener || arr[i];\n            }\n            return ret;\n          }\n          function once(emitter, name) {\n            return new Promise(function (resolve, reject) {\n              function errorListener(err) {\n                emitter.removeListener(name, resolver);\n                reject(err);\n              }\n              function resolver() {\n                if (typeof emitter.removeListener === 'function') {\n                  emitter.removeListener('error', errorListener);\n                }\n                resolve([].slice.call(arguments));\n              }\n              ;\n              eventTargetAgnosticAddListener(emitter, name, resolver, {\n                once: true\n              });\n              if (name !== 'error') {\n                addErrorHandlerIfEventEmitter(emitter, errorListener, {\n                  once: true\n                });\n              }\n            });\n          }\n          function addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n            if (typeof emitter.on === 'function') {\n              eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n            }\n          }\n          function eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n            if (typeof emitter.on === 'function') {\n              if (flags.once) {\n                emitter.once(name, listener);\n              } else {\n                emitter.on(name, listener);\n              }\n            } else if (typeof emitter.addEventListener === 'function') {\n              // EventTarget does not have `error` event semantics like Node\n              // EventEmitters, we do not listen for `error` events here.\n              emitter.addEventListener(name, function wrapListener(arg) {\n                // IE does not have builtin `{ once: true }` support so we\n                // have to do it manually.\n                if (flags.once) {\n                  emitter.removeEventListener(name, wrapListener);\n                }\n                listener(arg);\n              });\n            } else {\n              throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n            }\n          }\n\n          /***/\n        },\n\n        /***/\"./node_modules/webworkify-webpack/index.js\":\n        /*!**************************************************!*\\\n          !*** ./node_modules/webworkify-webpack/index.js ***!\n          \\**************************************************/\n        /***/\n        function (module, __unused_webpack_exports, __nested_webpack_require_61271__) {\n          function webpackBootstrapFunc(modules) {\n            /******/ // The module cache\n            /******/var installedModules = {};\n            /******/ // The require function\n            /******/\n            function __nested_webpack_require_164__(moduleId) {\n              /******/ // Check if module is in cache\n              /******/if (installedModules[moduleId]) /******/return installedModules[moduleId].exports;\n              /******/ // Create a new module (and put it into the cache)\n              /******/\n              var module = installedModules[moduleId] = {\n                /******/i: moduleId,\n                /******/l: false,\n                /******/exports: {}\n                /******/\n              };\n              /******/ // Execute the module function\n              /******/\n              modules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_164__);\n              /******/ // Flag the module as loaded\n              /******/\n              module.l = true;\n              /******/ // Return the exports of the module\n              /******/\n              return module.exports;\n              /******/\n            }\n            /******/ // expose the modules object (__webpack_modules__)\n            /******/\n            __nested_webpack_require_164__.m = modules;\n            /******/ // expose the module cache\n            /******/\n            __nested_webpack_require_164__.c = installedModules;\n            /******/ // identity function for calling harmony imports with the correct context\n            /******/\n            __nested_webpack_require_164__.i = function (value) {\n              return value;\n            };\n            /******/ // define getter function for harmony exports\n            /******/\n            __nested_webpack_require_164__.d = function (exports, name, getter) {\n              /******/if (!__nested_webpack_require_164__.o(exports, name)) {\n                /******/Object.defineProperty(exports, name, {\n                  /******/configurable: false,\n                  /******/enumerable: true,\n                  /******/get: getter\n                  /******/\n                });\n                /******/\n              }\n              /******/\n            };\n            /******/ // define __esModule on exports\n            /******/\n            __nested_webpack_require_164__.r = function (exports) {\n              /******/Object.defineProperty(exports, '__esModule', {\n                value: true\n              });\n              /******/\n            };\n            /******/ // getDefaultExport function for compatibility with non-harmony modules\n            /******/\n            __nested_webpack_require_164__.n = function (module) {\n              /******/var getter = module && module.__esModule ? /******/function getDefault() {\n                return module['default'];\n              } : /******/function getModuleExports() {\n                return module;\n              };\n              /******/\n              __nested_webpack_require_164__.d(getter, 'a', getter);\n              /******/\n              return getter;\n              /******/\n            };\n            /******/ // Object.prototype.hasOwnProperty.call\n            /******/\n            __nested_webpack_require_164__.o = function (object, property) {\n              return Object.prototype.hasOwnProperty.call(object, property);\n            };\n            /******/ // __webpack_public_path__\n            /******/\n            __nested_webpack_require_164__.p = \"/\";\n            /******/ // on error function for async loading\n            /******/\n            __nested_webpack_require_164__.oe = function (err) {\n              console.error(err);\n              throw err;\n            };\n            var f = __nested_webpack_require_164__(__nested_webpack_require_164__.s = ENTRY_MODULE);\n            return f.default || f; // try to call default if defined to also support babel esmodule exports\n          }\n\n          var moduleNameReqExp = '[\\\\.|\\\\-|\\\\+|\\\\w|\\/|@]+';\n          var dependencyRegExp = '\\\\(\\\\s*(\\/\\\\*.*?\\\\*\\/)?\\\\s*.*?(' + moduleNameReqExp + ').*?\\\\)'; // additional chars when output.pathinfo is true\n          // http://stackoverflow.com/a/2593661/130442\n          function quoteRegExp(str) {\n            return (str + '').replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&');\n          }\n          function isNumeric(n) {\n            return !isNaN(1 * n); // 1 * n converts integers, integers as string (\"123\"), 1e3 and \"1e3\" to integers and strings to NaN\n          }\n\n          function getModuleDependencies(sources, module, queueName) {\n            var retval = {};\n            retval[queueName] = [];\n            var fnString = module.toString();\n            var wrapperSignature = fnString.match(/^function\\s?\\w*\\(\\w+,\\s*\\w+,\\s*(\\w+)\\)/);\n            if (!wrapperSignature) return retval;\n            var webpackRequireName = wrapperSignature[1];\n            // main bundle deps\n            var re = new RegExp('(\\\\\\\\n|\\\\W)' + quoteRegExp(webpackRequireName) + dependencyRegExp, 'g');\n            var match;\n            while (match = re.exec(fnString)) {\n              if (match[3] === 'dll-reference') continue;\n              retval[queueName].push(match[3]);\n            }\n            // dll deps\n            re = new RegExp('\\\\(' + quoteRegExp(webpackRequireName) + '\\\\(\"(dll-reference\\\\s(' + moduleNameReqExp + '))\"\\\\)\\\\)' + dependencyRegExp, 'g');\n            while (match = re.exec(fnString)) {\n              if (!sources[match[2]]) {\n                retval[queueName].push(match[1]);\n                sources[match[2]] = __nested_webpack_require_61271__(match[1]).m;\n              }\n              retval[match[2]] = retval[match[2]] || [];\n              retval[match[2]].push(match[4]);\n            }\n            // convert 1e3 back to 1000 - this can be important after uglify-js converted 1000 to 1e3\n            var keys = Object.keys(retval);\n            for (var i = 0; i < keys.length; i++) {\n              for (var j = 0; j < retval[keys[i]].length; j++) {\n                if (isNumeric(retval[keys[i]][j])) {\n                  retval[keys[i]][j] = 1 * retval[keys[i]][j];\n                }\n              }\n            }\n            return retval;\n          }\n          function hasValuesInQueues(queues) {\n            var keys = Object.keys(queues);\n            return keys.reduce(function (hasValues, key) {\n              return hasValues || queues[key].length > 0;\n            }, false);\n          }\n          function getRequiredModules(sources, moduleId) {\n            var modulesQueue = {\n              main: [moduleId]\n            };\n            var requiredModules = {\n              main: []\n            };\n            var seenModules = {\n              main: {}\n            };\n            while (hasValuesInQueues(modulesQueue)) {\n              var queues = Object.keys(modulesQueue);\n              for (var i = 0; i < queues.length; i++) {\n                var queueName = queues[i];\n                var queue = modulesQueue[queueName];\n                var moduleToCheck = queue.pop();\n                seenModules[queueName] = seenModules[queueName] || {};\n                if (seenModules[queueName][moduleToCheck] || !sources[queueName][moduleToCheck]) continue;\n                seenModules[queueName][moduleToCheck] = true;\n                requiredModules[queueName] = requiredModules[queueName] || [];\n                requiredModules[queueName].push(moduleToCheck);\n                var newModules = getModuleDependencies(sources, sources[queueName][moduleToCheck], queueName);\n                var newModulesKeys = Object.keys(newModules);\n                for (var j = 0; j < newModulesKeys.length; j++) {\n                  modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]] || [];\n                  modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]].concat(newModules[newModulesKeys[j]]);\n                }\n              }\n            }\n            return requiredModules;\n          }\n          module.exports = function (moduleId, options) {\n            options = options || {};\n            var sources = {\n              main: __nested_webpack_require_61271__.m\n            };\n            var requiredModules = options.all ? {\n              main: Object.keys(sources.main)\n            } : getRequiredModules(sources, moduleId);\n            var src = '';\n            Object.keys(requiredModules).filter(function (m) {\n              return m !== 'main';\n            }).forEach(function (module) {\n              var entryModule = 0;\n              while (requiredModules[module][entryModule]) {\n                entryModule++;\n              }\n              requiredModules[module].push(entryModule);\n              sources[module][entryModule] = '(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })';\n              src = src + 'var ' + module + ' = (' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(entryModule)) + ')({' + requiredModules[module].map(function (id) {\n                return '' + JSON.stringify(id) + ': ' + sources[module][id].toString();\n              }).join(',') + '});\\n';\n            });\n            src = src + 'new ((' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(moduleId)) + ')({' + requiredModules.main.map(function (id) {\n              return '' + JSON.stringify(id) + ': ' + sources.main[id].toString();\n            }).join(',') + '}))(self);';\n            var blob = new window.Blob([src], {\n              type: 'text/javascript'\n            });\n            if (options.bare) {\n              return blob;\n            }\n            var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n            var workerUrl = URL.createObjectURL(blob);\n            var worker = new window.Worker(workerUrl);\n            worker.objectURL = workerUrl;\n            return worker;\n          };\n\n          /***/\n        },\n\n        /***/\"./src/config.js\":\n        /*!***********************!*\\\n          !*** ./src/config.js ***!\n          \\***********************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_71459__) {\n          \"use strict\";\n\n          __nested_webpack_require_71459__.r(__webpack_exports__);\n          /* harmony export */\n          __nested_webpack_require_71459__.d(__webpack_exports__, {\n            /* harmony export */\"defaultConfig\": function () {\n              return (/* binding */defaultConfig\n              );\n            },\n            /* harmony export */\"createDefaultConfig\": function () {\n              return (/* binding */createDefaultConfig\n              );\n            }\n            /* harmony export */\n          });\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var defaultConfig = {\n            enableWorker: false,\n            enableStashBuffer: true,\n            stashInitialSize: undefined,\n            isLive: false,\n            lazyLoad: true,\n            lazyLoadMaxDuration: 3 * 60,\n            lazyLoadRecoverDuration: 30,\n            deferLoadAfterSourceOpen: true,\n            // autoCleanupSourceBuffer: default as false, leave unspecified\n            autoCleanupMaxBackwardDuration: 3 * 60,\n            autoCleanupMinBackwardDuration: 2 * 60,\n            statisticsInfoReportInterval: 600,\n            fixAudioTimestampGap: true,\n            accurateSeek: false,\n            seekType: 'range',\n            seekParamStart: 'bstart',\n            seekParamEnd: 'bend',\n            rangeLoadZeroStart: false,\n            customSeekHandler: undefined,\n            reuseRedirectedURL: false,\n            // referrerPolicy: leave as unspecified\n            headers: undefined,\n            customLoader: undefined\n          };\n          function createDefaultConfig() {\n            return Object.assign({}, defaultConfig);\n          }\n\n          /***/\n        },\n\n        /***/\"./src/core/features.js\":\n        /*!******************************!*\\\n          !*** ./src/core/features.js ***!\n          \\******************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_74184__) {\n          \"use strict\";\n\n          __nested_webpack_require_74184__.r(__webpack_exports__);\n          /* harmony import */\n          var _io_io_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_74184__( /*! ../io/io-controller.js */\"./src/io/io-controller.js\");\n          /* harmony import */\n          var _config_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_74184__( /*! ../config.js */\"./src/config.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          var Features = /** @class */function () {\n            function Features() {}\n            Features.supportMSEH264Playback = function () {\n              return window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs=\"avc1.42E01E,mp4a.40.2\"');\n            };\n            Features.supportNetworkStreamIO = function () {\n              var ioctl = new _io_io_controller_js__WEBPACK_IMPORTED_MODULE_0__.default({}, (0, _config_js__WEBPACK_IMPORTED_MODULE_1__.createDefaultConfig)());\n              var loaderType = ioctl.loaderType;\n              ioctl.destroy();\n              return loaderType == 'fetch-stream-loader' || loaderType == 'xhr-moz-chunked-loader';\n            };\n            Features.getNetworkLoaderTypeName = function () {\n              var ioctl = new _io_io_controller_js__WEBPACK_IMPORTED_MODULE_0__.default({}, (0, _config_js__WEBPACK_IMPORTED_MODULE_1__.createDefaultConfig)());\n              var loaderType = ioctl.loaderType;\n              ioctl.destroy();\n              return loaderType;\n            };\n            Features.supportNativeMediaPlayback = function (mimeType) {\n              if (Features.videoElement == undefined) {\n                Features.videoElement = window.document.createElement('video');\n              }\n              var canPlay = Features.videoElement.canPlayType(mimeType);\n              return canPlay === 'probably' || canPlay == 'maybe';\n            };\n            Features.getFeatureList = function () {\n              var features = {\n                mseFlvPlayback: false,\n                mseLiveFlvPlayback: false,\n                networkStreamIO: false,\n                networkLoaderName: '',\n                nativeMP4H264Playback: false,\n                nativeWebmVP8Playback: false,\n                nativeWebmVP9Playback: false\n              };\n              features.mseFlvPlayback = Features.supportMSEH264Playback();\n              features.networkStreamIO = Features.supportNetworkStreamIO();\n              features.networkLoaderName = Features.getNetworkLoaderTypeName();\n              features.mseLiveFlvPlayback = features.mseFlvPlayback && features.networkStreamIO;\n              features.nativeMP4H264Playback = Features.supportNativeMediaPlayback('video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"');\n              features.nativeWebmVP8Playback = Features.supportNativeMediaPlayback('video/webm; codecs=\"vp8.0, vorbis\"');\n              features.nativeWebmVP9Playback = Features.supportNativeMediaPlayback('video/webm; codecs=\"vp9\"');\n              return features;\n            };\n            return Features;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = Features;\n\n          /***/\n        },\n\n        /***/\"./src/core/media-info.js\":\n        /*!********************************!*\\\n          !*** ./src/core/media-info.js ***!\n          \\********************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_78426__) {\n          \"use strict\";\n\n          __nested_webpack_require_78426__.r(__webpack_exports__);\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var MediaInfo = /** @class */function () {\n            function MediaInfo() {\n              this.mimeType = null;\n              this.duration = null;\n              this.hasAudio = null;\n              this.hasVideo = null;\n              this.audioCodec = null;\n              this.videoCodec = null;\n              this.audioDataRate = null;\n              this.videoDataRate = null;\n              this.audioSampleRate = null;\n              this.audioChannelCount = null;\n              this.width = null;\n              this.height = null;\n              this.fps = null;\n              this.profile = null;\n              this.level = null;\n              this.refFrames = null;\n              this.chromaFormat = null;\n              this.sarNum = null;\n              this.sarDen = null;\n              this.metadata = null;\n              this.segments = null; // MediaInfo[]\n              this.segmentCount = null;\n              this.hasKeyframesIndex = null;\n              this.keyframesIndex = null;\n            }\n            MediaInfo.prototype.isComplete = function () {\n              var audioInfoComplete = this.hasAudio === false || this.hasAudio === true && this.audioCodec != null && this.audioSampleRate != null && this.audioChannelCount != null;\n              var videoInfoComplete = this.hasVideo === false || this.hasVideo === true && this.videoCodec != null && this.width != null && this.height != null && this.fps != null && this.profile != null && this.level != null && this.refFrames != null && this.chromaFormat != null && this.sarNum != null && this.sarDen != null;\n              // keyframesIndex may not be present\n              return this.mimeType != null && this.duration != null && this.metadata != null && this.hasKeyframesIndex != null && audioInfoComplete && videoInfoComplete;\n            };\n            MediaInfo.prototype.isSeekable = function () {\n              return this.hasKeyframesIndex === true;\n            };\n            MediaInfo.prototype.getNearestKeyframe = function (milliseconds) {\n              if (this.keyframesIndex == null) {\n                return null;\n              }\n              var table = this.keyframesIndex;\n              var keyframeIdx = this._search(table.times, milliseconds);\n              return {\n                index: keyframeIdx,\n                milliseconds: table.times[keyframeIdx],\n                fileposition: table.filepositions[keyframeIdx]\n              };\n            };\n            MediaInfo.prototype._search = function (list, value) {\n              var idx = 0;\n              var last = list.length - 1;\n              var mid = 0;\n              var lbound = 0;\n              var ubound = last;\n              if (value < list[0]) {\n                idx = 0;\n                lbound = ubound + 1; // skip search\n              }\n\n              while (lbound <= ubound) {\n                mid = lbound + Math.floor((ubound - lbound) / 2);\n                if (mid === last || value >= list[mid] && value < list[mid + 1]) {\n                  idx = mid;\n                  break;\n                } else if (list[mid] < value) {\n                  lbound = mid + 1;\n                } else {\n                  ubound = mid - 1;\n                }\n              }\n              return idx;\n            };\n            return MediaInfo;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = MediaInfo;\n\n          /***/\n        },\n\n        /***/\"./src/core/media-segment-info.js\":\n        /*!****************************************!*\\\n          !*** ./src/core/media-segment-info.js ***!\n          \\****************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_83083__) {\n          \"use strict\";\n\n          __nested_webpack_require_83083__.r(__webpack_exports__);\n          /* harmony export */\n          __nested_webpack_require_83083__.d(__webpack_exports__, {\n            /* harmony export */\"SampleInfo\": function () {\n              return (/* binding */SampleInfo\n              );\n            },\n            /* harmony export */\"MediaSegmentInfo\": function () {\n              return (/* binding */MediaSegmentInfo\n              );\n            },\n            /* harmony export */\"IDRSampleList\": function () {\n              return (/* binding */IDRSampleList\n              );\n            },\n            /* harmony export */\"MediaSegmentInfoList\": function () {\n              return (/* binding */MediaSegmentInfoList\n              );\n            }\n            /* harmony export */\n          });\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          // Represents an media sample (audio / video)\n          var SampleInfo = /** @class */function () {\n            function SampleInfo(dts, pts, duration, originalDts, isSync) {\n              this.dts = dts;\n              this.pts = pts;\n              this.duration = duration;\n              this.originalDts = originalDts;\n              this.isSyncPoint = isSync;\n              this.fileposition = null;\n            }\n            return SampleInfo;\n          }();\n\n          // Media Segment concept is defined in Media Source Extensions spec.\n          // Particularly in ISO BMFF format, an Media Segment contains a moof box followed by a mdat box.\n          var MediaSegmentInfo = /** @class */function () {\n            function MediaSegmentInfo() {\n              this.beginDts = 0;\n              this.endDts = 0;\n              this.beginPts = 0;\n              this.endPts = 0;\n              this.originalBeginDts = 0;\n              this.originalEndDts = 0;\n              this.syncPoints = []; // SampleInfo[n], for video IDR frames only\n              this.firstSample = null; // SampleInfo\n              this.lastSample = null; // SampleInfo\n            }\n\n            MediaSegmentInfo.prototype.appendSyncPoint = function (sampleInfo) {\n              sampleInfo.isSyncPoint = true;\n              this.syncPoints.push(sampleInfo);\n            };\n            return MediaSegmentInfo;\n          }();\n\n          // Ordered list for recording video IDR frames, sorted by originalDts\n          var IDRSampleList = /** @class */function () {\n            function IDRSampleList() {\n              this._list = [];\n            }\n            IDRSampleList.prototype.clear = function () {\n              this._list = [];\n            };\n            IDRSampleList.prototype.appendArray = function (syncPoints) {\n              var list = this._list;\n              if (syncPoints.length === 0) {\n                return;\n              }\n              if (list.length > 0 && syncPoints[0].originalDts < list[list.length - 1].originalDts) {\n                this.clear();\n              }\n              Array.prototype.push.apply(list, syncPoints);\n            };\n            IDRSampleList.prototype.getLastSyncPointBeforeDts = function (dts) {\n              if (this._list.length == 0) {\n                return null;\n              }\n              var list = this._list;\n              var idx = 0;\n              var last = list.length - 1;\n              var mid = 0;\n              var lbound = 0;\n              var ubound = last;\n              if (dts < list[0].dts) {\n                idx = 0;\n                lbound = ubound + 1;\n              }\n              while (lbound <= ubound) {\n                mid = lbound + Math.floor((ubound - lbound) / 2);\n                if (mid === last || dts >= list[mid].dts && dts < list[mid + 1].dts) {\n                  idx = mid;\n                  break;\n                } else if (list[mid].dts < dts) {\n                  lbound = mid + 1;\n                } else {\n                  ubound = mid - 1;\n                }\n              }\n              return this._list[idx];\n            };\n            return IDRSampleList;\n          }();\n\n          // Data structure for recording information of media segments in single track.\n          var MediaSegmentInfoList = /** @class */function () {\n            function MediaSegmentInfoList(type) {\n              this._type = type;\n              this._list = [];\n              this._lastAppendLocation = -1; // cached last insert location\n            }\n\n            Object.defineProperty(MediaSegmentInfoList.prototype, \"type\", {\n              get: function () {\n                return this._type;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(MediaSegmentInfoList.prototype, \"length\", {\n              get: function () {\n                return this._list.length;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            MediaSegmentInfoList.prototype.isEmpty = function () {\n              return this._list.length === 0;\n            };\n            MediaSegmentInfoList.prototype.clear = function () {\n              this._list = [];\n              this._lastAppendLocation = -1;\n            };\n            MediaSegmentInfoList.prototype._searchNearestSegmentBefore = function (originalBeginDts) {\n              var list = this._list;\n              if (list.length === 0) {\n                return -2;\n              }\n              var last = list.length - 1;\n              var mid = 0;\n              var lbound = 0;\n              var ubound = last;\n              var idx = 0;\n              if (originalBeginDts < list[0].originalBeginDts) {\n                idx = -1;\n                return idx;\n              }\n              while (lbound <= ubound) {\n                mid = lbound + Math.floor((ubound - lbound) / 2);\n                if (mid === last || originalBeginDts > list[mid].lastSample.originalDts && originalBeginDts < list[mid + 1].originalBeginDts) {\n                  idx = mid;\n                  break;\n                } else if (list[mid].originalBeginDts < originalBeginDts) {\n                  lbound = mid + 1;\n                } else {\n                  ubound = mid - 1;\n                }\n              }\n              return idx;\n            };\n            MediaSegmentInfoList.prototype._searchNearestSegmentAfter = function (originalBeginDts) {\n              return this._searchNearestSegmentBefore(originalBeginDts) + 1;\n            };\n            MediaSegmentInfoList.prototype.append = function (mediaSegmentInfo) {\n              var list = this._list;\n              var msi = mediaSegmentInfo;\n              var lastAppendIdx = this._lastAppendLocation;\n              var insertIdx = 0;\n              if (lastAppendIdx !== -1 && lastAppendIdx < list.length && msi.originalBeginDts >= list[lastAppendIdx].lastSample.originalDts && (lastAppendIdx === list.length - 1 || lastAppendIdx < list.length - 1 && msi.originalBeginDts < list[lastAppendIdx + 1].originalBeginDts)) {\n                insertIdx = lastAppendIdx + 1; // use cached location idx\n              } else {\n                if (list.length > 0) {\n                  insertIdx = this._searchNearestSegmentBefore(msi.originalBeginDts) + 1;\n                }\n              }\n              this._lastAppendLocation = insertIdx;\n              this._list.splice(insertIdx, 0, msi);\n            };\n            MediaSegmentInfoList.prototype.getLastSegmentBefore = function (originalBeginDts) {\n              var idx = this._searchNearestSegmentBefore(originalBeginDts);\n              if (idx >= 0) {\n                return this._list[idx];\n              } else {\n                // -1\n                return null;\n              }\n            };\n            MediaSegmentInfoList.prototype.getLastSampleBefore = function (originalBeginDts) {\n              var segment = this.getLastSegmentBefore(originalBeginDts);\n              if (segment != null) {\n                return segment.lastSample;\n              } else {\n                return null;\n              }\n            };\n            MediaSegmentInfoList.prototype.getLastSyncPointBefore = function (originalBeginDts) {\n              var segmentIdx = this._searchNearestSegmentBefore(originalBeginDts);\n              var syncPoints = this._list[segmentIdx].syncPoints;\n              while (syncPoints.length === 0 && segmentIdx > 0) {\n                segmentIdx--;\n                syncPoints = this._list[segmentIdx].syncPoints;\n              }\n              if (syncPoints.length > 0) {\n                return syncPoints[syncPoints.length - 1];\n              } else {\n                return null;\n              }\n            };\n            return MediaSegmentInfoList;\n          }();\n\n          /***/\n        },\n\n        /***/\"./src/core/mse-controller.js\":\n        /*!************************************!*\\\n          !*** ./src/core/mse-controller.js ***!\n          \\************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_92862__) {\n          \"use strict\";\n\n          __nested_webpack_require_92862__.r(__webpack_exports__);\n          /* harmony import */\n          var events__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_92862__( /*! events */\"./node_modules/events/events.js\");\n          /* harmony import */\n          var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nested_webpack_require_92862__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n          /* harmony import */\n          var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_92862__( /*! ../utils/logger.js */\"./src/utils/logger.js\");\n          /* harmony import */\n          var _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_92862__( /*! ../utils/browser.js */\"./src/utils/browser.js\");\n          /* harmony import */\n          var _mse_events_js__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_92862__( /*! ./mse-events.js */\"./src/core/mse-events.js\");\n          /* harmony import */\n          var _media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__ = __nested_webpack_require_92862__( /*! ./media-segment-info.js */\"./src/core/media-segment-info.js\");\n          /* harmony import */\n          var _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__ = __nested_webpack_require_92862__( /*! ../utils/exception.js */\"./src/utils/exception.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          // Media Source Extensions controller\n          var MSEController = /** @class */function () {\n            function MSEController(config) {\n              this.TAG = 'MSEController';\n              this._config = config;\n              this._emitter = new (events__WEBPACK_IMPORTED_MODULE_0___default())();\n              if (this._config.isLive && this._config.autoCleanupSourceBuffer == undefined) {\n                // For live stream, do auto cleanup by default\n                this._config.autoCleanupSourceBuffer = true;\n              }\n              this.e = {\n                onSourceOpen: this._onSourceOpen.bind(this),\n                onSourceEnded: this._onSourceEnded.bind(this),\n                onSourceClose: this._onSourceClose.bind(this),\n                onSourceBufferError: this._onSourceBufferError.bind(this),\n                onSourceBufferUpdateEnd: this._onSourceBufferUpdateEnd.bind(this)\n              };\n              this._mediaSource = null;\n              this._mediaSourceObjectURL = null;\n              this._mediaElement = null;\n              this._isBufferFull = false;\n              this._hasPendingEos = false;\n              this._requireSetMediaDuration = false;\n              this._pendingMediaDuration = 0;\n              this._pendingSourceBufferInit = [];\n              this._mimeTypes = {\n                video: null,\n                audio: null\n              };\n              this._sourceBuffers = {\n                video: null,\n                audio: null\n              };\n              this._lastInitSegments = {\n                video: null,\n                audio: null\n              };\n              this._pendingSegments = {\n                video: [],\n                audio: []\n              };\n              this._pendingRemoveRanges = {\n                video: [],\n                audio: []\n              };\n              this._idrList = new _media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.IDRSampleList();\n            }\n            MSEController.prototype.destroy = function () {\n              if (this._mediaElement || this._mediaSource) {\n                this.detachMediaElement();\n              }\n              this.e = null;\n              this._emitter.removeAllListeners();\n              this._emitter = null;\n            };\n            MSEController.prototype.on = function (event, listener) {\n              this._emitter.addListener(event, listener);\n            };\n            MSEController.prototype.off = function (event, listener) {\n              this._emitter.removeListener(event, listener);\n            };\n            MSEController.prototype.attachMediaElement = function (mediaElement) {\n              if (this._mediaSource) {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__.IllegalStateException('MediaSource has been attached to an HTMLMediaElement!');\n              }\n              var ms = this._mediaSource = new window.MediaSource();\n              ms.addEventListener('sourceopen', this.e.onSourceOpen);\n              ms.addEventListener('sourceended', this.e.onSourceEnded);\n              ms.addEventListener('sourceclose', this.e.onSourceClose);\n              this._mediaElement = mediaElement;\n              this._mediaSourceObjectURL = window.URL.createObjectURL(this._mediaSource);\n              mediaElement.src = this._mediaSourceObjectURL;\n            };\n            MSEController.prototype.detachMediaElement = function () {\n              if (this._mediaSource) {\n                var ms = this._mediaSource;\n                for (var type in this._sourceBuffers) {\n                  // pending segments should be discard\n                  var ps = this._pendingSegments[type];\n                  ps.splice(0, ps.length);\n                  this._pendingSegments[type] = null;\n                  this._pendingRemoveRanges[type] = null;\n                  this._lastInitSegments[type] = null;\n                  // remove all sourcebuffers\n                  var sb = this._sourceBuffers[type];\n                  if (sb) {\n                    if (ms.readyState !== 'closed') {\n                      // ms edge can throw an error: Unexpected call to method or property access\n                      try {\n                        ms.removeSourceBuffer(sb);\n                      } catch (error) {\n                        _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, error.message);\n                      }\n                      sb.removeEventListener('error', this.e.onSourceBufferError);\n                      sb.removeEventListener('updateend', this.e.onSourceBufferUpdateEnd);\n                    }\n                    this._mimeTypes[type] = null;\n                    this._sourceBuffers[type] = null;\n                  }\n                }\n                if (ms.readyState === 'open') {\n                  try {\n                    ms.endOfStream();\n                  } catch (error) {\n                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, error.message);\n                  }\n                }\n                ms.removeEventListener('sourceopen', this.e.onSourceOpen);\n                ms.removeEventListener('sourceended', this.e.onSourceEnded);\n                ms.removeEventListener('sourceclose', this.e.onSourceClose);\n                this._pendingSourceBufferInit = [];\n                this._isBufferFull = false;\n                this._idrList.clear();\n                this._mediaSource = null;\n              }\n              if (this._mediaElement) {\n                this._mediaElement.src = '';\n                this._mediaElement.removeAttribute('src');\n                this._mediaElement = null;\n              }\n              if (this._mediaSourceObjectURL) {\n                window.URL.revokeObjectURL(this._mediaSourceObjectURL);\n                this._mediaSourceObjectURL = null;\n              }\n            };\n            MSEController.prototype.appendInitSegment = function (initSegment, deferred) {\n              if (!this._mediaSource || this._mediaSource.readyState !== 'open') {\n                // sourcebuffer creation requires mediaSource.readyState === 'open'\n                // so we defer the sourcebuffer creation, until sourceopen event triggered\n                this._pendingSourceBufferInit.push(initSegment);\n                // make sure that this InitSegment is in the front of pending segments queue\n                this._pendingSegments[initSegment.type].push(initSegment);\n                return;\n              }\n              var is = initSegment;\n              var mimeType = \"\" + is.container;\n              if (is.codec && is.codec.length > 0) {\n                mimeType += \";codecs=\" + is.codec;\n              }\n              var firstInitSegment = false;\n              _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, 'Received Initialization Segment, mimeType: ' + mimeType);\n              this._lastInitSegments[is.type] = is;\n              if (mimeType !== this._mimeTypes[is.type]) {\n                if (!this._mimeTypes[is.type]) {\n                  // empty, first chance create sourcebuffer\n                  firstInitSegment = true;\n                  try {\n                    var sb = this._sourceBuffers[is.type] = this._mediaSource.addSourceBuffer(mimeType);\n                    sb.addEventListener('error', this.e.onSourceBufferError);\n                    sb.addEventListener('updateend', this.e.onSourceBufferUpdateEnd);\n                  } catch (error) {\n                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, error.message);\n                    this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__.default.ERROR, {\n                      code: error.code,\n                      msg: error.message\n                    });\n                    return;\n                  }\n                } else {\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, \"Notice: \" + is.type + \" mimeType changed, origin: \" + this._mimeTypes[is.type] + \", target: \" + mimeType);\n                }\n                this._mimeTypes[is.type] = mimeType;\n              }\n              if (!deferred) {\n                // deferred means this InitSegment has been pushed to pendingSegments queue\n                this._pendingSegments[is.type].push(is);\n              }\n              if (!firstInitSegment) {\n                // append immediately only if init segment in subsequence\n                if (this._sourceBuffers[is.type] && !this._sourceBuffers[is.type].updating) {\n                  this._doAppendSegments();\n                }\n              }\n              if (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.safari && is.container === 'audio/mpeg' && is.mediaDuration > 0) {\n                // 'audio/mpeg' track under Safari may cause MediaElement's duration to be NaN\n                // Manually correct MediaSource.duration to make progress bar seekable, and report right duration\n                this._requireSetMediaDuration = true;\n                this._pendingMediaDuration = is.mediaDuration / 1000; // in seconds\n                this._updateMediaSourceDuration();\n              }\n            };\n            MSEController.prototype.appendMediaSegment = function (mediaSegment) {\n              var ms = mediaSegment;\n              this._pendingSegments[ms.type].push(ms);\n              if (this._config.autoCleanupSourceBuffer && this._needCleanupSourceBuffer()) {\n                this._doCleanupSourceBuffer();\n              }\n              var sb = this._sourceBuffers[ms.type];\n              if (sb && !sb.updating && !this._hasPendingRemoveRanges()) {\n                this._doAppendSegments();\n              }\n            };\n            MSEController.prototype.seek = function (seconds) {\n              // remove all appended buffers\n              for (var type in this._sourceBuffers) {\n                if (!this._sourceBuffers[type]) {\n                  continue;\n                }\n                // abort current buffer append algorithm\n                var sb = this._sourceBuffers[type];\n                if (this._mediaSource.readyState === 'open') {\n                  try {\n                    // If range removal algorithm is running, InvalidStateError will be throwed\n                    // Ignore it.\n                    sb.abort();\n                  } catch (error) {\n                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, error.message);\n                  }\n                }\n                // IDRList should be clear\n                this._idrList.clear();\n                // pending segments should be discard\n                var ps = this._pendingSegments[type];\n                ps.splice(0, ps.length);\n                if (this._mediaSource.readyState === 'closed') {\n                  // Parent MediaSource object has been detached from HTMLMediaElement\n                  continue;\n                }\n                // record ranges to be remove from SourceBuffer\n                for (var i = 0; i < sb.buffered.length; i++) {\n                  var start = sb.buffered.start(i);\n                  var end = sb.buffered.end(i);\n                  this._pendingRemoveRanges[type].push({\n                    start: start,\n                    end: end\n                  });\n                }\n                // if sb is not updating, let's remove ranges now!\n                if (!sb.updating) {\n                  this._doRemoveRanges();\n                }\n                // Safari 10 may get InvalidStateError in the later appendBuffer() after SourceBuffer.remove() call\n                // Internal parser's state may be invalid at this time. Re-append last InitSegment to workaround.\n                // Related issue: https://bugs.webkit.org/show_bug.cgi?id=159230\n                if (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.safari) {\n                  var lastInitSegment = this._lastInitSegments[type];\n                  if (lastInitSegment) {\n                    this._pendingSegments[type].push(lastInitSegment);\n                    if (!sb.updating) {\n                      this._doAppendSegments();\n                    }\n                  }\n                }\n              }\n            };\n            MSEController.prototype.endOfStream = function () {\n              var ms = this._mediaSource;\n              var sb = this._sourceBuffers;\n              if (!ms || ms.readyState !== 'open') {\n                if (ms && ms.readyState === 'closed' && this._hasPendingSegments()) {\n                  // If MediaSource hasn't turned into open state, and there're pending segments\n                  // Mark pending endOfStream, defer call until all pending segments appended complete\n                  this._hasPendingEos = true;\n                }\n                return;\n              }\n              if (sb.video && sb.video.updating || sb.audio && sb.audio.updating) {\n                // If any sourcebuffer is updating, defer endOfStream operation\n                // See _onSourceBufferUpdateEnd()\n                this._hasPendingEos = true;\n              } else {\n                this._hasPendingEos = false;\n                // Notify media data loading complete\n                // This is helpful for correcting total duration to match last media segment\n                // Otherwise MediaElement's ended event may not be triggered\n                ms.endOfStream();\n              }\n            };\n            MSEController.prototype.getNearestKeyframe = function (dts) {\n              return this._idrList.getLastSyncPointBeforeDts(dts);\n            };\n            MSEController.prototype._needCleanupSourceBuffer = function () {\n              if (!this._config.autoCleanupSourceBuffer) {\n                return false;\n              }\n              var currentTime = this._mediaElement.currentTime;\n              for (var type in this._sourceBuffers) {\n                var sb = this._sourceBuffers[type];\n                if (sb) {\n                  var buffered = sb.buffered;\n                  if (buffered.length >= 1) {\n                    if (currentTime - buffered.start(0) >= this._config.autoCleanupMaxBackwardDuration) {\n                      return true;\n                    }\n                  }\n                }\n              }\n              return false;\n            };\n            MSEController.prototype._doCleanupSourceBuffer = function () {\n              var currentTime = this._mediaElement.currentTime;\n              for (var type in this._sourceBuffers) {\n                var sb = this._sourceBuffers[type];\n                if (sb) {\n                  var buffered = sb.buffered;\n                  var doRemove = false;\n                  for (var i = 0; i < buffered.length; i++) {\n                    var start = buffered.start(i);\n                    var end = buffered.end(i);\n                    if (start <= currentTime && currentTime < end + 3) {\n                      // padding 3 seconds\n                      if (currentTime - start >= this._config.autoCleanupMaxBackwardDuration) {\n                        doRemove = true;\n                        var removeEnd = currentTime - this._config.autoCleanupMinBackwardDuration;\n                        this._pendingRemoveRanges[type].push({\n                          start: start,\n                          end: removeEnd\n                        });\n                      }\n                    } else if (end < currentTime) {\n                      doRemove = true;\n                      this._pendingRemoveRanges[type].push({\n                        start: start,\n                        end: end\n                      });\n                    }\n                  }\n                  if (doRemove && !sb.updating) {\n                    this._doRemoveRanges();\n                  }\n                }\n              }\n            };\n            MSEController.prototype._updateMediaSourceDuration = function () {\n              var sb = this._sourceBuffers;\n              if (this._mediaElement.readyState === 0 || this._mediaSource.readyState !== 'open') {\n                return;\n              }\n              if (sb.video && sb.video.updating || sb.audio && sb.audio.updating) {\n                return;\n              }\n              var current = this._mediaSource.duration;\n              var target = this._pendingMediaDuration;\n              if (target > 0 && (isNaN(current) || target > current)) {\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, \"Update MediaSource duration from \" + current + \" to \" + target);\n                this._mediaSource.duration = target;\n              }\n              this._requireSetMediaDuration = false;\n              this._pendingMediaDuration = 0;\n            };\n            MSEController.prototype._doRemoveRanges = function () {\n              for (var type in this._pendingRemoveRanges) {\n                if (!this._sourceBuffers[type] || this._sourceBuffers[type].updating) {\n                  continue;\n                }\n                var sb = this._sourceBuffers[type];\n                var ranges = this._pendingRemoveRanges[type];\n                while (ranges.length && !sb.updating) {\n                  var range = ranges.shift();\n                  sb.remove(range.start, range.end);\n                }\n              }\n            };\n            MSEController.prototype._doAppendSegments = function () {\n              var pendingSegments = this._pendingSegments;\n              for (var type in pendingSegments) {\n                if (!this._sourceBuffers[type] || this._sourceBuffers[type].updating) {\n                  continue;\n                }\n                if (pendingSegments[type].length > 0) {\n                  var segment = pendingSegments[type].shift();\n                  if (segment.timestampOffset) {\n                    // For MPEG audio stream in MSE, if unbuffered-seeking occurred\n                    // We need explicitly set timestampOffset to the desired point in timeline for mpeg SourceBuffer.\n                    var currentOffset = this._sourceBuffers[type].timestampOffset;\n                    var targetOffset = segment.timestampOffset / 1000; // in seconds\n                    var delta = Math.abs(currentOffset - targetOffset);\n                    if (delta > 0.1) {\n                      // If time delta > 100ms\n                      _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, \"Update MPEG audio timestampOffset from \" + currentOffset + \" to \" + targetOffset);\n                      this._sourceBuffers[type].timestampOffset = targetOffset;\n                    }\n                    delete segment.timestampOffset;\n                  }\n                  if (!segment.data || segment.data.byteLength === 0) {\n                    // Ignore empty buffer\n                    continue;\n                  }\n                  try {\n                    this._sourceBuffers[type].appendBuffer(segment.data);\n                    this._isBufferFull = false;\n                    if (type === 'video' && segment.hasOwnProperty('info')) {\n                      this._idrList.appendArray(segment.info.syncPoints);\n                    }\n                  } catch (error) {\n                    this._pendingSegments[type].unshift(segment);\n                    if (error.code === 22) {\n                      // QuotaExceededError\n                      /* Notice that FireFox may not throw QuotaExceededError if SourceBuffer is full\n                       * Currently we can only do lazy-load to avoid SourceBuffer become scattered.\n                       * SourceBuffer eviction policy may be changed in future version of FireFox.\n                       *\n                       * Related issues:\n                       * https://bugzilla.mozilla.org/show_bug.cgi?id=1279885\n                       * https://bugzilla.mozilla.org/show_bug.cgi?id=1280023\n                       */\n                      // report buffer full, abort network IO\n                      if (!this._isBufferFull) {\n                        this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__.default.BUFFER_FULL);\n                      }\n                      this._isBufferFull = true;\n                    } else {\n                      _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, error.message);\n                      this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__.default.ERROR, {\n                        code: error.code,\n                        msg: error.message\n                      });\n                    }\n                  }\n                }\n              }\n            };\n            MSEController.prototype._onSourceOpen = function () {\n              _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, 'MediaSource onSourceOpen');\n              this._mediaSource.removeEventListener('sourceopen', this.e.onSourceOpen);\n              // deferred sourcebuffer creation / initialization\n              if (this._pendingSourceBufferInit.length > 0) {\n                var pendings = this._pendingSourceBufferInit;\n                while (pendings.length) {\n                  var segment = pendings.shift();\n                  this.appendInitSegment(segment, true);\n                }\n              }\n              // there may be some pending media segments, append them\n              if (this._hasPendingSegments()) {\n                this._doAppendSegments();\n              }\n              this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__.default.SOURCE_OPEN);\n            };\n            MSEController.prototype._onSourceEnded = function () {\n              // fired on endOfStream\n              _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, 'MediaSource onSourceEnded');\n            };\n            MSEController.prototype._onSourceClose = function () {\n              // fired on detaching from media element\n              _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, 'MediaSource onSourceClose');\n              if (this._mediaSource && this.e != null) {\n                this._mediaSource.removeEventListener('sourceopen', this.e.onSourceOpen);\n                this._mediaSource.removeEventListener('sourceended', this.e.onSourceEnded);\n                this._mediaSource.removeEventListener('sourceclose', this.e.onSourceClose);\n              }\n            };\n            MSEController.prototype._hasPendingSegments = function () {\n              var ps = this._pendingSegments;\n              return ps.video.length > 0 || ps.audio.length > 0;\n            };\n            MSEController.prototype._hasPendingRemoveRanges = function () {\n              var prr = this._pendingRemoveRanges;\n              return prr.video.length > 0 || prr.audio.length > 0;\n            };\n            MSEController.prototype._onSourceBufferUpdateEnd = function () {\n              if (this._requireSetMediaDuration) {\n                this._updateMediaSourceDuration();\n              } else if (this._hasPendingRemoveRanges()) {\n                this._doRemoveRanges();\n              } else if (this._hasPendingSegments()) {\n                this._doAppendSegments();\n              } else if (this._hasPendingEos) {\n                this.endOfStream();\n              }\n              this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__.default.UPDATE_END);\n            };\n            MSEController.prototype._onSourceBufferError = function (e) {\n              _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, \"SourceBuffer Error: \" + e);\n              // this error might not always be fatal, just ignore it\n            };\n\n            return MSEController;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = MSEController;\n\n          /***/\n        },\n\n        /***/\"./src/core/mse-events.js\":\n        /*!********************************!*\\\n          !*** ./src/core/mse-events.js ***!\n          \\********************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_119063__) {\n          \"use strict\";\n\n          __nested_webpack_require_119063__.r(__webpack_exports__);\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var MSEEvents = {\n            ERROR: 'error',\n            SOURCE_OPEN: 'source_open',\n            UPDATE_END: 'update_end',\n            BUFFER_FULL: 'buffer_full'\n          };\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = MSEEvents;\n\n          /***/\n        },\n\n        /***/\"./src/core/transmuxer.js\":\n        /*!********************************!*\\\n          !*** ./src/core/transmuxer.js ***!\n          \\********************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_120555__) {\n          \"use strict\";\n\n          __nested_webpack_require_120555__.r(__webpack_exports__);\n          /* harmony import */\n          var events__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_120555__( /*! events */\"./node_modules/events/events.js\");\n          /* harmony import */\n          var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nested_webpack_require_120555__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n          /* harmony import */\n          var webworkify_webpack__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_120555__( /*! webworkify-webpack */\"./node_modules/webworkify-webpack/index.js\");\n          /* harmony import */\n          var webworkify_webpack__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nested_webpack_require_120555__.n(webworkify_webpack__WEBPACK_IMPORTED_MODULE_1__);\n          /* harmony import */\n          var _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_120555__( /*! ../utils/logger.js */\"./src/utils/logger.js\");\n          /* harmony import */\n          var _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_120555__( /*! ../utils/logging-control.js */\"./src/utils/logging-control.js\");\n          /* harmony import */\n          var _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_4__ = __nested_webpack_require_120555__( /*! ./transmuxing-controller.js */\"./src/core/transmuxing-controller.js\");\n          /* harmony import */\n          var _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__ = __nested_webpack_require_120555__( /*! ./transmuxing-events.js */\"./src/core/transmuxing-events.js\");\n          /* harmony import */\n          var _media_info_js__WEBPACK_IMPORTED_MODULE_6__ = __nested_webpack_require_120555__( /*! ./media-info.js */\"./src/core/media-info.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          var Transmuxer = /** @class */function () {\n            function Transmuxer(mediaDataSource, config) {\n              this.TAG = 'Transmuxer';\n              this._emitter = new (events__WEBPACK_IMPORTED_MODULE_0___default())();\n              if (config.enableWorker && typeof Worker !== 'undefined') {\n                try {\n                  this._worker = webworkify_webpack__WEBPACK_IMPORTED_MODULE_1___default()( /*require.resolve*/ /*! ./transmuxing-worker */\"./src/core/transmuxing-worker.js\");\n                  this._workerDestroying = false;\n                  this._worker.addEventListener('message', this._onWorkerMessage.bind(this));\n                  this._worker.postMessage({\n                    cmd: 'init',\n                    param: [mediaDataSource, config]\n                  });\n                  this.e = {\n                    onLoggingConfigChanged: this._onLoggingConfigChanged.bind(this)\n                  };\n                  _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_3__.default.registerListener(this.e.onLoggingConfigChanged);\n                  this._worker.postMessage({\n                    cmd: 'logging_config',\n                    param: _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_3__.default.getConfig()\n                  });\n                } catch (error) {\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__.default.e(this.TAG, 'Error while initialize transmuxing worker, fallback to inline transmuxing');\n                  this._worker = null;\n                  this._controller = new _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_4__.default(mediaDataSource, config);\n                }\n              } else {\n                this._controller = new _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_4__.default(mediaDataSource, config);\n              }\n              if (this._controller) {\n                var ctl = this._controller;\n                ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.IO_ERROR, this._onIOError.bind(this));\n                ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.DEMUX_ERROR, this._onDemuxError.bind(this));\n                ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.INIT_SEGMENT, this._onInitSegment.bind(this));\n                ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_SEGMENT, this._onMediaSegment.bind(this));\n                ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.LOADING_COMPLETE, this._onLoadingComplete.bind(this));\n                ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOVERED_EARLY_EOF, this._onRecoveredEarlyEof.bind(this));\n                ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_INFO, this._onMediaInfo.bind(this));\n                ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.METADATA_ARRIVED, this._onMetaDataArrived.bind(this));\n                ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.SCRIPTDATA_ARRIVED, this._onScriptDataArrived.bind(this));\n                ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.STATISTICS_INFO, this._onStatisticsInfo.bind(this));\n                ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOMMEND_SEEKPOINT, this._onRecommendSeekpoint.bind(this));\n              }\n            }\n            Transmuxer.prototype.destroy = function () {\n              if (this._worker) {\n                if (!this._workerDestroying) {\n                  this._workerDestroying = true;\n                  this._worker.postMessage({\n                    cmd: 'destroy'\n                  });\n                  _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_3__.default.removeListener(this.e.onLoggingConfigChanged);\n                  this.e = null;\n                }\n              } else {\n                this._controller.destroy();\n                this._controller = null;\n              }\n              this._emitter.removeAllListeners();\n              this._emitter = null;\n            };\n            Transmuxer.prototype.on = function (event, listener) {\n              this._emitter.addListener(event, listener);\n            };\n            Transmuxer.prototype.off = function (event, listener) {\n              this._emitter.removeListener(event, listener);\n            };\n            Transmuxer.prototype.hasWorker = function () {\n              return this._worker != null;\n            };\n            Transmuxer.prototype.open = function () {\n              if (this._worker) {\n                this._worker.postMessage({\n                  cmd: 'start'\n                });\n              } else {\n                this._controller.start();\n              }\n            };\n            Transmuxer.prototype.close = function () {\n              if (this._worker) {\n                this._worker.postMessage({\n                  cmd: 'stop'\n                });\n              } else {\n                this._controller.stop();\n              }\n            };\n            Transmuxer.prototype.seek = function (milliseconds) {\n              if (this._worker) {\n                this._worker.postMessage({\n                  cmd: 'seek',\n                  param: milliseconds\n                });\n              } else {\n                this._controller.seek(milliseconds);\n              }\n            };\n            Transmuxer.prototype.pause = function () {\n              if (this._worker) {\n                this._worker.postMessage({\n                  cmd: 'pause'\n                });\n              } else {\n                this._controller.pause();\n              }\n            };\n            Transmuxer.prototype.resume = function () {\n              if (this._worker) {\n                this._worker.postMessage({\n                  cmd: 'resume'\n                });\n              } else {\n                this._controller.resume();\n              }\n            };\n            Transmuxer.prototype._onInitSegment = function (type, initSegment) {\n              var _this = this;\n              // do async invoke\n              Promise.resolve().then(function () {\n                _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.INIT_SEGMENT, type, initSegment);\n              });\n            };\n            Transmuxer.prototype._onMediaSegment = function (type, mediaSegment) {\n              var _this = this;\n              Promise.resolve().then(function () {\n                _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_SEGMENT, type, mediaSegment);\n              });\n            };\n            Transmuxer.prototype._onLoadingComplete = function () {\n              var _this = this;\n              Promise.resolve().then(function () {\n                _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.LOADING_COMPLETE);\n              });\n            };\n            Transmuxer.prototype._onRecoveredEarlyEof = function () {\n              var _this = this;\n              Promise.resolve().then(function () {\n                _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOVERED_EARLY_EOF);\n              });\n            };\n            Transmuxer.prototype._onMediaInfo = function (mediaInfo) {\n              var _this = this;\n              Promise.resolve().then(function () {\n                _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_INFO, mediaInfo);\n              });\n            };\n            Transmuxer.prototype._onMetaDataArrived = function (metadata) {\n              var _this = this;\n              Promise.resolve().then(function () {\n                _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.METADATA_ARRIVED, metadata);\n              });\n            };\n            Transmuxer.prototype._onScriptDataArrived = function (data) {\n              var _this = this;\n              Promise.resolve().then(function () {\n                _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.SCRIPTDATA_ARRIVED, data);\n              });\n            };\n            Transmuxer.prototype._onStatisticsInfo = function (statisticsInfo) {\n              var _this = this;\n              Promise.resolve().then(function () {\n                _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.STATISTICS_INFO, statisticsInfo);\n              });\n            };\n            Transmuxer.prototype._onIOError = function (type, info) {\n              var _this = this;\n              Promise.resolve().then(function () {\n                _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.IO_ERROR, type, info);\n              });\n            };\n            Transmuxer.prototype._onDemuxError = function (type, info) {\n              var _this = this;\n              Promise.resolve().then(function () {\n                _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.DEMUX_ERROR, type, info);\n              });\n            };\n            Transmuxer.prototype._onRecommendSeekpoint = function (milliseconds) {\n              var _this = this;\n              Promise.resolve().then(function () {\n                _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOMMEND_SEEKPOINT, milliseconds);\n              });\n            };\n            Transmuxer.prototype._onLoggingConfigChanged = function (config) {\n              if (this._worker) {\n                this._worker.postMessage({\n                  cmd: 'logging_config',\n                  param: config\n                });\n              }\n            };\n            Transmuxer.prototype._onWorkerMessage = function (e) {\n              var message = e.data;\n              var data = message.data;\n              if (message.msg === 'destroyed' || this._workerDestroying) {\n                this._workerDestroying = false;\n                this._worker.terminate();\n                this._worker = null;\n                return;\n              }\n              switch (message.msg) {\n                case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.INIT_SEGMENT:\n                case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_SEGMENT:\n                  this._emitter.emit(message.msg, data.type, data.data);\n                  break;\n                case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.LOADING_COMPLETE:\n                case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOVERED_EARLY_EOF:\n                  this._emitter.emit(message.msg);\n                  break;\n                case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_INFO:\n                  Object.setPrototypeOf(data, _media_info_js__WEBPACK_IMPORTED_MODULE_6__.default.prototype);\n                  this._emitter.emit(message.msg, data);\n                  break;\n                case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.METADATA_ARRIVED:\n                case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.SCRIPTDATA_ARRIVED:\n                case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.STATISTICS_INFO:\n                  this._emitter.emit(message.msg, data);\n                  break;\n                case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.IO_ERROR:\n                case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.DEMUX_ERROR:\n                  this._emitter.emit(message.msg, data.type, data.info);\n                  break;\n                case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOMMEND_SEEKPOINT:\n                  this._emitter.emit(message.msg, data);\n                  break;\n                case 'logcat_callback':\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__.default.emitter.emit('log', data.type, data.logcat);\n                  break;\n                default:\n                  break;\n              }\n            };\n            return Transmuxer;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = Transmuxer;\n\n          /***/\n        },\n\n        /***/\"./src/core/transmuxing-controller.js\":\n        /*!********************************************!*\\\n          !*** ./src/core/transmuxing-controller.js ***!\n          \\********************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_135697__) {\n          \"use strict\";\n\n          __nested_webpack_require_135697__.r(__webpack_exports__);\n          /* harmony import */\n          var events__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_135697__( /*! events */\"./node_modules/events/events.js\");\n          /* harmony import */\n          var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nested_webpack_require_135697__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n          /* harmony import */\n          var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_135697__( /*! ../utils/logger.js */\"./src/utils/logger.js\");\n          /* harmony import */\n          var _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_135697__( /*! ../utils/browser.js */\"./src/utils/browser.js\");\n          /* harmony import */\n          var _media_info_js__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_135697__( /*! ./media-info.js */\"./src/core/media-info.js\");\n          /* harmony import */\n          var _demux_flv_demuxer_js__WEBPACK_IMPORTED_MODULE_4__ = __nested_webpack_require_135697__( /*! ../demux/flv-demuxer.js */\"./src/demux/flv-demuxer.js\");\n          /* harmony import */\n          var _remux_mp4_remuxer_js__WEBPACK_IMPORTED_MODULE_5__ = __nested_webpack_require_135697__( /*! ../remux/mp4-remuxer.js */\"./src/remux/mp4-remuxer.js\");\n          /* harmony import */\n          var _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_6__ = __nested_webpack_require_135697__( /*! ../demux/demux-errors.js */\"./src/demux/demux-errors.js\");\n          /* harmony import */\n          var _io_io_controller_js__WEBPACK_IMPORTED_MODULE_7__ = __nested_webpack_require_135697__( /*! ../io/io-controller.js */\"./src/io/io-controller.js\");\n          /* harmony import */\n          var _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__ = __nested_webpack_require_135697__( /*! ./transmuxing-events.js */\"./src/core/transmuxing-events.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          // Transmuxing (IO, Demuxing, Remuxing) controller, with multipart support\n          var TransmuxingController = /** @class */function () {\n            function TransmuxingController(mediaDataSource, config) {\n              this.TAG = 'TransmuxingController';\n              this._emitter = new (events__WEBPACK_IMPORTED_MODULE_0___default())();\n              this._config = config;\n              // treat single part media as multipart media, which has only one segment\n              if (!mediaDataSource.segments) {\n                mediaDataSource.segments = [{\n                  duration: mediaDataSource.duration,\n                  filesize: mediaDataSource.filesize,\n                  url: mediaDataSource.url\n                }];\n              }\n              // fill in default IO params if not exists\n              if (typeof mediaDataSource.cors !== 'boolean') {\n                mediaDataSource.cors = true;\n              }\n              if (typeof mediaDataSource.withCredentials !== 'boolean') {\n                mediaDataSource.withCredentials = false;\n              }\n              this._mediaDataSource = mediaDataSource;\n              this._currentSegmentIndex = 0;\n              var totalDuration = 0;\n              this._mediaDataSource.segments.forEach(function (segment) {\n                // timestampBase for each segment, and calculate total duration\n                segment.timestampBase = totalDuration;\n                totalDuration += segment.duration;\n                // params needed by IOController\n                segment.cors = mediaDataSource.cors;\n                segment.withCredentials = mediaDataSource.withCredentials;\n                // referrer policy control, if exist\n                if (config.referrerPolicy) {\n                  segment.referrerPolicy = config.referrerPolicy;\n                }\n              });\n              if (!isNaN(totalDuration) && this._mediaDataSource.duration !== totalDuration) {\n                this._mediaDataSource.duration = totalDuration;\n              }\n              this._mediaInfo = null;\n              this._demuxer = null;\n              this._remuxer = null;\n              this._ioctl = null;\n              this._pendingSeekTime = null;\n              this._pendingResolveSeekPoint = null;\n              this._statisticsReporter = null;\n            }\n            TransmuxingController.prototype.destroy = function () {\n              this._mediaInfo = null;\n              this._mediaDataSource = null;\n              if (this._statisticsReporter) {\n                this._disableStatisticsReporter();\n              }\n              if (this._ioctl) {\n                this._ioctl.destroy();\n                this._ioctl = null;\n              }\n              if (this._demuxer) {\n                this._demuxer.destroy();\n                this._demuxer = null;\n              }\n              if (this._remuxer) {\n                this._remuxer.destroy();\n                this._remuxer = null;\n              }\n              this._emitter.removeAllListeners();\n              this._emitter = null;\n            };\n            TransmuxingController.prototype.on = function (event, listener) {\n              this._emitter.addListener(event, listener);\n            };\n            TransmuxingController.prototype.off = function (event, listener) {\n              this._emitter.removeListener(event, listener);\n            };\n            TransmuxingController.prototype.start = function () {\n              this._loadSegment(0);\n              this._enableStatisticsReporter();\n            };\n            TransmuxingController.prototype._loadSegment = function (segmentIndex, optionalFrom) {\n              this._currentSegmentIndex = segmentIndex;\n              var dataSource = this._mediaDataSource.segments[segmentIndex];\n              var ioctl = this._ioctl = new _io_io_controller_js__WEBPACK_IMPORTED_MODULE_7__.default(dataSource, this._config, segmentIndex);\n              ioctl.onError = this._onIOException.bind(this);\n              ioctl.onSeeked = this._onIOSeeked.bind(this);\n              ioctl.onComplete = this._onIOComplete.bind(this);\n              ioctl.onRedirect = this._onIORedirect.bind(this);\n              ioctl.onRecoveredEarlyEof = this._onIORecoveredEarlyEof.bind(this);\n              if (optionalFrom) {\n                this._demuxer.bindDataSource(this._ioctl);\n              } else {\n                ioctl.onDataArrival = this._onInitChunkArrival.bind(this);\n              }\n              ioctl.open(optionalFrom);\n            };\n            TransmuxingController.prototype.stop = function () {\n              this._internalAbort();\n              this._disableStatisticsReporter();\n            };\n            TransmuxingController.prototype._internalAbort = function () {\n              if (this._ioctl) {\n                this._ioctl.destroy();\n                this._ioctl = null;\n              }\n            };\n            TransmuxingController.prototype.pause = function () {\n              if (this._ioctl && this._ioctl.isWorking()) {\n                this._ioctl.pause();\n                this._disableStatisticsReporter();\n              }\n            };\n            TransmuxingController.prototype.resume = function () {\n              if (this._ioctl && this._ioctl.isPaused()) {\n                this._ioctl.resume();\n                this._enableStatisticsReporter();\n              }\n            };\n            TransmuxingController.prototype.seek = function (milliseconds) {\n              if (this._mediaInfo == null || !this._mediaInfo.isSeekable()) {\n                return;\n              }\n              var targetSegmentIndex = this._searchSegmentIndexContains(milliseconds);\n              if (targetSegmentIndex === this._currentSegmentIndex) {\n                // intra-segment seeking\n                var segmentInfo = this._mediaInfo.segments[targetSegmentIndex];\n                if (segmentInfo == undefined) {\n                  // current segment loading started, but mediainfo hasn't received yet\n                  // wait for the metadata loaded, then seek to expected position\n                  this._pendingSeekTime = milliseconds;\n                } else {\n                  var keyframe = segmentInfo.getNearestKeyframe(milliseconds);\n                  this._remuxer.seek(keyframe.milliseconds);\n                  this._ioctl.seek(keyframe.fileposition);\n                  // Will be resolved in _onRemuxerMediaSegmentArrival()\n                  this._pendingResolveSeekPoint = keyframe.milliseconds;\n                }\n              } else {\n                // cross-segment seeking\n                var targetSegmentInfo = this._mediaInfo.segments[targetSegmentIndex];\n                if (targetSegmentInfo == undefined) {\n                  // target segment hasn't been loaded. We need metadata then seek to expected time\n                  this._pendingSeekTime = milliseconds;\n                  this._internalAbort();\n                  this._remuxer.seek();\n                  this._remuxer.insertDiscontinuity();\n                  this._loadSegment(targetSegmentIndex);\n                  // Here we wait for the metadata loaded, then seek to expected position\n                } else {\n                  // We have target segment's metadata, direct seek to target position\n                  var keyframe = targetSegmentInfo.getNearestKeyframe(milliseconds);\n                  this._internalAbort();\n                  this._remuxer.seek(milliseconds);\n                  this._remuxer.insertDiscontinuity();\n                  this._demuxer.resetMediaInfo();\n                  this._demuxer.timestampBase = this._mediaDataSource.segments[targetSegmentIndex].timestampBase;\n                  this._loadSegment(targetSegmentIndex, keyframe.fileposition);\n                  this._pendingResolveSeekPoint = keyframe.milliseconds;\n                  this._reportSegmentMediaInfo(targetSegmentIndex);\n                }\n              }\n              this._enableStatisticsReporter();\n            };\n            TransmuxingController.prototype._searchSegmentIndexContains = function (milliseconds) {\n              var segments = this._mediaDataSource.segments;\n              var idx = segments.length - 1;\n              for (var i = 0; i < segments.length; i++) {\n                if (milliseconds < segments[i].timestampBase) {\n                  idx = i - 1;\n                  break;\n                }\n              }\n              return idx;\n            };\n            TransmuxingController.prototype._onInitChunkArrival = function (data, byteStart) {\n              var _this = this;\n              var probeData = null;\n              var consumed = 0;\n              if (byteStart > 0) {\n                // IOController seeked immediately after opened, byteStart > 0 callback may received\n                this._demuxer.bindDataSource(this._ioctl);\n                this._demuxer.timestampBase = this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase;\n                consumed = this._demuxer.parseChunks(data, byteStart);\n              } else if ((probeData = _demux_flv_demuxer_js__WEBPACK_IMPORTED_MODULE_4__.default.probe(data)).match) {\n                // Always create new FLVDemuxer\n                this._demuxer = new _demux_flv_demuxer_js__WEBPACK_IMPORTED_MODULE_4__.default(probeData, this._config);\n                if (!this._remuxer) {\n                  this._remuxer = new _remux_mp4_remuxer_js__WEBPACK_IMPORTED_MODULE_5__.default(this._config);\n                }\n                var mds = this._mediaDataSource;\n                if (mds.duration != undefined && !isNaN(mds.duration)) {\n                  this._demuxer.overridedDuration = mds.duration;\n                }\n                if (typeof mds.hasAudio === 'boolean') {\n                  this._demuxer.overridedHasAudio = mds.hasAudio;\n                }\n                if (typeof mds.hasVideo === 'boolean') {\n                  this._demuxer.overridedHasVideo = mds.hasVideo;\n                }\n                this._demuxer.timestampBase = mds.segments[this._currentSegmentIndex].timestampBase;\n                this._demuxer.onError = this._onDemuxException.bind(this);\n                this._demuxer.onMediaInfo = this._onMediaInfo.bind(this);\n                this._demuxer.onMetaDataArrived = this._onMetaDataArrived.bind(this);\n                this._demuxer.onScriptDataArrived = this._onScriptDataArrived.bind(this);\n                this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl));\n                this._remuxer.onInitSegment = this._onRemuxerInitSegmentArrival.bind(this);\n                this._remuxer.onMediaSegment = this._onRemuxerMediaSegmentArrival.bind(this);\n                consumed = this._demuxer.parseChunks(data, byteStart);\n              } else {\n                probeData = null;\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, 'Non-FLV, Unsupported media type!');\n                Promise.resolve().then(function () {\n                  _this._internalAbort();\n                });\n                this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.DEMUX_ERROR, _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_6__.default.FORMAT_UNSUPPORTED, 'Non-FLV, Unsupported media type');\n                consumed = 0;\n              }\n              return consumed;\n            };\n            TransmuxingController.prototype._onMediaInfo = function (mediaInfo) {\n              var _this = this;\n              if (this._mediaInfo == null) {\n                // Store first segment's mediainfo as global mediaInfo\n                this._mediaInfo = Object.assign({}, mediaInfo);\n                this._mediaInfo.keyframesIndex = null;\n                this._mediaInfo.segments = [];\n                this._mediaInfo.segmentCount = this._mediaDataSource.segments.length;\n                Object.setPrototypeOf(this._mediaInfo, _media_info_js__WEBPACK_IMPORTED_MODULE_3__.default.prototype);\n              }\n              var segmentInfo = Object.assign({}, mediaInfo);\n              Object.setPrototypeOf(segmentInfo, _media_info_js__WEBPACK_IMPORTED_MODULE_3__.default.prototype);\n              this._mediaInfo.segments[this._currentSegmentIndex] = segmentInfo;\n              // notify mediaInfo update\n              this._reportSegmentMediaInfo(this._currentSegmentIndex);\n              if (this._pendingSeekTime != null) {\n                Promise.resolve().then(function () {\n                  var target = _this._pendingSeekTime;\n                  _this._pendingSeekTime = null;\n                  _this.seek(target);\n                });\n              }\n            };\n            TransmuxingController.prototype._onMetaDataArrived = function (metadata) {\n              this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.METADATA_ARRIVED, metadata);\n            };\n            TransmuxingController.prototype._onScriptDataArrived = function (data) {\n              this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.SCRIPTDATA_ARRIVED, data);\n            };\n            TransmuxingController.prototype._onIOSeeked = function () {\n              this._remuxer.insertDiscontinuity();\n            };\n            TransmuxingController.prototype._onIOComplete = function (extraData) {\n              var segmentIndex = extraData;\n              var nextSegmentIndex = segmentIndex + 1;\n              if (nextSegmentIndex < this._mediaDataSource.segments.length) {\n                this._internalAbort();\n                this._remuxer.flushStashedSamples();\n                this._loadSegment(nextSegmentIndex);\n              } else {\n                this._remuxer.flushStashedSamples();\n                this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.LOADING_COMPLETE);\n                this._disableStatisticsReporter();\n              }\n            };\n            TransmuxingController.prototype._onIORedirect = function (redirectedURL) {\n              var segmentIndex = this._ioctl.extraData;\n              this._mediaDataSource.segments[segmentIndex].redirectedURL = redirectedURL;\n            };\n            TransmuxingController.prototype._onIORecoveredEarlyEof = function () {\n              this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.RECOVERED_EARLY_EOF);\n            };\n            TransmuxingController.prototype._onIOException = function (type, info) {\n              _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, \"IOException: type = \" + type + \", code = \" + info.code + \", msg = \" + info.msg);\n              this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.IO_ERROR, type, info);\n              this._disableStatisticsReporter();\n            };\n            TransmuxingController.prototype._onDemuxException = function (type, info) {\n              _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, \"DemuxException: type = \" + type + \", info = \" + info);\n              this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.DEMUX_ERROR, type, info);\n            };\n            TransmuxingController.prototype._onRemuxerInitSegmentArrival = function (type, initSegment) {\n              this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.INIT_SEGMENT, type, initSegment);\n            };\n            TransmuxingController.prototype._onRemuxerMediaSegmentArrival = function (type, mediaSegment) {\n              if (this._pendingSeekTime != null) {\n                // Media segments after new-segment cross-seeking should be dropped.\n                return;\n              }\n              this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.MEDIA_SEGMENT, type, mediaSegment);\n              // Resolve pending seekPoint\n              if (this._pendingResolveSeekPoint != null && type === 'video') {\n                var syncPoints = mediaSegment.info.syncPoints;\n                var seekpoint = this._pendingResolveSeekPoint;\n                this._pendingResolveSeekPoint = null;\n                // Safari: Pass PTS for recommend_seekpoint\n                if (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.safari && syncPoints.length > 0 && syncPoints[0].originalDts === seekpoint) {\n                  seekpoint = syncPoints[0].pts;\n                }\n                // else: use original DTS (keyframe.milliseconds)\n                this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.RECOMMEND_SEEKPOINT, seekpoint);\n              }\n            };\n            TransmuxingController.prototype._enableStatisticsReporter = function () {\n              if (this._statisticsReporter == null) {\n                this._statisticsReporter = self.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval);\n              }\n            };\n            TransmuxingController.prototype._disableStatisticsReporter = function () {\n              if (this._statisticsReporter) {\n                self.clearInterval(this._statisticsReporter);\n                this._statisticsReporter = null;\n              }\n            };\n            TransmuxingController.prototype._reportSegmentMediaInfo = function (segmentIndex) {\n              var segmentInfo = this._mediaInfo.segments[segmentIndex];\n              var exportInfo = Object.assign({}, segmentInfo);\n              exportInfo.duration = this._mediaInfo.duration;\n              exportInfo.segmentCount = this._mediaInfo.segmentCount;\n              delete exportInfo.segments;\n              delete exportInfo.keyframesIndex;\n              this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.MEDIA_INFO, exportInfo);\n            };\n            TransmuxingController.prototype._reportStatisticsInfo = function () {\n              var info = {};\n              info.url = this._ioctl.currentURL;\n              info.hasRedirect = this._ioctl.hasRedirect;\n              if (info.hasRedirect) {\n                info.redirectedURL = this._ioctl.currentRedirectedURL;\n              }\n              info.speed = this._ioctl.currentSpeed;\n              info.loaderType = this._ioctl.loaderType;\n              info.currentSegmentIndex = this._currentSegmentIndex;\n              info.totalSegmentCount = this._mediaDataSource.segments.length;\n              this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.STATISTICS_INFO, info);\n            };\n            return TransmuxingController;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = TransmuxingController;\n\n          /***/\n        },\n\n        /***/\"./src/core/transmuxing-events.js\":\n        /*!****************************************!*\\\n          !*** ./src/core/transmuxing-events.js ***!\n          \\****************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_157348__) {\n          \"use strict\";\n\n          __nested_webpack_require_157348__.r(__webpack_exports__);\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var TransmuxingEvents = {\n            IO_ERROR: 'io_error',\n            DEMUX_ERROR: 'demux_error',\n            INIT_SEGMENT: 'init_segment',\n            MEDIA_SEGMENT: 'media_segment',\n            LOADING_COMPLETE: 'loading_complete',\n            RECOVERED_EARLY_EOF: 'recovered_early_eof',\n            MEDIA_INFO: 'media_info',\n            METADATA_ARRIVED: 'metadata_arrived',\n            SCRIPTDATA_ARRIVED: 'scriptdata_arrived',\n            STATISTICS_INFO: 'statistics_info',\n            RECOMMEND_SEEKPOINT: 'recommend_seekpoint'\n          };\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = TransmuxingEvents;\n\n          /***/\n        },\n\n        /***/\"./src/core/transmuxing-worker.js\":\n        /*!****************************************!*\\\n          !*** ./src/core/transmuxing-worker.js ***!\n          \\****************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_159254__) {\n          \"use strict\";\n\n          __nested_webpack_require_159254__.r(__webpack_exports__);\n          /* harmony import */\n          var _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_159254__( /*! ../utils/logging-control.js */\"./src/utils/logging-control.js\");\n          /* harmony import */\n          var _utils_polyfill_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_159254__( /*! ../utils/polyfill.js */\"./src/utils/polyfill.js\");\n          /* harmony import */\n          var _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_159254__( /*! ./transmuxing-controller.js */\"./src/core/transmuxing-controller.js\");\n          /* harmony import */\n          var _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_159254__( /*! ./transmuxing-events.js */\"./src/core/transmuxing-events.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          /* post message to worker:\n             data: {\n                 cmd: string\n                 param: any\n             }\n          \n             receive message from worker:\n             data: {\n                 msg: string,\n                 data: any\n             }\n           */\n          var TransmuxingWorker = function (self) {\n            var TAG = 'TransmuxingWorker';\n            var controller = null;\n            var logcatListener = onLogcatCallback.bind(this);\n            _utils_polyfill_js__WEBPACK_IMPORTED_MODULE_1__.default.install();\n            self.addEventListener('message', function (e) {\n              switch (e.data.cmd) {\n                case 'init':\n                  controller = new _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_2__.default(e.data.param[0], e.data.param[1]);\n                  controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.IO_ERROR, onIOError.bind(this));\n                  controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.DEMUX_ERROR, onDemuxError.bind(this));\n                  controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.INIT_SEGMENT, onInitSegment.bind(this));\n                  controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.MEDIA_SEGMENT, onMediaSegment.bind(this));\n                  controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.LOADING_COMPLETE, onLoadingComplete.bind(this));\n                  controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.RECOVERED_EARLY_EOF, onRecoveredEarlyEof.bind(this));\n                  controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.MEDIA_INFO, onMediaInfo.bind(this));\n                  controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.METADATA_ARRIVED, onMetaDataArrived.bind(this));\n                  controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.SCRIPTDATA_ARRIVED, onScriptDataArrived.bind(this));\n                  controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.STATISTICS_INFO, onStatisticsInfo.bind(this));\n                  controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.RECOMMEND_SEEKPOINT, onRecommendSeekpoint.bind(this));\n                  break;\n                case 'destroy':\n                  if (controller) {\n                    controller.destroy();\n                    controller = null;\n                  }\n                  self.postMessage({\n                    msg: 'destroyed'\n                  });\n                  break;\n                case 'start':\n                  controller.start();\n                  break;\n                case 'stop':\n                  controller.stop();\n                  break;\n                case 'seek':\n                  controller.seek(e.data.param);\n                  break;\n                case 'pause':\n                  controller.pause();\n                  break;\n                case 'resume':\n                  controller.resume();\n                  break;\n                case 'logging_config':\n                  {\n                    var config = e.data.param;\n                    _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_0__.default.applyConfig(config);\n                    if (config.enableCallback === true) {\n                      _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_0__.default.addLogListener(logcatListener);\n                    } else {\n                      _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_0__.default.removeLogListener(logcatListener);\n                    }\n                    break;\n                  }\n              }\n            });\n            function onInitSegment(type, initSegment) {\n              var obj = {\n                msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.INIT_SEGMENT,\n                data: {\n                  type: type,\n                  data: initSegment\n                }\n              };\n              self.postMessage(obj, [initSegment.data]); // data: ArrayBuffer\n            }\n\n            function onMediaSegment(type, mediaSegment) {\n              var obj = {\n                msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.MEDIA_SEGMENT,\n                data: {\n                  type: type,\n                  data: mediaSegment\n                }\n              };\n              self.postMessage(obj, [mediaSegment.data]); // data: ArrayBuffer\n            }\n\n            function onLoadingComplete() {\n              var obj = {\n                msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.LOADING_COMPLETE\n              };\n              self.postMessage(obj);\n            }\n            function onRecoveredEarlyEof() {\n              var obj = {\n                msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.RECOVERED_EARLY_EOF\n              };\n              self.postMessage(obj);\n            }\n            function onMediaInfo(mediaInfo) {\n              var obj = {\n                msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.MEDIA_INFO,\n                data: mediaInfo\n              };\n              self.postMessage(obj);\n            }\n            function onMetaDataArrived(metadata) {\n              var obj = {\n                msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.METADATA_ARRIVED,\n                data: metadata\n              };\n              self.postMessage(obj);\n            }\n            function onScriptDataArrived(data) {\n              var obj = {\n                msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.SCRIPTDATA_ARRIVED,\n                data: data\n              };\n              self.postMessage(obj);\n            }\n            function onStatisticsInfo(statInfo) {\n              var obj = {\n                msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.STATISTICS_INFO,\n                data: statInfo\n              };\n              self.postMessage(obj);\n            }\n            function onIOError(type, info) {\n              self.postMessage({\n                msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.IO_ERROR,\n                data: {\n                  type: type,\n                  info: info\n                }\n              });\n            }\n            function onDemuxError(type, info) {\n              self.postMessage({\n                msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.DEMUX_ERROR,\n                data: {\n                  type: type,\n                  info: info\n                }\n              });\n            }\n            function onRecommendSeekpoint(milliseconds) {\n              self.postMessage({\n                msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.RECOMMEND_SEEKPOINT,\n                data: milliseconds\n              });\n            }\n            function onLogcatCallback(type, str) {\n              self.postMessage({\n                msg: 'logcat_callback',\n                data: {\n                  type: type,\n                  logcat: str\n                }\n              });\n            }\n          };\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = TransmuxingWorker;\n\n          /***/\n        },\n\n        /***/\"./src/demux/amf-parser.js\":\n        /*!*********************************!*\\\n          !*** ./src/demux/amf-parser.js ***!\n          \\*********************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_168574__) {\n          \"use strict\";\n\n          __nested_webpack_require_168574__.r(__webpack_exports__);\n          /* harmony import */\n          var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_168574__( /*! ../utils/logger.js */\"./src/utils/logger.js\");\n          /* harmony import */\n          var _utils_utf8_conv_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_168574__( /*! ../utils/utf8-conv.js */\"./src/utils/utf8-conv.js\");\n          /* harmony import */\n          var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_168574__( /*! ../utils/exception.js */\"./src/utils/exception.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          var le = function () {\n            var buf = new ArrayBuffer(2);\n            new DataView(buf).setInt16(0, 256, true); // little-endian write\n            return new Int16Array(buf)[0] === 256; // platform-spec read, if equal then LE\n          }();\n\n          var AMF = /** @class */function () {\n            function AMF() {}\n            AMF.parseScriptData = function (arrayBuffer, dataOffset, dataSize) {\n              var data = {};\n              try {\n                var name_1 = AMF.parseValue(arrayBuffer, dataOffset, dataSize);\n                var value = AMF.parseValue(arrayBuffer, dataOffset + name_1.size, dataSize - name_1.size);\n                data[name_1.data] = value.data;\n              } catch (e) {\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.e('AMF', e.toString());\n              }\n              return data;\n            };\n            AMF.parseObject = function (arrayBuffer, dataOffset, dataSize) {\n              if (dataSize < 3) {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.IllegalStateException('Data not enough when parse ScriptDataObject');\n              }\n              var name = AMF.parseString(arrayBuffer, dataOffset, dataSize);\n              var value = AMF.parseValue(arrayBuffer, dataOffset + name.size, dataSize - name.size);\n              var isObjectEnd = value.objectEnd;\n              return {\n                data: {\n                  name: name.data,\n                  value: value.data\n                },\n                size: name.size + value.size,\n                objectEnd: isObjectEnd\n              };\n            };\n            AMF.parseVariable = function (arrayBuffer, dataOffset, dataSize) {\n              return AMF.parseObject(arrayBuffer, dataOffset, dataSize);\n            };\n            AMF.parseString = function (arrayBuffer, dataOffset, dataSize) {\n              if (dataSize < 2) {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.IllegalStateException('Data not enough when parse String');\n              }\n              var v = new DataView(arrayBuffer, dataOffset, dataSize);\n              var length = v.getUint16(0, !le);\n              var str;\n              if (length > 0) {\n                str = (0, _utils_utf8_conv_js__WEBPACK_IMPORTED_MODULE_1__.default)(new Uint8Array(arrayBuffer, dataOffset + 2, length));\n              } else {\n                str = '';\n              }\n              return {\n                data: str,\n                size: 2 + length\n              };\n            };\n            AMF.parseLongString = function (arrayBuffer, dataOffset, dataSize) {\n              if (dataSize < 4) {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.IllegalStateException('Data not enough when parse LongString');\n              }\n              var v = new DataView(arrayBuffer, dataOffset, dataSize);\n              var length = v.getUint32(0, !le);\n              var str;\n              if (length > 0) {\n                str = (0, _utils_utf8_conv_js__WEBPACK_IMPORTED_MODULE_1__.default)(new Uint8Array(arrayBuffer, dataOffset + 4, length));\n              } else {\n                str = '';\n              }\n              return {\n                data: str,\n                size: 4 + length\n              };\n            };\n            AMF.parseDate = function (arrayBuffer, dataOffset, dataSize) {\n              if (dataSize < 10) {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.IllegalStateException('Data size invalid when parse Date');\n              }\n              var v = new DataView(arrayBuffer, dataOffset, dataSize);\n              var timestamp = v.getFloat64(0, !le);\n              var localTimeOffset = v.getInt16(8, !le);\n              timestamp += localTimeOffset * 60 * 1000; // get UTC time\n              return {\n                data: new Date(timestamp),\n                size: 8 + 2\n              };\n            };\n            AMF.parseValue = function (arrayBuffer, dataOffset, dataSize) {\n              if (dataSize < 1) {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.IllegalStateException('Data not enough when parse Value');\n              }\n              var v = new DataView(arrayBuffer, dataOffset, dataSize);\n              var offset = 1;\n              var type = v.getUint8(0);\n              var value;\n              var objectEnd = false;\n              try {\n                switch (type) {\n                  case 0:\n                    // Number(Double) type\n                    value = v.getFloat64(1, !le);\n                    offset += 8;\n                    break;\n                  case 1:\n                    {\n                      // Boolean type\n                      var b = v.getUint8(1);\n                      value = b ? true : false;\n                      offset += 1;\n                      break;\n                    }\n                  case 2:\n                    {\n                      // String type\n                      var amfstr = AMF.parseString(arrayBuffer, dataOffset + 1, dataSize - 1);\n                      value = amfstr.data;\n                      offset += amfstr.size;\n                      break;\n                    }\n                  case 3:\n                    {\n                      // Object(s) type\n                      value = {};\n                      var terminal = 0; // workaround for malformed Objects which has missing ScriptDataObjectEnd\n                      if ((v.getUint32(dataSize - 4, !le) & 0x00FFFFFF) === 9) {\n                        terminal = 3;\n                      }\n                      while (offset < dataSize - 4) {\n                        // 4 === type(UI8) + ScriptDataObjectEnd(UI24)\n                        var amfobj = AMF.parseObject(arrayBuffer, dataOffset + offset, dataSize - offset - terminal);\n                        if (amfobj.objectEnd) break;\n                        value[amfobj.data.name] = amfobj.data.value;\n                        offset += amfobj.size;\n                      }\n                      if (offset <= dataSize - 3) {\n                        var marker = v.getUint32(offset - 1, !le) & 0x00FFFFFF;\n                        if (marker === 9) {\n                          offset += 3;\n                        }\n                      }\n                      break;\n                    }\n                  case 8:\n                    {\n                      // ECMA array type (Mixed array)\n                      value = {};\n                      offset += 4; // ECMAArrayLength(UI32)\n                      var terminal = 0; // workaround for malformed MixedArrays which has missing ScriptDataObjectEnd\n                      if ((v.getUint32(dataSize - 4, !le) & 0x00FFFFFF) === 9) {\n                        terminal = 3;\n                      }\n                      while (offset < dataSize - 8) {\n                        // 8 === type(UI8) + ECMAArrayLength(UI32) + ScriptDataVariableEnd(UI24)\n                        var amfvar = AMF.parseVariable(arrayBuffer, dataOffset + offset, dataSize - offset - terminal);\n                        if (amfvar.objectEnd) break;\n                        value[amfvar.data.name] = amfvar.data.value;\n                        offset += amfvar.size;\n                      }\n                      if (offset <= dataSize - 3) {\n                        var marker = v.getUint32(offset - 1, !le) & 0x00FFFFFF;\n                        if (marker === 9) {\n                          offset += 3;\n                        }\n                      }\n                      break;\n                    }\n                  case 9:\n                    // ScriptDataObjectEnd\n                    value = undefined;\n                    offset = 1;\n                    objectEnd = true;\n                    break;\n                  case 10:\n                    {\n                      // Strict array type\n                      // ScriptDataValue[n]. NOTE: according to video_file_format_spec_v10_1.pdf\n                      value = [];\n                      var strictArrayLength = v.getUint32(1, !le);\n                      offset += 4;\n                      for (var i = 0; i < strictArrayLength; i++) {\n                        var val = AMF.parseValue(arrayBuffer, dataOffset + offset, dataSize - offset);\n                        value.push(val.data);\n                        offset += val.size;\n                      }\n                      break;\n                    }\n                  case 11:\n                    {\n                      // Date type\n                      var date = AMF.parseDate(arrayBuffer, dataOffset + 1, dataSize - 1);\n                      value = date.data;\n                      offset += date.size;\n                      break;\n                    }\n                  case 12:\n                    {\n                      // Long string type\n                      var amfLongStr = AMF.parseString(arrayBuffer, dataOffset + 1, dataSize - 1);\n                      value = amfLongStr.data;\n                      offset += amfLongStr.size;\n                      break;\n                    }\n                  default:\n                    // ignore and skip\n                    offset = dataSize;\n                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w('AMF', 'Unsupported AMF value type ' + type);\n                }\n              } catch (e) {\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.e('AMF', e.toString());\n              }\n              return {\n                data: value,\n                size: offset,\n                objectEnd: objectEnd\n              };\n            };\n            return AMF;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = AMF;\n\n          /***/\n        },\n\n        /***/\"./src/demux/demux-errors.js\":\n        /*!***********************************!*\\\n          !*** ./src/demux/demux-errors.js ***!\n          \\***********************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_180088__) {\n          \"use strict\";\n\n          __nested_webpack_require_180088__.r(__webpack_exports__);\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var DemuxErrors = {\n            OK: 'OK',\n            FORMAT_ERROR: 'FormatError',\n            FORMAT_UNSUPPORTED: 'FormatUnsupported',\n            CODEC_UNSUPPORTED: 'CodecUnsupported'\n          };\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = DemuxErrors;\n\n          /***/\n        },\n\n        /***/\"./src/demux/exp-golomb.js\":\n        /*!*********************************!*\\\n          !*** ./src/demux/exp-golomb.js ***!\n          \\*********************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_181609__) {\n          \"use strict\";\n\n          __nested_webpack_require_181609__.r(__webpack_exports__);\n          /* harmony import */\n          var _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_181609__( /*! ../utils/exception.js */\"./src/utils/exception.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          // Exponential-Golomb buffer decoder\n          var ExpGolomb = /** @class */function () {\n            function ExpGolomb(uint8array) {\n              this.TAG = 'ExpGolomb';\n              this._buffer = uint8array;\n              this._buffer_index = 0;\n              this._total_bytes = uint8array.byteLength;\n              this._total_bits = uint8array.byteLength * 8;\n              this._current_word = 0;\n              this._current_word_bits_left = 0;\n            }\n            ExpGolomb.prototype.destroy = function () {\n              this._buffer = null;\n            };\n            ExpGolomb.prototype._fillCurrentWord = function () {\n              var buffer_bytes_left = this._total_bytes - this._buffer_index;\n              if (buffer_bytes_left <= 0) throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__.IllegalStateException('ExpGolomb: _fillCurrentWord() but no bytes available');\n              var bytes_read = Math.min(4, buffer_bytes_left);\n              var word = new Uint8Array(4);\n              word.set(this._buffer.subarray(this._buffer_index, this._buffer_index + bytes_read));\n              this._current_word = new DataView(word.buffer).getUint32(0, false);\n              this._buffer_index += bytes_read;\n              this._current_word_bits_left = bytes_read * 8;\n            };\n            ExpGolomb.prototype.readBits = function (bits) {\n              if (bits > 32) throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__.InvalidArgumentException('ExpGolomb: readBits() bits exceeded max 32bits!');\n              if (bits <= this._current_word_bits_left) {\n                var result_1 = this._current_word >>> 32 - bits;\n                this._current_word <<= bits;\n                this._current_word_bits_left -= bits;\n                return result_1;\n              }\n              var result = this._current_word_bits_left ? this._current_word : 0;\n              result = result >>> 32 - this._current_word_bits_left;\n              var bits_need_left = bits - this._current_word_bits_left;\n              this._fillCurrentWord();\n              var bits_read_next = Math.min(bits_need_left, this._current_word_bits_left);\n              var result2 = this._current_word >>> 32 - bits_read_next;\n              this._current_word <<= bits_read_next;\n              this._current_word_bits_left -= bits_read_next;\n              result = result << bits_read_next | result2;\n              return result;\n            };\n            ExpGolomb.prototype.readBool = function () {\n              return this.readBits(1) === 1;\n            };\n            ExpGolomb.prototype.readByte = function () {\n              return this.readBits(8);\n            };\n            ExpGolomb.prototype._skipLeadingZero = function () {\n              var zero_count;\n              for (zero_count = 0; zero_count < this._current_word_bits_left; zero_count++) {\n                if (0 !== (this._current_word & 0x80000000 >>> zero_count)) {\n                  this._current_word <<= zero_count;\n                  this._current_word_bits_left -= zero_count;\n                  return zero_count;\n                }\n              }\n              this._fillCurrentWord();\n              return zero_count + this._skipLeadingZero();\n            };\n            ExpGolomb.prototype.readUEG = function () {\n              var leading_zeros = this._skipLeadingZero();\n              return this.readBits(leading_zeros + 1) - 1;\n            };\n            ExpGolomb.prototype.readSEG = function () {\n              var value = this.readUEG();\n              if (value & 0x01) {\n                return value + 1 >>> 1;\n              } else {\n                return -1 * (value >>> 1);\n              }\n            };\n            return ExpGolomb;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = ExpGolomb;\n\n          /***/\n        },\n\n        /***/\"./src/demux/flv-demuxer.js\":\n        /*!**********************************!*\\\n          !*** ./src/demux/flv-demuxer.js ***!\n          \\**********************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_186856__) {\n          \"use strict\";\n\n          __nested_webpack_require_186856__.r(__webpack_exports__);\n          /* harmony import */\n          var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_186856__( /*! ../utils/logger.js */\"./src/utils/logger.js\");\n          /* harmony import */\n          var _amf_parser_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_186856__( /*! ./amf-parser.js */\"./src/demux/amf-parser.js\");\n          /* harmony import */\n          var _sps_parser_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_186856__( /*! ./sps-parser.js */\"./src/demux/sps-parser.js\");\n          /* harmony import */\n          var _demux_errors_js__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_186856__( /*! ./demux-errors.js */\"./src/demux/demux-errors.js\");\n          /* harmony import */\n          var _core_media_info_js__WEBPACK_IMPORTED_MODULE_4__ = __nested_webpack_require_186856__( /*! ../core/media-info.js */\"./src/core/media-info.js\");\n          /* harmony import */\n          var _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__ = __nested_webpack_require_186856__( /*! ../utils/exception.js */\"./src/utils/exception.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          function Swap16(src) {\n            return src >>> 8 & 0xFF | (src & 0xFF) << 8;\n          }\n          function Swap32(src) {\n            return (src & 0xFF000000) >>> 24 | (src & 0x00FF0000) >>> 8 | (src & 0x0000FF00) << 8 | (src & 0x000000FF) << 24;\n          }\n          function ReadBig32(array, index) {\n            return array[index] << 24 | array[index + 1] << 16 | array[index + 2] << 8 | array[index + 3];\n          }\n          var FLVDemuxer = /** @class */function () {\n            function FLVDemuxer(probeData, config) {\n              this.TAG = 'FLVDemuxer';\n              this._config = config;\n              this._onError = null;\n              this._onMediaInfo = null;\n              this._onMetaDataArrived = null;\n              this._onScriptDataArrived = null;\n              this._onTrackMetadata = null;\n              this._onDataAvailable = null;\n              this._dataOffset = probeData.dataOffset;\n              this._firstParse = true;\n              this._dispatch = false;\n              this._hasAudio = probeData.hasAudioTrack;\n              this._hasVideo = probeData.hasVideoTrack;\n              this._hasAudioFlagOverrided = false;\n              this._hasVideoFlagOverrided = false;\n              this._audioInitialMetadataDispatched = false;\n              this._videoInitialMetadataDispatched = false;\n              this._mediaInfo = new _core_media_info_js__WEBPACK_IMPORTED_MODULE_4__.default();\n              this._mediaInfo.hasAudio = this._hasAudio;\n              this._mediaInfo.hasVideo = this._hasVideo;\n              this._metadata = null;\n              this._audioMetadata = null;\n              this._videoMetadata = null;\n              this._naluLengthSize = 4;\n              this._timestampBase = 0; // int32, in milliseconds\n              this._timescale = 1000;\n              this._duration = 0; // int32, in milliseconds\n              this._durationOverrided = false;\n              this._referenceFrameRate = {\n                fixed: true,\n                fps: 23.976,\n                fps_num: 23976,\n                fps_den: 1000\n              };\n              this._flvSoundRateTable = [5500, 11025, 22050, 44100, 48000];\n              this._mpegSamplingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350];\n              this._mpegAudioV10SampleRateTable = [44100, 48000, 32000, 0];\n              this._mpegAudioV20SampleRateTable = [22050, 24000, 16000, 0];\n              this._mpegAudioV25SampleRateTable = [11025, 12000, 8000, 0];\n              this._mpegAudioL1BitRateTable = [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, -1];\n              this._mpegAudioL2BitRateTable = [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, -1];\n              this._mpegAudioL3BitRateTable = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1];\n              this._videoTrack = {\n                type: 'video',\n                id: 1,\n                sequenceNumber: 0,\n                samples: [],\n                length: 0\n              };\n              this._audioTrack = {\n                type: 'audio',\n                id: 2,\n                sequenceNumber: 0,\n                samples: [],\n                length: 0\n              };\n              this._littleEndian = function () {\n                var buf = new ArrayBuffer(2);\n                new DataView(buf).setInt16(0, 256, true); // little-endian write\n                return new Int16Array(buf)[0] === 256; // platform-spec read, if equal then LE\n              }();\n            }\n\n            FLVDemuxer.prototype.destroy = function () {\n              this._mediaInfo = null;\n              this._metadata = null;\n              this._audioMetadata = null;\n              this._videoMetadata = null;\n              this._videoTrack = null;\n              this._audioTrack = null;\n              this._onError = null;\n              this._onMediaInfo = null;\n              this._onMetaDataArrived = null;\n              this._onScriptDataArrived = null;\n              this._onTrackMetadata = null;\n              this._onDataAvailable = null;\n            };\n            FLVDemuxer.probe = function (buffer) {\n              var data = new Uint8Array(buffer);\n              var mismatch = {\n                match: false\n              };\n              if (data[0] !== 0x46 || data[1] !== 0x4C || data[2] !== 0x56 || data[3] !== 0x01) {\n                return mismatch;\n              }\n              var hasAudio = (data[4] & 4) >>> 2 !== 0;\n              var hasVideo = (data[4] & 1) !== 0;\n              var offset = ReadBig32(data, 5);\n              if (offset < 9) {\n                return mismatch;\n              }\n              return {\n                match: true,\n                consumed: offset,\n                dataOffset: offset,\n                hasAudioTrack: hasAudio,\n                hasVideoTrack: hasVideo\n              };\n            };\n            FLVDemuxer.prototype.bindDataSource = function (loader) {\n              loader.onDataArrival = this.parseChunks.bind(this);\n              return this;\n            };\n            Object.defineProperty(FLVDemuxer.prototype, \"onTrackMetadata\", {\n              // prototype: function(type: string, metadata: any): void\n              get: function () {\n                return this._onTrackMetadata;\n              },\n              set: function (callback) {\n                this._onTrackMetadata = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FLVDemuxer.prototype, \"onMediaInfo\", {\n              // prototype: function(mediaInfo: MediaInfo): void\n              get: function () {\n                return this._onMediaInfo;\n              },\n              set: function (callback) {\n                this._onMediaInfo = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FLVDemuxer.prototype, \"onMetaDataArrived\", {\n              get: function () {\n                return this._onMetaDataArrived;\n              },\n              set: function (callback) {\n                this._onMetaDataArrived = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FLVDemuxer.prototype, \"onScriptDataArrived\", {\n              get: function () {\n                return this._onScriptDataArrived;\n              },\n              set: function (callback) {\n                this._onScriptDataArrived = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FLVDemuxer.prototype, \"onError\", {\n              // prototype: function(type: number, info: string): void\n              get: function () {\n                return this._onError;\n              },\n              set: function (callback) {\n                this._onError = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FLVDemuxer.prototype, \"onDataAvailable\", {\n              // prototype: function(videoTrack: any, audioTrack: any): void\n              get: function () {\n                return this._onDataAvailable;\n              },\n              set: function (callback) {\n                this._onDataAvailable = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FLVDemuxer.prototype, \"timestampBase\", {\n              // timestamp base for output samples, must be in milliseconds\n              get: function () {\n                return this._timestampBase;\n              },\n              set: function (base) {\n                this._timestampBase = base;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FLVDemuxer.prototype, \"overridedDuration\", {\n              get: function () {\n                return this._duration;\n              },\n              // Force-override media duration. Must be in milliseconds, int32\n              set: function (duration) {\n                this._durationOverrided = true;\n                this._duration = duration;\n                this._mediaInfo.duration = duration;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FLVDemuxer.prototype, \"overridedHasAudio\", {\n              // Force-override audio track present flag, boolean\n              set: function (hasAudio) {\n                this._hasAudioFlagOverrided = true;\n                this._hasAudio = hasAudio;\n                this._mediaInfo.hasAudio = hasAudio;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FLVDemuxer.prototype, \"overridedHasVideo\", {\n              // Force-override video track present flag, boolean\n              set: function (hasVideo) {\n                this._hasVideoFlagOverrided = true;\n                this._hasVideo = hasVideo;\n                this._mediaInfo.hasVideo = hasVideo;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            FLVDemuxer.prototype.resetMediaInfo = function () {\n              this._mediaInfo = new _core_media_info_js__WEBPACK_IMPORTED_MODULE_4__.default();\n            };\n            FLVDemuxer.prototype._isInitialMetadataDispatched = function () {\n              if (this._hasAudio && this._hasVideo) {\n                // both audio & video\n                return this._audioInitialMetadataDispatched && this._videoInitialMetadataDispatched;\n              }\n              if (this._hasAudio && !this._hasVideo) {\n                // audio only\n                return this._audioInitialMetadataDispatched;\n              }\n              if (!this._hasAudio && this._hasVideo) {\n                // video only\n                return this._videoInitialMetadataDispatched;\n              }\n              return false;\n            };\n            // function parseChunks(chunk: ArrayBuffer, byteStart: number): number;\n            FLVDemuxer.prototype.parseChunks = function (chunk, byteStart) {\n              if (!this._onError || !this._onMediaInfo || !this._onTrackMetadata || !this._onDataAvailable) {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__.IllegalStateException('Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified');\n              }\n              var offset = 0;\n              var le = this._littleEndian;\n              if (byteStart === 0) {\n                // buffer with FLV header\n                if (chunk.byteLength > 13) {\n                  var probeData = FLVDemuxer.probe(chunk);\n                  offset = probeData.dataOffset;\n                } else {\n                  return 0;\n                }\n              }\n              if (this._firstParse) {\n                // handle PreviousTagSize0 before Tag1\n                this._firstParse = false;\n                if (byteStart + offset !== this._dataOffset) {\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'First time parsing but chunk byteStart invalid!');\n                }\n                var v = new DataView(chunk, offset);\n                var prevTagSize0 = v.getUint32(0, !le);\n                if (prevTagSize0 !== 0) {\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'PrevTagSize0 !== 0 !!!');\n                }\n                offset += 4;\n              }\n              while (offset < chunk.byteLength) {\n                this._dispatch = true;\n                var v = new DataView(chunk, offset);\n                if (offset + 11 + 4 > chunk.byteLength) {\n                  // data not enough for parsing an flv tag\n                  break;\n                }\n                var tagType = v.getUint8(0);\n                var dataSize = v.getUint32(0, !le) & 0x00FFFFFF;\n                if (offset + 11 + dataSize + 4 > chunk.byteLength) {\n                  // data not enough for parsing actual data body\n                  break;\n                }\n                if (tagType !== 8 && tagType !== 9 && tagType !== 18) {\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, \"Unsupported tag type \" + tagType + \", skipped\");\n                  // consume the whole tag (skip it)\n                  offset += 11 + dataSize + 4;\n                  continue;\n                }\n                var ts2 = v.getUint8(4);\n                var ts1 = v.getUint8(5);\n                var ts0 = v.getUint8(6);\n                var ts3 = v.getUint8(7);\n                var timestamp = ts0 | ts1 << 8 | ts2 << 16 | ts3 << 24;\n                var streamId = v.getUint32(7, !le) & 0x00FFFFFF;\n                if (streamId !== 0) {\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Meet tag which has StreamID != 0!');\n                }\n                var dataOffset = offset + 11;\n                switch (tagType) {\n                  case 8:\n                    // Audio\n                    this._parseAudioData(chunk, dataOffset, dataSize, timestamp);\n                    break;\n                  case 9:\n                    // Video\n                    this._parseVideoData(chunk, dataOffset, dataSize, timestamp, byteStart + offset);\n                    break;\n                  case 18:\n                    // ScriptDataObject\n                    this._parseScriptData(chunk, dataOffset, dataSize);\n                    break;\n                }\n                var prevTagSize = v.getUint32(11 + dataSize, !le);\n                if (prevTagSize !== 11 + dataSize) {\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, \"Invalid PrevTagSize \" + prevTagSize);\n                }\n                offset += 11 + dataSize + 4; // tagBody + dataSize + prevTagSize\n              }\n              // dispatch parsed frames to consumer (typically, the remuxer)\n              if (this._isInitialMetadataDispatched()) {\n                if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n                  this._onDataAvailable(this._audioTrack, this._videoTrack);\n                }\n              }\n              return offset; // consumed bytes, just equals latest offset index\n            };\n\n            FLVDemuxer.prototype._parseScriptData = function (arrayBuffer, dataOffset, dataSize) {\n              var scriptData = _amf_parser_js__WEBPACK_IMPORTED_MODULE_1__.default.parseScriptData(arrayBuffer, dataOffset, dataSize);\n              if (scriptData.hasOwnProperty('onMetaData')) {\n                if (scriptData.onMetaData == null || typeof scriptData.onMetaData !== 'object') {\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Invalid onMetaData structure!');\n                  return;\n                }\n                if (this._metadata) {\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Found another onMetaData tag!');\n                }\n                this._metadata = scriptData;\n                var onMetaData = this._metadata.onMetaData;\n                if (this._onMetaDataArrived) {\n                  this._onMetaDataArrived(Object.assign({}, onMetaData));\n                }\n                if (typeof onMetaData.hasAudio === 'boolean') {\n                  // hasAudio\n                  if (this._hasAudioFlagOverrided === false) {\n                    this._hasAudio = onMetaData.hasAudio;\n                    this._mediaInfo.hasAudio = this._hasAudio;\n                  }\n                }\n                if (typeof onMetaData.hasVideo === 'boolean') {\n                  // hasVideo\n                  if (this._hasVideoFlagOverrided === false) {\n                    this._hasVideo = onMetaData.hasVideo;\n                    this._mediaInfo.hasVideo = this._hasVideo;\n                  }\n                }\n                if (typeof onMetaData.audiodatarate === 'number') {\n                  // audiodatarate\n                  this._mediaInfo.audioDataRate = onMetaData.audiodatarate;\n                }\n                if (typeof onMetaData.videodatarate === 'number') {\n                  // videodatarate\n                  this._mediaInfo.videoDataRate = onMetaData.videodatarate;\n                }\n                if (typeof onMetaData.width === 'number') {\n                  // width\n                  this._mediaInfo.width = onMetaData.width;\n                }\n                if (typeof onMetaData.height === 'number') {\n                  // height\n                  this._mediaInfo.height = onMetaData.height;\n                }\n                if (typeof onMetaData.duration === 'number') {\n                  // duration\n                  if (!this._durationOverrided) {\n                    var duration = Math.floor(onMetaData.duration * this._timescale);\n                    this._duration = duration;\n                    this._mediaInfo.duration = duration;\n                  }\n                } else {\n                  this._mediaInfo.duration = 0;\n                }\n                if (typeof onMetaData.framerate === 'number') {\n                  // framerate\n                  var fps_num = Math.floor(onMetaData.framerate * 1000);\n                  if (fps_num > 0) {\n                    var fps = fps_num / 1000;\n                    this._referenceFrameRate.fixed = true;\n                    this._referenceFrameRate.fps = fps;\n                    this._referenceFrameRate.fps_num = fps_num;\n                    this._referenceFrameRate.fps_den = 1000;\n                    this._mediaInfo.fps = fps;\n                  }\n                }\n                if (typeof onMetaData.keyframes === 'object') {\n                  // keyframes\n                  this._mediaInfo.hasKeyframesIndex = true;\n                  var keyframes = onMetaData.keyframes;\n                  this._mediaInfo.keyframesIndex = this._parseKeyframesIndex(keyframes);\n                  onMetaData.keyframes = null; // keyframes has been extracted, remove it\n                } else {\n                  this._mediaInfo.hasKeyframesIndex = false;\n                }\n                this._dispatch = false;\n                this._mediaInfo.metadata = onMetaData;\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.v(this.TAG, 'Parsed onMetaData');\n                if (this._mediaInfo.isComplete()) {\n                  this._onMediaInfo(this._mediaInfo);\n                }\n              }\n              if (Object.keys(scriptData).length > 0) {\n                if (this._onScriptDataArrived) {\n                  this._onScriptDataArrived(Object.assign({}, scriptData));\n                }\n              }\n            };\n            FLVDemuxer.prototype._parseKeyframesIndex = function (keyframes) {\n              var times = [];\n              var filepositions = [];\n              // ignore first keyframe which is actually AVC Sequence Header (AVCDecoderConfigurationRecord)\n              for (var i = 1; i < keyframes.times.length; i++) {\n                var time = this._timestampBase + Math.floor(keyframes.times[i] * 1000);\n                times.push(time);\n                filepositions.push(keyframes.filepositions[i]);\n              }\n              return {\n                times: times,\n                filepositions: filepositions\n              };\n            };\n            FLVDemuxer.prototype._parseAudioData = function (arrayBuffer, dataOffset, dataSize, tagTimestamp) {\n              if (dataSize <= 1) {\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Flv: Invalid audio packet, missing SoundData payload!');\n                return;\n              }\n              if (this._hasAudioFlagOverrided === true && this._hasAudio === false) {\n                // If hasAudio: false indicated explicitly in MediaDataSource,\n                // Ignore all the audio packets\n                return;\n              }\n              var le = this._littleEndian;\n              var v = new DataView(arrayBuffer, dataOffset, dataSize);\n              var soundSpec = v.getUint8(0);\n              var soundFormat = soundSpec >>> 4;\n              if (soundFormat !== 2 && soundFormat !== 10) {\n                // MP3 or AAC\n                this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.CODEC_UNSUPPORTED, 'Flv: Unsupported audio codec idx: ' + soundFormat);\n                return;\n              }\n              var soundRate = 0;\n              var soundRateIndex = (soundSpec & 12) >>> 2;\n              if (soundRateIndex >= 0 && soundRateIndex <= 4) {\n                soundRate = this._flvSoundRateTable[soundRateIndex];\n              } else {\n                this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, 'Flv: Invalid audio sample rate idx: ' + soundRateIndex);\n                return;\n              }\n              var soundSize = (soundSpec & 2) >>> 1; // unused\n              var soundType = soundSpec & 1;\n              var meta = this._audioMetadata;\n              var track = this._audioTrack;\n              if (!meta) {\n                if (this._hasAudio === false && this._hasAudioFlagOverrided === false) {\n                  this._hasAudio = true;\n                  this._mediaInfo.hasAudio = true;\n                }\n                // initial metadata\n                meta = this._audioMetadata = {};\n                meta.type = 'audio';\n                meta.id = track.id;\n                meta.timescale = this._timescale;\n                meta.duration = this._duration;\n                meta.audioSampleRate = soundRate;\n                meta.channelCount = soundType === 0 ? 1 : 2;\n              }\n              if (soundFormat === 10) {\n                // AAC\n                var aacData = this._parseAACAudioData(arrayBuffer, dataOffset + 1, dataSize - 1);\n                if (aacData == undefined) {\n                  return;\n                }\n                if (aacData.packetType === 0) {\n                  // AAC sequence header (AudioSpecificConfig)\n                  if (meta.config) {\n                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Found another AudioSpecificConfig!');\n                  }\n                  var misc = aacData.data;\n                  meta.audioSampleRate = misc.samplingRate;\n                  meta.channelCount = misc.channelCount;\n                  meta.codec = misc.codec;\n                  meta.originalCodec = misc.originalCodec;\n                  meta.config = misc.config;\n                  // The decode result of an aac sample is 1024 PCM samples\n                  meta.refSampleDuration = 1024 / meta.audioSampleRate * meta.timescale;\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.v(this.TAG, 'Parsed AudioSpecificConfig');\n                  if (this._isInitialMetadataDispatched()) {\n                    // Non-initial metadata, force dispatch (or flush) parsed frames to remuxer\n                    if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n                      this._onDataAvailable(this._audioTrack, this._videoTrack);\n                    }\n                  } else {\n                    this._audioInitialMetadataDispatched = true;\n                  }\n                  // then notify new metadata\n                  this._dispatch = false;\n                  this._onTrackMetadata('audio', meta);\n                  var mi = this._mediaInfo;\n                  mi.audioCodec = meta.originalCodec;\n                  mi.audioSampleRate = meta.audioSampleRate;\n                  mi.audioChannelCount = meta.channelCount;\n                  if (mi.hasVideo) {\n                    if (mi.videoCodec != null) {\n                      mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + ',' + mi.audioCodec + '\"';\n                    }\n                  } else {\n                    mi.mimeType = 'video/x-flv; codecs=\"' + mi.audioCodec + '\"';\n                  }\n                  if (mi.isComplete()) {\n                    this._onMediaInfo(mi);\n                  }\n                } else if (aacData.packetType === 1) {\n                  // AAC raw frame data\n                  var dts = this._timestampBase + tagTimestamp;\n                  var aacSample = {\n                    unit: aacData.data,\n                    length: aacData.data.byteLength,\n                    dts: dts,\n                    pts: dts\n                  };\n                  track.samples.push(aacSample);\n                  track.length += aacData.data.length;\n                } else {\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.e(this.TAG, \"Flv: Unsupported AAC data type \" + aacData.packetType);\n                }\n              } else if (soundFormat === 2) {\n                // MP3\n                if (!meta.codec) {\n                  // We need metadata for mp3 audio track, extract info from frame header\n                  var misc = this._parseMP3AudioData(arrayBuffer, dataOffset + 1, dataSize - 1, true);\n                  if (misc == undefined) {\n                    return;\n                  }\n                  meta.audioSampleRate = misc.samplingRate;\n                  meta.channelCount = misc.channelCount;\n                  meta.codec = misc.codec;\n                  meta.originalCodec = misc.originalCodec;\n                  // The decode result of an mp3 sample is 1152 PCM samples\n                  meta.refSampleDuration = 1152 / meta.audioSampleRate * meta.timescale;\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.v(this.TAG, 'Parsed MPEG Audio Frame Header');\n                  this._audioInitialMetadataDispatched = true;\n                  this._onTrackMetadata('audio', meta);\n                  var mi = this._mediaInfo;\n                  mi.audioCodec = meta.codec;\n                  mi.audioSampleRate = meta.audioSampleRate;\n                  mi.audioChannelCount = meta.channelCount;\n                  mi.audioDataRate = misc.bitRate;\n                  if (mi.hasVideo) {\n                    if (mi.videoCodec != null) {\n                      mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + ',' + mi.audioCodec + '\"';\n                    }\n                  } else {\n                    mi.mimeType = 'video/x-flv; codecs=\"' + mi.audioCodec + '\"';\n                  }\n                  if (mi.isComplete()) {\n                    this._onMediaInfo(mi);\n                  }\n                }\n                // This packet is always a valid audio packet, extract it\n                var data = this._parseMP3AudioData(arrayBuffer, dataOffset + 1, dataSize - 1, false);\n                if (data == undefined) {\n                  return;\n                }\n                var dts = this._timestampBase + tagTimestamp;\n                var mp3Sample = {\n                  unit: data,\n                  length: data.byteLength,\n                  dts: dts,\n                  pts: dts\n                };\n                track.samples.push(mp3Sample);\n                track.length += data.length;\n              }\n            };\n            FLVDemuxer.prototype._parseAACAudioData = function (arrayBuffer, dataOffset, dataSize) {\n              if (dataSize <= 1) {\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Flv: Invalid AAC packet, missing AACPacketType or/and Data!');\n                return;\n              }\n              var result = {};\n              var array = new Uint8Array(arrayBuffer, dataOffset, dataSize);\n              result.packetType = array[0];\n              if (array[0] === 0) {\n                result.data = this._parseAACAudioSpecificConfig(arrayBuffer, dataOffset + 1, dataSize - 1);\n              } else {\n                result.data = array.subarray(1);\n              }\n              return result;\n            };\n            FLVDemuxer.prototype._parseAACAudioSpecificConfig = function (arrayBuffer, dataOffset, dataSize) {\n              var array = new Uint8Array(arrayBuffer, dataOffset, dataSize);\n              var config = null;\n              /* Audio Object Type:\n                 0: Null\n                 1: AAC Main\n                 2: AAC LC\n                 3: AAC SSR (Scalable Sample Rate)\n                 4: AAC LTP (Long Term Prediction)\n                 5: HE-AAC / SBR (Spectral Band Replication)\n                 6: AAC Scalable\n              */\n              var audioObjectType = 0;\n              var originalAudioObjectType = 0;\n              var audioExtensionObjectType = null;\n              var samplingIndex = 0;\n              var extensionSamplingIndex = null;\n              // 5 bits\n              audioObjectType = originalAudioObjectType = array[0] >>> 3;\n              // 4 bits\n              samplingIndex = (array[0] & 0x07) << 1 | array[1] >>> 7;\n              if (samplingIndex < 0 || samplingIndex >= this._mpegSamplingRates.length) {\n                this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, 'Flv: AAC invalid sampling frequency index!');\n                return;\n              }\n              var samplingFrequence = this._mpegSamplingRates[samplingIndex];\n              // 4 bits\n              var channelConfig = (array[1] & 0x78) >>> 3;\n              if (channelConfig < 0 || channelConfig >= 8) {\n                this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, 'Flv: AAC invalid channel configuration');\n                return;\n              }\n              if (audioObjectType === 5) {\n                // HE-AAC?\n                // 4 bits\n                extensionSamplingIndex = (array[1] & 0x07) << 1 | array[2] >>> 7;\n                // 5 bits\n                audioExtensionObjectType = (array[2] & 0x7C) >>> 2;\n              }\n              // workarounds for various browsers\n              var userAgent = self.navigator.userAgent.toLowerCase();\n              if (userAgent.indexOf('firefox') !== -1) {\n                // firefox: use SBR (HE-AAC) if freq less than 24kHz\n                if (samplingIndex >= 6) {\n                  audioObjectType = 5;\n                  config = new Array(4);\n                  extensionSamplingIndex = samplingIndex - 3;\n                } else {\n                  // use LC-AAC\n                  audioObjectType = 2;\n                  config = new Array(2);\n                  extensionSamplingIndex = samplingIndex;\n                }\n              } else if (userAgent.indexOf('android') !== -1) {\n                // android: always use LC-AAC\n                audioObjectType = 2;\n                config = new Array(2);\n                extensionSamplingIndex = samplingIndex;\n              } else {\n                // for other browsers, e.g. chrome...\n                // Always use HE-AAC to make it easier to switch aac codec profile\n                audioObjectType = 5;\n                extensionSamplingIndex = samplingIndex;\n                config = new Array(4);\n                if (samplingIndex >= 6) {\n                  extensionSamplingIndex = samplingIndex - 3;\n                } else if (channelConfig === 1) {\n                  // Mono channel\n                  audioObjectType = 2;\n                  config = new Array(2);\n                  extensionSamplingIndex = samplingIndex;\n                }\n              }\n              config[0] = audioObjectType << 3;\n              config[0] |= (samplingIndex & 0x0F) >>> 1;\n              config[1] = (samplingIndex & 0x0F) << 7;\n              config[1] |= (channelConfig & 0x0F) << 3;\n              if (audioObjectType === 5) {\n                config[1] |= (extensionSamplingIndex & 0x0F) >>> 1;\n                config[2] = (extensionSamplingIndex & 0x01) << 7;\n                // extended audio object type: force to 2 (LC-AAC)\n                config[2] |= 2 << 2;\n                config[3] = 0;\n              }\n              return {\n                config: config,\n                samplingRate: samplingFrequence,\n                channelCount: channelConfig,\n                codec: 'mp4a.40.' + audioObjectType,\n                originalCodec: 'mp4a.40.' + originalAudioObjectType\n              };\n            };\n            FLVDemuxer.prototype._parseMP3AudioData = function (arrayBuffer, dataOffset, dataSize, requestHeader) {\n              if (dataSize < 4) {\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Flv: Invalid MP3 packet, header missing!');\n                return;\n              }\n              var le = this._littleEndian;\n              var array = new Uint8Array(arrayBuffer, dataOffset, dataSize);\n              var result = null;\n              if (requestHeader) {\n                if (array[0] !== 0xFF) {\n                  return;\n                }\n                var ver = array[1] >>> 3 & 0x03;\n                var layer = (array[1] & 0x06) >> 1;\n                var bitrate_index = (array[2] & 0xF0) >>> 4;\n                var sampling_freq_index = (array[2] & 0x0C) >>> 2;\n                var channel_mode = array[3] >>> 6 & 0x03;\n                var channel_count = channel_mode !== 3 ? 2 : 1;\n                var sample_rate = 0;\n                var bit_rate = 0;\n                var object_type = 34; // Layer-3, listed in MPEG-4 Audio Object Types\n                var codec = 'mp3';\n                switch (ver) {\n                  case 0:\n                    // MPEG 2.5\n                    sample_rate = this._mpegAudioV25SampleRateTable[sampling_freq_index];\n                    break;\n                  case 2:\n                    // MPEG 2\n                    sample_rate = this._mpegAudioV20SampleRateTable[sampling_freq_index];\n                    break;\n                  case 3:\n                    // MPEG 1\n                    sample_rate = this._mpegAudioV10SampleRateTable[sampling_freq_index];\n                    break;\n                }\n                switch (layer) {\n                  case 1:\n                    // Layer 3\n                    object_type = 34;\n                    if (bitrate_index < this._mpegAudioL3BitRateTable.length) {\n                      bit_rate = this._mpegAudioL3BitRateTable[bitrate_index];\n                    }\n                    break;\n                  case 2:\n                    // Layer 2\n                    object_type = 33;\n                    if (bitrate_index < this._mpegAudioL2BitRateTable.length) {\n                      bit_rate = this._mpegAudioL2BitRateTable[bitrate_index];\n                    }\n                    break;\n                  case 3:\n                    // Layer 1\n                    object_type = 32;\n                    if (bitrate_index < this._mpegAudioL1BitRateTable.length) {\n                      bit_rate = this._mpegAudioL1BitRateTable[bitrate_index];\n                    }\n                    break;\n                }\n                result = {\n                  bitRate: bit_rate,\n                  samplingRate: sample_rate,\n                  channelCount: channel_count,\n                  codec: codec,\n                  originalCodec: codec\n                };\n              } else {\n                result = array;\n              }\n              return result;\n            };\n            FLVDemuxer.prototype._parseVideoData = function (arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition) {\n              if (dataSize <= 1) {\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Flv: Invalid video packet, missing VideoData payload!');\n                return;\n              }\n              if (this._hasVideoFlagOverrided === true && this._hasVideo === false) {\n                // If hasVideo: false indicated explicitly in MediaDataSource,\n                // Ignore all the video packets\n                return;\n              }\n              var spec = new Uint8Array(arrayBuffer, dataOffset, dataSize)[0];\n              var frameType = (spec & 240) >>> 4;\n              var codecId = spec & 15;\n              if (codecId !== 7) {\n                this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.CODEC_UNSUPPORTED, \"Flv: Unsupported codec in video frame: \" + codecId);\n                return;\n              }\n              this._parseAVCVideoPacket(arrayBuffer, dataOffset + 1, dataSize - 1, tagTimestamp, tagPosition, frameType);\n            };\n            FLVDemuxer.prototype._parseAVCVideoPacket = function (arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType) {\n              if (dataSize < 4) {\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime');\n                return;\n              }\n              var le = this._littleEndian;\n              var v = new DataView(arrayBuffer, dataOffset, dataSize);\n              var packetType = v.getUint8(0);\n              var cts_unsigned = v.getUint32(0, !le) & 0x00FFFFFF;\n              var cts = cts_unsigned << 8 >> 8; // convert to 24-bit signed int\n              if (packetType === 0) {\n                // AVCDecoderConfigurationRecord\n                this._parseAVCDecoderConfigurationRecord(arrayBuffer, dataOffset + 4, dataSize - 4);\n              } else if (packetType === 1) {\n                // One or more Nalus\n                this._parseAVCVideoData(arrayBuffer, dataOffset + 4, dataSize - 4, tagTimestamp, tagPosition, frameType, cts);\n              } else if (packetType === 2) {\n                // empty, AVC end of sequence\n              } else {\n                this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, \"Flv: Invalid video packet type \" + packetType);\n                return;\n              }\n            };\n            FLVDemuxer.prototype._parseAVCDecoderConfigurationRecord = function (arrayBuffer, dataOffset, dataSize) {\n              if (dataSize < 7) {\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Flv: Invalid AVCDecoderConfigurationRecord, lack of data!');\n                return;\n              }\n              var meta = this._videoMetadata;\n              var track = this._videoTrack;\n              var le = this._littleEndian;\n              var v = new DataView(arrayBuffer, dataOffset, dataSize);\n              if (!meta) {\n                if (this._hasVideo === false && this._hasVideoFlagOverrided === false) {\n                  this._hasVideo = true;\n                  this._mediaInfo.hasVideo = true;\n                }\n                meta = this._videoMetadata = {};\n                meta.type = 'video';\n                meta.id = track.id;\n                meta.timescale = this._timescale;\n                meta.duration = this._duration;\n              } else {\n                if (typeof meta.avcc !== 'undefined') {\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Found another AVCDecoderConfigurationRecord!');\n                }\n              }\n              var version = v.getUint8(0); // configurationVersion\n              var avcProfile = v.getUint8(1); // avcProfileIndication\n              var profileCompatibility = v.getUint8(2); // profile_compatibility\n              var avcLevel = v.getUint8(3); // AVCLevelIndication\n              if (version !== 1 || avcProfile === 0) {\n                this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord');\n                return;\n              }\n              this._naluLengthSize = (v.getUint8(4) & 3) + 1; // lengthSizeMinusOne\n              if (this._naluLengthSize !== 3 && this._naluLengthSize !== 4) {\n                // holy shit!!!\n                this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, \"Flv: Strange NaluLengthSizeMinusOne: \" + (this._naluLengthSize - 1));\n                return;\n              }\n              var spsCount = v.getUint8(5) & 31; // numOfSequenceParameterSets\n              if (spsCount === 0) {\n                this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No SPS');\n                return;\n              } else if (spsCount > 1) {\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, \"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = \" + spsCount);\n              }\n              var offset = 6;\n              for (var i = 0; i < spsCount; i++) {\n                var len = v.getUint16(offset, !le); // sequenceParameterSetLength\n                offset += 2;\n                if (len === 0) {\n                  continue;\n                }\n                // Notice: Nalu without startcode header (00 00 00 01)\n                var sps = new Uint8Array(arrayBuffer, dataOffset + offset, len);\n                offset += len;\n                var config = _sps_parser_js__WEBPACK_IMPORTED_MODULE_2__.default.parseSPS(sps);\n                if (i !== 0) {\n                  // ignore other sps's config\n                  continue;\n                }\n                meta.codecWidth = config.codec_size.width;\n                meta.codecHeight = config.codec_size.height;\n                meta.presentWidth = config.present_size.width;\n                meta.presentHeight = config.present_size.height;\n                meta.profile = config.profile_string;\n                meta.level = config.level_string;\n                meta.bitDepth = config.bit_depth;\n                meta.chromaFormat = config.chroma_format;\n                meta.sarRatio = config.sar_ratio;\n                meta.frameRate = config.frame_rate;\n                if (config.frame_rate.fixed === false || config.frame_rate.fps_num === 0 || config.frame_rate.fps_den === 0) {\n                  meta.frameRate = this._referenceFrameRate;\n                }\n                var fps_den = meta.frameRate.fps_den;\n                var fps_num = meta.frameRate.fps_num;\n                meta.refSampleDuration = meta.timescale * (fps_den / fps_num);\n                var codecArray = sps.subarray(1, 4);\n                var codecString = 'avc1.';\n                for (var j = 0; j < 3; j++) {\n                  var h = codecArray[j].toString(16);\n                  if (h.length < 2) {\n                    h = '0' + h;\n                  }\n                  codecString += h;\n                }\n                meta.codec = codecString;\n                var mi = this._mediaInfo;\n                mi.width = meta.codecWidth;\n                mi.height = meta.codecHeight;\n                mi.fps = meta.frameRate.fps;\n                mi.profile = meta.profile;\n                mi.level = meta.level;\n                mi.refFrames = config.ref_frames;\n                mi.chromaFormat = config.chroma_format_string;\n                mi.sarNum = meta.sarRatio.width;\n                mi.sarDen = meta.sarRatio.height;\n                mi.videoCodec = codecString;\n                if (mi.hasAudio) {\n                  if (mi.audioCodec != null) {\n                    mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + ',' + mi.audioCodec + '\"';\n                  }\n                } else {\n                  mi.mimeType = 'video/x-flv; codecs=\"' + mi.videoCodec + '\"';\n                }\n                if (mi.isComplete()) {\n                  this._onMediaInfo(mi);\n                }\n              }\n              var ppsCount = v.getUint8(offset); // numOfPictureParameterSets\n              if (ppsCount === 0) {\n                this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No PPS');\n                return;\n              } else if (ppsCount > 1) {\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, \"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = \" + ppsCount);\n              }\n              offset++;\n              for (var i = 0; i < ppsCount; i++) {\n                var len = v.getUint16(offset, !le); // pictureParameterSetLength\n                offset += 2;\n                if (len === 0) {\n                  continue;\n                }\n                // pps is useless for extracting video information\n                offset += len;\n              }\n              meta.avcc = new Uint8Array(dataSize);\n              meta.avcc.set(new Uint8Array(arrayBuffer, dataOffset, dataSize), 0);\n              _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.v(this.TAG, 'Parsed AVCDecoderConfigurationRecord');\n              if (this._isInitialMetadataDispatched()) {\n                // flush parsed frames\n                if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {\n                  this._onDataAvailable(this._audioTrack, this._videoTrack);\n                }\n              } else {\n                this._videoInitialMetadataDispatched = true;\n              }\n              // notify new metadata\n              this._dispatch = false;\n              this._onTrackMetadata('video', meta);\n            };\n            FLVDemuxer.prototype._parseAVCVideoData = function (arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType, cts) {\n              var le = this._littleEndian;\n              var v = new DataView(arrayBuffer, dataOffset, dataSize);\n              var units = [],\n                length = 0;\n              var offset = 0;\n              var lengthSize = this._naluLengthSize;\n              var dts = this._timestampBase + tagTimestamp;\n              var keyframe = frameType === 1; // from FLV Frame Type constants\n              while (offset < dataSize) {\n                if (offset + 4 >= dataSize) {\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, \"Malformed Nalu near timestamp \" + dts + \", offset = \" + offset + \", dataSize = \" + dataSize);\n                  break; // data not enough for next Nalu\n                }\n                // Nalu with length-header (AVC1)\n                var naluSize = v.getUint32(offset, !le); // Big-Endian read\n                if (lengthSize === 3) {\n                  naluSize >>>= 8;\n                }\n                if (naluSize > dataSize - lengthSize) {\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, \"Malformed Nalus near timestamp \" + dts + \", NaluSize > DataSize!\");\n                  return;\n                }\n                var unitType = v.getUint8(offset + lengthSize) & 0x1F;\n                if (unitType === 5) {\n                  // IDR\n                  keyframe = true;\n                }\n                var data = new Uint8Array(arrayBuffer, dataOffset + offset, lengthSize + naluSize);\n                var unit = {\n                  type: unitType,\n                  data: data\n                };\n                units.push(unit);\n                length += data.byteLength;\n                offset += lengthSize + naluSize;\n              }\n              if (units.length) {\n                var track = this._videoTrack;\n                var avcSample = {\n                  units: units,\n                  length: length,\n                  isKeyframe: keyframe,\n                  dts: dts,\n                  cts: cts,\n                  pts: dts + cts\n                };\n                if (keyframe) {\n                  avcSample.fileposition = tagPosition;\n                }\n                track.samples.push(avcSample);\n                track.length += length;\n              }\n            };\n            return FLVDemuxer;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = FLVDemuxer;\n\n          /***/\n        },\n\n        /***/\"./src/demux/sps-parser.js\":\n        /*!*********************************!*\\\n          !*** ./src/demux/sps-parser.js ***!\n          \\*********************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_236999__) {\n          \"use strict\";\n\n          __nested_webpack_require_236999__.r(__webpack_exports__);\n          /* harmony import */\n          var _exp_golomb_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_236999__( /*! ./exp-golomb.js */\"./src/demux/exp-golomb.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          var SPSParser = /** @class */function () {\n            function SPSParser() {}\n            SPSParser._ebsp2rbsp = function (uint8array) {\n              var src = uint8array;\n              var src_length = src.byteLength;\n              var dst = new Uint8Array(src_length);\n              var dst_idx = 0;\n              for (var i = 0; i < src_length; i++) {\n                if (i >= 2) {\n                  // Unescape: Skip 0x03 after 00 00\n                  if (src[i] === 0x03 && src[i - 1] === 0x00 && src[i - 2] === 0x00) {\n                    continue;\n                  }\n                }\n                dst[dst_idx] = src[i];\n                dst_idx++;\n              }\n              return new Uint8Array(dst.buffer, 0, dst_idx);\n            };\n            SPSParser.parseSPS = function (uint8array) {\n              var rbsp = SPSParser._ebsp2rbsp(uint8array);\n              var gb = new _exp_golomb_js__WEBPACK_IMPORTED_MODULE_0__.default(rbsp);\n              gb.readByte();\n              var profile_idc = gb.readByte(); // profile_idc\n              gb.readByte(); // constraint_set_flags[5] + reserved_zero[3]\n              var level_idc = gb.readByte(); // level_idc\n              gb.readUEG(); // seq_parameter_set_id\n              var profile_string = SPSParser.getProfileString(profile_idc);\n              var level_string = SPSParser.getLevelString(level_idc);\n              var chroma_format_idc = 1;\n              var chroma_format = 420;\n              var chroma_format_table = [0, 420, 422, 444];\n              var bit_depth = 8;\n              if (profile_idc === 100 || profile_idc === 110 || profile_idc === 122 || profile_idc === 244 || profile_idc === 44 || profile_idc === 83 || profile_idc === 86 || profile_idc === 118 || profile_idc === 128 || profile_idc === 138 || profile_idc === 144) {\n                chroma_format_idc = gb.readUEG();\n                if (chroma_format_idc === 3) {\n                  gb.readBits(1); // separate_colour_plane_flag\n                }\n\n                if (chroma_format_idc <= 3) {\n                  chroma_format = chroma_format_table[chroma_format_idc];\n                }\n                bit_depth = gb.readUEG() + 8; // bit_depth_luma_minus8\n                gb.readUEG(); // bit_depth_chroma_minus8\n                gb.readBits(1); // qpprime_y_zero_transform_bypass_flag\n                if (gb.readBool()) {\n                  // seq_scaling_matrix_present_flag\n                  var scaling_list_count = chroma_format_idc !== 3 ? 8 : 12;\n                  for (var i = 0; i < scaling_list_count; i++) {\n                    if (gb.readBool()) {\n                      // seq_scaling_list_present_flag\n                      if (i < 6) {\n                        SPSParser._skipScalingList(gb, 16);\n                      } else {\n                        SPSParser._skipScalingList(gb, 64);\n                      }\n                    }\n                  }\n                }\n              }\n              gb.readUEG(); // log2_max_frame_num_minus4\n              var pic_order_cnt_type = gb.readUEG();\n              if (pic_order_cnt_type === 0) {\n                gb.readUEG(); // log2_max_pic_order_cnt_lsb_minus_4\n              } else if (pic_order_cnt_type === 1) {\n                gb.readBits(1); // delta_pic_order_always_zero_flag\n                gb.readSEG(); // offset_for_non_ref_pic\n                gb.readSEG(); // offset_for_top_to_bottom_field\n                var num_ref_frames_in_pic_order_cnt_cycle = gb.readUEG();\n                for (var i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++) {\n                  gb.readSEG(); // offset_for_ref_frame\n                }\n              }\n\n              var ref_frames = gb.readUEG(); // max_num_ref_frames\n              gb.readBits(1); // gaps_in_frame_num_value_allowed_flag\n              var pic_width_in_mbs_minus1 = gb.readUEG();\n              var pic_height_in_map_units_minus1 = gb.readUEG();\n              var frame_mbs_only_flag = gb.readBits(1);\n              if (frame_mbs_only_flag === 0) {\n                gb.readBits(1); // mb_adaptive_frame_field_flag\n              }\n\n              gb.readBits(1); // direct_8x8_inference_flag\n              var frame_crop_left_offset = 0;\n              var frame_crop_right_offset = 0;\n              var frame_crop_top_offset = 0;\n              var frame_crop_bottom_offset = 0;\n              var frame_cropping_flag = gb.readBool();\n              if (frame_cropping_flag) {\n                frame_crop_left_offset = gb.readUEG();\n                frame_crop_right_offset = gb.readUEG();\n                frame_crop_top_offset = gb.readUEG();\n                frame_crop_bottom_offset = gb.readUEG();\n              }\n              var sar_width = 1,\n                sar_height = 1;\n              var fps = 0,\n                fps_fixed = true,\n                fps_num = 0,\n                fps_den = 0;\n              var vui_parameters_present_flag = gb.readBool();\n              if (vui_parameters_present_flag) {\n                if (gb.readBool()) {\n                  // aspect_ratio_info_present_flag\n                  var aspect_ratio_idc = gb.readByte();\n                  var sar_w_table = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2];\n                  var sar_h_table = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1];\n                  if (aspect_ratio_idc > 0 && aspect_ratio_idc < 16) {\n                    sar_width = sar_w_table[aspect_ratio_idc - 1];\n                    sar_height = sar_h_table[aspect_ratio_idc - 1];\n                  } else if (aspect_ratio_idc === 255) {\n                    sar_width = gb.readByte() << 8 | gb.readByte();\n                    sar_height = gb.readByte() << 8 | gb.readByte();\n                  }\n                }\n                if (gb.readBool()) {\n                  // overscan_info_present_flag\n                  gb.readBool(); // overscan_appropriate_flag\n                }\n\n                if (gb.readBool()) {\n                  // video_signal_type_present_flag\n                  gb.readBits(4); // video_format & video_full_range_flag\n                  if (gb.readBool()) {\n                    // colour_description_present_flag\n                    gb.readBits(24); // colour_primaries & transfer_characteristics & matrix_coefficients\n                  }\n                }\n\n                if (gb.readBool()) {\n                  // chroma_loc_info_present_flag\n                  gb.readUEG(); // chroma_sample_loc_type_top_field\n                  gb.readUEG(); // chroma_sample_loc_type_bottom_field\n                }\n\n                if (gb.readBool()) {\n                  // timing_info_present_flag\n                  var num_units_in_tick = gb.readBits(32);\n                  var time_scale = gb.readBits(32);\n                  fps_fixed = gb.readBool(); // fixed_frame_rate_flag\n                  fps_num = time_scale;\n                  fps_den = num_units_in_tick * 2;\n                  fps = fps_num / fps_den;\n                }\n              }\n              var sarScale = 1;\n              if (sar_width !== 1 || sar_height !== 1) {\n                sarScale = sar_width / sar_height;\n              }\n              var crop_unit_x = 0,\n                crop_unit_y = 0;\n              if (chroma_format_idc === 0) {\n                crop_unit_x = 1;\n                crop_unit_y = 2 - frame_mbs_only_flag;\n              } else {\n                var sub_wc = chroma_format_idc === 3 ? 1 : 2;\n                var sub_hc = chroma_format_idc === 1 ? 2 : 1;\n                crop_unit_x = sub_wc;\n                crop_unit_y = sub_hc * (2 - frame_mbs_only_flag);\n              }\n              var codec_width = (pic_width_in_mbs_minus1 + 1) * 16;\n              var codec_height = (2 - frame_mbs_only_flag) * ((pic_height_in_map_units_minus1 + 1) * 16);\n              codec_width -= (frame_crop_left_offset + frame_crop_right_offset) * crop_unit_x;\n              codec_height -= (frame_crop_top_offset + frame_crop_bottom_offset) * crop_unit_y;\n              var present_width = Math.ceil(codec_width * sarScale);\n              gb.destroy();\n              gb = null;\n              return {\n                profile_string: profile_string,\n                level_string: level_string,\n                bit_depth: bit_depth,\n                ref_frames: ref_frames,\n                chroma_format: chroma_format,\n                chroma_format_string: SPSParser.getChromaFormatString(chroma_format),\n                frame_rate: {\n                  fixed: fps_fixed,\n                  fps: fps,\n                  fps_den: fps_den,\n                  fps_num: fps_num\n                },\n                sar_ratio: {\n                  width: sar_width,\n                  height: sar_height\n                },\n                codec_size: {\n                  width: codec_width,\n                  height: codec_height\n                },\n                present_size: {\n                  width: present_width,\n                  height: codec_height\n                }\n              };\n            };\n            SPSParser._skipScalingList = function (gb, count) {\n              var last_scale = 8,\n                next_scale = 8;\n              var delta_scale = 0;\n              for (var i = 0; i < count; i++) {\n                if (next_scale !== 0) {\n                  delta_scale = gb.readSEG();\n                  next_scale = (last_scale + delta_scale + 256) % 256;\n                }\n                last_scale = next_scale === 0 ? last_scale : next_scale;\n              }\n            };\n            SPSParser.getProfileString = function (profile_idc) {\n              switch (profile_idc) {\n                case 66:\n                  return 'Baseline';\n                case 77:\n                  return 'Main';\n                case 88:\n                  return 'Extended';\n                case 100:\n                  return 'High';\n                case 110:\n                  return 'High10';\n                case 122:\n                  return 'High422';\n                case 244:\n                  return 'High444';\n                default:\n                  return 'Unknown';\n              }\n            };\n            SPSParser.getLevelString = function (level_idc) {\n              return (level_idc / 10).toFixed(1);\n            };\n            SPSParser.getChromaFormatString = function (chroma) {\n              switch (chroma) {\n                case 420:\n                  return '4:2:0';\n                case 422:\n                  return '4:2:2';\n                case 444:\n                  return '4:4:4';\n                default:\n                  return 'Unknown';\n              }\n            };\n            return SPSParser;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = SPSParser;\n\n          /***/\n        },\n\n        /***/\"./src/flv.js\":\n        /*!********************!*\\\n          !*** ./src/flv.js ***!\n          \\********************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_249121__) {\n          \"use strict\";\n\n          __nested_webpack_require_249121__.r(__webpack_exports__);\n          /* harmony import */\n          var _utils_polyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_249121__( /*! ./utils/polyfill.js */\"./src/utils/polyfill.js\");\n          /* harmony import */\n          var _core_features_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_249121__( /*! ./core/features.js */\"./src/core/features.js\");\n          /* harmony import */\n          var _io_loader_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_249121__( /*! ./io/loader.js */\"./src/io/loader.js\");\n          /* harmony import */\n          var _player_flv_player_js__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_249121__( /*! ./player/flv-player.js */\"./src/player/flv-player.js\");\n          /* harmony import */\n          var _player_native_player_js__WEBPACK_IMPORTED_MODULE_4__ = __nested_webpack_require_249121__( /*! ./player/native-player.js */\"./src/player/native-player.js\");\n          /* harmony import */\n          var _player_player_events_js__WEBPACK_IMPORTED_MODULE_5__ = __nested_webpack_require_249121__( /*! ./player/player-events.js */\"./src/player/player-events.js\");\n          /* harmony import */\n          var _player_player_errors_js__WEBPACK_IMPORTED_MODULE_6__ = __nested_webpack_require_249121__( /*! ./player/player-errors.js */\"./src/player/player-errors.js\");\n          /* harmony import */\n          var _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_7__ = __nested_webpack_require_249121__( /*! ./utils/logging-control.js */\"./src/utils/logging-control.js\");\n          /* harmony import */\n          var _utils_exception_js__WEBPACK_IMPORTED_MODULE_8__ = __nested_webpack_require_249121__( /*! ./utils/exception.js */\"./src/utils/exception.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          // here are all the interfaces\n          // install polyfills\n          _utils_polyfill_js__WEBPACK_IMPORTED_MODULE_0__.default.install();\n          // factory method\n          function createPlayer(mediaDataSource, optionalConfig) {\n            var mds = mediaDataSource;\n            if (mds == null || typeof mds !== 'object') {\n              throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_8__.InvalidArgumentException('MediaDataSource must be an javascript object!');\n            }\n            if (!mds.hasOwnProperty('type')) {\n              throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_8__.InvalidArgumentException('MediaDataSource must has type field to indicate video file type!');\n            }\n            switch (mds.type) {\n              case 'flv':\n                return new _player_flv_player_js__WEBPACK_IMPORTED_MODULE_3__.default(mds, optionalConfig);\n              default:\n                return new _player_native_player_js__WEBPACK_IMPORTED_MODULE_4__.default(mds, optionalConfig);\n            }\n          }\n          // feature detection\n          function isSupported() {\n            return _core_features_js__WEBPACK_IMPORTED_MODULE_1__.default.supportMSEH264Playback();\n          }\n          function getFeatureList() {\n            return _core_features_js__WEBPACK_IMPORTED_MODULE_1__.default.getFeatureList();\n          }\n          // interfaces\n          var flvjs = {};\n          flvjs.createPlayer = createPlayer;\n          flvjs.isSupported = isSupported;\n          flvjs.getFeatureList = getFeatureList;\n          flvjs.BaseLoader = _io_loader_js__WEBPACK_IMPORTED_MODULE_2__.BaseLoader;\n          flvjs.LoaderStatus = _io_loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus;\n          flvjs.LoaderErrors = _io_loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors;\n          flvjs.Events = _player_player_events_js__WEBPACK_IMPORTED_MODULE_5__.default;\n          flvjs.ErrorTypes = _player_player_errors_js__WEBPACK_IMPORTED_MODULE_6__.ErrorTypes;\n          flvjs.ErrorDetails = _player_player_errors_js__WEBPACK_IMPORTED_MODULE_6__.ErrorDetails;\n          flvjs.FlvPlayer = _player_flv_player_js__WEBPACK_IMPORTED_MODULE_3__.default;\n          flvjs.NativePlayer = _player_native_player_js__WEBPACK_IMPORTED_MODULE_4__.default;\n          flvjs.LoggingControl = _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_7__.default;\n          Object.defineProperty(flvjs, 'version', {\n            enumerable: true,\n            get: function () {\n              // replace by webpack.DefinePlugin\n              return \"1.6.2\";\n            }\n          });\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = flvjs;\n\n          /***/\n        },\n\n        /***/\"./src/index.js\":\n        /*!**********************!*\\\n          !*** ./src/index.js ***!\n          \\**********************/\n        /***/\n        function (module, __unused_webpack_exports, __nested_webpack_require_254576__) {\n          // entry/index file\n          // make it compatible with browserify's umd wrapper\n          module.exports = __nested_webpack_require_254576__( /*! ./flv.js */\"./src/flv.js\").default;\n\n          /***/\n        },\n\n        /***/\"./src/io/fetch-stream-loader.js\":\n        /*!***************************************!*\\\n          !*** ./src/io/fetch-stream-loader.js ***!\n          \\***************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_255092__) {\n          \"use strict\";\n\n          __nested_webpack_require_255092__.r(__webpack_exports__);\n          /* harmony import */\n          var _utils_browser_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_255092__( /*! ../utils/browser.js */\"./src/utils/browser.js\");\n          /* harmony import */\n          var _loader_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_255092__( /*! ./loader.js */\"./src/io/loader.js\");\n          /* harmony import */\n          var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_255092__( /*! ../utils/exception.js */\"./src/utils/exception.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var __extends =  false || function () {\n            var extendStatics = function (d, b) {\n              extendStatics = Object.setPrototypeOf || {\n                __proto__: []\n              } instanceof Array && function (d, b) {\n                d.__proto__ = b;\n              } || function (d, b) {\n                for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n              };\n              return extendStatics(d, b);\n            };\n            return function (d, b) {\n              if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n              extendStatics(d, b);\n              function __() {\n                this.constructor = d;\n              }\n              d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n            };\n          }();\n\n          /* fetch + stream IO loader. Currently working on chrome 43+.\n           * fetch provides a better alternative http API to XMLHttpRequest\n           *\n           * fetch spec   https://fetch.spec.whatwg.org/\n           * stream spec  https://streams.spec.whatwg.org/\n           */\n          var FetchStreamLoader = /** @class */function (_super) {\n            __extends(FetchStreamLoader, _super);\n            function FetchStreamLoader(seekHandler, config) {\n              var _this = _super.call(this, 'fetch-stream-loader') || this;\n              _this.TAG = 'FetchStreamLoader';\n              _this._seekHandler = seekHandler;\n              _this._config = config;\n              _this._needStash = true;\n              _this._requestAbort = false;\n              _this._contentLength = null;\n              _this._receivedLength = 0;\n              return _this;\n            }\n            FetchStreamLoader.isSupported = function () {\n              try {\n                // fetch + stream is broken on Microsoft Edge. Disable before build 15048.\n                // see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8196907/\n                // Fixed in Jan 10, 2017. Build 15048+ removed from blacklist.\n                var isWorkWellEdge = _utils_browser_js__WEBPACK_IMPORTED_MODULE_0__.default.msedge && _utils_browser_js__WEBPACK_IMPORTED_MODULE_0__.default.version.minor >= 15048;\n                var browserNotBlacklisted = _utils_browser_js__WEBPACK_IMPORTED_MODULE_0__.default.msedge ? isWorkWellEdge : true;\n                return self.fetch && self.ReadableStream && browserNotBlacklisted;\n              } catch (e) {\n                return false;\n              }\n            };\n            FetchStreamLoader.prototype.destroy = function () {\n              if (this.isWorking()) {\n                this.abort();\n              }\n              _super.prototype.destroy.call(this);\n            };\n            FetchStreamLoader.prototype.open = function (dataSource, range) {\n              var _this = this;\n              this._dataSource = dataSource;\n              this._range = range;\n              var sourceURL = dataSource.url;\n              if (this._config.reuseRedirectedURL && dataSource.redirectedURL != undefined) {\n                sourceURL = dataSource.redirectedURL;\n              }\n              var seekConfig = this._seekHandler.getConfig(sourceURL, range);\n              var headers = new self.Headers();\n              if (typeof seekConfig.headers === 'object') {\n                var configHeaders = seekConfig.headers;\n                for (var key in configHeaders) {\n                  if (configHeaders.hasOwnProperty(key)) {\n                    headers.append(key, configHeaders[key]);\n                  }\n                }\n              }\n              var params = {\n                method: 'GET',\n                headers: headers,\n                mode: 'cors',\n                cache: 'default',\n                // The default policy of Fetch API in the whatwg standard\n                // Safari incorrectly indicates 'no-referrer' as default policy, fuck it\n                referrerPolicy: 'no-referrer-when-downgrade'\n              };\n              // add additional headers\n              if (typeof this._config.headers === 'object') {\n                for (var key in this._config.headers) {\n                  headers.append(key, this._config.headers[key]);\n                }\n              }\n              // cors is enabled by default\n              if (dataSource.cors === false) {\n                // no-cors means 'disregard cors policy', which can only be used in ServiceWorker\n                params.mode = 'same-origin';\n              }\n              // withCredentials is disabled by default\n              if (dataSource.withCredentials) {\n                params.credentials = 'include';\n              }\n              // referrerPolicy from config\n              if (dataSource.referrerPolicy) {\n                params.referrerPolicy = dataSource.referrerPolicy;\n              }\n              // add abort controller, by wmlgl 2019-5-10 12:21:27\n              if (self.AbortController) {\n                this._abortController = new self.AbortController();\n                params.signal = this._abortController.signal;\n              }\n              this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kConnecting;\n              self.fetch(seekConfig.url, params).then(function (res) {\n                if (_this._requestAbort) {\n                  _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kIdle;\n                  res.body.cancel();\n                  return;\n                }\n                if (res.ok && res.status >= 200 && res.status <= 299) {\n                  if (res.url !== seekConfig.url) {\n                    if (_this._onURLRedirect) {\n                      var redirectedURL = _this._seekHandler.removeURLParameters(res.url);\n                      _this._onURLRedirect(redirectedURL);\n                    }\n                  }\n                  var lengthHeader = res.headers.get('Content-Length');\n                  if (lengthHeader != null) {\n                    _this._contentLength = parseInt(lengthHeader);\n                    if (_this._contentLength !== 0) {\n                      if (_this._onContentLengthKnown) {\n                        _this._onContentLengthKnown(_this._contentLength);\n                      }\n                    }\n                  }\n                  return _this._pump.call(_this, res.body.getReader());\n                } else {\n                  _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError;\n                  if (_this._onError) {\n                    _this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.HTTP_STATUS_CODE_INVALID, {\n                      code: res.status,\n                      msg: res.statusText\n                    });\n                  } else {\n                    throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.RuntimeException('FetchStreamLoader: Http code invalid, ' + res.status + ' ' + res.statusText);\n                  }\n                }\n              }).catch(function (e) {\n                if (_this._abortController && _this._abortController.signal.aborted) {\n                  return;\n                }\n                _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError;\n                if (_this._onError) {\n                  _this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.EXCEPTION, {\n                    code: -1,\n                    msg: e.message\n                  });\n                } else {\n                  throw e;\n                }\n              });\n            };\n            FetchStreamLoader.prototype.abort = function () {\n              this._requestAbort = true;\n              if (this._status !== _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kBuffering || !_utils_browser_js__WEBPACK_IMPORTED_MODULE_0__.default.chrome) {\n                // Chrome may throw Exception-like things here, avoid using if is buffering\n                if (this._abortController) {\n                  try {\n                    this._abortController.abort();\n                  } catch (e) {}\n                }\n              }\n            };\n            FetchStreamLoader.prototype._pump = function (reader) {\n              var _this = this;\n              return reader.read().then(function (result) {\n                if (result.done) {\n                  // First check received length\n                  if (_this._contentLength !== null && _this._receivedLength < _this._contentLength) {\n                    // Report Early-EOF\n                    _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError;\n                    var type = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.EARLY_EOF;\n                    var info = {\n                      code: -1,\n                      msg: 'Fetch stream meet Early-EOF'\n                    };\n                    if (_this._onError) {\n                      _this._onError(type, info);\n                    } else {\n                      throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.RuntimeException(info.msg);\n                    }\n                  } else {\n                    // OK. Download complete\n                    _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kComplete;\n                    if (_this._onComplete) {\n                      _this._onComplete(_this._range.from, _this._range.from + _this._receivedLength - 1);\n                    }\n                  }\n                } else {\n                  if (_this._abortController && _this._abortController.signal.aborted) {\n                    _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kComplete;\n                    return;\n                  } else if (_this._requestAbort === true) {\n                    _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kComplete;\n                    return reader.cancel();\n                  }\n                  _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kBuffering;\n                  var chunk = result.value.buffer;\n                  var byteStart = _this._range.from + _this._receivedLength;\n                  _this._receivedLength += chunk.byteLength;\n                  if (_this._onDataArrival) {\n                    _this._onDataArrival(chunk, byteStart, _this._receivedLength);\n                  }\n                  _this._pump(reader);\n                }\n              }).catch(function (e) {\n                if (_this._abortController && _this._abortController.signal.aborted) {\n                  _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kComplete;\n                  return;\n                }\n                if (e.code === 11 && _utils_browser_js__WEBPACK_IMPORTED_MODULE_0__.default.msedge) {\n                  // InvalidStateError on Microsoft Edge\n                  // Workaround: Edge may throw InvalidStateError after ReadableStreamReader.cancel() call\n                  // Ignore the unknown exception.\n                  // Related issue: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11265202/\n                  return;\n                }\n                _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError;\n                var type = 0;\n                var info = null;\n                if ((e.code === 19 || e.message === 'network error') && (\n                // NETWORK_ERR\n                _this._contentLength === null || _this._contentLength !== null && _this._receivedLength < _this._contentLength)) {\n                  type = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.EARLY_EOF;\n                  info = {\n                    code: e.code,\n                    msg: 'Fetch stream meet Early-EOF'\n                  };\n                } else {\n                  type = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.EXCEPTION;\n                  info = {\n                    code: e.code,\n                    msg: e.message\n                  };\n                }\n                if (_this._onError) {\n                  _this._onError(type, info);\n                } else {\n                  throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.RuntimeException(info.msg);\n                }\n              });\n            };\n            return FetchStreamLoader;\n          }(_loader_js__WEBPACK_IMPORTED_MODULE_1__.BaseLoader);\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = FetchStreamLoader;\n\n          /***/\n        },\n\n        /***/\"./src/io/io-controller.js\":\n        /*!*********************************!*\\\n          !*** ./src/io/io-controller.js ***!\n          \\*********************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_269458__) {\n          \"use strict\";\n\n          __nested_webpack_require_269458__.r(__webpack_exports__);\n          /* harmony import */\n          var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_269458__( /*! ../utils/logger.js */\"./src/utils/logger.js\");\n          /* harmony import */\n          var _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_269458__( /*! ./speed-sampler.js */\"./src/io/speed-sampler.js\");\n          /* harmony import */\n          var _loader_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_269458__( /*! ./loader.js */\"./src/io/loader.js\");\n          /* harmony import */\n          var _fetch_stream_loader_js__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_269458__( /*! ./fetch-stream-loader.js */\"./src/io/fetch-stream-loader.js\");\n          /* harmony import */\n          var _xhr_moz_chunked_loader_js__WEBPACK_IMPORTED_MODULE_4__ = __nested_webpack_require_269458__( /*! ./xhr-moz-chunked-loader.js */\"./src/io/xhr-moz-chunked-loader.js\");\n          /* harmony import */\n          var _xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_5__ = __nested_webpack_require_269458__( /*! ./xhr-range-loader.js */\"./src/io/xhr-range-loader.js\");\n          /* harmony import */\n          var _websocket_loader_js__WEBPACK_IMPORTED_MODULE_6__ = __nested_webpack_require_269458__( /*! ./websocket-loader.js */\"./src/io/websocket-loader.js\");\n          /* harmony import */\n          var _range_seek_handler_js__WEBPACK_IMPORTED_MODULE_7__ = __nested_webpack_require_269458__( /*! ./range-seek-handler.js */\"./src/io/range-seek-handler.js\");\n          /* harmony import */\n          var _param_seek_handler_js__WEBPACK_IMPORTED_MODULE_8__ = __nested_webpack_require_269458__( /*! ./param-seek-handler.js */\"./src/io/param-seek-handler.js\");\n          /* harmony import */\n          var _utils_exception_js__WEBPACK_IMPORTED_MODULE_9__ = __nested_webpack_require_269458__( /*! ../utils/exception.js */\"./src/utils/exception.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          /**\n           * DataSource: {\n           *     url: string,\n           *     filesize: number,\n           *     cors: boolean,\n           *     withCredentials: boolean\n           * }\n           *\n           */\n          // Manage IO Loaders\n          var IOController = /** @class */function () {\n            function IOController(dataSource, config, extraData) {\n              this.TAG = 'IOController';\n              this._config = config;\n              this._extraData = extraData;\n              this._stashInitialSize = 1024 * 384; // default initial size: 384KB\n              if (config.stashInitialSize != undefined && config.stashInitialSize > 0) {\n                // apply from config\n                this._stashInitialSize = config.stashInitialSize;\n              }\n              this._stashUsed = 0;\n              this._stashSize = this._stashInitialSize;\n              this._bufferSize = 1024 * 1024 * 3; // initial size: 3MB\n              this._stashBuffer = new ArrayBuffer(this._bufferSize);\n              this._stashByteStart = 0;\n              this._enableStash = true;\n              if (config.enableStashBuffer === false) {\n                this._enableStash = false;\n              }\n              this._loader = null;\n              this._loaderClass = null;\n              this._seekHandler = null;\n              this._dataSource = dataSource;\n              this._isWebSocketURL = /wss?:\\/\\/(.+?)/.test(dataSource.url);\n              this._refTotalLength = dataSource.filesize ? dataSource.filesize : null;\n              this._totalLength = this._refTotalLength;\n              this._fullRequestFlag = false;\n              this._currentRange = null;\n              this._redirectedURL = null;\n              this._speedNormalized = 0;\n              this._speedSampler = new _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__.default();\n              this._speedNormalizeList = [64, 128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096];\n              this._isEarlyEofReconnecting = false;\n              this._paused = false;\n              this._resumeFrom = 0;\n              this._onDataArrival = null;\n              this._onSeeked = null;\n              this._onError = null;\n              this._onComplete = null;\n              this._onRedirect = null;\n              this._onRecoveredEarlyEof = null;\n              this._selectSeekHandler();\n              this._selectLoader();\n              this._createLoader();\n            }\n            IOController.prototype.destroy = function () {\n              if (this._loader.isWorking()) {\n                this._loader.abort();\n              }\n              this._loader.destroy();\n              this._loader = null;\n              this._loaderClass = null;\n              this._dataSource = null;\n              this._stashBuffer = null;\n              this._stashUsed = this._stashSize = this._bufferSize = this._stashByteStart = 0;\n              this._currentRange = null;\n              this._speedSampler = null;\n              this._isEarlyEofReconnecting = false;\n              this._onDataArrival = null;\n              this._onSeeked = null;\n              this._onError = null;\n              this._onComplete = null;\n              this._onRedirect = null;\n              this._onRecoveredEarlyEof = null;\n              this._extraData = null;\n            };\n            IOController.prototype.isWorking = function () {\n              return this._loader && this._loader.isWorking() && !this._paused;\n            };\n            IOController.prototype.isPaused = function () {\n              return this._paused;\n            };\n            Object.defineProperty(IOController.prototype, \"status\", {\n              get: function () {\n                return this._loader.status;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(IOController.prototype, \"extraData\", {\n              get: function () {\n                return this._extraData;\n              },\n              set: function (data) {\n                this._extraData = data;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(IOController.prototype, \"onDataArrival\", {\n              // prototype: function onDataArrival(chunks: ArrayBuffer, byteStart: number): number\n              get: function () {\n                return this._onDataArrival;\n              },\n              set: function (callback) {\n                this._onDataArrival = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(IOController.prototype, \"onSeeked\", {\n              get: function () {\n                return this._onSeeked;\n              },\n              set: function (callback) {\n                this._onSeeked = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(IOController.prototype, \"onError\", {\n              // prototype: function onError(type: number, info: {code: number, msg: string}): void\n              get: function () {\n                return this._onError;\n              },\n              set: function (callback) {\n                this._onError = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(IOController.prototype, \"onComplete\", {\n              get: function () {\n                return this._onComplete;\n              },\n              set: function (callback) {\n                this._onComplete = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(IOController.prototype, \"onRedirect\", {\n              get: function () {\n                return this._onRedirect;\n              },\n              set: function (callback) {\n                this._onRedirect = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(IOController.prototype, \"onRecoveredEarlyEof\", {\n              get: function () {\n                return this._onRecoveredEarlyEof;\n              },\n              set: function (callback) {\n                this._onRecoveredEarlyEof = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(IOController.prototype, \"currentURL\", {\n              get: function () {\n                return this._dataSource.url;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(IOController.prototype, \"hasRedirect\", {\n              get: function () {\n                return this._redirectedURL != null || this._dataSource.redirectedURL != undefined;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(IOController.prototype, \"currentRedirectedURL\", {\n              get: function () {\n                return this._redirectedURL || this._dataSource.redirectedURL;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(IOController.prototype, \"currentSpeed\", {\n              // in KB/s\n              get: function () {\n                if (this._loaderClass === _xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_5__.default) {\n                  // SpeedSampler is inaccuracy if loader is RangeLoader\n                  return this._loader.currentSpeed;\n                }\n                return this._speedSampler.lastSecondKBps;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(IOController.prototype, \"loaderType\", {\n              get: function () {\n                return this._loader.type;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            IOController.prototype._selectSeekHandler = function () {\n              var config = this._config;\n              if (config.seekType === 'range') {\n                this._seekHandler = new _range_seek_handler_js__WEBPACK_IMPORTED_MODULE_7__.default(this._config.rangeLoadZeroStart);\n              } else if (config.seekType === 'param') {\n                var paramStart = config.seekParamStart || 'bstart';\n                var paramEnd = config.seekParamEnd || 'bend';\n                this._seekHandler = new _param_seek_handler_js__WEBPACK_IMPORTED_MODULE_8__.default(paramStart, paramEnd);\n              } else if (config.seekType === 'custom') {\n                if (typeof config.customSeekHandler !== 'function') {\n                  throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_9__.InvalidArgumentException('Custom seekType specified in config but invalid customSeekHandler!');\n                }\n                this._seekHandler = new config.customSeekHandler();\n              } else {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_9__.InvalidArgumentException(\"Invalid seekType in config: \" + config.seekType);\n              }\n            };\n            IOController.prototype._selectLoader = function () {\n              if (this._config.customLoader != null) {\n                this._loaderClass = this._config.customLoader;\n              } else if (this._isWebSocketURL) {\n                this._loaderClass = _websocket_loader_js__WEBPACK_IMPORTED_MODULE_6__.default;\n              } else if (_fetch_stream_loader_js__WEBPACK_IMPORTED_MODULE_3__.default.isSupported()) {\n                this._loaderClass = _fetch_stream_loader_js__WEBPACK_IMPORTED_MODULE_3__.default;\n              } else if (_xhr_moz_chunked_loader_js__WEBPACK_IMPORTED_MODULE_4__.default.isSupported()) {\n                this._loaderClass = _xhr_moz_chunked_loader_js__WEBPACK_IMPORTED_MODULE_4__.default;\n              } else if (_xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_5__.default.isSupported()) {\n                this._loaderClass = _xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_5__.default;\n              } else {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_9__.RuntimeException('Your browser doesn\\'t support xhr with arraybuffer responseType!');\n              }\n            };\n            IOController.prototype._createLoader = function () {\n              this._loader = new this._loaderClass(this._seekHandler, this._config);\n              if (this._loader.needStashBuffer === false) {\n                this._enableStash = false;\n              }\n              this._loader.onContentLengthKnown = this._onContentLengthKnown.bind(this);\n              this._loader.onURLRedirect = this._onURLRedirect.bind(this);\n              this._loader.onDataArrival = this._onLoaderChunkArrival.bind(this);\n              this._loader.onComplete = this._onLoaderComplete.bind(this);\n              this._loader.onError = this._onLoaderError.bind(this);\n            };\n            IOController.prototype.open = function (optionalFrom) {\n              this._currentRange = {\n                from: 0,\n                to: -1\n              };\n              if (optionalFrom) {\n                this._currentRange.from = optionalFrom;\n              }\n              this._speedSampler.reset();\n              if (!optionalFrom) {\n                this._fullRequestFlag = true;\n              }\n              this._loader.open(this._dataSource, Object.assign({}, this._currentRange));\n            };\n            IOController.prototype.abort = function () {\n              this._loader.abort();\n              if (this._paused) {\n                this._paused = false;\n                this._resumeFrom = 0;\n              }\n            };\n            IOController.prototype.pause = function () {\n              if (this.isWorking()) {\n                this._loader.abort();\n                if (this._stashUsed !== 0) {\n                  this._resumeFrom = this._stashByteStart;\n                  this._currentRange.to = this._stashByteStart - 1;\n                } else {\n                  this._resumeFrom = this._currentRange.to + 1;\n                }\n                this._stashUsed = 0;\n                this._stashByteStart = 0;\n                this._paused = true;\n              }\n            };\n            IOController.prototype.resume = function () {\n              if (this._paused) {\n                this._paused = false;\n                var bytes = this._resumeFrom;\n                this._resumeFrom = 0;\n                this._internalSeek(bytes, true);\n              }\n            };\n            IOController.prototype.seek = function (bytes) {\n              this._paused = false;\n              this._stashUsed = 0;\n              this._stashByteStart = 0;\n              this._internalSeek(bytes, true);\n            };\n            /**\n             * When seeking request is from media seeking, unconsumed stash data should be dropped\n             * However, stash data shouldn't be dropped if seeking requested from http reconnection\n             *\n             * @dropUnconsumed: Ignore and discard all unconsumed data in stash buffer\n             */\n            IOController.prototype._internalSeek = function (bytes, dropUnconsumed) {\n              if (this._loader.isWorking()) {\n                this._loader.abort();\n              }\n              // dispatch & flush stash buffer before seek\n              this._flushStashBuffer(dropUnconsumed);\n              this._loader.destroy();\n              this._loader = null;\n              var requestRange = {\n                from: bytes,\n                to: -1\n              };\n              this._currentRange = {\n                from: requestRange.from,\n                to: -1\n              };\n              this._speedSampler.reset();\n              this._stashSize = this._stashInitialSize;\n              this._createLoader();\n              this._loader.open(this._dataSource, requestRange);\n              if (this._onSeeked) {\n                this._onSeeked();\n              }\n            };\n            IOController.prototype.updateUrl = function (url) {\n              if (!url || typeof url !== 'string' || url.length === 0) {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_9__.InvalidArgumentException('Url must be a non-empty string!');\n              }\n              this._dataSource.url = url;\n              // TODO: replace with new url\n            };\n\n            IOController.prototype._expandBuffer = function (expectedBytes) {\n              var bufferNewSize = this._stashSize;\n              while (bufferNewSize + 1024 * 1024 * 1 < expectedBytes) {\n                bufferNewSize *= 2;\n              }\n              bufferNewSize += 1024 * 1024 * 1; // bufferSize = stashSize + 1MB\n              if (bufferNewSize === this._bufferSize) {\n                return;\n              }\n              var newBuffer = new ArrayBuffer(bufferNewSize);\n              if (this._stashUsed > 0) {\n                // copy existing data into new buffer\n                var stashOldArray = new Uint8Array(this._stashBuffer, 0, this._stashUsed);\n                var stashNewArray = new Uint8Array(newBuffer, 0, bufferNewSize);\n                stashNewArray.set(stashOldArray, 0);\n              }\n              this._stashBuffer = newBuffer;\n              this._bufferSize = bufferNewSize;\n            };\n            IOController.prototype._normalizeSpeed = function (input) {\n              var list = this._speedNormalizeList;\n              var last = list.length - 1;\n              var mid = 0;\n              var lbound = 0;\n              var ubound = last;\n              if (input < list[0]) {\n                return list[0];\n              }\n              // binary search\n              while (lbound <= ubound) {\n                mid = lbound + Math.floor((ubound - lbound) / 2);\n                if (mid === last || input >= list[mid] && input < list[mid + 1]) {\n                  return list[mid];\n                } else if (list[mid] < input) {\n                  lbound = mid + 1;\n                } else {\n                  ubound = mid - 1;\n                }\n              }\n            };\n            IOController.prototype._adjustStashSize = function (normalized) {\n              var stashSizeKB = 0;\n              if (this._config.isLive) {\n                // live stream: always use single normalized speed for size of stashSizeKB\n                stashSizeKB = normalized;\n              } else {\n                if (normalized < 512) {\n                  stashSizeKB = normalized;\n                } else if (normalized >= 512 && normalized <= 1024) {\n                  stashSizeKB = Math.floor(normalized * 1.5);\n                } else {\n                  stashSizeKB = normalized * 2;\n                }\n              }\n              if (stashSizeKB > 8192) {\n                stashSizeKB = 8192;\n              }\n              var bufferSize = stashSizeKB * 1024 + 1024 * 1024 * 1; // stashSize + 1MB\n              if (this._bufferSize < bufferSize) {\n                this._expandBuffer(bufferSize);\n              }\n              this._stashSize = stashSizeKB * 1024;\n            };\n            IOController.prototype._dispatchChunks = function (chunks, byteStart) {\n              this._currentRange.to = byteStart + chunks.byteLength - 1;\n              return this._onDataArrival(chunks, byteStart);\n            };\n            IOController.prototype._onURLRedirect = function (redirectedURL) {\n              this._redirectedURL = redirectedURL;\n              if (this._onRedirect) {\n                this._onRedirect(redirectedURL);\n              }\n            };\n            IOController.prototype._onContentLengthKnown = function (contentLength) {\n              if (contentLength && this._fullRequestFlag) {\n                this._totalLength = contentLength;\n                this._fullRequestFlag = false;\n              }\n            };\n            IOController.prototype._onLoaderChunkArrival = function (chunk, byteStart, receivedLength) {\n              if (!this._onDataArrival) {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_9__.IllegalStateException('IOController: No existing consumer (onDataArrival) callback!');\n              }\n              if (this._paused) {\n                return;\n              }\n              if (this._isEarlyEofReconnecting) {\n                // Auto-reconnect for EarlyEof succeed, notify to upper-layer by callback\n                this._isEarlyEofReconnecting = false;\n                if (this._onRecoveredEarlyEof) {\n                  this._onRecoveredEarlyEof();\n                }\n              }\n              this._speedSampler.addBytes(chunk.byteLength);\n              // adjust stash buffer size according to network speed dynamically\n              var KBps = this._speedSampler.lastSecondKBps;\n              if (KBps !== 0) {\n                var normalized = this._normalizeSpeed(KBps);\n                if (this._speedNormalized !== normalized) {\n                  this._speedNormalized = normalized;\n                  this._adjustStashSize(normalized);\n                }\n              }\n              if (!this._enableStash) {\n                // disable stash\n                if (this._stashUsed === 0) {\n                  // dispatch chunk directly to consumer;\n                  // check ret value (consumed bytes) and stash unconsumed to stashBuffer\n                  var consumed = this._dispatchChunks(chunk, byteStart);\n                  if (consumed < chunk.byteLength) {\n                    // unconsumed data remain.\n                    var remain = chunk.byteLength - consumed;\n                    if (remain > this._bufferSize) {\n                      this._expandBuffer(remain);\n                    }\n                    var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n                    stashArray.set(new Uint8Array(chunk, consumed), 0);\n                    this._stashUsed += remain;\n                    this._stashByteStart = byteStart + consumed;\n                  }\n                } else {\n                  // else: Merge chunk into stashBuffer, and dispatch stashBuffer to consumer.\n                  if (this._stashUsed + chunk.byteLength > this._bufferSize) {\n                    this._expandBuffer(this._stashUsed + chunk.byteLength);\n                  }\n                  var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n                  stashArray.set(new Uint8Array(chunk), this._stashUsed);\n                  this._stashUsed += chunk.byteLength;\n                  var consumed = this._dispatchChunks(this._stashBuffer.slice(0, this._stashUsed), this._stashByteStart);\n                  if (consumed < this._stashUsed && consumed > 0) {\n                    // unconsumed data remain\n                    var remainArray = new Uint8Array(this._stashBuffer, consumed);\n                    stashArray.set(remainArray, 0);\n                  }\n                  this._stashUsed -= consumed;\n                  this._stashByteStart += consumed;\n                }\n              } else {\n                // enable stash\n                if (this._stashUsed === 0 && this._stashByteStart === 0) {\n                  // seeked? or init chunk?\n                  // This is the first chunk after seek action\n                  this._stashByteStart = byteStart;\n                }\n                if (this._stashUsed + chunk.byteLength <= this._stashSize) {\n                  // just stash\n                  var stashArray = new Uint8Array(this._stashBuffer, 0, this._stashSize);\n                  stashArray.set(new Uint8Array(chunk), this._stashUsed);\n                  this._stashUsed += chunk.byteLength;\n                } else {\n                  // stashUsed + chunkSize > stashSize, size limit exceeded\n                  var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n                  if (this._stashUsed > 0) {\n                    // There're stash datas in buffer\n                    // dispatch the whole stashBuffer, and stash remain data\n                    // then append chunk to stashBuffer (stash)\n                    var buffer = this._stashBuffer.slice(0, this._stashUsed);\n                    var consumed = this._dispatchChunks(buffer, this._stashByteStart);\n                    if (consumed < buffer.byteLength) {\n                      if (consumed > 0) {\n                        var remainArray = new Uint8Array(buffer, consumed);\n                        stashArray.set(remainArray, 0);\n                        this._stashUsed = remainArray.byteLength;\n                        this._stashByteStart += consumed;\n                      }\n                    } else {\n                      this._stashUsed = 0;\n                      this._stashByteStart += consumed;\n                    }\n                    if (this._stashUsed + chunk.byteLength > this._bufferSize) {\n                      this._expandBuffer(this._stashUsed + chunk.byteLength);\n                      stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n                    }\n                    stashArray.set(new Uint8Array(chunk), this._stashUsed);\n                    this._stashUsed += chunk.byteLength;\n                  } else {\n                    // stash buffer empty, but chunkSize > stashSize (oh, holy shit)\n                    // dispatch chunk directly and stash remain data\n                    var consumed = this._dispatchChunks(chunk, byteStart);\n                    if (consumed < chunk.byteLength) {\n                      var remain = chunk.byteLength - consumed;\n                      if (remain > this._bufferSize) {\n                        this._expandBuffer(remain);\n                        stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n                      }\n                      stashArray.set(new Uint8Array(chunk, consumed), 0);\n                      this._stashUsed += remain;\n                      this._stashByteStart = byteStart + consumed;\n                    }\n                  }\n                }\n              }\n            };\n            IOController.prototype._flushStashBuffer = function (dropUnconsumed) {\n              if (this._stashUsed > 0) {\n                var buffer = this._stashBuffer.slice(0, this._stashUsed);\n                var consumed = this._dispatchChunks(buffer, this._stashByteStart);\n                var remain = buffer.byteLength - consumed;\n                if (consumed < buffer.byteLength) {\n                  if (dropUnconsumed) {\n                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, remain + \" bytes unconsumed data remain when flush buffer, dropped\");\n                  } else {\n                    if (consumed > 0) {\n                      var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);\n                      var remainArray = new Uint8Array(buffer, consumed);\n                      stashArray.set(remainArray, 0);\n                      this._stashUsed = remainArray.byteLength;\n                      this._stashByteStart += consumed;\n                    }\n                    return 0;\n                  }\n                }\n                this._stashUsed = 0;\n                this._stashByteStart = 0;\n                return remain;\n              }\n              return 0;\n            };\n            IOController.prototype._onLoaderComplete = function (from, to) {\n              // Force-flush stash buffer, and drop unconsumed data\n              this._flushStashBuffer(true);\n              if (this._onComplete) {\n                this._onComplete(this._extraData);\n              }\n            };\n            IOController.prototype._onLoaderError = function (type, data) {\n              _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.e(this.TAG, \"Loader error, code = \" + data.code + \", msg = \" + data.msg);\n              this._flushStashBuffer(false);\n              if (this._isEarlyEofReconnecting) {\n                // Auto-reconnect for EarlyEof failed, throw UnrecoverableEarlyEof error to upper-layer\n                this._isEarlyEofReconnecting = false;\n                type = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.UNRECOVERABLE_EARLY_EOF;\n              }\n              switch (type) {\n                case _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.EARLY_EOF:\n                  {\n                    if (!this._config.isLive) {\n                      // Do internal http reconnect if not live stream\n                      if (this._totalLength) {\n                        var nextFrom = this._currentRange.to + 1;\n                        if (nextFrom < this._totalLength) {\n                          _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Connection lost, trying reconnect...');\n                          this._isEarlyEofReconnecting = true;\n                          this._internalSeek(nextFrom, false);\n                        }\n                        return;\n                      }\n                      // else: We don't know totalLength, throw UnrecoverableEarlyEof\n                    }\n                    // live stream: throw UnrecoverableEarlyEof error to upper-layer\n                    type = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.UNRECOVERABLE_EARLY_EOF;\n                    break;\n                  }\n                case _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.UNRECOVERABLE_EARLY_EOF:\n                case _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.CONNECTING_TIMEOUT:\n                case _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.HTTP_STATUS_CODE_INVALID:\n                case _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.EXCEPTION:\n                  break;\n              }\n              if (this._onError) {\n                this._onError(type, data);\n              } else {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_9__.RuntimeException('IOException: ' + data.msg);\n              }\n            };\n            return IOController;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = IOController;\n\n          /***/\n        },\n\n        /***/\"./src/io/loader.js\":\n        /*!**************************!*\\\n          !*** ./src/io/loader.js ***!\n          \\**************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_300790__) {\n          \"use strict\";\n\n          __nested_webpack_require_300790__.r(__webpack_exports__);\n          /* harmony export */\n          __nested_webpack_require_300790__.d(__webpack_exports__, {\n            /* harmony export */\"LoaderStatus\": function () {\n              return (/* binding */LoaderStatus\n              );\n            },\n            /* harmony export */\"LoaderErrors\": function () {\n              return (/* binding */LoaderErrors\n              );\n            },\n            /* harmony export */\"BaseLoader\": function () {\n              return (/* binding */BaseLoader\n              );\n            }\n            /* harmony export */\n          });\n          /* harmony import */\n          var _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_300790__( /*! ../utils/exception.js */\"./src/utils/exception.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          var LoaderStatus = {\n            kIdle: 0,\n            kConnecting: 1,\n            kBuffering: 2,\n            kError: 3,\n            kComplete: 4\n          };\n          var LoaderErrors = {\n            OK: 'OK',\n            EXCEPTION: 'Exception',\n            HTTP_STATUS_CODE_INVALID: 'HttpStatusCodeInvalid',\n            CONNECTING_TIMEOUT: 'ConnectingTimeout',\n            EARLY_EOF: 'EarlyEof',\n            UNRECOVERABLE_EARLY_EOF: 'UnrecoverableEarlyEof'\n          };\n          /* Loader has callbacks which have following prototypes:\n           *     function onContentLengthKnown(contentLength: number): void\n           *     function onURLRedirect(url: string): void\n           *     function onDataArrival(chunk: ArrayBuffer, byteStart: number, receivedLength: number): void\n           *     function onError(errorType: number, errorInfo: {code: number, msg: string}): void\n           *     function onComplete(rangeFrom: number, rangeTo: number): void\n           */\n          var BaseLoader = /** @class */function () {\n            function BaseLoader(typeName) {\n              this._type = typeName || 'undefined';\n              this._status = LoaderStatus.kIdle;\n              this._needStash = false;\n              // callbacks\n              this._onContentLengthKnown = null;\n              this._onURLRedirect = null;\n              this._onDataArrival = null;\n              this._onError = null;\n              this._onComplete = null;\n            }\n            BaseLoader.prototype.destroy = function () {\n              this._status = LoaderStatus.kIdle;\n              this._onContentLengthKnown = null;\n              this._onURLRedirect = null;\n              this._onDataArrival = null;\n              this._onError = null;\n              this._onComplete = null;\n            };\n            BaseLoader.prototype.isWorking = function () {\n              return this._status === LoaderStatus.kConnecting || this._status === LoaderStatus.kBuffering;\n            };\n            Object.defineProperty(BaseLoader.prototype, \"type\", {\n              get: function () {\n                return this._type;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(BaseLoader.prototype, \"status\", {\n              get: function () {\n                return this._status;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(BaseLoader.prototype, \"needStashBuffer\", {\n              get: function () {\n                return this._needStash;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(BaseLoader.prototype, \"onContentLengthKnown\", {\n              get: function () {\n                return this._onContentLengthKnown;\n              },\n              set: function (callback) {\n                this._onContentLengthKnown = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(BaseLoader.prototype, \"onURLRedirect\", {\n              get: function () {\n                return this._onURLRedirect;\n              },\n              set: function (callback) {\n                this._onURLRedirect = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(BaseLoader.prototype, \"onDataArrival\", {\n              get: function () {\n                return this._onDataArrival;\n              },\n              set: function (callback) {\n                this._onDataArrival = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(BaseLoader.prototype, \"onError\", {\n              get: function () {\n                return this._onError;\n              },\n              set: function (callback) {\n                this._onError = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(BaseLoader.prototype, \"onComplete\", {\n              get: function () {\n                return this._onComplete;\n              },\n              set: function (callback) {\n                this._onComplete = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            // pure virtual\n            BaseLoader.prototype.open = function (dataSource, range) {\n              throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__.NotImplementedException('Unimplemented abstract function!');\n            };\n            BaseLoader.prototype.abort = function () {\n              throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__.NotImplementedException('Unimplemented abstract function!');\n            };\n            return BaseLoader;\n          }();\n\n          /***/\n        },\n\n        /***/\"./src/io/param-seek-handler.js\":\n        /*!**************************************!*\\\n          !*** ./src/io/param-seek-handler.js ***!\n          \\**************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_307736__) {\n          \"use strict\";\n\n          __nested_webpack_require_307736__.r(__webpack_exports__);\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var ParamSeekHandler = /** @class */function () {\n            function ParamSeekHandler(paramStart, paramEnd) {\n              this._startName = paramStart;\n              this._endName = paramEnd;\n            }\n            ParamSeekHandler.prototype.getConfig = function (baseUrl, range) {\n              var url = baseUrl;\n              if (range.from !== 0 || range.to !== -1) {\n                var needAnd = true;\n                if (url.indexOf('?') === -1) {\n                  url += '?';\n                  needAnd = false;\n                }\n                if (needAnd) {\n                  url += '&';\n                }\n                url += this._startName + \"=\" + range.from.toString();\n                if (range.to !== -1) {\n                  url += \"&\" + this._endName + \"=\" + range.to.toString();\n                }\n              }\n              return {\n                url: url,\n                headers: {}\n              };\n            };\n            ParamSeekHandler.prototype.removeURLParameters = function (seekedURL) {\n              var baseURL = seekedURL.split('?')[0];\n              var params = undefined;\n              var queryIndex = seekedURL.indexOf('?');\n              if (queryIndex !== -1) {\n                params = seekedURL.substring(queryIndex + 1);\n              }\n              var resultParams = '';\n              if (params != undefined && params.length > 0) {\n                var pairs = params.split('&');\n                for (var i = 0; i < pairs.length; i++) {\n                  var pair = pairs[i].split('=');\n                  var requireAnd = i > 0;\n                  if (pair[0] !== this._startName && pair[0] !== this._endName) {\n                    if (requireAnd) {\n                      resultParams += '&';\n                    }\n                    resultParams += pairs[i];\n                  }\n                }\n              }\n              return resultParams.length === 0 ? baseURL : baseURL + '?' + resultParams;\n            };\n            return ParamSeekHandler;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = ParamSeekHandler;\n\n          /***/\n        },\n\n        /***/\"./src/io/range-seek-handler.js\":\n        /*!**************************************!*\\\n          !*** ./src/io/range-seek-handler.js ***!\n          \\**************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_311116__) {\n          \"use strict\";\n\n          __nested_webpack_require_311116__.r(__webpack_exports__);\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var RangeSeekHandler = /** @class */function () {\n            function RangeSeekHandler(zeroStart) {\n              this._zeroStart = zeroStart || false;\n            }\n            RangeSeekHandler.prototype.getConfig = function (url, range) {\n              var headers = {};\n              if (range.from !== 0 || range.to !== -1) {\n                var param = void 0;\n                if (range.to !== -1) {\n                  param = \"bytes=\" + range.from.toString() + \"-\" + range.to.toString();\n                } else {\n                  param = \"bytes=\" + range.from.toString() + \"-\";\n                }\n                headers['Range'] = param;\n              } else if (this._zeroStart) {\n                headers['Range'] = 'bytes=0-';\n              }\n              return {\n                url: url,\n                headers: headers\n              };\n            };\n            RangeSeekHandler.prototype.removeURLParameters = function (seekedURL) {\n              return seekedURL;\n            };\n            return RangeSeekHandler;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = RangeSeekHandler;\n\n          /***/\n        },\n\n        /***/\"./src/io/speed-sampler.js\":\n        /*!*********************************!*\\\n          !*** ./src/io/speed-sampler.js ***!\n          \\*********************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_313492__) {\n          \"use strict\";\n\n          __nested_webpack_require_313492__.r(__webpack_exports__);\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          // Utility class to calculate realtime network I/O speed\n          var SpeedSampler = /** @class */function () {\n            function SpeedSampler() {\n              // milliseconds\n              this._firstCheckpoint = 0;\n              this._lastCheckpoint = 0;\n              this._intervalBytes = 0;\n              this._totalBytes = 0;\n              this._lastSecondBytes = 0;\n              // compatibility detection\n              if (self.performance && self.performance.now) {\n                this._now = self.performance.now.bind(self.performance);\n              } else {\n                this._now = Date.now;\n              }\n            }\n            SpeedSampler.prototype.reset = function () {\n              this._firstCheckpoint = this._lastCheckpoint = 0;\n              this._totalBytes = this._intervalBytes = 0;\n              this._lastSecondBytes = 0;\n            };\n            SpeedSampler.prototype.addBytes = function (bytes) {\n              if (this._firstCheckpoint === 0) {\n                this._firstCheckpoint = this._now();\n                this._lastCheckpoint = this._firstCheckpoint;\n                this._intervalBytes += bytes;\n                this._totalBytes += bytes;\n              } else if (this._now() - this._lastCheckpoint < 1000) {\n                this._intervalBytes += bytes;\n                this._totalBytes += bytes;\n              } else {\n                // duration >= 1000\n                this._lastSecondBytes = this._intervalBytes;\n                this._intervalBytes = bytes;\n                this._totalBytes += bytes;\n                this._lastCheckpoint = this._now();\n              }\n            };\n            Object.defineProperty(SpeedSampler.prototype, \"currentKBps\", {\n              get: function () {\n                this.addBytes(0);\n                var durationSeconds = (this._now() - this._lastCheckpoint) / 1000;\n                if (durationSeconds == 0) durationSeconds = 1;\n                return this._intervalBytes / durationSeconds / 1024;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(SpeedSampler.prototype, \"lastSecondKBps\", {\n              get: function () {\n                this.addBytes(0);\n                if (this._lastSecondBytes !== 0) {\n                  return this._lastSecondBytes / 1024;\n                } else {\n                  // lastSecondBytes === 0\n                  if (this._now() - this._lastCheckpoint >= 500) {\n                    // if time interval since last checkpoint has exceeded 500ms\n                    // the speed is nearly accurate\n                    return this.currentKBps;\n                  } else {\n                    // We don't know\n                    return 0;\n                  }\n                }\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(SpeedSampler.prototype, \"averageKBps\", {\n              get: function () {\n                var durationSeconds = (this._now() - this._firstCheckpoint) / 1000;\n                return this._totalBytes / durationSeconds / 1024;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            return SpeedSampler;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = SpeedSampler;\n\n          /***/\n        },\n\n        /***/\"./src/io/websocket-loader.js\":\n        /*!************************************!*\\\n          !*** ./src/io/websocket-loader.js ***!\n          \\************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_318131__) {\n          \"use strict\";\n\n          __nested_webpack_require_318131__.r(__webpack_exports__);\n          /* harmony import */\n          var _loader_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_318131__( /*! ./loader.js */\"./src/io/loader.js\");\n          /* harmony import */\n          var _utils_exception_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_318131__( /*! ../utils/exception.js */\"./src/utils/exception.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var __extends =  false || function () {\n            var extendStatics = function (d, b) {\n              extendStatics = Object.setPrototypeOf || {\n                __proto__: []\n              } instanceof Array && function (d, b) {\n                d.__proto__ = b;\n              } || function (d, b) {\n                for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n              };\n              return extendStatics(d, b);\n            };\n            return function (d, b) {\n              if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n              extendStatics(d, b);\n              function __() {\n                this.constructor = d;\n              }\n              d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n            };\n          }();\n\n          // For FLV over WebSocket live stream\n          var WebSocketLoader = /** @class */function (_super) {\n            __extends(WebSocketLoader, _super);\n            function WebSocketLoader() {\n              var _this = _super.call(this, 'websocket-loader') || this;\n              _this.TAG = 'WebSocketLoader';\n              _this._needStash = true;\n              _this._ws = null;\n              _this._requestAbort = false;\n              _this._receivedLength = 0;\n              return _this;\n            }\n            WebSocketLoader.isSupported = function () {\n              try {\n                return typeof self.WebSocket !== 'undefined';\n              } catch (e) {\n                return false;\n              }\n            };\n            WebSocketLoader.prototype.destroy = function () {\n              if (this._ws) {\n                this.abort();\n              }\n              _super.prototype.destroy.call(this);\n            };\n            WebSocketLoader.prototype.open = function (dataSource) {\n              try {\n                var ws = this._ws = new self.WebSocket(dataSource.url);\n                ws.binaryType = 'arraybuffer';\n                ws.onopen = this._onWebSocketOpen.bind(this);\n                ws.onclose = this._onWebSocketClose.bind(this);\n                ws.onmessage = this._onWebSocketMessage.bind(this);\n                ws.onerror = this._onWebSocketError.bind(this);\n                this._status = _loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderStatus.kConnecting;\n              } catch (e) {\n                this._status = _loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderStatus.kError;\n                var info = {\n                  code: e.code,\n                  msg: e.message\n                };\n                if (this._onError) {\n                  this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderErrors.EXCEPTION, info);\n                } else {\n                  throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_1__.RuntimeException(info.msg);\n                }\n              }\n            };\n            WebSocketLoader.prototype.abort = function () {\n              var ws = this._ws;\n              if (ws && (ws.readyState === 0 || ws.readyState === 1)) {\n                // CONNECTING || OPEN\n                this._requestAbort = true;\n                ws.close();\n              }\n              this._ws = null;\n              this._status = _loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderStatus.kComplete;\n            };\n            WebSocketLoader.prototype._onWebSocketOpen = function (e) {\n              this._status = _loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderStatus.kBuffering;\n            };\n            WebSocketLoader.prototype._onWebSocketClose = function (e) {\n              if (this._requestAbort === true) {\n                this._requestAbort = false;\n                return;\n              }\n              this._status = _loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderStatus.kComplete;\n              if (this._onComplete) {\n                this._onComplete(0, this._receivedLength - 1);\n              }\n            };\n            WebSocketLoader.prototype._onWebSocketMessage = function (e) {\n              var _this = this;\n              if (e.data instanceof ArrayBuffer) {\n                this._dispatchArrayBuffer(e.data);\n              } else if (e.data instanceof Blob) {\n                var reader_1 = new FileReader();\n                reader_1.onload = function () {\n                  _this._dispatchArrayBuffer(reader_1.result);\n                };\n                reader_1.readAsArrayBuffer(e.data);\n              } else {\n                this._status = _loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderStatus.kError;\n                var info = {\n                  code: -1,\n                  msg: 'Unsupported WebSocket message type: ' + e.data.constructor.name\n                };\n                if (this._onError) {\n                  this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderErrors.EXCEPTION, info);\n                } else {\n                  throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_1__.RuntimeException(info.msg);\n                }\n              }\n            };\n            WebSocketLoader.prototype._dispatchArrayBuffer = function (arraybuffer) {\n              var chunk = arraybuffer;\n              var byteStart = this._receivedLength;\n              this._receivedLength += chunk.byteLength;\n              if (this._onDataArrival) {\n                this._onDataArrival(chunk, byteStart, this._receivedLength);\n              }\n            };\n            WebSocketLoader.prototype._onWebSocketError = function (e) {\n              this._status = _loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderStatus.kError;\n              var info = {\n                code: e.code,\n                msg: e.message\n              };\n              if (this._onError) {\n                this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderErrors.EXCEPTION, info);\n              } else {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_1__.RuntimeException(info.msg);\n              }\n            };\n            return WebSocketLoader;\n          }(_loader_js__WEBPACK_IMPORTED_MODULE_0__.BaseLoader);\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = WebSocketLoader;\n\n          /***/\n        },\n\n        /***/\"./src/io/xhr-moz-chunked-loader.js\":\n        /*!******************************************!*\\\n          !*** ./src/io/xhr-moz-chunked-loader.js ***!\n          \\******************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_325983__) {\n          \"use strict\";\n\n          __nested_webpack_require_325983__.r(__webpack_exports__);\n          /* harmony import */\n          var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_325983__( /*! ../utils/logger.js */\"./src/utils/logger.js\");\n          /* harmony import */\n          var _loader_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_325983__( /*! ./loader.js */\"./src/io/loader.js\");\n          /* harmony import */\n          var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_325983__( /*! ../utils/exception.js */\"./src/utils/exception.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var __extends =  false || function () {\n            var extendStatics = function (d, b) {\n              extendStatics = Object.setPrototypeOf || {\n                __proto__: []\n              } instanceof Array && function (d, b) {\n                d.__proto__ = b;\n              } || function (d, b) {\n                for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n              };\n              return extendStatics(d, b);\n            };\n            return function (d, b) {\n              if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n              extendStatics(d, b);\n              function __() {\n                this.constructor = d;\n              }\n              d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n            };\n          }();\n\n          // For FireFox browser which supports `xhr.responseType = 'moz-chunked-arraybuffer'`\n          var MozChunkedLoader = /** @class */function (_super) {\n            __extends(MozChunkedLoader, _super);\n            function MozChunkedLoader(seekHandler, config) {\n              var _this = _super.call(this, 'xhr-moz-chunked-loader') || this;\n              _this.TAG = 'MozChunkedLoader';\n              _this._seekHandler = seekHandler;\n              _this._config = config;\n              _this._needStash = true;\n              _this._xhr = null;\n              _this._requestAbort = false;\n              _this._contentLength = null;\n              _this._receivedLength = 0;\n              return _this;\n            }\n            MozChunkedLoader.isSupported = function () {\n              try {\n                var xhr = new XMLHttpRequest();\n                // Firefox 37- requires .open() to be called before setting responseType\n                xhr.open('GET', 'https://example.com', true);\n                xhr.responseType = 'moz-chunked-arraybuffer';\n                return xhr.responseType === 'moz-chunked-arraybuffer';\n              } catch (e) {\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w('MozChunkedLoader', e.message);\n                return false;\n              }\n            };\n            MozChunkedLoader.prototype.destroy = function () {\n              if (this.isWorking()) {\n                this.abort();\n              }\n              if (this._xhr) {\n                this._xhr.onreadystatechange = null;\n                this._xhr.onprogress = null;\n                this._xhr.onloadend = null;\n                this._xhr.onerror = null;\n                this._xhr = null;\n              }\n              _super.prototype.destroy.call(this);\n            };\n            MozChunkedLoader.prototype.open = function (dataSource, range) {\n              this._dataSource = dataSource;\n              this._range = range;\n              var sourceURL = dataSource.url;\n              if (this._config.reuseRedirectedURL && dataSource.redirectedURL != undefined) {\n                sourceURL = dataSource.redirectedURL;\n              }\n              var seekConfig = this._seekHandler.getConfig(sourceURL, range);\n              this._requestURL = seekConfig.url;\n              var xhr = this._xhr = new XMLHttpRequest();\n              xhr.open('GET', seekConfig.url, true);\n              xhr.responseType = 'moz-chunked-arraybuffer';\n              xhr.onreadystatechange = this._onReadyStateChange.bind(this);\n              xhr.onprogress = this._onProgress.bind(this);\n              xhr.onloadend = this._onLoadEnd.bind(this);\n              xhr.onerror = this._onXhrError.bind(this);\n              // cors is auto detected and enabled by xhr\n              // withCredentials is disabled by default\n              if (dataSource.withCredentials) {\n                xhr.withCredentials = true;\n              }\n              if (typeof seekConfig.headers === 'object') {\n                var headers = seekConfig.headers;\n                for (var key in headers) {\n                  if (headers.hasOwnProperty(key)) {\n                    xhr.setRequestHeader(key, headers[key]);\n                  }\n                }\n              }\n              // add additional headers\n              if (typeof this._config.headers === 'object') {\n                var headers = this._config.headers;\n                for (var key in headers) {\n                  if (headers.hasOwnProperty(key)) {\n                    xhr.setRequestHeader(key, headers[key]);\n                  }\n                }\n              }\n              this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kConnecting;\n              xhr.send();\n            };\n            MozChunkedLoader.prototype.abort = function () {\n              this._requestAbort = true;\n              if (this._xhr) {\n                this._xhr.abort();\n              }\n              this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kComplete;\n            };\n            MozChunkedLoader.prototype._onReadyStateChange = function (e) {\n              var xhr = e.target;\n              if (xhr.readyState === 2) {\n                // HEADERS_RECEIVED\n                if (xhr.responseURL != undefined && xhr.responseURL !== this._requestURL) {\n                  if (this._onURLRedirect) {\n                    var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL);\n                    this._onURLRedirect(redirectedURL);\n                  }\n                }\n                if (xhr.status !== 0 && (xhr.status < 200 || xhr.status > 299)) {\n                  this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError;\n                  if (this._onError) {\n                    this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.HTTP_STATUS_CODE_INVALID, {\n                      code: xhr.status,\n                      msg: xhr.statusText\n                    });\n                  } else {\n                    throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.RuntimeException('MozChunkedLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText);\n                  }\n                } else {\n                  this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kBuffering;\n                }\n              }\n            };\n            MozChunkedLoader.prototype._onProgress = function (e) {\n              if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError) {\n                // Ignore error response\n                return;\n              }\n              if (this._contentLength === null) {\n                if (e.total !== null && e.total !== 0) {\n                  this._contentLength = e.total;\n                  if (this._onContentLengthKnown) {\n                    this._onContentLengthKnown(this._contentLength);\n                  }\n                }\n              }\n              var chunk = e.target.response;\n              var byteStart = this._range.from + this._receivedLength;\n              this._receivedLength += chunk.byteLength;\n              if (this._onDataArrival) {\n                this._onDataArrival(chunk, byteStart, this._receivedLength);\n              }\n            };\n            MozChunkedLoader.prototype._onLoadEnd = function (e) {\n              if (this._requestAbort === true) {\n                this._requestAbort = false;\n                return;\n              } else if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError) {\n                return;\n              }\n              this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kComplete;\n              if (this._onComplete) {\n                this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);\n              }\n            };\n            MozChunkedLoader.prototype._onXhrError = function (e) {\n              this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError;\n              var type = 0;\n              var info = null;\n              if (this._contentLength && e.loaded < this._contentLength) {\n                type = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.EARLY_EOF;\n                info = {\n                  code: -1,\n                  msg: 'Moz-Chunked stream meet Early-Eof'\n                };\n              } else {\n                type = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.EXCEPTION;\n                info = {\n                  code: -1,\n                  msg: e.constructor.name + ' ' + e.type\n                };\n              }\n              if (this._onError) {\n                this._onError(type, info);\n              } else {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.RuntimeException(info.msg);\n              }\n            };\n            return MozChunkedLoader;\n          }(_loader_js__WEBPACK_IMPORTED_MODULE_1__.BaseLoader);\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = MozChunkedLoader;\n\n          /***/\n        },\n\n        /***/\"./src/io/xhr-range-loader.js\":\n        /*!************************************!*\\\n          !*** ./src/io/xhr-range-loader.js ***!\n          \\************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_336728__) {\n          \"use strict\";\n\n          __nested_webpack_require_336728__.r(__webpack_exports__);\n          /* harmony import */\n          var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_336728__( /*! ../utils/logger.js */\"./src/utils/logger.js\");\n          /* harmony import */\n          var _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_336728__( /*! ./speed-sampler.js */\"./src/io/speed-sampler.js\");\n          /* harmony import */\n          var _loader_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_336728__( /*! ./loader.js */\"./src/io/loader.js\");\n          /* harmony import */\n          var _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_336728__( /*! ../utils/exception.js */\"./src/utils/exception.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var __extends =  false || function () {\n            var extendStatics = function (d, b) {\n              extendStatics = Object.setPrototypeOf || {\n                __proto__: []\n              } instanceof Array && function (d, b) {\n                d.__proto__ = b;\n              } || function (d, b) {\n                for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n              };\n              return extendStatics(d, b);\n            };\n            return function (d, b) {\n              if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n              extendStatics(d, b);\n              function __() {\n                this.constructor = d;\n              }\n              d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n            };\n          }();\n\n          // Universal IO Loader, implemented by adding Range header in xhr's request header\n          var RangeLoader = /** @class */function (_super) {\n            __extends(RangeLoader, _super);\n            function RangeLoader(seekHandler, config) {\n              var _this = _super.call(this, 'xhr-range-loader') || this;\n              _this.TAG = 'RangeLoader';\n              _this._seekHandler = seekHandler;\n              _this._config = config;\n              _this._needStash = false;\n              _this._chunkSizeKBList = [128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192];\n              _this._currentChunkSizeKB = 384;\n              _this._currentSpeedNormalized = 0;\n              _this._zeroSpeedChunkCount = 0;\n              _this._xhr = null;\n              _this._speedSampler = new _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__.default();\n              _this._requestAbort = false;\n              _this._waitForTotalLength = false;\n              _this._totalLengthReceived = false;\n              _this._currentRequestURL = null;\n              _this._currentRedirectedURL = null;\n              _this._currentRequestRange = null;\n              _this._totalLength = null; // size of the entire file\n              _this._contentLength = null; // Content-Length of entire request range\n              _this._receivedLength = 0; // total received bytes\n              _this._lastTimeLoaded = 0; // received bytes of current request sub-range\n              return _this;\n            }\n            RangeLoader.isSupported = function () {\n              try {\n                var xhr = new XMLHttpRequest();\n                xhr.open('GET', 'https://example.com', true);\n                xhr.responseType = 'arraybuffer';\n                return xhr.responseType === 'arraybuffer';\n              } catch (e) {\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w('RangeLoader', e.message);\n                return false;\n              }\n            };\n            RangeLoader.prototype.destroy = function () {\n              if (this.isWorking()) {\n                this.abort();\n              }\n              if (this._xhr) {\n                this._xhr.onreadystatechange = null;\n                this._xhr.onprogress = null;\n                this._xhr.onload = null;\n                this._xhr.onerror = null;\n                this._xhr = null;\n              }\n              _super.prototype.destroy.call(this);\n            };\n            Object.defineProperty(RangeLoader.prototype, \"currentSpeed\", {\n              get: function () {\n                return this._speedSampler.lastSecondKBps;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            RangeLoader.prototype.open = function (dataSource, range) {\n              this._dataSource = dataSource;\n              this._range = range;\n              this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kConnecting;\n              var useRefTotalLength = false;\n              if (this._dataSource.filesize != undefined && this._dataSource.filesize !== 0) {\n                useRefTotalLength = true;\n                this._totalLength = this._dataSource.filesize;\n              }\n              if (!this._totalLengthReceived && !useRefTotalLength) {\n                // We need total filesize\n                this._waitForTotalLength = true;\n                this._internalOpen(this._dataSource, {\n                  from: 0,\n                  to: -1\n                });\n              } else {\n                // We have filesize, start loading\n                this._openSubRange();\n              }\n            };\n            RangeLoader.prototype._openSubRange = function () {\n              var chunkSize = this._currentChunkSizeKB * 1024;\n              var from = this._range.from + this._receivedLength;\n              var to = from + chunkSize;\n              if (this._contentLength != null) {\n                if (to - this._range.from >= this._contentLength) {\n                  to = this._range.from + this._contentLength - 1;\n                }\n              }\n              this._currentRequestRange = {\n                from: from,\n                to: to\n              };\n              this._internalOpen(this._dataSource, this._currentRequestRange);\n            };\n            RangeLoader.prototype._internalOpen = function (dataSource, range) {\n              this._lastTimeLoaded = 0;\n              var sourceURL = dataSource.url;\n              if (this._config.reuseRedirectedURL) {\n                if (this._currentRedirectedURL != undefined) {\n                  sourceURL = this._currentRedirectedURL;\n                } else if (dataSource.redirectedURL != undefined) {\n                  sourceURL = dataSource.redirectedURL;\n                }\n              }\n              var seekConfig = this._seekHandler.getConfig(sourceURL, range);\n              this._currentRequestURL = seekConfig.url;\n              var xhr = this._xhr = new XMLHttpRequest();\n              xhr.open('GET', seekConfig.url, true);\n              xhr.responseType = 'arraybuffer';\n              xhr.onreadystatechange = this._onReadyStateChange.bind(this);\n              xhr.onprogress = this._onProgress.bind(this);\n              xhr.onload = this._onLoad.bind(this);\n              xhr.onerror = this._onXhrError.bind(this);\n              if (dataSource.withCredentials) {\n                xhr.withCredentials = true;\n              }\n              if (typeof seekConfig.headers === 'object') {\n                var headers = seekConfig.headers;\n                for (var key in headers) {\n                  if (headers.hasOwnProperty(key)) {\n                    xhr.setRequestHeader(key, headers[key]);\n                  }\n                }\n              }\n              // add additional headers\n              if (typeof this._config.headers === 'object') {\n                var headers = this._config.headers;\n                for (var key in headers) {\n                  if (headers.hasOwnProperty(key)) {\n                    xhr.setRequestHeader(key, headers[key]);\n                  }\n                }\n              }\n              xhr.send();\n            };\n            RangeLoader.prototype.abort = function () {\n              this._requestAbort = true;\n              this._internalAbort();\n              this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kComplete;\n            };\n            RangeLoader.prototype._internalAbort = function () {\n              if (this._xhr) {\n                this._xhr.onreadystatechange = null;\n                this._xhr.onprogress = null;\n                this._xhr.onload = null;\n                this._xhr.onerror = null;\n                this._xhr.abort();\n                this._xhr = null;\n              }\n            };\n            RangeLoader.prototype._onReadyStateChange = function (e) {\n              var xhr = e.target;\n              if (xhr.readyState === 2) {\n                // HEADERS_RECEIVED\n                if (xhr.responseURL != undefined) {\n                  // if the browser support this property\n                  var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL);\n                  if (xhr.responseURL !== this._currentRequestURL && redirectedURL !== this._currentRedirectedURL) {\n                    this._currentRedirectedURL = redirectedURL;\n                    if (this._onURLRedirect) {\n                      this._onURLRedirect(redirectedURL);\n                    }\n                  }\n                }\n                if (xhr.status >= 200 && xhr.status <= 299) {\n                  if (this._waitForTotalLength) {\n                    return;\n                  }\n                  this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kBuffering;\n                } else {\n                  this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kError;\n                  if (this._onError) {\n                    this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.HTTP_STATUS_CODE_INVALID, {\n                      code: xhr.status,\n                      msg: xhr.statusText\n                    });\n                  } else {\n                    throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__.RuntimeException('RangeLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText);\n                  }\n                }\n              }\n            };\n            RangeLoader.prototype._onProgress = function (e) {\n              if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kError) {\n                // Ignore error response\n                return;\n              }\n              if (this._contentLength === null) {\n                var openNextRange = false;\n                if (this._waitForTotalLength) {\n                  this._waitForTotalLength = false;\n                  this._totalLengthReceived = true;\n                  openNextRange = true;\n                  var total = e.total;\n                  this._internalAbort();\n                  if (total != null & total !== 0) {\n                    this._totalLength = total;\n                  }\n                }\n                // calculate currrent request range's contentLength\n                if (this._range.to === -1) {\n                  this._contentLength = this._totalLength - this._range.from;\n                } else {\n                  // to !== -1\n                  this._contentLength = this._range.to - this._range.from + 1;\n                }\n                if (openNextRange) {\n                  this._openSubRange();\n                  return;\n                }\n                if (this._onContentLengthKnown) {\n                  this._onContentLengthKnown(this._contentLength);\n                }\n              }\n              var delta = e.loaded - this._lastTimeLoaded;\n              this._lastTimeLoaded = e.loaded;\n              this._speedSampler.addBytes(delta);\n            };\n            RangeLoader.prototype._normalizeSpeed = function (input) {\n              var list = this._chunkSizeKBList;\n              var last = list.length - 1;\n              var mid = 0;\n              var lbound = 0;\n              var ubound = last;\n              if (input < list[0]) {\n                return list[0];\n              }\n              while (lbound <= ubound) {\n                mid = lbound + Math.floor((ubound - lbound) / 2);\n                if (mid === last || input >= list[mid] && input < list[mid + 1]) {\n                  return list[mid];\n                } else if (list[mid] < input) {\n                  lbound = mid + 1;\n                } else {\n                  ubound = mid - 1;\n                }\n              }\n            };\n            RangeLoader.prototype._onLoad = function (e) {\n              if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kError) {\n                // Ignore error response\n                return;\n              }\n              if (this._waitForTotalLength) {\n                this._waitForTotalLength = false;\n                return;\n              }\n              this._lastTimeLoaded = 0;\n              var KBps = this._speedSampler.lastSecondKBps;\n              if (KBps === 0) {\n                this._zeroSpeedChunkCount++;\n                if (this._zeroSpeedChunkCount >= 3) {\n                  // Try get currentKBps after 3 chunks\n                  KBps = this._speedSampler.currentKBps;\n                }\n              }\n              if (KBps !== 0) {\n                var normalized = this._normalizeSpeed(KBps);\n                if (this._currentSpeedNormalized !== normalized) {\n                  this._currentSpeedNormalized = normalized;\n                  this._currentChunkSizeKB = normalized;\n                }\n              }\n              var chunk = e.target.response;\n              var byteStart = this._range.from + this._receivedLength;\n              this._receivedLength += chunk.byteLength;\n              var reportComplete = false;\n              if (this._contentLength != null && this._receivedLength < this._contentLength) {\n                // continue load next chunk\n                this._openSubRange();\n              } else {\n                reportComplete = true;\n              }\n              // dispatch received chunk\n              if (this._onDataArrival) {\n                this._onDataArrival(chunk, byteStart, this._receivedLength);\n              }\n              if (reportComplete) {\n                this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kComplete;\n                if (this._onComplete) {\n                  this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);\n                }\n              }\n            };\n            RangeLoader.prototype._onXhrError = function (e) {\n              this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kError;\n              var type = 0;\n              var info = null;\n              if (this._contentLength && this._receivedLength > 0 && this._receivedLength < this._contentLength) {\n                type = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.EARLY_EOF;\n                info = {\n                  code: -1,\n                  msg: 'RangeLoader meet Early-Eof'\n                };\n              } else {\n                type = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.EXCEPTION;\n                info = {\n                  code: -1,\n                  msg: e.constructor.name + ' ' + e.type\n                };\n              }\n              if (this._onError) {\n                this._onError(type, info);\n              } else {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__.RuntimeException(info.msg);\n              }\n            };\n            return RangeLoader;\n          }(_loader_js__WEBPACK_IMPORTED_MODULE_2__.BaseLoader);\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = RangeLoader;\n\n          /***/\n        },\n\n        /***/\"./src/player/flv-player.js\":\n        /*!**********************************!*\\\n          !*** ./src/player/flv-player.js ***!\n          \\**********************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_353542__) {\n          \"use strict\";\n\n          __nested_webpack_require_353542__.r(__webpack_exports__);\n          /* harmony import */\n          var events__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_353542__( /*! events */\"./node_modules/events/events.js\");\n          /* harmony import */\n          var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nested_webpack_require_353542__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n          /* harmony import */\n          var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_353542__( /*! ../utils/logger.js */\"./src/utils/logger.js\");\n          /* harmony import */\n          var _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_353542__( /*! ../utils/browser.js */\"./src/utils/browser.js\");\n          /* harmony import */\n          var _player_events_js__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_353542__( /*! ./player-events.js */\"./src/player/player-events.js\");\n          /* harmony import */\n          var _core_transmuxer_js__WEBPACK_IMPORTED_MODULE_4__ = __nested_webpack_require_353542__( /*! ../core/transmuxer.js */\"./src/core/transmuxer.js\");\n          /* harmony import */\n          var _core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__ = __nested_webpack_require_353542__( /*! ../core/transmuxing-events.js */\"./src/core/transmuxing-events.js\");\n          /* harmony import */\n          var _core_mse_controller_js__WEBPACK_IMPORTED_MODULE_6__ = __nested_webpack_require_353542__( /*! ../core/mse-controller.js */\"./src/core/mse-controller.js\");\n          /* harmony import */\n          var _core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__ = __nested_webpack_require_353542__( /*! ../core/mse-events.js */\"./src/core/mse-events.js\");\n          /* harmony import */\n          var _player_errors_js__WEBPACK_IMPORTED_MODULE_8__ = __nested_webpack_require_353542__( /*! ./player-errors.js */\"./src/player/player-errors.js\");\n          /* harmony import */\n          var _config_js__WEBPACK_IMPORTED_MODULE_9__ = __nested_webpack_require_353542__( /*! ../config.js */\"./src/config.js\");\n          /* harmony import */\n          var _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__ = __nested_webpack_require_353542__( /*! ../utils/exception.js */\"./src/utils/exception.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          var FlvPlayer = /** @class */function () {\n            function FlvPlayer(mediaDataSource, config) {\n              this.TAG = 'FlvPlayer';\n              this._type = 'FlvPlayer';\n              this._emitter = new (events__WEBPACK_IMPORTED_MODULE_0___default())();\n              this._config = (0, _config_js__WEBPACK_IMPORTED_MODULE_9__.createDefaultConfig)();\n              if (typeof config === 'object') {\n                Object.assign(this._config, config);\n              }\n              if (mediaDataSource.type.toLowerCase() !== 'flv') {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__.InvalidArgumentException('FlvPlayer requires an flv MediaDataSource input!');\n              }\n              if (mediaDataSource.isLive === true) {\n                this._config.isLive = true;\n              }\n              this.e = {\n                onvLoadedMetadata: this._onvLoadedMetadata.bind(this),\n                onvSeeking: this._onvSeeking.bind(this),\n                onvCanPlay: this._onvCanPlay.bind(this),\n                onvStalled: this._onvStalled.bind(this),\n                onvProgress: this._onvProgress.bind(this)\n              };\n              if (self.performance && self.performance.now) {\n                this._now = self.performance.now.bind(self.performance);\n              } else {\n                this._now = Date.now;\n              }\n              this._pendingSeekTime = null; // in seconds\n              this._requestSetTime = false;\n              this._seekpointRecord = null;\n              this._progressChecker = null;\n              this._mediaDataSource = mediaDataSource;\n              this._mediaElement = null;\n              this._msectl = null;\n              this._transmuxer = null;\n              this._mseSourceOpened = false;\n              this._hasPendingLoad = false;\n              this._receivedCanPlay = false;\n              this._mediaInfo = null;\n              this._statisticsInfo = null;\n              var chromeNeedIDRFix = _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.chrome && (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.version.major < 50 || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.version.major === 50 && _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.version.build < 2661);\n              this._alwaysSeekKeyframe = chromeNeedIDRFix || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.msedge || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.msie ? true : false;\n              if (this._alwaysSeekKeyframe) {\n                this._config.accurateSeek = false;\n              }\n            }\n            FlvPlayer.prototype.destroy = function () {\n              if (this._progressChecker != null) {\n                window.clearInterval(this._progressChecker);\n                this._progressChecker = null;\n              }\n              if (this._transmuxer) {\n                this.unload();\n              }\n              if (this._mediaElement) {\n                this.detachMediaElement();\n              }\n              this.e = null;\n              this._mediaDataSource = null;\n              this._emitter.removeAllListeners();\n              this._emitter = null;\n            };\n            FlvPlayer.prototype.on = function (event, listener) {\n              var _this = this;\n              if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.MEDIA_INFO) {\n                if (this._mediaInfo != null) {\n                  Promise.resolve().then(function () {\n                    _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.MEDIA_INFO, _this.mediaInfo);\n                  });\n                }\n              } else if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.STATISTICS_INFO) {\n                if (this._statisticsInfo != null) {\n                  Promise.resolve().then(function () {\n                    _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.STATISTICS_INFO, _this.statisticsInfo);\n                  });\n                }\n              }\n              this._emitter.addListener(event, listener);\n            };\n            FlvPlayer.prototype.off = function (event, listener) {\n              this._emitter.removeListener(event, listener);\n            };\n            FlvPlayer.prototype.attachMediaElement = function (mediaElement) {\n              var _this = this;\n              this._mediaElement = mediaElement;\n              mediaElement.addEventListener('loadedmetadata', this.e.onvLoadedMetadata);\n              mediaElement.addEventListener('seeking', this.e.onvSeeking);\n              mediaElement.addEventListener('canplay', this.e.onvCanPlay);\n              mediaElement.addEventListener('stalled', this.e.onvStalled);\n              mediaElement.addEventListener('progress', this.e.onvProgress);\n              this._msectl = new _core_mse_controller_js__WEBPACK_IMPORTED_MODULE_6__.default(this._config);\n              this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__.default.UPDATE_END, this._onmseUpdateEnd.bind(this));\n              this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__.default.BUFFER_FULL, this._onmseBufferFull.bind(this));\n              this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__.default.SOURCE_OPEN, function () {\n                _this._mseSourceOpened = true;\n                if (_this._hasPendingLoad) {\n                  _this._hasPendingLoad = false;\n                  _this.load();\n                }\n              });\n              this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__.default.ERROR, function (info) {\n                _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.ERROR, _player_errors_js__WEBPACK_IMPORTED_MODULE_8__.ErrorTypes.MEDIA_ERROR, _player_errors_js__WEBPACK_IMPORTED_MODULE_8__.ErrorDetails.MEDIA_MSE_ERROR, info);\n              });\n              this._msectl.attachMediaElement(mediaElement);\n              if (this._pendingSeekTime != null) {\n                try {\n                  mediaElement.currentTime = this._pendingSeekTime;\n                  this._pendingSeekTime = null;\n                } catch (e) {\n                  // IE11 may throw InvalidStateError if readyState === 0\n                  // We can defer set currentTime operation after loadedmetadata\n                }\n              }\n            };\n            FlvPlayer.prototype.detachMediaElement = function () {\n              if (this._mediaElement) {\n                this._msectl.detachMediaElement();\n                this._mediaElement.removeEventListener('loadedmetadata', this.e.onvLoadedMetadata);\n                this._mediaElement.removeEventListener('seeking', this.e.onvSeeking);\n                this._mediaElement.removeEventListener('canplay', this.e.onvCanPlay);\n                this._mediaElement.removeEventListener('stalled', this.e.onvStalled);\n                this._mediaElement.removeEventListener('progress', this.e.onvProgress);\n                this._mediaElement = null;\n              }\n              if (this._msectl) {\n                this._msectl.destroy();\n                this._msectl = null;\n              }\n            };\n            FlvPlayer.prototype.load = function () {\n              var _this = this;\n              if (!this._mediaElement) {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__.IllegalStateException('HTMLMediaElement must be attached before load()!');\n              }\n              if (this._transmuxer) {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__.IllegalStateException('FlvPlayer.load() has been called, please call unload() first!');\n              }\n              if (this._hasPendingLoad) {\n                return;\n              }\n              if (this._config.deferLoadAfterSourceOpen && this._mseSourceOpened === false) {\n                this._hasPendingLoad = true;\n                return;\n              }\n              if (this._mediaElement.readyState > 0) {\n                this._requestSetTime = true;\n                // IE11 may throw InvalidStateError if readyState === 0\n                this._mediaElement.currentTime = 0;\n              }\n              this._transmuxer = new _core_transmuxer_js__WEBPACK_IMPORTED_MODULE_4__.default(this._mediaDataSource, this._config);\n              this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.INIT_SEGMENT, function (type, is) {\n                _this._msectl.appendInitSegment(is);\n              });\n              this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_SEGMENT, function (type, ms) {\n                _this._msectl.appendMediaSegment(ms);\n                // lazyLoad check\n                if (_this._config.lazyLoad && !_this._config.isLive) {\n                  var currentTime = _this._mediaElement.currentTime;\n                  if (ms.info.endDts >= (currentTime + _this._config.lazyLoadMaxDuration) * 1000) {\n                    if (_this._progressChecker == null) {\n                      _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(_this.TAG, 'Maximum buffering duration exceeded, suspend transmuxing task');\n                      _this._suspendTransmuxer();\n                    }\n                  }\n                }\n              });\n              this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.LOADING_COMPLETE, function () {\n                _this._msectl.endOfStream();\n                _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.LOADING_COMPLETE);\n              });\n              this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOVERED_EARLY_EOF, function () {\n                _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.RECOVERED_EARLY_EOF);\n              });\n              this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.IO_ERROR, function (detail, info) {\n                _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.ERROR, _player_errors_js__WEBPACK_IMPORTED_MODULE_8__.ErrorTypes.NETWORK_ERROR, detail, info);\n              });\n              this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.DEMUX_ERROR, function (detail, info) {\n                _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.ERROR, _player_errors_js__WEBPACK_IMPORTED_MODULE_8__.ErrorTypes.MEDIA_ERROR, detail, {\n                  code: -1,\n                  msg: info\n                });\n              });\n              this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_INFO, function (mediaInfo) {\n                _this._mediaInfo = mediaInfo;\n                _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.MEDIA_INFO, Object.assign({}, mediaInfo));\n              });\n              this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.METADATA_ARRIVED, function (metadata) {\n                _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.METADATA_ARRIVED, metadata);\n              });\n              this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.SCRIPTDATA_ARRIVED, function (data) {\n                _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.SCRIPTDATA_ARRIVED, data);\n              });\n              this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.STATISTICS_INFO, function (statInfo) {\n                _this._statisticsInfo = _this._fillStatisticsInfo(statInfo);\n                _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.STATISTICS_INFO, Object.assign({}, _this._statisticsInfo));\n              });\n              this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOMMEND_SEEKPOINT, function (milliseconds) {\n                if (_this._mediaElement && !_this._config.accurateSeek) {\n                  _this._requestSetTime = true;\n                  _this._mediaElement.currentTime = milliseconds / 1000;\n                }\n              });\n              this._transmuxer.open();\n            };\n            FlvPlayer.prototype.unload = function () {\n              if (this._mediaElement) {\n                this._mediaElement.pause();\n              }\n              if (this._msectl) {\n                this._msectl.seek(0);\n              }\n              if (this._transmuxer) {\n                this._transmuxer.close();\n                this._transmuxer.destroy();\n                this._transmuxer = null;\n              }\n            };\n            FlvPlayer.prototype.play = function () {\n              return this._mediaElement.play();\n            };\n            FlvPlayer.prototype.pause = function () {\n              this._mediaElement.pause();\n            };\n            Object.defineProperty(FlvPlayer.prototype, \"type\", {\n              get: function () {\n                return this._type;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FlvPlayer.prototype, \"buffered\", {\n              get: function () {\n                return this._mediaElement.buffered;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FlvPlayer.prototype, \"duration\", {\n              get: function () {\n                return this._mediaElement.duration;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FlvPlayer.prototype, \"volume\", {\n              get: function () {\n                return this._mediaElement.volume;\n              },\n              set: function (value) {\n                this._mediaElement.volume = value;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FlvPlayer.prototype, \"muted\", {\n              get: function () {\n                return this._mediaElement.muted;\n              },\n              set: function (muted) {\n                this._mediaElement.muted = muted;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FlvPlayer.prototype, \"currentTime\", {\n              get: function () {\n                if (this._mediaElement) {\n                  return this._mediaElement.currentTime;\n                }\n                return 0;\n              },\n              set: function (seconds) {\n                if (this._mediaElement) {\n                  this._internalSeek(seconds);\n                } else {\n                  this._pendingSeekTime = seconds;\n                }\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FlvPlayer.prototype, \"mediaInfo\", {\n              get: function () {\n                return Object.assign({}, this._mediaInfo);\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(FlvPlayer.prototype, \"statisticsInfo\", {\n              get: function () {\n                if (this._statisticsInfo == null) {\n                  this._statisticsInfo = {};\n                }\n                this._statisticsInfo = this._fillStatisticsInfo(this._statisticsInfo);\n                return Object.assign({}, this._statisticsInfo);\n              },\n              enumerable: false,\n              configurable: true\n            });\n            FlvPlayer.prototype._fillStatisticsInfo = function (statInfo) {\n              statInfo.playerType = this._type;\n              if (!(this._mediaElement instanceof HTMLVideoElement)) {\n                return statInfo;\n              }\n              var hasQualityInfo = true;\n              var decoded = 0;\n              var dropped = 0;\n              if (this._mediaElement.getVideoPlaybackQuality) {\n                var quality = this._mediaElement.getVideoPlaybackQuality();\n                decoded = quality.totalVideoFrames;\n                dropped = quality.droppedVideoFrames;\n              } else if (this._mediaElement.webkitDecodedFrameCount != undefined) {\n                decoded = this._mediaElement.webkitDecodedFrameCount;\n                dropped = this._mediaElement.webkitDroppedFrameCount;\n              } else {\n                hasQualityInfo = false;\n              }\n              if (hasQualityInfo) {\n                statInfo.decodedFrames = decoded;\n                statInfo.droppedFrames = dropped;\n              }\n              return statInfo;\n            };\n            FlvPlayer.prototype._onmseUpdateEnd = function () {\n              if (!this._config.lazyLoad || this._config.isLive) {\n                return;\n              }\n              var buffered = this._mediaElement.buffered;\n              var currentTime = this._mediaElement.currentTime;\n              var currentRangeStart = 0;\n              var currentRangeEnd = 0;\n              for (var i = 0; i < buffered.length; i++) {\n                var start = buffered.start(i);\n                var end = buffered.end(i);\n                if (start <= currentTime && currentTime < end) {\n                  currentRangeStart = start;\n                  currentRangeEnd = end;\n                  break;\n                }\n              }\n              if (currentRangeEnd >= currentTime + this._config.lazyLoadMaxDuration && this._progressChecker == null) {\n                _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, 'Maximum buffering duration exceeded, suspend transmuxing task');\n                this._suspendTransmuxer();\n              }\n            };\n            FlvPlayer.prototype._onmseBufferFull = function () {\n              _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, 'MSE SourceBuffer is full, suspend transmuxing task');\n              if (this._progressChecker == null) {\n                this._suspendTransmuxer();\n              }\n            };\n            FlvPlayer.prototype._suspendTransmuxer = function () {\n              if (this._transmuxer) {\n                this._transmuxer.pause();\n                if (this._progressChecker == null) {\n                  this._progressChecker = window.setInterval(this._checkProgressAndResume.bind(this), 1000);\n                }\n              }\n            };\n            FlvPlayer.prototype._checkProgressAndResume = function () {\n              var currentTime = this._mediaElement.currentTime;\n              var buffered = this._mediaElement.buffered;\n              var needResume = false;\n              for (var i = 0; i < buffered.length; i++) {\n                var from = buffered.start(i);\n                var to = buffered.end(i);\n                if (currentTime >= from && currentTime < to) {\n                  if (currentTime >= to - this._config.lazyLoadRecoverDuration) {\n                    needResume = true;\n                  }\n                  break;\n                }\n              }\n              if (needResume) {\n                window.clearInterval(this._progressChecker);\n                this._progressChecker = null;\n                if (needResume) {\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, 'Continue loading from paused position');\n                  this._transmuxer.resume();\n                }\n              }\n            };\n            FlvPlayer.prototype._isTimepointBuffered = function (seconds) {\n              var buffered = this._mediaElement.buffered;\n              for (var i = 0; i < buffered.length; i++) {\n                var from = buffered.start(i);\n                var to = buffered.end(i);\n                if (seconds >= from && seconds < to) {\n                  return true;\n                }\n              }\n              return false;\n            };\n            FlvPlayer.prototype._internalSeek = function (seconds) {\n              var directSeek = this._isTimepointBuffered(seconds);\n              var directSeekBegin = false;\n              var directSeekBeginTime = 0;\n              if (seconds < 1.0 && this._mediaElement.buffered.length > 0) {\n                var videoBeginTime = this._mediaElement.buffered.start(0);\n                if (videoBeginTime < 1.0 && seconds < videoBeginTime || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.safari) {\n                  directSeekBegin = true;\n                  // also workaround for Safari: Seek to 0 may cause video stuck, use 0.1 to avoid\n                  directSeekBeginTime = _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.safari ? 0.1 : videoBeginTime;\n                }\n              }\n              if (directSeekBegin) {\n                // seek to video begin, set currentTime directly if beginPTS buffered\n                this._requestSetTime = true;\n                this._mediaElement.currentTime = directSeekBeginTime;\n              } else if (directSeek) {\n                // buffered position\n                if (!this._alwaysSeekKeyframe) {\n                  this._requestSetTime = true;\n                  this._mediaElement.currentTime = seconds;\n                } else {\n                  var idr = this._msectl.getNearestKeyframe(Math.floor(seconds * 1000));\n                  this._requestSetTime = true;\n                  if (idr != null) {\n                    this._mediaElement.currentTime = idr.dts / 1000;\n                  } else {\n                    this._mediaElement.currentTime = seconds;\n                  }\n                }\n                if (this._progressChecker != null) {\n                  this._checkProgressAndResume();\n                }\n              } else {\n                if (this._progressChecker != null) {\n                  window.clearInterval(this._progressChecker);\n                  this._progressChecker = null;\n                }\n                this._msectl.seek(seconds);\n                this._transmuxer.seek(Math.floor(seconds * 1000)); // in milliseconds\n                // no need to set mediaElement.currentTime if non-accurateSeek,\n                // just wait for the recommend_seekpoint callback\n                if (this._config.accurateSeek) {\n                  this._requestSetTime = true;\n                  this._mediaElement.currentTime = seconds;\n                }\n              }\n            };\n            FlvPlayer.prototype._checkAndApplyUnbufferedSeekpoint = function () {\n              if (this._seekpointRecord) {\n                if (this._seekpointRecord.recordTime <= this._now() - 100) {\n                  var target = this._mediaElement.currentTime;\n                  this._seekpointRecord = null;\n                  if (!this._isTimepointBuffered(target)) {\n                    if (this._progressChecker != null) {\n                      window.clearTimeout(this._progressChecker);\n                      this._progressChecker = null;\n                    }\n                    // .currentTime is consists with .buffered timestamp\n                    // Chrome/Edge use DTS, while FireFox/Safari use PTS\n                    this._msectl.seek(target);\n                    this._transmuxer.seek(Math.floor(target * 1000));\n                    // set currentTime if accurateSeek, or wait for recommend_seekpoint callback\n                    if (this._config.accurateSeek) {\n                      this._requestSetTime = true;\n                      this._mediaElement.currentTime = target;\n                    }\n                  }\n                } else {\n                  window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50);\n                }\n              }\n            };\n            FlvPlayer.prototype._checkAndResumeStuckPlayback = function (stalled) {\n              var media = this._mediaElement;\n              if (stalled || !this._receivedCanPlay || media.readyState < 2) {\n                // HAVE_CURRENT_DATA\n                var buffered = media.buffered;\n                if (buffered.length > 0 && media.currentTime < buffered.start(0)) {\n                  _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.w(this.TAG, \"Playback seems stuck at \" + media.currentTime + \", seek to \" + buffered.start(0));\n                  this._requestSetTime = true;\n                  this._mediaElement.currentTime = buffered.start(0);\n                  this._mediaElement.removeEventListener('progress', this.e.onvProgress);\n                }\n              } else {\n                // Playback didn't stuck, remove progress event listener\n                this._mediaElement.removeEventListener('progress', this.e.onvProgress);\n              }\n            };\n            FlvPlayer.prototype._onvLoadedMetadata = function (e) {\n              if (this._pendingSeekTime != null) {\n                this._mediaElement.currentTime = this._pendingSeekTime;\n                this._pendingSeekTime = null;\n              }\n            };\n            FlvPlayer.prototype._onvSeeking = function (e) {\n              var target = this._mediaElement.currentTime;\n              var buffered = this._mediaElement.buffered;\n              if (this._requestSetTime) {\n                this._requestSetTime = false;\n                return;\n              }\n              if (target < 1.0 && buffered.length > 0) {\n                // seek to video begin, set currentTime directly if beginPTS buffered\n                var videoBeginTime = buffered.start(0);\n                if (videoBeginTime < 1.0 && target < videoBeginTime || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.safari) {\n                  this._requestSetTime = true;\n                  // also workaround for Safari: Seek to 0 may cause video stuck, use 0.1 to avoid\n                  this._mediaElement.currentTime = _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.safari ? 0.1 : videoBeginTime;\n                  return;\n                }\n              }\n              if (this._isTimepointBuffered(target)) {\n                if (this._alwaysSeekKeyframe) {\n                  var idr = this._msectl.getNearestKeyframe(Math.floor(target * 1000));\n                  if (idr != null) {\n                    this._requestSetTime = true;\n                    this._mediaElement.currentTime = idr.dts / 1000;\n                  }\n                }\n                if (this._progressChecker != null) {\n                  this._checkProgressAndResume();\n                }\n                return;\n              }\n              this._seekpointRecord = {\n                seekPoint: target,\n                recordTime: this._now()\n              };\n              window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50);\n            };\n            FlvPlayer.prototype._onvCanPlay = function (e) {\n              this._receivedCanPlay = true;\n              this._mediaElement.removeEventListener('canplay', this.e.onvCanPlay);\n            };\n            FlvPlayer.prototype._onvStalled = function (e) {\n              this._checkAndResumeStuckPlayback(true);\n            };\n            FlvPlayer.prototype._onvProgress = function (e) {\n              this._checkAndResumeStuckPlayback();\n            };\n            return FlvPlayer;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = FlvPlayer;\n\n          /***/\n        },\n\n        /***/\"./src/player/native-player.js\":\n        /*!*************************************!*\\\n          !*** ./src/player/native-player.js ***!\n          \\*************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_384392__) {\n          \"use strict\";\n\n          __nested_webpack_require_384392__.r(__webpack_exports__);\n          /* harmony import */\n          var events__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_384392__( /*! events */\"./node_modules/events/events.js\");\n          /* harmony import */\n          var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nested_webpack_require_384392__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n          /* harmony import */\n          var _player_events_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_384392__( /*! ./player-events.js */\"./src/player/player-events.js\");\n          /* harmony import */\n          var _config_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_384392__( /*! ../config.js */\"./src/config.js\");\n          /* harmony import */\n          var _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_384392__( /*! ../utils/exception.js */\"./src/utils/exception.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          // Player wrapper for browser's native player (HTMLVideoElement) without MediaSource src. \n          var NativePlayer = /** @class */function () {\n            function NativePlayer(mediaDataSource, config) {\n              this.TAG = 'NativePlayer';\n              this._type = 'NativePlayer';\n              this._emitter = new (events__WEBPACK_IMPORTED_MODULE_0___default())();\n              this._config = (0, _config_js__WEBPACK_IMPORTED_MODULE_2__.createDefaultConfig)();\n              if (typeof config === 'object') {\n                Object.assign(this._config, config);\n              }\n              if (mediaDataSource.type.toLowerCase() === 'flv') {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__.InvalidArgumentException('NativePlayer does\\'t support flv MediaDataSource input!');\n              }\n              if (mediaDataSource.hasOwnProperty('segments')) {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__.InvalidArgumentException(\"NativePlayer(\" + mediaDataSource.type + \") doesn't support multipart playback!\");\n              }\n              this.e = {\n                onvLoadedMetadata: this._onvLoadedMetadata.bind(this)\n              };\n              this._pendingSeekTime = null;\n              this._statisticsReporter = null;\n              this._mediaDataSource = mediaDataSource;\n              this._mediaElement = null;\n            }\n            NativePlayer.prototype.destroy = function () {\n              if (this._mediaElement) {\n                this.unload();\n                this.detachMediaElement();\n              }\n              this.e = null;\n              this._mediaDataSource = null;\n              this._emitter.removeAllListeners();\n              this._emitter = null;\n            };\n            NativePlayer.prototype.on = function (event, listener) {\n              var _this = this;\n              if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_1__.default.MEDIA_INFO) {\n                if (this._mediaElement != null && this._mediaElement.readyState !== 0) {\n                  // HAVE_NOTHING\n                  Promise.resolve().then(function () {\n                    _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__.default.MEDIA_INFO, _this.mediaInfo);\n                  });\n                }\n              } else if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_1__.default.STATISTICS_INFO) {\n                if (this._mediaElement != null && this._mediaElement.readyState !== 0) {\n                  Promise.resolve().then(function () {\n                    _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__.default.STATISTICS_INFO, _this.statisticsInfo);\n                  });\n                }\n              }\n              this._emitter.addListener(event, listener);\n            };\n            NativePlayer.prototype.off = function (event, listener) {\n              this._emitter.removeListener(event, listener);\n            };\n            NativePlayer.prototype.attachMediaElement = function (mediaElement) {\n              this._mediaElement = mediaElement;\n              mediaElement.addEventListener('loadedmetadata', this.e.onvLoadedMetadata);\n              if (this._pendingSeekTime != null) {\n                try {\n                  mediaElement.currentTime = this._pendingSeekTime;\n                  this._pendingSeekTime = null;\n                } catch (e) {\n                  // IE11 may throw InvalidStateError if readyState === 0\n                  // Defer set currentTime operation after loadedmetadata\n                }\n              }\n            };\n            NativePlayer.prototype.detachMediaElement = function () {\n              if (this._mediaElement) {\n                this._mediaElement.src = '';\n                this._mediaElement.removeAttribute('src');\n                this._mediaElement.removeEventListener('loadedmetadata', this.e.onvLoadedMetadata);\n                this._mediaElement = null;\n              }\n              if (this._statisticsReporter != null) {\n                window.clearInterval(this._statisticsReporter);\n                this._statisticsReporter = null;\n              }\n            };\n            NativePlayer.prototype.load = function () {\n              if (!this._mediaElement) {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__.IllegalStateException('HTMLMediaElement must be attached before load()!');\n              }\n              this._mediaElement.src = this._mediaDataSource.url;\n              if (this._mediaElement.readyState > 0) {\n                this._mediaElement.currentTime = 0;\n              }\n              this._mediaElement.preload = 'auto';\n              this._mediaElement.load();\n              this._statisticsReporter = window.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval);\n            };\n            NativePlayer.prototype.unload = function () {\n              if (this._mediaElement) {\n                this._mediaElement.src = '';\n                this._mediaElement.removeAttribute('src');\n              }\n              if (this._statisticsReporter != null) {\n                window.clearInterval(this._statisticsReporter);\n                this._statisticsReporter = null;\n              }\n            };\n            NativePlayer.prototype.play = function () {\n              return this._mediaElement.play();\n            };\n            NativePlayer.prototype.pause = function () {\n              this._mediaElement.pause();\n            };\n            Object.defineProperty(NativePlayer.prototype, \"type\", {\n              get: function () {\n                return this._type;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(NativePlayer.prototype, \"buffered\", {\n              get: function () {\n                return this._mediaElement.buffered;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(NativePlayer.prototype, \"duration\", {\n              get: function () {\n                return this._mediaElement.duration;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(NativePlayer.prototype, \"volume\", {\n              get: function () {\n                return this._mediaElement.volume;\n              },\n              set: function (value) {\n                this._mediaElement.volume = value;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(NativePlayer.prototype, \"muted\", {\n              get: function () {\n                return this._mediaElement.muted;\n              },\n              set: function (muted) {\n                this._mediaElement.muted = muted;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(NativePlayer.prototype, \"currentTime\", {\n              get: function () {\n                if (this._mediaElement) {\n                  return this._mediaElement.currentTime;\n                }\n                return 0;\n              },\n              set: function (seconds) {\n                if (this._mediaElement) {\n                  this._mediaElement.currentTime = seconds;\n                } else {\n                  this._pendingSeekTime = seconds;\n                }\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(NativePlayer.prototype, \"mediaInfo\", {\n              get: function () {\n                var mediaPrefix = this._mediaElement instanceof HTMLAudioElement ? 'audio/' : 'video/';\n                var info = {\n                  mimeType: mediaPrefix + this._mediaDataSource.type\n                };\n                if (this._mediaElement) {\n                  info.duration = Math.floor(this._mediaElement.duration * 1000);\n                  if (this._mediaElement instanceof HTMLVideoElement) {\n                    info.width = this._mediaElement.videoWidth;\n                    info.height = this._mediaElement.videoHeight;\n                  }\n                }\n                return info;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(NativePlayer.prototype, \"statisticsInfo\", {\n              get: function () {\n                var info = {\n                  playerType: this._type,\n                  url: this._mediaDataSource.url\n                };\n                if (!(this._mediaElement instanceof HTMLVideoElement)) {\n                  return info;\n                }\n                var hasQualityInfo = true;\n                var decoded = 0;\n                var dropped = 0;\n                if (this._mediaElement.getVideoPlaybackQuality) {\n                  var quality = this._mediaElement.getVideoPlaybackQuality();\n                  decoded = quality.totalVideoFrames;\n                  dropped = quality.droppedVideoFrames;\n                } else if (this._mediaElement.webkitDecodedFrameCount != undefined) {\n                  decoded = this._mediaElement.webkitDecodedFrameCount;\n                  dropped = this._mediaElement.webkitDroppedFrameCount;\n                } else {\n                  hasQualityInfo = false;\n                }\n                if (hasQualityInfo) {\n                  info.decodedFrames = decoded;\n                  info.droppedFrames = dropped;\n                }\n                return info;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            NativePlayer.prototype._onvLoadedMetadata = function (e) {\n              if (this._pendingSeekTime != null) {\n                this._mediaElement.currentTime = this._pendingSeekTime;\n                this._pendingSeekTime = null;\n              }\n              this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__.default.MEDIA_INFO, this.mediaInfo);\n            };\n            NativePlayer.prototype._reportStatisticsInfo = function () {\n              this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__.default.STATISTICS_INFO, this.statisticsInfo);\n            };\n            return NativePlayer;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = NativePlayer;\n\n          /***/\n        },\n\n        /***/\"./src/player/player-errors.js\":\n        /*!*************************************!*\\\n          !*** ./src/player/player-errors.js ***!\n          \\*************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_396941__) {\n          \"use strict\";\n\n          __nested_webpack_require_396941__.r(__webpack_exports__);\n          /* harmony export */\n          __nested_webpack_require_396941__.d(__webpack_exports__, {\n            /* harmony export */\"ErrorTypes\": function () {\n              return (/* binding */ErrorTypes\n              );\n            },\n            /* harmony export */\"ErrorDetails\": function () {\n              return (/* binding */ErrorDetails\n              );\n            }\n            /* harmony export */\n          });\n          /* harmony import */\n          var _io_loader_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_396941__( /*! ../io/loader.js */\"./src/io/loader.js\");\n          /* harmony import */\n          var _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_396941__( /*! ../demux/demux-errors.js */\"./src/demux/demux-errors.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          var ErrorTypes = {\n            NETWORK_ERROR: 'NetworkError',\n            MEDIA_ERROR: 'MediaError',\n            OTHER_ERROR: 'OtherError'\n          };\n          var ErrorDetails = {\n            NETWORK_EXCEPTION: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderErrors.EXCEPTION,\n            NETWORK_STATUS_CODE_INVALID: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderErrors.HTTP_STATUS_CODE_INVALID,\n            NETWORK_TIMEOUT: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderErrors.CONNECTING_TIMEOUT,\n            NETWORK_UNRECOVERABLE_EARLY_EOF: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderErrors.UNRECOVERABLE_EARLY_EOF,\n            MEDIA_MSE_ERROR: 'MediaMSEError',\n            MEDIA_FORMAT_ERROR: _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__.default.FORMAT_ERROR,\n            MEDIA_FORMAT_UNSUPPORTED: _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__.default.FORMAT_UNSUPPORTED,\n            MEDIA_CODEC_UNSUPPORTED: _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__.default.CODEC_UNSUPPORTED\n          };\n\n          /***/\n        },\n\n        /***/\"./src/player/player-events.js\":\n        /*!*************************************!*\\\n          !*** ./src/player/player-events.js ***!\n          \\*************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_399969__) {\n          \"use strict\";\n\n          __nested_webpack_require_399969__.r(__webpack_exports__);\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var PlayerEvents = {\n            ERROR: 'error',\n            LOADING_COMPLETE: 'loading_complete',\n            RECOVERED_EARLY_EOF: 'recovered_early_eof',\n            MEDIA_INFO: 'media_info',\n            METADATA_ARRIVED: 'metadata_arrived',\n            SCRIPTDATA_ARRIVED: 'scriptdata_arrived',\n            STATISTICS_INFO: 'statistics_info'\n          };\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = PlayerEvents;\n\n          /***/\n        },\n\n        /***/\"./src/remux/aac-silent.js\":\n        /*!*********************************!*\\\n          !*** ./src/remux/aac-silent.js ***!\n          \\*********************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_401649__) {\n          \"use strict\";\n\n          __nested_webpack_require_401649__.r(__webpack_exports__);\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * This file is modified from dailymotion's hls.js library (hls.js/src/helper/aac.js)\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var AAC = /** @class */function () {\n            function AAC() {}\n            AAC.getSilentFrame = function (codec, channelCount) {\n              if (codec === 'mp4a.40.2') {\n                // handle LC-AAC\n                if (channelCount === 1) {\n                  return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]);\n                } else if (channelCount === 2) {\n                  return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]);\n                } else if (channelCount === 3) {\n                  return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]);\n                } else if (channelCount === 4) {\n                  return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38]);\n                } else if (channelCount === 5) {\n                  return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38]);\n                } else if (channelCount === 6) {\n                  return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2, 0x00, 0x20, 0x08, 0xe0]);\n                }\n              } else {\n                // handle HE-AAC (mp4a.40.5 / mp4a.40.29)\n                if (channelCount === 1) {\n                  // ffmpeg -y -f lavfi -i \"aevalsrc=0:d=0.05\" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n                  return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n                } else if (channelCount === 2) {\n                  // ffmpeg -y -f lavfi -i \"aevalsrc=0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n                  return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n                } else if (channelCount === 3) {\n                  // ffmpeg -y -f lavfi -i \"aevalsrc=0|0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n                  return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n                }\n              }\n              return null;\n            };\n            return AAC;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = AAC;\n\n          /***/\n        },\n\n        /***/\"./src/remux/mp4-generator.js\":\n        /*!************************************!*\\\n          !*** ./src/remux/mp4-generator.js ***!\n          \\************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_406416__) {\n          \"use strict\";\n\n          __nested_webpack_require_406416__.r(__webpack_exports__);\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * This file is derived from dailymotion's hls.js library (hls.js/src/remux/mp4-generator.js)\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          //  MP4 boxes generator for ISO BMFF (ISO Base Media File Format, defined in ISO/IEC 14496-12)\n          var MP4 = /** @class */function () {\n            function MP4() {}\n            MP4.init = function () {\n              MP4.types = {\n                avc1: [],\n                avcC: [],\n                btrt: [],\n                dinf: [],\n                dref: [],\n                esds: [],\n                ftyp: [],\n                hdlr: [],\n                mdat: [],\n                mdhd: [],\n                mdia: [],\n                mfhd: [],\n                minf: [],\n                moof: [],\n                moov: [],\n                mp4a: [],\n                mvex: [],\n                mvhd: [],\n                sdtp: [],\n                stbl: [],\n                stco: [],\n                stsc: [],\n                stsd: [],\n                stsz: [],\n                stts: [],\n                tfdt: [],\n                tfhd: [],\n                traf: [],\n                trak: [],\n                trun: [],\n                trex: [],\n                tkhd: [],\n                vmhd: [],\n                smhd: [],\n                '.mp3': []\n              };\n              for (var name_1 in MP4.types) {\n                if (MP4.types.hasOwnProperty(name_1)) {\n                  MP4.types[name_1] = [name_1.charCodeAt(0), name_1.charCodeAt(1), name_1.charCodeAt(2), name_1.charCodeAt(3)];\n                }\n              }\n              var constants = MP4.constants = {};\n              constants.FTYP = new Uint8Array([0x69, 0x73, 0x6F, 0x6D, 0x0, 0x0, 0x0, 0x1, 0x69, 0x73, 0x6F, 0x6D, 0x61, 0x76, 0x63, 0x31 // avc1\n              ]);\n\n              constants.STSD_PREFIX = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 // entry_count\n              ]);\n\n              constants.STTS = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // entry_count\n              ]);\n\n              constants.STSC = constants.STCO = constants.STTS;\n              constants.STSZ = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // sample_count\n              ]);\n\n              constants.HDLR_VIDEO = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x69, 0x64, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x69, 0x64, 0x65, 0x6F, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00 // name: VideoHandler\n              ]);\n\n              constants.HDLR_AUDIO = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x6F, 0x75, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x6F, 0x75, 0x6E, 0x64, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00 // name: SoundHandler\n              ]);\n\n              constants.DREF = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x75, 0x72, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x01 // version(0) + flags\n              ]);\n              // Sound media header\n              constants.SMHD = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // balance(2) + reserved(2)\n              ]);\n              // video media header\n              constants.VMHD = new Uint8Array([0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);\n            };\n            // Generate a box\n            MP4.box = function (type) {\n              var size = 8;\n              var result = null;\n              var datas = Array.prototype.slice.call(arguments, 1);\n              var arrayCount = datas.length;\n              for (var i = 0; i < arrayCount; i++) {\n                size += datas[i].byteLength;\n              }\n              result = new Uint8Array(size);\n              result[0] = size >>> 24 & 0xFF; // size\n              result[1] = size >>> 16 & 0xFF;\n              result[2] = size >>> 8 & 0xFF;\n              result[3] = size & 0xFF;\n              result.set(type, 4); // type\n              var offset = 8;\n              for (var i = 0; i < arrayCount; i++) {\n                // data body\n                result.set(datas[i], offset);\n                offset += datas[i].byteLength;\n              }\n              return result;\n            };\n            // emit ftyp & moov\n            MP4.generateInitSegment = function (meta) {\n              var ftyp = MP4.box(MP4.types.ftyp, MP4.constants.FTYP);\n              var moov = MP4.moov(meta);\n              var result = new Uint8Array(ftyp.byteLength + moov.byteLength);\n              result.set(ftyp, 0);\n              result.set(moov, ftyp.byteLength);\n              return result;\n            };\n            // Movie metadata box\n            MP4.moov = function (meta) {\n              var mvhd = MP4.mvhd(meta.timescale, meta.duration);\n              var trak = MP4.trak(meta);\n              var mvex = MP4.mvex(meta);\n              return MP4.box(MP4.types.moov, mvhd, trak, mvex);\n            };\n            // Movie header box\n            MP4.mvhd = function (timescale, duration) {\n              return MP4.box(MP4.types.mvhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, timescale >>> 24 & 0xFF, timescale >>> 16 & 0xFF, timescale >>> 8 & 0xFF, timescale & 0xFF, duration >>> 24 & 0xFF, duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF // next_track_ID\n              ]));\n            };\n            // Track box\n            MP4.trak = function (meta) {\n              return MP4.box(MP4.types.trak, MP4.tkhd(meta), MP4.mdia(meta));\n            };\n            // Track header box\n            MP4.tkhd = function (meta) {\n              var trackId = meta.id,\n                duration = meta.duration;\n              var width = meta.presentWidth,\n                height = meta.presentHeight;\n              return MP4.box(MP4.types.tkhd, new Uint8Array([0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, trackId >>> 24 & 0xFF, trackId >>> 16 & 0xFF, trackId >>> 8 & 0xFF, trackId & 0xFF, 0x00, 0x00, 0x00, 0x00, duration >>> 24 & 0xFF, duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, width >>> 8 & 0xFF, width & 0xFF, 0x00, 0x00, height >>> 8 & 0xFF, height & 0xFF, 0x00, 0x00]));\n            };\n            // Media Box\n            MP4.mdia = function (meta) {\n              return MP4.box(MP4.types.mdia, MP4.mdhd(meta), MP4.hdlr(meta), MP4.minf(meta));\n            };\n            // Media header box\n            MP4.mdhd = function (meta) {\n              var timescale = meta.timescale;\n              var duration = meta.duration;\n              return MP4.box(MP4.types.mdhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, timescale >>> 24 & 0xFF, timescale >>> 16 & 0xFF, timescale >>> 8 & 0xFF, timescale & 0xFF, duration >>> 24 & 0xFF, duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, 0x55, 0xC4, 0x00, 0x00 // pre_defined = 0\n              ]));\n            };\n            // Media handler reference box\n            MP4.hdlr = function (meta) {\n              var data = null;\n              if (meta.type === 'audio') {\n                data = MP4.constants.HDLR_AUDIO;\n              } else {\n                data = MP4.constants.HDLR_VIDEO;\n              }\n              return MP4.box(MP4.types.hdlr, data);\n            };\n            // Media infomation box\n            MP4.minf = function (meta) {\n              var xmhd = null;\n              if (meta.type === 'audio') {\n                xmhd = MP4.box(MP4.types.smhd, MP4.constants.SMHD);\n              } else {\n                xmhd = MP4.box(MP4.types.vmhd, MP4.constants.VMHD);\n              }\n              return MP4.box(MP4.types.minf, xmhd, MP4.dinf(), MP4.stbl(meta));\n            };\n            // Data infomation box\n            MP4.dinf = function () {\n              var result = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, MP4.constants.DREF));\n              return result;\n            };\n            // Sample table box\n            MP4.stbl = function (meta) {\n              var result = MP4.box(MP4.types.stbl,\n              // type: stbl\n              MP4.stsd(meta),\n              // Sample Description Table\n              MP4.box(MP4.types.stts, MP4.constants.STTS),\n              // Time-To-Sample\n              MP4.box(MP4.types.stsc, MP4.constants.STSC),\n              // Sample-To-Chunk\n              MP4.box(MP4.types.stsz, MP4.constants.STSZ),\n              // Sample size\n              MP4.box(MP4.types.stco, MP4.constants.STCO) // Chunk offset\n              );\n\n              return result;\n            };\n            // Sample description box\n            MP4.stsd = function (meta) {\n              if (meta.type === 'audio') {\n                if (meta.codec === 'mp3') {\n                  return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp3(meta));\n                }\n                // else: aac -> mp4a\n                return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp4a(meta));\n              } else {\n                return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.avc1(meta));\n              }\n            };\n            MP4.mp3 = function (meta) {\n              var channelCount = meta.channelCount;\n              var sampleRate = meta.audioSampleRate;\n              var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, channelCount, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, sampleRate >>> 8 & 0xFF, sampleRate & 0xFF, 0x00, 0x00]);\n              return MP4.box(MP4.types['.mp3'], data);\n            };\n            MP4.mp4a = function (meta) {\n              var channelCount = meta.channelCount;\n              var sampleRate = meta.audioSampleRate;\n              var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, channelCount, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, sampleRate >>> 8 & 0xFF, sampleRate & 0xFF, 0x00, 0x00]);\n              return MP4.box(MP4.types.mp4a, data, MP4.esds(meta));\n            };\n            MP4.esds = function (meta) {\n              var config = meta.config || [];\n              var configSize = config.length;\n              var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x03, 0x17 + configSize, 0x00, 0x01, 0x00, 0x04, 0x0F + configSize, 0x40, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05 // descriptor_type\n              ].concat([configSize]).concat(config).concat([0x06, 0x01, 0x02 // GASpecificConfig\n              ]));\n\n              return MP4.box(MP4.types.esds, data);\n            };\n            MP4.avc1 = function (meta) {\n              var avcc = meta.avcc;\n              var width = meta.codecWidth,\n                height = meta.codecHeight;\n              var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, width >>> 8 & 0xFF, width & 0xFF, height >>> 8 & 0xFF, height & 0xFF, 0x00, 0x48, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0A, 0x78, 0x71, 0x71, 0x2F, 0x66, 0x6C, 0x76, 0x2E, 0x6A, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF // pre_defined = -1\n              ]);\n\n              return MP4.box(MP4.types.avc1, data, MP4.box(MP4.types.avcC, avcc));\n            };\n            // Movie Extends box\n            MP4.mvex = function (meta) {\n              return MP4.box(MP4.types.mvex, MP4.trex(meta));\n            };\n            // Track Extends box\n            MP4.trex = function (meta) {\n              var trackId = meta.id;\n              var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, trackId >>> 24 & 0xFF, trackId >>> 16 & 0xFF, trackId >>> 8 & 0xFF, trackId & 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n              ]);\n\n              return MP4.box(MP4.types.trex, data);\n            };\n            // Movie fragment box\n            MP4.moof = function (track, baseMediaDecodeTime) {\n              return MP4.box(MP4.types.moof, MP4.mfhd(track.sequenceNumber), MP4.traf(track, baseMediaDecodeTime));\n            };\n            MP4.mfhd = function (sequenceNumber) {\n              var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, sequenceNumber >>> 24 & 0xFF, sequenceNumber >>> 16 & 0xFF, sequenceNumber >>> 8 & 0xFF, sequenceNumber & 0xFF]);\n              return MP4.box(MP4.types.mfhd, data);\n            };\n            // Track fragment box\n            MP4.traf = function (track, baseMediaDecodeTime) {\n              var trackId = track.id;\n              // Track fragment header box\n              var tfhd = MP4.box(MP4.types.tfhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, trackId >>> 24 & 0xFF, trackId >>> 16 & 0xFF, trackId >>> 8 & 0xFF, trackId & 0xFF]));\n              // Track Fragment Decode Time\n              var tfdt = MP4.box(MP4.types.tfdt, new Uint8Array([0x00, 0x00, 0x00, 0x00, baseMediaDecodeTime >>> 24 & 0xFF, baseMediaDecodeTime >>> 16 & 0xFF, baseMediaDecodeTime >>> 8 & 0xFF, baseMediaDecodeTime & 0xFF]));\n              var sdtp = MP4.sdtp(track);\n              var trun = MP4.trun(track, sdtp.byteLength + 16 + 16 + 8 + 16 + 8 + 8);\n              return MP4.box(MP4.types.traf, tfhd, tfdt, trun, sdtp);\n            };\n            // Sample Dependency Type box\n            MP4.sdtp = function (track) {\n              var samples = track.samples || [];\n              var sampleCount = samples.length;\n              var data = new Uint8Array(4 + sampleCount);\n              // 0~4 bytes: version(0) & flags\n              for (var i = 0; i < sampleCount; i++) {\n                var flags = samples[i].flags;\n                data[i + 4] = flags.isLeading << 6 // is_leading: 2 (bit)\n                | flags.dependsOn << 4 // sample_depends_on\n                | flags.isDependedOn << 2 // sample_is_depended_on\n                | flags.hasRedundancy; // sample_has_redundancy\n              }\n\n              return MP4.box(MP4.types.sdtp, data);\n            };\n            // Track fragment run box\n            MP4.trun = function (track, offset) {\n              var samples = track.samples || [];\n              var sampleCount = samples.length;\n              var dataSize = 12 + 16 * sampleCount;\n              var data = new Uint8Array(dataSize);\n              offset += 8 + dataSize;\n              data.set([0x00, 0x00, 0x0F, 0x01, sampleCount >>> 24 & 0xFF, sampleCount >>> 16 & 0xFF, sampleCount >>> 8 & 0xFF, sampleCount & 0xFF, offset >>> 24 & 0xFF, offset >>> 16 & 0xFF, offset >>> 8 & 0xFF, offset & 0xFF], 0);\n              for (var i = 0; i < sampleCount; i++) {\n                var duration = samples[i].duration;\n                var size = samples[i].size;\n                var flags = samples[i].flags;\n                var cts = samples[i].cts;\n                data.set([duration >>> 24 & 0xFF, duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, size >>> 24 & 0xFF, size >>> 16 & 0xFF, size >>> 8 & 0xFF, size & 0xFF, flags.isLeading << 2 | flags.dependsOn, flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.isNonSync, 0x00, 0x00, cts >>> 24 & 0xFF, cts >>> 16 & 0xFF, cts >>> 8 & 0xFF, cts & 0xFF], 12 + 16 * i);\n              }\n              return MP4.box(MP4.types.trun, data);\n            };\n            MP4.mdat = function (data) {\n              return MP4.box(MP4.types.mdat, data);\n            };\n            return MP4;\n          }();\n          MP4.init();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = MP4;\n\n          /***/\n        },\n\n        /***/\"./src/remux/mp4-remuxer.js\":\n        /*!**********************************!*\\\n          !*** ./src/remux/mp4-remuxer.js ***!\n          \\**********************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_424239__) {\n          \"use strict\";\n\n          __nested_webpack_require_424239__.r(__webpack_exports__);\n          /* harmony import */\n          var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_424239__( /*! ../utils/logger.js */\"./src/utils/logger.js\");\n          /* harmony import */\n          var _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_424239__( /*! ./mp4-generator.js */\"./src/remux/mp4-generator.js\");\n          /* harmony import */\n          var _aac_silent_js__WEBPACK_IMPORTED_MODULE_2__ = __nested_webpack_require_424239__( /*! ./aac-silent.js */\"./src/remux/aac-silent.js\");\n          /* harmony import */\n          var _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__ = __nested_webpack_require_424239__( /*! ../utils/browser.js */\"./src/utils/browser.js\");\n          /* harmony import */\n          var _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__ = __nested_webpack_require_424239__( /*! ../core/media-segment-info.js */\"./src/core/media-segment-info.js\");\n          /* harmony import */\n          var _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__ = __nested_webpack_require_424239__( /*! ../utils/exception.js */\"./src/utils/exception.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          // Fragmented mp4 remuxer\n          var MP4Remuxer = /** @class */function () {\n            function MP4Remuxer(config) {\n              this.TAG = 'MP4Remuxer';\n              this._config = config;\n              this._isLive = config.isLive === true ? true : false;\n              this._dtsBase = -1;\n              this._dtsBaseInited = false;\n              this._audioDtsBase = Infinity;\n              this._videoDtsBase = Infinity;\n              this._audioNextDts = undefined;\n              this._videoNextDts = undefined;\n              this._audioStashedLastSample = null;\n              this._videoStashedLastSample = null;\n              this._audioMeta = null;\n              this._videoMeta = null;\n              this._audioSegmentInfoList = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.MediaSegmentInfoList('audio');\n              this._videoSegmentInfoList = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.MediaSegmentInfoList('video');\n              this._onInitSegment = null;\n              this._onMediaSegment = null;\n              // Workaround for chrome < 50: Always force first sample as a Random Access Point in media segment\n              // see https://bugs.chromium.org/p/chromium/issues/detail?id=229412\n              this._forceFirstIDR = _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.chrome && (_utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.version.major < 50 || _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.version.major === 50 && _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.version.build < 2661) ? true : false;\n              // Workaround for IE11/Edge: Fill silent aac frame after keyframe-seeking\n              // Make audio beginDts equals with video beginDts, in order to fix seek freeze\n              this._fillSilentAfterSeek = _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.msedge || _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.msie;\n              // While only FireFox supports 'audio/mp4, codecs=\"mp3\"', use 'audio/mpeg' for chrome, safari, ...\n              this._mp3UseMpegAudio = !_utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.firefox;\n              this._fillAudioTimestampGap = this._config.fixAudioTimestampGap;\n            }\n            MP4Remuxer.prototype.destroy = function () {\n              this._dtsBase = -1;\n              this._dtsBaseInited = false;\n              this._audioMeta = null;\n              this._videoMeta = null;\n              this._audioSegmentInfoList.clear();\n              this._audioSegmentInfoList = null;\n              this._videoSegmentInfoList.clear();\n              this._videoSegmentInfoList = null;\n              this._onInitSegment = null;\n              this._onMediaSegment = null;\n            };\n            MP4Remuxer.prototype.bindDataSource = function (producer) {\n              producer.onDataAvailable = this.remux.bind(this);\n              producer.onTrackMetadata = this._onTrackMetadataReceived.bind(this);\n              return this;\n            };\n            Object.defineProperty(MP4Remuxer.prototype, \"onInitSegment\", {\n              /* prototype: function onInitSegment(type: string, initSegment: ArrayBuffer): void\n                 InitSegment: {\n                     type: string,\n                     data: ArrayBuffer,\n                     codec: string,\n                     container: string\n                 }\n              */\n              get: function () {\n                return this._onInitSegment;\n              },\n              set: function (callback) {\n                this._onInitSegment = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(MP4Remuxer.prototype, \"onMediaSegment\", {\n              /* prototype: function onMediaSegment(type: string, mediaSegment: MediaSegment): void\n                 MediaSegment: {\n                     type: string,\n                     data: ArrayBuffer,\n                     sampleCount: int32\n                     info: MediaSegmentInfo\n                 }\n              */\n              get: function () {\n                return this._onMediaSegment;\n              },\n              set: function (callback) {\n                this._onMediaSegment = callback;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            MP4Remuxer.prototype.insertDiscontinuity = function () {\n              this._audioNextDts = this._videoNextDts = undefined;\n            };\n            MP4Remuxer.prototype.seek = function (originalDts) {\n              this._audioStashedLastSample = null;\n              this._videoStashedLastSample = null;\n              this._videoSegmentInfoList.clear();\n              this._audioSegmentInfoList.clear();\n            };\n            MP4Remuxer.prototype.remux = function (audioTrack, videoTrack) {\n              if (!this._onMediaSegment) {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__.IllegalStateException('MP4Remuxer: onMediaSegment callback must be specificed!');\n              }\n              if (!this._dtsBaseInited) {\n                this._calculateDtsBase(audioTrack, videoTrack);\n              }\n              this._remuxVideo(videoTrack);\n              this._remuxAudio(audioTrack);\n            };\n            MP4Remuxer.prototype._onTrackMetadataReceived = function (type, metadata) {\n              var metabox = null;\n              var container = 'mp4';\n              var codec = metadata.codec;\n              if (type === 'audio') {\n                this._audioMeta = metadata;\n                if (metadata.codec === 'mp3' && this._mp3UseMpegAudio) {\n                  // 'audio/mpeg' for MP3 audio track\n                  container = 'mpeg';\n                  codec = '';\n                  metabox = new Uint8Array();\n                } else {\n                  // 'audio/mp4, codecs=\"codec\"'\n                  metabox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__.default.generateInitSegment(metadata);\n                }\n              } else if (type === 'video') {\n                this._videoMeta = metadata;\n                metabox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__.default.generateInitSegment(metadata);\n              } else {\n                return;\n              }\n              // dispatch metabox (Initialization Segment)\n              if (!this._onInitSegment) {\n                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__.IllegalStateException('MP4Remuxer: onInitSegment callback must be specified!');\n              }\n              this._onInitSegment(type, {\n                type: type,\n                data: metabox.buffer,\n                codec: codec,\n                container: type + \"/\" + container,\n                mediaDuration: metadata.duration // in timescale 1000 (milliseconds)\n              });\n            };\n\n            MP4Remuxer.prototype._calculateDtsBase = function (audioTrack, videoTrack) {\n              if (this._dtsBaseInited) {\n                return;\n              }\n              if (audioTrack.samples && audioTrack.samples.length) {\n                this._audioDtsBase = audioTrack.samples[0].dts;\n              }\n              if (videoTrack.samples && videoTrack.samples.length) {\n                this._videoDtsBase = videoTrack.samples[0].dts;\n              }\n              this._dtsBase = Math.min(this._audioDtsBase, this._videoDtsBase);\n              this._dtsBaseInited = true;\n            };\n            MP4Remuxer.prototype.flushStashedSamples = function () {\n              var videoSample = this._videoStashedLastSample;\n              var audioSample = this._audioStashedLastSample;\n              var videoTrack = {\n                type: 'video',\n                id: 1,\n                sequenceNumber: 0,\n                samples: [],\n                length: 0\n              };\n              if (videoSample != null) {\n                videoTrack.samples.push(videoSample);\n                videoTrack.length = videoSample.length;\n              }\n              var audioTrack = {\n                type: 'audio',\n                id: 2,\n                sequenceNumber: 0,\n                samples: [],\n                length: 0\n              };\n              if (audioSample != null) {\n                audioTrack.samples.push(audioSample);\n                audioTrack.length = audioSample.length;\n              }\n              this._videoStashedLastSample = null;\n              this._audioStashedLastSample = null;\n              this._remuxVideo(videoTrack, true);\n              this._remuxAudio(audioTrack, true);\n            };\n            MP4Remuxer.prototype._remuxAudio = function (audioTrack, force) {\n              if (this._audioMeta == null) {\n                return;\n              }\n              var track = audioTrack;\n              var samples = track.samples;\n              var dtsCorrection = undefined;\n              var firstDts = -1,\n                lastDts = -1,\n                lastPts = -1;\n              var refSampleDuration = this._audioMeta.refSampleDuration;\n              var mpegRawTrack = this._audioMeta.codec === 'mp3' && this._mp3UseMpegAudio;\n              var firstSegmentAfterSeek = this._dtsBaseInited && this._audioNextDts === undefined;\n              var insertPrefixSilentFrame = false;\n              if (!samples || samples.length === 0) {\n                return;\n              }\n              if (samples.length === 1 && !force) {\n                // If [sample count in current batch] === 1 && (force != true)\n                // Ignore and keep in demuxer's queue\n                return;\n              } // else if (force === true) do remux\n              var offset = 0;\n              var mdatbox = null;\n              var mdatBytes = 0;\n              // calculate initial mdat size\n              if (mpegRawTrack) {\n                // for raw mpeg buffer\n                offset = 0;\n                mdatBytes = track.length;\n              } else {\n                // for fmp4 mdat box\n                offset = 8; // size + type\n                mdatBytes = 8 + track.length;\n              }\n              var lastSample = null;\n              // Pop the lastSample and waiting for stash\n              if (samples.length > 1) {\n                lastSample = samples.pop();\n                mdatBytes -= lastSample.length;\n              }\n              // Insert [stashed lastSample in the previous batch] to the front\n              if (this._audioStashedLastSample != null) {\n                var sample = this._audioStashedLastSample;\n                this._audioStashedLastSample = null;\n                samples.unshift(sample);\n                mdatBytes += sample.length;\n              }\n              // Stash the lastSample of current batch, waiting for next batch\n              if (lastSample != null) {\n                this._audioStashedLastSample = lastSample;\n              }\n              var firstSampleOriginalDts = samples[0].dts - this._dtsBase;\n              // calculate dtsCorrection\n              if (this._audioNextDts) {\n                dtsCorrection = firstSampleOriginalDts - this._audioNextDts;\n              } else {\n                // this._audioNextDts == undefined\n                if (this._audioSegmentInfoList.isEmpty()) {\n                  dtsCorrection = 0;\n                  if (this._fillSilentAfterSeek && !this._videoSegmentInfoList.isEmpty()) {\n                    if (this._audioMeta.originalCodec !== 'mp3') {\n                      insertPrefixSilentFrame = true;\n                    }\n                  }\n                } else {\n                  var lastSample_1 = this._audioSegmentInfoList.getLastSampleBefore(firstSampleOriginalDts);\n                  if (lastSample_1 != null) {\n                    var distance = firstSampleOriginalDts - (lastSample_1.originalDts + lastSample_1.duration);\n                    if (distance <= 3) {\n                      distance = 0;\n                    }\n                    var expectedDts = lastSample_1.dts + lastSample_1.duration + distance;\n                    dtsCorrection = firstSampleOriginalDts - expectedDts;\n                  } else {\n                    // lastSample == null, cannot found\n                    dtsCorrection = 0;\n                  }\n                }\n              }\n              if (insertPrefixSilentFrame) {\n                // align audio segment beginDts to match with current video segment's beginDts\n                var firstSampleDts = firstSampleOriginalDts - dtsCorrection;\n                var videoSegment = this._videoSegmentInfoList.getLastSegmentBefore(firstSampleOriginalDts);\n                if (videoSegment != null && videoSegment.beginDts < firstSampleDts) {\n                  var silentUnit = _aac_silent_js__WEBPACK_IMPORTED_MODULE_2__.default.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount);\n                  if (silentUnit) {\n                    var dts = videoSegment.beginDts;\n                    var silentFrameDuration = firstSampleDts - videoSegment.beginDts;\n                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.v(this.TAG, \"InsertPrefixSilentAudio: dts: \" + dts + \", duration: \" + silentFrameDuration);\n                    samples.unshift({\n                      unit: silentUnit,\n                      dts: dts,\n                      pts: dts\n                    });\n                    mdatBytes += silentUnit.byteLength;\n                  } // silentUnit == null: Cannot generate, skip\n                } else {\n                  insertPrefixSilentFrame = false;\n                }\n              }\n              var mp4Samples = [];\n              // Correct dts for each sample, and calculate sample duration. Then output to mp4Samples\n              for (var i = 0; i < samples.length; i++) {\n                var sample = samples[i];\n                var unit = sample.unit;\n                var originalDts = sample.dts - this._dtsBase;\n                var dts = originalDts;\n                var needFillSilentFrames = false;\n                var silentFrames = null;\n                var sampleDuration = 0;\n                if (originalDts < -0.001) {\n                  continue; //pass the first sample with the invalid dts\n                }\n\n                if (this._audioMeta.codec !== 'mp3') {\n                  // for AAC codec, we need to keep dts increase based on refSampleDuration\n                  var curRefDts = originalDts;\n                  var maxAudioFramesDrift = 3;\n                  if (this._audioNextDts) {\n                    curRefDts = this._audioNextDts;\n                  }\n                  dtsCorrection = originalDts - curRefDts;\n                  if (dtsCorrection <= -maxAudioFramesDrift * refSampleDuration) {\n                    // If we're overlapping by more than maxAudioFramesDrift number of frame, drop this sample\n                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, \"Dropping 1 audio frame (originalDts: \" + originalDts + \" ms ,curRefDts: \" + curRefDts + \" ms)  due to dtsCorrection: \" + dtsCorrection + \" ms overlap.\");\n                    continue;\n                  } else if (dtsCorrection >= maxAudioFramesDrift * refSampleDuration && this._fillAudioTimestampGap && !_utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.safari) {\n                    // Silent frame generation, if large timestamp gap detected && config.fixAudioTimestampGap\n                    needFillSilentFrames = true;\n                    // We need to insert silent frames to fill timestamp gap\n                    var frameCount = Math.floor(dtsCorrection / refSampleDuration);\n                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Large audio timestamp gap detected, may cause AV sync to drift. ' + 'Silent frames will be generated to avoid unsync.\\n' + (\"originalDts: \" + originalDts + \" ms, curRefDts: \" + curRefDts + \" ms, \") + (\"dtsCorrection: \" + Math.round(dtsCorrection) + \" ms, generate: \" + frameCount + \" frames\"));\n                    dts = Math.floor(curRefDts);\n                    sampleDuration = Math.floor(curRefDts + refSampleDuration) - dts;\n                    var silentUnit = _aac_silent_js__WEBPACK_IMPORTED_MODULE_2__.default.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount);\n                    if (silentUnit == null) {\n                      _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Unable to generate silent frame for ' + (this._audioMeta.originalCodec + \" with \" + this._audioMeta.channelCount + \" channels, repeat last frame\"));\n                      // Repeat last frame\n                      silentUnit = unit;\n                    }\n                    silentFrames = [];\n                    for (var j = 0; j < frameCount; j++) {\n                      curRefDts = curRefDts + refSampleDuration;\n                      var intDts = Math.floor(curRefDts); // change to integer\n                      var intDuration = Math.floor(curRefDts + refSampleDuration) - intDts;\n                      var frame = {\n                        dts: intDts,\n                        pts: intDts,\n                        cts: 0,\n                        unit: silentUnit,\n                        size: silentUnit.byteLength,\n                        duration: intDuration,\n                        originalDts: originalDts,\n                        flags: {\n                          isLeading: 0,\n                          dependsOn: 1,\n                          isDependedOn: 0,\n                          hasRedundancy: 0\n                        }\n                      };\n                      silentFrames.push(frame);\n                      mdatBytes += frame.size;\n                      ;\n                    }\n                    this._audioNextDts = curRefDts + refSampleDuration;\n                  } else {\n                    dts = Math.floor(curRefDts);\n                    sampleDuration = Math.floor(curRefDts + refSampleDuration) - dts;\n                    this._audioNextDts = curRefDts + refSampleDuration;\n                  }\n                } else {\n                  // keep the original dts calculate algorithm for mp3\n                  dts = originalDts - dtsCorrection;\n                  if (i !== samples.length - 1) {\n                    var nextDts = samples[i + 1].dts - this._dtsBase - dtsCorrection;\n                    sampleDuration = nextDts - dts;\n                  } else {\n                    // the last sample\n                    if (lastSample != null) {\n                      // use stashed sample's dts to calculate sample duration\n                      var nextDts = lastSample.dts - this._dtsBase - dtsCorrection;\n                      sampleDuration = nextDts - dts;\n                    } else if (mp4Samples.length >= 1) {\n                      // use second last sample duration\n                      sampleDuration = mp4Samples[mp4Samples.length - 1].duration;\n                    } else {\n                      // the only one sample, use reference sample duration\n                      sampleDuration = Math.floor(refSampleDuration);\n                    }\n                  }\n                  this._audioNextDts = dts + sampleDuration;\n                }\n                if (firstDts === -1) {\n                  firstDts = dts;\n                }\n                mp4Samples.push({\n                  dts: dts,\n                  pts: dts,\n                  cts: 0,\n                  unit: sample.unit,\n                  size: sample.unit.byteLength,\n                  duration: sampleDuration,\n                  originalDts: originalDts,\n                  flags: {\n                    isLeading: 0,\n                    dependsOn: 1,\n                    isDependedOn: 0,\n                    hasRedundancy: 0\n                  }\n                });\n                if (needFillSilentFrames) {\n                  // Silent frames should be inserted after wrong-duration frame\n                  mp4Samples.push.apply(mp4Samples, silentFrames);\n                }\n              }\n              if (mp4Samples.length === 0) {\n                //no samples need to remux\n                track.samples = [];\n                track.length = 0;\n                return;\n              }\n              // allocate mdatbox\n              if (mpegRawTrack) {\n                // allocate for raw mpeg buffer\n                mdatbox = new Uint8Array(mdatBytes);\n              } else {\n                // allocate for fmp4 mdat box\n                mdatbox = new Uint8Array(mdatBytes);\n                // size field\n                mdatbox[0] = mdatBytes >>> 24 & 0xFF;\n                mdatbox[1] = mdatBytes >>> 16 & 0xFF;\n                mdatbox[2] = mdatBytes >>> 8 & 0xFF;\n                mdatbox[3] = mdatBytes & 0xFF;\n                // type field (fourCC)\n                mdatbox.set(_mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__.default.types.mdat, 4);\n              }\n              // Write samples into mdatbox\n              for (var i = 0; i < mp4Samples.length; i++) {\n                var unit = mp4Samples[i].unit;\n                mdatbox.set(unit, offset);\n                offset += unit.byteLength;\n              }\n              var latest = mp4Samples[mp4Samples.length - 1];\n              lastDts = latest.dts + latest.duration;\n              //this._audioNextDts = lastDts;\n              // fill media segment info & add to info list\n              var info = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.MediaSegmentInfo();\n              info.beginDts = firstDts;\n              info.endDts = lastDts;\n              info.beginPts = firstDts;\n              info.endPts = lastDts;\n              info.originalBeginDts = mp4Samples[0].originalDts;\n              info.originalEndDts = latest.originalDts + latest.duration;\n              info.firstSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.SampleInfo(mp4Samples[0].dts, mp4Samples[0].pts, mp4Samples[0].duration, mp4Samples[0].originalDts, false);\n              info.lastSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.SampleInfo(latest.dts, latest.pts, latest.duration, latest.originalDts, false);\n              if (!this._isLive) {\n                this._audioSegmentInfoList.append(info);\n              }\n              track.samples = mp4Samples;\n              track.sequenceNumber++;\n              var moofbox = null;\n              if (mpegRawTrack) {\n                // Generate empty buffer, because useless for raw mpeg\n                moofbox = new Uint8Array();\n              } else {\n                // Generate moof for fmp4 segment\n                moofbox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__.default.moof(track, firstDts);\n              }\n              track.samples = [];\n              track.length = 0;\n              var segment = {\n                type: 'audio',\n                data: this._mergeBoxes(moofbox, mdatbox).buffer,\n                sampleCount: mp4Samples.length,\n                info: info\n              };\n              if (mpegRawTrack && firstSegmentAfterSeek) {\n                // For MPEG audio stream in MSE, if seeking occurred, before appending new buffer\n                // We need explicitly set timestampOffset to the desired point in timeline for mpeg SourceBuffer.\n                segment.timestampOffset = firstDts;\n              }\n              this._onMediaSegment('audio', segment);\n            };\n            MP4Remuxer.prototype._remuxVideo = function (videoTrack, force) {\n              if (this._videoMeta == null) {\n                return;\n              }\n              var track = videoTrack;\n              var samples = track.samples;\n              var dtsCorrection = undefined;\n              var firstDts = -1,\n                lastDts = -1;\n              var firstPts = -1,\n                lastPts = -1;\n              if (!samples || samples.length === 0) {\n                return;\n              }\n              if (samples.length === 1 && !force) {\n                // If [sample count in current batch] === 1 && (force != true)\n                // Ignore and keep in demuxer's queue\n                return;\n              } // else if (force === true) do remux\n              var offset = 8;\n              var mdatbox = null;\n              var mdatBytes = 8 + videoTrack.length;\n              var lastSample = null;\n              // Pop the lastSample and waiting for stash\n              if (samples.length > 1) {\n                lastSample = samples.pop();\n                mdatBytes -= lastSample.length;\n              }\n              // Insert [stashed lastSample in the previous batch] to the front\n              if (this._videoStashedLastSample != null) {\n                var sample = this._videoStashedLastSample;\n                this._videoStashedLastSample = null;\n                samples.unshift(sample);\n                mdatBytes += sample.length;\n              }\n              // Stash the lastSample of current batch, waiting for next batch\n              if (lastSample != null) {\n                this._videoStashedLastSample = lastSample;\n              }\n              var firstSampleOriginalDts = samples[0].dts - this._dtsBase;\n              // calculate dtsCorrection\n              if (this._videoNextDts) {\n                dtsCorrection = firstSampleOriginalDts - this._videoNextDts;\n              } else {\n                // this._videoNextDts == undefined\n                if (this._videoSegmentInfoList.isEmpty()) {\n                  dtsCorrection = 0;\n                } else {\n                  var lastSample_2 = this._videoSegmentInfoList.getLastSampleBefore(firstSampleOriginalDts);\n                  if (lastSample_2 != null) {\n                    var distance = firstSampleOriginalDts - (lastSample_2.originalDts + lastSample_2.duration);\n                    if (distance <= 3) {\n                      distance = 0;\n                    }\n                    var expectedDts = lastSample_2.dts + lastSample_2.duration + distance;\n                    dtsCorrection = firstSampleOriginalDts - expectedDts;\n                  } else {\n                    // lastSample == null, cannot found\n                    dtsCorrection = 0;\n                  }\n                }\n              }\n              var info = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.MediaSegmentInfo();\n              var mp4Samples = [];\n              // Correct dts for each sample, and calculate sample duration. Then output to mp4Samples\n              for (var i = 0; i < samples.length; i++) {\n                var sample = samples[i];\n                var originalDts = sample.dts - this._dtsBase;\n                var isKeyframe = sample.isKeyframe;\n                var dts = originalDts - dtsCorrection;\n                var cts = sample.cts;\n                var pts = dts + cts;\n                if (firstDts === -1) {\n                  firstDts = dts;\n                  firstPts = pts;\n                }\n                var sampleDuration = 0;\n                if (i !== samples.length - 1) {\n                  var nextDts = samples[i + 1].dts - this._dtsBase - dtsCorrection;\n                  sampleDuration = nextDts - dts;\n                } else {\n                  // the last sample\n                  if (lastSample != null) {\n                    // use stashed sample's dts to calculate sample duration\n                    var nextDts = lastSample.dts - this._dtsBase - dtsCorrection;\n                    sampleDuration = nextDts - dts;\n                  } else if (mp4Samples.length >= 1) {\n                    // use second last sample duration\n                    sampleDuration = mp4Samples[mp4Samples.length - 1].duration;\n                  } else {\n                    // the only one sample, use reference sample duration\n                    sampleDuration = Math.floor(this._videoMeta.refSampleDuration);\n                  }\n                }\n                if (isKeyframe) {\n                  var syncPoint = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.SampleInfo(dts, pts, sampleDuration, sample.dts, true);\n                  syncPoint.fileposition = sample.fileposition;\n                  info.appendSyncPoint(syncPoint);\n                }\n                mp4Samples.push({\n                  dts: dts,\n                  pts: pts,\n                  cts: cts,\n                  units: sample.units,\n                  size: sample.length,\n                  isKeyframe: isKeyframe,\n                  duration: sampleDuration,\n                  originalDts: originalDts,\n                  flags: {\n                    isLeading: 0,\n                    dependsOn: isKeyframe ? 2 : 1,\n                    isDependedOn: isKeyframe ? 1 : 0,\n                    hasRedundancy: 0,\n                    isNonSync: isKeyframe ? 0 : 1\n                  }\n                });\n              }\n              // allocate mdatbox\n              mdatbox = new Uint8Array(mdatBytes);\n              mdatbox[0] = mdatBytes >>> 24 & 0xFF;\n              mdatbox[1] = mdatBytes >>> 16 & 0xFF;\n              mdatbox[2] = mdatBytes >>> 8 & 0xFF;\n              mdatbox[3] = mdatBytes & 0xFF;\n              mdatbox.set(_mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__.default.types.mdat, 4);\n              // Write samples into mdatbox\n              for (var i = 0; i < mp4Samples.length; i++) {\n                var units = mp4Samples[i].units;\n                while (units.length) {\n                  var unit = units.shift();\n                  var data = unit.data;\n                  mdatbox.set(data, offset);\n                  offset += data.byteLength;\n                }\n              }\n              var latest = mp4Samples[mp4Samples.length - 1];\n              lastDts = latest.dts + latest.duration;\n              lastPts = latest.pts + latest.duration;\n              this._videoNextDts = lastDts;\n              // fill media segment info & add to info list\n              info.beginDts = firstDts;\n              info.endDts = lastDts;\n              info.beginPts = firstPts;\n              info.endPts = lastPts;\n              info.originalBeginDts = mp4Samples[0].originalDts;\n              info.originalEndDts = latest.originalDts + latest.duration;\n              info.firstSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.SampleInfo(mp4Samples[0].dts, mp4Samples[0].pts, mp4Samples[0].duration, mp4Samples[0].originalDts, mp4Samples[0].isKeyframe);\n              info.lastSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.SampleInfo(latest.dts, latest.pts, latest.duration, latest.originalDts, latest.isKeyframe);\n              if (!this._isLive) {\n                this._videoSegmentInfoList.append(info);\n              }\n              track.samples = mp4Samples;\n              track.sequenceNumber++;\n              // workaround for chrome < 50: force first sample as a random access point\n              // see https://bugs.chromium.org/p/chromium/issues/detail?id=229412\n              if (this._forceFirstIDR) {\n                var flags = mp4Samples[0].flags;\n                flags.dependsOn = 2;\n                flags.isNonSync = 0;\n              }\n              var moofbox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__.default.moof(track, firstDts);\n              track.samples = [];\n              track.length = 0;\n              this._onMediaSegment('video', {\n                type: 'video',\n                data: this._mergeBoxes(moofbox, mdatbox).buffer,\n                sampleCount: mp4Samples.length,\n                info: info\n              });\n            };\n            MP4Remuxer.prototype._mergeBoxes = function (moof, mdat) {\n              var result = new Uint8Array(moof.byteLength + mdat.byteLength);\n              result.set(moof, 0);\n              result.set(mdat, moof.byteLength);\n              return result;\n            };\n            return MP4Remuxer;\n          }();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = MP4Remuxer;\n\n          /***/\n        },\n\n        /***/\"./src/utils/browser.js\":\n        /*!******************************!*\\\n          !*** ./src/utils/browser.js ***!\n          \\******************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_458556__) {\n          \"use strict\";\n\n          __nested_webpack_require_458556__.r(__webpack_exports__);\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var Browser = {};\n          function detect() {\n            // modified from jquery-browser-plugin\n            var ua = self.navigator.userAgent.toLowerCase();\n            var match = /(edge)\\/([\\w.]+)/.exec(ua) || /(opr)[\\/]([\\w.]+)/.exec(ua) || /(chrome)[ \\/]([\\w.]+)/.exec(ua) || /(iemobile)[\\/]([\\w.]+)/.exec(ua) || /(version)(applewebkit)[ \\/]([\\w.]+).*(safari)[ \\/]([\\w.]+)/.exec(ua) || /(webkit)[ \\/]([\\w.]+).*(version)[ \\/]([\\w.]+).*(safari)[ \\/]([\\w.]+)/.exec(ua) || /(webkit)[ \\/]([\\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) || /(msie) ([\\w.]+)/.exec(ua) || ua.indexOf('trident') >= 0 && /(rv)(?::| )([\\w.]+)/.exec(ua) || ua.indexOf('compatible') < 0 && /(firefox)[ \\/]([\\w.]+)/.exec(ua) || [];\n            var platform_match = /(ipad)/.exec(ua) || /(ipod)/.exec(ua) || /(windows phone)/.exec(ua) || /(iphone)/.exec(ua) || /(kindle)/.exec(ua) || /(android)/.exec(ua) || /(windows)/.exec(ua) || /(mac)/.exec(ua) || /(linux)/.exec(ua) || /(cros)/.exec(ua) || [];\n            var matched = {\n              browser: match[5] || match[3] || match[1] || '',\n              version: match[2] || match[4] || '0',\n              majorVersion: match[4] || match[2] || '0',\n              platform: platform_match[0] || ''\n            };\n            var browser = {};\n            if (matched.browser) {\n              browser[matched.browser] = true;\n              var versionArray = matched.majorVersion.split('.');\n              browser.version = {\n                major: parseInt(matched.majorVersion, 10),\n                string: matched.version\n              };\n              if (versionArray.length > 1) {\n                browser.version.minor = parseInt(versionArray[1], 10);\n              }\n              if (versionArray.length > 2) {\n                browser.version.build = parseInt(versionArray[2], 10);\n              }\n            }\n            if (matched.platform) {\n              browser[matched.platform] = true;\n            }\n            if (browser.chrome || browser.opr || browser.safari) {\n              browser.webkit = true;\n            }\n            // MSIE. IE11 has 'rv' identifer\n            if (browser.rv || browser.iemobile) {\n              if (browser.rv) {\n                delete browser.rv;\n              }\n              var msie = 'msie';\n              matched.browser = msie;\n              browser[msie] = true;\n            }\n            // Microsoft Edge\n            if (browser.edge) {\n              delete browser.edge;\n              var msedge = 'msedge';\n              matched.browser = msedge;\n              browser[msedge] = true;\n            }\n            // Opera 15+\n            if (browser.opr) {\n              var opera = 'opera';\n              matched.browser = opera;\n              browser[opera] = true;\n            }\n            // Stock android browsers are marked as Safari\n            if (browser.safari && browser.android) {\n              var android = 'android';\n              matched.browser = android;\n              browser[android] = true;\n            }\n            browser.name = matched.browser;\n            browser.platform = matched.platform;\n            for (var key in Browser) {\n              if (Browser.hasOwnProperty(key)) {\n                delete Browser[key];\n              }\n            }\n            Object.assign(Browser, browser);\n          }\n          detect();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = Browser;\n\n          /***/\n        },\n\n        /***/\"./src/utils/exception.js\":\n        /*!********************************!*\\\n          !*** ./src/utils/exception.js ***!\n          \\********************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_463225__) {\n          \"use strict\";\n\n          __nested_webpack_require_463225__.r(__webpack_exports__);\n          /* harmony export */\n          __nested_webpack_require_463225__.d(__webpack_exports__, {\n            /* harmony export */\"RuntimeException\": function () {\n              return (/* binding */RuntimeException\n              );\n            },\n            /* harmony export */\"IllegalStateException\": function () {\n              return (/* binding */IllegalStateException\n              );\n            },\n            /* harmony export */\"InvalidArgumentException\": function () {\n              return (/* binding */InvalidArgumentException\n              );\n            },\n            /* harmony export */\"NotImplementedException\": function () {\n              return (/* binding */NotImplementedException\n              );\n            }\n            /* harmony export */\n          });\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var __extends =  false || function () {\n            var extendStatics = function (d, b) {\n              extendStatics = Object.setPrototypeOf || {\n                __proto__: []\n              } instanceof Array && function (d, b) {\n                d.__proto__ = b;\n              } || function (d, b) {\n                for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n              };\n              return extendStatics(d, b);\n            };\n            return function (d, b) {\n              if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n              extendStatics(d, b);\n              function __() {\n                this.constructor = d;\n              }\n              d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n            };\n          }();\n          var RuntimeException = /** @class */function () {\n            function RuntimeException(message) {\n              this._message = message;\n            }\n            Object.defineProperty(RuntimeException.prototype, \"name\", {\n              get: function () {\n                return 'RuntimeException';\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(RuntimeException.prototype, \"message\", {\n              get: function () {\n                return this._message;\n              },\n              enumerable: false,\n              configurable: true\n            });\n            RuntimeException.prototype.toString = function () {\n              return this.name + ': ' + this.message;\n            };\n            return RuntimeException;\n          }();\n          var IllegalStateException = /** @class */function (_super) {\n            __extends(IllegalStateException, _super);\n            function IllegalStateException(message) {\n              return _super.call(this, message) || this;\n            }\n            Object.defineProperty(IllegalStateException.prototype, \"name\", {\n              get: function () {\n                return 'IllegalStateException';\n              },\n              enumerable: false,\n              configurable: true\n            });\n            return IllegalStateException;\n          }(RuntimeException);\n          var InvalidArgumentException = /** @class */function (_super) {\n            __extends(InvalidArgumentException, _super);\n            function InvalidArgumentException(message) {\n              return _super.call(this, message) || this;\n            }\n            Object.defineProperty(InvalidArgumentException.prototype, \"name\", {\n              get: function () {\n                return 'InvalidArgumentException';\n              },\n              enumerable: false,\n              configurable: true\n            });\n            return InvalidArgumentException;\n          }(RuntimeException);\n          var NotImplementedException = /** @class */function (_super) {\n            __extends(NotImplementedException, _super);\n            function NotImplementedException(message) {\n              return _super.call(this, message) || this;\n            }\n            Object.defineProperty(NotImplementedException.prototype, \"name\", {\n              get: function () {\n                return 'NotImplementedException';\n              },\n              enumerable: false,\n              configurable: true\n            });\n            return NotImplementedException;\n          }(RuntimeException);\n\n          /***/\n        },\n\n        /***/\"./src/utils/logger.js\":\n        /*!*****************************!*\\\n          !*** ./src/utils/logger.js ***!\n          \\*****************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_468746__) {\n          \"use strict\";\n\n          __nested_webpack_require_468746__.r(__webpack_exports__);\n          /* harmony import */\n          var events__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_468746__( /*! events */\"./node_modules/events/events.js\");\n          /* harmony import */\n          var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nested_webpack_require_468746__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          var Log = /** @class */function () {\n            function Log() {}\n            Log.e = function (tag, msg) {\n              if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;\n              var str = \"[\" + tag + \"] > \" + msg;\n              if (Log.ENABLE_CALLBACK) {\n                Log.emitter.emit('log', 'error', str);\n              }\n              if (!Log.ENABLE_ERROR) {\n                return;\n              }\n              if (console.error) {\n                console.error(str);\n              } else if (console.warn) {\n                console.warn(str);\n              } else {\n                console.log(str);\n              }\n            };\n            Log.i = function (tag, msg) {\n              if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;\n              var str = \"[\" + tag + \"] > \" + msg;\n              if (Log.ENABLE_CALLBACK) {\n                Log.emitter.emit('log', 'info', str);\n              }\n              if (!Log.ENABLE_INFO) {\n                return;\n              }\n              if (console.info) {\n                console.info(str);\n              } else {\n                console.log(str);\n              }\n            };\n            Log.w = function (tag, msg) {\n              if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;\n              var str = \"[\" + tag + \"] > \" + msg;\n              if (Log.ENABLE_CALLBACK) {\n                Log.emitter.emit('log', 'warn', str);\n              }\n              if (!Log.ENABLE_WARN) {\n                return;\n              }\n              if (console.warn) {\n                console.warn(str);\n              } else {\n                console.log(str);\n              }\n            };\n            Log.d = function (tag, msg) {\n              if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;\n              var str = \"[\" + tag + \"] > \" + msg;\n              if (Log.ENABLE_CALLBACK) {\n                Log.emitter.emit('log', 'debug', str);\n              }\n              if (!Log.ENABLE_DEBUG) {\n                return;\n              }\n              if (console.debug) {\n                console.debug(str);\n              } else {\n                console.log(str);\n              }\n            };\n            Log.v = function (tag, msg) {\n              if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;\n              var str = \"[\" + tag + \"] > \" + msg;\n              if (Log.ENABLE_CALLBACK) {\n                Log.emitter.emit('log', 'verbose', str);\n              }\n              if (!Log.ENABLE_VERBOSE) {\n                return;\n              }\n              console.log(str);\n            };\n            return Log;\n          }();\n          Log.GLOBAL_TAG = 'flv.js';\n          Log.FORCE_GLOBAL_TAG = false;\n          Log.ENABLE_ERROR = true;\n          Log.ENABLE_INFO = true;\n          Log.ENABLE_WARN = true;\n          Log.ENABLE_DEBUG = true;\n          Log.ENABLE_VERBOSE = true;\n          Log.ENABLE_CALLBACK = false;\n          Log.emitter = new (events__WEBPACK_IMPORTED_MODULE_0___default())();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = Log;\n\n          /***/\n        },\n\n        /***/\"./src/utils/logging-control.js\":\n        /*!**************************************!*\\\n          !*** ./src/utils/logging-control.js ***!\n          \\**************************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_473394__) {\n          \"use strict\";\n\n          __nested_webpack_require_473394__.r(__webpack_exports__);\n          /* harmony import */\n          var events__WEBPACK_IMPORTED_MODULE_0__ = __nested_webpack_require_473394__( /*! events */\"./node_modules/events/events.js\");\n          /* harmony import */\n          var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nested_webpack_require_473394__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n          /* harmony import */\n          var _logger_js__WEBPACK_IMPORTED_MODULE_1__ = __nested_webpack_require_473394__( /*! ./logger.js */\"./src/utils/logger.js\");\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n\n          var LoggingControl = /** @class */function () {\n            function LoggingControl() {}\n            Object.defineProperty(LoggingControl, \"forceGlobalTag\", {\n              get: function () {\n                return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.FORCE_GLOBAL_TAG;\n              },\n              set: function (enable) {\n                _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.FORCE_GLOBAL_TAG = enable;\n                LoggingControl._notifyChange();\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(LoggingControl, \"globalTag\", {\n              get: function () {\n                return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.GLOBAL_TAG;\n              },\n              set: function (tag) {\n                _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.GLOBAL_TAG = tag;\n                LoggingControl._notifyChange();\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(LoggingControl, \"enableAll\", {\n              get: function () {\n                return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_VERBOSE && _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_DEBUG && _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_INFO && _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_WARN && _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_ERROR;\n              },\n              set: function (enable) {\n                _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_VERBOSE = enable;\n                _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_DEBUG = enable;\n                _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_INFO = enable;\n                _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_WARN = enable;\n                _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_ERROR = enable;\n                LoggingControl._notifyChange();\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(LoggingControl, \"enableDebug\", {\n              get: function () {\n                return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_DEBUG;\n              },\n              set: function (enable) {\n                _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_DEBUG = enable;\n                LoggingControl._notifyChange();\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(LoggingControl, \"enableVerbose\", {\n              get: function () {\n                return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_VERBOSE;\n              },\n              set: function (enable) {\n                _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_VERBOSE = enable;\n                LoggingControl._notifyChange();\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(LoggingControl, \"enableInfo\", {\n              get: function () {\n                return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_INFO;\n              },\n              set: function (enable) {\n                _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_INFO = enable;\n                LoggingControl._notifyChange();\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(LoggingControl, \"enableWarn\", {\n              get: function () {\n                return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_WARN;\n              },\n              set: function (enable) {\n                _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_WARN = enable;\n                LoggingControl._notifyChange();\n              },\n              enumerable: false,\n              configurable: true\n            });\n            Object.defineProperty(LoggingControl, \"enableError\", {\n              get: function () {\n                return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_ERROR;\n              },\n              set: function (enable) {\n                _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_ERROR = enable;\n                LoggingControl._notifyChange();\n              },\n              enumerable: false,\n              configurable: true\n            });\n            LoggingControl.getConfig = function () {\n              return {\n                globalTag: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.GLOBAL_TAG,\n                forceGlobalTag: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.FORCE_GLOBAL_TAG,\n                enableVerbose: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_VERBOSE,\n                enableDebug: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_DEBUG,\n                enableInfo: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_INFO,\n                enableWarn: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_WARN,\n                enableError: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_ERROR,\n                enableCallback: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_CALLBACK\n              };\n            };\n            LoggingControl.applyConfig = function (config) {\n              _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.GLOBAL_TAG = config.globalTag;\n              _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.FORCE_GLOBAL_TAG = config.forceGlobalTag;\n              _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_VERBOSE = config.enableVerbose;\n              _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_DEBUG = config.enableDebug;\n              _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_INFO = config.enableInfo;\n              _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_WARN = config.enableWarn;\n              _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_ERROR = config.enableError;\n              _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_CALLBACK = config.enableCallback;\n            };\n            LoggingControl._notifyChange = function () {\n              var emitter = LoggingControl.emitter;\n              if (emitter.listenerCount('change') > 0) {\n                var config = LoggingControl.getConfig();\n                emitter.emit('change', config);\n              }\n            };\n            LoggingControl.registerListener = function (listener) {\n              LoggingControl.emitter.addListener('change', listener);\n            };\n            LoggingControl.removeListener = function (listener) {\n              LoggingControl.emitter.removeListener('change', listener);\n            };\n            LoggingControl.addLogListener = function (listener) {\n              _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.emitter.addListener('log', listener);\n              if (_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.emitter.listenerCount('log') > 0) {\n                _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_CALLBACK = true;\n                LoggingControl._notifyChange();\n              }\n            };\n            LoggingControl.removeLogListener = function (listener) {\n              _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.emitter.removeListener('log', listener);\n              if (_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.emitter.listenerCount('log') === 0) {\n                _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_CALLBACK = false;\n                LoggingControl._notifyChange();\n              }\n            };\n            return LoggingControl;\n          }();\n          LoggingControl.emitter = new (events__WEBPACK_IMPORTED_MODULE_0___default())();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = LoggingControl;\n\n          /***/\n        },\n\n        /***/\"./src/utils/polyfill.js\":\n        /*!*******************************!*\\\n          !*** ./src/utils/polyfill.js ***!\n          \\*******************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_483004__) {\n          \"use strict\";\n\n          __nested_webpack_require_483004__.r(__webpack_exports__);\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          var Polyfill = /** @class */function () {\n            function Polyfill() {}\n            Polyfill.install = function () {\n              // ES6 Object.setPrototypeOf\n              Object.setPrototypeOf = Object.setPrototypeOf || function (obj, proto) {\n                obj.__proto__ = proto;\n                return obj;\n              };\n              // ES6 Object.assign\n              Object.assign = Object.assign || function (target) {\n                if (target === undefined || target === null) {\n                  throw new TypeError('Cannot convert undefined or null to object');\n                }\n                var output = Object(target);\n                for (var i = 1; i < arguments.length; i++) {\n                  var source = arguments[i];\n                  if (source !== undefined && source !== null) {\n                    for (var key in source) {\n                      if (source.hasOwnProperty(key)) {\n                        output[key] = source[key];\n                      }\n                    }\n                  }\n                }\n                return output;\n              };\n              // ES6 Promise (missing support in IE11)\n              if (typeof self.Promise !== 'function') {\n                __nested_webpack_require_483004__( /*! es6-promise */\"./node_modules/es6-promise/dist/es6-promise.js\").polyfill();\n              }\n            };\n            return Polyfill;\n          }();\n          Polyfill.install();\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = Polyfill;\n\n          /***/\n        },\n\n        /***/\"./src/utils/utf8-conv.js\":\n        /*!********************************!*\\\n          !*** ./src/utils/utf8-conv.js ***!\n          \\********************************/\n        /***/\n        function (__unused_webpack_module, __webpack_exports__, __nested_webpack_require_485757__) {\n          \"use strict\";\n\n          __nested_webpack_require_485757__.r(__webpack_exports__);\n          /*\n           * Copyright (C) 2016 Bilibili. All Rights Reserved.\n           *\n           * This file is derived from C++ project libWinTF8 (https://github.com/m13253/libWinTF8)\n           * @author zheng qian <xqq@xqq.im>\n           *\n           * Licensed under the Apache License, Version 2.0 (the \"License\");\n           * you may not use this file except in compliance with the License.\n           * You may obtain a copy of the License at\n           *\n           *     http://www.apache.org/licenses/LICENSE-2.0\n           *\n           * Unless required by applicable law or agreed to in writing, software\n           * distributed under the License is distributed on an \"AS IS\" BASIS,\n           * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n           * See the License for the specific language governing permissions and\n           * limitations under the License.\n           */\n          function checkContinuation(uint8array, start, checkLength) {\n            var array = uint8array;\n            if (start + checkLength < array.length) {\n              while (checkLength--) {\n                if ((array[++start] & 0xC0) !== 0x80) return false;\n              }\n              return true;\n            } else {\n              return false;\n            }\n          }\n          function decodeUTF8(uint8array) {\n            var out = [];\n            var input = uint8array;\n            var i = 0;\n            var length = uint8array.length;\n            while (i < length) {\n              if (input[i] < 0x80) {\n                out.push(String.fromCharCode(input[i]));\n                ++i;\n                continue;\n              } else if (input[i] < 0xC0) {\n                // fallthrough\n              } else if (input[i] < 0xE0) {\n                if (checkContinuation(input, i, 1)) {\n                  var ucs4 = (input[i] & 0x1F) << 6 | input[i + 1] & 0x3F;\n                  if (ucs4 >= 0x80) {\n                    out.push(String.fromCharCode(ucs4 & 0xFFFF));\n                    i += 2;\n                    continue;\n                  }\n                }\n              } else if (input[i] < 0xF0) {\n                if (checkContinuation(input, i, 2)) {\n                  var ucs4 = (input[i] & 0xF) << 12 | (input[i + 1] & 0x3F) << 6 | input[i + 2] & 0x3F;\n                  if (ucs4 >= 0x800 && (ucs4 & 0xF800) !== 0xD800) {\n                    out.push(String.fromCharCode(ucs4 & 0xFFFF));\n                    i += 3;\n                    continue;\n                  }\n                }\n              } else if (input[i] < 0xF8) {\n                if (checkContinuation(input, i, 3)) {\n                  var ucs4 = (input[i] & 0x7) << 18 | (input[i + 1] & 0x3F) << 12 | (input[i + 2] & 0x3F) << 6 | input[i + 3] & 0x3F;\n                  if (ucs4 > 0x10000 && ucs4 < 0x110000) {\n                    ucs4 -= 0x10000;\n                    out.push(String.fromCharCode(ucs4 >>> 10 | 0xD800));\n                    out.push(String.fromCharCode(ucs4 & 0x3FF | 0xDC00));\n                    i += 4;\n                    continue;\n                  }\n                }\n              }\n              out.push(String.fromCharCode(0xFFFD));\n              ++i;\n            }\n            return out.join('');\n          }\n          /* harmony default export */\n          __webpack_exports__[\"default\"] = decodeUTF8;\n\n          /***/\n        }\n\n        /******/\n      };\n      /************************************************************************/\n      /******/ // The module cache\n      /******/\n      var __webpack_module_cache__ = {};\n      /******/\n      /******/ // The require function\n      /******/\n      function __nested_webpack_require_489510__(moduleId) {\n        /******/ // Check if module is in cache\n        /******/var cachedModule = __webpack_module_cache__[moduleId];\n        /******/\n        if (cachedModule !== undefined) {\n          /******/return cachedModule.exports;\n          /******/\n        }\n        /******/ // Create a new module (and put it into the cache)\n        /******/\n        var module = __webpack_module_cache__[moduleId] = {\n          /******/ // no module.id needed\n          /******/ // no module.loaded needed\n          /******/exports: {}\n          /******/\n        };\n        /******/\n        /******/ // Execute the module function\n        /******/\n        __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_489510__);\n        /******/\n        /******/ // Return the exports of the module\n        /******/\n        return module.exports;\n        /******/\n      }\n      /******/\n      /******/ // expose the modules object (__webpack_modules__)\n      /******/\n      __nested_webpack_require_489510__.m = __webpack_modules__;\n      /******/\n      /************************************************************************/\n      /******/ /* webpack/runtime/compat get default export */\n      /******/\n      !function () {\n        /******/ // getDefaultExport function for compatibility with non-harmony modules\n        /******/__nested_webpack_require_489510__.n = function (module) {\n          /******/var getter = module && module.__esModule ? /******/function () {\n            return module['default'];\n          } : /******/function () {\n            return module;\n          };\n          /******/\n          __nested_webpack_require_489510__.d(getter, {\n            a: getter\n          });\n          /******/\n          return getter;\n          /******/\n        };\n        /******/\n      }();\n      /******/\n      /******/ /* webpack/runtime/define property getters */\n      /******/\n      !function () {\n        /******/ // define getter functions for harmony exports\n        /******/__nested_webpack_require_489510__.d = function (exports, definition) {\n          /******/for (var key in definition) {\n            /******/if (__nested_webpack_require_489510__.o(definition, key) && !__nested_webpack_require_489510__.o(exports, key)) {\n              /******/Object.defineProperty(exports, key, {\n                enumerable: true,\n                get: definition[key]\n              });\n              /******/\n            }\n            /******/\n          }\n          /******/\n        };\n        /******/\n      }();\n      /******/\n      /******/ /* webpack/runtime/global */\n      /******/\n      !function () {\n        /******/__nested_webpack_require_489510__.g = function () {\n          /******/if (typeof globalThis === 'object') return globalThis;\n          /******/\n          try {\n            /******/return this || new Function('return this')();\n            /******/\n          } catch (e) {\n            /******/if (typeof window === 'object') return window;\n            /******/\n          }\n          /******/\n        }();\n        /******/\n      }();\n      /******/\n      /******/ /* webpack/runtime/hasOwnProperty shorthand */\n      /******/\n      !function () {\n        /******/__nested_webpack_require_489510__.o = function (obj, prop) {\n          return Object.prototype.hasOwnProperty.call(obj, prop);\n        };\n        /******/\n      }();\n      /******/\n      /******/ /* webpack/runtime/make namespace object */\n      /******/\n      !function () {\n        /******/ // define __esModule on exports\n        /******/__nested_webpack_require_489510__.r = function (exports) {\n          /******/if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n            /******/Object.defineProperty(exports, Symbol.toStringTag, {\n              value: 'Module'\n            });\n            /******/\n          }\n          /******/\n          Object.defineProperty(exports, '__esModule', {\n            value: true\n          });\n          /******/\n        };\n        /******/\n      }();\n      /******/\n      /************************************************************************/\n      /******/\n      /******/ // module factories are used so entry inlining is disabled\n      /******/ // startup\n      /******/ // Load entry module and return exports\n      /******/\n      var __webpack_exports__ = __nested_webpack_require_489510__(\"./src/index.js\");\n      /******/\n      /******/\n      return __webpack_exports__;\n      /******/\n    }()\n  );\n});\n\n//# sourceURL=webpack:///./node_modules/_flv.js@1.6.2@flv.js/dist/flv.js?");

/***/ }),

/***/ "./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/header.vue?vue&type=script&lang=js":
/*!*******************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/header.vue?vue&type=script&lang=js ***!
  \*******************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/_core-js@3.25.5@core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _api_http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../api/http */ \"./src/api/http.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  name: 'HelloWorld',\n  setup() {\n    return {\n      logoImg: localStorage.getItem('logoImg')\n    };\n  },\n  methods: {\n    back() {\n      this.$router.push('/');\n    }\n  },\n  mounted() {}\n});\n\n//# sourceURL=webpack:///./src/components/header.vue?./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");

/***/ }),

/***/ "./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=script&lang=js":
/*!*********************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=script&lang=js ***!
  \*********************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/_core-js@3.25.5@core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var flv_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! flv.js */ \"./node_modules/_flv.js@1.6.2@flv.js/dist/flv.js\");\n/* harmony import */ var flv_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(flv_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _api_http__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../api/http */ \"./src/api/http.js\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! jquery */ \"./node_modules/_jquery@3.6.1@jquery/dist/jquery.js\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var echarts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! echarts */ \"./node_modules/_echarts@5.4.0@echarts/index.js\");\n/* harmony import */ var _components_header_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/header.vue */ \"./src/components/header.vue\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n  components: {\n    Header: _components_header_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n  },\n  data() {\n    return {\n      value: true,\n      firstTime: '',\n      weather: [],\n      planAxis: [],\n      msgsPush: [],\n      switchList: [],\n      //开关控制\n      tvIds: '',\n      leftVideoList: [],\n      leftVideoListOne: [],\n      videoList: [],\n      //视频流对象\n\n      personInfo: null,\n      codeData: '',\n      subjectId: '',\n      urlList: []\n    };\n  },\n  methods: {\n    back() {\n      this.$router.push('/');\n    },\n    leftVideoFunction: function () {\n      //videoElement\n      let _this = this;\n      //本地视频数据\n      _this.leftVideoList = [];\n      for (let i = 0; i < _this.videoList.length; i++) {\n        if (_this.videoList[i].videoUrl) {\n          let obj = {\n            player: {},\n            flvPlayer: {}\n          };\n          console.log(document.getElementById(_this.videoList[i].divId));\n          obj.player = document.getElementById(_this.videoList[i].divId);\n          obj.flvPlayer = flv_js__WEBPACK_IMPORTED_MODULE_1___default().createPlayer({\n            // isLive: true, //=> 是否为直播流\n            // hasAudio: false, //=> 是否开启声音\n            type: 'flv',\n            //媒体类型 flv 或 mp4\n            url: _this.videoList[i].videoUrl\n          }, {\n            enableStashBuffer: true,\n            //启用 IO 存储缓冲区。 如果您需要实时流播放（最小延迟），请设置为 false，但如果存在网络抖动，则可能会停止。\n            stashInitialSize: 128,\n            //IO 存储缓冲区初始大小。 默认值为 384KB。 指示合适的大小可以改善视频加载/搜索时间。\n            isLive: true,\n            //是否是直播\n            lazyLoadRecoverDuration: 30,\n            //指示以秒为单位的lazyLoad 恢复时间边界。\n            autoCleanupSourceBuffer: true,\n            //进行自动清理\n            autoCleanupMaxBackwardDuration: 3 * 60,\n            //3 * 60 当向后缓冲持续时间超过这个值（以秒为单位）时，对 SourceBuffer 进行自动清理\n            autoCleanupMinBackwardDuration: 2 * 60 //2 * 60 指示在执行自动清理时为后向缓冲区保留的持续时间（以秒为单位）。\n          });\n\n          _this.leftVideoList.push(obj);\n          _this.leftVideoListOne.push(obj);\n        }\n      }\n      setTimeout(function () {\n        for (let i = 0; i < _this.leftVideoList.length; i++) {\n          _this.leftVideoList[i].flvPlayer.attachMediaElement(_this.leftVideoListOne[i].player);\n          _this.$forceUpdate();\n          _this.leftVideoList[i].flvPlayer.load(); //加载\n          _this.leftVideoList[i].flvPlayer.play(); //播放\n        }\n      }, 2000);\n    },\n    //开关\n    switchFun: function (item) {\n      let _this = this;\n      if (item.state.code == 3 || item.state.code == 4) {\n        let text = item.state.code == 3 ? '关闭' : item.state.code == 4 ? '开启' : '';\n        this.$confirm('确定要' + text + '该设备吗?', '提示', {\n          confirmButtonText: '确定',\n          cancelButtonText: '取消',\n          type: 'warning'\n        }).then(() => {\n          _this.mangerControl(item);\n        }).catch(() => {});\n      }\n    },\n    //开关给后台传输返回结果 需要MQTT监听是否成功\n    mangerControl: function (item) {\n      let _this = this;\n      let id = item.id;\n      let command = item.state.code == 3 ? 'close' : item.state.code == 4 ? 'open' : '';\n      let obj = {\n        id: item.id,\n        command: item.state.code == 3 ? 'close' : item.state.code == 4 ? 'open' : ''\n      };\n      (0,_api_http__WEBPACK_IMPORTED_MODULE_2__.mangerControl)({\n        obj\n      }).then(res => {\n        if (res.code == 200) {\n          let data = res.data;\n          _this.$message({\n            message: '操作成功',\n            type: 'error'\n          });\n          _this.switchStateFun();\n        } else {\n          _this.$message({\n            message: res.msg,\n            type: 'error'\n          });\n        }\n      });\n    },\n    //获取开关状态\n    switchStateFun() {\n      let _this = this;\n      (0,_api_http__WEBPACK_IMPORTED_MODULE_2__.controllerList)(this.subjectId).then(res => {\n        if (res.code == 200) {\n          let data = res.data;\n          _this.switchList = data;\n        }\n      });\n    },\n    //获取摄像头列表\n    cameraListFun() {\n      let _this = this;\n      let obj = {\n        count: \"2\",\n        deviceIds: _this.tvIds,\n        //deviceIds:'440102004920000000010013',\n        page: \"1\"\n      };\n      (0,_api_http__WEBPACK_IMPORTED_MODULE_2__.startListDeviceIds)(obj).then(res => {\n        if (res.code == 200) {\n          let data = res;\n          // for(let i=0;i<data.data.length;i++){\n          //   let list = {\n          //     divId:'divId'+i,\n          //     hasAudio:false,\n          //     height:false,\n          //     videoError:\"\",\n          //     videoUrl:data.data[i].result.body.data.flv,\n          //   }\n          //   _this.videoList.push(list)\n          //   _this.$forceUpdate();\n          //   setTimeout(function(){\n          //     _this.leftVideoFunction();\n          //   },2000);\n          // }\n          let list = [];\n          for (let i = 0; i < data.data.length; i++) {\n            let text = 'https://lab.sxitdlc.com/jinandaxue/stream/';\n            let url = data.data[i].result.body.data.fmp4;\n            url = url.split(\"rtp/\");\n            let newUrl = text + 'rtp/' + url[1];\n            let obj = {\n              name: \"楼道监控\" + (i + 1),\n              id: data.data[i].result.body.data.deviceID,\n              url: newUrl\n            };\n            list.push(obj);\n          }\n          this.urlList = list;\n          console.log(this.urlList);\n        }\n      });\n    },\n    //视屏全屏方法\n    videoFullScreen(index) {\n      this.$refs.videoRef[index].webkitRequestFullScreen();\n    },\n    getAjaxData: function () {\n      let _this = this;\n      //获取报警详情\n\n      (0,_api_http__WEBPACK_IMPORTED_MODULE_2__.abnormalLogOrderByList)({\n        'groupId': this.codeData\n      }).then(res => {\n        if (res.code == 200) {\n          let data = res.data;\n          _this.firstTime = data[0].createTime;\n          _this.planAxis = data;\n          for (let i = 0; i < _this.planAxis.length; i++) {\n            if (_this.planAxis[i].sensorJson) {\n              _this.planAxis[i].sensorJsonValue = JSON.parse(_this.planAxis[i].sensorJson)[0].value;\n            }\n          }\n        }\n      });\n\n      //实验室简要信息\n      (0,_api_http__WEBPACK_IMPORTED_MODULE_2__.bigviewSub)(this.subjectId).then(res => {\n        if (res.code == 200) {\n          let data = res.data;\n          let list = '';\n          _this.personInfo = data;\n          for (let i = 0; i < data.tvIds.length; i++) {\n            list += data.tvIds[i] + \",\";\n          }\n          _this.tvIds = list;\n          _this.cameraListFun();\n        }\n      });\n\n      //传感器信息\n      (0,_api_http__WEBPACK_IMPORTED_MODULE_2__.bigviewFunctionList)(this.subjectId).then(res => {\n        if (res.code == 200) {\n          let data = res.data;\n          _this.weather = data;\n        }\n      });\n      //消息推送记录\n      (0,_api_http__WEBPACK_IMPORTED_MODULE_2__.bigviewWarnMessage)(this.codeData).then(res => {\n        if (res.code == 200) {\n          let data = res.data;\n          _this.msgsPush = data;\n        }\n      });\n    }\n  },\n  mounted() {\n    let _this = this;\n    this.codeData = this.$route.query.key;\n    this.subjectId = this.$route.query.subjectId;\n    _this.switchStateFun();\n    _this.getAjaxData();\n  }\n});\n\n//# sourceURL=webpack:///./src/views/warningDetail.vue?./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");

/***/ }),

/***/ "./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/header.vue?vue&type=template&id=29e8c3c6&scoped=true":
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/header.vue?vue&type=template&id=29e8c3c6&scoped=true ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/_vue@3.2.40@vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var _assets_image_index_icon16_png__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/assets/image/index_icon16.png */ \"./src/assets/image/index_icon16.png\");\n\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-29e8c3c6\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = {\n  class: \"header\"\n};\nconst _hoisted_2 = [\"src\"];\nconst _hoisted_3 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n  class: \"header_c\"\n}, \"实验室安全智能监测与控制系统\", -1 /* HOISTED */));\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n  return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n    class: \"header_l\",\n    src: $setup.logoImg\n  }, null, 8 /* PROPS */, _hoisted_2), _hoisted_3, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n    class: \"header_r\",\n    src: _assets_image_index_icon16_png__WEBPACK_IMPORTED_MODULE_1__,\n    onClick: _cache[0] || (_cache[0] = (...args) => $options.back && $options.back(...args))\n  })]);\n}\n\n//# sourceURL=webpack:///./src/components/header.vue?./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B3%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");

/***/ }),

/***/ "./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=template&id=58e76e3a&scoped=true":
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=template&id=58e76e3a&scoped=true ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/_vue@3.2.40@vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var _assets_image_img_index_icon6_png__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/assets/image/img/index_icon6.png */ \"./src/assets/image/img/index_icon6.png\");\n/* harmony import */ var _assets_image_img_index_icon7_png__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/assets/image/img/index_icon7.png */ \"./src/assets/image/img/index_icon7.png\");\n/* harmony import */ var _assets_image_img_index_icon8_png__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/assets/image/img/index_icon8.png */ \"./src/assets/image/img/index_icon8.png\");\n/* harmony import */ var _assets_image_img_index_icon11_png__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/assets/image/img/index_icon11.png */ \"./src/assets/image/img/index_icon11.png\");\n/* harmony import */ var _assets_image_img_index_icon10_png__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/assets/image/img/index_icon10.png */ \"./src/assets/image/img/index_icon10.png\");\n/* harmony import */ var _assets_image_img_index_icon9_png__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/assets/image/img/index_icon9.png */ \"./src/assets/image/img/index_icon9.png\");\n/* harmony import */ var _assets_image_img_index_icon13_png__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/assets/image/img/index_icon13.png */ \"./src/assets/image/img/index_icon13.png\");\n/* harmony import */ var _assets_image_img_index_icon17_png__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/assets/image/img/index_icon17.png */ \"./src/assets/image/img/index_icon17.png\");\n/* harmony import */ var _assets_image_img_index_icon12_png__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/assets/image/img/index_icon12.png */ \"./src/assets/image/img/index_icon12.png\");\n/* harmony import */ var _assets_image_img_index_icon14_png__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/assets/image/img/index_icon14.png */ \"./src/assets/image/img/index_icon14.png\");\n/* harmony import */ var _assets_image_img_index_icon15_png__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @/assets/image/img/index_icon15.png */ \"./src/assets/image/img/index_icon15.png\");\n\n\n\n\n\n\n\n\n\n\n\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-58e76e3a\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = {\n  class: \"main\"\n};\nconst _hoisted_2 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n  class: \"main_t\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n  class: \"main_t_t\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n  class: \"main_t_t_l\"\n}, \"当前位置：首页 >\"), /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", null, \"风险预案详情\")])], -1 /* HOISTED */));\nconst _hoisted_3 = {\n  class: \"main_m\"\n};\nconst _hoisted_4 = {\n  class: \"main_m_t\"\n};\nconst _hoisted_5 = {\n  class: \"main_m_t_l\"\n};\nconst _hoisted_6 = {\n  class: \"dowebok\"\n};\nconst _hoisted_7 = {\n  class: \"main_m_t_c_n\"\n};\nconst _hoisted_8 = {\n  key: 0,\n  src: _assets_image_img_index_icon6_png__WEBPACK_IMPORTED_MODULE_1__\n};\nconst _hoisted_9 = {\n  key: 1,\n  src: _assets_image_img_index_icon7_png__WEBPACK_IMPORTED_MODULE_2__\n};\nconst _hoisted_10 = {\n  key: 2,\n  src: _assets_image_img_index_icon8_png__WEBPACK_IMPORTED_MODULE_3__\n};\nconst _hoisted_11 = {\n  key: 3,\n  src: _assets_image_img_index_icon11_png__WEBPACK_IMPORTED_MODULE_4__\n};\nconst _hoisted_12 = {\n  key: 4,\n  src: _assets_image_img_index_icon10_png__WEBPACK_IMPORTED_MODULE_5__\n};\nconst _hoisted_13 = {\n  key: 5,\n  src: _assets_image_img_index_icon9_png__WEBPACK_IMPORTED_MODULE_6__\n};\nconst _hoisted_14 = {\n  key: 6,\n  src: _assets_image_img_index_icon13_png__WEBPACK_IMPORTED_MODULE_7__\n};\nconst _hoisted_15 = {\n  key: 7,\n  src: _assets_image_img_index_icon17_png__WEBPACK_IMPORTED_MODULE_8__\n};\nconst _hoisted_16 = {\n  key: 8,\n  src: _assets_image_img_index_icon12_png__WEBPACK_IMPORTED_MODULE_9__\n};\nconst _hoisted_17 = {\n  key: 9,\n  src: _assets_image_img_index_icon14_png__WEBPACK_IMPORTED_MODULE_10__\n};\nconst _hoisted_18 = {\n  key: 10,\n  src: _assets_image_img_index_icon17_png__WEBPACK_IMPORTED_MODULE_8__\n};\nconst _hoisted_19 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n  class: \"main_m_t_r\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_20 = {\n  class: \"main_m_b\"\n};\nconst _hoisted_21 = {\n  class: \"time-box\"\n};\nconst _hoisted_22 = {\n  class: \"main_b\"\n};\nconst _hoisted_23 = {\n  key: 0,\n  class: \"main_b_l\"\n};\nconst _hoisted_24 = {\n  class: \"main_b_l_t\"\n};\nconst _hoisted_25 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", null, null, -1 /* HOISTED */));\nconst _hoisted_26 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"li\", null, \"消息推送记录\", -1 /* HOISTED */));\nconst _hoisted_27 = {\n  class: \"main_b_l_b\"\n};\nconst _hoisted_28 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n  class: \"main_b_l_b_t\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", null, \"推送方式\"), /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", null, \"推送目标\")], -1 /* HOISTED */));\nconst _hoisted_29 = {\n  class: \"main_b_l_b_b\"\n};\nconst _hoisted_30 = {\n  class: \"main_b_r\"\n};\nconst _hoisted_31 = {\n  key: 0,\n  class: \"main_b_r_li_t\"\n};\nconst _hoisted_32 = [\"onClick\"];\nconst _hoisted_33 = {\n  class: \"main_b_r_li_b\"\n};\nconst _hoisted_34 = [\"id\", \"src\"];\nconst _hoisted_35 = {\n  key: 0\n};\nconst _hoisted_36 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n  class: \"main_b_r_li_t\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", null, \"暂无视频数据\"), /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n  src: _assets_image_img_index_icon15_png__WEBPACK_IMPORTED_MODULE_11__\n})], -1 /* HOISTED */));\nconst _hoisted_37 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n  class: \"main_b_r_li_b\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"video\", {\n  autoplay: \"\",\n  controls: \"\",\n  muted: \"\",\n  width: \"600px\",\n  height: \"410px\"\n})], -1 /* HOISTED */));\nconst _hoisted_38 = [_hoisted_36, _hoisted_37];\nconst _hoisted_39 = {\n  key: 1\n};\nconst _hoisted_40 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n  class: \"main_b_r_li_t\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", null, \"暂无视频数据\"), /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n  src: _assets_image_img_index_icon15_png__WEBPACK_IMPORTED_MODULE_11__\n})], -1 /* HOISTED */));\nconst _hoisted_41 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n  class: \"main_b_r_li_b\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"video\", {\n  autoplay: \"\",\n  controls: \"\",\n  muted: \"\",\n  width: \"600px\",\n  height: \"410px\"\n})], -1 /* HOISTED */));\nconst _hoisted_42 = [_hoisted_40, _hoisted_41];\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n  const _component_Header = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"Header\");\n  return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Header), _hoisted_2, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_4, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_5, \"首次报警时间 \" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.firstTime), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_6, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"ul\", _hoisted_7, [((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($data.weather, (item, index) => {\n    return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"li\", {\n      key: item.index\n    }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"<img src=\\\"static/img/img/index_icon6.png\\\"/>\"), item.funNum == 'wendu' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", _hoisted_8)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), item.funNum == 'shidu' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", _hoisted_9)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), item.funNum == 'yanwu' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", _hoisted_10)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), item.funNum == 'daqiya' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", _hoisted_11)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), item.funNum == 'co' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", _hoisted_12)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), item.funNum == 'o2' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", _hoisted_13)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), item.funNum == 'fenchen' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", _hoisted_14)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), item.funNum == 'voc' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", _hoisted_15)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), item.funNum == 'jiawan' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", _hoisted_16)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), item.funNum == 'so2' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", _hoisted_17)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), item.funNum == 'no1' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", _hoisted_18)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(item.funcName), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(item.formatVal), 1 /* TEXT */)]);\n  }), 128 /* KEYED_FRAGMENT */))])]), _hoisted_19]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_20, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_21, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"ul\", null, [((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($data.planAxis, (item, index2) => {\n    return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"li\", {\n      class: \"active\",\n      key: index2\n    }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", null, \"发生风险：\" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(item.riskPlanName), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createTextVNode)(\"甲烷传感器浓度：\"), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(item.sensorJsonValue), 1 /* TEXT */)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", null, \"时间：\" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(item.createTime), 1 /* TEXT */)]);\n  }), 128 /* KEYED_FRAGMENT */))])])])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_22, [$data.personInfo ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_23, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_24, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"li\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.personInfo.subName), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", null, \"所属院系:\" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.personInfo.deptName), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", null, \"实验室负责人:\" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.personInfo.adminName), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", null, \"联系方式:\" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.personInfo.adminPhone), 1 /* TEXT */), _hoisted_25, _hoisted_26]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_27, [_hoisted_28, (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_29, [((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($data.msgsPush, (item, index3) => {\n    return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"li\", {\n      key: index3\n    }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(item.pushType.code == 0 ? '语音播报' : '短信推送'), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(item.showInfo), 1 /* TEXT */)]);\n  }), 128 /* KEYED_FRAGMENT */)), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"<li>\\r\\n                            <i>语音播报</i>\\r\\n                            <i>甲烷监测实验室</i>\\r\\n                        </li>\")])])])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_30, [((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.renderList)($data.urlList, (item, index) => {\n    return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"li\", {\n      key: index\n    }, [$data.personInfo ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_31, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($data.personInfo.subName), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n      src: _assets_image_img_index_icon15_png__WEBPACK_IMPORTED_MODULE_11__,\n      onClick: $event => $options.videoFullScreen(index)\n    }, null, 8 /* PROPS */, _hoisted_32)])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_33, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"video\", {\n      ref_for: true,\n      ref: \"videoRef\",\n      id: $data.urlList.id,\n      src: item.url,\n      \"custom-cache\": false,\n      autoplay: true,\n      controls: true,\n      \"enable-danmu\": false,\n      muted: true,\n      \"show-fullscreen-btn\": true,\n      \"show-center-play-btn\": false,\n      \"show-play-btn\": false,\n      onError: _cache[0] || (_cache[0] = (...args) => _ctx.videoErrorCallback && _ctx.videoErrorCallback(...args))\n    }, null, 40 /* PROPS, HYDRATE_EVENTS */, _hoisted_34)])]);\n  }), 128 /* KEYED_FRAGMENT */)), $data.urlList.length <= 0 ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"li\", _hoisted_35, _hoisted_38)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), $data.urlList.length <= 0 ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"li\", _hoisted_39, _hoisted_42)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)])])]);\n}\n\n//# sourceURL=webpack:///./src/views/warningDetail.vue?./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B3%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");

/***/ }),

/***/ "./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/header.vue?vue&type=style&index=0&id=29e8c3c6&lang=scss&scoped=true":
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/header.vue?vue&type=style&index=0&id=29e8c3c6&lang=scss&scoped=true ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/_css-loader@6.7.1@css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/_css-loader@6.7.1@css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_6_7_1_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/_css-loader@6.7.1@css-loader/dist/runtime/api.js */ \"./node_modules/_css-loader@6.7.1@css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_6_7_1_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../node_modules/_css-loader@6.7.1@css-loader/dist/runtime/getUrl.js */ \"./node_modules/_css-loader@6.7.1@css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_6_7_1_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! @/assets/image/index_icon2.png */ \"./src/assets/image/index_icon2.png\"), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_6_7_1_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_6_7_1_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_6_7_1_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"*[data-v-29e8c3c6] {\\n  padding: 0;\\n  margin: 0;\\n  box-sizing: border-box;\\n}\\n.header[data-v-29e8c3c6] {\\n  width: 100%;\\n  position: absolute;\\n  left: 0vw;\\n  top: 0vh;\\n  z-index: 100;\\n  display: flex;\\n  justify-content: flex-start;\\n}\\n.header .header_l[data-v-29e8c3c6] {\\n  width: 9.4791666667vw;\\n  height: 4.0740740741vh;\\n  margin: 0.9259259259vh 0 0 2.0833333333vw;\\n}\\n.header .header_c[data-v-29e8c3c6] {\\n  width: 61.4583333333vw;\\n  height: 14.0740740741vh;\\n  margin-left: 7.0833333333vw;\\n  background: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") no-repeat;\\n  background-size: 100% 100%;\\n  font-size: 2.7777777778vh;\\n  font-family: Microsoft YaHei;\\n  font-weight: bold;\\n  color: #FFFFFF;\\n  line-height: 2.7777777778vh;\\n  text-align: center;\\n  padding-top: 2.4074074074vh;\\n}\\n.header .header_r[data-v-29e8c3c6] {\\n  margin-left: 13.75vw;\\n  width: 4.2708333333vw;\\n  height: 2.962962963vh;\\n  margin-top: 1.6666666667vh;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack:///./src/components/header.vue?./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use%5B1%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use%5B2%5D!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use%5B3%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");

/***/ }),

/***/ "./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=style&index=0&id=58e76e3a&lang=scss&scoped=true":
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=style&index=0&id=58e76e3a&lang=scss&scoped=true ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/_css-loader@6.7.1@css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/_css-loader@6.7.1@css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_6_7_1_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/_css-loader@6.7.1@css-loader/dist/runtime/api.js */ \"./node_modules/_css-loader@6.7.1@css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_6_7_1_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../node_modules/_css-loader@6.7.1@css-loader/dist/runtime/getUrl.js */ \"./node_modules/_css-loader@6.7.1@css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_6_7_1_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! @/assets/image/index_icon2.png */ \"./src/assets/image/index_icon2.png\"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! @/assets/image/img/index_icon16.png */ \"./src/assets/image/img/index_icon16.png\"), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_6_7_1_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_6_7_1_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_6_7_1_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _node_modules_css_loader_6_7_1_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"@charset \\\"UTF-8\\\";\\n*[data-v-58e76e3a] {\\n  padding: 0;\\n  margin: 0;\\n  box-sizing: border-box;\\n}\\n.main[data-v-58e76e3a] {\\n  width: 100vw;\\n  height: 100vh;\\n  /*  background: url(\\\"../img/index_icon17.png\\\") no-repeat;\\n    background-size: 100% 100%;*/\\n  position: relative;\\n  left: 0;\\n  top: 0;\\n  z-index: 50;\\n  background: #062338;\\n}\\n.main .header[data-v-58e76e3a] {\\n  width: 100%;\\n  position: absolute;\\n  left: 0vw;\\n  top: 0vh;\\n  z-index: 100;\\n  display: flex;\\n  justify-content: flex-start;\\n}\\n.main .header .header_l[data-v-58e76e3a] {\\n  width: 9.4791666667vw;\\n  height: 4.0740740741vh;\\n  margin: 0.9259259259vh 0 0 2.0833333333vw;\\n}\\n.main .header .header_c[data-v-58e76e3a] {\\n  width: 61.4583333333vw;\\n  height: 14.0740740741vh;\\n  margin-left: 7.0833333333vw;\\n  background: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") no-repeat;\\n  background-size: 100% 100%;\\n  font-size: 2.7777777778vh;\\n  font-family: Microsoft YaHei;\\n  font-weight: bold;\\n  color: #FFFFFF;\\n  line-height: 2.7777777778vh;\\n  text-align: center;\\n  padding-top: 2.4074074074vh;\\n}\\n.main .header .header_r[data-v-58e76e3a] {\\n  margin-left: 13.75vw;\\n  width: 4.2708333333vw;\\n  height: 2.962962963vh;\\n  margin-top: 1.6666666667vh;\\n}\\n.main .main_t[data-v-58e76e3a] {\\n  width: 96.4583333333vw;\\n  height: 32.5925925926vh;\\n  position: absolute;\\n  left: 1.7708333333vw;\\n  top: 7.962962963vh;\\n  z-index: 200;\\n}\\n.main .main_t .main_t_t[data-v-58e76e3a] {\\n  margin: 1.8518518519vh 0 0 0.9375vw;\\n}\\n.main .main_t .main_t_t > i[data-v-58e76e3a] {\\n  font-size: 1.4814814815vh;\\n  font-family: Microsoft YaHei;\\n  font-weight: bold;\\n  color: #FFFFFF;\\n  line-height: 1.4814814815vh;\\n}\\n.main .main_t .main_t_t > i[data-v-58e76e3a]:nth-of-type(2) {\\n  color: #1ED0F8;\\n}\\n.main .main_m[data-v-58e76e3a] {\\n  width: 96.4583333333vw;\\n  position: absolute;\\n  left: 1.7708333333vw;\\n  top: 14.0740740741vh;\\n  z-index: 200;\\n  /*时间轴*/\\n}\\n.main .main_m .main_m_t[data-v-58e76e3a] {\\n  width: 100%;\\n  height: 7.4074074074vh;\\n  background: rgba(9, 55, 81, 0.6);\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center;\\n  overflow: hidden;\\n}\\n.main .main_m .main_m_t .main_m_t_l[data-v-58e76e3a] {\\n  width: 20.1041666667vw;\\n  font-size: 1.6666666667vh;\\n  font-family: Microsoft YaHei;\\n  font-weight: 400;\\n  color: #E01622;\\n  line-height: 1.6666666667vh;\\n  margin-left: 1.25vw;\\n}\\n.main .main_m .main_m_t .dowebok[data-v-58e76e3a] {\\n  width: 71.3541666667vw;\\n  height: 7.4074074074vh;\\n  background: 0;\\n}\\n.main .main_m .main_m_t .dowebok .main_m_t_c_n[data-v-58e76e3a] {\\n  /* width: rw(2000);\\n   display: flex;\\n   justify-content: flex-start;\\n   align-items: center;*/\\n}\\n.main .main_m .main_m_t .dowebok .main_m_t_c_n > li[data-v-58e76e3a] {\\n  width: 10.5208333333vw;\\n  height: 100%;\\n  display: inline-block;\\n  margin-left: 0.4166666667vw;\\n}\\n.main .main_m .main_m_t .dowebok .main_m_t_c_n > li > img[data-v-58e76e3a] {\\n  width: 1.0416666667vw;\\n  height: 2.4074074074vh;\\n}\\n.main .main_m .main_m_t .dowebok .main_m_t_c_n > li > i[data-v-58e76e3a] {\\n  font-size: 1.4814814815vh;\\n  font-family: Microsoft YaHei;\\n  font-weight: 400;\\n  color: #FFFFFF;\\n  line-height: 7.4074074074vh;\\n  display: inline-block;\\n}\\n.main .main_m .main_m_t .dowebok .main_m_t_c_n > li > i[data-v-58e76e3a]:nth-of-type(1) {\\n  margin: 0 0.8333333333vw;\\n}\\n.main .main_m .main_m_t .dowebok .main_m_t_c_n > li > i[data-v-58e76e3a]:nth-of-type(2) {\\n  color: #01E7E9;\\n}\\n.main .main_m .main_m_t .main_m_t_r[data-v-58e76e3a] {\\n  display: flex;\\n  justify-content: space-between;\\n  /* width: rw(360);*/\\n}\\n.main .main_m .main_m_t .main_m_t_r > li[data-v-58e76e3a] {\\n  width: 6.25vw;\\n}\\n.main .main_m .main_m_t .main_m_t_r > li > i[data-v-58e76e3a] {\\n  display: block;\\n  font-size: 1.2962962963vh;\\n  font-family: Microsoft YaHei;\\n  font-weight: 400;\\n  color: #FFFFFF;\\n  line-height: 1.2962962963vh;\\n  margin-bottom: 0.7407407407vh;\\n}\\n.main .main_m .main_m_t .main_m_t_r > li .main_m_t_r_li_r[data-v-58e76e3a] {\\n  width: 3.125vw;\\n  height: 2.4074074074vh;\\n  margin-left: 0.625vw;\\n}\\n.main .main_m .main_m_t .close_btn[data-v-58e76e3a] {\\n  width: 0.9375vw;\\n  height: 1.6666666667vh;\\n  margin-right: 1.0416666667vw;\\n}\\n.main .main_m .main_m_b[data-v-58e76e3a] {\\n  height: 25.7407407407vh;\\n  margin-top: 0.9259259259vh;\\n}\\n.main .main_m .main_m_b .time-box[data-v-58e76e3a] {\\n  width: 100%;\\n  margin: 0 auto;\\n  overflow: hidden;\\n}\\n.main .main_m .main_m_b .time-box > ul[data-v-58e76e3a] {\\n  overflow: hidden;\\n  position: relative;\\n  height: 23.6111111111vh;\\n}\\n.main .main_m .main_m_b .time-box > ul > li[data-v-58e76e3a] {\\n  width: 12.6041666667vw;\\n  height: 9.0740740741vh;\\n  float: left;\\n  position: relative;\\n  cursor: pointer;\\n  background: rgba(9, 55, 81, 0.6);\\n  border-radius: 0.5208333333vw;\\n}\\n.main .main_m .main_m_b .time-box > ul > li > p[data-v-58e76e3a] {\\n  font-size: 1.2962962963vh;\\n  font-family: Microsoft YaHei;\\n  font-weight: 400;\\n  color: #FFFFFF;\\n  line-height: 1.2962962963vh;\\n  text-align: center;\\n}\\n.main .main_m .main_m_b .time-box > ul > li > p > i[data-v-58e76e3a] {\\n  color: #FF6060;\\n}\\n.main .main_m .main_m_b .time-box > ul > li > p[data-v-58e76e3a]:nth-of-type(1) {\\n  margin: 1.1111111111vh 0 1.2962962963vh 0;\\n}\\n.main .main_m .main_m_b .time-box > ul > li > p[data-v-58e76e3a]:nth-of-type(2) {\\n  margin-bottom: 1.2962962963vh;\\n}\\n.main .main_m .main_m_b .time-box > ul > li[data-v-58e76e3a]:after {\\n  content: \\\"\\\";\\n  width: 1.6666666667vw;\\n  height: 2.962962963vh;\\n  background: url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") no-repeat;\\n  position: absolute;\\n  left: 50%;\\n  margin-left: -0.3645833333vw;\\n  bottom: 0;\\n  bottom: -4.4444444444vh;\\n  z-index: 1;\\n}\\n.main .main_m .main_m_b .time-box > ul > li[data-v-58e76e3a]:nth-child(2n):after {\\n  bottom: auto;\\n  top: -4.2592592593vh;\\n}\\n.main .main_m .main_m_b .time-box > ul > li[data-v-58e76e3a]:nth-child(2n) {\\n  margin-top: 14.8148148148vh;\\n}\\n.main .main_m .main_m_b .time-box > ul[data-v-58e76e3a]:after {\\n  content: \\\"\\\";\\n  background: #d2d2d2;\\n  height: 1px;\\n  width: 100%;\\n  position: absolute;\\n  left: 0;\\n  top: 50%;\\n}\\n.main .main_b[data-v-58e76e3a] {\\n  width: 96.4583333333vw;\\n  height: 50.9259259259vh;\\n  position: absolute;\\n  left: 1.7708333333vw;\\n  top: 47.037037037vh;\\n  z-index: 200;\\n  background: rgba(9, 55, 81, 0.6);\\n  display: flex;\\n  justify-content: flex-start;\\n}\\n.main .main_b .main_b_l[data-v-58e76e3a] {\\n  width: 19.2708333333vw;\\n  margin-left: 1.25vw;\\n}\\n.main .main_b .main_b_l .main_b_l_t > li[data-v-58e76e3a] {\\n  font-size: 1.6666666667vh;\\n  font-family: Microsoft YaHei;\\n  font-weight: bold;\\n  color: #486CC2;\\n  line-height: 1.6666666667vh;\\n}\\n.main .main_b .main_b_l .main_b_l_t > i[data-v-58e76e3a] {\\n  display: block;\\n  font-size: 1.2962962963vh;\\n  font-family: Microsoft YaHei;\\n  font-weight: 400;\\n  color: #FFFFFF;\\n  line-height: 1.2962962963vh;\\n  margin-top: 1.8518518519vh;\\n  margin-left: 1.6666666667vw;\\n}\\n.main .main_b .main_b_l .main_b_l_t > i[data-v-58e76e3a]:nth-of-type(4) {\\n  margin-left: 0;\\n  border: 1px solid #486CC2;\\n}\\n.main .main_b .main_b_l .main_b_l_t > li[data-v-58e76e3a]:nth-of-type(1) {\\n  margin-top: 3.8888888889vh;\\n}\\n.main .main_b .main_b_l .main_b_l_t > li[data-v-58e76e3a]:nth-of-type(2) {\\n  margin-top: 2.037037037vh;\\n}\\n.main .main_b .main_b_l .main_b_l_b[data-v-58e76e3a] {\\n  margin-top: 1.2962962963vh;\\n  height: 24.8148148148vh;\\n  overflow-y: hidden;\\n}\\n.main .main_b .main_b_l .main_b_l_b .main_b_l_b_t[data-v-58e76e3a] {\\n  height: 3.7037037037vh;\\n  background: rgba(72, 108, 194, 0.2);\\n  display: flex;\\n  justify-content: flex-start;\\n}\\n.main .main_b .main_b_l .main_b_l_b .main_b_l_b_t > i[data-v-58e76e3a] {\\n  display: inline-block;\\n  font-size: 1.4814814815vh;\\n  font-family: Microsoft YaHei;\\n  font-weight: 400;\\n  color: #FFFFFF;\\n  line-height: 3.7037037037vh;\\n  white-space: nowrap;\\n  overflow: hidden;\\n  text-overflow: ellipsis;\\n}\\n.main .main_b .main_b_l .main_b_l_b .main_b_l_b_t > i[data-v-58e76e3a]:nth-of-type(1) {\\n  width: 8.6458333333vw;\\n  margin-left: 1.6666666667vw;\\n}\\n.main .main_b .main_b_l .main_b_l_b .main_b_l_b_t > i[data-v-58e76e3a]:nth-of-type(2) {\\n  width: 9.0625vw;\\n}\\n.main .main_b .main_b_l .main_b_l_b .main_b_l_b_b > li[data-v-58e76e3a] {\\n  height: 2.7777777778vh;\\n  display: flex;\\n  justify-content: flex-start;\\n}\\n.main .main_b .main_b_l .main_b_l_b .main_b_l_b_b > li > i[data-v-58e76e3a] {\\n  display: inline-block;\\n  font-size: 1.2962962963vh;\\n  font-family: Microsoft YaHei;\\n  font-weight: 400;\\n  color: #FFFFFF;\\n  line-height: 2.7777777778vh;\\n  white-space: nowrap;\\n  overflow: hidden;\\n  text-overflow: ellipsis;\\n}\\n.main .main_b .main_b_l .main_b_l_b .main_b_l_b_b > li > i[data-v-58e76e3a]:nth-of-type(1) {\\n  width: 8.6458333333vw;\\n  margin-left: 1.6666666667vw;\\n}\\n.main .main_b .main_b_l .main_b_l_b .main_b_l_b_b > li > i[data-v-58e76e3a]:nth-of-type(2) {\\n  width: 9.0625vw;\\n}\\n.main .main_b .main_b_l .main_b_l_b .main_b_l_b_b > li[data-v-58e76e3a]:nth-of-type(even) {\\n  background: rgba(72, 108, 194, 0.2);\\n}\\n.main .main_b .main_b_r[data-v-58e76e3a] {\\n  width: 69.6875vw;\\n  display: flex;\\n  justify-content: space-between;\\n  margin-top: 3.7037037037vh;\\n  margin-left: 2.8125vw;\\n  overflow: hidden;\\n}\\n.main .main_b .main_b_r > li[data-v-58e76e3a] {\\n  width: 33.8541666667vw;\\n  height: 45.1851851852vh;\\n  padding: 0 1.25vw;\\n  box-sizing: border-box;\\n  border: 1px solid #486CC2;\\n}\\n.main .main_b .main_b_r > li .main_b_r_li_t[data-v-58e76e3a] {\\n  height: 4.8148148148vh;\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center;\\n}\\n.main .main_b .main_b_r > li .main_b_r_li_t > i[data-v-58e76e3a] {\\n  display: inline-block;\\n  font-size: 1.4814814815vh;\\n  font-family: Microsoft YaHei;\\n  font-weight: bold;\\n  color: #FFFFFF;\\n  line-height: 1.4814814815vh;\\n}\\n.main .main_b .main_b_r > li .main_b_r_li_t > img[data-v-58e76e3a] {\\n  width: 1.25vw;\\n  height: 2.2222222222vh;\\n}\\n.main .main_b .main_b_r > li .main_b_r_li_b[data-v-58e76e3a] {\\n  width: 31.25vw;\\n  height: 37.962962963vh;\\n}\\n.main .main_b .main_b_r > li .main_b_r_li_b > video[data-v-58e76e3a] {\\n  width: 31.25vw;\\n  height: 37.962962963vh;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack:///./src/views/warningDetail.vue?./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use%5B1%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use%5B2%5D!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use%5B3%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");

/***/ }),

/***/ "./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=style&index=1&id=58e76e3a&lang=scss":
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=style&index=1&id=58e76e3a&lang=scss ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/_css-loader@6.7.1@css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/_css-loader@6.7.1@css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_6_7_1_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/_css-loader@6.7.1@css-loader/dist/runtime/api.js */ \"./node_modules/_css-loader@6.7.1@css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_6_7_1_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_6_7_1_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_6_7_1_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_6_7_1_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"li {\\n  list-style: none;\\n}\\ni, em, b {\\n  font-style: normal;\\n  font-weight: 100;\\n}\\nbody {\\n  margin: 0;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack:///./src/views/warningDetail.vue?./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use%5B1%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use%5B2%5D!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use%5B3%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");

/***/ }),

/***/ "./src/components/header.vue":
/*!***********************************!*\
  !*** ./src/components/header.vue ***!
  \***********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _header_vue_vue_type_template_id_29e8c3c6_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./header.vue?vue&type=template&id=29e8c3c6&scoped=true */ \"./src/components/header.vue?vue&type=template&id=29e8c3c6&scoped=true\");\n/* harmony import */ var _header_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./header.vue?vue&type=script&lang=js */ \"./src/components/header.vue?vue&type=script&lang=js\");\n/* harmony import */ var _header_vue_vue_type_style_index_0_id_29e8c3c6_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./header.vue?vue&type=style&index=0&id=29e8c3c6&lang=scss&scoped=true */ \"./src/components/header.vue?vue&type=style&index=0&id=29e8c3c6&lang=scss&scoped=true\");\n/* harmony import */ var D_work_daping_labBigData_node_modules_vue_loader_17_0_0_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/_vue-loader@17.0.0@vue-loader/dist/exportHelper.js */ \"./node_modules/_vue-loader@17.0.0@vue-loader/dist/exportHelper.js\");\n\n\n\n\n;\n\n\nconst __exports__ = /*#__PURE__*/(0,D_work_daping_labBigData_node_modules_vue_loader_17_0_0_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_header_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], [['render',_header_vue_vue_type_template_id_29e8c3c6_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',\"data-v-29e8c3c6\"],['__file',\"src/components/header.vue\"]])\n/* hot reload */\nif (false) {}\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (__exports__);\n\n//# sourceURL=webpack:///./src/components/header.vue?");

/***/ }),

/***/ "./src/views/warningDetail.vue":
/*!*************************************!*\
  !*** ./src/views/warningDetail.vue ***!
  \*************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _warningDetail_vue_vue_type_template_id_58e76e3a_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./warningDetail.vue?vue&type=template&id=58e76e3a&scoped=true */ \"./src/views/warningDetail.vue?vue&type=template&id=58e76e3a&scoped=true\");\n/* harmony import */ var _warningDetail_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./warningDetail.vue?vue&type=script&lang=js */ \"./src/views/warningDetail.vue?vue&type=script&lang=js\");\n/* harmony import */ var _warningDetail_vue_vue_type_style_index_0_id_58e76e3a_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./warningDetail.vue?vue&type=style&index=0&id=58e76e3a&lang=scss&scoped=true */ \"./src/views/warningDetail.vue?vue&type=style&index=0&id=58e76e3a&lang=scss&scoped=true\");\n/* harmony import */ var _warningDetail_vue_vue_type_style_index_1_id_58e76e3a_lang_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./warningDetail.vue?vue&type=style&index=1&id=58e76e3a&lang=scss */ \"./src/views/warningDetail.vue?vue&type=style&index=1&id=58e76e3a&lang=scss\");\n/* harmony import */ var D_work_daping_labBigData_node_modules_vue_loader_17_0_0_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/_vue-loader@17.0.0@vue-loader/dist/exportHelper.js */ \"./node_modules/_vue-loader@17.0.0@vue-loader/dist/exportHelper.js\");\n\n\n\n\n;\n\n\n\nconst __exports__ = /*#__PURE__*/(0,D_work_daping_labBigData_node_modules_vue_loader_17_0_0_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_warningDetail_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], [['render',_warningDetail_vue_vue_type_template_id_58e76e3a_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render],['__scopeId',\"data-v-58e76e3a\"],['__file',\"src/views/warningDetail.vue\"]])\n/* hot reload */\nif (false) {}\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (__exports__);\n\n//# sourceURL=webpack:///./src/views/warningDetail.vue?");

/***/ }),

/***/ "./src/components/header.vue?vue&type=script&lang=js":
/*!***********************************************************!*\
  !*** ./src/components/header.vue?vue&type=script&lang=js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _node_modules_babel_loader_8_2_5_babel_loader_lib_index_js_clonedRuleSet_40_use_0_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_header_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _node_modules_babel_loader_8_2_5_babel_loader_lib_index_js_clonedRuleSet_40_use_0_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_header_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./header.vue?vue&type=script&lang=js */ \"./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/header.vue?vue&type=script&lang=js\");\n \n\n//# sourceURL=webpack:///./src/components/header.vue?");

/***/ }),

/***/ "./src/views/warningDetail.vue?vue&type=script&lang=js":
/*!*************************************************************!*\
  !*** ./src/views/warningDetail.vue?vue&type=script&lang=js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* reexport safe */ _node_modules_babel_loader_8_2_5_babel_loader_lib_index_js_clonedRuleSet_40_use_0_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_warningDetail_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _node_modules_babel_loader_8_2_5_babel_loader_lib_index_js_clonedRuleSet_40_use_0_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_warningDetail_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./warningDetail.vue?vue&type=script&lang=js */ \"./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=script&lang=js\");\n \n\n//# sourceURL=webpack:///./src/views/warningDetail.vue?");

/***/ }),

/***/ "./src/components/header.vue?vue&type=template&id=29e8c3c6&scoped=true":
/*!*****************************************************************************!*\
  !*** ./src/components/header.vue?vue&type=template&id=29e8c3c6&scoped=true ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"render\": function() { return /* reexport safe */ _node_modules_babel_loader_8_2_5_babel_loader_lib_index_js_clonedRuleSet_40_use_0_node_modules_vue_loader_17_0_0_vue_loader_dist_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_header_vue_vue_type_template_id_29e8c3c6_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render; }\n/* harmony export */ });\n/* harmony import */ var _node_modules_babel_loader_8_2_5_babel_loader_lib_index_js_clonedRuleSet_40_use_0_node_modules_vue_loader_17_0_0_vue_loader_dist_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_header_vue_vue_type_template_id_29e8c3c6_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./header.vue?vue&type=template&id=29e8c3c6&scoped=true */ \"./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/header.vue?vue&type=template&id=29e8c3c6&scoped=true\");\n\n\n//# sourceURL=webpack:///./src/components/header.vue?");

/***/ }),

/***/ "./src/views/warningDetail.vue?vue&type=template&id=58e76e3a&scoped=true":
/*!*******************************************************************************!*\
  !*** ./src/views/warningDetail.vue?vue&type=template&id=58e76e3a&scoped=true ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"render\": function() { return /* reexport safe */ _node_modules_babel_loader_8_2_5_babel_loader_lib_index_js_clonedRuleSet_40_use_0_node_modules_vue_loader_17_0_0_vue_loader_dist_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_warningDetail_vue_vue_type_template_id_58e76e3a_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render; }\n/* harmony export */ });\n/* harmony import */ var _node_modules_babel_loader_8_2_5_babel_loader_lib_index_js_clonedRuleSet_40_use_0_node_modules_vue_loader_17_0_0_vue_loader_dist_templateLoader_js_ruleSet_1_rules_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_warningDetail_vue_vue_type_template_id_58e76e3a_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./warningDetail.vue?vue&type=template&id=58e76e3a&scoped=true */ \"./node_modules/_babel-loader@8.2.5@babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=template&id=58e76e3a&scoped=true\");\n\n\n//# sourceURL=webpack:///./src/views/warningDetail.vue?");

/***/ }),

/***/ "./src/components/header.vue?vue&type=style&index=0&id=29e8c3c6&lang=scss&scoped=true":
/*!********************************************************************************************!*\
  !*** ./src/components/header.vue?vue&type=style&index=0&id=29e8c3c6&lang=scss&scoped=true ***!
  \********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_clonedRuleSet_22_use_0_node_modules_css_loader_6_7_1_css_loader_dist_cjs_js_clonedRuleSet_22_use_1_node_modules_vue_loader_17_0_0_vue_loader_dist_stylePostLoader_js_node_modules_postcss_loader_6_2_1_postcss_loader_dist_cjs_js_clonedRuleSet_22_use_2_node_modules_sass_loader_13_1_0_sass_loader_dist_cjs_js_clonedRuleSet_22_use_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_header_vue_vue_type_style_index_0_id_29e8c3c6_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/_vue-style-loader@4.1.3@vue-style-loader/index.js??clonedRuleSet-22.use[0]!../../node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!../../node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./header.vue?vue&type=style&index=0&id=29e8c3c6&lang=scss&scoped=true */ \"./node_modules/_vue-style-loader@4.1.3@vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/header.vue?vue&type=style&index=0&id=29e8c3c6&lang=scss&scoped=true\");\n/* harmony import */ var _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_clonedRuleSet_22_use_0_node_modules_css_loader_6_7_1_css_loader_dist_cjs_js_clonedRuleSet_22_use_1_node_modules_vue_loader_17_0_0_vue_loader_dist_stylePostLoader_js_node_modules_postcss_loader_6_2_1_postcss_loader_dist_cjs_js_clonedRuleSet_22_use_2_node_modules_sass_loader_13_1_0_sass_loader_dist_cjs_js_clonedRuleSet_22_use_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_header_vue_vue_type_style_index_0_id_29e8c3c6_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_clonedRuleSet_22_use_0_node_modules_css_loader_6_7_1_css_loader_dist_cjs_js_clonedRuleSet_22_use_1_node_modules_vue_loader_17_0_0_vue_loader_dist_stylePostLoader_js_node_modules_postcss_loader_6_2_1_postcss_loader_dist_cjs_js_clonedRuleSet_22_use_2_node_modules_sass_loader_13_1_0_sass_loader_dist_cjs_js_clonedRuleSet_22_use_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_header_vue_vue_type_style_index_0_id_29e8c3c6_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_clonedRuleSet_22_use_0_node_modules_css_loader_6_7_1_css_loader_dist_cjs_js_clonedRuleSet_22_use_1_node_modules_vue_loader_17_0_0_vue_loader_dist_stylePostLoader_js_node_modules_postcss_loader_6_2_1_postcss_loader_dist_cjs_js_clonedRuleSet_22_use_2_node_modules_sass_loader_13_1_0_sass_loader_dist_cjs_js_clonedRuleSet_22_use_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_header_vue_vue_type_style_index_0_id_29e8c3c6_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_clonedRuleSet_22_use_0_node_modules_css_loader_6_7_1_css_loader_dist_cjs_js_clonedRuleSet_22_use_1_node_modules_vue_loader_17_0_0_vue_loader_dist_stylePostLoader_js_node_modules_postcss_loader_6_2_1_postcss_loader_dist_cjs_js_clonedRuleSet_22_use_2_node_modules_sass_loader_13_1_0_sass_loader_dist_cjs_js_clonedRuleSet_22_use_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_header_vue_vue_type_style_index_0_id_29e8c3c6_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n//# sourceURL=webpack:///./src/components/header.vue?");

/***/ }),

/***/ "./src/views/warningDetail.vue?vue&type=style&index=0&id=58e76e3a&lang=scss&scoped=true":
/*!**********************************************************************************************!*\
  !*** ./src/views/warningDetail.vue?vue&type=style&index=0&id=58e76e3a&lang=scss&scoped=true ***!
  \**********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_clonedRuleSet_22_use_0_node_modules_css_loader_6_7_1_css_loader_dist_cjs_js_clonedRuleSet_22_use_1_node_modules_vue_loader_17_0_0_vue_loader_dist_stylePostLoader_js_node_modules_postcss_loader_6_2_1_postcss_loader_dist_cjs_js_clonedRuleSet_22_use_2_node_modules_sass_loader_13_1_0_sass_loader_dist_cjs_js_clonedRuleSet_22_use_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_warningDetail_vue_vue_type_style_index_0_id_58e76e3a_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/_vue-style-loader@4.1.3@vue-style-loader/index.js??clonedRuleSet-22.use[0]!../../node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!../../node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./warningDetail.vue?vue&type=style&index=0&id=58e76e3a&lang=scss&scoped=true */ \"./node_modules/_vue-style-loader@4.1.3@vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=style&index=0&id=58e76e3a&lang=scss&scoped=true\");\n/* harmony import */ var _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_clonedRuleSet_22_use_0_node_modules_css_loader_6_7_1_css_loader_dist_cjs_js_clonedRuleSet_22_use_1_node_modules_vue_loader_17_0_0_vue_loader_dist_stylePostLoader_js_node_modules_postcss_loader_6_2_1_postcss_loader_dist_cjs_js_clonedRuleSet_22_use_2_node_modules_sass_loader_13_1_0_sass_loader_dist_cjs_js_clonedRuleSet_22_use_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_warningDetail_vue_vue_type_style_index_0_id_58e76e3a_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_clonedRuleSet_22_use_0_node_modules_css_loader_6_7_1_css_loader_dist_cjs_js_clonedRuleSet_22_use_1_node_modules_vue_loader_17_0_0_vue_loader_dist_stylePostLoader_js_node_modules_postcss_loader_6_2_1_postcss_loader_dist_cjs_js_clonedRuleSet_22_use_2_node_modules_sass_loader_13_1_0_sass_loader_dist_cjs_js_clonedRuleSet_22_use_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_warningDetail_vue_vue_type_style_index_0_id_58e76e3a_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_clonedRuleSet_22_use_0_node_modules_css_loader_6_7_1_css_loader_dist_cjs_js_clonedRuleSet_22_use_1_node_modules_vue_loader_17_0_0_vue_loader_dist_stylePostLoader_js_node_modules_postcss_loader_6_2_1_postcss_loader_dist_cjs_js_clonedRuleSet_22_use_2_node_modules_sass_loader_13_1_0_sass_loader_dist_cjs_js_clonedRuleSet_22_use_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_warningDetail_vue_vue_type_style_index_0_id_58e76e3a_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_clonedRuleSet_22_use_0_node_modules_css_loader_6_7_1_css_loader_dist_cjs_js_clonedRuleSet_22_use_1_node_modules_vue_loader_17_0_0_vue_loader_dist_stylePostLoader_js_node_modules_postcss_loader_6_2_1_postcss_loader_dist_cjs_js_clonedRuleSet_22_use_2_node_modules_sass_loader_13_1_0_sass_loader_dist_cjs_js_clonedRuleSet_22_use_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_warningDetail_vue_vue_type_style_index_0_id_58e76e3a_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n//# sourceURL=webpack:///./src/views/warningDetail.vue?");

/***/ }),

/***/ "./src/views/warningDetail.vue?vue&type=style&index=1&id=58e76e3a&lang=scss":
/*!**********************************************************************************!*\
  !*** ./src/views/warningDetail.vue?vue&type=style&index=1&id=58e76e3a&lang=scss ***!
  \**********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_clonedRuleSet_22_use_0_node_modules_css_loader_6_7_1_css_loader_dist_cjs_js_clonedRuleSet_22_use_1_node_modules_vue_loader_17_0_0_vue_loader_dist_stylePostLoader_js_node_modules_postcss_loader_6_2_1_postcss_loader_dist_cjs_js_clonedRuleSet_22_use_2_node_modules_sass_loader_13_1_0_sass_loader_dist_cjs_js_clonedRuleSet_22_use_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_warningDetail_vue_vue_type_style_index_1_id_58e76e3a_lang_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../node_modules/_vue-style-loader@4.1.3@vue-style-loader/index.js??clonedRuleSet-22.use[0]!../../node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!../../node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./warningDetail.vue?vue&type=style&index=1&id=58e76e3a&lang=scss */ \"./node_modules/_vue-style-loader@4.1.3@vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=style&index=1&id=58e76e3a&lang=scss\");\n/* harmony import */ var _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_clonedRuleSet_22_use_0_node_modules_css_loader_6_7_1_css_loader_dist_cjs_js_clonedRuleSet_22_use_1_node_modules_vue_loader_17_0_0_vue_loader_dist_stylePostLoader_js_node_modules_postcss_loader_6_2_1_postcss_loader_dist_cjs_js_clonedRuleSet_22_use_2_node_modules_sass_loader_13_1_0_sass_loader_dist_cjs_js_clonedRuleSet_22_use_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_warningDetail_vue_vue_type_style_index_1_id_58e76e3a_lang_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_clonedRuleSet_22_use_0_node_modules_css_loader_6_7_1_css_loader_dist_cjs_js_clonedRuleSet_22_use_1_node_modules_vue_loader_17_0_0_vue_loader_dist_stylePostLoader_js_node_modules_postcss_loader_6_2_1_postcss_loader_dist_cjs_js_clonedRuleSet_22_use_2_node_modules_sass_loader_13_1_0_sass_loader_dist_cjs_js_clonedRuleSet_22_use_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_warningDetail_vue_vue_type_style_index_1_id_58e76e3a_lang_scss__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_clonedRuleSet_22_use_0_node_modules_css_loader_6_7_1_css_loader_dist_cjs_js_clonedRuleSet_22_use_1_node_modules_vue_loader_17_0_0_vue_loader_dist_stylePostLoader_js_node_modules_postcss_loader_6_2_1_postcss_loader_dist_cjs_js_clonedRuleSet_22_use_2_node_modules_sass_loader_13_1_0_sass_loader_dist_cjs_js_clonedRuleSet_22_use_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_warningDetail_vue_vue_type_style_index_1_id_58e76e3a_lang_scss__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_clonedRuleSet_22_use_0_node_modules_css_loader_6_7_1_css_loader_dist_cjs_js_clonedRuleSet_22_use_1_node_modules_vue_loader_17_0_0_vue_loader_dist_stylePostLoader_js_node_modules_postcss_loader_6_2_1_postcss_loader_dist_cjs_js_clonedRuleSet_22_use_2_node_modules_sass_loader_13_1_0_sass_loader_dist_cjs_js_clonedRuleSet_22_use_3_node_modules_vue_loader_17_0_0_vue_loader_dist_index_js_ruleSet_0_use_0_warningDetail_vue_vue_type_style_index_1_id_58e76e3a_lang_scss__WEBPACK_IMPORTED_MODULE_0__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n//# sourceURL=webpack:///./src/views/warningDetail.vue?");

/***/ }),

/***/ "./node_modules/_vue-style-loader@4.1.3@vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/header.vue?vue&type=style&index=0&id=29e8c3c6&lang=scss&scoped=true":
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/_vue-style-loader@4.1.3@vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/header.vue?vue&type=style&index=0&id=29e8c3c6&lang=scss&scoped=true ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !!../../node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!../../node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./header.vue?vue&type=style&index=0&id=29e8c3c6&lang=scss&scoped=true */ \"./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/header.vue?vue&type=style&index=0&id=29e8c3c6&lang=scss&scoped=true\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = (__webpack_require__(/*! !../../node_modules/_vue-style-loader@4.1.3@vue-style-loader/lib/addStylesClient.js */ \"./node_modules/_vue-style-loader@4.1.3@vue-style-loader/lib/addStylesClient.js\")[\"default\"])\nvar update = add(\"7b5447c0\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(false) {}\n\n//# sourceURL=webpack:///./src/components/header.vue?./node_modules/_vue-style-loader@4.1.3@vue-style-loader/index.js??clonedRuleSet-22.use%5B0%5D!./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use%5B1%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use%5B2%5D!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use%5B3%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");

/***/ }),

/***/ "./node_modules/_vue-style-loader@4.1.3@vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=style&index=0&id=58e76e3a&lang=scss&scoped=true":
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/_vue-style-loader@4.1.3@vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=style&index=0&id=58e76e3a&lang=scss&scoped=true ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !!../../node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!../../node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./warningDetail.vue?vue&type=style&index=0&id=58e76e3a&lang=scss&scoped=true */ \"./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=style&index=0&id=58e76e3a&lang=scss&scoped=true\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = (__webpack_require__(/*! !../../node_modules/_vue-style-loader@4.1.3@vue-style-loader/lib/addStylesClient.js */ \"./node_modules/_vue-style-loader@4.1.3@vue-style-loader/lib/addStylesClient.js\")[\"default\"])\nvar update = add(\"5094e08e\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(false) {}\n\n//# sourceURL=webpack:///./src/views/warningDetail.vue?./node_modules/_vue-style-loader@4.1.3@vue-style-loader/index.js??clonedRuleSet-22.use%5B0%5D!./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use%5B1%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use%5B2%5D!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use%5B3%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");

/***/ }),

/***/ "./node_modules/_vue-style-loader@4.1.3@vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=style&index=1&id=58e76e3a&lang=scss":
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/_vue-style-loader@4.1.3@vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=style&index=1&id=58e76e3a&lang=scss ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(/*! !!../../node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!../../node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./warningDetail.vue?vue&type=style&index=1&id=58e76e3a&lang=scss */ \"./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/warningDetail.vue?vue&type=style&index=1&id=58e76e3a&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = (__webpack_require__(/*! !../../node_modules/_vue-style-loader@4.1.3@vue-style-loader/lib/addStylesClient.js */ \"./node_modules/_vue-style-loader@4.1.3@vue-style-loader/lib/addStylesClient.js\")[\"default\"])\nvar update = add(\"8855deb6\", content, false, {\"sourceMap\":false,\"shadowMode\":false});\n// Hot Module Replacement\nif(false) {}\n\n//# sourceURL=webpack:///./src/views/warningDetail.vue?./node_modules/_vue-style-loader@4.1.3@vue-style-loader/index.js??clonedRuleSet-22.use%5B0%5D!./node_modules/_css-loader@6.7.1@css-loader/dist/cjs.js??clonedRuleSet-22.use%5B1%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/stylePostLoader.js!./node_modules/_postcss-loader@6.2.1@postcss-loader/dist/cjs.js??clonedRuleSet-22.use%5B2%5D!./node_modules/_sass-loader@13.1.0@sass-loader/dist/cjs.js??clonedRuleSet-22.use%5B3%5D!./node_modules/_vue-loader@17.0.0@vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");

/***/ }),

/***/ "./src/assets/image/img/index_icon10.png":
/*!***********************************************!*\
  !*** ./src/assets/image/img/index_icon10.png ***!
  \***********************************************/
/***/ (function(module) {

"use strict";
eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAVCAQAAAAd112uAAAAAXNSR0IArs4c6QAAAm1JREFUOMt1019olmUYx/F7KzTxYKJnIUMFU8GFjpxlohWl5kFaHkwshZmQFC1S6GAJOtAVswM1pIgpkW4xbAkqVlML7WBzOt0IcdjInAq1v++Y2/R53vf9dNB6tnL9zn431/e+/tzXHcJDkmOSfAVmy5Mbgses8pV62zwe/k8mmWuDClUOeMuTJlugWrdhzUpMHB+abI2v3dCpX6+bvvG6Ek1iRM4oNFHOf6EJXtMgNqpYq53KtIJuR2wyQ+5Y6FGLnTLs30o7Z53t7iAtpcUBq8di032i38Pqs0ORav0iWRldascWuNIl2XGwtJMKvKrWWdfFMhpGsSnKdBlPWe3e9aItim1S6ye7R1+qUJ37siJDopGs/7hBlx1VZZfVXrDKvBCCR8zwhs91yOpWr8ppf8qg03e+8IMekQE9bvveWnlygxxzVPjVPRn9DltupqdU+sOQzyyVb6nDUknJ9Z6RG0xX7iaIXLDCs96xzMt+dN4Kz3lbkZXOJ8PqVWl+8KZWaZDyqXk+1uGk/c7YY5H9OnykwD4PkgX4xQdBnXsjB53KLXRcxn0pN5R63mmxUxb50EAy1wF1QVtSdZdyhY5Ly4jd9l6CFSlLMB44F/yW2B57FThkULufXVJmiRqDvlSowlASN+DboHGkMwYds8AGNUoVO6HG0zarVmyxY0lU2nU7goN6k3t+V2q2J+Tb6Jq7Ss01y0zb3EpiUg5aGLwy5qtktNlriz1aRLimUolKbUmuyAUvmRBM9b52GWmRSCzlrj6xSCTSl7hY2rAG6+X9vY9z7HPVZY0aNbmixRVNI645cRc1O2uraSGE8Bco01N4swN+EAAAAABJRU5ErkJggg==\";\n\n//# sourceURL=webpack:///./src/assets/image/img/index_icon10.png?");

/***/ }),

/***/ "./src/assets/image/img/index_icon11.png":
/*!***********************************************!*\
  !*** ./src/assets/image/img/index_icon11.png ***!
  \***********************************************/
/***/ (function(module) {

"use strict";
eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAQAAAAn3TzeAAAAAXNSR0IArs4c6QAAAtBJREFUOMuV021MFXQUx/H/BSmuGohGD9rTKgItlswA0WnMzRmJ0WqLVu+ajZrVm9bTyoyaNStqrPGi1Xracjq38qktoCBta+xCpotHoSiFW7oRTrcaBXx6cfEO9PrC83333//3/53zP+eEMC1EZCv1tO3a9OrX50df2GKNXGkhdZhjmc0OOiZu2KhJpw2LG9LhHeXmpRJlq9bsTyccsM1jdvlPq6fUahQ34pAnXXmuKGKTXhNiatxsrqiXjflUrtmu85BvTYp7VfbM9B7VY1yTteaEEIJZ1vvMI6IhhOBSt3nNoCG1rhBJiKI26DLmXzGrk09ludGCxBWzLVXlRYOGbZKTuFBgtwlfaXLIvSmqTleh0S7r1BoTc6f0IOoJw7qsU2Sta88TZVijxRn75LvVN0bVyQ0K7DXieVkpmxJV6TujvrRSpkwPi4spD6r1OaIwpegS9+jwj91KEu12g2ZDXgi2Ou6Tc71E5ChQ7aAxLVabNXWeqVbczmCnYbUulzn1sSEEaYq8aZ9Oo/Yol5F0z1bjmLag1Rmt6m101bSJed2IcRMOq0w6Zbvf2/Y7pT/Y62/QpigpW2QPmNRsSfL0ejuMY8Lh4D5vaNCgZppblq1GjDvtfYum5fCAeg3qbEzkO1+O6LTaIm63zX4NVp1NcWrIcsw3T+aFlihNjny50sOFQsRlFltuhTIrrFRkwYyFKlRm+RSlypTIC9IVek6jTj26dev1g+qzLiLu0qRbZ5IuR3wcLPahE076SUy7dh0OeDD56Wnu9rUO7Uk6xHwUvOIPx222yjLFipVaYu6MqbxFqRLFU5S6wzVBi7+8J1eaSIKU1c8ghOBncY+Hiw0tTvnAwouVPeNXJ72rSoVKG86jSoWbpIcgQ75KVdZbGuSpN2hEvz5HUzCg2xbZIVioTp8BR+0I0uR51vf6/WIgBb/p8ZKsEFztLQN+1+/z/wGzL9F2T8XIdwAAAABJRU5ErkJggg==\";\n\n//# sourceURL=webpack:///./src/assets/image/img/index_icon11.png?");

/***/ }),

/***/ "./src/assets/image/img/index_icon12.png":
/*!***********************************************!*\
  !*** ./src/assets/image/img/index_icon12.png ***!
  \***********************************************/
/***/ (function(module) {

"use strict";
eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAVCAQAAAAd112uAAAAAXNSR0IArs4c6QAAAq9JREFUGBltwWtoFQQYANBv77nNsVfmWqUlFpRFhUpOwooUNEOdy3DRMnM2RcuKQPvhrH5MadFAhF5kJFbEKq2NLJCQe3E6A3HiI8NtbtdNephYKtHopCspzXPiSmQrMVK5EjlxngKP2iUl6XG5cSVyjDHPWu/brMl8Y+Sq0OQMztnhThlxOflmadOl3w9+NKBLq2plKm122p9+9ZrJCuJSanUatNMqVWZbZZdBRyyQ6zZbncNpHZbEv2SZrsMJrxqvSFqEYpNscNJO98lQr89ZfxiUjIukucUWJzWqiP9wvWY/eUOesV7yjnandMRF8q3ws21ulxaXMMm39pmqWLlRplpnefxNuhu1OatOdlxGqQ1+sdtGDe6Vp1hhXGCYiRoN2GNC/I9sKwz4zTlndFjq6rhAsVrbnfK79a6SqdwNhstVJDdCjhKTvKBBow+dcNRzikOeel1ot9H9ytT52FcWmeFFU6S722r3yIqQpsIzUjrNCNPsNuB1U4xS5GkdWm2y2Ep7LZahxn7L5MUQw63V563wrpRmI6RHuEvSJuOUKbPEQetN1+SAesPiHybaozMcsNfkOE+WGofUyYyQodZRh7Q65KiFcmXKlhahQotUOO4zo+M8WeY4qEGhDDmedNgWK7U4bIFrzHaH7AgjvScVun1qdAwx1ieSlpmr0vP2W6bAQvssNdNHqg2LMMpWR8JO7cbHEBmm+cA3vvaUGm97KMID3lRvjS88Jj/CTJ1aQ6MuDQpjiDQjVKpUqsC1CiMUKDPOy1osV+pWn/vOojDBNt9bbZ75ajyiyhxVqj1srrmqzfKgKs/aYI2l2vRodl3IMUfCCX1SUlJ6devRq0+vXn2O6dHjmH79juu2zs3SI0KJJ3ypXUJCQkJCQkJCQkJSUlJSwg5J273iJukRfwHkhJG1Sr1a6gAAAABJRU5ErkJggg==\";\n\n//# sourceURL=webpack:///./src/assets/image/img/index_icon12.png?");

/***/ }),

/***/ "./src/assets/image/img/index_icon13.png":
/*!***********************************************!*\
  !*** ./src/assets/image/img/index_icon13.png ***!
  \***********************************************/
/***/ (function(module) {

"use strict";
eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAVCAQAAAAd112uAAAAAXNSR0IArs4c6QAAAmBJREFUGBl9wVto1QUcAODf/3/Oztnm2jmrjpPmcFiumpdp1NRUajILQgxPQYhvIwQJ6ULEQipE1IeC6mWjSUJbF3qoheSEZMMCX3owoyBG0OWlMrDoLjr9OrvomTT6vpBYYdCE1y2XxLzUK6qJueTtMIFvPSIbIaPgBrmYJdFihyf0uC6q5DzkM+dNKMvKWuMp+3Srj2lKnvW1n5xSVhdVmu3yht2aI7R50y/+MOZeaVRY66QpFw0oRUhkY4pEk2WKUWGz0y7jnMdkosLthv3pgrP2KsrbZKeuuJYVPvC3C84oS6NCrc2GjDmoQ0abEROG4gqpgiYLlL1j1G6LYpa829xpsUyENkd97+2YIW+L57xgi5J2qxUkGq10s1zModYGO3XFFHlbHfeDH40ry0WFkl2OOqxbGnNI5CUxxSLvOe8y/jGsLULqHh+b9JdX1Mf8tPncjItOWBUhsd6oS351SF2ERIu1bpFElaKDzpp0yc/2K0WFRtsdtl+nRGqVV50waL1sXCG1zAFjxr2oUyamqbdEs0yEBo/7zaTf9StGlVTJHToVZeM/NOozZdJbro8qiSYd1unWY6PlFqqJq2Rs8L4vjdqmJmZI3OhuTxo0Yswpn/jQSx7WYUHMUmulrdZpiAppyGjXq1+/A/o8Y5/XfOSMr4zb41ZpTJPIyUTIanZTaNWrz/1aNaqVV6dgiQcd8Z1zRvRoiKsUrLHd6tBpo6VycQ05iz1g2Dc+9by7tFioVZc99rpPMTSql8Q8ZC31qGO+cNIRLxsw5JBNCpL4fxp0edq7xhwzoFe7fFT8C/AiA8/YB0tfAAAAAElFTkSuQmCC\";\n\n//# sourceURL=webpack:///./src/assets/image/img/index_icon13.png?");

/***/ }),

/***/ "./src/assets/image/img/index_icon14.png":
/*!***********************************************!*\
  !*** ./src/assets/image/img/index_icon14.png ***!
  \***********************************************/
/***/ (function(module) {

"use strict";
eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAQAAAAn3TzeAAAAAXNSR0IArs4c6QAAAxhJREFUGBl1wX+MDXQAAPDve+/unbt77wzHuctYZ3TWodk1nN1W2bKampVfM9xG1PWD7WbVVOwKwzS/mnOxlkZl2dH4Q2xlZyNluTbVKcc5z4/EkRZd2KfsyBGfT2hPRG/FkuGexE220/rQnoTFag0O9yTTfKcdDiHI1l2u9BAkrLRDabgrOfIkjfSRZUGemWp96llJEQ94SE64C71U+dwbeuolP5jrkCuu+NpI6SGIyparpyJFeugiSyQEnVQ67ppm0yVDCOpdcd0FC3SWob8X1dhiu+02e89U/cTdp1orrlqpIITguDYXzNPbeJul/OWsnzU465JjPjNGrsmacdJUyRCC9c75W6uDXlOlwWk7LFJhvHEqLFHnrB9UGmi65V5RIBJCUGapL2yx1CdSDpitRBdZMmTI0lWpub7XZI5C3XUUCddJ19MQJRZI2WeMTqKhHVG5ytU7YYZEuJ0BdvvFBGnS5MgRC+1Ietnv9ikVCbfobJUTqnTR33TzzVPuQfHwHz3UOGORDuEmUQ875DulhtqoScpJjT40TCTcIGK4BnXuDzfJNkWLagOtddVRNdZKuWSlXAl9FIiGoMDHGjwtFtrItcAlMzyp3h/eVqhQtcvqjDPNMrOVyZDwlkaVMkMb+WpcVW6KJr8ZJSLmJS0OWmG19XZZpas0L2i2UCK0kW+NayaZ6IhzxomJqXTeT2YZ7jl7bJAnZppmiyVCG90s0ep5Zfb60yr9Fduo1U4lBnnfNmNlyvKqo16XFdpIqtBiub7mOiVlq21OOabCYBudtsYAUfk+0GC0tNBGTJkjvjHI/ebYrVGjr8zSzXC1NpnnMXGD1durKNwizyZnzJQpyzATTVIqEYIeSgzxiEIdvaPFah3CLdKN8qM9RoiLiouLhn+JiohKk2W0ww56SjS0J9u7ztjqUR3CHWR4wpcuWqhruJNitS7b5RndxcIN0hUYq85F6/QJ/yfNUBv86pBqE5QqVmyYcus0SalRJBLuRrp+quzXrMkBu9U54KiU/d7UVyTcm85GWOFbKS3OO26PJR7XSSTc5h9H5fD4uYMCbAAAAABJRU5ErkJggg==\";\n\n//# sourceURL=webpack:///./src/assets/image/img/index_icon14.png?");

/***/ }),

/***/ "./src/assets/image/img/index_icon15.png":
/*!***********************************************!*\
  !*** ./src/assets/image/img/index_icon15.png ***!
  \***********************************************/
/***/ (function(module) {

"use strict";
eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAAAAXNSR0IArs4c6QAAAkpJREFUOMt90t9r1XUcx/H3N796jvOcsy3dD+cWhdoKBKEQmjkRES8koYvIhCDNXzkphAldOSjcRbuI/UrPxB+IeiEHighCb6IMZuTi4AQxQSe6gTfin/DwYmdrW0ffr5sPH97PD5/3+/WKCPU+c9MTkx6brKLHJj1RdsirESHnqLK/jeh1Qm8VndCraNS4bvXhA2N+0K5O7iWqs0afMbvDdTe1R8jIKahVI4lKSdSoVZCTidDmL/+EKX3ysg4YMWDQIflZYJm9+vU7p0tOxrcehQcOyyj4yVOXfGqbmlkgq9MuZzz1s0ap/f4N93XJyCv60482yMScstgGV/zupBVSB9wND3wpq17RPkeVbLFotj21Uckxu52yUuoL92aAOid9otVZozZZPNs+6ozX7TSkaT6QWu+NCO+65rzWiAirDPnNOxJt1lkyD4iQSCKk1tqqLiJCwUZvSiOmF70AmDPookpD4pV59y8Ekv+fXghIrdapUPlSh3ZpVUDqLa0R1ik577WICC2+96v1Es3eXjC0WgN2aTBo3A5LKqZ1GlO0yg7Dmhf6cMoeXUq2T7tQGb9DSbePndYyA8xEY8g1v9g8/fqcaLzvsqtGNEgdnM7STPieuWSnjjkryHrPh4qeuapJap+7Ycp38rKOuGjYsK4F8R405IKv5GV841G44Ya1EXJWaNCs/j+7JGo1abRcTmKl626Fj5T1abNU5iVaqkWPss9DXreyUQN6HNdTRcf16PeHcV9bHhEaHXHblAkTHlbRhAlT7jimWfIcCqWFmQrNtqcAAAAASUVORK5CYII=\";\n\n//# sourceURL=webpack:///./src/assets/image/img/index_icon15.png?");

/***/ }),

/***/ "./src/assets/image/img/index_icon16.png":
/*!***********************************************!*\
  !*** ./src/assets/image/img/index_icon16.png ***!
  \***********************************************/
/***/ (function(module) {

"use strict";
eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAhCAYAAABX5MJvAAAAAXNSR0IArs4c6QAABZxJREFUWMPtV2tQlFUYJlFAQiXT8gplQpYVGepIagMDLuwNJNp+OWY1o38qpmaaZhpn2upf022cqLE/TYbirMACq5KhXSYGjUuAXNyFZXc/biq4XlIRN+zteT6+1YZR2FH60eQ3c+bsub3nOe/7vJcNC7v7/Sc/kXvYrFaZYrFJ+NadMm1s4zzXg3sn93IITrXK1MdtEpH6k0Tpdsm96GP0B2Vmhk1msV9bLjO0+Sh1H/aHBQHdKQCLRcIpNMUm03mRcb/cpyuVBzJLZL7JIQt1ZbJYXyKLMr+X+eq8TWZzH/fzHLVzB0AAAAL0OyQy1SYxvNxgk3mGEok3FUuCuUKWZ5fLUwa7PM2eY85znfu4n+egpcjbAyIaAAjgq8wOmfM8XmsolUR9uayABlKM5ZJmsovOWCaZGOs4xu9nuQ5Qj+YUyWKew+8ZtwcEtlTtipdQkOGAxBtL5QlTqaTwwterApsLG/wfVbacKvq57WTFodZTRXt+93/81pHAFg1UCvdn2eUhvU3mAkAMWoTKkVC1AHJNTXZINO1rsklcTpk8CQDrciskZ1/jmS9cnu6BLq9vyKcof/p8vr+8Pt+Ix6sMubqUwbLmwa/zHLIRZ9ar5yokDnyZTXmUG5o2qIVWiSDjYYL50MQyqtniGMk92DJYiMuH0aTe0y2l7n4p6DgtxejrMHZj3uP1Xf2hbWDfpgMjeTDFWmjkMfQLKG8pzBKSNmg7ok4vlftBtodBsGQIydrT4P/M7VEutnkVsToHZfnxyxLedFXCmgIyBf2y40Oy3XlGWj2KdPmUS9BYAc7rDeWy0lgsSyiPclVuTGSK5NGgE0OGm4tVLax/rSrwssuj+Dvx0vwTZyVSu3xs4/y29nPCfR0e5Wz+4cCreMBz1AZdmiSl/PFNMuoVEWoAgjeAB0k4uKGyZXAX7C7Fnf2yoPnKTQEE25zmYdndeVK4/1DrwF4SlW4MfizOqJJZKkEnAsG4YNyNmECPsEsyXM/Y2NHTTB68C3WH30ILwUbTvHHCr/Kj2d3jhElMNMlGeApjB+VPDALkoVfowAdziayCu5mdnu5+F4RugarHAxBsL7adl3ZwhyY0wKMQT1aTX5Sb+o1EhQRCDc04BFOsNJWJuc2t+GjnbeBDKCA2tZ8XJ0B0dCmnoclsAFgVBBGSJmizVLvE0r8BYoXZLvoaZ98R2vhTuGN00/C4AEjOD10DKidqXX3VeIQBsp5hOKfckEAwUuoLZSZ9m1EPfVrB0QvvITCN1Hh6ZE3LpXFBJLVcll+7eoT7v6q58AFMkW5g0LLJQsaKkIjJqMaUzHCrJao1FofkHnP2VXthkkp3n8TdwkMWYX4/1rmvztX7W17FSB5DOHNOLjKsluonjppM3awJ0GLpVlnIkOBI2ts/Bra2urvdCNPXGhEdXwFJExGw4hGkEtBvBg9qPaoGrrV19XS//8tQPrUAEEk07TpmVcidOFgFA1a9TNPS8Fy9XR6BeyWj6XYc/eOdhs6+egJBeJYmgKnGxQTFsQqws7fpy9qL2/MQH0hstKWsM1gEUW5ouUNL40TNoIV4MQ+vSVCBOCQ9v+rK5m/rzn0CdR/r8Cp+JrBOr3K2oaO39rt6/+dvHg68BA1mEADNwEhJOde1EHI6JzdQnpl3SjTdlVUTX8TIh3phLeuI7FHXy8O6BR7wAsech+rXcR/5tIHkxnkzM6g11Aw6JpsyzlMAtBBLYjGKMquqdkYAYnblpWrvkNW8nOusIwDqQZ7jecqxhlxLjCnvrBqQYH3JuoDmIWGZGWkmjBPZ48VLWHtwnfuCdeZ1ALddZ2qVNm1p+UexyxfyIlZdJC97jjmvXl4j0y3BIndSKm5NK0EwfBlDu0a06eQNe445r5UCo5eHTeZ/j5toR3vhjXZj7l+6+O73f/r+Brf6fxLdMK8uAAAAAElFTkSuQmCC\";\n\n//# sourceURL=webpack:///./src/assets/image/img/index_icon16.png?");

/***/ }),

/***/ "./src/assets/image/img/index_icon17.png":
/*!***********************************************!*\
  !*** ./src/assets/image/img/index_icon17.png ***!
  \***********************************************/
/***/ (function(module) {

"use strict";
eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkUwRTg0MUU2OTQ2QjExRUM4MjdDOTMyQ0MwODQzODk0IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkUwRTg0MUU3OTQ2QjExRUM4MjdDOTMyQ0MwODQzODk0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RTBFODQxRTQ5NDZCMTFFQzgyN0M5MzJDQzA4NDM4OTQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RTBFODQxRTU5NDZCMTFFQzgyN0M5MzJDQzA4NDM4OTQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6IqcUxAAABUElEQVR42mL8//8/Az0AIzGKgI5JAVKmQKwGxNpQ4atAfAuITzMyMs6hyBVAC4KAeP9/wgCkJohcSxr+kw4a6GEJaZYBFQb+pxwEEmPRXipYtJeQJc7/qQecsVngAMRTgfgVFS16BTXTAWZJ93/ag27G/3QqGpjwyDUC8Qo0sdVQjAyeAfEBIH5DKAFgBUjyi7CIHYIK+RCb/4ixiBOIL6KJ3UDOmEB2CBJ7FVkWQTVboln0DoiVoex5UC1LofxYcn0kAaUzkIMbzVK4HmhWwQBMRCSYnUB1zMCqYAYOeWZKUx0M6AHxdjSxF0DL9aDsJqRUCgIa5KY6GJiLJHYOFOlIfEEk9hWS4gga1ugRC0q+ZkD8DYlvDLXAGl8lOShKhqFrkQEQH6WhHSCzDRiRq3AgpQ9tVlkDMT+ZBn+EGn4aiC8C8996cLuOXg1IgAADAKXjMwoHCvUCAAAAAElFTkSuQmCC\";\n\n//# sourceURL=webpack:///./src/assets/image/img/index_icon17.png?");

/***/ }),

/***/ "./src/assets/image/img/index_icon6.png":
/*!**********************************************!*\
  !*** ./src/assets/image/img/index_icon6.png ***!
  \**********************************************/
/***/ (function(module) {

"use strict";
eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAbCAQAAAA5FAxtAAAAAXNSR0IArs4c6QAAAmBJREFUGBkFwctvVGUcANDz3bl9ZMRWMliiUrGNbU2wjQk+F4ZEQ4w1xvCKsJDoxrj0sfHfMLjQ6IKFLiQmNMQVwYWLEggECEJTBR/YMkmnVaDMTIfO3PvzHBBD8UFcjLW4Hf/EaizFV7ErEgBATgx6zUfGXXFV05gXHfCfY7FmRFVIOlZTJ8dWs6addMwfeobN+sxeZ/zmXVMKfZb8EDdyDJvUciKdA3dizkv22um6VUNK/e7qkUfSJ2lrAWhpyVQ0nbMobFpxJ5V5igilkAPI5Uo9NftMY8HxtEkOSAAA6FgyiFs2IAcQkdmioiVJkoqmedfQsy22auWA0DPhoFEnXbEpFGoOmVJIBrRdzgGF5GVHPa7rTx1J0vG3rlLIFG7nADKP2KLfsAEFkqYLFkHLigc5QoAHCqGrlJQKNQc9I1Tc8H1aztFVSgAgQ6ljWRIq6nrkkampeViuFCiVClWP2UgnACAzap8drqsrAW0LNr1tT2QAkDngHcu+dN8uQyomTTntO5PeswMAxPloxOexPT6JW1FEGc2Yi+did/wcN+Nw9AGQeVrDWc866kmZ5CFvOKzhom2mVQHIJA33vGocwKAZNXVhuyoAGXqSYf0ASBIIAMgkI6ouqQsQCr9bNyrT0AYg85cRL5g3Z0VPaDrjR4963pprNgDIzXnfETd9Y8krqhacUvepGafNp00AxER8Hffi1/gwpmIsxuOp2BPfxnqcjbcAgBSZGR+b1XXZorYn7Dbhqi+cSm0ASERuyn777USpz33nHfdLWgcAEkQy4k2vGzPgXxf85FLqAgD8D3OVCTfcupShAAAAAElFTkSuQmCC\";\n\n//# sourceURL=webpack:///./src/assets/image/img/index_icon6.png?");

/***/ }),

/***/ "./src/assets/image/img/index_icon7.png":
/*!**********************************************!*\
  !*** ./src/assets/image/img/index_icon7.png ***!
  \**********************************************/
/***/ (function(module) {

"use strict";
eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAbCAQAAADM6ofdAAAAAXNSR0IArs4c6QAAAkFJREFUGBl9wV9o1AUcAPDv3W123TnNNFHYasqYRigVFOFDDks0DBllDyNIyB60l4UEk1jRQzWiHrR8SBcEmn/mgxYWiZOwvAoGYWqta/YPxOphjA0SbdP7pK6fd7e5Pp+opk6bLk1RRVqLndrkopqUh/Q6p93MqKDeu4o+9oB0VDLPdj856UtrZeI/ZnjRIS/b7y0LokzWZgNe0aLgC0viOrVWKdhkhhZHdERC1pN+sEejWs/52fvujKs02Ga3pgg5rzkS46Q86JjvrJCJMF+XX22Wj3CPj7xqVoQazzgR4+RtdU67fFwlZZHP9FkeoVG3/Zoj5HQpxDVqrNPvA/PjBmt870P1stY4qlu7Nx3VGRHS7tOr4GHpuEGdLr/pMNN0rd7TY5cN6iPCHd426AX5qCDlfp/rt0LGNE2WWSIfEdIe86NezTGBrA0GbTcrKpmr21ltbolJNNjrpNXSUeYJp+wyL25CxuPO2GF2lDnotJUxBbc7oGi5dCScd9pTmt0mHZOotdEvXlIXCSOGfKVHp0fMiSpq3OVZRQc0RMKwkstGjejzumVujeuk1Ftnp+MGnbA4EoaVXdLreUstsNha7+g3ruDuSBhWacyfjtnnE0UXlFxzxWELI2HIRKMu+scViYu2mRsJ37rs//3ladlI6HReydRGfaopyizS45KplAxYb1qUyVilz1RGvGFOVJPT6ri/lVQb84etFkrFRHIetdvvLigZN2bINzo0ysTNqHWvLQ47Y8BZRV/bodXsmORfsCKJ/RNUCFsAAAAASUVORK5CYII=\";\n\n//# sourceURL=webpack:///./src/assets/image/img/index_icon7.png?");

/***/ }),

/***/ "./src/assets/image/img/index_icon8.png":
/*!**********************************************!*\
  !*** ./src/assets/image/img/index_icon8.png ***!
  \**********************************************/
/***/ (function(module) {

"use strict";
eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAVCAQAAAAd112uAAAAAXNSR0IArs4c6QAAAdVJREFUGBmVwUtrlGcYANDzvN9MkkaDjWna4r1Z6cZSghulCxeKe3HVP+Nv6EJXIuK+i1hFpF5A6qIiYqlSsKnSYqVeU8XRmfnme+poGiOi1nMif7bOQPq/QuVWy+cmfahB0ffhei23jBk1rvHAAqasUjz1UNcKHxtRu+8fI1abkB7p+bPa/5fLxmzyxHe+dUrbjLafHHDEHeutdttRB10yYYOO7x00V5x0zHWp6xennXVNV7rpTPzgR3elRy4556x5fc9cc9LpEgMDYShUCEMhUAyFIhBCCCILiiKEShEqgUrJUCkoCioVQhEUy6X0ppRIaUnxuvCmEAhhSct/Ul+DWoNaE5kDDRq1VKulRS1DRSAUBYFUZ9EYalCpBIriuZaXGh/Z5r70lTHhC7vdsN20MOlrYY0tRjyTnmuhb0HXuN1m8YlxxVaf6pj0mTBtn11GTRnR9UDPUK7Ib/L3bPL9Bnkhd2Sbgo6LLuh4n/S3U65G30vZzp15PDv5Lk0u5KHcbLmM3JMn8nG+3b08nLMZXgiLcsysvXZZa6W2V1LPY/PmzPk1ai+EJdkybaudtpsxYVRITz30m/POuWohGovCa3LUjG2+tNGUtp675l1x0R9RW+ZfCRoKowYZ2IcAAAAASUVORK5CYII=\";\n\n//# sourceURL=webpack:///./src/assets/image/img/index_icon8.png?");

/***/ }),

/***/ "./src/assets/image/img/index_icon9.png":
/*!**********************************************!*\
  !*** ./src/assets/image/img/index_icon9.png ***!
  \**********************************************/
/***/ (function(module) {

"use strict";
eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAVCAQAAAAd112uAAAAAXNSR0IArs4c6QAAAqhJREFUOMt10ltoFwQUBvCzTd3c/UaCDsecI1gLMVnlQ/SQmPhghjSWRKgLfUjYis2t/7aGEiUWYiChlQUpRdFGMW0vynLBlqZNx6BFbKuVzm3MTUh6MPn10JKZdb7Hw8f5LifinpEsy3KrVSqVKyVCthf9bNZvDlsa/zUyPewlHznjrHavelyeQglT/sSIarn3kvLt8I1fjep30YgrLmq2Uolmo267pUuNlXeT0tUaMeMTWz1ijc2OmjbjgHwF3jSLW37xznxSqmcMGpVQZlFEhBTFag0ZsV2KJ112wx9uG5ofxEO+Mq3VkrsU5NptzEklltiuzcdGfDc/igbXdSqX9C+/K7Qbs8cqJXI8YJeaf1YpKpw2q8bCe2JarNUNY7qdsFORVKkRIUmeDd4zpVdlhCTJ8y9aqMr3xl2ba261lJBkuXr9bvrdIYVyVFpnhQKl7ouQrUylKi/Yqc05M953f8jXYtJNJ+33qGItzujVaIu3VEmx1mHV0iIipFnvnHGvhGcNGJVQIUeOhAuOe81zdjuvSarNLtkra07wAtv8oDucMmafvAhJ1up1TJlM2ar1+9zz3jYkIXNerp8ZClf1qZyzXm1IrUURkj1lwKgug66olyFbjuQIBQ64HK7rUDxXwnoDjiq2WJZql3xqq0N+tMcy22yUESHf6/rDuE6lcwKWOaLfQXU22aVPk3RP+1abTTrUyomw1DGDoc8F6+48WIU3fKHDDk9otTHCKgk1GnWpkx1hg/O6Q4th7yqWLl2GdHnKPahQhlzZ0mVIU6TGCY2KrPGln7wcyh037ENNmrVKaNCgXqMmDRo1qVerTosPHLHPacMOKgkLPKbdtKk5TJowYdKUyTu45qoJU6aM2qtMckTIskWnXj3O/g969Phaj277/yb9BY3OoPbLRLiqAAAAAElFTkSuQmCC\";\n\n//# sourceURL=webpack:///./src/assets/image/img/index_icon9.png?");

/***/ }),

/***/ "./src/assets/image/index_icon16.png":
/*!*******************************************!*\
  !*** ./src/assets/image/index_icon16.png ***!
  \*******************************************/
/***/ (function(module) {

"use strict";
eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAAAgCAMAAAC2GN9jAAAAAXNSR0IArs4c6QAAAZJQTFRFAAAAAP//AP//AKr/AL//AMz/ANT/ANv/AN//AMb/AMz/ANH/ANT/ANj/AMz/AM//ANL/ANX/AMz/AM7/ANH/AMz/AM7/AND2ANH2AMz2AM73ANH3ANL4ANH4ANL5AM35AND5ANH5ANL6AM76AND6ANH6AM77AND7ANH7AM77AM/7ANH8AM78AND5AND5ANH5AM75AM/5AND5AM/5AND5AND6AM/6AND6AND6AM76AM/6AM/6AND6AM/6AM/6AND6AM/7AND7AND7AND5AM/5AM/5AM/5AND6AND6AM/6AM/6AND6AM/6AND6AM/6AM/6AND6AM/6AND6AM/7AM/7AND7AND7AM/7AM/7AND7AM/7AND7AND7AM/7AM/7AND7AND6AND6AM/6AM/6AND6AND6AND6AM/6AND6AM/6AND6AND6AND6AM/6AND6AND6AM/6AND6AM/6AM/6AND7AND7AM/7AND7AND7AND6AND6AM/6AM/6AND6AND6AND6AM/6AM/6AM/6AND6AND6AND6PdKV5gAAAIV0Uk5TAAECAwQFBgcICQoLDA0PEBESFBUWGRobHB4fISInKCkrLDM0Njg5PENERU1OUVJTVFVWW1xdZmdoaWprbG9wcXZ3fYiJiouRk5SVmZqen6Cipqmqq6yusLGytLe5uru8vb6/wcLDxMXIzM3T1NXX2dvd3+Dj5Oru8vP09fb3+Pn6+/z9/kVGERMAAAKuSURBVEjHrZZpW9NAFIUPFFIRlIrgghGwiloXJBbjwuaYVsC4gKW4oFHcMEKVFDCyaCj1/G8/dEnaEh9Kez/NcvPOvZO5ZwYAAOnmTNphTbbxfUaRULTrK6yLrQzkgYEYmRrvDaImC/aOp8hYAAAQ4/bdAOpggRGHMQAYpBPxjPe9jrcfGHrF4SAgrXHEM9g1z1dnDh7oMNclRLnsyfpIgpzrriH3ZQ5hlmPuSPOzTG1IjDGJVfYW+w2Pf5NMnKoB2cNV/KF7eia3SPLtpfZDezjLOoBQWFWFbli2DMP2mFHwkuiALH40sZU7sZvpd/Frx8qRYdsABGlbZkJTZZi2VjTbLLqRHuTDLU8hZM1bUhkzwgSEG4DpYrxtL/LBdml1ZeaOlzEVGYJCCCGEApgmQqqqqqrqhxz+U16xfz90VmyoyM9ZgGlCzXXCPkhRqUTZT16mKoScTzxka3mkEg5rvsimiYow6SQa4PGlgGYnLBk6Q3lkGFB9kWh6WsnciHqzpoBhyqYtKLAvJKTpHHM366a+GCxBhqgDBi0UkJoQ+n+QaJlxSPL91YvjH/MRb54vQQpGIGhRzyEjuXMu+yPROpsh+fwk0Hzh0U+SdIQXqdumYlGHSmNf5xIAjr5gUTb6F0hmpt1JjYYmK0YYgKrtG4kTb1wl6poldxcKMyGTmkVDF0IIoek6TLolzhLkL5YUXs8iXxYkuDPJ7Nci0ooAqmGTJG074VPjbXTwgz0l9dH/eaqj0D79jfO+MqYoe7X7uFoqwQDQdthV5AE+qVIvR5lElEv+12PHl/tVXhRLHIK0xmFfj5bb56pD3uN6EFDoXPZdtFuq9tJVACDO7TuN9XgaNI44jOdCmSRTo2eba+O19o2myKnCf7lRr2fWoLuEFE2md2rD7aST0dzG/wPWR7UbxdQRHwAAAABJRU5ErkJggg==\";\n\n//# sourceURL=webpack:///./src/assets/image/index_icon16.png?");

/***/ })

}]);