!(function (e, t) { "object" == typeof exports && "object" == typeof module ? (module.exports = t()) : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? (exports.mpegts = t()) : (e.mpegts = t()) })(window, function () { return (function (e) { var t = {} function i(n) { if (t[n]) return t[n].exports var a = (t[n] = { i: n, l: !1, exports: {} }) return e[n].call(a.exports, a, a.exports, i), (a.l = !0), a.exports } return ( (i.m = e), (i.c = t), (i.d = function (e, t, n) { i.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: n }) }), (i.r = function (e) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }) }), (i.t = function (e, t) { if ((1 & t && (e = i(e)), 8 & t)) return e if (4 & t && "object" == typeof e && e && e.__esModule) return e var n = Object.create(null) if ((i.r(n), Object.defineProperty(n, "default", { enumerable: !0, value: e }), 2 & t && "string" != typeof e)) for (var a in e) i.d( n, a, function (t) { return e[t] }.bind(null, a) ) return n }), (i.n = function (e) { var t = e && e.__esModule ? function () { return e.default } : function () { return e } return i.d(t, "a", t), t }), (i.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }), (i.p = ""), i((i.s = 14)) ) })([ function (e, t, i) { "use strict" var n = i(6), a = i.n(n), r = (function () { function e() {} return ( (e.e = function (t, i) { ;(t && !e.FORCE_GLOBAL_TAG) || (t = e.GLOBAL_TAG) var n = "[" + t + "] > " + i e.ENABLE_CALLBACK && e.emitter.emit("log", "error", n), e.ENABLE_ERROR && (console.error ? console.error(n) : console.warn ? console.warn(n) : console.log(n)) }), (e.i = function (t, i) { ;(t && !e.FORCE_GLOBAL_TAG) || (t = e.GLOBAL_TAG) var n = "[" + t + "] > " + i e.ENABLE_CALLBACK && e.emitter.emit("log", "info", n), e.ENABLE_INFO && (console.info ? console.info(n) : console.log(n)) }), (e.w = function (t, i) { ;(t && !e.FORCE_GLOBAL_TAG) || (t = e.GLOBAL_TAG) var n = "[" + t + "] > " + i e.ENABLE_CALLBACK && e.emitter.emit("log", "warn", n), e.ENABLE_WARN && (console.warn ? console.warn(n) : console.log(n)) }), (e.d = function (t, i) { ;(t && !e.FORCE_GLOBAL_TAG) || (t = e.GLOBAL_TAG) var n = "[" + t + "] > " + i e.ENABLE_CALLBACK && e.emitter.emit("log", "debug", n), e.ENABLE_DEBUG && (console.debug ? console.debug(n) : console.log(n)) }), (e.v = function (t, i) { ;(t && !e.FORCE_GLOBAL_TAG) || (t = e.GLOBAL_TAG) var n = "[" + t + "] > " + i e.ENABLE_CALLBACK && e.emitter.emit("log", "verbose", n), e.ENABLE_VERBOSE && console.log(n) }), e ) })() ;(r.GLOBAL_TAG = "mpegts.js"), (r.FORCE_GLOBAL_TAG = !1), (r.ENABLE_ERROR = !0), (r.ENABLE_INFO = !0), (r.ENABLE_WARN = !0), (r.ENABLE_DEBUG = !0), (r.ENABLE_VERBOSE = !0), (r.ENABLE_CALLBACK = !1), (r.emitter = new a.a()), (t.a = r) }, function (e, t, i) { "use strict" t.a = { IO_ERROR: "io_error", DEMUX_ERROR: "demux_error", INIT_SEGMENT: "init_segment", MEDIA_SEGMENT: "media_segment", LOADING_COMPLETE: "loading_complete", RECOVERED_EARLY_EOF: "recovered_early_eof", MEDIA_INFO: "media_info", METADATA_ARRIVED: "metadata_arrived", SCRIPTDATA_ARRIVED: "scriptdata_arrived", TIMED_ID3_METADATA_ARRIVED: "timed_id3_metadata_arrived", SMPTE2038_METADATA_ARRIVED: "smpte2038_metadata_arrived", SCTE35_METADATA_ARRIVED: "scte35_metadata_arrived", PES_PRIVATE_DATA_DESCRIPTOR: "pes_private_data_descriptor", PES_PRIVATE_DATA_ARRIVED: "pes_private_data_arrived", STATISTICS_INFO: "statistics_info", RECOMMEND_SEEKPOINT: "recommend_seekpoint" } }, function (e, t, i) { "use strict" i.d(t, "c", function () { return a }), i.d(t, "b", function () { return r }), i.d(t, "a", function () { return s }) var n = i(3), a = { kIdle: 0, kConnecting: 1, kBuffering: 2, kError: 3, kComplete: 4 }, r = { OK: "OK", EXCEPTION: "Exception", HTTP_STATUS_CODE_INVALID: "HttpStatusCodeInvalid", CONNECTING_TIMEOUT: "ConnectingTimeout", EARLY_EOF: "EarlyEof", UNRECOVERABLE_EARLY_EOF: "UnrecoverableEarlyEof" }, s = (function () { function e(e) { ;(this._type = e || "undefined"), (this._status = a.kIdle), (this._needStash = !1), (this._onContentLengthKnown = null), (this._onURLRedirect = null), (this._onDataArrival = null), (this._onError = null), (this._onComplete = null) } return ( (e.prototype.destroy = function () { ;(this._status = a.kIdle), (this._onContentLengthKnown = null), (this._onURLRedirect = null), (this._onDataArrival = null), (this._onError = null), (this._onComplete = null) }), (e.prototype.isWorking = function () { return this._status === a.kConnecting || this._status === a.kBuffering }), Object.defineProperty(e.prototype, "type", { get: function () { return this._type }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "status", { get: function () { return this._status }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "needStashBuffer", { get: function () { return this._needStash }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onContentLengthKnown", { get: function () { return this._onContentLengthKnown }, set: function (e) { this._onContentLengthKnown = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onURLRedirect", { get: function () { return this._onURLRedirect }, set: function (e) { this._onURLRedirect = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onDataArrival", { get: function () { return this._onDataArrival }, set: function (e) { this._onDataArrival = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onError", { get: function () { return this._onError }, set: function (e) { this._onError = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onComplete", { get: function () { return this._onComplete }, set: function (e) { this._onComplete = e }, enumerable: !1, configurable: !0 }), (e.prototype.open = function (e, t) { throw new n.c("Unimplemented abstract function!") }), (e.prototype.abort = function () { throw new n.c("Unimplemented abstract function!") }), e ) })() }, function (e, t, i) { "use strict" i.d(t, "d", function () { return r }), i.d(t, "a", function () { return s }), i.d(t, "b", function () { return o }), i.d(t, "c", function () { return d }) var n, a = ((n = function (e, t) { return (n = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t }) || function (e, t) { for (var i in t) t.hasOwnProperty(i) && (e[i] = t[i]) })(e, t) }), function (e, t) { function i() { this.constructor = e } n(e, t), (e.prototype = null === t ? Object.create(t) : ((i.prototype = t.prototype), new i())) }), r = (function () { function e(e) { this._message = e } return ( Object.defineProperty(e.prototype, "name", { get: function () { return "RuntimeException" }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "message", { get: function () { return this._message }, enumerable: !1, configurable: !0 }), (e.prototype.toString = function () { return this.name + ": " + this.message }), e ) })(), s = (function (e) { function t(t) { return e.call(this, t) || this } return ( a(t, e), Object.defineProperty(t.prototype, "name", { get: function () { return "IllegalStateException" }, enumerable: !1, configurable: !0 }), t ) })(r), o = (function (e) { function t(t) { return e.call(this, t) || this } return ( a(t, e), Object.defineProperty(t.prototype, "name", { get: function () { return "InvalidArgumentException" }, enumerable: !1, configurable: !0 }), t ) })(r), d = (function (e) { function t(t) { return e.call(this, t) || this } return ( a(t, e), Object.defineProperty(t.prototype, "name", { get: function () { return "NotImplementedException" }, enumerable: !1, configurable: !0 }), t ) })(r) }, function (e, t, i) { "use strict" var n = {} !(function () { var e = self.navigator.userAgent.toLowerCase(), t = /(edge)\/([\w.]+)/.exec(e) || /(opr)[\/]([\w.]+)/.exec(e) || /(chrome)[ \/]([\w.]+)/.exec(e) || /(iemobile)[\/]([\w.]+)/.exec(e) || /(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e) || /(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e) || /(webkit)[ \/]([\w.]+)/.exec(e) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e) || /(msie) ([\w.]+)/.exec(e) || (e.indexOf("trident") >= 0 && /(rv)(?::| )([\w.]+)/.exec(e)) || (e.indexOf("compatible") < 0 && /(firefox)[ \/]([\w.]+)/.exec(e)) || [], i = /(ipad)/.exec(e) || /(ipod)/.exec(e) || /(windows phone)/.exec(e) || /(iphone)/.exec(e) || /(kindle)/.exec(e) || /(android)/.exec(e) || /(windows)/.exec(e) || /(mac)/.exec(e) || /(linux)/.exec(e) || /(cros)/.exec(e) || [], a = { browser: t[5] || t[3] || t[1] || "", version: t[2] || t[4] || "0", majorVersion: t[4] || t[2] || "0", platform: i[0] || "" }, r = {} if (a.browser) { r[a.browser] = !0 var s = a.majorVersion.split(".") ;(r.version = { major: parseInt(a.majorVersion, 10), string: a.version }), s.length > 1 && (r.version.minor = parseInt(s[1], 10)), s.length > 2 && (r.version.build = parseInt(s[2], 10)) } if ((a.platform && (r[a.platform] = !0), (r.chrome || r.opr || r.safari) && (r.webkit = !0), r.rv || r.iemobile)) { r.rv && delete r.rv ;(a.browser = "msie"), (r.msie = !0) } if (r.edge) { delete r.edge ;(a.browser = "msedge"), (r.msedge = !0) } if (r.opr) { ;(a.browser = "opera"), (r.opera = !0) } if (r.safari && r.android) { ;(a.browser = "android"), (r.android = !0) } for (var o in ((r.name = a.browser), (r.platform = a.platform), n)) n.hasOwnProperty(o) && delete n[o] Object.assign(n, r) })(), (t.a = n) }, function (e, t, i) { "use strict" t.a = { OK: "OK", FORMAT_ERROR: "FormatError", FORMAT_UNSUPPORTED: "FormatUnsupported", CODEC_UNSUPPORTED: "CodecUnsupported" } }, function (e, t, i) { "use strict" var n, a = "object" == typeof Reflect ? Reflect : null, r = a && "function" == typeof a.apply ? a.apply : function (e, t, i) { return Function.prototype.apply.call(e, t, i) } n = a && "function" == typeof a.ownKeys ? a.ownKeys : Object.getOwnPropertySymbols ? function (e) { return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e)) } : function (e) { return Object.getOwnPropertyNames(e) } var s = Number.isNaN || function (e) { return e != e } function o() { o.init.call(this) } ;(e.exports = o), (e.exports.once = function (e, t) { return new Promise(function (i, n) { function a(i) { e.removeListener(t, r), n(i) } function r() { "function" == typeof e.removeListener && e.removeListener("error", a), i([].slice.call(arguments)) } g(e, t, r, { once: !0 }), "error" !== t && (function (e, t, i) { "function" == typeof e.on && g(e, "error", t, i) })(e, a, { once: !0 }) }) }), (o.EventEmitter = o), (o.prototype._events = void 0), (o.prototype._eventsCount = 0), (o.prototype._maxListeners = void 0) var d = 10 function _(e) { if ("function" != typeof e) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e) } function h(e) { return void 0 === e._maxListeners ? o.defaultMaxListeners : e._maxListeners } function c(e, t, i, n) { var a, r, s, o if ( (_(i), void 0 === (r = e._events) ? ((r = e._events = Object.create(null)), (e._eventsCount = 0)) : (void 0 !== r.newListener && (e.emit("newListener", t, i.listener ? i.listener : i), (r = e._events)), (s = r[t])), void 0 === s) ) (s = r[t] = i), ++e._eventsCount else if ( ("function" == typeof s ? (s = r[t] = n ? [i, s] : [s, i]) : n ? s.unshift(i) : s.push(i), (a = h(e)) > 0 && s.length > a && !s.warned) ) { s.warned = !0 var d = new Error( "Possible EventEmitter memory leak detected. " + s.length + " " + String(t) + " listeners added. Use emitter.setMaxListeners() to increase limit" ) ;(d.name = "MaxListenersExceededWarning"), (d.emitter = e), (d.type = t), (d.count = s.length), (o = d), console && console.warn && console.warn(o) } return e } function u() { if (!this.fired) return ( this.target.removeListener(this.type, this.wrapFn), (this.fired = !0), 0 === arguments.length ? this.listener.call(this.target) : this.listener.apply(this.target, arguments) ) } function l(e, t, i) { var n = { fired: !1, wrapFn: void 0, target: e, type: t, listener: i }, a = u.bind(n) return (a.listener = i), (n.wrapFn = a), a } function f(e, t, i) { var n = e._events if (void 0 === n) return [] var a = n[t] return void 0 === a ? [] : "function" == typeof a ? i ? [a.listener || a] : [a] : i ? (function (e) { for (var t = new Array(e.length), i = 0; i < t.length; ++i) t[i] = e[i].listener || e[i] return t })(a) : m(a, a.length) } function p(e) { var t = this._events if (void 0 !== t) { var i = t[e] if ("function" == typeof i) return 1 if (void 0 !== i) return i.length } return 0 } function m(e, t) { for (var i = new Array(t), n = 0; n < t; ++n) i[n] = e[n] return i } function g(e, t, i, n) { if ("function" == typeof e.on) n.once ? e.once(t, i) : e.on(t, i) else { if ("function" != typeof e.addEventListener) throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof e) e.addEventListener(t, function a(r) { n.once && e.removeEventListener(t, a), i(r) }) } } Object.defineProperty(o, "defaultMaxListeners", { enumerable: !0, get: function () { return d }, set: function (e) { if ("number" != typeof e || e < 0 || s(e)) throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + e + ".") d = e } }), (o.init = function () { ;(void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events) || ((this._events = Object.create(null)), (this._eventsCount = 0)), (this._maxListeners = this._maxListeners || void 0) }), (o.prototype.setMaxListeners = function (e) { if ("number" != typeof e || e < 0 || s(e)) throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + e + ".") return (this._maxListeners = e), this }), (o.prototype.getMaxListeners = function () { return h(this) }), (o.prototype.emit = function (e) { for (var t = [], i = 1; i < arguments.length; i++) t.push(arguments[i]) var n = "error" === e, a = this._events if (void 0 !== a) n = n && void 0 === a.error else if (!n) return !1 if (n) { var s if ((t.length > 0 && (s = t[0]), s instanceof Error)) throw s var o = new Error("Unhandled error." + (s ? " (" + s.message + ")" : "")) throw ((o.context = s), o) } var d = a[e] if (void 0 === d) return !1 if ("function" == typeof d) r(d, this, t) else { var _ = d.length, h = m(d, _) for (i = 0; i < _; ++i) r(h[i], this, t) } return !0 }), (o.prototype.addListener = function (e, t) { return c(this, e, t, !1) }), (o.prototype.on = o.prototype.addListener), (o.prototype.prependListener = function (e, t) { return c(this, e, t, !0) }), (o.prototype.once = function (e, t) { return _(t), this.on(e, l(this, e, t)), this }), (o.prototype.prependOnceListener = function (e, t) { return _(t), this.prependListener(e, l(this, e, t)), this }), (o.prototype.removeListener = function (e, t) { var i, n, a, r, s if ((_(t), void 0 === (n = this._events))) return this if (void 0 === (i = n[e])) return this if (i === t || i.listener === t) 0 == --this._eventsCount ? (this._events = Object.create(null)) : (delete n[e], n.removeListener && this.emit("removeListener", e, i.listener || t)) else if ("function" != typeof i) { for (a = -1, r = i.length - 1; r >= 0; r--) if (i[r] === t || i[r].listener === t) { ;(s = i[r].listener), (a = r) break } if (a < 0) return this 0 === a ? i.shift() : (function (e, t) { for (; t + 1 < e.length; t++) e[t] = e[t + 1] e.pop() })(i, a), 1 === i.length && (n[e] = i[0]), void 0 !== n.removeListener && this.emit("removeListener", e, s || t) } return this }), (o.prototype.off = o.prototype.removeListener), (o.prototype.removeAllListeners = function (e) { var t, i, n if (void 0 === (i = this._events)) return this if (void 0 === i.removeListener) return ( 0 === arguments.length ? ((this._events = Object.create(null)), (this._eventsCount = 0)) : void 0 !== i[e] && (0 == --this._eventsCount ? (this._events = Object.create(null)) : delete i[e]), this ) if (0 === arguments.length) { var a, r = Object.keys(i) for (n = 0; n < r.length; ++n) "removeListener" !== (a = r[n]) && this.removeAllListeners(a) return this.removeAllListeners("removeListener"), (this._events = Object.create(null)), (this._eventsCount = 0), this } if ("function" == typeof (t = i[e])) this.removeListener(e, t) else if (void 0 !== t) for (n = t.length - 1; n >= 0; n--) this.removeListener(e, t[n]) return this }), (o.prototype.listeners = function (e) { return f(this, e, !0) }), (o.prototype.rawListeners = function (e) { return f(this, e, !1) }), (o.listenerCount = function (e, t) { return "function" == typeof e.listenerCount ? e.listenerCount(t) : p.call(e, t) }), (o.prototype.listenerCount = p), (o.prototype.eventNames = function () { return this._eventsCount > 0 ? n(this._events) : [] }) }, function (e, t, i) { "use strict" i.d(t, "d", function () { return n }), i.d(t, "b", function () { return a }), i.d(t, "a", function () { return r }), i.d(t, "c", function () { return s }) var n = function (e, t, i, n, a) { ;(this.dts = e), (this.pts = t), (this.duration = i), (this.originalDts = n), (this.isSyncPoint = a), (this.fileposition = null) }, a = (function () { function e() { ;(this.beginDts = 0), (this.endDts = 0), (this.beginPts = 0), (this.endPts = 0), (this.originalBeginDts = 0), (this.originalEndDts = 0), (this.syncPoints = []), (this.firstSample = null), (this.lastSample = null) } return ( (e.prototype.appendSyncPoint = function (e) { ;(e.isSyncPoint = !0), this.syncPoints.push(e) }), e ) })(), r = (function () { function e() { this._list = [] } return ( (e.prototype.clear = function () { this._list = [] }), (e.prototype.appendArray = function (e) { var t = this._list 0 !== e.length && (t.length > 0 && e[0].originalDts < t[t.length - 1].originalDts && this.clear(), Array.prototype.push.apply(t, e)) }), (e.prototype.getLastSyncPointBeforeDts = function (e) { if (0 == this._list.length) return null var t = this._list, i = 0, n = t.length - 1, a = 0, r = 0, s = n for (e < t[0].dts && ((i = 0), (r = s + 1)); r <= s; ) { if ((a = r + Math.floor((s - r) / 2)) === n || (e >= t[a].dts && e < t[a + 1].dts)) { i = a break } t[a].dts < e ? (r = a + 1) : (s = a - 1) } return this._list[i] }), e ) })(), s = (function () { function e(e) { ;(this._type = e), (this._list = []), (this._lastAppendLocation = -1) } return ( Object.defineProperty(e.prototype, "type", { get: function () { return this._type }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "length", { get: function () { return this._list.length }, enumerable: !1, configurable: !0 }), (e.prototype.isEmpty = function () { return 0 === this._list.length }), (e.prototype.clear = function () { ;(this._list = []), (this._lastAppendLocation = -1) }), (e.prototype._searchNearestSegmentBefore = function (e) { var t = this._list if (0 === t.length) return -2 var i = t.length - 1, n = 0, a = 0, r = i, s = 0 if (e < t[0].originalBeginDts) return (s = -1) for (; a <= r; ) { if ((n = a + Math.floor((r - a) / 2)) === i || (e > t[n].lastSample.originalDts && e < t[n + 1].originalBeginDts)) { s = n break } t[n].originalBeginDts < e ? (a = n + 1) : (r = n - 1) } return s }), (e.prototype._searchNearestSegmentAfter = function (e) { return this._searchNearestSegmentBefore(e) + 1 }), (e.prototype.append = function (e) { var t = this._list, i = e, n = this._lastAppendLocation, a = 0 ;-1 !== n && n < t.length && i.originalBeginDts >= t[n].lastSample.originalDts && (n === t.length - 1 || (n < t.length - 1 && i.originalBeginDts < t[n + 1].originalBeginDts)) ? (a = n + 1) : t.length > 0 && (a = this._searchNearestSegmentBefore(i.originalBeginDts) + 1), (this._lastAppendLocation = a), this._list.splice(a, 0, i) }), (e.prototype.getLastSegmentBefore = function (e) { var t = this._searchNearestSegmentBefore(e) return t >= 0 ? this._list[t] : null }), (e.prototype.getLastSampleBefore = function (e) { var t = this.getLastSegmentBefore(e) return null != t ? t.lastSample : null }), (e.prototype.getLastSyncPointBefore = function (e) { for (var t = this._searchNearestSegmentBefore(e), i = this._list[t].syncPoints; 0 === i.length && t > 0; ) t--, (i = this._list[t].syncPoints) return i.length > 0 ? i[i.length - 1] : null }), e ) })() }, function (e, t, i) { "use strict" var n = (function () { function e() { ;(this.mimeType = null), (this.duration = null), (this.hasAudio = null), (this.hasVideo = null), (this.audioCodec = null), (this.videoCodec = null), (this.audioDataRate = null), (this.videoDataRate = null), (this.audioSampleRate = null), (this.audioChannelCount = 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), (this.metadata = null), (this.segments = null), (this.segmentCount = null), (this.hasKeyframesIndex = null), (this.keyframesIndex = null) } return ( (e.prototype.isComplete = function () { var e = !1 === this.hasAudio || (!0 === this.hasAudio && null != this.audioCodec && null != this.audioSampleRate && null != this.audioChannelCount), t = !1 === this.hasVideo || (!0 === this.hasVideo && null != 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) return null != this.mimeType && e && t }), (e.prototype.isSeekable = function () { return !0 === this.hasKeyframesIndex }), (e.prototype.getNearestKeyframe = function (e) { if (null == this.keyframesIndex) return null var t = this.keyframesIndex, i = this._search(t.times, e) return { index: i, milliseconds: t.times[i], fileposition: t.filepositions[i] } }), (e.prototype._search = function (e, t) { var i = 0, n = e.length - 1, a = 0, r = 0, s = n for (t < e[0] && ((i = 0), (r = s + 1)); r <= s; ) { if ((a = r + Math.floor((s - r) / 2)) === n || (t >= e[a] && t < e[a + 1])) { i = a break } e[a] < t ? (r = a + 1) : (s = a - 1) } return i }), e ) })() t.a = n }, function (e, t, i) { "use strict" var n = i(6), a = i.n(n), r = i(0), s = (function () { function e() {} return ( Object.defineProperty(e, "forceGlobalTag", { get: function () { return r.a.FORCE_GLOBAL_TAG }, set: function (t) { ;(r.a.FORCE_GLOBAL_TAG = t), e._notifyChange() }, enumerable: !1, configurable: !0 }), Object.defineProperty(e, "globalTag", { get: function () { return r.a.GLOBAL_TAG }, set: function (t) { ;(r.a.GLOBAL_TAG = t), e._notifyChange() }, enumerable: !1, configurable: !0 }), Object.defineProperty(e, "enableAll", { get: function () { return r.a.ENABLE_VERBOSE && r.a.ENABLE_DEBUG && r.a.ENABLE_INFO && r.a.ENABLE_WARN && r.a.ENABLE_ERROR }, set: function (t) { ;(r.a.ENABLE_VERBOSE = t), (r.a.ENABLE_DEBUG = t), (r.a.ENABLE_INFO = t), (r.a.ENABLE_WARN = t), (r.a.ENABLE_ERROR = t), e._notifyChange() }, enumerable: !1, configurable: !0 }), Object.defineProperty(e, "enableDebug", { get: function () { return r.a.ENABLE_DEBUG }, set: function (t) { ;(r.a.ENABLE_DEBUG = t), e._notifyChange() }, enumerable: !1, configurable: !0 }), Object.defineProperty(e, "enableVerbose", { get: function () { return r.a.ENABLE_VERBOSE }, set: function (t) { ;(r.a.ENABLE_VERBOSE = t), e._notifyChange() }, enumerable: !1, configurable: !0 }), Object.defineProperty(e, "enableInfo", { get: function () { return r.a.ENABLE_INFO }, set: function (t) { ;(r.a.ENABLE_INFO = t), e._notifyChange() }, enumerable: !1, configurable: !0 }), Object.defineProperty(e, "enableWarn", { get: function () { return r.a.ENABLE_WARN }, set: function (t) { ;(r.a.ENABLE_WARN = t), e._notifyChange() }, enumerable: !1, configurable: !0 }), Object.defineProperty(e, "enableError", { get: function () { return r.a.ENABLE_ERROR }, set: function (t) { ;(r.a.ENABLE_ERROR = t), e._notifyChange() }, enumerable: !1, configurable: !0 }), (e.getConfig = function () { return { globalTag: r.a.GLOBAL_TAG, forceGlobalTag: r.a.FORCE_GLOBAL_TAG, enableVerbose: r.a.ENABLE_VERBOSE, enableDebug: r.a.ENABLE_DEBUG, enableInfo: r.a.ENABLE_INFO, enableWarn: r.a.ENABLE_WARN, enableError: r.a.ENABLE_ERROR, enableCallback: r.a.ENABLE_CALLBACK } }), (e.applyConfig = function (e) { ;(r.a.GLOBAL_TAG = e.globalTag), (r.a.FORCE_GLOBAL_TAG = e.forceGlobalTag), (r.a.ENABLE_VERBOSE = e.enableVerbose), (r.a.ENABLE_DEBUG = e.enableDebug), (r.a.ENABLE_INFO = e.enableInfo), (r.a.ENABLE_WARN = e.enableWarn), (r.a.ENABLE_ERROR = e.enableError), (r.a.ENABLE_CALLBACK = e.enableCallback) }), (e._notifyChange = function () { var t = e.emitter if (t.listenerCount("change") > 0) { var i = e.getConfig() t.emit("change", i) } }), (e.registerListener = function (t) { e.emitter.addListener("change", t) }), (e.removeListener = function (t) { e.emitter.removeListener("change", t) }), (e.addLogListener = function (t) { r.a.emitter.addListener("log", t), r.a.emitter.listenerCount("log") > 0 && ((r.a.ENABLE_CALLBACK = !0), e._notifyChange()) }), (e.removeLogListener = function (t) { r.a.emitter.removeListener("log", t), 0 === r.a.emitter.listenerCount("log") && ((r.a.ENABLE_CALLBACK = !1), e._notifyChange()) }), e ) })() ;(s.emitter = new a.a()), (t.a = s) }, function (e, t, i) { "use strict" var n = i(6), a = i.n(n), r = i(0), s = i(4), o = i(8) function d(e, t, i) { var n = e if (t + i < n.length) { for (; i--; ) if (128 != (192 & n[++t])) return !1 return !0 } return !1 } var _, h = function (e) { for (var t = [], i = e, n = 0, a = e.length; n < a; ) if (i[n] < 128) t.push(String.fromCharCode(i[n])), ++n else { if (i[n] < 192); else if (i[n] < 224) { if (d(i, n, 1)) if ((r = ((31 & i[n]) << 6) | (63 & i[n + 1])) >= 128) { t.push(String.fromCharCode(65535 & r)), (n += 2) continue } } else if (i[n] < 240) { if (d(i, n, 2)) if ((r = ((15 & i[n]) << 12) | ((63 & i[n + 1]) << 6) | (63 & i[n + 2])) >= 2048 && 55296 != (63488 & r)) { t.push(String.fromCharCode(65535 & r)), (n += 3) continue } } else if (i[n] < 248) { var r if (d(i, n, 3)) if ((r = ((7 & i[n]) << 18) | ((63 & i[n + 1]) << 12) | ((63 & i[n + 2]) << 6) | (63 & i[n + 3])) > 65536 && r < 1114112) { ;(r -= 65536), t.push(String.fromCharCode((r >>> 10) | 55296)), t.push(String.fromCharCode((1023 & r) | 56320)), (n += 4) continue } } t.push(String.fromCharCode(65533)), ++n } return t.join("") }, c = i(3), u = ((_ = new ArrayBuffer(2)), new DataView(_).setInt16(0, 256, !0), 256 === new Int16Array(_)[0]), l = (function () { function e() {} return ( (e.parseScriptData = function (t, i, n) { var a = {} try { var s = e.parseValue(t, i, n), o = e.parseValue(t, i + s.size, n - s.size) a[s.data] = o.data } catch (e) { r.a.e("AMF", e.toString()) } return a }), (e.parseObject = function (t, i, n) { if (n < 3) throw new c.a("Data not enough when parse ScriptDataObject") var a = e.parseString(t, i, n), r = e.parseValue(t, i + a.size, n - a.size), s = r.objectEnd return { data: { name: a.data, value: r.data }, size: a.size + r.size, objectEnd: s } }), (e.parseVariable = function (t, i, n) { return e.parseObject(t, i, n) }), (e.parseString = function (e, t, i) { if (i < 2) throw new c.a("Data not enough when parse String") var n = new DataView(e, t, i).getUint16(0, !u) return { data: n > 0 ? h(new Uint8Array(e, t + 2, n)) : "", size: 2 + n } }), (e.parseLongString = function (e, t, i) { if (i < 4) throw new c.a("Data not enough when parse LongString") var n = new DataView(e, t, i).getUint32(0, !u) return { data: n > 0 ? h(new Uint8Array(e, t + 4, n)) : "", size: 4 + n } }), (e.parseDate = function (e, t, i) { if (i < 10) throw new c.a("Data size invalid when parse Date") var n = new DataView(e, t, i), a = n.getFloat64(0, !u), r = n.getInt16(8, !u) return { data: new Date((a += 60 * r * 1e3)), size: 10 } }), (e.parseValue = function (t, i, n) { if (n < 1) throw new c.a("Data not enough when parse Value") var a, s = new DataView(t, i, n), o = 1, d = s.getUint8(0), _ = !1 try { switch (d) { case 0: ;(a = s.getFloat64(1, !u)), (o += 8) break case 1: ;(a = !!s.getUint8(1)), (o += 1) break case 2: var h = e.parseString(t, i + 1, n - 1) ;(a = h.data), (o += h.size) break case 3: a = {} var l = 0 for (9 == (16777215 & s.getUint32(n - 4, !u)) && (l = 3); o < n - 4; ) { var f = e.parseObject(t, i + o, n - o - l) if (f.objectEnd) break ;(a[f.data.name] = f.data.value), (o += f.size) } if (o <= n - 3) 9 === (16777215 & s.getUint32(o - 1, !u)) && (o += 3) break case 8: ;(a = {}), (o += 4) l = 0 for (9 == (16777215 & s.getUint32(n - 4, !u)) && (l = 3); o < n - 8; ) { var p = e.parseVariable(t, i + o, n - o - l) if (p.objectEnd) break ;(a[p.data.name] = p.data.value), (o += p.size) } if (o <= n - 3) 9 === (16777215 & s.getUint32(o - 1, !u)) && (o += 3) break case 9: ;(a = void 0), (o = 1), (_ = !0) break case 10: a = [] var m = s.getUint32(1, !u) o += 4 for (var g = 0; g < m; g++) { var v = e.parseValue(t, i + o, n - o) a.push(v.data), (o += v.size) } break case 11: var y = e.parseDate(t, i + 1, n - 1) ;(a = y.data), (o += y.size) break case 12: var b = e.parseString(t, i + 1, n - 1) ;(a = b.data), (o += b.size) break default: ;(o = n), r.a.w("AMF", "Unsupported AMF value type " + d) } } catch (e) { r.a.e("AMF", e.toString()) } return { data: a, size: o, objectEnd: _ } }), e ) })(), f = (function () { function e(e) { ;(this.TAG = "ExpGolomb"), (this._buffer = e), (this._buffer_index = 0), (this._total_bytes = e.byteLength), (this._total_bits = 8 * e.byteLength), (this._current_word = 0), (this._current_word_bits_left = 0) } return ( (e.prototype.destroy = function () { this._buffer = null }), (e.prototype._fillCurrentWord = function () { var e = this._total_bytes - this._buffer_index if (e <= 0) throw new c.a("ExpGolomb: _fillCurrentWord() but no bytes available") var t = Math.min(4, e), i = new Uint8Array(4) i.set(this._buffer.subarray(this._buffer_index, this._buffer_index + t)), (this._current_word = new DataView(i.buffer).getUint32(0, !1)), (this._buffer_index += t), (this._current_word_bits_left = 8 * t) }), (e.prototype.readBits = function (e) { if (e > 32) throw new c.b("ExpGolomb: readBits() bits exceeded max 32bits!") if (e <= this._current_word_bits_left) { var t = this._current_word >>> (32 - e) return (this._current_word <<= e), (this._current_word_bits_left -= e), t } var i = this._current_word_bits_left ? this._current_word : 0 i >>>= 32 - this._current_word_bits_left var n = e - this._current_word_bits_left this._fillCurrentWord() var a = Math.min(n, this._current_word_bits_left), r = this._current_word >>> (32 - a) return (this._current_word <<= a), (this._current_word_bits_left -= a), (i = (i << a) | r) }), (e.prototype.readBool = function () { return 1 === this.readBits(1) }), (e.prototype.readByte = function () { return this.readBits(8) }), (e.prototype._skipLeadingZero = function () { var e for (e = 0; e < this._current_word_bits_left; e++) if (0 != (this._current_word & (2147483648 >>> e))) return (this._current_word <<= e), (this._current_word_bits_left -= e), e return this._fillCurrentWord(), e + this._skipLeadingZero() }), (e.prototype.readUEG = function () { var e = this._skipLeadingZero() return this.readBits(e + 1) - 1 }), (e.prototype.readSEG = function () { var e = this.readUEG() return 1 & e ? (e + 1) >>> 1 : -1 * (e >>> 1) }), e ) })(), p = (function () { function e() {} return ( (e._ebsp2rbsp = function (e) { for (var t = e, i = t.byteLength, n = new Uint8Array(i), a = 0, r = 0; r < i; r++) (r >= 2 && 3 === t[r] && 0 === t[r - 1] && 0 === t[r - 2]) || ((n[a] = t[r]), a++) return new Uint8Array(n.buffer, 0, a) }), (e.parseSPS = function (t) { for (var i = t.subarray(1, 4), n = "avc1.", a = 0; a < 3; a++) { var r = i[a].toString(16) r.length < 2 && (r = "0" + r), (n += r) } var s = e._ebsp2rbsp(t), o = new f(s) o.readByte() var d = o.readByte() o.readByte() var _ = o.readByte() o.readUEG() var h = e.getProfileString(d), c = e.getLevelString(_), u = 1, l = 420, p = 8, m = 8 if ( (100 === d || 110 === d || 122 === d || 244 === d || 44 === d || 83 === d || 86 === d || 118 === d || 128 === d || 138 === d || 144 === d) && (3 === (u = o.readUEG()) && o.readBits(1), u <= 3 && (l = [0, 420, 422, 444][u]), (p = o.readUEG() + 8), (m = o.readUEG() + 8), o.readBits(1), o.readBool()) ) for (var g = 3 !== u ? 8 : 12, v = 0; v < g; v++) o.readBool() && (v < 6 ? e._skipScalingList(o, 16) : e._skipScalingList(o, 64)) o.readUEG() var y = o.readUEG() if (0 === y) o.readUEG() else if (1 === y) { o.readBits(1), o.readSEG(), o.readSEG() var b = o.readUEG() for (v = 0; v < b; v++) o.readSEG() } var S = o.readUEG() o.readBits(1) var E = o.readUEG(), A = o.readUEG(), R = o.readBits(1) 0 === R && o.readBits(1), o.readBits(1) var T = 0, L = 0, w = 0, k = 0 o.readBool() && ((T = o.readUEG()), (L = o.readUEG()), (w = o.readUEG()), (k = o.readUEG())) var D = 1, C = 1, B = 0, I = !0, O = 0, P = 0 if (o.readBool()) { if (o.readBool()) { var M = o.readByte() M > 0 && M < 16 ? ((D = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2][M - 1]), (C = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1][M - 1])) : 255 === M && ((D = (o.readByte() << 8) | o.readByte()), (C = (o.readByte() << 8) | o.readByte())) } if ( (o.readBool() && o.readBool(), o.readBool() && (o.readBits(4), o.readBool() && o.readBits(24)), o.readBool() && (o.readUEG(), o.readUEG()), o.readBool()) ) { var x = o.readBits(32), U = o.readBits(32) ;(I = o.readBool()), (B = (O = U) / (P = 2 * x)) } } var N = 1 ;(1 === D && 1 === C) || (N = D / C) var G = 0, V = 0 0 === u ? ((G = 1), (V = 2 - R)) : ((G = 3 === u ? 1 : 2), (V = (1 === u ? 2 : 1) * (2 - R))) var F = 16 * (E + 1), j = 16 * (A + 1) * (2 - R) ;(F -= (T + L) * G), (j -= (w + k) * V) var z = Math.ceil(F * N) return ( o.destroy(), (o = null), { codec_mimetype: n, profile_idc: d, level_idc: _, profile_string: h, level_string: c, chroma_format_idc: u, bit_depth: p, bit_depth_luma: p, bit_depth_chroma: m, ref_frames: S, chroma_format: l, chroma_format_string: e.getChromaFormatString(l), frame_rate: { fixed: I, fps: B, fps_den: P, fps_num: O }, sar_ratio: { width: D, height: C }, codec_size: { width: F, height: j }, present_size: { width: z, height: j } } ) }), (e._skipScalingList = function (e, t) { for (var i = 8, n = 8, a = 0; a < t; a++) 0 !== n && (n = (i + e.readSEG() + 256) % 256), (i = 0 === n ? i : n) }), (e.getProfileString = function (e) { switch (e) { case 66: return "Baseline" case 77: return "Main" case 88: return "Extended" case 100: return "High" case 110: return "High10" case 122: return "High422" case 244: return "High444" default: return "Unknown" } }), (e.getLevelString = function (e) { return (e / 10).toFixed(1) }), (e.getChromaFormatString = function (e) { switch (e) { case 420: return "4:2:0" case 422: return "4:2:2" case 444: return "4:4:4" default: return "Unknown" } }), e ) })(), m = i(5), g = (function () { function e() {} return ( (e._ebsp2rbsp = function (e) { for (var t = e, i = t.byteLength, n = new Uint8Array(i), a = 0, r = 0; r < i; r++) (r >= 2 && 3 === t[r] && 0 === t[r - 1] && 0 === t[r - 2]) || ((n[a] = t[r]), a++) return new Uint8Array(n.buffer, 0, a) }), (e.parseVPS = function (t) { var i = e._ebsp2rbsp(t), n = new f(i) n.readByte(), n.readByte() n.readBits(4) n.readBits(2) n.readBits(6) return { num_temporal_layers: n.readBits(3) + 1, temporal_id_nested: n.readBool() } }), (e.parseSPS = function (t) { var i = e._ebsp2rbsp(t), n = new f(i) n.readByte(), n.readByte() for ( var a = 0, r = 0, s = 0, o = 0, d = (n.readBits(4), n.readBits(3)), _ = (n.readBool(), n.readBits(2)), h = n.readBool(), c = n.readBits(5), u = n.readByte(), l = n.readByte(), p = n.readByte(), m = n.readByte(), g = n.readByte(), v = n.readByte(), y = n.readByte(), b = n.readByte(), S = n.readByte(), E = n.readByte(), A = n.readByte(), R = [], T = [], L = 0; L < d; L++ ) R.push(n.readBool()), T.push(n.readBool()) if (d > 0) for (L = d; L < 8; L++) n.readBits(2) for (L = 0; L < d; L++) R[L] && (n.readByte(), n.readByte(), n.readByte(), n.readByte(), n.readByte(), n.readByte(), n.readByte(), n.readByte(), n.readByte(), n.readByte(), n.readByte()), T[L] && n.readByte() n.readUEG() var w = n.readUEG() 3 == w && n.readBits(1) var k = n.readUEG(), D = n.readUEG() n.readBool() && ((a += n.readUEG()), (r += n.readUEG()), (s += n.readUEG()), (o += n.readUEG())) var C = n.readUEG(), B = n.readUEG(), I = n.readUEG() for (L = n.readBool() ? 0 : d; L <= d; L++) n.readUEG(), n.readUEG(), n.readUEG() n.readUEG(), n.readUEG(), n.readUEG(), n.readUEG(), n.readUEG(), n.readUEG() if (n.readBool() && n.readBool()) for (var O = 0; O < 4; O++) for (var P = 0; P < (3 === O ? 2 : 6); P++) { if (n.readBool()) { var M = Math.min(64, 1 << (4 + (O << 1))) O > 1 && n.readSEG() for (L = 0; L < M; L++) n.readSEG() } else n.readUEG() } n.readBool(), n.readBool() n.readBool() && (n.readByte(), n.readUEG(), n.readUEG(), n.readBool()) var x = n.readUEG(), U = 0 for (L = 0; L < x; L++) { var N = !1 if ((0 !== L && (N = n.readBool()), N)) { L === x && n.readUEG(), n.readBool(), n.readUEG() for (var G = 0, V = 0; V <= U; V++) { var F = n.readBool(), j = !1 F || (j = n.readBool()), (F || j) && G++ } U = G } else { var z = n.readUEG(), H = n.readUEG() U = z + H for (V = 0; V < z; V++) n.readUEG(), n.readBool() for (V = 0; V < H; V++) n.readUEG(), n.readBool() } } if (n.readBool()) { var q = n.readUEG() for (L = 0; L < q; L++) { for (V = 0; V < I + 4; V++) n.readBits(1) n.readBits(1) } } var K = 0, W = 1, X = 1, Y = !1, J = 1, Z = 1 n.readBool(), n.readBool() if (n.readBool()) { if (n.readBool()) { var Q = n.readByte() Q > 0 && Q <= 16 ? ((W = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2][Q - 1]), (X = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1][Q - 1])) : 255 === Q && ((W = n.readBits(16)), (X = n.readBits(16))) } if ((n.readBool() && n.readBool(), n.readBool())) n.readBits(3), n.readBool(), n.readBool() && (n.readByte(), n.readByte(), n.readByte()) n.readBool() && (n.readUEG(), n.readUEG()) n.readBool(), n.readBool(), n.readBool() if ((n.readBool() && (n.readUEG(), n.readUEG(), n.readUEG(), n.readUEG()), n.readBool())) if (((J = n.readBits(32)), (Z = n.readBits(32)), n.readBool())) if ((n.readUEG(), n.readBool())) { var $ = !1, ee = !1, te = !1 if ((($ = n.readBool()), (ee = n.readBool()), $ || ee)) { ;(te = n.readBool()) && (n.readByte(), n.readBits(5), n.readBool(), n.readBits(5)) n.readBits(4), n.readBits(4) te && n.readBits(4), n.readBits(5), n.readBits(5), n.readBits(5) } for (L = 0; L <= d; L++) { var ie = n.readBool() Y = ie var ne = !1, ae = 1 ie || (ne = n.readBool()) var re = !1 if ((ne ? n.readSEG() : (re = n.readBool()), re || (ae = n.readUEG() + 1), $)) for (V = 0; V < ae; V++) n.readUEG(), n.readUEG(), te && (n.readUEG(), n.readUEG()) if (ee) for (V = 0; V < ae; V++) n.readUEG(), n.readUEG(), te && (n.readUEG(), n.readUEG()) } } if (n.readBool()) { n.readBool(), n.readBool(), n.readBool() K = n.readUEG() n.readUEG(), n.readUEG(), n.readUEG(), n.readUEG() } } n.readBool() var se = "hvc1." + c + ".1.L" + A + ".B0", oe = k - (a + r) * (1 === w || 2 === w ? 2 : 1), de = D - (s + o) * (1 === w ? 2 : 1), _e = 1 return ( 1 !== W && 1 !== X && (_e = W / X), n.destroy(), (n = null), { codec_mimetype: se, level_string: e.getLevelString(A), profile_idc: c, bit_depth: C + 8, ref_frames: 1, chroma_format: w, chroma_format_string: e.getChromaFormatString(w), general_level_idc: A, general_profile_space: _, general_tier_flag: h, general_profile_idc: c, general_profile_compatibility_flags_1: u, general_profile_compatibility_flags_2: l, general_profile_compatibility_flags_3: p, general_profile_compatibility_flags_4: m, general_constraint_indicator_flags_1: g, general_constraint_indicator_flags_2: v, general_constraint_indicator_flags_3: y, general_constraint_indicator_flags_4: b, general_constraint_indicator_flags_5: S, general_constraint_indicator_flags_6: E, min_spatial_segmentation_idc: K, constant_frame_rate: 0, chroma_format_idc: w, bit_depth_luma_minus8: C, bit_depth_chroma_minus8: B, frame_rate: { fixed: Y, fps: Z / J, fps_den: J, fps_num: Z }, sar_ratio: { width: W, height: X }, codec_size: { width: oe, height: de }, present_size: { width: oe * _e, height: de } } ) }), (e.parsePPS = function (t) { var i = e._ebsp2rbsp(t), n = new f(i) n.readByte(), n.readByte() n.readUEG(), n.readUEG(), n.readBool(), n.readBool(), n.readBits(3), n.readBool(), n.readBool(), n.readUEG(), n.readUEG(), n.readSEG(), n.readBool(), n.readBool() if (n.readBool()) n.readUEG() n.readSEG(), n.readSEG(), n.readBool(), n.readBool(), n.readBool(), n.readBool() var a = n.readBool(), r = n.readBool(), s = 1 return r && a ? (s = 0) : r ? (s = 3) : a && (s = 2), { parallelismType: s } }), (e.getChromaFormatString = function (e) { switch (e) { case 0: return "4:0:0" case 1: return "4:2:0" case 2: return "4:2:2" case 3: return "4:4:4" default: return "Unknown" } }), (e.getProfileString = function (e) { switch (e) { case 1: return "Main" case 2: return "Main10" case 3: return "MainSP" case 4: return "Rext" case 9: return "SCC" default: return "Unknown" } }), (e.getLevelString = function (e) { return (e / 30).toFixed(1) }), e ) })() function v(e) { return e.byteOffset % 2 == 0 && e.byteLength % 2 == 0 } function y(e) { return e.byteOffset % 4 == 0 && e.byteLength % 4 == 0 } function b(e, t) { for (var i = 0; i < e.length; i++) if (e[i] !== t[i]) return !1 return !0 } var S = function (e, t) { return ( e.byteLength === t.byteLength && (y(e) && y(t) ? (function (e, t) { return b(new Uint32Array(e.buffer, e.byteOffset, e.byteLength / 4), new Uint32Array(t.buffer, t.byteOffset, t.byteLength / 4)) })(e, t) : v(e) && v(t) ? (function (e, t) { return b(new Uint16Array(e.buffer, e.byteOffset, e.byteLength / 2), new Uint16Array(t.buffer, t.byteOffset, t.byteLength / 2)) })(e, t) : (function (e, t) { return b(e, t) })(e, t)) ) } var E, A = (function () { function e(e, t) { ;(this.TAG = "FLVDemuxer"), (this._config = t), (this._onError = null), (this._onMediaInfo = null), (this._onMetaDataArrived = null), (this._onScriptDataArrived = null), (this._onTrackMetadata = null), (this._onDataAvailable = null), (this._dataOffset = e.dataOffset), (this._firstParse = !0), (this._dispatch = !1), (this._hasAudio = e.hasAudioTrack), (this._hasVideo = e.hasVideoTrack), (this._hasAudioFlagOverrided = !1), (this._hasVideoFlagOverrided = !1), (this._audioInitialMetadataDispatched = !1), (this._videoInitialMetadataDispatched = !1), (this._mediaInfo = new o.a()), (this._mediaInfo.hasAudio = this._hasAudio), (this._mediaInfo.hasVideo = this._hasVideo), (this._metadata = null), (this._audioMetadata = null), (this._videoMetadata = null), (this._naluLengthSize = 4), (this._timestampBase = 0), (this._timescale = 1e3), (this._duration = 0), (this._durationOverrided = !1), (this._referenceFrameRate = { fixed: !0, fps: 23.976, fps_num: 23976, fps_den: 1e3 }), (this._flvSoundRateTable = [5500, 11025, 22050, 44100, 48e3]), (this._mpegSamplingRates = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350]), (this._mpegAudioV10SampleRateTable = [44100, 48e3, 32e3, 0]), (this._mpegAudioV20SampleRateTable = [22050, 24e3, 16e3, 0]), (this._mpegAudioV25SampleRateTable = [11025, 12e3, 8e3, 0]), (this._mpegAudioL1BitRateTable = [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, -1]), (this._mpegAudioL2BitRateTable = [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, -1]), (this._mpegAudioL3BitRateTable = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1]), (this._videoTrack = { type: "video", id: 1, sequenceNumber: 0, samples: [], length: 0 }), (this._audioTrack = { type: "audio", id: 2, sequenceNumber: 0, samples: [], length: 0 }), (this._littleEndian = (function () { var e = new ArrayBuffer(2) return new DataView(e).setInt16(0, 256, !0), 256 === new Int16Array(e)[0] })()) } return ( (e.prototype.destroy = function () { ;(this._mediaInfo = null), (this._metadata = null), (this._audioMetadata = null), (this._videoMetadata = null), (this._videoTrack = null), (this._audioTrack = null), (this._onError = null), (this._onMediaInfo = null), (this._onMetaDataArrived = null), (this._onScriptDataArrived = null), (this._onTrackMetadata = null), (this._onDataAvailable = null) }), (e.probe = function (e) { var t = new Uint8Array(e) if (t.byteLength < 9) return { needMoreData: !0 } var i = { match: !1 } if (70 !== t[0] || 76 !== t[1] || 86 !== t[2] || 1 !== t[3]) return i var n, a, r = (4 & t[4]) >>> 2 != 0, s = 0 != (1 & t[4]), o = ((n = t)[(a = 5)] << 24) | (n[a + 1] << 16) | (n[a + 2] << 8) | n[a + 3] return o < 9 ? i : { match: !0, consumed: o, dataOffset: o, hasAudioTrack: r, hasVideoTrack: s } }), (e.prototype.bindDataSource = function (e) { return (e.onDataArrival = this.parseChunks.bind(this)), this }), Object.defineProperty(e.prototype, "onTrackMetadata", { get: function () { return this._onTrackMetadata }, set: function (e) { this._onTrackMetadata = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onMediaInfo", { get: function () { return this._onMediaInfo }, set: function (e) { this._onMediaInfo = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onMetaDataArrived", { get: function () { return this._onMetaDataArrived }, set: function (e) { this._onMetaDataArrived = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onScriptDataArrived", { get: function () { return this._onScriptDataArrived }, set: function (e) { this._onScriptDataArrived = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onError", { get: function () { return this._onError }, set: function (e) { this._onError = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onDataAvailable", { get: function () { return this._onDataAvailable }, set: function (e) { this._onDataAvailable = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "timestampBase", { get: function () { return this._timestampBase }, set: function (e) { this._timestampBase = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "overridedDuration", { get: function () { return this._duration }, set: function (e) { ;(this._durationOverrided = !0), (this._duration = e), (this._mediaInfo.duration = e) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "overridedHasAudio", { set: function (e) { ;(this._hasAudioFlagOverrided = !0), (this._hasAudio = e), (this._mediaInfo.hasAudio = e) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "overridedHasVideo", { set: function (e) { ;(this._hasVideoFlagOverrided = !0), (this._hasVideo = e), (this._mediaInfo.hasVideo = e) }, enumerable: !1, configurable: !0 }), (e.prototype.resetMediaInfo = function () { this._mediaInfo = new o.a() }), (e.prototype._isInitialMetadataDispatched = function () { return this._hasAudio && this._hasVideo ? this._audioInitialMetadataDispatched && this._videoInitialMetadataDispatched : this._hasAudio && !this._hasVideo ? this._audioInitialMetadataDispatched : !(this._hasAudio || !this._hasVideo) && this._videoInitialMetadataDispatched }), (e.prototype.parseChunks = function (t, i) { if (!(this._onError && this._onMediaInfo && this._onTrackMetadata && this._onDataAvailable)) throw new c.a("Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified") var n = 0, a = this._littleEndian if (0 === i) { if (!(t.byteLength > 13)) return 0 n = e.probe(t).dataOffset } this._firstParse && ((this._firstParse = !1), i + n !== this._dataOffset && r.a.w(this.TAG, "First time parsing but chunk byteStart invalid!"), 0 !== (s = new DataView(t, n)).getUint32(0, !a) && r.a.w(this.TAG, "PrevTagSize0 !== 0 !!!"), (n += 4)) for (; n < t.byteLength; ) { this._dispatch = !0 var s = new DataView(t, n) if (n + 11 + 4 > t.byteLength) break var o = s.getUint8(0), d = 16777215 & s.getUint32(0, !a) if (n + 11 + d + 4 > t.byteLength) break if (8 === o || 9 === o || 18 === o) { var _ = s.getUint8(4), h = s.getUint8(5), u = s.getUint8(6) | (h << 8) | (_ << 16) | (s.getUint8(7) << 24) 0 !== (16777215 & s.getUint32(7, !a)) && r.a.w(this.TAG, "Meet tag which has StreamID != 0!") var l = n + 11 switch (o) { case 8: this._parseAudioData(t, l, d, u) break case 9: this._parseVideoData(t, l, d, u, i + n) break case 18: this._parseScriptData(t, l, d) } var f = s.getUint32(11 + d, !a) f !== 11 + d && r.a.w(this.TAG, "Invalid PrevTagSize " + f), (n += 11 + d + 4) } else r.a.w(this.TAG, "Unsupported tag type " + o + ", skipped"), (n += 11 + d + 4) } return ( this._isInitialMetadataDispatched() && this._dispatch && (this._audioTrack.length || this._videoTrack.length) && this._onDataAvailable(this._audioTrack, this._videoTrack), n ) }), (e.prototype._parseScriptData = function (e, t, i) { var n = l.parseScriptData(e, t, i) if (n.hasOwnProperty("onMetaData")) { if (null == n.onMetaData || "object" != typeof n.onMetaData) return void r.a.w(this.TAG, "Invalid onMetaData structure!") this._metadata && r.a.w(this.TAG, "Found another onMetaData tag!"), (this._metadata = n) var a = this._metadata.onMetaData if ( (this._onMetaDataArrived && this._onMetaDataArrived(Object.assign({}, a)), "boolean" == typeof a.hasAudio && !1 === this._hasAudioFlagOverrided && ((this._hasAudio = a.hasAudio), (this._mediaInfo.hasAudio = this._hasAudio)), "boolean" == typeof a.hasVideo && !1 === this._hasVideoFlagOverrided && ((this._hasVideo = a.hasVideo), (this._mediaInfo.hasVideo = this._hasVideo)), "number" == typeof a.audiodatarate && (this._mediaInfo.audioDataRate = a.audiodatarate), "number" == typeof a.videodatarate && (this._mediaInfo.videoDataRate = a.videodatarate), "number" == typeof a.width && (this._mediaInfo.width = a.width), "number" == typeof a.height && (this._mediaInfo.height = a.height), "number" == typeof a.duration) ) { if (!this._durationOverrided) { var s = Math.floor(a.duration * this._timescale) ;(this._duration = s), (this._mediaInfo.duration = s) } } else this._mediaInfo.duration = 0 if ("number" == typeof a.framerate) { var o = Math.floor(1e3 * a.framerate) if (o > 0) { var d = o / 1e3 ;(this._referenceFrameRate.fixed = !0), (this._referenceFrameRate.fps = d), (this._referenceFrameRate.fps_num = o), (this._referenceFrameRate.fps_den = 1e3), (this._mediaInfo.fps = d) } } if ("object" == typeof a.keyframes) { this._mediaInfo.hasKeyframesIndex = !0 var _ = a.keyframes ;(this._mediaInfo.keyframesIndex = this._parseKeyframesIndex(_)), (a.keyframes = null) } else this._mediaInfo.hasKeyframesIndex = !1 ;(this._dispatch = !1), (this._mediaInfo.metadata = a), r.a.v(this.TAG, "Parsed onMetaData"), this._mediaInfo.isComplete() && this._onMediaInfo(this._mediaInfo) } Object.keys(n).length > 0 && this._onScriptDataArrived && this._onScriptDataArrived(Object.assign({}, n)) }), (e.prototype._parseKeyframesIndex = function (e) { for (var t = [], i = [], n = 1; n < e.times.length; n++) { var a = this._timestampBase + Math.floor(1e3 * e.times[n]) t.push(a), i.push(e.filepositions[n]) } return { times: t, filepositions: i } }), (e.prototype._parseAudioData = function (e, t, i, n) { if (i <= 1) r.a.w(this.TAG, "Flv: Invalid audio packet, missing SoundData payload!") else if (!0 !== this._hasAudioFlagOverrided || !1 !== this._hasAudio) { this._littleEndian var a = new DataView(e, t, i).getUint8(0), s = a >>> 4 if (2 === s || 10 === s) { var o = 0, d = (12 & a) >>> 2 if (d >= 0 && d <= 4) { o = this._flvSoundRateTable[d] var _ = 1 & a, h = this._audioMetadata, c = this._audioTrack if ( (h || (!1 === this._hasAudio && !1 === this._hasAudioFlagOverrided && ((this._hasAudio = !0), (this._mediaInfo.hasAudio = !0)), ((h = this._audioMetadata = {}).type = "audio"), (h.id = c.id), (h.timescale = this._timescale), (h.duration = this._duration), (h.audioSampleRate = o), (h.channelCount = 0 === _ ? 1 : 2)), 10 === s) ) { var u = this._parseAACAudioData(e, t + 1, i - 1) if (null == u) return if (0 === u.packetType) { if (h.config) { if (S(u.data.config, h.config)) return r.a.w(this.TAG, "AudioSpecificConfig has been changed, re-generate initialization segment") } var l = u.data ;(h.audioSampleRate = l.samplingRate), (h.channelCount = l.channelCount), (h.codec = l.codec), (h.originalCodec = l.originalCodec), (h.config = l.config), (h.refSampleDuration = (1024 / h.audioSampleRate) * h.timescale), r.a.v(this.TAG, "Parsed AudioSpecificConfig"), this._isInitialMetadataDispatched() ? this._dispatch && (this._audioTrack.length || this._videoTrack.length) && this._onDataAvailable(this._audioTrack, this._videoTrack) : (this._audioInitialMetadataDispatched = !0), (this._dispatch = !1), this._onTrackMetadata("audio", h), ((g = this._mediaInfo).audioCodec = h.originalCodec), (g.audioSampleRate = h.audioSampleRate), (g.audioChannelCount = h.channelCount), g.hasVideo ? null != g.videoCodec && (g.mimeType = 'video/x-flv; codecs="' + g.videoCodec + "," + g.audioCodec + '"') : (g.mimeType = 'video/x-flv; codecs="' + g.audioCodec + '"'), g.isComplete() && this._onMediaInfo(g) } else if (1 === u.packetType) { var f = this._timestampBase + n, p = { unit: u.data, length: u.data.byteLength, dts: f, pts: f } c.samples.push(p), (c.length += u.data.length) } else r.a.e(this.TAG, "Flv: Unsupported AAC data type " + u.packetType) } else if (2 === s) { if (!h.codec) { var g if (null == (l = this._parseMP3AudioData(e, t + 1, i - 1, !0))) return ;(h.audioSampleRate = l.samplingRate), (h.channelCount = l.channelCount), (h.codec = l.codec), (h.originalCodec = l.originalCodec), (h.refSampleDuration = (1152 / h.audioSampleRate) * h.timescale), r.a.v(this.TAG, "Parsed MPEG Audio Frame Header"), (this._audioInitialMetadataDispatched = !0), this._onTrackMetadata("audio", h), ((g = this._mediaInfo).audioCodec = h.codec), (g.audioSampleRate = h.audioSampleRate), (g.audioChannelCount = h.channelCount), (g.audioDataRate = l.bitRate), g.hasVideo ? null != g.videoCodec && (g.mimeType = 'video/x-flv; codecs="' + g.videoCodec + "," + g.audioCodec + '"') : (g.mimeType = 'video/x-flv; codecs="' + g.audioCodec + '"'), g.isComplete() && this._onMediaInfo(g) } var v = this._parseMP3AudioData(e, t + 1, i - 1, !1) if (null == v) return f = this._timestampBase + n var y = { unit: v, length: v.byteLength, dts: f, pts: f } c.samples.push(y), (c.length += v.length) } } else this._onError(m.a.FORMAT_ERROR, "Flv: Invalid audio sample rate idx: " + d) } else this._onError(m.a.CODEC_UNSUPPORTED, "Flv: Unsupported audio codec idx: " + s) } }), (e.prototype._parseAACAudioData = function (e, t, i) { if (!(i <= 1)) { var n = {}, a = new Uint8Array(e, t, i) return (n.packetType = a[0]), 0 === a[0] ? (n.data = this._parseAACAudioSpecificConfig(e, t + 1, i - 1)) : (n.data = a.subarray(1)), n } r.a.w(this.TAG, "Flv: Invalid AAC packet, missing AACPacketType or/and Data!") }), (e.prototype._parseAACAudioSpecificConfig = function (e, t, i) { var n, a, r = new Uint8Array(e, t, i), s = null, o = 0, d = null if (((o = n = r[0] >>> 3), (a = ((7 & r[0]) << 1) | (r[1] >>> 7)) < 0 || a >= this._mpegSamplingRates.length)) this._onError(m.a.FORMAT_ERROR, "Flv: AAC invalid sampling frequency index!") else { var _ = this._mpegSamplingRates[a], h = (120 & r[1]) >>> 3 if (!(h < 0 || h >= 8)) { 5 === o && ((d = ((7 & r[1]) << 1) | (r[2] >>> 7)), (124 & r[2]) >>> 2) var c = self.navigator.userAgent.toLowerCase() return ( -1 !== c.indexOf("firefox") ? a >= 6 ? ((o = 5), (s = new Array(4)), (d = a - 3)) : ((o = 2), (s = new Array(2)), (d = a)) : -1 !== c.indexOf("android") ? ((o = 2), (s = new Array(2)), (d = a)) : ((o = 5), (d = a), (s = new Array(4)), a >= 6 ? (d = a - 3) : 1 === h && ((o = 2), (s = new Array(2)), (d = a))), (s[0] = o << 3), (s[0] |= (15 & a) >>> 1), (s[1] = (15 & a) << 7), (s[1] |= (15 & h) << 3), 5 === o && ((s[1] |= (15 & d) >>> 1), (s[2] = (1 & d) << 7), (s[2] |= 8), (s[3] = 0)), { config: s, samplingRate: _, channelCount: h, codec: "mp4a.40." + o, originalCodec: "mp4a.40." + n } ) } this._onError(m.a.FORMAT_ERROR, "Flv: AAC invalid channel configuration") } }), (e.prototype._parseMP3AudioData = function (e, t, i, n) { if (!(i < 4)) { this._littleEndian var a = new Uint8Array(e, t, i), s = null if (n) { if (255 !== a[0]) return var o = (a[1] >>> 3) & 3, d = (6 & a[1]) >> 1, _ = (240 & a[2]) >>> 4, h = (12 & a[2]) >>> 2, c = 3 !== ((a[3] >>> 6) & 3) ? 2 : 1, u = 0, l = 0 switch (o) { case 0: u = this._mpegAudioV25SampleRateTable[h] break case 2: u = this._mpegAudioV20SampleRateTable[h] break case 3: u = this._mpegAudioV10SampleRateTable[h] } switch (d) { case 1: 34, _ < this._mpegAudioL3BitRateTable.length && (l = this._mpegAudioL3BitRateTable[_]) break case 2: 33, _ < this._mpegAudioL2BitRateTable.length && (l = this._mpegAudioL2BitRateTable[_]) break case 3: 32, _ < this._mpegAudioL1BitRateTable.length && (l = this._mpegAudioL1BitRateTable[_]) } s = { bitRate: l, samplingRate: u, channelCount: c, codec: "mp3", originalCodec: "mp3" } } else s = a return s } r.a.w(this.TAG, "Flv: Invalid MP3 packet, header missing!") }), (e.prototype._parseVideoData = function (e, t, i, n, a) { if (i <= 1) r.a.w(this.TAG, "Flv: Invalid video packet, missing VideoData payload!") else if (!0 !== this._hasVideoFlagOverrided || !1 !== this._hasVideo) { var s = new Uint8Array(e, t, i)[0], o = (112 & s) >>> 4 if (0 != (128 & s)) { var d = 15 & s, _ = String.fromCharCode.apply(String, new Uint8Array(e, t, i).slice(1, 5)) if ("hvc1" !== _) return void this._onError(m.a.CODEC_UNSUPPORTED, "Flv: Unsupported codec in video frame: " + _) this._parseEnhancedHEVCVideoPacket(e, t + 5, i - 5, n, a, o, d) } else { var h = 15 & s if (7 === h) this._parseAVCVideoPacket(e, t + 1, i - 1, n, a, o) else { if (12 !== h) return void this._onError(m.a.CODEC_UNSUPPORTED, "Flv: Unsupported codec in video frame: " + h) this._parseHEVCVideoPacket(e, t + 1, i - 1, n, a, o) } } } }), (e.prototype._parseAVCVideoPacket = function (e, t, i, n, a, s) { if (i < 4) r.a.w(this.TAG, "Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime") else { var o = this._littleEndian, d = new DataView(e, t, i), _ = d.getUint8(0), h = ((16777215 & d.getUint32(0, !o)) << 8) >> 8 if (0 === _) this._parseAVCDecoderConfigurationRecord(e, t + 4, i - 4) else if (1 === _) this._parseAVCVideoData(e, t + 4, i - 4, n, a, s, h) else if (2 !== _) return void this._onError(m.a.FORMAT_ERROR, "Flv: Invalid video packet type " + _) } }), (e.prototype._parseHEVCVideoPacket = function (e, t, i, n, a, s) { if (i < 4) r.a.w(this.TAG, "Flv: Invalid HEVC packet, missing HEVCPacketType or/and CompositionTime") else { var o = this._littleEndian, d = new DataView(e, t, i), _ = d.getUint8(0), h = ((16777215 & d.getUint32(0, !o)) << 8) >> 8 if (0 === _) this._parseHEVCDecoderConfigurationRecord(e, t + 4, i - 4) else if (1 === _) this._parseHEVCVideoData(e, t + 4, i - 4, n, a, s, h) else if (2 !== _) return void this._onError(m.a.FORMAT_ERROR, "Flv: Invalid video packet type " + _) } }), (e.prototype._parseEnhancedHEVCVideoPacket = function (e, t, i, n, a, s, o) { if (i < 4) r.a.w(this.TAG, "Flv: Invalid HEVC packet, missing HEVCPacketType or/and CompositionTime") else { var d = this._littleEndian, _ = new DataView(e, t, i) if (0 === o) this._parseHEVCDecoderConfigurationRecord(e, t, i) else if (1 === o) { var h = (4294967040 & _.getUint32(0, !d)) >> 8 this._parseHEVCVideoData(e, t + 3, i - 3, n, a, s, h) } else if (3 === o) this._parseHEVCVideoData(e, t, i, n, a, s, 0) else if (2 !== o) return void this._onError(m.a.FORMAT_ERROR, "Flv: Invalid video packet type " + o) } }), (e.prototype._parseAVCDecoderConfigurationRecord = function (e, t, i) { if (i < 7) r.a.w(this.TAG, "Flv: Invalid AVCDecoderConfigurationRecord, lack of data!") else { var n = this._videoMetadata, a = this._videoTrack, s = this._littleEndian, o = new DataView(e, t, i) if (n) { if (void 0 !== n.avcc) { var d = new Uint8Array(e, t, i) if (S(d, n.avcc)) return r.a.w(this.TAG, "AVCDecoderConfigurationRecord has been changed, re-generate initialization segment") } } else !1 === this._hasVideo && !1 === this._hasVideoFlagOverrided && ((this._hasVideo = !0), (this._mediaInfo.hasVideo = !0)), ((n = this._videoMetadata = {}).type = "video"), (n.id = a.id), (n.timescale = this._timescale), (n.duration = this._duration) var _ = o.getUint8(0), h = o.getUint8(1) o.getUint8(2), o.getUint8(3) if (1 === _ && 0 !== h) if (((this._naluLengthSize = 1 + (3 & o.getUint8(4))), 3 === this._naluLengthSize || 4 === this._naluLengthSize)) { var c = 31 & o.getUint8(5) if (0 !== c) { c > 1 && r.a.w(this.TAG, "Flv: Strange AVCDecoderConfigurationRecord: SPS Count = " + c) for (var u = 6, l = 0; l < c; l++) { var f = o.getUint16(u, !s) if (((u += 2), 0 !== f)) { var g = new Uint8Array(e, t + u, f) u += f var v = p.parseSPS(g) if (0 === l) { ;(n.codecWidth = v.codec_size.width), (n.codecHeight = v.codec_size.height), (n.presentWidth = v.present_size.width), (n.presentHeight = v.present_size.height), (n.profile = v.profile_string), (n.level = v.level_string), (n.bitDepth = v.bit_depth), (n.chromaFormat = v.chroma_format), (n.sarRatio = v.sar_ratio), (n.frameRate = v.frame_rate), (!1 !== v.frame_rate.fixed && 0 !== v.frame_rate.fps_num && 0 !== v.frame_rate.fps_den) || (n.frameRate = this._referenceFrameRate) var y = n.frameRate.fps_den, b = n.frameRate.fps_num n.refSampleDuration = n.timescale * (y / b) for (var E = g.subarray(1, 4), A = "avc1.", R = 0; R < 3; R++) { var T = E[R].toString(16) T.length < 2 && (T = "0" + T), (A += T) } n.codec = A var L = this._mediaInfo ;(L.width = n.codecWidth), (L.height = n.codecHeight), (L.fps = n.frameRate.fps), (L.profile = n.profile), (L.level = n.level), (L.refFrames = v.ref_frames), (L.chromaFormat = v.chroma_format_string), (L.sarNum = n.sarRatio.width), (L.sarDen = n.sarRatio.height), (L.videoCodec = A), L.hasAudio ? null != L.audioCodec && (L.mimeType = 'video/x-flv; codecs="' + L.videoCodec + "," + L.audioCodec + '"') : (L.mimeType = 'video/x-flv; codecs="' + L.videoCodec + '"'), L.isComplete() && this._onMediaInfo(L) } } } var w = o.getUint8(u) if (0 !== w) { w > 1 && r.a.w(this.TAG, "Flv: Strange AVCDecoderConfigurationRecord: PPS Count = " + w), u++ for (l = 0; l < w; l++) { f = o.getUint16(u, !s) ;(u += 2), 0 !== f && (u += f) } ;(n.avcc = new Uint8Array(i)), n.avcc.set(new Uint8Array(e, t, i), 0), r.a.v(this.TAG, "Parsed AVCDecoderConfigurationRecord"), this._isInitialMetadataDispatched() ? this._dispatch && (this._audioTrack.length || this._videoTrack.length) && this._onDataAvailable(this._audioTrack, this._videoTrack) : (this._videoInitialMetadataDispatched = !0), (this._dispatch = !1), this._onTrackMetadata("video", n) } else this._onError(m.a.FORMAT_ERROR, "Flv: Invalid AVCDecoderConfigurationRecord: No PPS") } else this._onError(m.a.FORMAT_ERROR, "Flv: Invalid AVCDecoderConfigurationRecord: No SPS") } else this._onError(m.a.FORMAT_ERROR, "Flv: Strange NaluLengthSizeMinusOne: " + (this._naluLengthSize - 1)) else this._onError(m.a.FORMAT_ERROR, "Flv: Invalid AVCDecoderConfigurationRecord") } }), (e.prototype._parseHEVCDecoderConfigurationRecord = function (e, t, i) { if (i < 22) r.a.w(this.TAG, "Flv: Invalid HEVCDecoderConfigurationRecord, lack of data!") else { var n = this._videoMetadata, a = this._videoTrack, s = this._littleEndian, o = new DataView(e, t, i) if (n) { if (void 0 !== n.hvcc) { var d = new Uint8Array(e, t, i) if (S(d, n.hvcc)) return r.a.w(this.TAG, "HEVCDecoderConfigurationRecord has been changed, re-generate initialization segment") } } else !1 === this._hasVideo && !1 === this._hasVideoFlagOverrided && ((this._hasVideo = !0), (this._mediaInfo.hasVideo = !0)), ((n = this._videoMetadata = {}).type = "video"), (n.id = a.id), (n.timescale = this._timescale), (n.duration = this._duration) var _ = o.getUint8(0), h = 31 & o.getUint8(1) if (1 === _ && 0 !== h) if (((this._naluLengthSize = 1 + (3 & o.getUint8(21))), 3 === this._naluLengthSize || 4 === this._naluLengthSize)) { for (var c = o.getUint8(22), u = 0, l = 23; u < c; u++) { var f = 63 & o.getUint8(l + 0), p = o.getUint16(l + 1, !s) l += 3 for (var v = 0; v < p; v++) { var y = o.getUint16(l + 0, !s) if (0 === v) if (33 === f) { l += 2 var b = new Uint8Array(e, t + l, y), E = g.parseSPS(b) ;(n.codecWidth = E.codec_size.width), (n.codecHeight = E.codec_size.height), (n.presentWidth = E.present_size.width), (n.presentHeight = E.present_size.height), (n.profile = E.profile_string), (n.level = E.level_string), (n.bitDepth = E.bit_depth), (n.chromaFormat = E.chroma_format), (n.sarRatio = E.sar_ratio), (n.frameRate = E.frame_rate), (!1 !== E.frame_rate.fixed && 0 !== E.frame_rate.fps_num && 0 !== E.frame_rate.fps_den) || (n.frameRate = this._referenceFrameRate) var A = n.frameRate.fps_den, R = n.frameRate.fps_num ;(n.refSampleDuration = n.timescale * (A / R)), (n.codec = E.codec_mimetype) var T = this._mediaInfo ;(T.width = n.codecWidth), (T.height = n.codecHeight), (T.fps = n.frameRate.fps), (T.profile = n.profile), (T.level = n.level), (T.refFrames = E.ref_frames), (T.chromaFormat = E.chroma_format_string), (T.sarNum = n.sarRatio.width), (T.sarDen = n.sarRatio.height), (T.videoCodec = E.codec_mimetype), T.hasAudio ? null != T.audioCodec && (T.mimeType = 'video/x-flv; codecs="' + T.videoCodec + "," + T.audioCodec + '"') : (T.mimeType = 'video/x-flv; codecs="' + T.videoCodec + '"'), T.isComplete() && this._onMediaInfo(T), (l += y) } else l += 2 + y else l += 2 + y } } ;(n.hvcc = new Uint8Array(i)), n.hvcc.set(new Uint8Array(e, t, i), 0), r.a.v(this.TAG, "Parsed HEVCDecoderConfigurationRecord"), this._isInitialMetadataDispatched() ? this._dispatch && (this._audioTrack.length || this._videoTrack.length) && this._onDataAvailable(this._audioTrack, this._videoTrack) : (this._videoInitialMetadataDispatched = !0), (this._dispatch = !1), this._onTrackMetadata("video", n) } else this._onError(m.a.FORMAT_ERROR, "Flv: Strange NaluLengthSizeMinusOne: " + (this._naluLengthSize - 1)) else this._onError(m.a.FORMAT_ERROR, "Flv: Invalid HEVCDecoderConfigurationRecord") } }), (e.prototype._parseAVCVideoData = function (e, t, i, n, a, s, o) { for ( var d = this._littleEndian, _ = new DataView(e, t, i), h = [], c = 0, u = 0, l = this._naluLengthSize, f = this._timestampBase + n, p = 1 === s; u < i; ) { if (u + 4 >= i) { r.a.w(this.TAG, "Malformed Nalu near timestamp " + f + ", offset = " + u + ", dataSize = " + i) break } var m = _.getUint32(u, !d) if ((3 === l && (m >>>= 8), m > i - l)) return void r.a.w(this.TAG, "Malformed Nalus near timestamp " + f + ", NaluSize > DataSize!") var g = 31 & _.getUint8(u + l) 5 === g && (p = !0) var v = new Uint8Array(e, t + u, l + m), y = { type: g, data: v } h.push(y), (c += v.byteLength), (u += l + m) } if (h.length) { var b = this._videoTrack, S = { units: h, length: c, isKeyframe: p, dts: f, cts: o, pts: f + o } p && (S.fileposition = a), b.samples.push(S), (b.length += c) } }), (e.prototype._parseHEVCVideoData = function (e, t, i, n, a, s, o) { for ( var d = this._littleEndian, _ = new DataView(e, t, i), h = [], c = 0, u = 0, l = this._naluLengthSize, f = this._timestampBase + n, p = 1 === s; u < i; ) { if (u + 4 >= i) { r.a.w(this.TAG, "Malformed Nalu near timestamp " + f + ", offset = " + u + ", dataSize = " + i) break } var m = _.getUint32(u, !d) if ((3 === l && (m >>>= 8), m > i - l)) return void r.a.w(this.TAG, "Malformed Nalus near timestamp " + f + ", NaluSize > DataSize!") var g = 31 & _.getUint8(u + l) ;(19 !== g && 20 !== g) || (p = !0) var v = new Uint8Array(e, t + u, l + m), y = { type: g, data: v } h.push(y), (c += v.byteLength), (u += l + m) } if (h.length) { var b = this._videoTrack, S = { units: h, length: c, isKeyframe: p, dts: f, cts: o, pts: f + o } p && (S.fileposition = a), b.samples.push(S), (b.length += c) } }), e ) })(), R = (function () { function e() {} return ( (e.prototype.destroy = function () { ;(this.onError = null), (this.onMediaInfo = null), (this.onMetaDataArrived = null), (this.onTrackMetadata = null), (this.onDataAvailable = null), (this.onTimedID3Metadata = null), (this.onSMPTE2038Metadata = null), (this.onSCTE35Metadata = null), (this.onPESPrivateData = null), (this.onPESPrivateDataDescriptor = null) }), e ) })(), T = function () { this.program_pmt_pid = {} } !(function (e) { ;(e[(e.kMPEG1Audio = 3)] = "kMPEG1Audio"), (e[(e.kMPEG2Audio = 4)] = "kMPEG2Audio"), (e[(e.kPESPrivateData = 6)] = "kPESPrivateData"), (e[(e.kADTSAAC = 15)] = "kADTSAAC"), (e[(e.kLOASAAC = 17)] = "kLOASAAC"), (e[(e.kAC3 = 129)] = "kAC3"), (e[(e.kID3 = 21)] = "kID3"), (e[(e.kSCTE35 = 134)] = "kSCTE35"), (e[(e.kH264 = 27)] = "kH264"), (e[(e.kH265 = 36)] = "kH265") })(E || (E = {})) var L, w = function () { ;(this.pid_stream_type = {}), (this.common_pids = { h264: void 0, h265: void 0, adts_aac: void 0, loas_aac: void 0, opus: void 0, ac3: void 0, mp3: void 0 }), (this.pes_private_data_pids = {}), (this.timed_id3_pids = {}), (this.scte_35_pids = {}), (this.smpte2038_pids = {}) }, k = function () {}, D = function () {}, C = function () { ;(this.slices = []), (this.total_length = 0), (this.expected_length = 0), (this.file_position = 0) } !(function (e) { ;(e[(e.kUnspecified = 0)] = "kUnspecified"), (e[(e.kSliceNonIDR = 1)] = "kSliceNonIDR"), (e[(e.kSliceDPA = 2)] = "kSliceDPA"), (e[(e.kSliceDPB = 3)] = "kSliceDPB"), (e[(e.kSliceDPC = 4)] = "kSliceDPC"), (e[(e.kSliceIDR = 5)] = "kSliceIDR"), (e[(e.kSliceSEI = 6)] = "kSliceSEI"), (e[(e.kSliceSPS = 7)] = "kSliceSPS"), (e[(e.kSlicePPS = 8)] = "kSlicePPS"), (e[(e.kSliceAUD = 9)] = "kSliceAUD"), (e[(e.kEndOfSequence = 10)] = "kEndOfSequence"), (e[(e.kEndOfStream = 11)] = "kEndOfStream"), (e[(e.kFiller = 12)] = "kFiller"), (e[(e.kSPSExt = 13)] = "kSPSExt"), (e[(e.kReserved0 = 14)] = "kReserved0") })(L || (L = {})) var B, I, O = function () {}, P = function (e) { var t = e.data.byteLength ;(this.type = e.type), (this.data = new Uint8Array(4 + t)), new DataView(this.data.buffer).setUint32(0, t), this.data.set(e.data, 4) }, M = (function () { function e(e) { ;(this.TAG = "H264AnnexBParser"), (this.current_startcode_offset_ = 0), (this.eof_flag_ = !1), (this.data_ = e), (this.current_startcode_offset_ = this.findNextStartCodeOffset(0)), this.eof_flag_ && r.a.e(this.TAG, "Could not find H264 startcode until payload end!") } return ( (e.prototype.findNextStartCodeOffset = function (e) { for (var t = e, i = this.data_; ; ) { if (t + 3 >= i.byteLength) return (this.eof_flag_ = !0), i.byteLength var n = (i[t + 0] << 24) | (i[t + 1] << 16) | (i[t + 2] << 8) | i[t + 3], a = (i[t + 0] << 16) | (i[t + 1] << 8) | i[t + 2] if (1 === n || 1 === a) return t t++ } }), (e.prototype.readNextNaluPayload = function () { for (var e = this.data_, t = null; null == t && !this.eof_flag_; ) { var i = this.current_startcode_offset_, n = 31 & e[(i += 1 === ((e[i] << 24) | (e[i + 1] << 16) | (e[i + 2] << 8) | e[i + 3]) ? 4 : 3)], a = (128 & e[i]) >>> 7, r = this.findNextStartCodeOffset(i) if (((this.current_startcode_offset_ = r), !(n >= L.kReserved0) && 0 === a)) { var s = e.subarray(i, r) ;((t = new O()).type = n), (t.data = s) } } return t }), e ) })(), x = (function () { function e(e, t, i) { var n = 8 + e.byteLength + 1 + 2 + t.byteLength, a = !1 66 !== e[3] && 77 !== e[3] && 88 !== e[3] && ((a = !0), (n += 4)) var r = (this.data = new Uint8Array(n)) ;(r[0] = 1), (r[1] = e[1]), (r[2] = e[2]), (r[3] = e[3]), (r[4] = 255), (r[5] = 225) var s = e.byteLength ;(r[6] = s >>> 8), (r[7] = 255 & s) var o = 8 r.set(e, 8), (r[(o += s)] = 1) var d = t.byteLength ;(r[o + 1] = d >>> 8), (r[o + 2] = 255 & d), r.set(t, o + 3), (o += 3 + d), a && ((r[o] = 252 | i.chroma_format_idc), (r[o + 1] = 248 | (i.bit_depth_luma - 8)), (r[o + 2] = 248 | (i.bit_depth_chroma - 8)), (r[o + 3] = 0), (o += 4)) } return ( (e.prototype.getData = function () { return this.data }), e ) })() !(function (e) { ;(e[(e.kNull = 0)] = "kNull"), (e[(e.kAACMain = 1)] = "kAACMain"), (e[(e.kAAC_LC = 2)] = "kAAC_LC"), (e[(e.kAAC_SSR = 3)] = "kAAC_SSR"), (e[(e.kAAC_LTP = 4)] = "kAAC_LTP"), (e[(e.kAAC_SBR = 5)] = "kAAC_SBR"), (e[(e.kAAC_Scalable = 6)] = "kAAC_Scalable"), (e[(e.kLayer1 = 32)] = "kLayer1"), (e[(e.kLayer2 = 33)] = "kLayer2"), (e[(e.kLayer3 = 34)] = "kLayer3") })(B || (B = {})), (function (e) { ;(e[(e.k96000Hz = 0)] = "k96000Hz"), (e[(e.k88200Hz = 1)] = "k88200Hz"), (e[(e.k64000Hz = 2)] = "k64000Hz"), (e[(e.k48000Hz = 3)] = "k48000Hz"), (e[(e.k44100Hz = 4)] = "k44100Hz"), (e[(e.k32000Hz = 5)] = "k32000Hz"), (e[(e.k24000Hz = 6)] = "k24000Hz"), (e[(e.k22050Hz = 7)] = "k22050Hz"), (e[(e.k16000Hz = 8)] = "k16000Hz"), (e[(e.k12000Hz = 9)] = "k12000Hz"), (e[(e.k11025Hz = 10)] = "k11025Hz"), (e[(e.k8000Hz = 11)] = "k8000Hz"), (e[(e.k7350Hz = 12)] = "k7350Hz") })(I || (I = {})) var U, N, G = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350], V = ((U = function (e, t) { return (U = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t }) || function (e, t) { for (var i in t) t.hasOwnProperty(i) && (e[i] = t[i]) })(e, t) }), function (e, t) { function i() { this.constructor = e } U(e, t), (e.prototype = null === t ? Object.create(t) : ((i.prototype = t.prototype), new i())) }), F = function () {}, j = (function (e) { function t() { return (null !== e && e.apply(this, arguments)) || this } return V(t, e), t })(F), z = (function () { function e(e) { ;(this.TAG = "AACADTSParser"), (this.data_ = e), (this.current_syncword_offset_ = this.findNextSyncwordOffset(0)), this.eof_flag_ && r.a.e(this.TAG, "Could not found ADTS syncword until payload end") } return ( (e.prototype.findNextSyncwordOffset = function (e) { for (var t = e, i = this.data_; ; ) { if (t + 7 >= i.byteLength) return (this.eof_flag_ = !0), i.byteLength if (4095 === ((i[t + 0] << 8) | i[t + 1]) >>> 4) return t t++ } }), (e.prototype.readNextAACFrame = function () { for (var e = this.data_, t = null; null == t && !this.eof_flag_; ) { var i = this.current_syncword_offset_, n = (8 & e[i + 1]) >>> 3, a = (6 & e[i + 1]) >>> 1, r = 1 & e[i + 1], s = (192 & e[i + 2]) >>> 6, o = (60 & e[i + 2]) >>> 2, d = ((1 & e[i + 2]) << 2) | ((192 & e[i + 3]) >>> 6), _ = ((3 & e[i + 3]) << 11) | (e[i + 4] << 3) | ((224 & e[i + 5]) >>> 5) e[i + 6] if (i + _ > this.data_.byteLength) { ;(this.eof_flag_ = !0), (this.has_last_incomplete_data = !0) break } var h = 1 === r ? 7 : 9, c = _ - h i += h var u = this.findNextSyncwordOffset(i + c) if (((this.current_syncword_offset_ = u), (0 === n || 1 === n) && 0 === a)) { var l = e.subarray(i, i + c) ;((t = new F()).audio_object_type = s + 1), (t.sampling_freq_index = o), (t.sampling_frequency = G[o]), (t.channel_config = d), (t.data = l) } } return t }), (e.prototype.hasIncompleteData = function () { return this.has_last_incomplete_data }), (e.prototype.getIncompleteData = function () { return this.has_last_incomplete_data ? this.data_.subarray(this.current_syncword_offset_) : null }), e ) })(), H = (function () { function e(e) { ;(this.TAG = "AACLOASParser"), (this.data_ = e), (this.current_syncword_offset_ = this.findNextSyncwordOffset(0)), this.eof_flag_ && r.a.e(this.TAG, "Could not found LOAS syncword until payload end") } return ( (e.prototype.findNextSyncwordOffset = function (e) { for (var t = e, i = this.data_; ; ) { if (t + 1 >= i.byteLength) return (this.eof_flag_ = !0), i.byteLength if (695 === ((i[t + 0] << 3) | (i[t + 1] >>> 5))) return t t++ } }), (e.prototype.getLATMValue = function (e) { for (var t = e.readBits(2), i = 0, n = 0; n <= t; n++) (i <<= 8), (i |= e.readByte()) return i }), (e.prototype.readNextAACFrame = function (e) { for (var t = this.data_, i = null; null == i && !this.eof_flag_; ) { var n = this.current_syncword_offset_, a = ((31 & t[n + 1]) << 8) | t[n + 2] if (n + 3 + a >= this.data_.byteLength) { ;(this.eof_flag_ = !0), (this.has_last_incomplete_data = !0) break } var s = new f(t.subarray(n + 3, n + 3 + a)), o = null if (s.readBool()) { if (null == e) { r.a.w(this.TAG, "StreamMuxConfig Missing"), (this.current_syncword_offset_ = this.findNextSyncwordOffset(n + 3 + a)), s.destroy() continue } o = e } else { var d = s.readBool() if (d && s.readBool()) { r.a.e(this.TAG, "audioMuxVersionA is Not Supported"), s.destroy() break } if ((d && this.getLATMValue(s), !s.readBool())) { r.a.e(this.TAG, "allStreamsSameTimeFraming zero is Not Supported"), s.destroy() break } if (0 !== s.readBits(6)) { r.a.e(this.TAG, "more than 2 numSubFrames Not Supported"), s.destroy() break } if (0 !== s.readBits(4)) { r.a.e(this.TAG, "more than 2 numProgram Not Supported"), s.destroy() break } if (0 !== s.readBits(3)) { r.a.e(this.TAG, "more than 2 numLayer Not Supported"), s.destroy() break } var _ = d ? this.getLATMValue(s) : 0, h = s.readBits(5) _ -= 5 var c = s.readBits(4) _ -= 4 var u = s.readBits(4) ;(_ -= 4), s.readBits(3), (_ -= 3) > 0 && s.readBits(_) var l = s.readBits(3) if (0 !== l) { r.a.e(this.TAG, "frameLengthType = " + l + ". Only frameLengthType = 0 Supported"), s.destroy() break } s.readByte() var p = s.readBool() if (p) if (d) this.getLATMValue(s) else { for (var m = 0; ; ) { m <<= 8 var g = s.readBool() if (((m += s.readByte()), !g)) break } console.log(m) } s.readBool() && s.readByte(), ((o = new j()).audio_object_type = h), (o.sampling_freq_index = c), (o.sampling_frequency = G[o.sampling_freq_index]), (o.channel_config = u), (o.other_data_present = p) } for (var v = 0; ; ) { var y = s.readByte() if (((v += y), 255 !== y)) break } for (var b = new Uint8Array(v), S = 0; S < v; S++) b[S] = s.readByte() ;((i = new j()).audio_object_type = o.audio_object_type), (i.sampling_freq_index = o.sampling_freq_index), (i.sampling_frequency = G[o.sampling_freq_index]), (i.channel_config = o.channel_config), (i.other_data_present = o.other_data_present), (i.data = b), (this.current_syncword_offset_ = this.findNextSyncwordOffset(n + 3 + a)) } return i }), (e.prototype.hasIncompleteData = function () { return this.has_last_incomplete_data }), (e.prototype.getIncompleteData = function () { return this.has_last_incomplete_data ? this.data_.subarray(this.current_syncword_offset_) : null }), e ) })(), q = function (e) { var t = null, i = e.audio_object_type, n = e.audio_object_type, a = e.sampling_freq_index, r = e.channel_config, s = 0, o = navigator.userAgent.toLowerCase() ;-1 !== o.indexOf("firefox") ? a >= 6 ? ((n = 5), (t = new Array(4)), (s = a - 3)) : ((n = 2), (t = new Array(2)), (s = a)) : -1 !== o.indexOf("android") ? ((n = 2), (t = new Array(2)), (s = a)) : ((n = 5), (s = a), (t = new Array(4)), a >= 6 ? (s = a - 3) : 1 === r && ((n = 2), (t = new Array(2)), (s = a))), (t[0] = n << 3), (t[0] |= (15 & a) >>> 1), (t[1] = (15 & a) << 7), (t[1] |= (15 & r) << 3), 5 === n && ((t[1] |= (15 & s) >>> 1), (t[2] = (1 & s) << 7), (t[2] |= 8), (t[3] = 0)), (this.config = t), (this.sampling_rate = G[a]), (this.channel_count = r), (this.codec_mimetype = "mp4a.40." + n), (this.original_codec_mimetype = "mp4a.40." + i) }, K = function () {}, W = function () {} !(function (e) { ;(e[(e.kSpliceNull = 0)] = "kSpliceNull"), (e[(e.kSpliceSchedule = 4)] = "kSpliceSchedule"), (e[(e.kSpliceInsert = 5)] = "kSpliceInsert"), (e[(e.kTimeSignal = 6)] = "kTimeSignal"), (e[(e.kBandwidthReservation = 7)] = "kBandwidthReservation"), (e[(e.kPrivateCommand = 255)] = "kPrivateCommand") })(N || (N = {})) var X, Y = function (e) { var t = e.readBool() return t ? (e.readBits(6), { time_specified_flag: t, pts_time: 4 * e.readBits(31) + e.readBits(2) }) : (e.readBits(7), { time_specified_flag: t }) }, J = function (e) { var t = e.readBool() return e.readBits(6), { auto_return: t, duration: 4 * e.readBits(31) + e.readBits(2) } }, Z = function (e, t) { var i = t.readBits(8) return e ? { component_tag: i } : { component_tag: i, splice_time: Y(t) } }, Q = function (e) { return { component_tag: e.readBits(8), utc_splice_time: e.readBits(32) } }, $ = function (e) { var t = e.readBits(32), i = e.readBool() e.readBits(7) var n = { splice_event_id: t, splice_event_cancel_indicator: i } if (i) return n if ( ((n.out_of_network_indicator = e.readBool()), (n.program_splice_flag = e.readBool()), (n.duration_flag = e.readBool()), e.readBits(5), n.program_splice_flag) ) n.utc_splice_time = e.readBits(32) else { ;(n.component_count = e.readBits(8)), (n.components = []) for (var a = 0; a < n.component_count; a++) n.components.push(Q(e)) } return ( n.duration_flag && (n.break_duration = J(e)), (n.unique_program_id = e.readBits(16)), (n.avail_num = e.readBits(8)), (n.avails_expected = e.readBits(8)), n ) }, ee = function (e, t, i, n) { return { descriptor_tag: e, descriptor_length: t, identifier: i, provider_avail_id: n.readBits(32) } }, te = function (e, t, i, n) { var a = n.readBits(8), r = n.readBits(3) n.readBits(5) for (var s = "", o = 0; o < r; o++) s += String.fromCharCode(n.readBits(8)) return { descriptor_tag: e, descriptor_length: t, identifier: i, preroll: a, dtmf_count: r, DTMF_char: s } }, ie = function (e) { var t = e.readBits(8) return e.readBits(7), { component_tag: t, pts_offset: 4 * e.readBits(31) + e.readBits(2) } }, ne = function (e, t, i, n) { var a = n.readBits(32), r = n.readBool() n.readBits(7) var s = { descriptor_tag: e, descriptor_length: t, identifier: i, segmentation_event_id: a, segmentation_event_cancel_indicator: r } if (r) return s if ( ((s.program_segmentation_flag = n.readBool()), (s.segmentation_duration_flag = n.readBool()), (s.delivery_not_restricted_flag = n.readBool()), s.delivery_not_restricted_flag ? n.readBits(5) : ((s.web_delivery_allowed_flag = n.readBool()), (s.no_regional_blackout_flag = n.readBool()), (s.archive_allowed_flag = n.readBool()), (s.device_restrictions = n.readBits(2))), !s.program_segmentation_flag) ) { ;(s.component_count = n.readBits(8)), (s.components = []) for (var o = 0; o < s.component_count; o++) s.components.push(ie(n)) } s.segmentation_duration_flag && (s.segmentation_duration = n.readBits(40)), (s.segmentation_upid_type = n.readBits(8)), (s.segmentation_upid_length = n.readBits(8)) var d = new Uint8Array(s.segmentation_upid_length) for (o = 0; o < s.segmentation_upid_length; o++) d[o] = n.readBits(8) return ( (s.segmentation_upid = d.buffer), (s.segmentation_type_id = n.readBits(8)), (s.segment_num = n.readBits(8)), (s.segments_expected = n.readBits(8)), (52 !== s.segmentation_type_id && 54 !== s.segmentation_type_id && 56 !== s.segmentation_type_id && 58 !== s.segmentation_type_id) || ((s.sub_segment_num = n.readBits(8)), (s.sub_segments_expected = n.readBits(8))), s ) }, ae = function (e, t, i, n) { return { descriptor_tag: e, descriptor_length: t, identifier: i, TAI_seconds: n.readBits(48), TAI_ns: n.readBits(32), UTC_offset: n.readBits(16) } }, re = function (e) { return { component_tag: e.readBits(8), ISO_code: String.fromCharCode(e.readBits(8), e.readBits(8), e.readBits(8)), Bit_Stream_Mode: e.readBits(3), Num_Channels: e.readBits(4), Full_Srvc_Audio: e.readBool() } }, se = function (e, t, i, n) { for (var a = n.readBits(4), r = [], s = 0; s < a; s++) r.push(re(n)) return { descriptor_tag: e, descriptor_length: t, identifier: i, audio_count: a, components: r } }, oe = function (e) { var t = new f(e), i = t.readBits(8), n = t.readBool(), a = t.readBool() t.readBits(2) var r = t.readBits(12), s = t.readBits(8), o = t.readBool(), d = t.readBits(6), _ = 4 * t.readBits(31) + t.readBits(2), h = t.readBits(8), c = t.readBits(12), u = t.readBits(12), l = t.readBits(8), p = null l === N.kSpliceNull ? (p = {}) : l === N.kSpliceSchedule ? (p = (function (e) { for (var t = e.readBits(8), i = [], n = 0; n < t; n++) i.push($(e)) return { splice_count: t, events: i } })(t)) : l === N.kSpliceInsert ? (p = (function (e) { var t = e.readBits(32), i = e.readBool() e.readBits(7) var n = { splice_event_id: t, splice_event_cancel_indicator: i } if (i) return n if ( ((n.out_of_network_indicator = e.readBool()), (n.program_splice_flag = e.readBool()), (n.duration_flag = e.readBool()), (n.splice_immediate_flag = e.readBool()), e.readBits(4), n.program_splice_flag && !n.splice_immediate_flag && (n.splice_time = Y(e)), !n.program_splice_flag) ) { ;(n.component_count = e.readBits(8)), (n.components = []) for (var a = 0; a < n.component_count; a++) n.components.push(Z(n.splice_immediate_flag, e)) } return ( n.duration_flag && (n.break_duration = J(e)), (n.unique_program_id = e.readBits(16)), (n.avail_num = e.readBits(8)), (n.avails_expected = e.readBits(8)), n ) })(t)) : l === N.kTimeSignal ? (p = (function (e) { return { splice_time: Y(e) } })(t)) : l === N.kBandwidthReservation ? (p = {}) : l === N.kPrivateCommand ? (p = (function (e, t) { for ( var i = String.fromCharCode(t.readBits(8), t.readBits(8), t.readBits(8), t.readBits(8)), n = new Uint8Array(e - 4), a = 0; a < e - 4; a++ ) n[a] = t.readBits(8) return { identifier: i, private_data: n.buffer } })(u, t)) : t.readBits(8 * u) for (var m = [], g = t.readBits(16), v = 0; v < g; ) { var y = t.readBits(8), b = t.readBits(8), S = String.fromCharCode(t.readBits(8), t.readBits(8), t.readBits(8), t.readBits(8)) 0 === y ? m.push(ee(y, b, S, t)) : 1 === y ? m.push(te(y, b, S, t)) : 2 === y ? m.push(ne(y, b, S, t)) : 3 === y ? m.push(ae(y, b, S, t)) : 4 === y ? m.push(se(y, b, S, t)) : t.readBits(8 * (b - 4)), (v += 2 + b) } var E = { table_id: i, section_syntax_indicator: n, private_indicator: a, section_length: r, protocol_version: s, encrypted_packet: o, encryption_algorithm: d, pts_adjustment: _, cw_index: h, tier: c, splice_command_length: u, splice_command_type: l, splice_command: p, descriptor_loop_length: g, splice_descriptors: m, E_CRC32: o ? t.readBits(32) : void 0, CRC32: t.readBits(32) } if (l === N.kSpliceInsert) { var A = p if (A.splice_event_cancel_indicator) return { splice_command_type: l, detail: E, data: e } if (A.program_splice_flag && !A.splice_immediate_flag) { var R = A.duration_flag ? A.break_duration.auto_return : void 0, T = A.duration_flag ? A.break_duration.duration / 90 : void 0 return A.splice_time.time_specified_flag ? { splice_command_type: l, pts: (_ + A.splice_time.pts_time) % Math.pow(2, 33), auto_return: R, duraiton: T, detail: E, data: e } : { splice_command_type: l, auto_return: R, duraiton: T, detail: E, data: e } } return { splice_command_type: l, auto_return: (R = A.duration_flag ? A.break_duration.auto_return : void 0), duraiton: (T = A.duration_flag ? A.break_duration.duration / 90 : void 0), detail: E, data: e } } if (l === N.kTimeSignal) { var L = p return L.splice_time.time_specified_flag ? { splice_command_type: l, pts: (_ + L.splice_time.pts_time) % Math.pow(2, 33), detail: E, data: e } : { splice_command_type: l, detail: E, data: e } } return { splice_command_type: l, detail: E, data: e } } !(function (e) { ;(e[(e.kSliceIDR_W_RADL = 19)] = "kSliceIDR_W_RADL"), (e[(e.kSliceIDR_N_LP = 20)] = "kSliceIDR_N_LP"), (e[(e.kSliceCRA_NUT = 21)] = "kSliceCRA_NUT"), (e[(e.kSliceVPS = 32)] = "kSliceVPS"), (e[(e.kSliceSPS = 33)] = "kSliceSPS"), (e[(e.kSlicePPS = 34)] = "kSlicePPS"), (e[(e.kSliceAUD = 35)] = "kSliceAUD") })(X || (X = {})) var de = function () {}, _e = function (e) { var t = e.data.byteLength ;(this.type = e.type), (this.data = new Uint8Array(4 + t)), new DataView(this.data.buffer).setUint32(0, t), this.data.set(e.data, 4) }, he = (function () { function e(e) { ;(this.TAG = "H265AnnexBParser"), (this.current_startcode_offset_ = 0), (this.eof_flag_ = !1), (this.data_ = e), (this.current_startcode_offset_ = this.findNextStartCodeOffset(0)), this.eof_flag_ && r.a.e(this.TAG, "Could not find H265 startcode until payload end!") } return ( (e.prototype.findNextStartCodeOffset = function (e) { for (var t = e, i = this.data_; ; ) { if (t + 3 >= i.byteLength) return (this.eof_flag_ = !0), i.byteLength var n = (i[t + 0] << 24) | (i[t + 1] << 16) | (i[t + 2] << 8) | i[t + 3], a = (i[t + 0] << 16) | (i[t + 1] << 8) | i[t + 2] if (1 === n || 1 === a) return t t++ } }), (e.prototype.readNextNaluPayload = function () { for (var e = this.data_, t = null; null == t && !this.eof_flag_; ) { var i = this.current_startcode_offset_, n = (e[(i += 1 === ((e[i] << 24) | (e[i + 1] << 16) | (e[i + 2] << 8) | e[i + 3]) ? 4 : 3)] >> 1) & 63, a = (128 & e[i]) >>> 7, r = this.findNextStartCodeOffset(i) if (((this.current_startcode_offset_ = r), 0 === a)) { var s = e.subarray(i, r) ;((t = new de()).type = n), (t.data = s) } } return t }), e ) })(), ce = (function () { function e(e, t, i, n) { var a = 23 + (5 + e.byteLength) + (5 + t.byteLength) + (5 + i.byteLength), r = (this.data = new Uint8Array(a)) ;(r[0] = 1), (r[1] = ((3 & n.general_profile_space) << 6) | ((n.general_tier_flag ? 1 : 0) << 5) | (31 & n.general_profile_idc)), (r[2] = n.general_profile_compatibility_flags_1), (r[3] = n.general_profile_compatibility_flags_2), (r[4] = n.general_profile_compatibility_flags_3), (r[5] = n.general_profile_compatibility_flags_4), (r[6] = n.general_constraint_indicator_flags_1), (r[7] = n.general_constraint_indicator_flags_2), (r[8] = n.general_constraint_indicator_flags_3), (r[9] = n.general_constraint_indicator_flags_4), (r[10] = n.general_constraint_indicator_flags_5), (r[11] = n.general_constraint_indicator_flags_6), (r[12] = n.general_level_idc), (r[13] = 240 | ((3840 & n.min_spatial_segmentation_idc) >> 8)), (r[14] = 255 & n.min_spatial_segmentation_idc), (r[15] = 252 | (3 & n.parallelismType)), (r[16] = 252 | (3 & n.chroma_format_idc)), (r[17] = 248 | (7 & n.bit_depth_luma_minus8)), (r[18] = 248 | (7 & n.bit_depth_chroma_minus8)), (r[19] = 0), (r[20] = 0), (r[21] = ((3 & n.constant_frame_rate) << 6) | ((7 & n.num_temporal_layers) << 3) | ((n.temporal_id_nested ? 1 : 0) << 2) | 3), (r[22] = 3), (r[23] = 128 | X.kSliceVPS), (r[24] = 0), (r[25] = 1), (r[26] = (65280 & e.byteLength) >> 8), (r[27] = (255 & e.byteLength) >> 0), r.set(e, 28), (r[23 + (5 + e.byteLength) + 0] = 128 | X.kSliceSPS), (r[23 + (5 + e.byteLength) + 1] = 0), (r[23 + (5 + e.byteLength) + 2] = 1), (r[23 + (5 + e.byteLength) + 3] = (65280 & t.byteLength) >> 8), (r[23 + (5 + e.byteLength) + 4] = (255 & t.byteLength) >> 0), r.set(t, 23 + (5 + e.byteLength) + 5), (r[23 + (5 + e.byteLength + 5 + t.byteLength) + 0] = 128 | X.kSlicePPS), (r[23 + (5 + e.byteLength + 5 + t.byteLength) + 1] = 0), (r[23 + (5 + e.byteLength + 5 + t.byteLength) + 2] = 1), (r[23 + (5 + e.byteLength + 5 + t.byteLength) + 3] = (65280 & i.byteLength) >> 8), (r[23 + (5 + e.byteLength + 5 + t.byteLength) + 4] = (255 & i.byteLength) >> 0), r.set(i, 23 + (5 + e.byteLength + 5 + t.byteLength) + 5) } return ( (e.prototype.getData = function () { return this.data }), e ) })(), ue = function () {}, le = function () {}, fe = function () {}, pe = [ [ 64, 64, 80, 80, 96, 96, 112, 112, 128, 128, 160, 160, 192, 192, 224, 224, 256, 256, 320, 320, 384, 384, 448, 448, 512, 512, 640, 640, 768, 768, 896, 896, 1024, 1024, 1152, 1152, 1280, 1280 ], [ 69, 70, 87, 88, 104, 105, 121, 122, 139, 140, 174, 175, 208, 209, 243, 244, 278, 279, 348, 349, 417, 418, 487, 488, 557, 558, 696, 697, 835, 836, 975, 976, 1114, 1115, 1253, 1254, 1393, 1394 ], [ 96, 96, 120, 120, 144, 144, 168, 168, 192, 192, 240, 240, 288, 288, 336, 336, 384, 384, 480, 480, 576, 576, 672, 672, 768, 768, 960, 960, 1152, 1152, 1344, 1344, 1536, 1536, 1728, 1728, 1920, 1920 ] ], me = (function () { function e(e) { ;(this.TAG = "AC3Parser"), (this.data_ = e), (this.current_syncword_offset_ = this.findNextSyncwordOffset(0)), this.eof_flag_ && r.a.e(this.TAG, "Could not found AC3 syncword until payload end") } return ( (e.prototype.findNextSyncwordOffset = function (e) { for (var t = e, i = this.data_; ; ) { if (t + 7 >= i.byteLength) return (this.eof_flag_ = !0), i.byteLength if (2935 === ((i[t + 0] << 8) | (i[t + 1] << 0))) return t t++ } }), (e.prototype.readNextAC3Frame = function () { for (var e = this.data_, t = null; null == t && !this.eof_flag_; ) { var i = this.current_syncword_offset_, n = e[i + 4] >> 6, a = [48e3, 44200, 33e3][n], r = 63 & e[i + 4], s = 2 * pe[n][r] if (i + s > this.data_.byteLength) { ;(this.eof_flag_ = !0), (this.has_last_incomplete_data = !0) break } var o = this.findNextSyncwordOffset(i + s) this.current_syncword_offset_ = o var d = e[i + 5] >> 3, _ = 7 & e[i + 5], h = e[i + 6] >> 5, c = 0 0 != (1 & h) && 1 !== h && (c += 2), 0 != (4 & h) && (c += 2), 2 === h && (c += 2) var u = (((e[i + 6] << 8) | (e[i + 7] << 0)) >> (12 - c)) & 1, l = [2, 1, 2, 3, 3, 4, 4, 5][h] + u ;((t = new fe()).sampling_frequency = a), (t.channel_count = l), (t.channel_mode = h), (t.bit_stream_identification = d), (t.low_frequency_effects_channel_on = u), (t.bit_stream_mode = _), (t.frame_size_code = r), (t.data = e.subarray(i, i + s)) } return t }), (e.prototype.hasIncompleteData = function () { return this.has_last_incomplete_data }), (e.prototype.getIncompleteData = function () { return this.has_last_incomplete_data ? this.data_.subarray(this.current_syncword_offset_) : null }), e ) })(), ge = function (e) { var t ;(t = [ (e.sampling_rate_code << 6) | (e.bit_stream_identification << 1) | (e.bit_stream_mode >> 2), ((3 & e.bit_stream_mode) << 6) | (e.channel_mode << 3) | (e.low_frequency_effects_channel_on << 2) | (e.frame_size_code >> 4), (e.frame_size_code << 4) & 224 ]), (this.config = t), (this.sampling_rate = e.sampling_frequency), (this.bit_stream_identification = e.bit_stream_identification), (this.bit_stream_mode = e.bit_stream_mode), (this.low_frequency_effects_channel_on = e.low_frequency_effects_channel_on), (this.channel_count = e.channel_count), (this.channel_mode = e.channel_mode), (this.codec_mimetype = "ac-3"), (this.original_codec_mimetype = "ac-3") }, ve = (function () { var e = function (t, i) { return (e = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t }) || function (e, t) { for (var i in t) t.hasOwnProperty(i) && (e[i] = t[i]) })(t, i) } return function (t, i) { function n() { this.constructor = t } e(t, i), (t.prototype = null === i ? Object.create(i) : ((n.prototype = i.prototype), new n())) } })(), ye = function () { return (ye = Object.assign || function (e) { for (var t, i = 1, n = arguments.length; i < n; i++) for (var a in (t = arguments[i])) Object.prototype.hasOwnProperty.call(t, a) && (e[a] = t[a]) return e }).apply(this, arguments) }, be = (function (e) { function t(t, i) { var n = e.call(this) || this return ( (n.TAG = "TSDemuxer"), (n.first_parse_ = !0), (n.media_info_ = new o.a()), (n.timescale_ = 90), (n.duration_ = 0), (n.current_pmt_pid_ = -1), (n.program_pmt_map_ = {}), (n.pes_slice_queues_ = {}), (n.section_slice_queues_ = {}), (n.video_metadata_ = { vps: void 0, sps: void 0, pps: void 0, details: void 0 }), (n.audio_metadata_ = { codec: void 0, audio_object_type: void 0, sampling_freq_index: void 0, sampling_frequency: void 0, channel_config: void 0 }), (n.aac_last_sample_pts_ = void 0), (n.aac_last_incomplete_data_ = null), (n.has_video_ = !1), (n.has_audio_ = !1), (n.video_init_segment_dispatched_ = !1), (n.audio_init_segment_dispatched_ = !1), (n.video_metadata_changed_ = !1), (n.audio_metadata_changed_ = !1), (n.loas_previous_frame = null), (n.video_track_ = { type: "video", id: 1, sequenceNumber: 0, samples: [], length: 0 }), (n.audio_track_ = { type: "audio", id: 2, sequenceNumber: 0, samples: [], length: 0 }), (n.ts_packet_size_ = t.ts_packet_size), (n.sync_offset_ = t.sync_offset), (n.config_ = i), n ) } return ( ve(t, e), (t.prototype.destroy = function () { ;(this.media_info_ = null), (this.pes_slice_queues_ = null), (this.section_slice_queues_ = null), (this.video_metadata_ = null), (this.audio_metadata_ = null), (this.aac_last_incomplete_data_ = null), (this.video_track_ = null), (this.audio_track_ = null), e.prototype.destroy.call(this) }), (t.probe = function (e) { var t = new Uint8Array(e), i = -1, n = 188 if (t.byteLength <= 3 * n) return { needMoreData: !0 } for (; -1 === i; ) { for (var a = Math.min(1e3, t.byteLength - 3 * n), s = 0; s < a; ) { if (71 === t[s] && 71 === t[s + n] && 71 === t[s + 2 * n]) { i = s break } s++ } if (-1 === i) if (188 === n) n = 192 else { if (192 !== n) break n = 204 } } return -1 === i ? { match: !1 } : (192 === n && i >= 4 ? (r.a.v("TSDemuxer", "ts_packet_size = 192, m2ts mode"), (i -= 4)) : 204 === n && r.a.v("TSDemuxer", "ts_packet_size = 204, RS encoded MPEG2-TS stream"), { match: !0, consumed: 0, ts_packet_size: n, sync_offset: i }) }), (t.prototype.bindDataSource = function (e) { return (e.onDataArrival = this.parseChunks.bind(this)), this }), (t.prototype.resetMediaInfo = function () { this.media_info_ = new o.a() }), (t.prototype.parseChunks = function (e, t) { if (!(this.onError && this.onMediaInfo && this.onTrackMetadata && this.onDataAvailable)) throw new c.a("onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified") var i = 0 for (this.first_parse_ && ((this.first_parse_ = !1), (i = this.sync_offset_)); i + this.ts_packet_size_ <= e.byteLength; ) { var n = t + i 192 === this.ts_packet_size_ && (i += 4) var a = new Uint8Array(e, i, 188), s = a[0] if (71 !== s) { r.a.e(this.TAG, "sync_byte = " + s + ", not 0x47") break } var o = (64 & a[1]) >>> 6, d = (a[1], ((31 & a[1]) << 8) | a[2]), _ = (48 & a[3]) >>> 4, h = 15 & a[3], u = {}, l = 4 if (2 == _ || 3 == _) { var f = a[4] if (5 + f === 188) { ;(i += 188), 204 === this.ts_packet_size_ && (i += 16) continue } f > 0 && (u = this.parseAdaptationField(e, i + 4, 1 + f)), (l = 5 + f) } if (1 == _ || 3 == _) if (0 === d || d === this.current_pmt_pid_ || (null != this.pmt_ && this.pmt_.pid_stream_type[d] === E.kSCTE35)) { var p = 188 - l this.handleSectionSlice(e, i + l, p, { pid: d, file_position: n, payload_unit_start_indicator: o, continuity_conunter: h, random_access_indicator: u.random_access_indicator }) } else if (null != this.pmt_ && null != this.pmt_.pid_stream_type[d]) { p = 188 - l var m = this.pmt_.pid_stream_type[d] ;(d !== this.pmt_.common_pids.h264 && d !== this.pmt_.common_pids.h265 && d !== this.pmt_.common_pids.adts_aac && d !== this.pmt_.common_pids.loas_aac && d !== this.pmt_.common_pids.ac3 && d !== this.pmt_.common_pids.opus && d !== this.pmt_.common_pids.mp3 && !0 !== this.pmt_.pes_private_data_pids[d] && !0 !== this.pmt_.timed_id3_pids[d]) || this.handlePESSlice(e, i + l, p, { pid: d, stream_type: m, file_position: n, payload_unit_start_indicator: o, continuity_conunter: h, random_access_indicator: u.random_access_indicator }) } ;(i += 188), 204 === this.ts_packet_size_ && (i += 16) } return this.dispatchAudioVideoMediaSegment(), i }), (t.prototype.parseAdaptationField = function (e, t, i) { var n = new Uint8Array(e, t, i), a = n[0] return a > 0 ? a > 183 ? (r.a.w(this.TAG, "Illegal adaptation_field_length: " + a), {}) : { discontinuity_indicator: (128 & n[1]) >>> 7, random_access_indicator: (64 & n[1]) >>> 6, elementary_stream_priority_indicator: (32 & n[1]) >>> 5 } : {} }), (t.prototype.handleSectionSlice = function (e, t, i, n) { var a = new Uint8Array(e, t, i), r = this.section_slice_queues_[n.pid] if (n.payload_unit_start_indicator) { var s = a[0] if (null != r && 0 !== r.total_length) { var o = new Uint8Array(e, t + 1, Math.min(i, s)) r.slices.push(o), (r.total_length += o.byteLength), r.total_length === r.expected_length ? this.emitSectionSlices(r, n) : this.clearSlices(r, n) } for (var d = 1 + s; d < a.byteLength; ) { if (255 === a[d + 0]) break var _ = ((15 & a[d + 1]) << 8) | a[d + 2] ;(this.section_slice_queues_[n.pid] = new C()), ((r = this.section_slice_queues_[n.pid]).expected_length = _ + 3), (r.file_position = n.file_position), (r.random_access_indicator = n.random_access_indicator) o = new Uint8Array(e, t + d, Math.min(i - d, r.expected_length - r.total_length)) r.slices.push(o), (r.total_length += o.byteLength), r.total_length === r.expected_length ? this.emitSectionSlices(r, n) : r.total_length >= r.expected_length && this.clearSlices(r, n), (d += o.byteLength) } } else if (null != r && 0 !== r.total_length) { o = new Uint8Array(e, t, Math.min(i, r.expected_length - r.total_length)) r.slices.push(o), (r.total_length += o.byteLength), r.total_length === r.expected_length ? this.emitSectionSlices(r, n) : r.total_length >= r.expected_length && this.clearSlices(r, n) } }), (t.prototype.handlePESSlice = function (e, t, i, n) { var a = new Uint8Array(e, t, i), s = (a[0] << 16) | (a[1] << 8) | a[2], o = (a[3], (a[4] << 8) | a[5]) if (n.payload_unit_start_indicator) { if (1 !== s) return void r.a.e(this.TAG, "handlePESSlice: packet_start_code_prefix should be 1 but with value " + s) var d = this.pes_slice_queues_[n.pid] d && (0 === d.expected_length || d.expected_length === d.total_length ? this.emitPESSlices(d, n) : this.clearSlices(d, n)), (this.pes_slice_queues_[n.pid] = new C()), (this.pes_slice_queues_[n.pid].file_position = n.file_position), (this.pes_slice_queues_[n.pid].random_access_indicator = n.random_access_indicator) } if (null != this.pes_slice_queues_[n.pid]) { var _ = this.pes_slice_queues_[n.pid] _.slices.push(a), n.payload_unit_start_indicator && (_.expected_length = 0 === o ? 0 : o + 6), (_.total_length += a.byteLength), _.expected_length > 0 && _.expected_length === _.total_length ? this.emitPESSlices(_, n) : _.expected_length > 0 && _.expected_length < _.total_length && this.clearSlices(_, n) } }), (t.prototype.emitSectionSlices = function (e, t) { for (var i = new Uint8Array(e.total_length), n = 0, a = 0; n < e.slices.length; n++) { var r = e.slices[n] i.set(r, a), (a += r.byteLength) } ;(e.slices = []), (e.expected_length = -1), (e.total_length = 0) var s = new D() ;(s.pid = t.pid), (s.data = i), (s.file_position = e.file_position), (s.random_access_indicator = e.random_access_indicator), this.parseSection(s) }), (t.prototype.emitPESSlices = function (e, t) { for (var i = new Uint8Array(e.total_length), n = 0, a = 0; n < e.slices.length; n++) { var r = e.slices[n] i.set(r, a), (a += r.byteLength) } ;(e.slices = []), (e.expected_length = -1), (e.total_length = 0) var s = new k() ;(s.pid = t.pid), (s.data = i), (s.stream_type = t.stream_type), (s.file_position = e.file_position), (s.random_access_indicator = e.random_access_indicator), this.parsePES(s) }), (t.prototype.clearSlices = function (e, t) { ;(e.slices = []), (e.expected_length = -1), (e.total_length = 0) }), (t.prototype.parseSection = function (e) { var t = e.data, i = e.pid 0 === i ? this.parsePAT(t) : i === this.current_pmt_pid_ ? this.parsePMT(t) : null != this.pmt_ && this.pmt_.scte_35_pids[i] && this.parseSCTE35(t) }), (t.prototype.parsePES = function (e) { var t = e.data, i = (t[0] << 16) | (t[1] << 8) | t[2], n = t[3], a = (t[4] << 8) | t[5] if (1 === i) { if (188 !== n && 190 !== n && 191 !== n && 240 !== n && 241 !== n && 255 !== n && 242 !== n && 248 !== n) { t[6] var s = (192 & t[7]) >>> 6, o = t[8], d = void 0, _ = void 0 ;(2 !== s && 3 !== s) || ((d = 536870912 * (14 & t[9]) + 4194304 * (255 & t[10]) + 16384 * (254 & t[11]) + 128 * (255 & t[12]) + (254 & t[13]) / 2), (_ = 3 === s ? 536870912 * (14 & t[14]) + 4194304 * (255 & t[15]) + 16384 * (254 & t[16]) + 128 * (255 & t[17]) + (254 & t[18]) / 2 : d)) var h = 9 + o, c = void 0 if (0 !== a) { if (a < 3 + o) return void r.a.v(this.TAG, "Malformed PES: PES_packet_length < 3 + PES_header_data_length") c = a - 3 - o } else c = t.byteLength - h var u = t.subarray(h, h + c) switch (e.stream_type) { case E.kMPEG1Audio: case E.kMPEG2Audio: this.parseMP3Payload(u, d) break case E.kPESPrivateData: this.pmt_.common_pids.opus === e.pid ? this.parseOpusPayload(u, d) : this.pmt_.common_pids.ac3 === e.pid ? this.parseAC3Payload(u, d) : this.pmt_.smpte2038_pids[e.pid] ? this.parseSMPTE2038MetadataPayload(u, d, _, e.pid, n) : this.parsePESPrivateDataPayload(u, d, _, e.pid, n) break case E.kADTSAAC: this.parseADTSAACPayload(u, d) break case E.kLOASAAC: this.parseLOASAACPayload(u, d) break case E.kAC3: this.parseAC3Payload(u, d) break case E.kID3: this.parseTimedID3MetadataPayload(u, d, _, e.pid, n) break case E.kH264: this.parseH264Payload(u, d, _, e.file_position, e.random_access_indicator) break case E.kH265: this.parseH265Payload(u, d, _, e.file_position, e.random_access_indicator) } } else if ( (188 === n || 191 === n || 240 === n || 241 === n || 255 === n || 242 === n || 248 === n) && e.stream_type === E.kPESPrivateData ) { ;(h = 6), (c = void 0) c = 0 !== a ? a : t.byteLength - h u = t.subarray(h, h + c) this.parsePESPrivateDataPayload(u, void 0, void 0, e.pid, n) } } else r.a.e(this.TAG, "parsePES: packet_start_code_prefix should be 1 but with value " + i) }), (t.prototype.parsePAT = function (e) { var t = e[0] if (0 === t) { var i = ((15 & e[1]) << 8) | e[2], n = (e[3], e[4], (62 & e[5]) >>> 1), a = 1 & e[5], s = e[6], o = (e[7], null) if (1 === a && 0 === s) (o = new T()).version_number = n else if (null == (o = this.pat_)) return for (var d = i - 5 - 4, _ = -1, h = -1, c = 8; c < 8 + d; c += 4) { var u = (e[c] << 8) | e[c + 1], l = ((31 & e[c + 2]) << 8) | e[c + 3] 0 === u ? (o.network_pid = l) : ((o.program_pmt_pid[u] = l), -1 === _ && (_ = u), -1 === h && (h = l)) } 1 === a && 0 === s && (null == this.pat_ && r.a.v(this.TAG, "Parsed first PAT: " + JSON.stringify(o)), (this.pat_ = o), (this.current_program_ = _), (this.current_pmt_pid_ = h)) } else r.a.e(this.TAG, "parsePAT: table_id " + t + " is not corresponded to PAT!") }), (t.prototype.parsePMT = function (e) { var t = e[0] if (2 === t) { var i = ((15 & e[1]) << 8) | e[2], n = (e[3] << 8) | e[4], a = (62 & e[5]) >>> 1, s = 1 & e[5], o = e[6], d = (e[7], null) if (1 === s && 0 === o) ((d = new w()).program_number = n), (d.version_number = a), (this.program_pmt_map_[n] = d) else if (null == (d = this.program_pmt_map_[n])) return e[8], e[9] for (var _ = ((15 & e[10]) << 8) | e[11], h = 12 + _, c = i - 9 - _ - 4, u = h; u < h + c; ) { var l = e[u], f = ((31 & e[u + 1]) << 8) | e[u + 2], p = ((15 & e[u + 3]) << 8) | e[u + 4] d.pid_stream_type[f] = l var m = d.common_pids.h264 || d.common_pids.h265, g = d.common_pids.adts_aac || d.common_pids.loas_aac || d.common_pids.ac3 || d.common_pids.opus || d.common_pids.mp3 if (l !== E.kH264 || m) if (l !== E.kH265 || m) if (l !== E.kADTSAAC || g) if (l !== E.kLOASAAC || g) if (l !== E.kAC3 || g) if ((l !== E.kMPEG1Audio && l !== E.kMPEG2Audio) || g) if (l === E.kPESPrivateData) { if (((d.pes_private_data_pids[f] = !0), p > 0)) { for (var v = u + 5; v < u + 5 + p; ) { var y = e[v + 0], b = e[v + 1] if (5 === y) { var S = String.fromCharCode.apply(String, Array.from(e.subarray(v + 2, v + 2 + b))) "VANC" === S ? (d.smpte2038_pids[f] = !0) : "Opus" === S && (d.common_pids.opus = f) } else if (127 === y && f === d.common_pids.opus) { var A = null if ((128 === e[v + 2] && (A = e[v + 3]), null == A)) { r.a.e(this.TAG, "Not Supported Opus channel count.") continue } var R = { codec: "opus", channel_count: 0 == (15 & A) ? 2 : 15 & A, channel_config_code: A, sample_rate: 48e3 }, T = { codec: "opus", meta: R } 0 == this.audio_init_segment_dispatched_ ? ((this.audio_metadata_ = R), this.dispatchAudioInitSegment(T)) : this.detectAudioMetadataChange(T) && (this.dispatchAudioMediaSegment(), this.dispatchAudioInitSegment(T)) } v += 2 + b } var L = e.subarray(u + 5, u + 5 + p) this.dispatchPESPrivateDataDescriptor(f, l, L) } } else l === E.kID3 ? (d.timed_id3_pids[f] = !0) : l === E.kSCTE35 && (d.scte_35_pids[f] = !0) else d.common_pids.mp3 = f else d.common_pids.ac3 = f else d.common_pids.loas_aac = f else d.common_pids.adts_aac = f else d.common_pids.h265 = f else d.common_pids.h264 = f u += 5 + p } n === this.current_program_ && (null == this.pmt_ && r.a.v(this.TAG, "Parsed first PMT: " + JSON.stringify(d)), (this.pmt_ = d), (d.common_pids.h264 || d.common_pids.h265) && (this.has_video_ = !0), (d.common_pids.adts_aac || d.common_pids.loas_aac || d.common_pids.ac3 || d.common_pids.opus || d.common_pids.mp3) && (this.has_audio_ = !0)) } else r.a.e(this.TAG, "parsePMT: table_id " + t + " is not corresponded to PMT!") }), (t.prototype.parseSCTE35 = function (e) { var t = oe(e) if (null != t.pts) { var i = Math.floor(t.pts / this.timescale_) t.pts = i } else t.nearest_pts = this.aac_last_sample_pts_ this.onSCTE35Metadata && this.onSCTE35Metadata(t) }), (t.prototype.parseH264Payload = function (e, t, i, n, a) { for (var s = new M(e), o = null, d = [], _ = 0, h = !1; null != (o = s.readNextNaluPayload()); ) { var c = new P(o) if (c.type === L.kSliceSPS) { var u = p.parseSPS(o.data) this.video_init_segment_dispatched_ ? !0 === this.detectVideoMetadataChange(c, u) && (r.a.v(this.TAG, "H264: Critical h264 metadata has been changed, attempt to re-generate InitSegment"), (this.video_metadata_changed_ = !0), (this.video_metadata_ = { vps: void 0, sps: c, pps: void 0, details: u })) : ((this.video_metadata_.sps = c), (this.video_metadata_.details = u)) } else c.type === L.kSlicePPS ? (this.video_init_segment_dispatched_ && !this.video_metadata_changed_) || ((this.video_metadata_.pps = c), this.video_metadata_.sps && this.video_metadata_.pps && (this.video_metadata_changed_ && this.dispatchVideoMediaSegment(), this.dispatchVideoInitSegment())) : (c.type === L.kSliceIDR || (c.type === L.kSliceNonIDR && 1 === a)) && (h = !0) this.video_init_segment_dispatched_ && (d.push(c), (_ += c.data.byteLength)) } var l = Math.floor(t / this.timescale_), f = Math.floor(i / this.timescale_) if (d.length) { var m = this.video_track_, g = { units: d, length: _, isKeyframe: h, dts: f, pts: l, cts: l - f, file_position: n } m.samples.push(g), (m.length += _) } }), (t.prototype.parseH265Payload = function (e, t, i, n, a) { for (var s = new he(e), o = null, d = [], _ = 0, h = !1; null != (o = s.readNextNaluPayload()); ) { var c = new _e(o) if (c.type === X.kSliceVPS) { if (!this.video_init_segment_dispatched_) { var u = g.parseVPS(o.data) ;(this.video_metadata_.vps = c), (this.video_metadata_.details = ye(ye({}, this.video_metadata_.details), u)) } } else if (c.type === X.kSliceSPS) { u = g.parseSPS(o.data) this.video_init_segment_dispatched_ ? !0 === this.detectVideoMetadataChange(c, u) && (r.a.v(this.TAG, "H265: Critical h265 metadata has been changed, attempt to re-generate InitSegment"), (this.video_metadata_changed_ = !0), (this.video_metadata_ = { vps: void 0, sps: c, pps: void 0, details: u })) : ((this.video_metadata_.sps = c), (this.video_metadata_.details = ye(ye({}, this.video_metadata_.details), u))) } else if (c.type === X.kSlicePPS) { if (!this.video_init_segment_dispatched_ || this.video_metadata_changed_) { u = g.parsePPS(o.data) ;(this.video_metadata_.pps = c), (this.video_metadata_.details = ye(ye({}, this.video_metadata_.details), u)), this.video_metadata_.vps && this.video_metadata_.sps && this.video_metadata_.pps && (this.video_metadata_changed_ && this.dispatchVideoMediaSegment(), this.dispatchVideoInitSegment()) } } else (c.type !== X.kSliceIDR_W_RADL && c.type !== X.kSliceIDR_N_LP && c.type !== X.kSliceCRA_NUT) || (h = !0) this.video_init_segment_dispatched_ && (d.push(c), (_ += c.data.byteLength)) } var l = Math.floor(t / this.timescale_), f = Math.floor(i / this.timescale_) if (d.length) { var p = this.video_track_, m = { units: d, length: _, isKeyframe: h, dts: f, pts: l, cts: l - f, file_position: n } p.samples.push(m), (p.length += _) } }), (t.prototype.detectVideoMetadataChange = function (e, t) { if (t.codec_mimetype !== this.video_metadata_.details.codec_mimetype) return ( r.a.v(this.TAG, "Video: Codec mimeType changed from " + this.video_metadata_.details.codec_mimetype + " to " + t.codec_mimetype), !0 ) if ( t.codec_size.width !== this.video_metadata_.details.codec_size.width || t.codec_size.height !== this.video_metadata_.details.codec_size.height ) { var i = this.video_metadata_.details.codec_size, n = t.codec_size return r.a.v(this.TAG, "Video: Coded Resolution changed from " + i.width + "x" + i.height + " to " + n.width + "x" + n.height), !0 } return ( t.present_size.width !== this.video_metadata_.details.present_size.width && (r.a.v( this.TAG, "Video: Present resolution width changed from " + this.video_metadata_.details.present_size.width + " to " + t.present_size.width ), !0) ) }), (t.prototype.isInitSegmentDispatched = function () { return this.has_video_ && this.has_audio_ ? this.video_init_segment_dispatched_ && this.audio_init_segment_dispatched_ : this.has_video_ && !this.has_audio_ ? this.video_init_segment_dispatched_ : !(this.has_video_ || !this.has_audio_) && this.audio_init_segment_dispatched_ }), (t.prototype.dispatchVideoInitSegment = function () { var e = this.video_metadata_.details, t = { type: "video" } ;(t.id = this.video_track_.id), (t.timescale = 1e3), (t.duration = this.duration_), (t.codecWidth = e.codec_size.width), (t.codecHeight = e.codec_size.height), (t.presentWidth = e.present_size.width), (t.presentHeight = e.present_size.height), (t.profile = e.profile_string), (t.level = e.level_string), (t.bitDepth = e.bit_depth), (t.chromaFormat = e.chroma_format), (t.sarRatio = e.sar_ratio), (t.frameRate = e.frame_rate) var i = t.frameRate.fps_den, n = t.frameRate.fps_num if (((t.refSampleDuration = (i / n) * 1e3), (t.codec = e.codec_mimetype), this.video_metadata_.vps)) { var a = this.video_metadata_.vps.data.subarray(4), s = this.video_metadata_.sps.data.subarray(4), o = this.video_metadata_.pps.data.subarray(4), d = new ce(a, s, o, e) ;(t.hvcc = d.getData()), 0 == this.video_init_segment_dispatched_ && r.a.v(this.TAG, "Generated first HEVCDecoderConfigurationRecord for mimeType: " + t.codec) } else { ;(s = this.video_metadata_.sps.data.subarray(4)), (o = this.video_metadata_.pps.data.subarray(4)) var _ = new x(s, o, e) ;(t.avcc = _.getData()), 0 == this.video_init_segment_dispatched_ && r.a.v(this.TAG, "Generated first AVCDecoderConfigurationRecord for mimeType: " + t.codec) } this.onTrackMetadata("video", t), (this.video_init_segment_dispatched_ = !0), (this.video_metadata_changed_ = !1) var h = this.media_info_ ;(h.hasVideo = !0), (h.width = t.codecWidth), (h.height = t.codecHeight), (h.fps = t.frameRate.fps), (h.profile = t.profile), (h.level = t.level), (h.refFrames = e.ref_frames), (h.chromaFormat = e.chroma_format_string), (h.sarNum = t.sarRatio.width), (h.sarDen = t.sarRatio.height), (h.videoCodec = t.codec), h.hasAudio && h.audioCodec ? (h.mimeType = 'video/mp2t; codecs="' + h.videoCodec + "," + h.audioCodec + '"') : (h.mimeType = 'video/mp2t; codecs="' + h.videoCodec + '"'), h.isComplete() && this.onMediaInfo(h) }), (t.prototype.dispatchVideoMediaSegment = function () { this.isInitSegmentDispatched() && this.video_track_.length && this.onDataAvailable(null, this.video_track_) }), (t.prototype.dispatchAudioMediaSegment = function () { this.isInitSegmentDispatched() && this.audio_track_.length && this.onDataAvailable(this.audio_track_, null) }), (t.prototype.dispatchAudioVideoMediaSegment = function () { this.isInitSegmentDispatched() && (this.audio_track_.length || this.video_track_.length) && this.onDataAvailable(this.audio_track_, this.video_track_) }), (t.prototype.parseADTSAACPayload = function (e, t) { if (!this.has_video_ || this.video_init_segment_dispatched_) { if (this.aac_last_incomplete_data_) { var i = new Uint8Array(e.byteLength + this.aac_last_incomplete_data_.byteLength) i.set(this.aac_last_incomplete_data_, 0), i.set(e, this.aac_last_incomplete_data_.byteLength), (e = i) } var n, a if ((null != t && (a = t / this.timescale_), "aac" === this.audio_metadata_.codec)) { if (null == t && null != this.aac_last_sample_pts_) (n = (1024 / this.audio_metadata_.sampling_frequency) * 1e3), (a = this.aac_last_sample_pts_ + n) else if (null == t) return void r.a.w(this.TAG, "AAC: Unknown pts") if (this.aac_last_incomplete_data_ && this.aac_last_sample_pts_) { n = (1024 / this.audio_metadata_.sampling_frequency) * 1e3 var s = this.aac_last_sample_pts_ + n Math.abs(s - a) > 1 && (r.a.w(this.TAG, "AAC: Detected pts overlapped, expected: " + s + "ms, PES pts: " + a + "ms"), (a = s)) } } for (var o, d = new z(e), _ = null, h = a; null != (_ = d.readNextAACFrame()); ) { n = (1024 / _.sampling_frequency) * 1e3 var c = { codec: "aac", data: _ } 0 == this.audio_init_segment_dispatched_ ? ((this.audio_metadata_ = { codec: "aac", audio_object_type: _.audio_object_type, sampling_freq_index: _.sampling_freq_index, sampling_frequency: _.sampling_frequency, channel_config: _.channel_config }), this.dispatchAudioInitSegment(c)) : this.detectAudioMetadataChange(c) && (this.dispatchAudioMediaSegment(), this.dispatchAudioInitSegment(c)), (o = h) var u = Math.floor(h), l = { unit: _.data, length: _.data.byteLength, pts: u, dts: u } this.audio_track_.samples.push(l), (this.audio_track_.length += _.data.byteLength), (h += n) } d.hasIncompleteData() && (this.aac_last_incomplete_data_ = d.getIncompleteData()), o && (this.aac_last_sample_pts_ = o) } }), (t.prototype.parseLOASAACPayload = function (e, t) { var i if (!this.has_video_ || this.video_init_segment_dispatched_) { if (this.aac_last_incomplete_data_) { var n = new Uint8Array(e.byteLength + this.aac_last_incomplete_data_.byteLength) n.set(this.aac_last_incomplete_data_, 0), n.set(e, this.aac_last_incomplete_data_.byteLength), (e = n) } var a, s if ((null != t && (s = t / this.timescale_), "aac" === this.audio_metadata_.codec)) { if (null == t && null != this.aac_last_sample_pts_) (a = (1024 / this.audio_metadata_.sampling_frequency) * 1e3), (s = this.aac_last_sample_pts_ + a) else if (null == t) return void r.a.w(this.TAG, "AAC: Unknown pts") if (this.aac_last_incomplete_data_ && this.aac_last_sample_pts_) { a = (1024 / this.audio_metadata_.sampling_frequency) * 1e3 var o = this.aac_last_sample_pts_ + a Math.abs(o - s) > 1 && (r.a.w(this.TAG, "AAC: Detected pts overlapped, expected: " + o + "ms, PES pts: " + s + "ms"), (s = o)) } } for ( var d, _ = new H(e), h = null, c = s; null != (h = _.readNextAACFrame(null !== (i = this.loas_previous_frame) && void 0 !== i ? i : void 0)); ) { ;(this.loas_previous_frame = h), (a = (1024 / h.sampling_frequency) * 1e3) var u = { codec: "aac", data: h } 0 == this.audio_init_segment_dispatched_ ? ((this.audio_metadata_ = { codec: "aac", audio_object_type: h.audio_object_type, sampling_freq_index: h.sampling_freq_index, sampling_frequency: h.sampling_frequency, channel_config: h.channel_config }), this.dispatchAudioInitSegment(u)) : this.detectAudioMetadataChange(u) && (this.dispatchAudioMediaSegment(), this.dispatchAudioInitSegment(u)), (d = c) var l = Math.floor(c), f = { unit: h.data, length: h.data.byteLength, pts: l, dts: l } this.audio_track_.samples.push(f), (this.audio_track_.length += h.data.byteLength), (c += a) } _.hasIncompleteData() && (this.aac_last_incomplete_data_ = _.getIncompleteData()), d && (this.aac_last_sample_pts_ = d) } }), (t.prototype.parseAC3Payload = function (e, t) { if (!this.has_video_ || this.video_init_segment_dispatched_) { var i, n if ((null != t && (n = t / this.timescale_), "ac-3" === this.audio_metadata_.codec)) if (null == t && null != this.aac_last_sample_pts_) (i = (1536 / this.audio_metadata_.sampling_frequency) * 1e3), (n = this.aac_last_sample_pts_ + i) else if (null == t) return void r.a.w(this.TAG, "Opus: Unknown pts") for (var a, s = new me(e), o = null, d = n; null != (o = s.readNextAC3Frame()); ) { i = (1536 / o.sampling_frequency) * 1e3 var _ = { codec: "ac-3", data: o } 0 == this.audio_init_segment_dispatched_ ? ((this.audio_metadata_ = { codec: "ac-3", sampling_frequency: o.sampling_frequency, bit_stream_identification: o.bit_stream_identification, bit_stream_mode: o.bit_stream_mode, low_frequency_effects_channel_on: o.low_frequency_effects_channel_on, channel_mode: o.channel_mode }), console.log(JSON.stringify(this.audio_metadata_)), this.dispatchAudioInitSegment(_)) : this.detectAudioMetadataChange(_) && (this.dispatchAudioMediaSegment(), this.dispatchAudioInitSegment(_)), (a = d) var h = Math.floor(d), c = { unit: o.data, length: o.data.byteLength, pts: h, dts: h } this.audio_track_.samples.push(c), (this.audio_track_.length += o.data.byteLength), (d += i) } a && (this.aac_last_sample_pts_ = a) } }), (t.prototype.parseOpusPayload = function (e, t) { if (!this.has_video_ || this.video_init_segment_dispatched_) { var i, n if ((null != t && (n = t / this.timescale_), "opus" === this.audio_metadata_.codec)) if (null == t && null != this.aac_last_sample_pts_) (i = 20), (n = this.aac_last_sample_pts_ + i) else if (null == t) return void r.a.w(this.TAG, "Opus: Unknown pts") for (var a, s = n, o = 0; o < e.length; ) { i = 20 for (var d = 0 != (16 & e[o + 1]), _ = 0 != (8 & e[o + 1]), h = o + 2, c = 0; 255 === e[h]; ) (c += 255), (h += 1) ;(c += e[h]), (h += 1), (h += d ? 2 : 0), (h += _ ? 2 : 0), (a = s) var u = Math.floor(s), l = e.slice(h, h + c), f = { unit: l, length: l.byteLength, pts: u, dts: u } this.audio_track_.samples.push(f), (this.audio_track_.length += l.byteLength), (s += i), (o = h + c) } a && (this.aac_last_sample_pts_ = a) } }), (t.prototype.parseMP3Payload = function (e, t) { if (!this.has_video_ || this.video_init_segment_dispatched_) { var i = [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, -1], n = [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, -1], a = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1], r = (e[1] >>> 3) & 3, s = (6 & e[1]) >> 1, o = (240 & e[2]) >>> 4, d = (12 & e[2]) >>> 2, _ = 3 !== ((e[3] >>> 6) & 3) ? 2 : 1, h = 0, c = 34 switch (r) { case 0: h = [11025, 12e3, 8e3, 0][d] break case 2: h = [22050, 24e3, 16e3, 0][d] break case 3: h = [44100, 48e3, 32e3, 0][d] } switch (s) { case 1: ;(c = 34), o < a.length && a[o] break case 2: ;(c = 33), o < n.length && n[o] break case 3: ;(c = 32), o < i.length && i[o] } var u = new le() ;(u.object_type = c), (u.sample_rate = h), (u.channel_count = _), (u.data = e) var l = { codec: "mp3", data: u } 0 == this.audio_init_segment_dispatched_ ? ((this.audio_metadata_ = { codec: "mp3", object_type: c, sample_rate: h, channel_count: _ }), this.dispatchAudioInitSegment(l)) : this.detectAudioMetadataChange(l) && (this.dispatchAudioMediaSegment(), this.dispatchAudioInitSegment(l)) var f = { unit: e, length: e.byteLength, pts: t / this.timescale_, dts: t / this.timescale_ } this.audio_track_.samples.push(f), (this.audio_track_.length += e.byteLength) } }), (t.prototype.detectAudioMetadataChange = function (e) { if (e.codec !== this.audio_metadata_.codec) return r.a.v(this.TAG, "Audio: Audio Codecs changed from " + this.audio_metadata_.codec + " to " + e.codec), !0 if ("aac" === e.codec && "aac" === this.audio_metadata_.codec) { if ((t = e.data).audio_object_type !== this.audio_metadata_.audio_object_type) return ( r.a.v(this.TAG, "AAC: AudioObjectType changed from " + this.audio_metadata_.audio_object_type + " to " + t.audio_object_type), !0 ) if (t.sampling_freq_index !== this.audio_metadata_.sampling_freq_index) return ( r.a.v( this.TAG, "AAC: SamplingFrequencyIndex changed from " + this.audio_metadata_.sampling_freq_index + " to " + t.sampling_freq_index ), !0 ) if (t.channel_config !== this.audio_metadata_.channel_config) return ( r.a.v(this.TAG, "AAC: Channel configuration changed from " + this.audio_metadata_.channel_config + " to " + t.channel_config), !0 ) } else if ("ac-3" === e.codec && "ac-3" === this.audio_metadata_.codec) { var t if ((t = e.data).sampling_frequency !== this.audio_metadata_.sampling_frequency) return ( r.a.v( this.TAG, "AC3: Sampling Frequency changed from " + this.audio_metadata_.sampling_frequency + " to " + t.sampling_frequency ), !0 ) if (t.bit_stream_identification !== this.audio_metadata_.bit_stream_identification) return ( r.a.v( this.TAG, "AC3: Bit Stream Identification changed from " + this.audio_metadata_.bit_stream_identification + " to " + t.bit_stream_identification ), !0 ) if (t.bit_stream_mode !== this.audio_metadata_.bit_stream_mode) return r.a.v(this.TAG, "AC3: BitStream Mode changed from " + this.audio_metadata_.bit_stream_mode + " to " + t.bit_stream_mode), !0 if (t.channel_mode !== this.audio_metadata_.channel_mode) return r.a.v(this.TAG, "AC3: Channel Mode changed from " + this.audio_metadata_.channel_mode + " to " + t.channel_mode), !0 if (t.low_frequency_effects_channel_on !== this.audio_metadata_.low_frequency_effects_channel_on) return ( r.a.v( this.TAG, "AC3: Low Frequency Effects Channel On changed from " + this.audio_metadata_.low_frequency_effects_channel_on + " to " + t.low_frequency_effects_channel_on ), !0 ) } else if ("opus" === e.codec && "opus" === this.audio_metadata_.codec) { if ((i = e.meta).sample_rate !== this.audio_metadata_.sample_rate) return r.a.v(this.TAG, "Opus: SamplingFrequencyIndex changed from " + this.audio_metadata_.sample_rate + " to " + i.sample_rate), !0 if (i.channel_count !== this.audio_metadata_.channel_count) return r.a.v(this.TAG, "Opus: Channel count changed from " + this.audio_metadata_.channel_count + " to " + i.channel_count), !0 } else if ("mp3" === e.codec && "mp3" === this.audio_metadata_.codec) { var i if ((i = e.data).object_type !== this.audio_metadata_.object_type) return r.a.v(this.TAG, "MP3: AudioObjectType changed from " + this.audio_metadata_.object_type + " to " + i.object_type), !0 if (i.sample_rate !== this.audio_metadata_.sample_rate) return r.a.v(this.TAG, "MP3: SamplingFrequencyIndex changed from " + this.audio_metadata_.sample_rate + " to " + i.sample_rate), !0 if (i.channel_count !== this.audio_metadata_.channel_count) return r.a.v(this.TAG, "MP3: Channel count changed from " + this.audio_metadata_.channel_count + " to " + i.channel_count), !0 } return !1 }), (t.prototype.dispatchAudioInitSegment = function (e) { var t = { type: "audio" } if (((t.id = this.audio_track_.id), (t.timescale = 1e3), (t.duration = this.duration_), "aac" === this.audio_metadata_.codec)) { var i = "aac" === e.codec ? e.data : null, n = new q(i) ;(t.audioSampleRate = n.sampling_rate), (t.channelCount = n.channel_count), (t.codec = n.codec_mimetype), (t.originalCodec = n.original_codec_mimetype), (t.config = n.config), (t.refSampleDuration = (1024 / t.audioSampleRate) * t.timescale) } else if ("ac-3" === this.audio_metadata_.codec) { var a = "ac-3" === e.codec ? e.data : null, s = new ge(a) ;(t.audioSampleRate = s.sampling_rate), (t.channelCount = s.channel_count), (t.codec = s.codec_mimetype), (t.originalCodec = s.original_codec_mimetype), (t.config = s.config), (t.refSampleDuration = (1536 / t.audioSampleRate) * t.timescale) } else "opus" === this.audio_metadata_.codec ? ((t.audioSampleRate = this.audio_metadata_.sample_rate), (t.channelCount = this.audio_metadata_.channel_count), (t.channelConfigCode = this.audio_metadata_.channel_config_code), (t.codec = "opus"), (t.originalCodec = "opus"), (t.config = void 0), (t.refSampleDuration = 20)) : "mp3" === this.audio_metadata_.codec && ((t.audioSampleRate = this.audio_metadata_.sample_rate), (t.channelCount = this.audio_metadata_.channel_count), (t.codec = "mp3"), (t.originalCodec = "mp3"), (t.config = void 0)) 0 == this.audio_init_segment_dispatched_ && r.a.v(this.TAG, "Generated first AudioSpecificConfig for mimeType: " + t.codec), this.onTrackMetadata("audio", t), (this.audio_init_segment_dispatched_ = !0), (this.video_metadata_changed_ = !1) var o = this.media_info_ ;(o.hasAudio = !0), (o.audioCodec = t.originalCodec), (o.audioSampleRate = t.audioSampleRate), (o.audioChannelCount = t.channelCount), o.hasVideo && o.videoCodec ? (o.mimeType = 'video/mp2t; codecs="' + o.videoCodec + "," + o.audioCodec + '"') : (o.mimeType = 'video/mp2t; codecs="' + o.audioCodec + '"'), o.isComplete() && this.onMediaInfo(o) }), (t.prototype.dispatchPESPrivateDataDescriptor = function (e, t, i) { var n = new W() ;(n.pid = e), (n.stream_type = t), (n.descriptor = i), this.onPESPrivateDataDescriptor && this.onPESPrivateDataDescriptor(n) }), (t.prototype.parsePESPrivateDataPayload = function (e, t, i, n, a) { var r = new K() if (((r.pid = n), (r.stream_id = a), (r.len = e.byteLength), (r.data = e), null != t)) { var s = Math.floor(t / this.timescale_) r.pts = s } else r.nearest_pts = this.aac_last_sample_pts_ if (null != i) { var o = Math.floor(i / this.timescale_) r.dts = o } this.onPESPrivateData && this.onPESPrivateData(r) }), (t.prototype.parseTimedID3MetadataPayload = function (e, t, i, n, a) { var r = new K() if (((r.pid = n), (r.stream_id = a), (r.len = e.byteLength), (r.data = e), null != t)) { var s = Math.floor(t / this.timescale_) r.pts = s } if (null != i) { var o = Math.floor(i / this.timescale_) r.dts = o } this.onTimedID3Metadata && this.onTimedID3Metadata(r) }), (t.prototype.parseSMPTE2038MetadataPayload = function (e, t, i, n, a) { var r = new ue() if (((r.pid = n), (r.stream_id = a), (r.len = e.byteLength), (r.data = e), null != t)) { var s = Math.floor(t / this.timescale_) r.pts = s } if (((r.nearest_pts = this.aac_last_sample_pts_), null != i)) { var o = Math.floor(i / this.timescale_) r.dts = o } ;(r.ancillaries = (function (e) { for (var t = new f(e), i = 0, n = []; ; ) { if (((i += 6), 0 !== t.readBits(6))) break var a = t.readBool() i += 1 var r = t.readBits(11) i += 11 var s = t.readBits(12) i += 12 var o = 255 & t.readBits(10) i += 10 var d = 255 & t.readBits(10) i += 10 var _ = 255 & t.readBits(10) i += 10 for (var h = new Uint8Array(_), c = 0; c < _; c++) { var u = 255 & t.readBits(10) ;(i += 10), (h[c] = u) } t.readBits(10) i += 10 var l = "User Defined" 65 === o ? 7 === d && (l = "SCTE-104") : 95 === o ? 220 === d ? (l = "ARIB STD-B37 (1SEG)") : 221 === d ? (l = "ARIB STD-B37 (ANALOG)") : 222 === d ? (l = "ARIB STD-B37 (SD)") : 223 === d && (l = "ARIB STD-B37 (HD)") : 97 === o && (1 === d ? (l = "EIA-708") : 2 === d && (l = "EIA-608")), n.push({ yc_indicator: a, line_number: r, horizontal_offset: s, did: o, sdid: d, user_data: h, description: l, information: {} }), t.readBits(8 - ((i - Math.floor(i / 8)) % 8)), (i += (8 - (i - Math.floor(i / 8))) % 8) } return t.destroy(), (t = null), n })(e)), this.onSMPTE2038Metadata && this.onSMPTE2038Metadata(r) }), t ) })(R), Se = function () { for (var e = 0, t = 0, i = arguments.length; t < i; t++) e += arguments[t].length var n = Array(e), a = 0 for (t = 0; t < i; t++) for (var r = arguments[t], s = 0, o = r.length; s < o; s++, a++) n[a] = r[s] return n }, Ee = (function () { function e() {} return ( (e.init = function () { for (var t in ((e.types = { avc1: [], avcC: [], btrt: [], dinf: [], dref: [], esds: [], ftyp: [], hdlr: [], hvc1: [], hvcC: [], mdat: [], mdhd: [], mdia: [], mfhd: [], minf: [], moof: [], moov: [], mp4a: [], mvex: [], mvhd: [], sdtp: [], stbl: [], stco: [], stsc: [], stsd: [], stsz: [], stts: [], tfdt: [], tfhd: [], traf: [], trak: [], trun: [], trex: [], tkhd: [], vmhd: [], smhd: [], ".mp3": [], Opus: [], dOps: [], "ac-3": [], dac3: [] }), e.types)) e.types.hasOwnProperty(t) && (e.types[t] = [t.charCodeAt(0), t.charCodeAt(1), t.charCodeAt(2), t.charCodeAt(3)]) var i = (e.constants = {}) ;(i.FTYP = new Uint8Array([105, 115, 111, 109, 0, 0, 0, 1, 105, 115, 111, 109, 97, 118, 99, 49])), (i.STSD_PREFIX = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1])), (i.STTS = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])), (i.STSC = i.STCO = i.STTS), (i.STSZ = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])), (i.HDLR_VIDEO = new Uint8Array([ 0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 100, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 105, 100, 101, 111, 72, 97, 110, 100, 108, 101, 114, 0 ])), (i.HDLR_AUDIO = new Uint8Array([ 0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 111, 117, 110, 100, 72, 97, 110, 100, 108, 101, 114, 0 ])), (i.DREF = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1])), (i.SMHD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])), (i.VMHD = new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0])) }), (e.box = function (e) { for (var t = 8, i = null, n = Array.prototype.slice.call(arguments, 1), a = n.length, r = 0; r < a; r++) t += n[r].byteLength ;((i = new Uint8Array(t))[0] = (t >>> 24) & 255), (i[1] = (t >>> 16) & 255), (i[2] = (t >>> 8) & 255), (i[3] = 255 & t), i.set(e, 4) var s = 8 for (r = 0; r < a; r++) i.set(n[r], s), (s += n[r].byteLength) return i }), (e.generateInitSegment = function (t) { var i = e.box(e.types.ftyp, e.constants.FTYP), n = e.moov(t), a = new Uint8Array(i.byteLength + n.byteLength) return a.set(i, 0), a.set(n, i.byteLength), a }), (e.moov = function (t) { var i = e.mvhd(t.timescale, t.duration), n = e.trak(t), a = e.mvex(t) return e.box(e.types.moov, i, n, a) }), (e.mvhd = function (t, i) { return e.box( e.types.mvhd, new Uint8Array([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (t >>> 24) & 255, (t >>> 16) & 255, (t >>> 8) & 255, 255 & t, (i >>> 24) & 255, (i >>> 16) & 255, (i >>> 8) & 255, 255 & i, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255 ]) ) }), (e.trak = function (t) { return e.box(e.types.trak, e.tkhd(t), e.mdia(t)) }), (e.tkhd = function (t) { var i = t.id, n = t.duration, a = t.presentWidth, r = t.presentHeight return e.box( e.types.tkhd, new Uint8Array([ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, (i >>> 24) & 255, (i >>> 16) & 255, (i >>> 8) & 255, 255 & i, 0, 0, 0, 0, (n >>> 24) & 255, (n >>> 16) & 255, (n >>> 8) & 255, 255 & n, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, (a >>> 8) & 255, 255 & a, 0, 0, (r >>> 8) & 255, 255 & r, 0, 0 ]) ) }), (e.mdia = function (t) { return e.box(e.types.mdia, e.mdhd(t), e.hdlr(t), e.minf(t)) }), (e.mdhd = function (t) { var i = t.timescale, n = t.duration return e.box( e.types.mdhd, new Uint8Array([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (i >>> 24) & 255, (i >>> 16) & 255, (i >>> 8) & 255, 255 & i, (n >>> 24) & 255, (n >>> 16) & 255, (n >>> 8) & 255, 255 & n, 85, 196, 0, 0 ]) ) }), (e.hdlr = function (t) { var i = null return (i = "audio" === t.type ? e.constants.HDLR_AUDIO : e.constants.HDLR_VIDEO), e.box(e.types.hdlr, i) }), (e.minf = function (t) { var i = null return ( (i = "audio" === t.type ? e.box(e.types.smhd, e.constants.SMHD) : e.box(e.types.vmhd, e.constants.VMHD)), e.box(e.types.minf, i, e.dinf(), e.stbl(t)) ) }), (e.dinf = function () { return e.box(e.types.dinf, e.box(e.types.dref, e.constants.DREF)) }), (e.stbl = function (t) { return e.box( e.types.stbl, e.stsd(t), e.box(e.types.stts, e.constants.STTS), e.box(e.types.stsc, e.constants.STSC), e.box(e.types.stsz, e.constants.STSZ), e.box(e.types.stco, e.constants.STCO) ) }), (e.stsd = function (t) { return "audio" === t.type ? "mp3" === t.codec ? e.box(e.types.stsd, e.constants.STSD_PREFIX, e.mp3(t)) : "ac-3" === t.codec ? e.box(e.types.stsd, e.constants.STSD_PREFIX, e.ac3(t)) : "opus" === t.codec ? e.box(e.types.stsd, e.constants.STSD_PREFIX, e.Opus(t)) : e.box(e.types.stsd, e.constants.STSD_PREFIX, e.mp4a(t)) : "video" === t.type && t.codec.startsWith("hvc1") ? e.box(e.types.stsd, e.constants.STSD_PREFIX, e.hvc1(t)) : e.box(e.types.stsd, e.constants.STSD_PREFIX, e.avc1(t)) }), (e.mp3 = function (t) { var i = t.channelCount, n = t.audioSampleRate, a = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, i, 0, 16, 0, 0, 0, 0, (n >>> 8) & 255, 255 & n, 0, 0]) return e.box(e.types[".mp3"], a) }), (e.mp4a = function (t) { var i = t.channelCount, n = t.audioSampleRate, a = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, i, 0, 16, 0, 0, 0, 0, (n >>> 8) & 255, 255 & n, 0, 0]) return e.box(e.types.mp4a, a, e.esds(t)) }), (e.ac3 = function (t) { var i = t.channelCount, n = t.audioSampleRate, a = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, i, 0, 16, 0, 0, 0, 0, (n >>> 8) & 255, 255 & n, 0, 0]) return e.box(e.types["ac-3"], a, e.box(e.types.dac3, new Uint8Array(t.config))) }), (e.esds = function (t) { var i = t.config || [], n = i.length, a = new Uint8Array( [0, 0, 0, 0, 3, 23 + n, 0, 1, 0, 4, 15 + n, 64, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5].concat([n]).concat(i).concat([6, 1, 2]) ) return e.box(e.types.esds, a) }), (e.Opus = function (t) { var i = t.channelCount, n = t.audioSampleRate, a = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, i, 0, 16, 0, 0, 0, 0, (n >>> 8) & 255, 255 & n, 0, 0]) return e.box(e.types.Opus, a, e.dOps(t)) }), (e.dOps = function (t) { var i = t.channelCount, n = t.channelConfigCode, a = t.audioSampleRate if (t.config) return e.box(e.types.dOps, s) var r = [] switch (n) { case 1: case 2: r = [0] break case 0: r = [255, 1, 1, 0, 1] break case 128: r = [255, 2, 0, 0, 1] break case 3: r = [1, 2, 1, 0, 2, 1] break case 4: r = [1, 2, 2, 0, 1, 2, 3] break case 5: r = [1, 3, 2, 0, 4, 1, 2, 3] break case 6: r = [1, 4, 2, 0, 4, 1, 2, 3, 5] break case 7: r = [1, 4, 2, 0, 4, 1, 2, 3, 5, 6] break case 8: r = [1, 5, 3, 0, 6, 1, 2, 3, 4, 5, 7] break case 130: r = [1, 1, 2, 0, 1] break case 131: r = [1, 1, 3, 0, 1, 2] break case 132: r = [1, 1, 4, 0, 1, 2, 3] break case 133: r = [1, 1, 5, 0, 1, 2, 3, 4] break case 134: r = [1, 1, 6, 0, 1, 2, 3, 4, 5] break case 135: r = [1, 1, 7, 0, 1, 2, 3, 4, 5, 6] break case 136: r = [1, 1, 8, 0, 1, 2, 3, 4, 5, 6, 7] } var s = new Uint8Array(Se([0, i, 0, 0, (a >>> 24) & 255, (a >>> 17) & 255, (a >>> 8) & 255, (a >>> 0) & 255, 0, 0], r)) return e.box(e.types.dOps, s) }), (e.avc1 = function (t) { var i = t.avcc, n = t.codecWidth, a = t.codecHeight, r = new Uint8Array([ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (n >>> 8) & 255, 255 & n, (a >>> 8) & 255, 255 & a, 0, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1, 10, 120, 113, 113, 47, 102, 108, 118, 46, 106, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 255, 255 ]) return e.box(e.types.avc1, r, e.box(e.types.avcC, i)) }), (e.hvc1 = function (t) { var i = t.hvcc, n = t.codecWidth, a = t.codecHeight, r = new Uint8Array([ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (n >>> 8) & 255, 255 & n, (a >>> 8) & 255, 255 & a, 0, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1, 10, 120, 113, 113, 47, 102, 108, 118, 46, 106, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 255, 255 ]) return e.box(e.types.hvc1, r, e.box(e.types.hvcC, i)) }), (e.mvex = function (t) { return e.box(e.types.mvex, e.trex(t)) }), (e.trex = function (t) { var i = t.id, n = new Uint8Array([ 0, 0, 0, 0, (i >>> 24) & 255, (i >>> 16) & 255, (i >>> 8) & 255, 255 & i, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1 ]) return e.box(e.types.trex, n) }), (e.moof = function (t, i) { return e.box(e.types.moof, e.mfhd(t.sequenceNumber), e.traf(t, i)) }), (e.mfhd = function (t) { var i = new Uint8Array([0, 0, 0, 0, (t >>> 24) & 255, (t >>> 16) & 255, (t >>> 8) & 255, 255 & t]) return e.box(e.types.mfhd, i) }), (e.traf = function (t, i) { var n = t.id, a = e.box(e.types.tfhd, new Uint8Array([0, 0, 0, 0, (n >>> 24) & 255, (n >>> 16) & 255, (n >>> 8) & 255, 255 & n])), r = e.box(e.types.tfdt, new Uint8Array([0, 0, 0, 0, (i >>> 24) & 255, (i >>> 16) & 255, (i >>> 8) & 255, 255 & i])), s = e.sdtp(t), o = e.trun(t, s.byteLength + 16 + 16 + 8 + 16 + 8 + 8) return e.box(e.types.traf, a, r, o, s) }), (e.sdtp = function (t) { for (var i = t.samples || [], n = i.length, a = new Uint8Array(4 + n), r = 0; r < n; r++) { var s = i[r].flags a[r + 4] = (s.isLeading << 6) | (s.dependsOn << 4) | (s.isDependedOn << 2) | s.hasRedundancy } return e.box(e.types.sdtp, a) }), (e.trun = function (t, i) { var n = t.samples || [], a = n.length, r = 12 + 16 * a, s = new Uint8Array(r) ;(i += 8 + r), s.set( [ 0, 0, 15, 1, (a >>> 24) & 255, (a >>> 16) & 255, (a >>> 8) & 255, 255 & a, (i >>> 24) & 255, (i >>> 16) & 255, (i >>> 8) & 255, 255 & i ], 0 ) for (var o = 0; o < a; o++) { var d = n[o].duration, _ = n[o].size, h = n[o].flags, c = n[o].cts s.set( [ (d >>> 24) & 255, (d >>> 16) & 255, (d >>> 8) & 255, 255 & d, (_ >>> 24) & 255, (_ >>> 16) & 255, (_ >>> 8) & 255, 255 & _, (h.isLeading << 2) | h.dependsOn, (h.isDependedOn << 6) | (h.hasRedundancy << 4) | h.isNonSync, 0, 0, (c >>> 24) & 255, (c >>> 16) & 255, (c >>> 8) & 255, 255 & c ], 12 + 16 * o ) } return e.box(e.types.trun, s) }), (e.mdat = function (t) { return e.box(e.types.mdat, t) }), e ) })() Ee.init() var Ae = Ee, Re = (function () { function e() {} return ( (e.getSilentFrame = function (e, t) { if ("mp4a.40.2" === e) { if (1 === t) return new Uint8Array([0, 200, 0, 128, 35, 128]) if (2 === t) return new Uint8Array([33, 0, 73, 144, 2, 25, 0, 35, 128]) if (3 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 142]) if (4 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 128, 44, 128, 8, 2, 56]) if (5 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 56]) if (6 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 0, 178, 0, 32, 8, 224]) } else { if (1 === t) return new Uint8Array([ 1, 64, 34, 128, 163, 78, 230, 128, 186, 8, 0, 0, 0, 28, 6, 241, 193, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94 ]) if (2 === t) return new Uint8Array([ 1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94 ]) if (3 === t) return new Uint8Array([ 1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94 ]) } return null }), e ) })(), Te = i(7), Le = (function () { function e(e) { ;(this.TAG = "MP4Remuxer"), (this._config = e), (this._isLive = !0 === e.isLive), (this._dtsBase = -1), (this._dtsBaseInited = !1), (this._audioDtsBase = 1 / 0), (this._videoDtsBase = 1 / 0), (this._audioNextDts = void 0), (this._videoNextDts = void 0), (this._audioStashedLastSample = null), (this._videoStashedLastSample = null), (this._audioMeta = null), (this._videoMeta = null), (this._audioSegmentInfoList = new Te.c("audio")), (this._videoSegmentInfoList = new Te.c("video")), (this._onInitSegment = null), (this._onMediaSegment = null), (this._forceFirstIDR = !(!s.a.chrome || !(s.a.version.major < 50 || (50 === s.a.version.major && s.a.version.build < 2661)))), (this._fillSilentAfterSeek = s.a.msedge || s.a.msie), (this._mp3UseMpegAudio = !s.a.firefox), (this._fillAudioTimestampGap = this._config.fixAudioTimestampGap) } return ( (e.prototype.destroy = function () { ;(this._dtsBase = -1), (this._dtsBaseInited = !1), (this._audioMeta = null), (this._videoMeta = null), this._audioSegmentInfoList.clear(), (this._audioSegmentInfoList = null), this._videoSegmentInfoList.clear(), (this._videoSegmentInfoList = null), (this._onInitSegment = null), (this._onMediaSegment = null) }), (e.prototype.bindDataSource = function (e) { return (e.onDataAvailable = this.remux.bind(this)), (e.onTrackMetadata = this._onTrackMetadataReceived.bind(this)), this }), Object.defineProperty(e.prototype, "onInitSegment", { get: function () { return this._onInitSegment }, set: function (e) { this._onInitSegment = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onMediaSegment", { get: function () { return this._onMediaSegment }, set: function (e) { this._onMediaSegment = e }, enumerable: !1, configurable: !0 }), (e.prototype.insertDiscontinuity = function () { this._audioNextDts = this._videoNextDts = void 0 }), (e.prototype.seek = function (e) { ;(this._audioStashedLastSample = null), (this._videoStashedLastSample = null), this._videoSegmentInfoList.clear(), this._audioSegmentInfoList.clear() }), (e.prototype.remux = function (e, t) { if (!this._onMediaSegment) throw new c.a("MP4Remuxer: onMediaSegment callback must be specificed!") this._dtsBaseInited || this._calculateDtsBase(e, t), t && this._remuxVideo(t), e && this._remuxAudio(e) }), (e.prototype._onTrackMetadataReceived = function (e, t) { var i = null, n = "mp4", a = t.codec if ("audio" === e) (this._audioMeta = t), "mp3" === t.codec && this._mp3UseMpegAudio ? ((n = "mpeg"), (a = ""), (i = new Uint8Array())) : (i = Ae.generateInitSegment(t)) else { if ("video" !== e) return ;(this._videoMeta = t), (i = Ae.generateInitSegment(t)) } if (!this._onInitSegment) throw new c.a("MP4Remuxer: onInitSegment callback must be specified!") this._onInitSegment(e, { type: e, data: i.buffer, codec: a, container: e + "/" + n, mediaDuration: t.duration }) }), (e.prototype._calculateDtsBase = function (e, t) { this._dtsBaseInited || (e && e.samples && e.samples.length && (this._audioDtsBase = e.samples[0].dts), t && t.samples && t.samples.length && (this._videoDtsBase = t.samples[0].dts), (this._dtsBase = Math.min(this._audioDtsBase, this._videoDtsBase)), (this._dtsBaseInited = !0)) }), (e.prototype.getTimestampBase = function () { if (this._dtsBaseInited) return this._dtsBase }), (e.prototype.flushStashedSamples = function () { var e = this._videoStashedLastSample, t = this._audioStashedLastSample, i = { type: "video", id: 1, sequenceNumber: 0, samples: [], length: 0 } null != e && (i.samples.push(e), (i.length = e.length)) var n = { type: "audio", id: 2, sequenceNumber: 0, samples: [], length: 0 } null != t && (n.samples.push(t), (n.length = t.length)), (this._videoStashedLastSample = null), (this._audioStashedLastSample = null), this._remuxVideo(i, !0), this._remuxAudio(n, !0) }), (e.prototype._remuxAudio = function (e, t) { if (null != this._audioMeta) { var i, n = e, a = n.samples, o = void 0, d = -1, _ = this._audioMeta.refSampleDuration, h = "mp3" === this._audioMeta.codec && this._mp3UseMpegAudio, c = this._dtsBaseInited && void 0 === this._audioNextDts, u = !1 if (a && 0 !== a.length && (1 !== a.length || t)) { var l = 0, f = null, p = 0 h ? ((l = 0), (p = n.length)) : ((l = 8), (p = 8 + n.length)) var m = null if ((a.length > 1 && (p -= (m = a.pop()).length), null != this._audioStashedLastSample)) { var g = this._audioStashedLastSample ;(this._audioStashedLastSample = null), a.unshift(g), (p += g.length) } null != m && (this._audioStashedLastSample = m) var v = a[0].dts - this._dtsBase if (this._audioNextDts) o = v - this._audioNextDts else if (this._audioSegmentInfoList.isEmpty()) (o = 0), this._fillSilentAfterSeek && !this._videoSegmentInfoList.isEmpty() && "mp3" !== this._audioMeta.originalCodec && (u = !0) else { var y = this._audioSegmentInfoList.getLastSampleBefore(v) if (null != y) { var b = v - (y.originalDts + y.duration) b <= 3 && (b = 0), (o = v - (y.dts + y.duration + b)) } else o = 0 } if (u) { var S = v - o, E = this._videoSegmentInfoList.getLastSegmentBefore(v) if (null != E && E.beginDts < S) { if ((O = Re.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount))) { var A = E.beginDts, R = S - E.beginDts r.a.v(this.TAG, "InsertPrefixSilentAudio: dts: " + A + ", duration: " + R), a.unshift({ unit: O, dts: A, pts: A }), (p += O.byteLength) } } else u = !1 } for (var T = [], L = 0; L < a.length; L++) { var w = (g = a[L]).unit, k = g.dts - this._dtsBase, D = ((A = k), !1), C = null, B = 0 if (!(k < -0.001)) { if ("mp3" !== this._audioMeta.codec) { var I = k if ((this._audioNextDts && (I = this._audioNextDts), (o = k - I) <= -3 * _)) { r.a.w( this.TAG, "Dropping 1 audio frame (originalDts: " + k + " ms ,curRefDts: " + I + " ms) due to dtsCorrection: " + o + " ms overlap." ) continue } if (o >= 3 * _ && this._fillAudioTimestampGap && !s.a.safari) { D = !0 var O, P = Math.floor(o / _) r.a.w( this.TAG, "Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\noriginalDts: " + k + " ms, curRefDts: " + I + " ms, dtsCorrection: " + Math.round(o) + " ms, generate: " + P + " frames" ), (A = Math.floor(I)), (B = Math.floor(I + _) - A), null == (O = Re.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount)) && (r.a.w( this.TAG, "Unable to generate silent frame for " + this._audioMeta.originalCodec + " with " + this._audioMeta.channelCount + " channels, repeat last frame" ), (O = w)), (C = []) for (var M = 0; M < P; M++) { I += _ var x = Math.floor(I), U = Math.floor(I + _) - x, N = { dts: x, pts: x, cts: 0, unit: O, size: O.byteLength, duration: U, originalDts: k, flags: { isLeading: 0, dependsOn: 1, isDependedOn: 0, hasRedundancy: 0 } } C.push(N), (p += N.size) } this._audioNextDts = I + _ } else (A = Math.floor(I)), (B = Math.floor(I + _) - A), (this._audioNextDts = I + _) } else { if (((A = k - o), L !== a.length - 1)) B = a[L + 1].dts - this._dtsBase - o - A else if (null != m) B = m.dts - this._dtsBase - o - A else B = T.length >= 1 ? T[T.length - 1].duration : Math.floor(_) this._audioNextDts = A + B } ;-1 === d && (d = A), T.push({ dts: A, pts: A, cts: 0, unit: g.unit, size: g.unit.byteLength, duration: B, originalDts: k, flags: { isLeading: 0, dependsOn: 1, isDependedOn: 0, hasRedundancy: 0 } }), D && T.push.apply(T, C) } } if (0 === T.length) return (n.samples = []), void (n.length = 0) h ? (f = new Uint8Array(p)) : (((f = new Uint8Array(p))[0] = (p >>> 24) & 255), (f[1] = (p >>> 16) & 255), (f[2] = (p >>> 8) & 255), (f[3] = 255 & p), f.set(Ae.types.mdat, 4)) for (L = 0; L < T.length; L++) { w = T[L].unit f.set(w, l), (l += w.byteLength) } var G = T[T.length - 1] i = G.dts + G.duration var V = new Te.b() ;(V.beginDts = d), (V.endDts = i), (V.beginPts = d), (V.endPts = i), (V.originalBeginDts = T[0].originalDts), (V.originalEndDts = G.originalDts + G.duration), (V.firstSample = new Te.d(T[0].dts, T[0].pts, T[0].duration, T[0].originalDts, !1)), (V.lastSample = new Te.d(G.dts, G.pts, G.duration, G.originalDts, !1)), this._isLive || this._audioSegmentInfoList.append(V), (n.samples = T), n.sequenceNumber++ var F = null ;(F = h ? new Uint8Array() : Ae.moof(n, d)), (n.samples = []), (n.length = 0) var j = { type: "audio", data: this._mergeBoxes(F, f).buffer, sampleCount: T.length, info: V } h && c && (j.timestampOffset = d), this._onMediaSegment("audio", j) } } }), (e.prototype._remuxVideo = function (e, t) { if (null != this._videoMeta) { var i, n, a = e, r = a.samples, s = void 0, o = -1, d = -1 if (r && 0 !== r.length && (1 !== r.length || t)) { var _ = 8, h = null, c = 8 + e.length, u = null if ((r.length > 1 && (c -= (u = r.pop()).length), null != this._videoStashedLastSample)) { var l = this._videoStashedLastSample ;(this._videoStashedLastSample = null), r.unshift(l), (c += l.length) } null != u && (this._videoStashedLastSample = u) var f = r[0].dts - this._dtsBase if (this._videoNextDts) s = f - this._videoNextDts else if (this._videoSegmentInfoList.isEmpty()) s = 0 else { var p = this._videoSegmentInfoList.getLastSampleBefore(f) if (null != p) { var m = f - (p.originalDts + p.duration) m <= 3 && (m = 0), (s = f - (p.dts + p.duration + m)) } else s = 0 } for (var g = new Te.b(), v = [], y = 0; y < r.length; y++) { var b = (l = r[y]).dts - this._dtsBase, S = l.isKeyframe, E = b - s, A = l.cts, R = E + A ;-1 === o && ((o = E), (d = R)) var T = 0 if (y !== r.length - 1) T = r[y + 1].dts - this._dtsBase - s - E else if (null != u) T = u.dts - this._dtsBase - s - E else T = v.length >= 1 ? v[v.length - 1].duration : Math.floor(this._videoMeta.refSampleDuration) if (S) { var L = new Te.d(E, R, T, l.dts, !0) ;(L.fileposition = l.fileposition), g.appendSyncPoint(L) } v.push({ dts: E, pts: R, cts: A, units: l.units, size: l.length, isKeyframe: S, duration: T, originalDts: b, flags: { isLeading: 0, dependsOn: S ? 2 : 1, isDependedOn: S ? 1 : 0, hasRedundancy: 0, isNonSync: S ? 0 : 1 } }) } ;((h = new Uint8Array(c))[0] = (c >>> 24) & 255), (h[1] = (c >>> 16) & 255), (h[2] = (c >>> 8) & 255), (h[3] = 255 & c), h.set(Ae.types.mdat, 4) for (y = 0; y < v.length; y++) for (var w = v[y].units; w.length; ) { var k = w.shift().data h.set(k, _), (_ += k.byteLength) } var D = v[v.length - 1] if ( ((i = D.dts + D.duration), (n = D.pts + D.duration), (this._videoNextDts = i), (g.beginDts = o), (g.endDts = i), (g.beginPts = d), (g.endPts = n), (g.originalBeginDts = v[0].originalDts), (g.originalEndDts = D.originalDts + D.duration), (g.firstSample = new Te.d(v[0].dts, v[0].pts, v[0].duration, v[0].originalDts, v[0].isKeyframe)), (g.lastSample = new Te.d(D.dts, D.pts, D.duration, D.originalDts, D.isKeyframe)), this._isLive || this._videoSegmentInfoList.append(g), (a.samples = v), a.sequenceNumber++, this._forceFirstIDR) ) { var C = v[0].flags ;(C.dependsOn = 2), (C.isNonSync = 0) } var B = Ae.moof(a, o) ;(a.samples = []), (a.length = 0), this._onMediaSegment("video", { type: "video", data: this._mergeBoxes(B, h).buffer, sampleCount: v.length, info: g }) } } }), (e.prototype._mergeBoxes = function (e, t) { var i = new Uint8Array(e.byteLength + t.byteLength) return i.set(e, 0), i.set(t, e.byteLength), i }), e ) })(), we = i(11), ke = i(1), De = (function () { function e(e, t) { ;(this.TAG = "TransmuxingController"), (this._emitter = new a.a()), (this._config = t), e.segments || (e.segments = [{ duration: e.duration, filesize: e.filesize, url: e.url }]), "boolean" != typeof e.cors && (e.cors = !0), "boolean" != typeof e.withCredentials && (e.withCredentials = !1), (this._mediaDataSource = e), (this._currentSegmentIndex = 0) var i = 0 this._mediaDataSource.segments.forEach(function (n) { ;(n.timestampBase = i), (i += n.duration), (n.cors = e.cors), (n.withCredentials = e.withCredentials), t.referrerPolicy && (n.referrerPolicy = t.referrerPolicy) }), isNaN(i) || this._mediaDataSource.duration === i || (this._mediaDataSource.duration = i), (this._mediaInfo = null), (this._demuxer = null), (this._remuxer = null), (this._ioctl = null), (this._pendingSeekTime = null), (this._pendingResolveSeekPoint = null), (this._statisticsReporter = null) } return ( (e.prototype.destroy = function () { ;(this._mediaInfo = null), (this._mediaDataSource = null), this._statisticsReporter && this._disableStatisticsReporter(), this._ioctl && (this._ioctl.destroy(), (this._ioctl = null)), this._demuxer && (this._demuxer.destroy(), (this._demuxer = null)), this._remuxer && (this._remuxer.destroy(), (this._remuxer = null)), this._emitter.removeAllListeners(), (this._emitter = null) }), (e.prototype.on = function (e, t) { this._emitter.addListener(e, t) }), (e.prototype.off = function (e, t) { this._emitter.removeListener(e, t) }), (e.prototype.start = function () { this._loadSegment(0), this._enableStatisticsReporter() }), (e.prototype._loadSegment = function (e, t) { this._currentSegmentIndex = e var i = this._mediaDataSource.segments[e], n = (this._ioctl = new we.a(i, this._config, e)) ;(n.onError = this._onIOException.bind(this)), (n.onSeeked = this._onIOSeeked.bind(this)), (n.onComplete = this._onIOComplete.bind(this)), (n.onRedirect = this._onIORedirect.bind(this)), (n.onRecoveredEarlyEof = this._onIORecoveredEarlyEof.bind(this)), t ? this._demuxer.bindDataSource(this._ioctl) : (n.onDataArrival = this._onInitChunkArrival.bind(this)), n.open(t) }), (e.prototype.stop = function () { this._internalAbort(), this._disableStatisticsReporter() }), (e.prototype._internalAbort = function () { this._ioctl && (this._ioctl.destroy(), (this._ioctl = null)) }), (e.prototype.pause = function () { this._ioctl && this._ioctl.isWorking() && (this._ioctl.pause(), this._disableStatisticsReporter()) }), (e.prototype.resume = function () { this._ioctl && this._ioctl.isPaused() && (this._ioctl.resume(), this._enableStatisticsReporter()) }), (e.prototype.seek = function (e) { if (null != this._mediaInfo && this._mediaInfo.isSeekable()) { var t = this._searchSegmentIndexContains(e) if (t === this._currentSegmentIndex) { var i = this._mediaInfo.segments[t] if (null == i) this._pendingSeekTime = e else { var n = i.getNearestKeyframe(e) this._remuxer.seek(n.milliseconds), this._ioctl.seek(n.fileposition), (this._pendingResolveSeekPoint = n.milliseconds) } } else { var a = this._mediaInfo.segments[t] if (null == a) (this._pendingSeekTime = e), this._internalAbort(), this._remuxer.seek(), this._remuxer.insertDiscontinuity(), this._loadSegment(t) else { n = a.getNearestKeyframe(e) this._internalAbort(), this._remuxer.seek(e), this._remuxer.insertDiscontinuity(), this._demuxer.resetMediaInfo(), (this._demuxer.timestampBase = this._mediaDataSource.segments[t].timestampBase), this._loadSegment(t, n.fileposition), (this._pendingResolveSeekPoint = n.milliseconds), this._reportSegmentMediaInfo(t) } } this._enableStatisticsReporter() } }), (e.prototype._searchSegmentIndexContains = function (e) { for (var t = this._mediaDataSource.segments, i = t.length - 1, n = 0; n < t.length; n++) if (e < t[n].timestampBase) { i = n - 1 break } return i }), (e.prototype._onInitChunkArrival = function (e, t) { var i = this, n = 0 if (t > 0) this._demuxer.bindDataSource(this._ioctl), (this._demuxer.timestampBase = this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase), (n = this._demuxer.parseChunks(e, t)) else { var a = null ;(a = A.probe(e)).match && (this._setupFLVDemuxerRemuxer(a), (n = this._demuxer.parseChunks(e, t))), a.match || a.needMoreData || ((a = be.probe(e)).match && (this._setupTSDemuxerRemuxer(a), (n = this._demuxer.parseChunks(e, t)))), a.match || a.needMoreData || ((a = null), r.a.e(this.TAG, "Non MPEG-TS/FLV, Unsupported media type!"), Promise.resolve().then(function () { i._internalAbort() }), this._emitter.emit(ke.a.DEMUX_ERROR, m.a.FORMAT_UNSUPPORTED, "Non MPEG-TS/FLV, Unsupported media type!")) } return n }), (e.prototype._setupFLVDemuxerRemuxer = function (e) { ;(this._demuxer = new A(e, this._config)), this._remuxer || (this._remuxer = new Le(this._config)) var t = this._mediaDataSource null == t.duration || isNaN(t.duration) || (this._demuxer.overridedDuration = t.duration), "boolean" == typeof t.hasAudio && (this._demuxer.overridedHasAudio = t.hasAudio), "boolean" == typeof t.hasVideo && (this._demuxer.overridedHasVideo = t.hasVideo), (this._demuxer.timestampBase = t.segments[this._currentSegmentIndex].timestampBase), (this._demuxer.onError = this._onDemuxException.bind(this)), (this._demuxer.onMediaInfo = this._onMediaInfo.bind(this)), (this._demuxer.onMetaDataArrived = this._onMetaDataArrived.bind(this)), (this._demuxer.onScriptDataArrived = this._onScriptDataArrived.bind(this)), this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)), (this._remuxer.onInitSegment = this._onRemuxerInitSegmentArrival.bind(this)), (this._remuxer.onMediaSegment = this._onRemuxerMediaSegmentArrival.bind(this)) }), (e.prototype._setupTSDemuxerRemuxer = function (e) { var t = (this._demuxer = new be(e, this._config)) this._remuxer || (this._remuxer = new Le(this._config)), (t.onError = this._onDemuxException.bind(this)), (t.onMediaInfo = this._onMediaInfo.bind(this)), (t.onMetaDataArrived = this._onMetaDataArrived.bind(this)), (t.onTimedID3Metadata = this._onTimedID3Metadata.bind(this)), (t.onSMPTE2038Metadata = this._onSMPTE2038Metadata.bind(this)), (t.onSCTE35Metadata = this._onSCTE35Metadata.bind(this)), (t.onPESPrivateDataDescriptor = this._onPESPrivateDataDescriptor.bind(this)), (t.onPESPrivateData = this._onPESPrivateData.bind(this)), this._remuxer.bindDataSource(this._demuxer), this._demuxer.bindDataSource(this._ioctl), (this._remuxer.onInitSegment = this._onRemuxerInitSegmentArrival.bind(this)), (this._remuxer.onMediaSegment = this._onRemuxerMediaSegmentArrival.bind(this)) }), (e.prototype._onMediaInfo = function (e) { var t = this null == this._mediaInfo && ((this._mediaInfo = Object.assign({}, e)), (this._mediaInfo.keyframesIndex = null), (this._mediaInfo.segments = []), (this._mediaInfo.segmentCount = this._mediaDataSource.segments.length), Object.setPrototypeOf(this._mediaInfo, o.a.prototype)) var i = Object.assign({}, e) Object.setPrototypeOf(i, o.a.prototype), (this._mediaInfo.segments[this._currentSegmentIndex] = i), this._reportSegmentMediaInfo(this._currentSegmentIndex), null != this._pendingSeekTime && Promise.resolve().then(function () { var e = t._pendingSeekTime ;(t._pendingSeekTime = null), t.seek(e) }) }), (e.prototype._onMetaDataArrived = function (e) { this._emitter.emit(ke.a.METADATA_ARRIVED, e) }), (e.prototype._onScriptDataArrived = function (e) { this._emitter.emit(ke.a.SCRIPTDATA_ARRIVED, e) }), (e.prototype._onTimedID3Metadata = function (e) { var t = this._remuxer.getTimestampBase() null != t && (null != e.pts && (e.pts -= t), null != e.dts && (e.dts -= t), this._emitter.emit(ke.a.TIMED_ID3_METADATA_ARRIVED, e)) }), (e.prototype._onSMPTE2038Metadata = function (e) { var t = this._remuxer.getTimestampBase() null != t && (null != e.pts && (e.pts -= t), null != e.dts && (e.dts -= t), null != e.nearest_pts && (e.nearest_pts -= t), this._emitter.emit(ke.a.SMPTE2038_METADATA_ARRIVED, e)) }), (e.prototype._onSCTE35Metadata = function (e) { var t = this._remuxer.getTimestampBase() null != t && (null != e.pts && (e.pts -= t), null != e.nearest_pts && (e.nearest_pts -= t), this._emitter.emit(ke.a.SCTE35_METADATA_ARRIVED, e)) }), (e.prototype._onPESPrivateDataDescriptor = function (e) { this._emitter.emit(ke.a.PES_PRIVATE_DATA_DESCRIPTOR, e) }), (e.prototype._onPESPrivateData = function (e) { var t = this._remuxer.getTimestampBase() null != t && (null != e.pts && (e.pts -= t), null != e.nearest_pts && (e.nearest_pts -= t), null != e.dts && (e.dts -= t), this._emitter.emit(ke.a.PES_PRIVATE_DATA_ARRIVED, e)) }), (e.prototype._onIOSeeked = function () { this._remuxer.insertDiscontinuity() }), (e.prototype._onIOComplete = function (e) { var t = e + 1 t < this._mediaDataSource.segments.length ? (this._internalAbort(), this._remuxer && this._remuxer.flushStashedSamples(), this._loadSegment(t)) : (this._remuxer && this._remuxer.flushStashedSamples(), this._emitter.emit(ke.a.LOADING_COMPLETE), this._disableStatisticsReporter()) }), (e.prototype._onIORedirect = function (e) { var t = this._ioctl.extraData this._mediaDataSource.segments[t].redirectedURL = e }), (e.prototype._onIORecoveredEarlyEof = function () { this._emitter.emit(ke.a.RECOVERED_EARLY_EOF) }), (e.prototype._onIOException = function (e, t) { r.a.e(this.TAG, "IOException: type = " + e + ", code = " + t.code + ", msg = " + t.msg), this._emitter.emit(ke.a.IO_ERROR, e, t), this._disableStatisticsReporter() }), (e.prototype._onDemuxException = function (e, t) { r.a.e(this.TAG, "DemuxException: type = " + e + ", info = " + t), this._emitter.emit(ke.a.DEMUX_ERROR, e, t) }), (e.prototype._onRemuxerInitSegmentArrival = function (e, t) { this._emitter.emit(ke.a.INIT_SEGMENT, e, t) }), (e.prototype._onRemuxerMediaSegmentArrival = function (e, t) { if ( null == this._pendingSeekTime && (this._emitter.emit(ke.a.MEDIA_SEGMENT, e, t), null != this._pendingResolveSeekPoint && "video" === e) ) { var i = t.info.syncPoints, n = this._pendingResolveSeekPoint ;(this._pendingResolveSeekPoint = null), s.a.safari && i.length > 0 && i[0].originalDts === n && (n = i[0].pts), this._emitter.emit(ke.a.RECOMMEND_SEEKPOINT, n) } }), (e.prototype._enableStatisticsReporter = function () { null == this._statisticsReporter && (this._statisticsReporter = self.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval)) }), (e.prototype._disableStatisticsReporter = function () { this._statisticsReporter && (self.clearInterval(this._statisticsReporter), (this._statisticsReporter = null)) }), (e.prototype._reportSegmentMediaInfo = function (e) { var t = this._mediaInfo.segments[e], i = Object.assign({}, t) ;(i.duration = this._mediaInfo.duration), (i.segmentCount = this._mediaInfo.segmentCount), delete i.segments, delete i.keyframesIndex, this._emitter.emit(ke.a.MEDIA_INFO, i) }), (e.prototype._reportStatisticsInfo = function () { var e = {} ;(e.url = this._ioctl.currentURL), (e.hasRedirect = this._ioctl.hasRedirect), e.hasRedirect && (e.redirectedURL = this._ioctl.currentRedirectedURL), (e.speed = this._ioctl.currentSpeed), (e.loaderType = this._ioctl.loaderType), (e.currentSegmentIndex = this._currentSegmentIndex), (e.totalSegmentCount = this._mediaDataSource.segments.length), this._emitter.emit(ke.a.STATISTICS_INFO, e) }), e ) })() t.a = De }, function (e, t, i) { "use strict" var n, a = i(0), r = (function () { function e() { ;(this._firstCheckpoint = 0), (this._lastCheckpoint = 0), (this._intervalBytes = 0), (this._totalBytes = 0), (this._lastSecondBytes = 0), self.performance && self.performance.now ? (this._now = self.performance.now.bind(self.performance)) : (this._now = Date.now) } return ( (e.prototype.reset = function () { ;(this._firstCheckpoint = this._lastCheckpoint = 0), (this._totalBytes = this._intervalBytes = 0), (this._lastSecondBytes = 0) }), (e.prototype.addBytes = function (e) { 0 === this._firstCheckpoint ? ((this._firstCheckpoint = this._now()), (this._lastCheckpoint = this._firstCheckpoint), (this._intervalBytes += e), (this._totalBytes += e)) : this._now() - this._lastCheckpoint < 1e3 ? ((this._intervalBytes += e), (this._totalBytes += e)) : ((this._lastSecondBytes = this._intervalBytes), (this._intervalBytes = e), (this._totalBytes += e), (this._lastCheckpoint = this._now())) }), Object.defineProperty(e.prototype, "currentKBps", { get: function () { this.addBytes(0) var e = (this._now() - this._lastCheckpoint) / 1e3 return 0 == e && (e = 1), this._intervalBytes / e / 1024 }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "lastSecondKBps", { get: function () { return ( this.addBytes(0), 0 !== this._lastSecondBytes ? this._lastSecondBytes / 1024 : this._now() - this._lastCheckpoint >= 500 ? this.currentKBps : 0 ) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "averageKBps", { get: function () { var e = (this._now() - this._firstCheckpoint) / 1e3 return this._totalBytes / e / 1024 }, enumerable: !1, configurable: !0 }), e ) })(), s = i(2), o = i(4), d = i(3), _ = ((n = function (e, t) { return (n = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t }) || function (e, t) { for (var i in t) t.hasOwnProperty(i) && (e[i] = t[i]) })(e, t) }), function (e, t) { function i() { this.constructor = e } n(e, t), (e.prototype = null === t ? Object.create(t) : ((i.prototype = t.prototype), new i())) }), h = (function (e) { function t(t, i) { var n = e.call(this, "fetch-stream-loader") || this return ( (n.TAG = "FetchStreamLoader"), (n._seekHandler = t), (n._config = i), (n._needStash = !0), (n._requestAbort = !1), (n._abortController = null), (n._contentLength = null), (n._receivedLength = 0), n ) } return ( _(t, e), (t.isSupported = function () { try { var e = o.a.msedge && o.a.version.minor >= 15048, t = !o.a.msedge || e return self.fetch && self.ReadableStream && t } catch (e) { return !1 } }), (t.prototype.destroy = function () { this.isWorking() && this.abort(), e.prototype.destroy.call(this) }), (t.prototype.open = function (e, t) { var i = this ;(this._dataSource = e), (this._range = t) var n = e.url this._config.reuseRedirectedURL && null != e.redirectedURL && (n = e.redirectedURL) var a = this._seekHandler.getConfig(n, t), r = new self.Headers() if ("object" == typeof a.headers) { var o = a.headers for (var _ in o) o.hasOwnProperty(_) && r.append(_, o[_]) } var h = { method: "GET", headers: r, mode: "cors", cache: "default", referrerPolicy: "no-referrer-when-downgrade" } if ("object" == typeof this._config.headers) for (var _ in this._config.headers) r.append(_, this._config.headers[_]) !1 === e.cors && (h.mode = "same-origin"), e.withCredentials && (h.credentials = "include"), e.referrerPolicy && (h.referrerPolicy = e.referrerPolicy), self.AbortController && ((this._abortController = new self.AbortController()), (h.signal = this._abortController.signal)), (this._status = s.c.kConnecting), self .fetch(a.url, h) .then(function (e) { if (i._requestAbort) return (i._status = s.c.kIdle), void e.body.cancel() if (e.ok && e.status >= 200 && e.status <= 299) { if (e.url !== a.url && i._onURLRedirect) { var t = i._seekHandler.removeURLParameters(e.url) i._onURLRedirect(t) } var n = e.headers.get("Content-Length") return ( null != n && ((i._contentLength = parseInt(n)), 0 !== i._contentLength && i._onContentLengthKnown && i._onContentLengthKnown(i._contentLength)), i._pump.call(i, e.body.getReader()) ) } if (((i._status = s.c.kError), !i._onError)) throw new d.d("FetchStreamLoader: Http code invalid, " + e.status + " " + e.statusText) i._onError(s.b.HTTP_STATUS_CODE_INVALID, { code: e.status, msg: e.statusText }) }) .catch(function (e) { if (!i._abortController || !i._abortController.signal.aborted) { if (((i._status = s.c.kError), !i._onError)) throw e i._onError(s.b.EXCEPTION, { code: -1, msg: e.message }) } }) }), (t.prototype.abort = function () { if (((this._requestAbort = !0), (this._status !== s.c.kBuffering || !o.a.chrome) && this._abortController)) try { this._abortController.abort() } catch (e) {} }), (t.prototype._pump = function (e) { var t = this return e .read() .then(function (i) { if (i.done) if (null !== t._contentLength && t._receivedLength < t._contentLength) { t._status = s.c.kError var n = s.b.EARLY_EOF, a = { code: -1, msg: "Fetch stream meet Early-EOF" } if (!t._onError) throw new d.d(a.msg) t._onError(n, a) } else (t._status = s.c.kComplete), t._onComplete && t._onComplete(t._range.from, t._range.from + t._receivedLength - 1) else { if (t._abortController && t._abortController.signal.aborted) return void (t._status = s.c.kComplete) if (!0 === t._requestAbort) return (t._status = s.c.kComplete), e.cancel() t._status = s.c.kBuffering var r = i.value.buffer, o = t._range.from + t._receivedLength ;(t._receivedLength += r.byteLength), t._onDataArrival && t._onDataArrival(r, o, t._receivedLength), t._pump(e) } }) .catch(function (e) { if (t._abortController && t._abortController.signal.aborted) t._status = s.c.kComplete else if (11 !== e.code || !o.a.msedge) { t._status = s.c.kError var i = 0, n = null if ( ((19 !== e.code && "network error" !== e.message) || !(null === t._contentLength || (null !== t._contentLength && t._receivedLength < t._contentLength)) ? ((i = s.b.EXCEPTION), (n = { code: e.code, msg: e.message })) : ((i = s.b.EARLY_EOF), (n = { code: e.code, msg: "Fetch stream meet Early-EOF" })), !t._onError) ) throw new d.d(n.msg) t._onError(i, n) } }) }), t ) })(s.a), c = (function () { var e = function (t, i) { return (e = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t }) || function (e, t) { for (var i in t) t.hasOwnProperty(i) && (e[i] = t[i]) })(t, i) } return function (t, i) { function n() { this.constructor = t } e(t, i), (t.prototype = null === i ? Object.create(i) : ((n.prototype = i.prototype), new n())) } })(), u = (function (e) { function t(t, i) { var n = e.call(this, "xhr-moz-chunked-loader") || this return ( (n.TAG = "MozChunkedLoader"), (n._seekHandler = t), (n._config = i), (n._needStash = !0), (n._xhr = null), (n._requestAbort = !1), (n._contentLength = null), (n._receivedLength = 0), n ) } return ( c(t, e), (t.isSupported = function () { try { var e = new XMLHttpRequest() return ( e.open("GET", "https://example.com", !0), (e.responseType = "moz-chunked-arraybuffer"), "moz-chunked-arraybuffer" === e.responseType ) } catch (e) { return a.a.w("MozChunkedLoader", e.message), !1 } }), (t.prototype.destroy = function () { this.isWorking() && this.abort(), this._xhr && ((this._xhr.onreadystatechange = null), (this._xhr.onprogress = null), (this._xhr.onloadend = null), (this._xhr.onerror = null), (this._xhr = null)), e.prototype.destroy.call(this) }), (t.prototype.open = function (e, t) { ;(this._dataSource = e), (this._range = t) var i = e.url this._config.reuseRedirectedURL && null != e.redirectedURL && (i = e.redirectedURL) var n = this._seekHandler.getConfig(i, t) this._requestURL = n.url var a = (this._xhr = new XMLHttpRequest()) if ( (a.open("GET", n.url, !0), (a.responseType = "moz-chunked-arraybuffer"), (a.onreadystatechange = this._onReadyStateChange.bind(this)), (a.onprogress = this._onProgress.bind(this)), (a.onloadend = this._onLoadEnd.bind(this)), (a.onerror = this._onXhrError.bind(this)), e.withCredentials && (a.withCredentials = !0), "object" == typeof n.headers) ) { var r = n.headers for (var o in r) r.hasOwnProperty(o) && a.setRequestHeader(o, r[o]) } if ("object" == typeof this._config.headers) { r = this._config.headers for (var o in r) r.hasOwnProperty(o) && a.setRequestHeader(o, r[o]) } ;(this._status = s.c.kConnecting), a.send() }), (t.prototype.abort = function () { ;(this._requestAbort = !0), this._xhr && this._xhr.abort(), (this._status = s.c.kComplete) }), (t.prototype._onReadyStateChange = function (e) { var t = e.target if (2 === t.readyState) { if (null != t.responseURL && t.responseURL !== this._requestURL && this._onURLRedirect) { var i = this._seekHandler.removeURLParameters(t.responseURL) this._onURLRedirect(i) } if (0 !== t.status && (t.status < 200 || t.status > 299)) { if (((this._status = s.c.kError), !this._onError)) throw new d.d("MozChunkedLoader: Http code invalid, " + t.status + " " + t.statusText) this._onError(s.b.HTTP_STATUS_CODE_INVALID, { code: t.status, msg: t.statusText }) } else this._status = s.c.kBuffering } }), (t.prototype._onProgress = function (e) { if (this._status !== s.c.kError) { null === this._contentLength && null !== e.total && 0 !== e.total && ((this._contentLength = e.total), this._onContentLengthKnown && this._onContentLengthKnown(this._contentLength)) var t = e.target.response, i = this._range.from + this._receivedLength ;(this._receivedLength += t.byteLength), this._onDataArrival && this._onDataArrival(t, i, this._receivedLength) } }), (t.prototype._onLoadEnd = function (e) { !0 !== this._requestAbort ? this._status !== s.c.kError && ((this._status = s.c.kComplete), this._onComplete && this._onComplete(this._range.from, this._range.from + this._receivedLength - 1)) : (this._requestAbort = !1) }), (t.prototype._onXhrError = function (e) { this._status = s.c.kError var t = 0, i = null if ( (this._contentLength && e.loaded < this._contentLength ? ((t = s.b.EARLY_EOF), (i = { code: -1, msg: "Moz-Chunked stream meet Early-Eof" })) : ((t = s.b.EXCEPTION), (i = { code: -1, msg: e.constructor.name + " " + e.type })), !this._onError) ) throw new d.d(i.msg) this._onError(t, i) }), t ) })(s.a), l = (function () { var e = function (t, i) { return (e = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t }) || function (e, t) { for (var i in t) t.hasOwnProperty(i) && (e[i] = t[i]) })(t, i) } return function (t, i) { function n() { this.constructor = t } e(t, i), (t.prototype = null === i ? Object.create(i) : ((n.prototype = i.prototype), new n())) } })(), f = (function (e) { function t(t, i) { var n = e.call(this, "xhr-range-loader") || this return ( (n.TAG = "RangeLoader"), (n._seekHandler = t), (n._config = i), (n._needStash = !1), (n._chunkSizeKBList = [128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192]), (n._currentChunkSizeKB = 384), (n._currentSpeedNormalized = 0), (n._zeroSpeedChunkCount = 0), (n._xhr = null), (n._speedSampler = new r()), (n._requestAbort = !1), (n._waitForTotalLength = !1), (n._totalLengthReceived = !1), (n._currentRequestURL = null), (n._currentRedirectedURL = null), (n._currentRequestRange = null), (n._totalLength = null), (n._contentLength = null), (n._receivedLength = 0), (n._lastTimeLoaded = 0), n ) } return ( l(t, e), (t.isSupported = function () { try { var e = new XMLHttpRequest() return e.open("GET", "https://example.com", !0), (e.responseType = "arraybuffer"), "arraybuffer" === e.responseType } catch (e) { return a.a.w("RangeLoader", e.message), !1 } }), (t.prototype.destroy = function () { this.isWorking() && this.abort(), this._xhr && ((this._xhr.onreadystatechange = null), (this._xhr.onprogress = null), (this._xhr.onload = null), (this._xhr.onerror = null), (this._xhr = null)), e.prototype.destroy.call(this) }), Object.defineProperty(t.prototype, "currentSpeed", { get: function () { return this._speedSampler.lastSecondKBps }, enumerable: !1, configurable: !0 }), (t.prototype.open = function (e, t) { ;(this._dataSource = e), (this._range = t), (this._status = s.c.kConnecting) var i = !1 null != this._dataSource.filesize && 0 !== this._dataSource.filesize && ((i = !0), (this._totalLength = this._dataSource.filesize)), this._totalLengthReceived || i ? this._openSubRange() : ((this._waitForTotalLength = !0), this._internalOpen(this._dataSource, { from: 0, to: -1 })) }), (t.prototype._openSubRange = function () { var e = 1024 * this._currentChunkSizeKB, t = this._range.from + this._receivedLength, i = t + e null != this._contentLength && i - this._range.from >= this._contentLength && (i = this._range.from + this._contentLength - 1), (this._currentRequestRange = { from: t, to: i }), this._internalOpen(this._dataSource, this._currentRequestRange) }), (t.prototype._internalOpen = function (e, t) { this._lastTimeLoaded = 0 var i = e.url this._config.reuseRedirectedURL && (null != this._currentRedirectedURL ? (i = this._currentRedirectedURL) : null != e.redirectedURL && (i = e.redirectedURL)) var n = this._seekHandler.getConfig(i, t) this._currentRequestURL = n.url var a = (this._xhr = new XMLHttpRequest()) if ( (a.open("GET", n.url, !0), (a.responseType = "arraybuffer"), (a.onreadystatechange = this._onReadyStateChange.bind(this)), (a.onprogress = this._onProgress.bind(this)), (a.onload = this._onLoad.bind(this)), (a.onerror = this._onXhrError.bind(this)), e.withCredentials && (a.withCredentials = !0), "object" == typeof n.headers) ) { var r = n.headers for (var s in r) r.hasOwnProperty(s) && a.setRequestHeader(s, r[s]) } if ("object" == typeof this._config.headers) { r = this._config.headers for (var s in r) r.hasOwnProperty(s) && a.setRequestHeader(s, r[s]) } a.send() }), (t.prototype.abort = function () { ;(this._requestAbort = !0), this._internalAbort(), (this._status = s.c.kComplete) }), (t.prototype._internalAbort = function () { this._xhr && ((this._xhr.onreadystatechange = null), (this._xhr.onprogress = null), (this._xhr.onload = null), (this._xhr.onerror = null), this._xhr.abort(), (this._xhr = null)) }), (t.prototype._onReadyStateChange = function (e) { var t = e.target if (2 === t.readyState) { if (null != t.responseURL) { var i = this._seekHandler.removeURLParameters(t.responseURL) t.responseURL !== this._currentRequestURL && i !== this._currentRedirectedURL && ((this._currentRedirectedURL = i), this._onURLRedirect && this._onURLRedirect(i)) } if (t.status >= 200 && t.status <= 299) { if (this._waitForTotalLength) return this._status = s.c.kBuffering } else { if (((this._status = s.c.kError), !this._onError)) throw new d.d("RangeLoader: Http code invalid, " + t.status + " " + t.statusText) this._onError(s.b.HTTP_STATUS_CODE_INVALID, { code: t.status, msg: t.statusText }) } } }), (t.prototype._onProgress = function (e) { if (this._status !== s.c.kError) { if (null === this._contentLength) { var t = !1 if (this._waitForTotalLength) { ;(this._waitForTotalLength = !1), (this._totalLengthReceived = !0), (t = !0) var i = e.total this._internalAbort(), (null != i) & (0 !== i) && (this._totalLength = i) } if ( (-1 === this._range.to ? (this._contentLength = this._totalLength - this._range.from) : (this._contentLength = this._range.to - this._range.from + 1), t) ) return void this._openSubRange() this._onContentLengthKnown && this._onContentLengthKnown(this._contentLength) } var n = e.loaded - this._lastTimeLoaded ;(this._lastTimeLoaded = e.loaded), this._speedSampler.addBytes(n) } }), (t.prototype._normalizeSpeed = function (e) { var t = this._chunkSizeKBList, i = t.length - 1, n = 0, a = 0, r = i if (e < t[0]) return t[0] for (; a <= r; ) { if ((n = a + Math.floor((r - a) / 2)) === i || (e >= t[n] && e < t[n + 1])) return t[n] t[n] < e ? (a = n + 1) : (r = n - 1) } }), (t.prototype._onLoad = function (e) { if (this._status !== s.c.kError) if (this._waitForTotalLength) this._waitForTotalLength = !1 else { this._lastTimeLoaded = 0 var t = this._speedSampler.lastSecondKBps if ((0 === t && (this._zeroSpeedChunkCount++, this._zeroSpeedChunkCount >= 3 && (t = this._speedSampler.currentKBps)), 0 !== t)) { var i = this._normalizeSpeed(t) this._currentSpeedNormalized !== i && ((this._currentSpeedNormalized = i), (this._currentChunkSizeKB = i)) } var n = e.target.response, a = this._range.from + this._receivedLength this._receivedLength += n.byteLength var r = !1 null != this._contentLength && this._receivedLength < this._contentLength ? this._openSubRange() : (r = !0), this._onDataArrival && this._onDataArrival(n, a, this._receivedLength), r && ((this._status = s.c.kComplete), this._onComplete && this._onComplete(this._range.from, this._range.from + this._receivedLength - 1)) } }), (t.prototype._onXhrError = function (e) { this._status = s.c.kError var t = 0, i = null if ( (this._contentLength && this._receivedLength > 0 && this._receivedLength < this._contentLength ? ((t = s.b.EARLY_EOF), (i = { code: -1, msg: "RangeLoader meet Early-Eof" })) : ((t = s.b.EXCEPTION), (i = { code: -1, msg: e.constructor.name + " " + e.type })), !this._onError) ) throw new d.d(i.msg) this._onError(t, i) }), t ) })(s.a), p = (function () { var e = function (t, i) { return (e = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t }) || function (e, t) { for (var i in t) t.hasOwnProperty(i) && (e[i] = t[i]) })(t, i) } return function (t, i) { function n() { this.constructor = t } e(t, i), (t.prototype = null === i ? Object.create(i) : ((n.prototype = i.prototype), new n())) } })(), m = (function (e) { function t() { var t = e.call(this, "websocket-loader") || this return (t.TAG = "WebSocketLoader"), (t._needStash = !0), (t._ws = null), (t._requestAbort = !1), (t._receivedLength = 0), t } return ( p(t, e), (t.isSupported = function () { try { return void 0 !== self.WebSocket } catch (e) { return !1 } }), (t.prototype.destroy = function () { this._ws && this.abort(), e.prototype.destroy.call(this) }), (t.prototype.open = function (e) { try { var t = (this._ws = new self.WebSocket(e.url)) ;(t.binaryType = "arraybuffer"), (t.onopen = this._onWebSocketOpen.bind(this)), (t.onclose = this._onWebSocketClose.bind(this)), (t.onmessage = this._onWebSocketMessage.bind(this)), (t.onerror = this._onWebSocketError.bind(this)), (this._status = s.c.kConnecting) } catch (e) { this._status = s.c.kError var i = { code: e.code, msg: e.message } if (!this._onError) throw new d.d(i.msg) this._onError(s.b.EXCEPTION, i) } }), (t.prototype.abort = function () { var e = this._ws !e || (0 !== e.readyState && 1 !== e.readyState) || ((this._requestAbort = !0), e.close()), (this._ws = null), (this._status = s.c.kComplete) }), (t.prototype._onWebSocketOpen = function (e) { this._status = s.c.kBuffering }), (t.prototype._onWebSocketClose = function (e) { !0 !== this._requestAbort ? ((this._status = s.c.kComplete), this._onComplete && this._onComplete(0, this._receivedLength - 1)) : (this._requestAbort = !1) }), (t.prototype._onWebSocketMessage = function (e) { var t = this if (e.data instanceof ArrayBuffer) this._dispatchArrayBuffer(e.data) else if (e.data instanceof Blob) { var i = new FileReader() ;(i.onload = function () { t._dispatchArrayBuffer(i.result) }), i.readAsArrayBuffer(e.data) } else { this._status = s.c.kError var n = { code: -1, msg: "Unsupported WebSocket message type: " + e.data.constructor.name } if (!this._onError) throw new d.d(n.msg) this._onError(s.b.EXCEPTION, n) } }), (t.prototype._dispatchArrayBuffer = function (e) { var t = e, i = this._receivedLength ;(this._receivedLength += t.byteLength), this._onDataArrival && this._onDataArrival(t, i, this._receivedLength) }), (t.prototype._onWebSocketError = function (e) { this._status = s.c.kError var t = { code: e.code, msg: e.message } if (!this._onError) throw new d.d(t.msg) this._onError(s.b.EXCEPTION, t) }), t ) })(s.a), g = (function () { function e(e) { this._zeroStart = e || !1 } return ( (e.prototype.getConfig = function (e, t) { var i = {} if (0 !== t.from || -1 !== t.to) { var n = void 0 ;(n = -1 !== t.to ? "bytes=" + t.from.toString() + "-" + t.to.toString() : "bytes=" + t.from.toString() + "-"), (i.Range = n) } else this._zeroStart && (i.Range = "bytes=0-") return { url: e, headers: i } }), (e.prototype.removeURLParameters = function (e) { return e }), e ) })(), v = (function () { function e(e, t) { ;(this._startName = e), (this._endName = t) } return ( (e.prototype.getConfig = function (e, t) { var i = e if (0 !== t.from || -1 !== t.to) { var n = !0 ;-1 === i.indexOf("?") && ((i += "?"), (n = !1)), n && (i += "&"), (i += this._startName + "=" + t.from.toString()), -1 !== t.to && (i += "&" + this._endName + "=" + t.to.toString()) } return { url: i, headers: {} } }), (e.prototype.removeURLParameters = function (e) { var t = e.split("?")[0], i = void 0, n = e.indexOf("?") ;-1 !== n && (i = e.substring(n + 1)) var a = "" if (null != i && i.length > 0) for (var r = i.split("&"), s = 0; s < r.length; s++) { var o = r[s].split("="), d = s > 0 o[0] !== this._startName && o[0] !== this._endName && (d && (a += "&"), (a += r[s])) } return 0 === a.length ? t : t + "?" + a }), e ) })(), y = (function () { function e(e, t, i) { ;(this.TAG = "IOController"), (this._config = t), (this._extraData = i), (this._stashInitialSize = 65536), null != t.stashInitialSize && t.stashInitialSize > 0 && (this._stashInitialSize = t.stashInitialSize), (this._stashUsed = 0), (this._stashSize = this._stashInitialSize), (this._bufferSize = 3145728), (this._stashBuffer = new ArrayBuffer(this._bufferSize)), (this._stashByteStart = 0), (this._enableStash = !0), !1 === t.enableStashBuffer && (this._enableStash = !1), (this._loader = null), (this._loaderClass = null), (this._seekHandler = null), (this._dataSource = e), (this._isWebSocketURL = /wss?:\/\/(.+?)/.test(e.url)), (this._refTotalLength = e.filesize ? e.filesize : null), (this._totalLength = this._refTotalLength), (this._fullRequestFlag = !1), (this._currentRange = null), (this._redirectedURL = null), (this._speedNormalized = 0), (this._speedSampler = new r()), (this._speedNormalizeList = [32, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096]), (this._isEarlyEofReconnecting = !1), (this._paused = !1), (this._resumeFrom = 0), (this._onDataArrival = null), (this._onSeeked = null), (this._onError = null), (this._onComplete = null), (this._onRedirect = null), (this._onRecoveredEarlyEof = null), this._selectSeekHandler(), this._selectLoader(), this._createLoader() } return ( (e.prototype.destroy = function () { this._loader.isWorking() && this._loader.abort(), this._loader.destroy(), (this._loader = null), (this._loaderClass = null), (this._dataSource = null), (this._stashBuffer = null), (this._stashUsed = this._stashSize = this._bufferSize = this._stashByteStart = 0), (this._currentRange = null), (this._speedSampler = null), (this._isEarlyEofReconnecting = !1), (this._onDataArrival = null), (this._onSeeked = null), (this._onError = null), (this._onComplete = null), (this._onRedirect = null), (this._onRecoveredEarlyEof = null), (this._extraData = null) }), (e.prototype.isWorking = function () { return this._loader && this._loader.isWorking() && !this._paused }), (e.prototype.isPaused = function () { return this._paused }), Object.defineProperty(e.prototype, "status", { get: function () { return this._loader.status }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "extraData", { get: function () { return this._extraData }, set: function (e) { this._extraData = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onDataArrival", { get: function () { return this._onDataArrival }, set: function (e) { this._onDataArrival = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onSeeked", { get: function () { return this._onSeeked }, set: function (e) { this._onSeeked = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onError", { get: function () { return this._onError }, set: function (e) { this._onError = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onComplete", { get: function () { return this._onComplete }, set: function (e) { this._onComplete = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onRedirect", { get: function () { return this._onRedirect }, set: function (e) { this._onRedirect = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "onRecoveredEarlyEof", { get: function () { return this._onRecoveredEarlyEof }, set: function (e) { this._onRecoveredEarlyEof = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "currentURL", { get: function () { return this._dataSource.url }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "hasRedirect", { get: function () { return null != this._redirectedURL || null != this._dataSource.redirectedURL }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "currentRedirectedURL", { get: function () { return this._redirectedURL || this._dataSource.redirectedURL }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "currentSpeed", { get: function () { return this._loaderClass === f ? this._loader.currentSpeed : this._speedSampler.lastSecondKBps }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "loaderType", { get: function () { return this._loader.type }, enumerable: !1, configurable: !0 }), (e.prototype._selectSeekHandler = function () { var e = this._config if ("range" === e.seekType) this._seekHandler = new g(this._config.rangeLoadZeroStart) else if ("param" === e.seekType) { var t = e.seekParamStart || "bstart", i = e.seekParamEnd || "bend" this._seekHandler = new v(t, i) } else { if ("custom" !== e.seekType) throw new d.b("Invalid seekType in config: " + e.seekType) if ("function" != typeof e.customSeekHandler) throw new d.b("Custom seekType specified in config but invalid customSeekHandler!") this._seekHandler = new e.customSeekHandler() } }), (e.prototype._selectLoader = function () { if (null != this._config.customLoader) this._loaderClass = this._config.customLoader else if (this._isWebSocketURL) this._loaderClass = m else if (h.isSupported()) this._loaderClass = h else if (u.isSupported()) this._loaderClass = u else { if (!f.isSupported()) throw new d.d("Your browser doesn't support xhr with arraybuffer responseType!") this._loaderClass = f } }), (e.prototype._createLoader = function () { ;(this._loader = new this._loaderClass(this._seekHandler, this._config)), !1 === this._loader.needStashBuffer && (this._enableStash = !1), (this._loader.onContentLengthKnown = this._onContentLengthKnown.bind(this)), (this._loader.onURLRedirect = this._onURLRedirect.bind(this)), (this._loader.onDataArrival = this._onLoaderChunkArrival.bind(this)), (this._loader.onComplete = this._onLoaderComplete.bind(this)), (this._loader.onError = this._onLoaderError.bind(this)) }), (e.prototype.open = function (e) { ;(this._currentRange = { from: 0, to: -1 }), e && (this._currentRange.from = e), this._speedSampler.reset(), e || (this._fullRequestFlag = !0), this._loader.open(this._dataSource, Object.assign({}, this._currentRange)) }), (e.prototype.abort = function () { this._loader.abort(), this._paused && ((this._paused = !1), (this._resumeFrom = 0)) }), (e.prototype.pause = function () { this.isWorking() && (this._loader.abort(), 0 !== this._stashUsed ? ((this._resumeFrom = this._stashByteStart), (this._currentRange.to = this._stashByteStart - 1)) : (this._resumeFrom = this._currentRange.to + 1), (this._stashUsed = 0), (this._stashByteStart = 0), (this._paused = !0)) }), (e.prototype.resume = function () { if (this._paused) { this._paused = !1 var e = this._resumeFrom ;(this._resumeFrom = 0), this._internalSeek(e, !0) } }), (e.prototype.seek = function (e) { ;(this._paused = !1), (this._stashUsed = 0), (this._stashByteStart = 0), this._internalSeek(e, !0) }), (e.prototype._internalSeek = function (e, t) { this._loader.isWorking() && this._loader.abort(), this._flushStashBuffer(t), this._loader.destroy(), (this._loader = null) var i = { from: e, to: -1 } ;(this._currentRange = { from: i.from, to: -1 }), this._speedSampler.reset(), (this._stashSize = this._stashInitialSize), this._createLoader(), this._loader.open(this._dataSource, i), this._onSeeked && this._onSeeked() }), (e.prototype.updateUrl = function (e) { if (!e || "string" != typeof e || 0 === e.length) throw new d.b("Url must be a non-empty string!") this._dataSource.url = e }), (e.prototype._expandBuffer = function (e) { for (var t = this._stashSize; t + 1048576 < e; ) t *= 2 if ((t += 1048576) !== this._bufferSize) { var i = new ArrayBuffer(t) if (this._stashUsed > 0) { var n = new Uint8Array(this._stashBuffer, 0, this._stashUsed) new Uint8Array(i, 0, t).set(n, 0) } ;(this._stashBuffer = i), (this._bufferSize = t) } }), (e.prototype._normalizeSpeed = function (e) { var t = this._speedNormalizeList, i = t.length - 1, n = 0, a = 0, r = i if (e < t[0]) return t[0] for (; a <= r; ) { if ((n = a + Math.floor((r - a) / 2)) === i || (e >= t[n] && e < t[n + 1])) return t[n] t[n] < e ? (a = n + 1) : (r = n - 1) } }), (e.prototype._adjustStashSize = function (e) { var t = 0 ;(t = this._config.isLive ? e / 8 : e < 512 ? e : e >= 512 && e <= 1024 ? Math.floor(1.5 * e) : 2 * e) > 8192 && (t = 8192) var i = 1024 * t + 1048576 this._bufferSize < i && this._expandBuffer(i), (this._stashSize = 1024 * t) }), (e.prototype._dispatchChunks = function (e, t) { return (this._currentRange.to = t + e.byteLength - 1), this._onDataArrival(e, t) }), (e.prototype._onURLRedirect = function (e) { ;(this._redirectedURL = e), this._onRedirect && this._onRedirect(e) }), (e.prototype._onContentLengthKnown = function (e) { e && this._fullRequestFlag && ((this._totalLength = e), (this._fullRequestFlag = !1)) }), (e.prototype._onLoaderChunkArrival = function (e, t, i) { if (!this._onDataArrival) throw new d.a("IOController: No existing consumer (onDataArrival) callback!") if (!this._paused) { this._isEarlyEofReconnecting && ((this._isEarlyEofReconnecting = !1), this._onRecoveredEarlyEof && this._onRecoveredEarlyEof()), this._speedSampler.addBytes(e.byteLength) var n = this._speedSampler.lastSecondKBps if (0 !== n) { var a = this._normalizeSpeed(n) this._speedNormalized !== a && ((this._speedNormalized = a), this._adjustStashSize(a)) } if (this._enableStash) if ( (0 === this._stashUsed && 0 === this._stashByteStart && (this._stashByteStart = t), this._stashUsed + e.byteLength <= this._stashSize) ) { ;(o = new Uint8Array(this._stashBuffer, 0, this._stashSize)).set(new Uint8Array(e), this._stashUsed), (this._stashUsed += e.byteLength) } else { o = new Uint8Array(this._stashBuffer, 0, this._bufferSize) if (this._stashUsed > 0) { var r = this._stashBuffer.slice(0, this._stashUsed) if ((_ = this._dispatchChunks(r, this._stashByteStart)) < r.byteLength) { if (_ > 0) { h = new Uint8Array(r, _) o.set(h, 0), (this._stashUsed = h.byteLength), (this._stashByteStart += _) } } else (this._stashUsed = 0), (this._stashByteStart += _) this._stashUsed + e.byteLength > this._bufferSize && (this._expandBuffer(this._stashUsed + e.byteLength), (o = new Uint8Array(this._stashBuffer, 0, this._bufferSize))), o.set(new Uint8Array(e), this._stashUsed), (this._stashUsed += e.byteLength) } else { if ((_ = this._dispatchChunks(e, t)) < e.byteLength) (s = e.byteLength - _) > this._bufferSize && (this._expandBuffer(s), (o = new Uint8Array(this._stashBuffer, 0, this._bufferSize))), o.set(new Uint8Array(e, _), 0), (this._stashUsed += s), (this._stashByteStart = t + _) } } else if (0 === this._stashUsed) { var s if ((_ = this._dispatchChunks(e, t)) < e.byteLength) (s = e.byteLength - _) > this._bufferSize && this._expandBuffer(s), (o = new Uint8Array(this._stashBuffer, 0, this._bufferSize)).set(new Uint8Array(e, _), 0), (this._stashUsed += s), (this._stashByteStart = t + _) } else { var o, _ if ( (this._stashUsed + e.byteLength > this._bufferSize && this._expandBuffer(this._stashUsed + e.byteLength), (o = new Uint8Array(this._stashBuffer, 0, this._bufferSize)).set(new Uint8Array(e), this._stashUsed), (this._stashUsed += e.byteLength), (_ = this._dispatchChunks(this._stashBuffer.slice(0, this._stashUsed), this._stashByteStart)) < this._stashUsed && _ > 0) ) { var h = new Uint8Array(this._stashBuffer, _) o.set(h, 0) } ;(this._stashUsed -= _), (this._stashByteStart += _) } } }), (e.prototype._flushStashBuffer = function (e) { if (this._stashUsed > 0) { var t = this._stashBuffer.slice(0, this._stashUsed), i = this._dispatchChunks(t, this._stashByteStart), n = t.byteLength - i if (i < t.byteLength) { if (!e) { if (i > 0) { var r = new Uint8Array(this._stashBuffer, 0, this._bufferSize), s = new Uint8Array(t, i) r.set(s, 0), (this._stashUsed = s.byteLength), (this._stashByteStart += i) } return 0 } a.a.w(this.TAG, n + " bytes unconsumed data remain when flush buffer, dropped") } return (this._stashUsed = 0), (this._stashByteStart = 0), n } return 0 }), (e.prototype._onLoaderComplete = function (e, t) { this._flushStashBuffer(!0), this._onComplete && this._onComplete(this._extraData) }), (e.prototype._onLoaderError = function (e, t) { switch ( (a.a.e(this.TAG, "Loader error, code = " + t.code + ", msg = " + t.msg), this._flushStashBuffer(!1), this._isEarlyEofReconnecting && ((this._isEarlyEofReconnecting = !1), (e = s.b.UNRECOVERABLE_EARLY_EOF)), e) ) { case s.b.EARLY_EOF: if (!this._config.isLive && this._totalLength) { var i = this._currentRange.to + 1 return void ( i < this._totalLength && (a.a.w(this.TAG, "Connection lost, trying reconnect..."), (this._isEarlyEofReconnecting = !0), this._internalSeek(i, !1)) ) } e = s.b.UNRECOVERABLE_EARLY_EOF break case s.b.UNRECOVERABLE_EARLY_EOF: case s.b.CONNECTING_TIMEOUT: case s.b.HTTP_STATUS_CODE_INVALID: case s.b.EXCEPTION: } if (!this._onError) throw new d.d("IOException: " + t.msg) this._onError(e, t) }), e ) })() t.a = y }, function (e, t, i) { "use strict" var n = (function () { function e() {} return ( (e.install = function () { ;(Object.setPrototypeOf = Object.setPrototypeOf || function (e, t) { return (e.__proto__ = t), e }), (Object.assign = Object.assign || function (e) { if (null == e) throw new TypeError("Cannot convert undefined or null to object") for (var t = Object(e), i = 1; i < arguments.length; i++) { var n = arguments[i] if (null != n) for (var a in n) n.hasOwnProperty(a) && (t[a] = n[a]) } return t }), "function" != typeof self.Promise && i(15).polyfill() }), e ) })() n.install(), (t.a = n) }, function (e, t, i) { function n(e) { var t = {} function i(n) { if (t[n]) return t[n].exports var a = (t[n] = { i: n, l: !1, exports: {} }) return e[n].call(a.exports, a, a.exports, i), (a.l = !0), a.exports } ;(i.m = e), (i.c = t), (i.i = function (e) { return e }), (i.d = function (e, t, n) { i.o(e, t) || Object.defineProperty(e, t, { configurable: !1, enumerable: !0, get: n }) }), (i.r = function (e) { Object.defineProperty(e, "__esModule", { value: !0 }) }), (i.n = function (e) { var t = e && e.__esModule ? function () { return e.default } : function () { return e } return i.d(t, "a", t), t }), (i.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }), (i.p = "/"), (i.oe = function (e) { throw (console.error(e), e) }) var n = i((i.s = ENTRY_MODULE)) return n.default || n } function a(e) { return (e + "").replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&") } function r(e, t, n) { var r = {} r[n] = [] var s = t.toString(), o = s.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/) if (!o) return r for ( var d, _ = o[1], h = new RegExp("(\\\\n|\\W)" + a(_) + "\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)", "g"); (d = h.exec(s)); ) "dll-reference" !== d[3] && r[n].push(d[3]) for ( h = new RegExp( "\\(" + a(_) + '\\("(dll-reference\\s([\\.|\\-|\\+|\\w|/|@]+))"\\)\\)\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)', "g" ); (d = h.exec(s)); ) e[d[2]] || (r[n].push(d[1]), (e[d[2]] = i(d[1]).m)), (r[d[2]] = r[d[2]] || []), r[d[2]].push(d[4]) for (var c, u = Object.keys(r), l = 0; l < u.length; l++) for (var f = 0; f < r[u[l]].length; f++) (c = r[u[l]][f]), isNaN(1 * c) || (r[u[l]][f] = 1 * r[u[l]][f]) return r } function s(e) { return Object.keys(e).reduce(function (t, i) { return t || e[i].length > 0 }, !1) } e.exports = function (e, t) { t = t || {} var a = { main: i.m }, o = t.all ? { main: Object.keys(a.main) } : (function (e, t) { for (var i = { main: [t] }, n = { main: [] }, a = { main: {} }; s(i); ) for (var o = Object.keys(i), d = 0; d < o.length; d++) { var _ = o[d], h = i[_].pop() if (((a[_] = a[_] || {}), !a[_][h] && e[_][h])) { ;(a[_][h] = !0), (n[_] = n[_] || []), n[_].push(h) for (var c = r(e, e[_][h], _), u = Object.keys(c), l = 0; l < u.length; l++) (i[u[l]] = i[u[l]] || []), (i[u[l]] = i[u[l]].concat(c[u[l]])) } } return n })(a, e), d = "" Object.keys(o) .filter(function (e) { return "main" !== e }) .forEach(function (e) { for (var t = 0; o[e][t]; ) t++ o[e].push(t), (a[e][t] = "(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })"), (d = d + "var " + e + " = (" + n.toString().replace("ENTRY_MODULE", JSON.stringify(t)) + ")({" + o[e] .map(function (t) { return JSON.stringify(t) + ": " + a[e][t].toString() }) .join(",") + "});\n") }), (d = d + "new ((" + n.toString().replace("ENTRY_MODULE", JSON.stringify(e)) + ")({" + o.main .map(function (e) { return JSON.stringify(e) + ": " + a.main[e].toString() }) .join(",") + "}))(self);") var _ = new window.Blob([d], { type: "text/javascript" }) if (t.bare) return _ var h = (window.URL || window.webkitURL || window.mozURL || window.msURL).createObjectURL(_), c = new window.Worker(h) return (c.objectURL = h), c } }, function (e, t, i) { e.exports = i(19).default }, function (e, t, i) { ;(function (t, i) { /*! * @overview es6-promise - a tiny implementation of Promises/A+. * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) * @license Licensed under MIT license * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE * @version v4.2.8+1e68dce6 */ var n ;(n = function () { "use strict" function e(e) { return "function" == typeof e } var n = Array.isArray ? Array.isArray : function (e) { return "[object Array]" === Object.prototype.toString.call(e) }, a = 0, r = void 0, s = void 0, o = function (e, t) { ;(f[a] = e), (f[a + 1] = t), 2 === (a += 2) && (s ? s(p) : b()) }, d = "undefined" != typeof window ? window : void 0, _ = d || {}, h = _.MutationObserver || _.WebKitMutationObserver, c = "undefined" == typeof self && void 0 !== t && "[object process]" === {}.toString.call(t), u = "undefined" != typeof Uint8ClampedArray && "undefined" != typeof importScripts && "undefined" != typeof MessageChannel function l() { var e = setTimeout return function () { return e(p, 1) } } var f = new Array(1e3) function p() { for (var e = 0; e < a; e += 2) (0, f[e])(f[e + 1]), (f[e] = void 0), (f[e + 1] = void 0) a = 0 } var m, g, v, y, b = void 0 function S(e, t) { var i = this, n = new this.constructor(R) void 0 === n[A] && P(n) var a = i._state if (a) { var r = arguments[a - 1] o(function () { return I(a, n, r, i._result) }) } else C(i, n, e, t) return n } function E(e) { if (e && "object" == typeof e && e.constructor === this) return e var t = new this(R) return L(t, e), t } c ? (b = function () { return t.nextTick(p) }) : h ? ((g = 0), (v = new h(p)), (y = document.createTextNode("")), v.observe(y, { characterData: !0 }), (b = function () { y.data = g = ++g % 2 })) : u ? (((m = new MessageChannel()).port1.onmessage = p), (b = function () { return m.port2.postMessage(0) })) : (b = void 0 === d ? (function () { try { var e = Function("return this")().require("vertx") return void 0 !== (r = e.runOnLoop || e.runOnContext) ? function () { r(p) } : l() } catch (e) { return l() } })() : l()) var A = Math.random().toString(36).substring(2) function R() {} function T(t, i, n) { i.constructor === t.constructor && n === S && i.constructor.resolve === E ? (function (e, t) { 1 === t._state ? k(e, t._result) : 2 === t._state ? D(e, t._result) : C( t, void 0, function (t) { return L(e, t) }, function (t) { return D(e, t) } ) })(t, i) : void 0 === n ? k(t, i) : e(n) ? (function (e, t, i) { o(function (e) { var n = !1, a = (function (e, t, i, n) { try { e.call(t, i, n) } catch (e) { return e } })( i, t, function (i) { n || ((n = !0), t !== i ? L(e, i) : k(e, i)) }, function (t) { n || ((n = !0), D(e, t)) }, e._label ) !n && a && ((n = !0), D(e, a)) }, e) })(t, i, n) : k(t, i) } function L(e, t) { if (e === t) D(e, new TypeError("You cannot resolve a promise with itself")) else if (((a = typeof (n = t)), null === n || ("object" !== a && "function" !== a))) k(e, t) else { var i = void 0 try { i = t.then } catch (t) { return void D(e, t) } T(e, t, i) } var n, a } function w(e) { e._onerror && e._onerror(e._result), B(e) } function k(e, t) { void 0 === e._state && ((e._result = t), (e._state = 1), 0 !== e._subscribers.length && o(B, e)) } function D(e, t) { void 0 === e._state && ((e._state = 2), (e._result = t), o(w, e)) } function C(e, t, i, n) { var a = e._subscribers, r = a.length ;(e._onerror = null), (a[r] = t), (a[r + 1] = i), (a[r + 2] = n), 0 === r && e._state && o(B, e) } function B(e) { var t = e._subscribers, i = e._state if (0 !== t.length) { for (var n = void 0, a = void 0, r = e._result, s = 0; s < t.length; s += 3) (n = t[s]), (a = t[s + i]), n ? I(i, n, a, r) : a(r) e._subscribers.length = 0 } } function I(t, i, n, a) { var r = e(n), s = void 0, o = void 0, d = !0 if (r) { try { s = n(a) } catch (e) { ;(d = !1), (o = e) } if (i === s) return void D(i, new TypeError("A promises callback cannot return that same promise.")) } else s = a void 0 !== i._state || (r && d ? L(i, s) : !1 === d ? D(i, o) : 1 === t ? k(i, s) : 2 === t && D(i, s)) } var O = 0 function P(e) { ;(e[A] = O++), (e._state = void 0), (e._result = void 0), (e._subscribers = []) } var M = (function () { function e(e, t) { ;(this._instanceConstructor = e), (this.promise = new e(R)), this.promise[A] || P(this.promise), n(t) ? ((this.length = t.length), (this._remaining = t.length), (this._result = new Array(this.length)), 0 === this.length ? k(this.promise, this._result) : ((this.length = this.length || 0), this._enumerate(t), 0 === this._remaining && k(this.promise, this._result))) : D(this.promise, new Error("Array Methods must be provided an Array")) } return ( (e.prototype._enumerate = function (e) { for (var t = 0; void 0 === this._state && t < e.length; t++) this._eachEntry(e[t], t) }), (e.prototype._eachEntry = function (e, t) { var i = this._instanceConstructor, n = i.resolve if (n === E) { var a = void 0, r = void 0, s = !1 try { a = e.then } catch (e) { ;(s = !0), (r = e) } if (a === S && void 0 !== e._state) this._settledAt(e._state, t, e._result) else if ("function" != typeof a) this._remaining--, (this._result[t] = e) else if (i === x) { var o = new i(R) s ? D(o, r) : T(o, e, a), this._willSettleAt(o, t) } else this._willSettleAt( new i(function (t) { return t(e) }), t ) } else this._willSettleAt(n(e), t) }), (e.prototype._settledAt = function (e, t, i) { var n = this.promise void 0 === n._state && (this._remaining--, 2 === e ? D(n, i) : (this._result[t] = i)), 0 === this._remaining && k(n, this._result) }), (e.prototype._willSettleAt = function (e, t) { var i = this C( e, void 0, function (e) { return i._settledAt(1, t, e) }, function (e) { return i._settledAt(2, t, e) } ) }), e ) })(), x = (function () { function t(e) { ;(this[A] = O++), (this._result = this._state = void 0), (this._subscribers = []), R !== e && ("function" != typeof e && (function () { throw new TypeError("You must pass a resolver function as the first argument to the promise constructor") })(), this instanceof t ? (function (e, t) { try { t( function (t) { L(e, t) }, function (t) { D(e, t) } ) } catch (t) { D(e, t) } })(this, e) : (function () { throw new TypeError( "Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function." ) })()) } return ( (t.prototype.catch = function (e) { return this.then(null, e) }), (t.prototype.finally = function (t) { var i = this.constructor return e(t) ? this.then( function (e) { return i.resolve(t()).then(function () { return e }) }, function (e) { return i.resolve(t()).then(function () { throw e }) } ) : this.then(t, t) }), t ) })() return ( (x.prototype.then = S), (x.all = function (e) { return new M(this, e).promise }), (x.race = function (e) { var t = this return n(e) ? new t(function (i, n) { for (var a = e.length, r = 0; r < a; r++) t.resolve(e[r]).then(i, n) }) : new t(function (e, t) { return t(new TypeError("You must pass an array to race.")) }) }), (x.resolve = E), (x.reject = function (e) { var t = new this(R) return D(t, e), t }), (x._setScheduler = function (e) { s = e }), (x._setAsap = function (e) { o = e }), (x._asap = o), (x.polyfill = function () { var e = void 0 if (void 0 !== i) e = i else if ("undefined" != typeof self) e = self else try { e = Function("return this")() } catch (e) { throw new Error("polyfill failed because global object is unavailable in this environment") } var t = e.Promise if (t) { var n = null try { n = Object.prototype.toString.call(t.resolve()) } catch (e) {} if ("[object Promise]" === n && !t.cast) return } e.Promise = x }), (x.Promise = x), x ) }), (e.exports = n()) }).call(this, i(16), i(17)) }, function (e, t) { var i, n, a = (e.exports = {}) function r() { throw new Error("setTimeout has not been defined") } function s() { throw new Error("clearTimeout has not been defined") } function o(e) { if (i === setTimeout) return setTimeout(e, 0) if ((i === r || !i) && setTimeout) return (i = setTimeout), setTimeout(e, 0) try { return i(e, 0) } catch (t) { try { return i.call(null, e, 0) } catch (t) { return i.call(this, e, 0) } } } !(function () { try { i = "function" == typeof setTimeout ? setTimeout : r } catch (e) { i = r } try { n = "function" == typeof clearTimeout ? clearTimeout : s } catch (e) { n = s } })() var d, _ = [], h = !1, c = -1 function u() { h && d && ((h = !1), d.length ? (_ = d.concat(_)) : (c = -1), _.length && l()) } function l() { if (!h) { var e = o(u) h = !0 for (var t = _.length; t; ) { for (d = _, _ = []; ++c < t; ) d && d[c].run() ;(c = -1), (t = _.length) } ;(d = null), (h = !1), (function (e) { if (n === clearTimeout) return clearTimeout(e) if ((n === s || !n) && clearTimeout) return (n = clearTimeout), clearTimeout(e) try { n(e) } catch (t) { try { return n.call(null, e) } catch (t) { return n.call(this, e) } } })(e) } } function f(e, t) { ;(this.fun = e), (this.array = t) } function p() {} ;(a.nextTick = function (e) { var t = new Array(arguments.length - 1) if (arguments.length > 1) for (var i = 1; i < arguments.length; i++) t[i - 1] = arguments[i] _.push(new f(e, t)), 1 !== _.length || h || o(l) }), (f.prototype.run = function () { this.fun.apply(null, this.array) }), (a.title = "browser"), (a.browser = !0), (a.env = {}), (a.argv = []), (a.version = ""), (a.versions = {}), (a.on = p), (a.addListener = p), (a.once = p), (a.off = p), (a.removeListener = p), (a.removeAllListeners = p), (a.emit = p), (a.prependListener = p), (a.prependOnceListener = p), (a.listeners = function (e) { return [] }), (a.binding = function (e) { throw new Error("process.binding is not supported") }), (a.cwd = function () { return "/" }), (a.chdir = function (e) { throw new Error("process.chdir is not supported") }), (a.umask = function () { return 0 }) }, function (e, t) { var i i = (function () { return this })() try { i = i || new Function("return this")() } catch (e) { "object" == typeof window && (i = window) } e.exports = i }, function (e, t, i) { "use strict" i.r(t) var n = i(9), a = i(12), r = i(10), s = i(1) t.default = function (e) { var t = null, i = function (t, i) { e.postMessage({ msg: "logcat_callback", data: { type: t, logcat: i } }) }.bind(this) function o(t, i) { var n = { msg: s.a.INIT_SEGMENT, data: { type: t, data: i } } e.postMessage(n, [i.data]) } function d(t, i) { var n = { msg: s.a.MEDIA_SEGMENT, data: { type: t, data: i } } e.postMessage(n, [i.data]) } function _() { var t = { msg: s.a.LOADING_COMPLETE } e.postMessage(t) } function h() { var t = { msg: s.a.RECOVERED_EARLY_EOF } e.postMessage(t) } function c(t) { var i = { msg: s.a.MEDIA_INFO, data: t } e.postMessage(i) } function u(t) { var i = { msg: s.a.METADATA_ARRIVED, data: t } e.postMessage(i) } function l(t) { var i = { msg: s.a.SCRIPTDATA_ARRIVED, data: t } e.postMessage(i) } function f(t) { var i = { msg: s.a.TIMED_ID3_METADATA_ARRIVED, data: t } e.postMessage(i) } function p(t) { var i = { msg: s.a.SMPTE2038_METADATA_ARRIVED, data: t } e.postMessage(i) } function m(t) { var i = { msg: s.a.SCTE35_METADATA_ARRIVED, data: t } e.postMessage(i) } function g(t) { var i = { msg: s.a.PES_PRIVATE_DATA_DESCRIPTOR, data: t } e.postMessage(i) } function v(t) { var i = { msg: s.a.PES_PRIVATE_DATA_ARRIVED, data: t } e.postMessage(i) } function y(t) { var i = { msg: s.a.STATISTICS_INFO, data: t } e.postMessage(i) } function b(t, i) { e.postMessage({ msg: s.a.IO_ERROR, data: { type: t, info: i } }) } function S(t, i) { e.postMessage({ msg: s.a.DEMUX_ERROR, data: { type: t, info: i } }) } function E(t) { e.postMessage({ msg: s.a.RECOMMEND_SEEKPOINT, data: t }) } a.a.install(), e.addEventListener("message", function (a) { switch (a.data.cmd) { case "init": ;(t = new r.a(a.data.param[0], a.data.param[1])).on(s.a.IO_ERROR, b.bind(this)), t.on(s.a.DEMUX_ERROR, S.bind(this)), t.on(s.a.INIT_SEGMENT, o.bind(this)), t.on(s.a.MEDIA_SEGMENT, d.bind(this)), t.on(s.a.LOADING_COMPLETE, _.bind(this)), t.on(s.a.RECOVERED_EARLY_EOF, h.bind(this)), t.on(s.a.MEDIA_INFO, c.bind(this)), t.on(s.a.METADATA_ARRIVED, u.bind(this)), t.on(s.a.SCRIPTDATA_ARRIVED, l.bind(this)), t.on(s.a.TIMED_ID3_METADATA_ARRIVED, f.bind(this)), t.on(s.a.SMPTE2038_METADATA_ARRIVED, p.bind(this)), t.on(s.a.SCTE35_METADATA_ARRIVED, m.bind(this)), t.on(s.a.PES_PRIVATE_DATA_DESCRIPTOR, g.bind(this)), t.on(s.a.PES_PRIVATE_DATA_ARRIVED, v.bind(this)), t.on(s.a.STATISTICS_INFO, y.bind(this)), t.on(s.a.RECOMMEND_SEEKPOINT, E.bind(this)) break case "destroy": t && (t.destroy(), (t = null)), e.postMessage({ msg: "destroyed" }) break case "start": t.start() break case "stop": t.stop() break case "seek": t.seek(a.data.param) break case "pause": t.pause() break case "resume": t.resume() break case "logging_config": var A = a.data.param n.a.applyConfig(A), !0 === A.enableCallback ? n.a.addLogListener(i) : n.a.removeLogListener(i) } }) } }, function (e, t, i) { "use strict" i.r(t) var n = i(12), a = i(11), r = { enableWorker: !1, enableStashBuffer: !0, stashInitialSize: void 0, isLive: !1, liveBufferLatencyChasing: !1, liveBufferLatencyMaxLatency: 1.5, liveBufferLatencyMinRemain: 0.5, lazyLoad: !0, lazyLoadMaxDuration: 180, lazyLoadRecoverDuration: 30, deferLoadAfterSourceOpen: !0, autoCleanupMaxBackwardDuration: 180, autoCleanupMinBackwardDuration: 120, statisticsInfoReportInterval: 600, fixAudioTimestampGap: !0, accurateSeek: !1, seekType: "range", seekParamStart: "bstart", seekParamEnd: "bend", rangeLoadZeroStart: !1, customSeekHandler: void 0, reuseRedirectedURL: !1, headers: void 0, customLoader: void 0 } function s() { return Object.assign({}, r) } var o = (function () { function e() {} return ( (e.supportMSEH264Playback = function () { return window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"') }), (e.supportMSEH265Playback = function () { return window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs="hvc1.1.6.L93.B0"') }), (e.supportNetworkStreamIO = function () { var e = new a.a({}, s()), t = e.loaderType return e.destroy(), "fetch-stream-loader" == t || "xhr-moz-chunked-loader" == t }), (e.getNetworkLoaderTypeName = function () { var e = new a.a({}, s()), t = e.loaderType return e.destroy(), t }), (e.supportNativeMediaPlayback = function (t) { null == e.videoElement && (e.videoElement = window.document.createElement("video")) var i = e.videoElement.canPlayType(t) return "probably" === i || "maybe" == i }), (e.getFeatureList = function () { var t = { msePlayback: !1, mseLivePlayback: !1, mseH265Playback: !1, networkStreamIO: !1, networkLoaderName: "", nativeMP4H264Playback: !1, nativeMP4H265Playback: !1, nativeWebmVP8Playback: !1, nativeWebmVP9Playback: !1 } return ( (t.msePlayback = e.supportMSEH264Playback()), (t.networkStreamIO = e.supportNetworkStreamIO()), (t.networkLoaderName = e.getNetworkLoaderTypeName()), (t.mseLivePlayback = t.msePlayback && t.networkStreamIO), (t.mseH265Playback = e.supportMSEH265Playback()), (t.nativeMP4H264Playback = e.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"')), (t.nativeMP4H265Playback = e.supportNativeMediaPlayback('video/mp4; codecs="hvc1.1.6.L93.B0"')), (t.nativeWebmVP8Playback = e.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"')), (t.nativeWebmVP9Playback = e.supportNativeMediaPlayback('video/webm; codecs="vp9"')), t ) }), e ) })(), d = i(2), _ = i(6), h = i.n(_), c = i(0), u = i(4), l = { ERROR: "error", LOADING_COMPLETE: "loading_complete", RECOVERED_EARLY_EOF: "recovered_early_eof", MEDIA_INFO: "media_info", METADATA_ARRIVED: "metadata_arrived", SCRIPTDATA_ARRIVED: "scriptdata_arrived", TIMED_ID3_METADATA_ARRIVED: "timed_id3_metadata_arrived", SMPTE2038_METADATA_ARRIVED: "smpte2038_metadata_arrived", SCTE35_METADATA_ARRIVED: "scte35_metadata_arrived", PES_PRIVATE_DATA_DESCRIPTOR: "pes_private_data_descriptor", PES_PRIVATE_DATA_ARRIVED: "pes_private_data_arrived", STATISTICS_INFO: "statistics_info" }, f = i(13), p = i.n(f), m = i(9), g = i(10), v = i(1), y = i(8), b = (function () { function e(e, t) { if (((this.TAG = "Transmuxer"), (this._emitter = new h.a()), t.enableWorker && "undefined" != typeof Worker)) try { ;(this._worker = p()(18)), (this._workerDestroying = !1), this._worker.addEventListener("message", this._onWorkerMessage.bind(this)), this._worker.postMessage({ cmd: "init", param: [e, t] }), (this.e = { onLoggingConfigChanged: this._onLoggingConfigChanged.bind(this) }), m.a.registerListener(this.e.onLoggingConfigChanged), this._worker.postMessage({ cmd: "logging_config", param: m.a.getConfig() }) } catch (i) { c.a.e(this.TAG, "Error while initialize transmuxing worker, fallback to inline transmuxing"), (this._worker = null), (this._controller = new g.a(e, t)) } else this._controller = new g.a(e, t) if (this._controller) { var i = this._controller i.on(v.a.IO_ERROR, this._onIOError.bind(this)), i.on(v.a.DEMUX_ERROR, this._onDemuxError.bind(this)), i.on(v.a.INIT_SEGMENT, this._onInitSegment.bind(this)), i.on(v.a.MEDIA_SEGMENT, this._onMediaSegment.bind(this)), i.on(v.a.LOADING_COMPLETE, this._onLoadingComplete.bind(this)), i.on(v.a.RECOVERED_EARLY_EOF, this._onRecoveredEarlyEof.bind(this)), i.on(v.a.MEDIA_INFO, this._onMediaInfo.bind(this)), i.on(v.a.METADATA_ARRIVED, this._onMetaDataArrived.bind(this)), i.on(v.a.SCRIPTDATA_ARRIVED, this._onScriptDataArrived.bind(this)), i.on(v.a.TIMED_ID3_METADATA_ARRIVED, this._onTimedID3MetadataArrived.bind(this)), i.on(v.a.SMPTE2038_METADATA_ARRIVED, this._onSMPTE2038MetadataArrived.bind(this)), i.on(v.a.SCTE35_METADATA_ARRIVED, this._onSCTE35MetadataArrived.bind(this)), i.on(v.a.PES_PRIVATE_DATA_DESCRIPTOR, this._onPESPrivateDataDescriptor.bind(this)), i.on(v.a.PES_PRIVATE_DATA_ARRIVED, this._onPESPrivateDataArrived.bind(this)), i.on(v.a.STATISTICS_INFO, this._onStatisticsInfo.bind(this)), i.on(v.a.RECOMMEND_SEEKPOINT, this._onRecommendSeekpoint.bind(this)) } } return ( (e.prototype.destroy = function () { this._worker ? this._workerDestroying || ((this._workerDestroying = !0), this._worker.postMessage({ cmd: "destroy" }), m.a.removeListener(this.e.onLoggingConfigChanged), (this.e = null)) : (this._controller.destroy(), (this._controller = null)), this._emitter.removeAllListeners(), (this._emitter = null) }), (e.prototype.on = function (e, t) { this._emitter.addListener(e, t) }), (e.prototype.off = function (e, t) { this._emitter.removeListener(e, t) }), (e.prototype.hasWorker = function () { return null != this._worker }), (e.prototype.open = function () { this._worker ? this._worker.postMessage({ cmd: "start" }) : this._controller.start() }), (e.prototype.close = function () { this._worker ? this._worker.postMessage({ cmd: "stop" }) : this._controller.stop() }), (e.prototype.seek = function (e) { this._worker ? this._worker.postMessage({ cmd: "seek", param: e }) : this._controller.seek(e) }), (e.prototype.pause = function () { this._worker ? this._worker.postMessage({ cmd: "pause" }) : this._controller.pause() }), (e.prototype.resume = function () { this._worker ? this._worker.postMessage({ cmd: "resume" }) : this._controller.resume() }), (e.prototype._onInitSegment = function (e, t) { var i = this Promise.resolve().then(function () { i._emitter.emit(v.a.INIT_SEGMENT, e, t) }) }), (e.prototype._onMediaSegment = function (e, t) { var i = this Promise.resolve().then(function () { i._emitter.emit(v.a.MEDIA_SEGMENT, e, t) }) }), (e.prototype._onLoadingComplete = function () { var e = this Promise.resolve().then(function () { e._emitter.emit(v.a.LOADING_COMPLETE) }) }), (e.prototype._onRecoveredEarlyEof = function () { var e = this Promise.resolve().then(function () { e._emitter.emit(v.a.RECOVERED_EARLY_EOF) }) }), (e.prototype._onMediaInfo = function (e) { var t = this Promise.resolve().then(function () { t._emitter.emit(v.a.MEDIA_INFO, e) }) }), (e.prototype._onMetaDataArrived = function (e) { var t = this Promise.resolve().then(function () { t._emitter.emit(v.a.METADATA_ARRIVED, e) }) }), (e.prototype._onScriptDataArrived = function (e) { var t = this Promise.resolve().then(function () { t._emitter.emit(v.a.SCRIPTDATA_ARRIVED, e) }) }), (e.prototype._onTimedID3MetadataArrived = function (e) { var t = this Promise.resolve().then(function () { t._emitter.emit(v.a.TIMED_ID3_METADATA_ARRIVED, e) }) }), (e.prototype._onSMPTE2038MetadataArrived = function (e) { var t = this Promise.resolve().then(function () { t._emitter.emit(v.a.SMPTE2038_METADATA_ARRIVED, e) }) }), (e.prototype._onSCTE35MetadataArrived = function (e) { var t = this Promise.resolve().then(function () { t._emitter.emit(v.a.SCTE35_METADATA_ARRIVED, e) }) }), (e.prototype._onPESPrivateDataDescriptor = function (e) { var t = this Promise.resolve().then(function () { t._emitter.emit(v.a.PES_PRIVATE_DATA_DESCRIPTOR, e) }) }), (e.prototype._onPESPrivateDataArrived = function (e) { var t = this Promise.resolve().then(function () { t._emitter.emit(v.a.PES_PRIVATE_DATA_ARRIVED, e) }) }), (e.prototype._onStatisticsInfo = function (e) { var t = this Promise.resolve().then(function () { t._emitter.emit(v.a.STATISTICS_INFO, e) }) }), (e.prototype._onIOError = function (e, t) { var i = this Promise.resolve().then(function () { i._emitter.emit(v.a.IO_ERROR, e, t) }) }), (e.prototype._onDemuxError = function (e, t) { var i = this Promise.resolve().then(function () { i._emitter.emit(v.a.DEMUX_ERROR, e, t) }) }), (e.prototype._onRecommendSeekpoint = function (e) { var t = this Promise.resolve().then(function () { t._emitter.emit(v.a.RECOMMEND_SEEKPOINT, e) }) }), (e.prototype._onLoggingConfigChanged = function (e) { this._worker && this._worker.postMessage({ cmd: "logging_config", param: e }) }), (e.prototype._onWorkerMessage = function (e) { var t = e.data, i = t.data if ("destroyed" === t.msg || this._workerDestroying) return (this._workerDestroying = !1), this._worker.terminate(), void (this._worker = null) switch (t.msg) { case v.a.INIT_SEGMENT: case v.a.MEDIA_SEGMENT: this._emitter.emit(t.msg, i.type, i.data) break case v.a.LOADING_COMPLETE: case v.a.RECOVERED_EARLY_EOF: this._emitter.emit(t.msg) break case v.a.MEDIA_INFO: Object.setPrototypeOf(i, y.a.prototype), this._emitter.emit(t.msg, i) break case v.a.METADATA_ARRIVED: case v.a.SCRIPTDATA_ARRIVED: case v.a.TIMED_ID3_METADATA_ARRIVED: case v.a.SMPTE2038_METADATA_ARRIVED: case v.a.SCTE35_METADATA_ARRIVED: case v.a.PES_PRIVATE_DATA_DESCRIPTOR: case v.a.PES_PRIVATE_DATA_ARRIVED: case v.a.STATISTICS_INFO: this._emitter.emit(t.msg, i) break case v.a.IO_ERROR: case v.a.DEMUX_ERROR: this._emitter.emit(t.msg, i.type, i.info) break case v.a.RECOMMEND_SEEKPOINT: this._emitter.emit(t.msg, i) break case "logcat_callback": c.a.emitter.emit("log", i.type, i.logcat) } }), e ) })(), S = { ERROR: "error", SOURCE_OPEN: "source_open", UPDATE_END: "update_end", BUFFER_FULL: "buffer_full" }, E = i(7), A = i(3), R = (function () { function e(e) { ;(this.TAG = "MSEController"), (this._config = e), (this._emitter = new h.a()), this._config.isLive && null == this._config.autoCleanupSourceBuffer && (this._config.autoCleanupSourceBuffer = !0), (this.e = { onSourceOpen: this._onSourceOpen.bind(this), onSourceEnded: this._onSourceEnded.bind(this), onSourceClose: this._onSourceClose.bind(this), onSourceBufferError: this._onSourceBufferError.bind(this), onSourceBufferUpdateEnd: this._onSourceBufferUpdateEnd.bind(this) }), (this._mediaSource = null), (this._mediaSourceObjectURL = null), (this._mediaElement = null), (this._isBufferFull = !1), (this._hasPendingEos = !1), (this._requireSetMediaDuration = !1), (this._pendingMediaDuration = 0), (this._pendingSourceBufferInit = []), (this._mimeTypes = { video: null, audio: null }), (this._sourceBuffers = { video: null, audio: null }), (this._lastInitSegments = { video: null, audio: null }), (this._pendingSegments = { video: [], audio: [] }), (this._pendingRemoveRanges = { video: [], audio: [] }), (this._idrList = new E.a()) } return ( (e.prototype.destroy = function () { ;(this._mediaElement || this._mediaSource) && this.detachMediaElement(), (this.e = null), this._emitter.removeAllListeners(), (this._emitter = null) }), (e.prototype.on = function (e, t) { this._emitter.addListener(e, t) }), (e.prototype.off = function (e, t) { this._emitter.removeListener(e, t) }), (e.prototype.attachMediaElement = function (e) { if (this._mediaSource) throw new A.a("MediaSource has been attached to an HTMLMediaElement!") var t = (this._mediaSource = new window.MediaSource()) t.addEventListener("sourceopen", this.e.onSourceOpen), t.addEventListener("sourceended", this.e.onSourceEnded), t.addEventListener("sourceclose", this.e.onSourceClose), (this._mediaElement = e), (this._mediaSourceObjectURL = window.URL.createObjectURL(this._mediaSource)), (e.src = this._mediaSourceObjectURL) }), (e.prototype.detachMediaElement = function () { if (this._mediaSource) { var e = this._mediaSource for (var t in this._sourceBuffers) { var i = this._pendingSegments[t] i.splice(0, i.length), (this._pendingSegments[t] = null), (this._pendingRemoveRanges[t] = null), (this._lastInitSegments[t] = null) var n = this._sourceBuffers[t] if (n) { if ("closed" !== e.readyState) { try { e.removeSourceBuffer(n) } catch (e) { c.a.e(this.TAG, e.message) } n.removeEventListener("error", this.e.onSourceBufferError), n.removeEventListener("updateend", this.e.onSourceBufferUpdateEnd) } ;(this._mimeTypes[t] = null), (this._sourceBuffers[t] = null) } } if ("open" === e.readyState) try { e.endOfStream() } catch (e) { c.a.e(this.TAG, e.message) } e.removeEventListener("sourceopen", this.e.onSourceOpen), e.removeEventListener("sourceended", this.e.onSourceEnded), e.removeEventListener("sourceclose", this.e.onSourceClose), (this._pendingSourceBufferInit = []), (this._isBufferFull = !1), this._idrList.clear(), (this._mediaSource = null) } this._mediaElement && ((this._mediaElement.src = ""), this._mediaElement.removeAttribute("src"), (this._mediaElement = null)), this._mediaSourceObjectURL && (window.URL.revokeObjectURL(this._mediaSourceObjectURL), (this._mediaSourceObjectURL = null)) }), (e.prototype.appendInitSegment = function (e, t) { if (!this._mediaSource || "open" !== this._mediaSource.readyState) return this._pendingSourceBufferInit.push(e), void this._pendingSegments[e.type].push(e) var i = e, n = "" + i.container i.codec && i.codec.length > 0 && (n += ";codecs=" + i.codec) var a = !1 if ( (c.a.v(this.TAG, "Received Initialization Segment, mimeType: " + n), (this._lastInitSegments[i.type] = i), n !== this._mimeTypes[i.type]) ) { if (this._mimeTypes[i.type]) c.a.v(this.TAG, "Notice: " + i.type + " mimeType changed, origin: " + this._mimeTypes[i.type] + ", target: " + n) else { a = !0 try { var r = (this._sourceBuffers[i.type] = this._mediaSource.addSourceBuffer(n)) r.addEventListener("error", this.e.onSourceBufferError), r.addEventListener("updateend", this.e.onSourceBufferUpdateEnd) } catch (e) { return c.a.e(this.TAG, e.message), void this._emitter.emit(S.ERROR, { code: e.code, msg: e.message }) } } this._mimeTypes[i.type] = n } t || this._pendingSegments[i.type].push(i), a || (this._sourceBuffers[i.type] && !this._sourceBuffers[i.type].updating && this._doAppendSegments()), u.a.safari && "audio/mpeg" === i.container && i.mediaDuration > 0 && ((this._requireSetMediaDuration = !0), (this._pendingMediaDuration = i.mediaDuration / 1e3), this._updateMediaSourceDuration()) }), (e.prototype.appendMediaSegment = function (e) { var t = e this._pendingSegments[t.type].push(t), this._config.autoCleanupSourceBuffer && this._needCleanupSourceBuffer() && this._doCleanupSourceBuffer() var i = this._sourceBuffers[t.type] !i || i.updating || this._hasPendingRemoveRanges() || this._doAppendSegments() }), (e.prototype.seek = function (e) { for (var t in this._sourceBuffers) if (this._sourceBuffers[t]) { var i = this._sourceBuffers[t] if ("open" === this._mediaSource.readyState) try { i.abort() } catch (e) { c.a.e(this.TAG, e.message) } this._idrList.clear() var n = this._pendingSegments[t] if ((n.splice(0, n.length), "closed" !== this._mediaSource.readyState)) { for (var a = 0; a < i.buffered.length; a++) { var r = i.buffered.start(a), s = i.buffered.end(a) this._pendingRemoveRanges[t].push({ start: r, end: s }) } if ((i.updating || this._doRemoveRanges(), u.a.safari)) { var o = this._lastInitSegments[t] o && (this._pendingSegments[t].push(o), i.updating || this._doAppendSegments()) } } } }), (e.prototype.endOfStream = function () { var e = this._mediaSource, t = this._sourceBuffers e && "open" === e.readyState ? (t.video && t.video.updating) || (t.audio && t.audio.updating) ? (this._hasPendingEos = !0) : ((this._hasPendingEos = !1), e.endOfStream()) : e && "closed" === e.readyState && this._hasPendingSegments() && (this._hasPendingEos = !0) }), (e.prototype.getNearestKeyframe = function (e) { return this._idrList.getLastSyncPointBeforeDts(e) }), (e.prototype._needCleanupSourceBuffer = function () { if (!this._config.autoCleanupSourceBuffer) return !1 var e = this._mediaElement.currentTime for (var t in this._sourceBuffers) { var i = this._sourceBuffers[t] if (i) { var n = i.buffered if (n.length >= 1 && e - n.start(0) >= this._config.autoCleanupMaxBackwardDuration) return !0 } } return !1 }), (e.prototype._doCleanupSourceBuffer = function () { var e = this._mediaElement.currentTime for (var t in this._sourceBuffers) { var i = this._sourceBuffers[t] if (i) { for (var n = i.buffered, a = !1, r = 0; r < n.length; r++) { var s = n.start(r), o = n.end(r) if (s <= e && e < o + 3) { if (e - s >= this._config.autoCleanupMaxBackwardDuration) { a = !0 var d = e - this._config.autoCleanupMinBackwardDuration this._pendingRemoveRanges[t].push({ start: s, end: d }) } } else o < e && ((a = !0), this._pendingRemoveRanges[t].push({ start: s, end: o })) } a && !i.updating && this._doRemoveRanges() } } }), (e.prototype._updateMediaSourceDuration = function () { var e = this._sourceBuffers if ( 0 !== this._mediaElement.readyState && "open" === this._mediaSource.readyState && !((e.video && e.video.updating) || (e.audio && e.audio.updating)) ) { var t = this._mediaSource.duration, i = this._pendingMediaDuration i > 0 && (isNaN(t) || i > t) && (c.a.v(this.TAG, "Update MediaSource duration from " + t + " to " + i), (this._mediaSource.duration = i)), (this._requireSetMediaDuration = !1), (this._pendingMediaDuration = 0) } }), (e.prototype._doRemoveRanges = function () { for (var e in this._pendingRemoveRanges) if (this._sourceBuffers[e] && !this._sourceBuffers[e].updating) for (var t = this._sourceBuffers[e], i = this._pendingRemoveRanges[e]; i.length && !t.updating; ) { var n = i.shift() t.remove(n.start, n.end) } }), (e.prototype._doAppendSegments = function () { var e = this._pendingSegments for (var t in e) if (this._sourceBuffers[t] && !this._sourceBuffers[t].updating && e[t].length > 0) { var i = e[t].shift() if (i.timestampOffset) { var n = this._sourceBuffers[t].timestampOffset, a = i.timestampOffset / 1e3 Math.abs(n - a) > 0.1 && (c.a.v(this.TAG, "Update MPEG audio timestampOffset from " + n + " to " + a), (this._sourceBuffers[t].timestampOffset = a)), delete i.timestampOffset } if (!i.data || 0 === i.data.byteLength) continue try { this._sourceBuffers[t].appendBuffer(i.data), (this._isBufferFull = !1), "video" === t && i.hasOwnProperty("info") && this._idrList.appendArray(i.info.syncPoints) } catch (e) { this._pendingSegments[t].unshift(i), 22 === e.code ? (this._isBufferFull || this._emitter.emit(S.BUFFER_FULL), (this._isBufferFull = !0)) : (c.a.e(this.TAG, e.message), this._emitter.emit(S.ERROR, { code: e.code, msg: e.message })) } } }), (e.prototype._onSourceOpen = function () { if ( (c.a.v(this.TAG, "MediaSource onSourceOpen"), this._mediaSource.removeEventListener("sourceopen", this.e.onSourceOpen), this._pendingSourceBufferInit.length > 0) ) for (var e = this._pendingSourceBufferInit; e.length; ) { var t = e.shift() this.appendInitSegment(t, !0) } this._hasPendingSegments() && this._doAppendSegments(), this._emitter.emit(S.SOURCE_OPEN) }), (e.prototype._onSourceEnded = function () { c.a.v(this.TAG, "MediaSource onSourceEnded") }), (e.prototype._onSourceClose = function () { c.a.v(this.TAG, "MediaSource onSourceClose"), this._mediaSource && null != this.e && (this._mediaSource.removeEventListener("sourceopen", this.e.onSourceOpen), this._mediaSource.removeEventListener("sourceended", this.e.onSourceEnded), this._mediaSource.removeEventListener("sourceclose", this.e.onSourceClose)) }), (e.prototype._hasPendingSegments = function () { var e = this._pendingSegments return e.video.length > 0 || e.audio.length > 0 }), (e.prototype._hasPendingRemoveRanges = function () { var e = this._pendingRemoveRanges return e.video.length > 0 || e.audio.length > 0 }), (e.prototype._onSourceBufferUpdateEnd = function () { this._requireSetMediaDuration ? this._updateMediaSourceDuration() : this._hasPendingRemoveRanges() ? this._doRemoveRanges() : this._hasPendingSegments() ? this._doAppendSegments() : this._hasPendingEos && this.endOfStream(), this._emitter.emit(S.UPDATE_END) }), (e.prototype._onSourceBufferError = function (e) { c.a.e(this.TAG, "SourceBuffer Error: " + e) }), e ) })(), T = i(5), L = { NETWORK_ERROR: "NetworkError", MEDIA_ERROR: "MediaError", OTHER_ERROR: "OtherError" }, w = { NETWORK_EXCEPTION: d.b.EXCEPTION, NETWORK_STATUS_CODE_INVALID: d.b.HTTP_STATUS_CODE_INVALID, NETWORK_TIMEOUT: d.b.CONNECTING_TIMEOUT, NETWORK_UNRECOVERABLE_EARLY_EOF: d.b.UNRECOVERABLE_EARLY_EOF, MEDIA_MSE_ERROR: "MediaMSEError", MEDIA_FORMAT_ERROR: T.a.FORMAT_ERROR, MEDIA_FORMAT_UNSUPPORTED: T.a.FORMAT_UNSUPPORTED, MEDIA_CODEC_UNSUPPORTED: T.a.CODEC_UNSUPPORTED }, k = (function () { function e(e, t) { ;(this.TAG = "MSEPlayer"), (this._type = "MSEPlayer"), (this._emitter = new h.a()), (this._config = s()), "object" == typeof t && Object.assign(this._config, t) var i = e.type.toLowerCase() if ("mse" !== i && "mpegts" !== i && "m2ts" !== i && "flv" !== i) throw new A.b("MSEPlayer requires an mpegts/m2ts/flv MediaDataSource input!") !0 === e.isLive && (this._config.isLive = !0), (this.e = { onvLoadedMetadata: this._onvLoadedMetadata.bind(this), onvSeeking: this._onvSeeking.bind(this), onvCanPlay: this._onvCanPlay.bind(this), onvStalled: this._onvStalled.bind(this), onvProgress: this._onvProgress.bind(this) }), self.performance && self.performance.now ? (this._now = self.performance.now.bind(self.performance)) : (this._now = Date.now), (this._pendingSeekTime = null), (this._requestSetTime = !1), (this._seekpointRecord = null), (this._progressChecker = null), (this._mediaDataSource = e), (this._mediaElement = null), (this._msectl = null), (this._transmuxer = null), (this._mseSourceOpened = !1), (this._hasPendingLoad = !1), (this._receivedCanPlay = !1), (this._mediaInfo = null), (this._statisticsInfo = null) var n = u.a.chrome && (u.a.version.major < 50 || (50 === u.a.version.major && u.a.version.build < 2661)) ;(this._alwaysSeekKeyframe = !!(n || u.a.msedge || u.a.msie)), this._alwaysSeekKeyframe && (this._config.accurateSeek = !1) } return ( (e.prototype.destroy = function () { null != this._progressChecker && (window.clearInterval(this._progressChecker), (this._progressChecker = null)), this._transmuxer && this.unload(), this._mediaElement && this.detachMediaElement(), (this.e = null), (this._mediaDataSource = null), this._emitter.removeAllListeners(), (this._emitter = null) }), (e.prototype.on = function (e, t) { var i = this e === l.MEDIA_INFO ? null != this._mediaInfo && Promise.resolve().then(function () { i._emitter.emit(l.MEDIA_INFO, i.mediaInfo) }) : e === l.STATISTICS_INFO && null != this._statisticsInfo && Promise.resolve().then(function () { i._emitter.emit(l.STATISTICS_INFO, i.statisticsInfo) }), this._emitter.addListener(e, t) }), (e.prototype.off = function (e, t) { this._emitter.removeListener(e, t) }), (e.prototype.attachMediaElement = function (e) { var t = this if ( ((this._mediaElement = e), e.addEventListener("loadedmetadata", this.e.onvLoadedMetadata), e.addEventListener("seeking", this.e.onvSeeking), e.addEventListener("canplay", this.e.onvCanPlay), e.addEventListener("stalled", this.e.onvStalled), e.addEventListener("progress", this.e.onvProgress), (this._msectl = new R(this._config)), this._msectl.on(S.UPDATE_END, this._onmseUpdateEnd.bind(this)), this._msectl.on(S.BUFFER_FULL, this._onmseBufferFull.bind(this)), this._msectl.on(S.SOURCE_OPEN, function () { ;(t._mseSourceOpened = !0), t._hasPendingLoad && ((t._hasPendingLoad = !1), t.load()) }), this._msectl.on(S.ERROR, function (e) { t._emitter.emit(l.ERROR, L.MEDIA_ERROR, w.MEDIA_MSE_ERROR, e) }), this._msectl.attachMediaElement(e), null != this._pendingSeekTime) ) try { ;(e.currentTime = this._pendingSeekTime), (this._pendingSeekTime = null) } catch (e) {} }), (e.prototype.detachMediaElement = function () { this._mediaElement && (this._msectl.detachMediaElement(), this._mediaElement.removeEventListener("loadedmetadata", this.e.onvLoadedMetadata), this._mediaElement.removeEventListener("seeking", this.e.onvSeeking), this._mediaElement.removeEventListener("canplay", this.e.onvCanPlay), this._mediaElement.removeEventListener("stalled", this.e.onvStalled), this._mediaElement.removeEventListener("progress", this.e.onvProgress), (this._mediaElement = null)), this._msectl && (this._msectl.destroy(), (this._msectl = null)) }), (e.prototype.load = function () { var e = this if (!this._mediaElement) throw new A.a("HTMLMediaElement must be attached before load()!") if (this._transmuxer) throw new A.a("MSEPlayer.load() has been called, please call unload() first!") this._hasPendingLoad || (this._config.deferLoadAfterSourceOpen && !1 === this._mseSourceOpened ? (this._hasPendingLoad = !0) : (this._mediaElement.readyState > 0 && ((this._requestSetTime = !0), (this._mediaElement.currentTime = 0)), (this._transmuxer = new b(this._mediaDataSource, this._config)), this._transmuxer.on(v.a.INIT_SEGMENT, function (t, i) { e._msectl.appendInitSegment(i) }), this._transmuxer.on(v.a.MEDIA_SEGMENT, function (t, i) { if ((e._msectl.appendMediaSegment(i), e._config.lazyLoad && !e._config.isLive)) { var n = e._mediaElement.currentTime i.info.endDts >= 1e3 * (n + e._config.lazyLoadMaxDuration) && null == e._progressChecker && (c.a.v(e.TAG, "Maximum buffering duration exceeded, suspend transmuxing task"), e._suspendTransmuxer()) } }), this._transmuxer.on(v.a.LOADING_COMPLETE, function () { e._msectl.endOfStream(), e._emitter.emit(l.LOADING_COMPLETE) }), this._transmuxer.on(v.a.RECOVERED_EARLY_EOF, function () { e._emitter.emit(l.RECOVERED_EARLY_EOF) }), this._transmuxer.on(v.a.IO_ERROR, function (t, i) { e._emitter.emit(l.ERROR, L.NETWORK_ERROR, t, i) }), this._transmuxer.on(v.a.DEMUX_ERROR, function (t, i) { e._emitter.emit(l.ERROR, L.MEDIA_ERROR, t, { code: -1, msg: i }) }), this._transmuxer.on(v.a.MEDIA_INFO, function (t) { ;(e._mediaInfo = t), e._emitter.emit(l.MEDIA_INFO, Object.assign({}, t)) }), this._transmuxer.on(v.a.METADATA_ARRIVED, function (t) { e._emitter.emit(l.METADATA_ARRIVED, t) }), this._transmuxer.on(v.a.SCRIPTDATA_ARRIVED, function (t) { e._emitter.emit(l.SCRIPTDATA_ARRIVED, t) }), this._transmuxer.on(v.a.TIMED_ID3_METADATA_ARRIVED, function (t) { e._emitter.emit(l.TIMED_ID3_METADATA_ARRIVED, t) }), this._transmuxer.on(v.a.SMPTE2038_METADATA_ARRIVED, function (t) { e._emitter.emit(l.SMPTE2038_METADATA_ARRIVED, t) }), this._transmuxer.on(v.a.SCTE35_METADATA_ARRIVED, function (t) { e._emitter.emit(l.SCTE35_METADATA_ARRIVED, t) }), this._transmuxer.on(v.a.PES_PRIVATE_DATA_DESCRIPTOR, function (t) { e._emitter.emit(l.PES_PRIVATE_DATA_DESCRIPTOR, t) }), this._transmuxer.on(v.a.PES_PRIVATE_DATA_ARRIVED, function (t) { e._emitter.emit(l.PES_PRIVATE_DATA_ARRIVED, t) }), this._transmuxer.on(v.a.STATISTICS_INFO, function (t) { ;(e._statisticsInfo = e._fillStatisticsInfo(t)), e._emitter.emit(l.STATISTICS_INFO, Object.assign({}, e._statisticsInfo)) }), this._transmuxer.on(v.a.RECOMMEND_SEEKPOINT, function (t) { e._mediaElement && !e._config.accurateSeek && ((e._requestSetTime = !0), (e._mediaElement.currentTime = t / 1e3)) }), this._transmuxer.open())) }), (e.prototype.unload = function () { this._mediaElement && this._mediaElement.pause(), this._msectl && this._msectl.seek(0), this._transmuxer && (this._transmuxer.close(), this._transmuxer.destroy(), (this._transmuxer = null)) }), (e.prototype.play = function () { return this._mediaElement.play() }), (e.prototype.pause = function () { this._mediaElement.pause() }), Object.defineProperty(e.prototype, "type", { get: function () { return this._type }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "buffered", { get: function () { return this._mediaElement.buffered }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "duration", { get: function () { return this._mediaElement.duration }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "volume", { get: function () { return this._mediaElement.volume }, set: function (e) { this._mediaElement.volume = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "muted", { get: function () { return this._mediaElement.muted }, set: function (e) { this._mediaElement.muted = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "currentTime", { get: function () { return this._mediaElement ? this._mediaElement.currentTime : 0 }, set: function (e) { this._mediaElement ? this._internalSeek(e) : (this._pendingSeekTime = e) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "mediaInfo", { get: function () { return Object.assign({}, this._mediaInfo) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "statisticsInfo", { get: function () { return ( null == this._statisticsInfo && (this._statisticsInfo = {}), (this._statisticsInfo = this._fillStatisticsInfo(this._statisticsInfo)), Object.assign({}, this._statisticsInfo) ) }, enumerable: !1, configurable: !0 }), (e.prototype._fillStatisticsInfo = function (e) { if (((e.playerType = this._type), !(this._mediaElement instanceof HTMLVideoElement))) return e var t = !0, i = 0, n = 0 if (this._mediaElement.getVideoPlaybackQuality) { var a = this._mediaElement.getVideoPlaybackQuality() ;(i = a.totalVideoFrames), (n = a.droppedVideoFrames) } else null != this._mediaElement.webkitDecodedFrameCount ? ((i = this._mediaElement.webkitDecodedFrameCount), (n = this._mediaElement.webkitDroppedFrameCount)) : (t = !1) return t && ((e.decodedFrames = i), (e.droppedFrames = n)), e }), (e.prototype._onmseUpdateEnd = function () { var e = this._mediaElement.buffered, t = this._mediaElement.currentTime if (this._config.isLive && this._config.liveBufferLatencyChasing && e.length > 0 && !this._mediaElement.paused) { var i = e.end(e.length - 1) if (i > this._config.liveBufferLatencyMaxLatency && i - t > this._config.liveBufferLatencyMaxLatency) { var n = i - this._config.liveBufferLatencyMinRemain this.currentTime = n } } if (this._config.lazyLoad && !this._config.isLive) { for (var a = 0, r = 0; r < e.length; r++) { var s = e.start(r), o = e.end(r) if (s <= t && t < o) { s, (a = o) break } } a >= t + this._config.lazyLoadMaxDuration && null == this._progressChecker && (c.a.v(this.TAG, "Maximum buffering duration exceeded, suspend transmuxing task"), this._suspendTransmuxer()) } }), (e.prototype._onmseBufferFull = function () { c.a.v(this.TAG, "MSE SourceBuffer is full, suspend transmuxing task"), null == this._progressChecker && this._suspendTransmuxer() }), (e.prototype._suspendTransmuxer = function () { this._transmuxer && (this._transmuxer.pause(), null == this._progressChecker && (this._progressChecker = window.setInterval(this._checkProgressAndResume.bind(this), 1e3))) }), (e.prototype._checkProgressAndResume = function () { for (var e = this._mediaElement.currentTime, t = this._mediaElement.buffered, i = !1, n = 0; n < t.length; n++) { var a = t.start(n), r = t.end(n) if (e >= a && e < r) { e >= r - this._config.lazyLoadRecoverDuration && (i = !0) break } } i && (window.clearInterval(this._progressChecker), (this._progressChecker = null), i && (c.a.v(this.TAG, "Continue loading from paused position"), this._transmuxer.resume())) }), (e.prototype._isTimepointBuffered = function (e) { for (var t = this._mediaElement.buffered, i = 0; i < t.length; i++) { var n = t.start(i), a = t.end(i) if (e >= n && e < a) return !0 } return !1 }), (e.prototype._internalSeek = function (e) { var t = this._isTimepointBuffered(e), i = !1, n = 0 if (e < 1 && this._mediaElement.buffered.length > 0) { var a = this._mediaElement.buffered.start(0) ;((a < 1 && e < a) || u.a.safari) && ((i = !0), (n = u.a.safari ? 0.1 : a)) } if (i) (this._requestSetTime = !0), (this._mediaElement.currentTime = n) else if (t) { if (this._alwaysSeekKeyframe) { var r = this._msectl.getNearestKeyframe(Math.floor(1e3 * e)) ;(this._requestSetTime = !0), (this._mediaElement.currentTime = null != r ? r.dts / 1e3 : e) } else (this._requestSetTime = !0), (this._mediaElement.currentTime = e) null != this._progressChecker && this._checkProgressAndResume() } else null != this._progressChecker && (window.clearInterval(this._progressChecker), (this._progressChecker = null)), this._msectl.seek(e), this._transmuxer.seek(Math.floor(1e3 * e)), this._config.accurateSeek && ((this._requestSetTime = !0), (this._mediaElement.currentTime = e)) }), (e.prototype._checkAndApplyUnbufferedSeekpoint = function () { if (this._seekpointRecord) if (this._seekpointRecord.recordTime <= this._now() - 100) { var e = this._mediaElement.currentTime ;(this._seekpointRecord = null), this._isTimepointBuffered(e) || (null != this._progressChecker && (window.clearTimeout(this._progressChecker), (this._progressChecker = null)), this._msectl.seek(e), this._transmuxer.seek(Math.floor(1e3 * e)), this._config.accurateSeek && ((this._requestSetTime = !0), (this._mediaElement.currentTime = e))) } else window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50) }), (e.prototype._checkAndResumeStuckPlayback = function (e) { var t = this._mediaElement if (e || !this._receivedCanPlay || t.readyState < 2) { var i = t.buffered i.length > 0 && t.currentTime < i.start(0) && (c.a.w(this.TAG, "Playback seems stuck at " + t.currentTime + ", seek to " + i.start(0)), (this._requestSetTime = !0), (this._mediaElement.currentTime = i.start(0)), this._mediaElement.removeEventListener("progress", this.e.onvProgress)) } else this._mediaElement.removeEventListener("progress", this.e.onvProgress) }), (e.prototype._onvLoadedMetadata = function (e) { null != this._pendingSeekTime && ((this._mediaElement.currentTime = this._pendingSeekTime), (this._pendingSeekTime = null)) }), (e.prototype._onvSeeking = function (e) { var t = this._mediaElement.currentTime, i = this._mediaElement.buffered if (this._requestSetTime) this._requestSetTime = !1 else { if (t < 1 && i.length > 0) { var n = i.start(0) if ((n < 1 && t < n) || u.a.safari) return (this._requestSetTime = !0), void (this._mediaElement.currentTime = u.a.safari ? 0.1 : n) } if (this._isTimepointBuffered(t)) { if (this._alwaysSeekKeyframe) { var a = this._msectl.getNearestKeyframe(Math.floor(1e3 * t)) null != a && ((this._requestSetTime = !0), (this._mediaElement.currentTime = a.dts / 1e3)) } null != this._progressChecker && this._checkProgressAndResume() } else (this._seekpointRecord = { seekPoint: t, recordTime: this._now() }), window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50) } }), (e.prototype._onvCanPlay = function (e) { ;(this._receivedCanPlay = !0), this._mediaElement.removeEventListener("canplay", this.e.onvCanPlay) }), (e.prototype._onvStalled = function (e) { this._checkAndResumeStuckPlayback(!0) }), (e.prototype._onvProgress = function (e) { this._checkAndResumeStuckPlayback() }), e ) })(), D = (function () { function e(e, t) { ;(this.TAG = "NativePlayer"), (this._type = "NativePlayer"), (this._emitter = new h.a()), (this._config = s()), "object" == typeof t && Object.assign(this._config, t) var i = e.type.toLowerCase() if ("mse" === i || "mpegts" === i || "m2ts" === i || "flv" === i) throw new A.b("NativePlayer does't support mse/mpegts/m2ts/flv MediaDataSource input!") if (e.hasOwnProperty("segments")) throw new A.b("NativePlayer(" + e.type + ") doesn't support multipart playback!") ;(this.e = { onvLoadedMetadata: this._onvLoadedMetadata.bind(this) }), (this._pendingSeekTime = null), (this._statisticsReporter = null), (this._mediaDataSource = e), (this._mediaElement = null) } return ( (e.prototype.destroy = function () { this._mediaElement && (this.unload(), this.detachMediaElement()), (this.e = null), (this._mediaDataSource = null), this._emitter.removeAllListeners(), (this._emitter = null) }), (e.prototype.on = function (e, t) { var i = this e === l.MEDIA_INFO ? null != this._mediaElement && 0 !== this._mediaElement.readyState && Promise.resolve().then(function () { i._emitter.emit(l.MEDIA_INFO, i.mediaInfo) }) : e === l.STATISTICS_INFO && null != this._mediaElement && 0 !== this._mediaElement.readyState && Promise.resolve().then(function () { i._emitter.emit(l.STATISTICS_INFO, i.statisticsInfo) }), this._emitter.addListener(e, t) }), (e.prototype.off = function (e, t) { this._emitter.removeListener(e, t) }), (e.prototype.attachMediaElement = function (e) { if (((this._mediaElement = e), e.addEventListener("loadedmetadata", this.e.onvLoadedMetadata), null != this._pendingSeekTime)) try { ;(e.currentTime = this._pendingSeekTime), (this._pendingSeekTime = null) } catch (e) {} }), (e.prototype.detachMediaElement = function () { this._mediaElement && ((this._mediaElement.src = ""), this._mediaElement.removeAttribute("src"), this._mediaElement.removeEventListener("loadedmetadata", this.e.onvLoadedMetadata), (this._mediaElement = null)), null != this._statisticsReporter && (window.clearInterval(this._statisticsReporter), (this._statisticsReporter = null)) }), (e.prototype.load = function () { if (!this._mediaElement) throw new A.a("HTMLMediaElement must be attached before load()!") ;(this._mediaElement.src = this._mediaDataSource.url), this._mediaElement.readyState > 0 && (this._mediaElement.currentTime = 0), (this._mediaElement.preload = "auto"), this._mediaElement.load(), (this._statisticsReporter = window.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval)) }), (e.prototype.unload = function () { this._mediaElement && ((this._mediaElement.src = ""), this._mediaElement.removeAttribute("src")), null != this._statisticsReporter && (window.clearInterval(this._statisticsReporter), (this._statisticsReporter = null)) }), (e.prototype.play = function () { return this._mediaElement.play() }), (e.prototype.pause = function () { this._mediaElement.pause() }), Object.defineProperty(e.prototype, "type", { get: function () { return this._type }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "buffered", { get: function () { return this._mediaElement.buffered }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "duration", { get: function () { return this._mediaElement.duration }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "volume", { get: function () { return this._mediaElement.volume }, set: function (e) { this._mediaElement.volume = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "muted", { get: function () { return this._mediaElement.muted }, set: function (e) { this._mediaElement.muted = e }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "currentTime", { get: function () { return this._mediaElement ? this._mediaElement.currentTime : 0 }, set: function (e) { this._mediaElement ? (this._mediaElement.currentTime = e) : (this._pendingSeekTime = e) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "mediaInfo", { get: function () { var e = { mimeType: (this._mediaElement instanceof HTMLAudioElement ? "audio/" : "video/") + this._mediaDataSource.type } return ( this._mediaElement && ((e.duration = Math.floor(1e3 * this._mediaElement.duration)), this._mediaElement instanceof HTMLVideoElement && ((e.width = this._mediaElement.videoWidth), (e.height = this._mediaElement.videoHeight))), e ) }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "statisticsInfo", { get: function () { var e = { playerType: this._type, url: this._mediaDataSource.url } if (!(this._mediaElement instanceof HTMLVideoElement)) return e var t = !0, i = 0, n = 0 if (this._mediaElement.getVideoPlaybackQuality) { var a = this._mediaElement.getVideoPlaybackQuality() ;(i = a.totalVideoFrames), (n = a.droppedVideoFrames) } else null != this._mediaElement.webkitDecodedFrameCount ? ((i = this._mediaElement.webkitDecodedFrameCount), (n = this._mediaElement.webkitDroppedFrameCount)) : (t = !1) return t && ((e.decodedFrames = i), (e.droppedFrames = n)), e }, enumerable: !1, configurable: !0 }), (e.prototype._onvLoadedMetadata = function (e) { null != this._pendingSeekTime && ((this._mediaElement.currentTime = this._pendingSeekTime), (this._pendingSeekTime = null)), this._emitter.emit(l.MEDIA_INFO, this.mediaInfo) }), (e.prototype._reportStatisticsInfo = function () { this._emitter.emit(l.STATISTICS_INFO, this.statisticsInfo) }), e ) })() n.a.install() var C = { createPlayer: function (e, t) { var i = e if (null == i || "object" != typeof i) throw new A.b("MediaDataSource must be an javascript object!") if (!i.hasOwnProperty("type")) throw new A.b("MediaDataSource must has type field to indicate video file type!") switch (i.type) { case "mse": case "mpegts": case "m2ts": case "flv": return new k(i, t) default: return new D(i, t) } }, isSupported: function () { return o.supportMSEH264Playback() }, getFeatureList: function () { return o.getFeatureList() } } ;(C.BaseLoader = d.a), (C.LoaderStatus = d.c), (C.LoaderErrors = d.b), (C.Events = l), (C.ErrorTypes = L), (C.ErrorDetails = w), (C.MSEPlayer = k), (C.NativePlayer = D), (C.LoggingControl = m.a), Object.defineProperty(C, "version", { enumerable: !0, get: function () { return "1.7.3" } }) t.default = C } ]) }) //# sourceMappingURL=mpegts.js.map