{"version":3,"sources":["webpack:///./src/components/alert/DestinationVideo.vue?b61a","webpack:///./node_modules/@videojs/vhs-utils/es/codecs.js","webpack:///./node_modules/node-libs-browser/node_modules/buffer/index.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/@xmldom/xmldom/lib/index.js","webpack:///./node_modules/videojs-vtt.js/lib/browser-index.js","webpack:///./node_modules/@videojs/vhs-utils/es/id3-helpers.js","webpack:///./node_modules/@videojs/xhr/lib/index.js","webpack:///./node_modules/mux.js/lib/utils/clock.js","webpack:///./node_modules/m3u8-parser/node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js","webpack:///./node_modules/@videojs/vhs-utils/es/resolve-url.js","webpack:///./node_modules/mux.js/lib/tools/parse-sidx.js","webpack:///./node_modules/is-function/index.js","webpack:///./node_modules/@videojs/vhs-utils/es/media-groups.js","webpack:///./node_modules/mpd-parser/dist/mpd-parser.es.js","webpack:///./node_modules/@xmldom/xmldom/lib/conventions.js","webpack:///./node_modules/@videojs/vhs-utils/es/media-types.js","webpack:///./node_modules/@videojs/xhr/lib/http-handler.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/mux.js/lib/utils/numbers.js","webpack:///./node_modules/videojs-vtt.js/lib/vttcue.js","webpack:///./node_modules/@xmldom/xmldom/lib/dom-parser.js","webpack:///./node_modules/@xmldom/xmldom/lib/entities.js","webpack:///./node_modules/global/window.js","webpack:///./node_modules/@videojs/xhr/lib/interceptors.js","webpack:///./src/components/Booking/ShorexSwiper.vue?a0ab","webpack:///./node_modules/videojs-vtt.js/lib/vtt.js","webpack:///./node_modules/url-toolkit/src/url-toolkit.js","webpack:///./src/components/alert/DestinationVideo.vue","webpack:///src/components/alert/DestinationVideo.vue","webpack:///./src/components/alert/DestinationVideo.vue?259f","webpack:///./src/components/alert/DestinationVideo.vue?693c","webpack:///./node_modules/m3u8-parser/node_modules/@videojs/vhs-utils/es/stream.js","webpack:///./node_modules/m3u8-parser/dist/m3u8-parser.es.js","webpack:///./node_modules/@videojs/vhs-utils/es/byte-helpers.js","webpack:///./node_modules/@xmldom/xmldom/lib/sax.js","webpack:///./node_modules/@xmldom/xmldom/lib/dom.js","webpack:///./src/components/Booking/ShorexSwiper.vue","webpack:///src/components/Booking/ShorexSwiper.vue","webpack:///./src/components/Booking/ShorexSwiper.vue?b1bc","webpack:///./src/components/Booking/ShorexSwiper.vue?6fc2","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/@videojs/xhr/lib/retry.js","webpack:///./node_modules/global/document.js","webpack:///./node_modules/video.js/dist/video.es.js","webpack:///./node_modules/@videojs/vhs-utils/es/mp4-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/opus-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/ebml-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/nal-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/containers.js","webpack:///./node_modules/videojs-vtt.js/lib/vttregion.js","webpack:///./node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js"],"names":["regexs","mp4","webm","ogg","video","audio","text","muxerVideo","muxerAudio","muxerText","mediaTypes","upperMediaTypes","translateLegacyCodec","codec","replace","orig","profile","avcLevel","profileHex","Number","toString","slice","avcLevelHex","parseCodecs","codecString","codecs","split","result","forEach","codecType","trim","name","match","exec","toLowerCase","length","type","substring","details","push","mediaType","codecsFromDefault","master","audioGroupId","mediaGroups","AUDIO","audioGroup","audioType","default","playlists","attributes","CODECS","isAudioCodec","test","isTextCodec","getMimeForCodec","map","c","container","every","browserSupportsCodec","MediaSource","isTypeSupported","muxerSupportsCodec","i","DEFAULT_AUDIO_CODEC","DEFAULT_VIDEO_CODEC","base64","ieee754","isArray","typedArraySupport","arr","Uint8Array","__proto__","prototype","foo","subarray","byteLength","e","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","arg","encodingOrOffset","this","Error","allocUnsafe","from","value","TypeError","ArrayBuffer","fromArrayBuffer","fromString","fromObject","assertSize","size","alloc","fill","encoding","undefined","checked","string","isEncoding","actual","write","fromArrayLike","array","byteOffset","obj","isBuffer","len","copy","buffer","isnan","data","SlowBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","n","m","bidirectionalIndexOf","val","dir","isNaN","arrayIndexOf","indexOf","call","lastIndexOf","indexSize","arrLength","valLength","String","read","buf","readUInt16BE","foundIndex","found","j","hexWrite","offset","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","fromByteArray","Math","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","exports","INSPECT_MAX_BYTES","global","poolSize","_augment","Symbol","species","Object","defineProperty","configurable","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","swap16","swap32","swap64","arguments","apply","equals","inspect","str","max","join","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","Array","_arr","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","code","charCodeAt","INVALID_BASE64_RE","base64clean","stringtrim","units","Infinity","leadSurrogate","byteArray","hi","lo","toByteArray","src","dst","lookup","revLookup","Arr","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","tmp","curByte","tripletToBase64","num","encodeChunk","uint8","output","extraBytes","parts","maxChunkLength","len2","dom","DOMImplementation","XMLSerializer","DOMParser","window","vttjs","module","WebVTT","VTTCue","VTTRegion","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","shim","restore","ID3","getId3Size","flags","returnSize","footerPresent","getId3Offset","_extends","isFunction","InterceptorsStorage","RetryManager","createXHR","httpHandler","requestInterceptorsStorage","responseInterceptorsStorage","retryManager","parseHeaders","headers","row","index","key","forEachArray","iterator","isEmpty","hasOwnProperty","initParams","uri","options","callback","params","_createXHR","requestType","getIsEnabled","requestInterceptorPayload","url","body","metadata","retry","timeout","updatedPayload","execute","called","err","response","readystatechange","xhr","readyState","setTimeout","loadFunc","getBody","responseText","getXml","isJson","JSON","parse","errorFunc","evt","clearTimeout","timeoutTimer","retryTimeout","statusCode","aborted","shouldRetry","responseInterceptorPayload","failureResponse","responseUrl","responseURL","responseType","_updatedPayload","moveToNextAttempt","getCurrentFuzzedDelay","status","useXDR","method","rawRequest","getAllResponseHeaders","_updatedPayload2","cors","XDomainRequest","XMLHttpRequest","sync","json","stringify","onreadystatechange","onload","onerror","onprogress","onabort","ontimeout","open","username","password","withCredentials","abort","setRequestHeader","beforeSend","send","responseXML","firefoxBugTakenEffect","documentElement","nodeName","noop","toUpperCase","secondsToVideoTs","secondsToAudioTs","videoTsToSeconds","audioTsToSeconds","audioTsToVideoTs","videoTsToAudioTs","metadataTsToSeconds","ONE_SECOND_IN_TS","seconds","sampleRate","timestamp","timelineStartPts","keepOriginalTimestamps","atob","s","decodeB64ToUint8Array","b64Text","decodedString","DEFAULT_LOCATION","resolveUrl","baseUrl","relativeUrl","location","href","nativeURL","URL","protocolLess","removeLocation","buildAbsoluteURL","newUrl","protocol","getUint64","parseSidx","view","DataView","version","references","referenceId","getUint32","timescale","earliestPresentationTime","firstOffset","referenceCount","getUint16","referenceType","referencedSize","subsegmentDuration","startsWithSap","sapType","sapDeltaTime","fn","alert","confirm","prompt","forEachMediaGroup","groups","groupKey","labelKey","mediaProperties","isObject","merge","objects","reduce","source","keys","values","o","k","flatten","lists","findIndexes","l","union","keyFunction","acc","el","errors","INVALID_NUMBER_OF_PERIOD","INVALID_NUMBER_OF_CONTENT_STEERING","DASH_EMPTY_MANIFEST","DASH_INVALID_XML","NO_BASE_URL","MISSING_SEGMENT_INFORMATION","SEGMENT_TIME_UNSPECIFIED","UNSUPPORTED_UTC_TIMING_SCHEME","urlTypeToSegment","range","indexRange","segment","resolvedUri","rangeStr","ranges","startRange","BigInt","endRange","MAX_SAFE_INTEGER","byterange","byteRangeToString","parseEndNumber","endNumber","segmentRange","duration","sourceDuration","periodDuration","segmentDuration","NOW","clientOffset","availabilityStartTime","periodStart","minimumUpdatePeriod","timeShiftBufferDepth","now","periodStartWC","periodEndWC","segmentCount","ceil","availableStart","availableEnd","toSegments","number","startNumber","timeline","time","parseByDuration","segments","sectionDuration","segmentsFromBase","initialization","presentationTime","initSegment","sourceURL","segmentTimeInfo","addSidxSegmentsToPlaylist$1","playlist","sidx","sidxByteRange","sidxEnd","mediaReferences","filter","r","endList","startIndex","mediaSequence","reference","endIndex","SUPPORTED_MEDIA_TYPES","TIME_FUDGE","getUniqueTimelineStarts","timelineStarts","sort","findPlaylistWithName","NAME","getMediaGroupPlaylists","manifest","mediaGroupPlaylists","properties","group","label","updateMediaSequenceForPlaylist","updateSequenceNumbers","oldPlaylists","newPlaylists","discontinuitySequence","findIndex","oldPlaylist","firstNewSegment","oldMatchingSegmentIndex","oldSegment","abs","discontinuity","discontinuityStarts","unshift","oldMatchingSegment","positionManifestOnTimeline","oldManifest","newManifest","generateSidxKey","mergeDiscontiguousPlaylists","playlistsByBaseUrl","cur","allPlaylists","playlistGroup","mergedPlaylists","id","lang","contentProtection","addSidxSegmentsToPlaylist","sidxMapping","sidxKey","sidxMatch","addSidxSegmentsToPlaylists","formatAudioPlaylist","isAudioOnly","BANDWIDTH","bandwidth","targetDuration","serviceLocation","SUBTITLES","formatVttPlaylist","m3u8Attributes","vttPlaylist","organizeAudioPlaylists","mainPlaylist","formattedPlaylists","role","language","roleLabel","autoselect","formatted","firstLabel","organizeVttPlaylists","organizeCaptionServices","captionServices","svcObj","svc","service","channel","instreamId","aspectRatio","easyReader","formatVideoPlaylist","RESOLUTION","width","height","frameRate","videoOnly","mimeType","contentType","audioOnly","vttOnly","addMediaSequenceValues","flattenMediaGroupPlaylists","mediaGroupObject","labelContents","toM3u8","dashPlaylists","locations","contentSteering","previousManifest","eventStream","suggestedPresentationDelay","videoPlaylists","audioPlaylists","vttPlaylists","captions","Boolean","allowCache","VIDEO","organizedAudioGroup","organizedVttGroup","playlistTimelineStarts","subs","cc","getLiveRValue","parseByTimeline","segmentTimeline","media","sIndex","S","d","repeat","segmentTime","t","count","nextS","identifierPattern","identifierReplacement","identifier","format","constructTemplateUrl","parseTemplateInfo","segmentsFromTemplate","templateValues","RepresentationID","Bandwidth","mapSegment","Time","presentationTimeOffset","SegmentURLToSegmentObject","segmentUrl","mediaRange","segmentsFromList","segmentUrls","segmentUrlMap","segmentUrlObject","generateSegments","segmentInfo","segmentAttributes","segmentsFn","template","base","segmentsInfo","toPlaylists","representations","findChildren","element","childNodes","tagName","getContent","textContent","parseDivisionValue","parseFloat","prev","current","parseDuration","SECONDS_IN_YEAR","SECONDS_IN_MONTH","SECONDS_IN_DAY","SECONDS_IN_HOUR","SECONDS_IN_MIN","durationRegex","year","month","day","hour","minute","second","parseDate","dateRegex","Date","parsers","parsedValue","parseAttributes","parseFn","DEFAULT","keySystemsMap","buildBaseUrls","baseUrlElements","baseUrlElement","initialBaseUrl","resolvedBaseUrl","finalBaseUrl","getSegmentInformation","adaptationSet","segmentTemplate","segmentList","tag","segmentBase","segmentTimelineParentNode","segmentInitializationParentNode","segmentInitialization","inheritBaseUrls","adaptationSetAttributes","adaptationSetBaseUrls","adaptationSetSegmentInfo","representation","repBaseUrlElements","repBaseUrls","representationSegmentInfo","generateKeySystemInformation","contentProtectionNodes","node","schemeIdUri","keySystem","psshNode","pssh","parseCaptionServiceMetadata","opts","opt","toEventStream","period","eventStreamAttributes","event","eventAttributes","messageData","contentEncoding","toRepresentations","periodAttributes","periodBaseUrls","periodSegmentInfo","roleAttributes","attrs","accessibility","labelVal","nodeValue","toAdaptationSets","mpdAttributes","mpdBaseUrls","adaptationSets","generateContentSteeringInformation","contentSteeringNodes","eventHandler","message","infoFromContentSteeringTag","serverURL","queryBeforeStart","getPeriodStart","priorPeriodAttributes","mpdType","inheritAttributes","mpd","manifestUri","periodNodes","mediaPresentationDuration","periods","priorPeriod","contentSteeringInfo","representationInfo","stringToMpdXml","manifestString","parser","xml","parseFromString","getElementsByTagName","parseUTCTimingScheme","UTCTimingNode","parsedManifestInfo","parseUTCTiming","find","predicate","ac","item","freeze","object","oc","assign","MIME_TYPE","HTML","isHTML","XML_APPLICATION","XML_TEXT","XML_XHTML_APPLICATION","XML_SVG_IMAGE","NAMESPACE","SVG","XML","XMLNS","MPEGURL_REGEX","DASH_REGEX","simpleTypeFromSourceType","httpResponseHandler","decodeResponseBody","responseBody","cause","TextDecoder","charset","getCharset","decode","contentTypeHeader","_contentType$split","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","log","LN2","bind","__esModule","MAX_UINT32","dv","getBigUint64","autoKeyword","directionSetting","alignSetting","findDirectionSetting","findAlignSetting","align","startTime","endTime","hasBeenReset","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","defineProperties","enumerable","get","setting","SyntaxError","console","warn","displayState","getCueAsHTML","convertCueToDOMTree","conventions","entities","sax","ParseError","XMLReader","normalizeLineEndings","input","locator","buildErrorHandler","errorImpl","domBuilder","DOMHandler","errorHandler","isCallback","Function","build","msg","_locator","cdata","position","lineNumber","columnNumber","systemId","_toString","chars","java","appendElement","hander","currentElement","appendChild","doc","defaultNSMap","xmlns","entityMap","HTML_ENTITIES","XML_ENTITIES","setDocumentLocator","normalize","error","startDocument","createDocument","documentURI","startElement","namespaceURI","localName","qName","createElementNS","getURI","getValue","attr","getQName","createAttributeNS","getLocator","setAttributeNode","endElement","parentNode","startPrefixMapping","prefix","endPrefixMapping","processingInstruction","ins","createProcessingInstruction","ignorableWhitespace","ch","characters","charNode","createCDATASection","createTextNode","skippedEntity","endDocument","comment","comm","createComment","startCDATA","endCDATA","startDTD","publicId","impl","implementation","createDocumentType","dt","doctype","warning","fatalError","__DOMHandler","amp","apos","gt","lt","quot","Aacute","aacute","Abreve","abreve","acd","acE","Acirc","acirc","acute","Acy","acy","AElig","aelig","af","Afr","afr","Agrave","agrave","alefsym","aleph","Alpha","alpha","Amacr","amacr","amalg","AMP","And","and","andand","andd","andslope","andv","ang","ange","angle","angmsd","angmsdaa","angmsdab","angmsdac","angmsdad","angmsdae","angmsdaf","angmsdag","angmsdah","angrt","angrtvb","angrtvbd","angsph","angst","angzarr","Aogon","aogon","Aopf","aopf","ap","apacir","apE","ape","apid","ApplyFunction","approx","approxeq","Aring","aring","Ascr","ascr","Assign","ast","asymp","asympeq","Atilde","atilde","Auml","auml","awconint","awint","backcong","backepsilon","backprime","backsim","backsimeq","Backslash","Barv","barvee","Barwed","barwed","barwedge","bbrk","bbrktbrk","bcong","Bcy","bcy","bdquo","becaus","Because","because","bemptyv","bepsi","bernou","Bernoullis","Beta","beta","beth","between","Bfr","bfr","bigcap","bigcirc","bigcup","bigodot","bigoplus","bigotimes","bigsqcup","bigstar","bigtriangledown","bigtriangleup","biguplus","bigvee","bigwedge","bkarow","blacklozenge","blacksquare","blacktriangle","blacktriangledown","blacktriangleleft","blacktriangleright","blank","blk12","blk14","blk34","block","bne","bnequiv","bNot","bnot","Bopf","bopf","bot","bottom","bowtie","boxbox","boxDL","boxDl","boxdL","boxdl","boxDR","boxDr","boxdR","boxdr","boxH","boxh","boxHD","boxHd","boxhD","boxhd","boxHU","boxHu","boxhU","boxhu","boxminus","boxplus","boxtimes","boxUL","boxUl","boxuL","boxul","boxUR","boxUr","boxuR","boxur","boxV","boxv","boxVH","boxVh","boxvH","boxvh","boxVL","boxVl","boxvL","boxvl","boxVR","boxVr","boxvR","boxvr","bprime","Breve","breve","brvbar","Bscr","bscr","bsemi","bsim","bsime","bsol","bsolb","bsolhsub","bull","bullet","bump","bumpE","bumpe","Bumpeq","bumpeq","Cacute","cacute","Cap","cap","capand","capbrcup","capcap","capcup","capdot","CapitalDifferentialD","caps","caret","caron","Cayleys","ccaps","Ccaron","ccaron","Ccedil","ccedil","Ccirc","ccirc","Cconint","ccups","ccupssm","Cdot","cdot","cedil","Cedilla","cemptyv","cent","CenterDot","centerdot","Cfr","cfr","CHcy","chcy","check","checkmark","Chi","chi","cir","circ","circeq","circlearrowleft","circlearrowright","circledast","circledcirc","circleddash","CircleDot","circledR","circledS","CircleMinus","CirclePlus","CircleTimes","cirE","cire","cirfnint","cirmid","cirscir","ClockwiseContourIntegral","CloseCurlyDoubleQuote","CloseCurlyQuote","clubs","clubsuit","Colon","colon","Colone","colone","coloneq","comma","commat","comp","compfn","complement","complexes","cong","congdot","Congruent","Conint","conint","ContourIntegral","Copf","copf","coprod","Coproduct","COPY","copysr","CounterClockwiseContourIntegral","crarr","Cross","cross","Cscr","cscr","csub","csube","csup","csupe","ctdot","cudarrl","cudarrr","cuepr","cuesc","cularr","cularrp","Cup","cup","cupbrcap","CupCap","cupcap","cupcup","cupdot","cupor","cups","curarr","curarrm","curlyeqprec","curlyeqsucc","curlyvee","curlywedge","curren","curvearrowleft","curvearrowright","cuvee","cuwed","cwconint","cwint","cylcty","Dagger","dagger","daleth","Darr","dArr","darr","dash","Dashv","dashv","dbkarow","dblac","Dcaron","dcaron","Dcy","dcy","DD","dd","ddagger","ddarr","DDotrahd","ddotseq","deg","Del","Delta","delta","demptyv","dfisht","Dfr","dfr","dHar","dharl","dharr","DiacriticalAcute","DiacriticalDot","DiacriticalDoubleAcute","DiacriticalGrave","DiacriticalTilde","diam","Diamond","diamond","diamondsuit","diams","die","DifferentialD","digamma","disin","div","divide","divideontimes","divonx","DJcy","djcy","dlcorn","dlcrop","dollar","Dopf","dopf","Dot","dot","DotDot","doteq","doteqdot","DotEqual","dotminus","dotplus","dotsquare","doublebarwedge","DoubleContourIntegral","DoubleDot","DoubleDownArrow","DoubleLeftArrow","DoubleLeftRightArrow","DoubleLeftTee","DoubleLongLeftArrow","DoubleLongLeftRightArrow","DoubleLongRightArrow","DoubleRightArrow","DoubleRightTee","DoubleUpArrow","DoubleUpDownArrow","DoubleVerticalBar","DownArrow","Downarrow","downarrow","DownArrowBar","DownArrowUpArrow","DownBreve","downdownarrows","downharpoonleft","downharpoonright","DownLeftRightVector","DownLeftTeeVector","DownLeftVector","DownLeftVectorBar","DownRightTeeVector","DownRightVector","DownRightVectorBar","DownTee","DownTeeArrow","drbkarow","drcorn","drcrop","Dscr","dscr","DScy","dscy","dsol","Dstrok","dstrok","dtdot","dtri","dtrif","duarr","duhar","dwangle","DZcy","dzcy","dzigrarr","Eacute","eacute","easter","Ecaron","ecaron","ecir","Ecirc","ecirc","ecolon","Ecy","ecy","eDDot","Edot","eDot","edot","ee","efDot","Efr","efr","eg","Egrave","egrave","egs","egsdot","Element","elinters","ell","els","elsdot","Emacr","emacr","empty","emptyset","EmptySmallSquare","emptyv","EmptyVerySmallSquare","emsp","emsp13","emsp14","ENG","eng","ensp","Eogon","eogon","Eopf","eopf","epar","eparsl","eplus","epsi","Epsilon","epsilon","epsiv","eqcirc","eqcolon","eqsim","eqslantgtr","eqslantless","Equal","EqualTilde","equest","Equilibrium","equiv","equivDD","eqvparsl","erarr","erDot","Escr","escr","esdot","Esim","esim","Eta","eta","ETH","eth","Euml","euml","euro","excl","exist","Exists","expectation","ExponentialE","exponentiale","fallingdotseq","Fcy","fcy","female","ffilig","fflig","ffllig","Ffr","ffr","filig","FilledSmallSquare","FilledVerySmallSquare","fjlig","flat","fllig","fltns","fnof","Fopf","fopf","ForAll","forall","fork","forkv","Fouriertrf","fpartint","frac12","frac13","frac14","frac15","frac16","frac18","frac23","frac25","frac34","frac35","frac38","frac45","frac56","frac58","frac78","frasl","frown","Fscr","fscr","gacute","Gamma","gamma","Gammad","gammad","gap","Gbreve","gbreve","Gcedil","Gcirc","gcirc","Gcy","gcy","Gdot","gdot","gE","ge","gEl","gel","geq","geqq","geqslant","ges","gescc","gesdot","gesdoto","gesdotol","gesl","gesles","Gfr","gfr","Gg","gg","ggg","gimel","GJcy","gjcy","gl","gla","glE","glj","gnap","gnapprox","gnE","gne","gneq","gneqq","gnsim","Gopf","gopf","grave","GreaterEqual","GreaterEqualLess","GreaterFullEqual","GreaterGreater","GreaterLess","GreaterSlantEqual","GreaterTilde","Gscr","gscr","gsim","gsime","gsiml","Gt","GT","gtcc","gtcir","gtdot","gtlPar","gtquest","gtrapprox","gtrarr","gtrdot","gtreqless","gtreqqless","gtrless","gtrsim","gvertneqq","gvnE","Hacek","hairsp","half","hamilt","HARDcy","hardcy","hArr","harr","harrcir","harrw","Hat","hbar","Hcirc","hcirc","hearts","heartsuit","hellip","hercon","Hfr","hfr","HilbertSpace","hksearow","hkswarow","hoarr","homtht","hookleftarrow","hookrightarrow","Hopf","hopf","horbar","HorizontalLine","Hscr","hscr","hslash","Hstrok","hstrok","HumpDownHump","HumpEqual","hybull","hyphen","Iacute","iacute","ic","Icirc","icirc","Icy","icy","Idot","IEcy","iecy","iexcl","iff","Ifr","ifr","Igrave","igrave","ii","iiiint","iiint","iinfin","iiota","IJlig","ijlig","Im","Imacr","imacr","image","ImaginaryI","imagline","imagpart","imath","imof","imped","Implies","in","incare","infin","infintie","inodot","Int","int","intcal","integers","Integral","intercal","Intersection","intlarhk","intprod","InvisibleComma","InvisibleTimes","IOcy","iocy","Iogon","iogon","Iopf","iopf","Iota","iota","iprod","iquest","Iscr","iscr","isin","isindot","isinE","isins","isinsv","isinv","it","Itilde","itilde","Iukcy","iukcy","Iuml","iuml","Jcirc","jcirc","Jcy","jcy","Jfr","jfr","jmath","Jopf","jopf","Jscr","jscr","Jsercy","jsercy","Jukcy","jukcy","Kappa","kappa","kappav","Kcedil","kcedil","Kcy","kcy","Kfr","kfr","kgreen","KHcy","khcy","KJcy","kjcy","Kopf","kopf","Kscr","kscr","lAarr","Lacute","lacute","laemptyv","lagran","Lambda","lambda","Lang","langd","langle","lap","Laplacetrf","laquo","Larr","lArr","larr","larrb","larrbfs","larrfs","larrhk","larrlp","larrpl","larrsim","larrtl","lat","lAtail","latail","late","lates","lBarr","lbarr","lbbrk","lbrace","lbrack","lbrke","lbrksld","lbrkslu","Lcaron","lcaron","Lcedil","lcedil","lceil","lcub","Lcy","lcy","ldca","ldquo","ldquor","ldrdhar","ldrushar","ldsh","lE","le","LeftAngleBracket","LeftArrow","Leftarrow","leftarrow","LeftArrowBar","LeftArrowRightArrow","leftarrowtail","LeftCeiling","LeftDoubleBracket","LeftDownTeeVector","LeftDownVector","LeftDownVectorBar","LeftFloor","leftharpoondown","leftharpoonup","leftleftarrows","LeftRightArrow","Leftrightarrow","leftrightarrow","leftrightarrows","leftrightharpoons","leftrightsquigarrow","LeftRightVector","LeftTee","LeftTeeArrow","LeftTeeVector","leftthreetimes","LeftTriangle","LeftTriangleBar","LeftTriangleEqual","LeftUpDownVector","LeftUpTeeVector","LeftUpVector","LeftUpVectorBar","LeftVector","LeftVectorBar","lEg","leg","leq","leqq","leqslant","les","lescc","lesdot","lesdoto","lesdotor","lesg","lesges","lessapprox","lessdot","lesseqgtr","lesseqqgtr","LessEqualGreater","LessFullEqual","LessGreater","lessgtr","LessLess","lesssim","LessSlantEqual","LessTilde","lfisht","lfloor","Lfr","lfr","lg","lgE","lHar","lhard","lharu","lharul","lhblk","LJcy","ljcy","Ll","ll","llarr","llcorner","Lleftarrow","llhard","lltri","Lmidot","lmidot","lmoust","lmoustache","lnap","lnapprox","lnE","lne","lneq","lneqq","lnsim","loang","loarr","lobrk","LongLeftArrow","Longleftarrow","longleftarrow","LongLeftRightArrow","Longleftrightarrow","longleftrightarrow","longmapsto","LongRightArrow","Longrightarrow","longrightarrow","looparrowleft","looparrowright","lopar","Lopf","lopf","loplus","lotimes","lowast","lowbar","LowerLeftArrow","LowerRightArrow","loz","lozenge","lozf","lpar","lparlt","lrarr","lrcorner","lrhar","lrhard","lrm","lrtri","lsaquo","Lscr","lscr","Lsh","lsh","lsim","lsime","lsimg","lsqb","lsquo","lsquor","Lstrok","lstrok","Lt","LT","ltcc","ltcir","ltdot","lthree","ltimes","ltlarr","ltquest","ltri","ltrie","ltrif","ltrPar","lurdshar","luruhar","lvertneqq","lvnE","macr","male","malt","maltese","Map","mapsto","mapstodown","mapstoleft","mapstoup","marker","mcomma","Mcy","mcy","mdash","mDDot","measuredangle","MediumSpace","Mellintrf","Mfr","mfr","mho","micro","mid","midast","midcir","middot","minus","minusb","minusd","minusdu","MinusPlus","mlcp","mldr","mnplus","models","Mopf","mopf","mp","Mscr","mscr","mstpos","Mu","mu","multimap","mumap","nabla","Nacute","nacute","nang","nap","napE","napid","napos","napprox","natur","natural","naturals","nbsp","nbump","nbumpe","ncap","Ncaron","ncaron","Ncedil","ncedil","ncong","ncongdot","ncup","Ncy","ncy","ndash","ne","nearhk","neArr","nearr","nearrow","nedot","NegativeMediumSpace","NegativeThickSpace","NegativeThinSpace","NegativeVeryThinSpace","nequiv","nesear","nesim","NestedGreaterGreater","NestedLessLess","NewLine","nexist","nexists","Nfr","nfr","ngE","nge","ngeq","ngeqq","ngeqslant","nges","nGg","ngsim","nGt","ngt","ngtr","nGtv","nhArr","nharr","nhpar","ni","nis","nisd","niv","NJcy","njcy","nlArr","nlarr","nldr","nlE","nle","nLeftarrow","nleftarrow","nLeftrightarrow","nleftrightarrow","nleq","nleqq","nleqslant","nles","nless","nLl","nlsim","nLt","nlt","nltri","nltrie","nLtv","nmid","NoBreak","NonBreakingSpace","Nopf","nopf","Not","not","NotCongruent","NotCupCap","NotDoubleVerticalBar","NotElement","NotEqual","NotEqualTilde","NotExists","NotGreater","NotGreaterEqual","NotGreaterFullEqual","NotGreaterGreater","NotGreaterLess","NotGreaterSlantEqual","NotGreaterTilde","NotHumpDownHump","NotHumpEqual","notin","notindot","notinE","notinva","notinvb","notinvc","NotLeftTriangle","NotLeftTriangleBar","NotLeftTriangleEqual","NotLess","NotLessEqual","NotLessGreater","NotLessLess","NotLessSlantEqual","NotLessTilde","NotNestedGreaterGreater","NotNestedLessLess","notni","notniva","notnivb","notnivc","NotPrecedes","NotPrecedesEqual","NotPrecedesSlantEqual","NotReverseElement","NotRightTriangle","NotRightTriangleBar","NotRightTriangleEqual","NotSquareSubset","NotSquareSubsetEqual","NotSquareSuperset","NotSquareSupersetEqual","NotSubset","NotSubsetEqual","NotSucceeds","NotSucceedsEqual","NotSucceedsSlantEqual","NotSucceedsTilde","NotSuperset","NotSupersetEqual","NotTilde","NotTildeEqual","NotTildeFullEqual","NotTildeTilde","NotVerticalBar","npar","nparallel","nparsl","npart","npolint","npr","nprcue","npre","nprec","npreceq","nrArr","nrarr","nrarrc","nrarrw","nRightarrow","nrightarrow","nrtri","nrtrie","nsc","nsccue","nsce","Nscr","nscr","nshortmid","nshortparallel","nsim","nsime","nsimeq","nsmid","nspar","nsqsube","nsqsupe","nsub","nsubE","nsube","nsubset","nsubseteq","nsubseteqq","nsucc","nsucceq","nsup","nsupE","nsupe","nsupset","nsupseteq","nsupseteqq","ntgl","Ntilde","ntilde","ntlg","ntriangleleft","ntrianglelefteq","ntriangleright","ntrianglerighteq","Nu","nu","numero","numsp","nvap","nVDash","nVdash","nvDash","nvdash","nvge","nvgt","nvHarr","nvinfin","nvlArr","nvle","nvlt","nvltrie","nvrArr","nvrtrie","nvsim","nwarhk","nwArr","nwarr","nwarrow","nwnear","Oacute","oacute","oast","ocir","Ocirc","ocirc","Ocy","ocy","odash","Odblac","odblac","odiv","odot","odsold","OElig","oelig","ofcir","Ofr","ofr","ogon","Ograve","ograve","ogt","ohbar","ohm","oint","olarr","olcir","olcross","oline","olt","Omacr","omacr","Omega","omega","Omicron","omicron","omid","ominus","Oopf","oopf","opar","OpenCurlyDoubleQuote","OpenCurlyQuote","operp","oplus","Or","or","orarr","ord","order","orderof","ordf","ordm","origof","oror","orslope","orv","oS","Oscr","oscr","Oslash","oslash","osol","Otilde","otilde","Otimes","otimes","otimesas","Ouml","ouml","ovbar","OverBar","OverBrace","OverBracket","OverParenthesis","par","para","parallel","parsim","parsl","part","PartialD","Pcy","pcy","percnt","permil","perp","pertenk","Pfr","pfr","Phi","phi","phiv","phmmat","phone","Pi","pi","pitchfork","piv","planck","planckh","plankv","plus","plusacir","plusb","pluscir","plusdo","plusdu","pluse","PlusMinus","plusmn","plussim","plustwo","pm","Poincareplane","pointint","Popf","popf","pound","Pr","pr","prap","prcue","prE","pre","prec","precapprox","preccurlyeq","Precedes","PrecedesEqual","PrecedesSlantEqual","PrecedesTilde","preceq","precnapprox","precneqq","precnsim","precsim","Prime","prime","primes","prnap","prnE","prnsim","prod","Product","profalar","profline","profsurf","prop","Proportion","Proportional","propto","prsim","prurel","Pscr","pscr","Psi","psi","puncsp","Qfr","qfr","qint","Qopf","qopf","qprime","Qscr","qscr","quaternions","quatint","quest","questeq","QUOT","rAarr","race","Racute","racute","radic","raemptyv","Rang","rang","rangd","rangle","raquo","Rarr","rArr","rarr","rarrap","rarrb","rarrbfs","rarrc","rarrfs","rarrhk","rarrlp","rarrpl","rarrsim","Rarrtl","rarrtl","rarrw","rAtail","ratail","ratio","rationals","RBarr","rBarr","rbarr","rbbrk","rbrace","rbrack","rbrke","rbrksld","rbrkslu","Rcaron","rcaron","Rcedil","rcedil","rceil","rcub","Rcy","rcy","rdca","rdldhar","rdquo","rdquor","rdsh","Re","real","realine","realpart","reals","rect","REG","reg","ReverseElement","ReverseEquilibrium","ReverseUpEquilibrium","rfisht","rfloor","Rfr","rfr","rHar","rhard","rharu","rharul","Rho","rho","rhov","RightAngleBracket","RightArrow","Rightarrow","rightarrow","RightArrowBar","RightArrowLeftArrow","rightarrowtail","RightCeiling","RightDoubleBracket","RightDownTeeVector","RightDownVector","RightDownVectorBar","RightFloor","rightharpoondown","rightharpoonup","rightleftarrows","rightleftharpoons","rightrightarrows","rightsquigarrow","RightTee","RightTeeArrow","RightTeeVector","rightthreetimes","RightTriangle","RightTriangleBar","RightTriangleEqual","RightUpDownVector","RightUpTeeVector","RightUpVector","RightUpVectorBar","RightVector","RightVectorBar","ring","risingdotseq","rlarr","rlhar","rlm","rmoust","rmoustache","rnmid","roang","roarr","robrk","ropar","Ropf","ropf","roplus","rotimes","RoundImplies","rpar","rpargt","rppolint","rrarr","Rrightarrow","rsaquo","Rscr","rscr","Rsh","rsh","rsqb","rsquo","rsquor","rthree","rtimes","rtri","rtrie","rtrif","rtriltri","RuleDelayed","ruluhar","rx","Sacute","sacute","sbquo","Sc","sc","scap","Scaron","scaron","sccue","scE","sce","Scedil","scedil","Scirc","scirc","scnap","scnE","scnsim","scpolint","scsim","Scy","scy","sdot","sdotb","sdote","searhk","seArr","searr","searrow","sect","semi","seswar","setminus","setmn","sext","Sfr","sfr","sfrown","sharp","SHCHcy","shchcy","SHcy","shcy","ShortDownArrow","ShortLeftArrow","shortmid","shortparallel","ShortRightArrow","ShortUpArrow","shy","Sigma","sigma","sigmaf","sigmav","sim","simdot","sime","simeq","simg","simgE","siml","simlE","simne","simplus","simrarr","slarr","SmallCircle","smallsetminus","smashp","smeparsl","smid","smile","smt","smte","smtes","SOFTcy","softcy","sol","solb","solbar","Sopf","sopf","spades","spadesuit","spar","sqcap","sqcaps","sqcup","sqcups","Sqrt","sqsub","sqsube","sqsubset","sqsubseteq","sqsup","sqsupe","sqsupset","sqsupseteq","squ","Square","square","SquareIntersection","SquareSubset","SquareSubsetEqual","SquareSuperset","SquareSupersetEqual","SquareUnion","squarf","squf","srarr","Sscr","sscr","ssetmn","ssmile","sstarf","Star","star","starf","straightepsilon","straightphi","strns","Sub","subdot","subE","sube","subedot","submult","subnE","subne","subplus","subrarr","Subset","subset","subseteq","subseteqq","SubsetEqual","subsetneq","subsetneqq","subsim","subsub","subsup","succ","succapprox","succcurlyeq","Succeeds","SucceedsEqual","SucceedsSlantEqual","SucceedsTilde","succeq","succnapprox","succneqq","succnsim","succsim","SuchThat","Sum","sum","sung","Sup","sup","sup1","sup2","sup3","supdot","supdsub","supE","supe","supedot","Superset","SupersetEqual","suphsol","suphsub","suplarr","supmult","supnE","supne","supplus","Supset","supset","supseteq","supseteqq","supsetneq","supsetneqq","supsim","supsub","supsup","swarhk","swArr","swarr","swarrow","swnwar","szlig","Tab","Tau","tau","tbrk","Tcaron","tcaron","Tcedil","tcedil","Tcy","tcy","tdot","telrec","Tfr","tfr","there4","Therefore","therefore","Theta","theta","thetasym","thetav","thickapprox","thicksim","ThickSpace","thinsp","ThinSpace","thkap","thksim","THORN","thorn","Tilde","tilde","TildeEqual","TildeFullEqual","TildeTilde","times","timesb","timesbar","timesd","tint","toea","top","topbot","topcir","Topf","topf","topfork","tosa","tprime","TRADE","trade","triangle","triangledown","triangleleft","trianglelefteq","triangleq","triangleright","trianglerighteq","tridot","trie","triminus","TripleDot","triplus","trisb","tritime","trpezium","Tscr","tscr","TScy","tscy","TSHcy","tshcy","Tstrok","tstrok","twixt","twoheadleftarrow","twoheadrightarrow","Uacute","uacute","Uarr","uArr","uarr","Uarrocir","Ubrcy","ubrcy","Ubreve","ubreve","Ucirc","ucirc","Ucy","ucy","udarr","Udblac","udblac","udhar","ufisht","Ufr","ufr","Ugrave","ugrave","uHar","uharl","uharr","uhblk","ulcorn","ulcorner","ulcrop","ultri","Umacr","umacr","uml","UnderBar","UnderBrace","UnderBracket","UnderParenthesis","Union","UnionPlus","Uogon","uogon","Uopf","uopf","UpArrow","Uparrow","uparrow","UpArrowBar","UpArrowDownArrow","UpDownArrow","Updownarrow","updownarrow","UpEquilibrium","upharpoonleft","upharpoonright","uplus","UpperLeftArrow","UpperRightArrow","Upsi","upsi","upsih","Upsilon","upsilon","UpTee","UpTeeArrow","upuparrows","urcorn","urcorner","urcrop","Uring","uring","urtri","Uscr","uscr","utdot","Utilde","utilde","utri","utrif","uuarr","Uuml","uuml","uwangle","vangrt","varepsilon","varkappa","varnothing","varphi","varpi","varpropto","vArr","varr","varrho","varsigma","varsubsetneq","varsubsetneqq","varsupsetneq","varsupsetneqq","vartheta","vartriangleleft","vartriangleright","Vbar","vBar","vBarv","Vcy","vcy","VDash","Vdash","vDash","vdash","Vdashl","Vee","vee","veebar","veeeq","vellip","Verbar","verbar","Vert","vert","VerticalBar","VerticalLine","VerticalSeparator","VerticalTilde","VeryThinSpace","Vfr","vfr","vltri","vnsub","vnsup","Vopf","vopf","vprop","vrtri","Vscr","vscr","vsubnE","vsubne","vsupnE","vsupne","Vvdash","vzigzag","Wcirc","wcirc","wedbar","Wedge","wedge","wedgeq","weierp","Wfr","wfr","Wopf","wopf","wp","wr","wreath","Wscr","wscr","xcap","xcirc","xcup","xdtri","Xfr","xfr","xhArr","xharr","Xi","xi","xlArr","xlarr","xmap","xnis","xodot","Xopf","xopf","xoplus","xotime","xrArr","xrarr","Xscr","xscr","xsqcup","xuplus","xutri","xvee","xwedge","Yacute","yacute","YAcy","yacy","Ycirc","ycirc","Ycy","ycy","yen","Yfr","yfr","YIcy","yicy","Yopf","yopf","Yscr","yscr","YUcy","yucy","Yuml","yuml","Zacute","zacute","Zcaron","zcaron","Zcy","zcy","Zdot","zdot","zeetrf","ZeroWidthSpace","Zeta","zeta","Zfr","zfr","ZHcy","zhcy","zigrarr","Zopf","zopf","Zscr","zscr","zwj","zwnj","win","self","_createForOfIteratorHelperLoose","allowArrayLike","next","_unsupportedIterableToArray","done","minLen","_arrayLikeToArray","constructor","arr2","typeToInterceptorsMap_","enabled_","_proto","enable","disable","reset","addInterceptor","interceptor","has","Set","interceptorsSet","add","removeInterceptor","delete","clearInterceptorsByType","clear","getForType","payload","_step","interceptors","_iterator","document","_objCreate","create","F","ParsingError","errorData","parseTimeStamp","computeSeconds","h","f","Settings","parseOptions","keyValueDelim","groupDelim","kv","v","parseCue","cue","regionList","oInput","consumeTimeStamp","ts","Errors","BadTimeStamp","consumeCueSettings","settings","region","alt","vals","vals0","integer","percent","vertical","line","lineAlign","snapToLines","left","center","middle","right","positionAlign","skipWhitespace","BadSignature","dflt","defaultKey","TEXTAREA_ELEMENT","createElement","TAG_NAME","u","ruby","DEFAULT_COLOR_CLASS","white","lime","cyan","red","yellow","magenta","blue","black","TAG_ANNOTATION","NEEDS_PARENT","parseContent","nextToken","consume","unescape","innerHTML","shouldAdd","annotation","rootDiv","tagStack","pop","classes","cl","bgColor","colorName","propName","propValue","style","className","strongRTLRanges","isStrongRTLChar","charCode","currentRange","determineBidi","cueDiv","nodeStack","pushNodes","nextTextNode","innerText","computeLinePos","track","textTrackList","mediaElement","trackList","mode","StyleBox","CueStyleBox","styleOptions","styles","color","backgroundColor","display","writingMode","unicodeBidi","applyStyles","direction","textAlign","font","whiteSpace","textPos","formatStyle","move","box","BoxPosition","lh","offsetHeight","offsetWidth","offsetTop","rects","getClientRects","getBoundingClientRect","lineHeight","moveBoxToLinePosition","styleBox","containerBox","boxPositions","findBestPosition","axis","bestPosition","specifiedPosition","percentage","overlapsOppositeAxis","within","overlapsAny","p","intersectPercentage","boxPosition","linePos","step","round","maxPosition","initialAxis","reverse","calculatedPercentage","toCSSCompatValues","unit","toMove","overlaps","b2","boxes","intersectArea","getSimpleBoxPosition","StringDecoder","decodeURIComponent","encodeURIComponent","cuetext","FONT_SIZE_PERCENT","FONT_STYLE","CUE_BACKGROUND_PADDING","processCues","cues","overlay","firstChild","removeChild","paddedOverlay","shouldCompute","margin","fontSize","Parser","decoder","state","reportOrThrowError","onparsingerror","collectNextLine","parseRegion","xy","anchor","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseTimestampMap","ontimestampmap","parseHeader","stream","alreadyCollectedLine","hasSubstring","oncue","flush","onflush","root","URL_REGEX","FIRST_SEGMENT_REGEX","SLASH_DOT_REGEX","SLASH_DOT_DOT_REGEX","URLToolkit","baseURL","relativeURL","alwaysNormalize","basePartsForNormalise","parseURL","path","normalizePath","buildURLFromParts","relativeParts","scheme","baseParts","netLoc","pathParts","builtParts","query","fragment","baseURLPath","newPath","render","_vm","_c","_self","staticClass","directives","rawName","isShowVideo","expression","coverUrl","isAndroid","shorexBannerIndex","videoUrl","on","handleFullscreenChange","onChangeVideoPlay","isShowTextBtn","_e","staticRenderFns","props","videoId","isFullscreen","isPause","videoPlayer","videoPlayerAndroid","mounted","navigator","userAgent","videoInit","watch","methods","videojs","controls","autoplay","preload","controlBar","playToggle","isFullscreen_","pause","currentTime","setAttribute","onChangeVideoEmit","play","exitFullscreen","enterFullscreen","requestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","msRequestFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","getElementById","fullScreen","$emit","component","Stream","listeners","listener","off","splice","trigger","callbacks","args","_length","_i","dispose","pipe","destination","super","nextNewline","TAB","parseByterange","byterangeString","attributeSeparator","keyvalue","RegExp","parseResolution","resolution","customParsers","tagMappers","newLines","mapper","mappedLine","newLine","tagType","title","playlistType","allowed","URI","BYTERANGE","dateTimeString","dateTimeObject","IV","Uint32Array","PRECISE","subkey","clientAttributePattern","isHexaDecimal","isDecimalFloating","customType","dataParser","mapFn","camelCase","camelCaseKeys","setHoldBack","serverControl","partTargetDuration","hb","phb","minTargetDuration","minPartDuration","lineStream","parseStream","mainDefinitions","searchParams","lastProgramDateTime","uris","currentMap","currentUri","hasParts","defaultMediaGroups","widevineUuid","currentTimeline","dateRanges","iFramePlaylists","lastByterangeEnd","lastPartByterangeEnd","dateRangeTags","preloadHints","preloadSegment","entry","mediaGroup","rendition","definitions","def","METHOD","KEYFORMAT","VALID_METHODS","KEYID","keyId","iv","TYPE","mediaGroupType","AUTOSELECT","LANGUAGE","CHARACTERISTICS","characteristics","FORCED","forced","getTime","reduceRight","programDateTime","timeOffset","precise","cueOut","cueOutCont","cueIn","skip","warnOnMissingAttributes_","segmentIndex","partIndex","renditionReports","canBlockReload","canSkipDateranges","hint","isPart","otherHint","report","required","partInf","partTarget","dateRange","endDate","startDate","plannedDuration","endOnNextYes","endOnNext","class","newDateInSeconds","attribute","dateRangeWithSameId","dateRangeToFind","independentSegments","iFramesOnly","requiredCompatibilityversion","addDef","QUERYPARAM","VALUE","IMPORT","custom","currentVersion","targetVersion","missing","chunk","addParser","addTagMapper","countBits","countBytes","padStart","isArrayBufferView","isTypedArray","toUint8","toHexString","toBinaryString","BYTE_TABLE","bytesToNumber","Uint16Array","_temp","_ref","_ref$signed","signed","_ref$le","total","byte","exponent","numberToBytes","_temp2","_ref2","_ref2$le","byteCount","byteIndex","bytesToString","escape","stringToBytes","stringIsBytes","concatTypedArrays","_len","buffers","_key","totalLen","tempBuffer","bytesMatch","_temp3","_ref3","_ref3$offset","_ref3$mask","mask","bByte","aByte","nameStartChar","nameChar","tagNamePattern","S_TAG","S_ATTR","S_ATTR_SPACE","S_EQ","S_ATTR_NOQUOT_VALUE","S_ATTR_END","S_TAG_SPACE","S_TAG_CLOSE","captureStackTrace","defaultNSMapCopy","fixedFromCharCode","surrogate1","surrogate2","entityReplacer","charAt","appendText","xt","lineEnd","linePattern","lineStart","parseStack","currentNSMap","closeMap","tagStart","config","localNSMap","endMatch","endIgnoreCaseMach","parseInstruction","parseDCC","ElementAttributes","parseElementStartPart","closed","fixSelfClosed","locator2","copyLocator","parseHtmlSpecialContent","addAttribute","qname","attributeNames","addValue","attrName","setTagName","nsp","nsPrefix","_copy","ns","elStartEnd","elEndStart","matchs","pubid","sysid","lastMatch","endDTD","lastIndex","getLocalName","notEmptyString","splitOnASCIIWhitespace","orderedSetReducer","toOrderedSet","arrayIncludes","dest","Class","Super","pt","NodeType","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","ExceptionCode","ExceptionMessage","HIERARCHY_REQUEST_ERR","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","NOT_FOUND_ERR","WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","INUSE_ATTRIBUTE_ERR","NOT_SUPPORTED_ERR","INVALID_STATE_ERR","SYNTAX_ERR","INVALID_MODIFICATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","DOMException","NodeList","LiveNodeList","refresh","_node","_refresh","_updateLiveList","inc","_inc","ownerDocument","ls","__set__","$$length","NamedNodeMap","_findNodeIndex","_addNamedNode","newAttr","oldAttr","ownerElement","_onRemoveAttribute","_onAddAttribute","_removeNamedNode","Node","_xmlEncoder","_visitNode","nextSibling","Document","_nsMap","remove","_onUpdateChild","newChild","cs","child","_removeChild","previous","previousSibling","lastChild","hasValidParentNodeType","nodeType","hasInsertableNodeType","isElementNode","isTextNode","isDocTypeNode","isElementInsertionPossible","parentChildNodes","docTypeNode","isElementReplacementPossible","hasElementChildThatIsNotChild","assertPreInsertionValidity1to5","parent","assertPreInsertionValidityInDocument","nodeChildNodes","nodeChildElements","parentElementChild","assertPreReplacementValidityInDocument","hasDoctypeChildThatIsNotChild","_insertBefore","_inDocumentAssertion","cp","newFirst","newLast","_appendSingleChild","Attr","CharacterData","Text","Comment","CDATASection","DocumentType","Notation","Entity","EntityReference","DocumentFragment","ProcessingInstruction","nodeSerializeToString","isHtml","nodeFilter","refNode","lookupPrefix","visibleNamespaces","namespace","serializeToString","needNamespaceDefine","addSerializedAttribute","qualifiedName","prefixedNodeName","defaultNS","ai","nsi","internalSubset","importNode","deep","node2","cloneNode","attrs2","_ownerElement","getNamedItem","setNamedItem","setNamedItemNS","getNamedItemNS","removeNamedItem","removeNamedItemNS","hasFeature","feature","insertBefore","refChild","replaceChild","oldChild","hasChildNodes","appendData","isSupported","hasAttributes","lookupNamespaceURI","isDefaultNamespace","importedNode","rtv","getAttribute","getElementsByClassName","classNames","classNamesSet","nodeClassNames","matches","nodeClassNamesSet","createDocumentFragment","createAttribute","specified","createEntityReference","pl","hasAttribute","getAttributeNode","removeAttribute","removeAttributeNode","setAttributeNodeNS","removeAttributeNS","old","getAttributeNodeNS","hasAttributeNS","getAttributeNS","setAttributeNS","getElementsByTagNameNS","substringData","insertData","replaceData","deleteData","splitText","newText","newNode","getTextContent","ref","staticStyle","swiperOption","$event","onSlideChange","_l","bannerList","idx","bannerType","wechatMiniProgramBannerImage","wechatVideoImage","shorexIndex","bannerIndex","components","DestinationVideo","Swiper","SwiperSlide","loop","speed","swiper","$refs","bannerSwiper","$swiper","realIndex","stop","maxAttempts_","delayFactor_","fuzzFactor_","initialDelay_","getMaxAttempts","setMaxAttempts","maxAttempts","getDelayFactor","setDelayFactor","delayFactor","getFuzzFactor","setFuzzFactor","fuzzFactor","getInitialDelay","setInitialDelay","initialDelay","createRetry","Retry","currentDelay_","currentAttempt_","_proto2","delayDelta","getCurrentDelay","getCurrentMinPossibleDelay","getCurrentMaxPossibleDelay","lowValue","highValue","random","doccy","minDoc","topLevel","version$6","hooks_","hooks","hook","removeHook","hookOnce","original","wrapper","FullscreenApi","prefixed","apiMap","specApi","browserApi","history","LogByTypeFactory","level","lvl","levels","lvlRegExp","resultName","info","createLogger$1","delimiter","logByType","createLogger","subName","subDelimiter","subStyles","resultDelimiter","resultStyles","createNewLogger","newName","newDelimiter","newStyles","all","debug","fname","historyItem","log$1","each","initial","accum","isPlain","merge$1","sources","defineLazyProperty","setter","writable","Obj","ANDROID_VERSION","IS_IPOD","IOS_VERSION","IS_ANDROID","IS_FIREFOX","IS_EDGE","IS_CHROMIUM","IS_CHROME","CHROMIUM_VERSION","CHROME_VERSION","IS_CHROMECAST_RECEIVER","cast","framework","CastReceiverContext","IE_VERSION","IS_SAFARI","IS_WINDOWS","IS_IPAD","IS_IPHONE","IS_TIZEN","IS_WEBOS","IS_SMART_TV","TOUCH_ENABLED","isReal","maxTouchPoints","DocumentTouch","UAD","userAgentData","platform","brands","brand","USER_AGENT","major","minor","IS_IOS","IS_ANY_SAFARI","browser","isNonBlankString","throwIfWhitespace","isEl","isInFrame","createQuerier","selector","context","querySelector","ctx","createEl","content","getOwnPropertyNames","appendContent","prependTo","hasClass","classToCheck","classList","contains","addClass","classesToAdd","removeClass","classesToRemove","toggleClass","classToToggle","toggle","setAttributes","attrValue","getAttributes","knownBooleans","attrVal","blockTextSelection","focus","onselectstart","unblockTextSelection","computedStyle","findPosition","offsetParent","offsetLeft","getPointerPosition","translated","transform","assignedSlot","parentElement","WebKitCSSMatrix","transformValue","getComputedStyle","matrix","m41","m42","host","boxTarget","boxW","offsetY","offsetX","changedTouches","pageX","pageY","emptyEl","normalizeContent","insertContent","isSingleLeftClick","button","buttons","$","$$","computedStyleValue","getPropertyValue","copyStyleSheetsToWindow","styleSheets","styleSheet","cssRules","rule","cssText","head","link","rel","mediaText","Dom","videojs$1","_windowLoaded","autoSetup","vids","audios","divs","mediaEls","mediaEl","autoSetupTimeout","player","wait","vjs","setWindowLoaded","removeEventListener","addEventListener","createStyleElement","setTextContent","DomData","WeakMap","_initialGuid","_supportsPassive","_guid","newGUID","_cleanUpEvents","elem","handlers","dispatcher","detachEvent","disabled","_handleMultipleEvents","types","fixEvent","fixed_","returnTrue","returnFalse","isPropagationStopped","isImmediatePropagationStopped","deprecatedProps","preventDefault","srcElement","relatedTarget","fromElement","toElement","returnValue","defaultPrevented","stopPropagation","cancelBubble","stopImmediatePropagation","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","which","keyCode","supportsPassive","passiveEvents","guid","hash","handlersCopy","passive","attachEvent","removeType","elemData","bubbles","targetData","one","func","any","Events","UPDATE_REFRESH_INTERVAL","bind_","uid","bound","throttle","last","performance","throttled","debounce","immediate","cancel","debounced","later","Fn","EVENT_MAP","EventTarget$2","ael","allowedEvents_","oldTimeout","dispatchEvent","objName","name_","isEvented","eventBusEl_","addEventedCallback","eventedCallbacks","isValidEventType","validateTarget","fnName","validateEventType","validateListener","normalizeListenArgs","isTargetingSelf","shift","listen","EventedMixin","removeListenerOnDispose","removeRemoverOnTargetDispose","largs","targetOrType","typeOrListener","evented","eventBusKey","el_","StatefulMixin","stateUpdates","changes","to","stateful","defaultState","handleStateChanged","w","toTitleCase$1","titleCaseEquals","str1","str2","Str","toTitleCase","Component$1","ready","player_","isDisposed_","parentComponent_","options_","id_","handleLanguagechange","children_","childIndex_","childNameIndex_","setTimeoutIds_","setIntervalIds_","rafIds_","namedRafs_","clearingTimersOnDispose_","initChildren","reportTouchActivity","enableTouchActivity","readyQueue_","restoreEl","tokens","defaultValue","languages","primaryCode","primaryLang","localizedString","contentEl_","names","currentChild","getChild","iconName","experimentalSvgIcons","xmlnsURL","iconContainer","svgEl","useEl","iconIsSet_","componentName","componentClassName","componentClass","ComponentClass","getComponent","contentEl","childFound","compEl","children","parentOptions","handleAdd","playerOptions","addChild","workingChildren","Tech","some","wchild","isTech","isReady_","readyQueue","skipListeners","dimension","widthOrHeight","pxIndex","computedWidthOrHeight","currentDimension","boundingClientRect","blur","spatialNavigation","enabled","handleKeyDown","touchStart","firstTouch","tapMovementThreshold","touchTimeThreshold","couldBeTap","touches","xdiff","ydiff","touchDistance","sqrt","noTap","touchTime","reportUserActivity","touchHolding","clearInterval","setInterval","touchEnd","timeoutId","clearTimersOnDispose_","interval","intervalId","requestAnimationFrame","cancelNamedAnimationFrame","cancelAnimationFrame","idName","cancelName","inert","tabIndex","getIsDisabled","getIsExpresslyInert","isVisibleStyleProperty","elementStyle","thisVisibility","thisDisplay","invisibleStyle","isBeingRendered","opacity","isVisible","elementCenter","clientWidth","innerWidth","clientHeight","innerHeight","pointContainer","elementFromPoint","ComponentToRegister","isComp","isPrototypeOf","reason","components_","Player","players","playerNames","pname","rangeCheck","maxIndex","getRange","valueIndex","rangeIndex","createTimeRangesObj","timeRangesObj","createTimeRanges$1","registerComponent","defaultImplementation","guide","gm","gh","setFormatTime","customImplementation","resetFormatTime","formatTime","createTimeRanges","createTimeRange","bufferedPercent","buffered","bufferedDuration","MediaError","defaultMessages","isPromise","then","silencePromise","errorTypes","1","2","3","4","5","MEDIA_ERR_CUSTOM","MEDIA_ERR_ABORTED","MEDIA_ERR_NETWORK","MEDIA_ERR_DECODE","MEDIA_ERR_SRC_NOT_SUPPORTED","MEDIA_ERR_ENCRYPTED","trackToJson_","textTracksToJson","tech","trackEls","trackObjs","tracks","trackEl","textTracks","jsonToTextTracks","addedTrack","addRemoteTextTrack","addCue","textTrackConverter","MODAL_CLASS_NAME","ModalDialog","handleKeyDown_","close_","close","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","descEl_","description","buildCSSClass","previouslyActiveEl_","localize","desc","fillAlways","wasPlaying_","paused","pauseOnOpen","hadControls_","show","conditionalFocus_","hide","conditionalBlur_","temporary","closeable_","temp","controlText","fillWith","parentEl","nextSiblingEl","closeButton","content_","activeEl","activeElement","playerEl","originalEvent","focusableEls","focusableEls_","focusIndex","shiftKey","allChildren","querySelectorAll","HTMLAnchorElement","HTMLAreaElement","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLButtonElement","HTMLIFrameElement","HTMLObjectElement","HTMLEmbedElement","TrackList","tracks_","addTrack","labelchange_","rtrack","change","addtrack","removetrack","labelchange","disableOthers$1","AudioTrackList","changing_","enabledChange_","removeTrack","disableOthers","selected","VideoTrackList","selectedChange_","TextTrackList","queueChange_","queueTrigger","triggerSelectedlanguagechange","triggerSelectedlanguagechange_","nonLanguageTextTrackKind","kind","selectedlanguagechange_","HtmlTrackElementList","trackElements","trackElements_","addTrackElement_","trackElement","trackElement_","TextTrackCueList","setCues_","length_","oldLength","cues_","defineProp","VideoTrackKind","alternative","main","sign","subtitles","commentary","AudioTrackKind","TextTrackKind","descriptions","chapters","TextTrackMode","hidden","showing","Track","trackProps","newLabel","parseUrl","baseURI","getAbsoluteURL","getFileExtension","splitPathRe","isCrossOrigin","winLoc","origin","Url","parseCues","srcContent","groupCollapsed","groupEnd","loadTrack","crossOrigin","tech_","loaded_","TextTrack","srclang","default_","activeCues_","preload_","preloadTextTracks","activeCues","changed","timeupdateHandler","isDisposed","rvf_","requestVideoFrameCallback","disposeHandler","stopTracking","startTracking","newMode","ct","active","cancelVideoFrameCallback","originalCue","originalCue_","removeCue","cuechange","AudioTrack","newEnabled","VideoTrack","newSelected","HTMLTrackElement","NONE","LOADED","load","LOADING","ERROR","NORMAL","ListClass","TrackClass","capitalName","getterName","privateName","REMOTE","remoteText","remoteTextEl","ALL","createTrackHelper","onDurationChange_","onDurationChange","trackProgress_","trackProgress","trackCurrentTime_","trackCurrentTime","stopTrackingCurrentTime_","stopTrackingCurrentTime","disposeSourceHandler_","disposeSourceHandler","queuedHanders_","hasStarted_","featuresProgressEvents","manualProgressOn","featuresTimeupdateEvents","manualTimeUpdatesOn","nativeCaptions","nativeTextTracks","featuresNativeTextTracks","emulateTextTracks","autoRemoteTextTracks_","initTrackListeners","nativeControlsForTouch","emitTapEvents","triggerSourceset","manualProgress","stopTrackingProgress","progressInterval","numBufferedPercent","bufferedPercent_","duration_","manualTimeUpdates","currentTimeInterval","manuallyTriggered","clearTracks","manualProgressOff","manualTimeUpdatesOff","removeRemoteTextTrack","error_","_isScrubbing","_seconds","trackListChanges","script","addWebVttScript_","remoteTracks","remoteTextTracks","handleAddTrack","handleRemoveTrack","updateDisplay","textTracksChanges","manualCleanup","htmlTrackElement","createRemoteTextTrack","remoteTextTrackEls","getTrackElementByTrack_","removeTrackElement_","Promise","reject","cb","requestNamedAnimationFrame","override","_type","srcObj","canPlayType","techs_","canPlaySource","defaultTechOrder_","featuresVolumeControl","featuresMuteControl","featuresFullscreenResize","featuresPlaybackRate","featuresSourceset","featuresVideoFrameCallback","withSourceHandlers","_Tech","registerSourceHandler","handler","sourceHandlers","can","selectSourceHandler","canHandleSource","sh","deferrable","originalFn","sourceHandler_","setSource","nativeSourceHandler","currentSource_","handleSource","cleanupAutoTextTracks","registerTech","middlewares","middlewareInstances","TERMINATOR","use","middleware","setSourceHelper","setTech","mw","middlewareIterator","mediate","callMethod","middlewareValue","terminated","executeRight","allowedGetters","muted","played","seekable","volume","ended","allowedSetters","setCurrentTime","setMuted","setVolume","allowedMediators","mws","clearCacheForPlayer","getOrCreateFactory","mwFactory","mwf","mwi","lastRun","mwrest","_src","MimetypesKind","opus","ogv","mov","m4v","mkv","m4a","mp3","aac","caf","flac","oga","wav","m3u8","jpg","jpeg","gif","png","svg","webp","getMimetype","mimetype","findMimetype","cache_","matchingSources","filterSource","newsrc","srcobj","fixSource","icons","backKeyCode","SpatialNavKeyCodes","codes","ff","rw","back","415","19","417","412","keyName","STEP_SECONDS$1","SpatialNavigation","focusableComponents","isListening_","isPaused_","onKeyDown_","lastFocusedComponent_","updateFocusableComponents","refocusComponent","handlePlayerFocus_","handlePlayerBlur_","errorDisplay","actualEvent","isEventKey","action","getEventName","performMediaAction_","userSeek_","liveTracker","isLive","nextSeekedFromUser","nextFocusedElement","isChildrenOfPlayer","currentComponent","getCurrentComponent","closest","searchForTrackSelect_","currentTarget","getIsFocusable","resume","searchForChildrenCandidates","componentsArray","getIsAvailableToBeFocused","items","findSuitableDOMChild","buttonContainer","modalButtons","getPositions","searchForSuitableChild","suitableChild","curComp","currentFocusedComponent","currentPositions","candidates","isInDirection_","bestCandidate","findBestCandidate_","focusedComponent","currentCenter","minDistance","candidate","candidateCenter","distance","calculateDistance_","srcRect","targetRect","userActive","center1","center2","dx","dy","MediaLoader","techOrder","techName","getTech","loadTech_","ClickableComponent","handleMouseOver_","handleMouseOver","handleMouseOut_","handleMouseOut","handleClick_","handleClick","tabIndex_","createControlTextEl","controlTextEl_","controlText_","localizedText","nonIconControl","noUITitleAttributes","clickHandler","PosterImage","update","update_","crossorigin","poster","setSrc","loading","darkGray","lightGray","fontMap","monospace","sansSerif","serif","monospaceSansSerif","monospaceSerif","proportionalSansSerif","proportionalSerif","casual","smallcaps","constructColor","hex","tryUpdateStyle","getCSSPositionValue","TextTrackDisplay","updateDisplayTextHandler","updateDisplayHandler","updateDisplayOverlay","toggleDisplay","preselectTrack","screenOrientation","screen","orientation","changeOrientationEvent","modes","userPref","selectedLanguage","firstDesc","firstCaptions","preferredTrack","allowMultipleShowingTracks","clearDisplay","showingTracks","updateForTrack","descriptionsTrack","captionsSubtitlesTrack","CSS","supports","textTrackDisplay","vjsTextTrackCues","controlBarHeight","playerHeight","vjsTextTrackCue","inset","insetStyles","videoHeight","playerWidth","currentWidth","currentHeight","playerAspectRatio","videoAspectRatio","videoWidth","insetInlineMatch","insetBlockMatch","overrides","textTrackSettings","getValues","textOpacity","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontFamily","fontVariant","cueEl","updateDisplayState","LoadingSpinner","isAudio","playerType","Button","BigPlayButton","mouseused_","setIcon","handleMouseDown","playPromise","playFocus","CloseButton","PlayToggle","replay","handlePlay","handlePause","handleEnded","handleSeeked","TimeDisplay","updateTextNode_","span","labelText_","textNode_","enableSmoothSeeking","updateContent","formattedTime_","oldNode","CurrentTimeDisplay","scrubbing","getCache","DurationDisplay","TimeDivider","RemainingTimeDisplay","displayNegative","remainingTimeDisplay","remainingTime","LiveDisplay","updateShowing","SeekToLive","updateLiveEdgeStatus","updateLiveEdgeStatusHandler_","textEl_","atLiveEdge","seekToLiveEdge","clamp","Num","Slider","handleMouseDown_","handleMouseUp_","handleMouseUp","handleMouseMove_","handleMouseMove","bar","barName","playerEvent","progress","getProgress","progress_","sizeKey","toFixed","getPercent","spatialNavOptions","spatialNavEnabled","horizontalSeek","stepBack","stepForward","bool","vertical_","percentify","LoadProgressBar","partEls_","loadedText","separator","percentageEl_","seekableEnd","bufferedEnd","percent_","dataset","TimeTooltip","seekBarRect","seekBarPoint","tooltipRect","playerRect","seekBarPointPx","spaceLeftOfPoint","spaceRightOfPoint","pullTooltipBy","liveWindow","secondsBehind","PlayProgressBar","timeTooltip","updateTime","MouseTimeDisplay","STEP_SECONDS","PAGE_KEY_MULTIPLIER","SeekBar","setEventHandlers_","updateInterval","enableIntervalHandler_","enableInterval_","disableIntervalHandler_","disableInterval_","toggleVisibility_","visibilityState","getCurrentTime_","liveCurrentTime","currentTime_","seekableStart","videoWasPlaying","mouseDown","newTime","calculateDistance","mouseTimeDisplay","handleAction","gotoFraction","ProgressControl","throttledHandleMouseSeek","handleMouseSeek","handleMouseUpHandler_","handleMouseDownHandler_","seekBar","playProgressBar","seekBarEl","removeListenersAddedOnMousedownAndTouchstart","PictureInPictureToggle","handlePictureInPictureChange","handlePictureInPictureEnabledChange","handlePictureInPictureAudioModeChange","isSourceAudio","currentType","isAudioMode","audioPosterMode","audioOnlyMode","isInPictureInPicture","exitPictureInPicture","pictureInPictureEnabled","disablePictureInPicture","enableDocumentPictureInPicture","requestPictureInPicture","FullscreenToggle","fsApi_","fullscreenEnabled","checkVolumeSupport","VolumeLevel","VolumeLevelTooltip","rangeBarRect","rangeBarPoint","volumeBarPointPx","MouseVolumeLevelDisplay","updateVolume","VolumeBar","updateLastVolume_","updateARIAAttributes","mouseVolumeLevelDisplay","volumeBarEl","volumeBarRect","volumeBarPoint","checkMuted","ariaValue","volumeAsPercentage_","volumeBeforeDrag","lastVolume_","VolumeControl","volumeBar","throttledHandleMouseMove","orientationClass","checkMuteSupport","MuteToggle","vol","lastVolume","volumeToSet","updateIcon_","updateControlText_","soundOff","VolumePanel","inline","volumeControl","handleKeyPressHandler_","handleKeyPress","volumePanelState_","muteToggle","handleVolumeControlKeyUp","sliderActive_","sliderInactive_","SkipForward","validOptions","skipTime","getSkipForwardTime","toLocaleString","skipButtons","forward","currentVideoTime","SkipBackward","getSkipBackwardTime","backward","Menu","menuButton_","menuButton","focusedChild_","boundHandleBlur_","handleBlur","boundHandleTapClick_","handleTapClick","removeEventListenerForItem","childComponent","addEventListenerForItem","contentElType","append","btn","buttonPressed_","unpressButton","childComponents","foundComponent","stepChild","haveTitle","MenuButton","buttonClass","handleMenuKeyUp_","handleMenuKeyUp","menu","handleMouseLeave","handleSubmenuKeyDown","createMenu","hideThreshold_","titleEl","titleComponent","addItem","createItems","buildWrapperCSSClass","menuButtonClass","pressButton","lockShowing","unlockShowing","TrackButton","updateHandler","MenuItem","selectable","isSelected_","multiSelectable","menuItemEl","TextTrackMenuItem","kinds","changeHandler","handleTracksChange","selectedLanguageChangeHandler","handleSelectedLanguageChange","onchange","Event","createEvent","initEvent","referenceTrack","shouldBeSelected","OffTextTrackMenuItem","allHidden","TextTrackButton","TrackMenuItem","label_","kinds_","kind_","ChaptersTrackMenuItem","ChaptersButton","selectCurrentItem_","track_","findChaptersTrack","setTrack","updateHandler_","remoteTextTrackEl","getMenuCaption","mi","DescriptionsButton","SubtitlesButton","CaptionSettingsMenuItem","CaptionsButton","SubsCapsMenuItem","parentSpan","SubsCapsButton","language_","AudioTrackMenuItem","audioTracks","featuresNativeAudioTracks","AudioTrackButton","PlaybackRateMenuItem","rate","playbackRate","PlaybackRateMenuButton","labelElId_","updateVisibility","updateLabel","handlePlaybackRateschange","labelEl_","rates","playbackRates","playbackRateSupported","Spacer","CustomControlSpacer","ControlBar","ErrorDisplay","TextTrackSelect","selectLabelledbyIds","legendId","labelId","selectoptions","SelectOptions","optionText","optionId","option","TextTrackFieldset","legendElement","legendText","selects","selectConfig","selectConfigs","selectClassName","textTrackSelect","TextTrackSettingsColors","textTrackComponentid","ElFgColorFieldset","fieldSets","ElBgColorFieldset","ElWinColorFieldset","TextTrackSettingsFont","TrackSettingsControls","defaultsDescription","resetButton","doneButton","LOCAL_STORAGE_KEY$1","COLOR_BLACK","COLOR_BLUE","COLOR_CYAN","COLOR_GREEN","COLOR_MAGENTA","COLOR_RED","COLOR_WHITE","COLOR_YELLOW","OPACITY_OPAQUE","OPACITY_SEMI","OPACITY_TRANS","parseOptionValue","getSelectedOptionValue","selectedIndex","setSelectedOption","TextTrackSettings","renderModalComponents","endDialog","setDefaults","persistTextTrackSettings","bindFunctionsToSelectsAndButtons","restoreSettings","textTrackSettingsColors","textTrackSettingsFont","trackSettingsControls","saveSettings","localStorage","getItem","setValues","setItem","removeItem","ttDisplay","ResizeManager","RESIZE_OBSERVER_AVAILABLE","ResizeObserver","loadListener_","resizeObserver_","debouncedHandler_","resizeHandler","observe","contentWindow","unloadListener_","unobserve","disconnect","resizeObserver","defaults$1","trackingThreshold","liveTolerance","LiveTracker","trackLiveHandler_","trackLive_","handlePlay_","handleFirstTimeupdate_","handleFirstTimeupdate","handleSeeked_","seekToLiveEdge_","reset_","handleDurationchange","toggleTracking","deltaTime","lastTime_","pastSeekEnd_","pastSeekEnd","isBehind","seekedBehindLive_","timeupdateSeen_","behindLiveEdge_","liveui","isTracking","hasStarted","trackingInterval_","timeDiff","nextSeekedFromUser_","lastSeekEnd_","seekableEnds","seekableStarts","behindLiveEdge","TitleBar","updateDom_","techEl","techAriaAttrs","techAriaAttr","setState","defaults","initialDisplay","takeFocus","TransientButton","preventScroll","forceDisplayTimeout","sourcesetLoad","srcUrls","innerHTMLDescriptorPolyfill","dummy","docFrag","getDescriptor","priority","descriptor","getOwnPropertyDescriptor","getInnerHTMLDescriptor","HTMLMediaElement","firstSourceWatch","resetSourceWatch_","innerDescriptor","appendWrapper","appendFn","retval","srcDescriptorPolyfill","getSrcDescriptor","setupSourceset","resetSourceset_","srcDescriptor","oldSetAttribute","oldLoad","currentSrc","Html5","crossoriginTracks","initNetworkState_","handleLateInit_","enableSourceset","setupSourcesetHandling_","isScrubbing_","nodes","nodesLength","removeNodes","proxyNativeTracks_","restoreMetadataTracksInIOSNativePlayer_","setControls","proxyWebkitFullscreen_","triggerReady","disposeMediaElement","metadataTracksPreFullscreenState","takeMetadataTrackSnapshot","storedMode","restoreTrackMode","storedTrack","lowerCaseType","eventName","elTracks","proxyNativeTracksForType_","overrideNative_","techTracks","removeOldTracks","removeTracks","playerElIngest","movingMediaElementInDOM","clone","tagAttributes","techId","playerId","settingsAttrs","networkState","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","isScrubbing","fastSeek","checkProgress","endFn","beginFn","webkitPresentationMode","nativeIOSFullscreen","webkitEnterFullScreen","HAVE_METADATA","webkitDisplayingFullscreen","webkitExitFullScreen","webkitKeys","resetMediaElement","addTextTrack","getVideoPlaybackQuality","videoPlaybackQuality","webkitDroppedFrameCount","webkitDecodedFrameCount","droppedVideoFrames","totalVideoFrames","creationTime","TEST_VID","canControlVolume","canControl","canMuteVolume","canControlPlaybackRate","canOverrideAttributes","supportsNativeTextTracks","supportsNativeVideoTracks","videoTracks","supportsNativeAudioTracks","TECH_EVENTS_RETRIGGER","TECH_EVENTS_QUEUE","canplay","canplaythrough","playing","seeked","BREAKPOINT_ORDER","BREAKPOINT_CLASSES","DEFAULT_BREAKPOINTS","tiny","xsmall","small","medium","large","xlarge","huge","getTagSettings","boundDocumentFullscreenChange_","documentFullscreenChange_","boundFullWindowOnEscKey_","fullWindowOnEscKey","boundUpdateStyleEl_","updateStyleEl_","boundApplyInitTime_","applyInitTime_","boundUpdateCurrentBreakpoint_","updateCurrentBreakpoint_","boundHandleTechClick_","handleTechClick_","boundHandleTechDoubleClick_","handleTechDoubleClick_","boundHandleTechTouchStart_","handleTechTouchStart_","boundHandleTechTouchMove_","handleTechTouchMove_","boundHandleTechTouchEnd_","handleTechTouchEnd_","boundHandleTechTap_","handleTechTap_","boundUpdatePlayerHeightOnAudioOnlyMode_","updatePlayerHeightOnAudioOnlyMode_","isPosterFromTech_","queuedCallbacks_","userActive_","debugEnabled_","audioOnlyMode_","audioPosterMode_","audioOnlyCache_","hiddenChildren","languagesToLower","languages_","resetCache_","poster_","controls_","changingSrc_","playCallbacks_","playTerminatedQueue_","plugins","scrubbing_","fullscreenchange","fluid_","playerOptionsCopy","middleware_","parsedSVG","errorNode","sprite","majorVersion","listenForUserActivity_","breakpoints","responsive","styleEl_","playerElIngest_","divEmbed","tabindex","deviceClassNames","VIDEOJS_NO_DYNAMIC_STYLE","defaultsStyleEl","fill_","fluid","links","linkEl","techGet_","techCall_","posterImage","privDimension","parsedVal","aspectRatio_","width_","height_","idClass","ratioParts","ratioMultiplier","unloadTech_","titleTechName","camelTechName","techName_","normalizeAutoplay","techOptions","playsinline","techCanOverridePoster","TechClass","handleTechReady_","textTracksJson_","eventObj","seeking","handleTechLoadStart_","handleTechSourceset_","handleTechWaiting_","handleTechEnded_","handleTechSeeking_","handleTechPlay_","handleTechPause_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechFullscreenError_","handleTechEnterPictureInPicture_","handleTechLeavePictureInPicture_","handleTechError_","handleTechPosterChange_","handleTechTextData_","handleTechRateChange_","usingNativeControls","addTechControlsListeners_","safety","removeTechControlsListeners_","manualAutoplay_","resolveMuted","previouslyMuted","restoreMuted","mutedPromise","catch","promise","sourceElSources","sourceEls","matchingSourceEls","sourceObj","updateSourceCaches","updateSourceCaches_","playerSrc","currentSource","eventSrc","lastSource_","techSrc","request","lastPlaybackRate","queued","timeWhenWaiting","timeUpdateListener","userActions","click","inAllowedEls","doubleClick","userWasActive","cancelable","targetPlayer","isFs","fullscreen","initTime","inactivityTimeout","defaultPlaybackRate","resolve","play_","isSrcReady","isSafariOrIOS","waitToPlay_","isNativeReplay","resetProgressBar_","runPlayTerminatedQueue_","runPlayCallbacks_","queue","q","percentAsDecimal","defaultMuted","isFS","oldValue","toggleFullscreenClass_","fullscreenOptions","offHandler","requestFullscreenHelper_","fsOptions","supportsFullScreen","preferFullWindow","enterFullWindow","exitFullscreenHelper_","exitFullWindow","isFullWindow","docOrigOverflow","overflow","isPiP","isInPictureInPicture_","togglePictureInPictureClass_","documentPictureInPicture","pipContainer","titleBar","requestWindow","pipWindow","pipVideo","hotkeys","excludeElement","isContentEditable","allowedInputTypes","excludedTags","handleHotkeys","fullscreenKey","keydownEvent","muteKey","playPauseKey","FSToggle","techs","findFirstPassingTechSourcePair","outerArray","innerArray","tester","outerChoice","innerChoice","foundSourceAndTech","flip","finder","sourceOrder","isRetry","resetRetryOnError_","middlewareSource","src_","handleSrc_","notSupportedMessage","stopListeningForErrors","sourceTech","selectSource","vhs","doReset_","resetControlBarUI_","resetPlaybackRate_","resetVolumeBar_","currentTimeDisplay","durationDisplay","progressControl","loadProgressBar","techAutoplay","newPoster","usingNativeControls_","hookFunction","newErr","suppressNotSupportedError","triggerSuppressedError","userActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","handleMouseUpAndMouseLeave","activityCheck","isAudio_","playerChildren","exitPromises","enableAudioOnlyUI_","disableAudioOnlyUI_","audioOnlyModePromise","enablePosterModeUI_","disablePosterModeUI_","modal","currentBreakpoint","candidateBreakpoint","maxWidth","breakpoints_","breakpoint_","currentBreakpointClass","responsive_","removeCurrentBreakpoint_","artist","artwork","tt","currentSources","baseOptions","tagOptions","dataSetup","childName","previousLogLevel_","newRates","html5","userLanguage","navigationUI","BASE_PLUGIN_NAME","PLUGIN_CACHE_KEY","pluginStorage","pluginExists","getPlugin","markPluginAsActive","triggerSetupEvent","before","createBasicPlugin","plugin","basicPluginWrapper","instance","createPluginFactory","PluginSubClass","getEventHash","Plugin","VERSION","isBasic","deprecate","warned","deprecateForMajor","oldName","registerPlugin","usingPlugin","hasPlugin","VjsErrors","NetworkBadStatus","NetworkRequestFailed","NetworkRequestAborted","NetworkRequestTimeout","NetworkBodyParserFailed","StreamingHlsPlaylistParserError","StreamingDashManifestParserError","StreamingContentSteeringParserError","StreamingVttParserError","StreamingFailedToSelectNextSegment","StreamingFailedToDecryptSegment","StreamingFailedToTransmuxSegment","StreamingFailedToAppendSegment","StreamingCodecsChangeError","normalizeId","getPlayer","inShadowDom","getRootNode","ShadowRoot","rootNode","defaultView","PlayerComponent","getPlayers","nId","getAllPlayers","writeable","mergeOptions","deregisterPlugin","getPlugins","getPluginVersion","addLanguage","EventTarget","QualityLevel","bitrate","QualityLevelList","levels_","selectedIndex_","qualityLevel","getQualityLevelById","removed","addqualitylevel","removequalitylevel","version$5","initPlugin$1","originalPluginFn","qualityLevels","qualityLevelList","resolveManifestRedirect","req","logger","bufferedRangesToString","bufferedRangesStr","TIME_FUDGE_FACTOR","SAFE_TIME_DELTA","filterRanges","timeRanges","results","findRange","findNextRange","findGaps","bufferIntersection","bufferA","bufferB","arity","extents","printableRange","strArr","timeUntilRebuffer","timeRangesToArray","timeRangesList","isRangeDifferent","lastBufferedEnd","timeAheadOf","segmentDurationWithParts","getPartsAndSegments","si","getLastParts","lastSegment","getKnownPartCount","partCount","liveEdgeDelay","partHoldBack","holdBack","backwardDuration","endSequence","forwardDuration","intervalDuration","expired","totalDuration","sumDurations","defaultDuration","durationList","durations","playlistEnd","useSafeLiveEnd","liveEdgePadding","lastSegmentEndTime","getMediaInfoForTime","startingSegmentIndex","startingPartIndex","exactManifestTimings","partsAndSegments","partAndSegment","canUseFudgeFactor","isExactlyAtTheEnd","isExtremelyCloseToTheEnd","isExcluded","excludeUntil","isIncompatible","isEnabled","excluded","isDisabled","isAes","estimateSegmentRequestTime","bytesReceived","isLowestEnabledRendition","currentBandwidth","MAX_VALUE","playlistMatch","someAudioVariant","groupName","variant","Playlist","createPlaylistID","groupID","parseManifest","onwarn","oninfo","customTagParsers","customTagMappers","llhls","customParser","setupMediaPlaylist","playlistErrors_","setupMediaPlaylists","resolveMediaGroupUris","mainForMedia","addPropertiesToMain","createGroupID","phonyUri","audioOnlyMain","groupId","DateRangesStorage","offset_","pendingDateRanges_","processedDateRanges_","firstSegment","trimProcessedDateRanges_","pendingDateRange","dateRangeClasses","dateRangesToProcess","processDateRange","classListIndex","QUOTA_EXCEEDED_ERR","getStreamingNetworkErrorMetadata","parseFailure","isBadStatus","isFailure","errorMetadata","isBadStatusOrParseFailure","errorType","timedout","erroType","EventTarget$1","addLLHLSQueryDirectives","parameters","nextMSN","nextPart","_HLS_part","_HLS_msn","canSkipUntil","_HLS_skip","parsedUri","updateSegment","skipped","updateSegments","oldSegments","newSegments","newIndex","newSegment","resolveSegmentUris","baseUri","getAllSegments","isPlaylistUnchanged","updateMain$1","newMedia","unchangedCheck","oldMedia","mergedPlaylist","skippedSegments","refreshDelay","lastPart","lastDuration","playlistMetadataPayload","renditions","PlaylistLoader","logger_","vhs_","addDateRangesToTextTrack_","addDateRangesToTextTrack","vhsOptions","dateRangesStorage_","handleMediaupdatetimeout_","handleLoadedPlaylist_","mediaPlaylist","setOffset","setPendingDateRanges","availableDateRanges","getDateRangesToProcess","playlistRequestError","haveMetadata","playlistString","startingState","playlistObject","playlistInfo","parseManifest_","lastRequest","pendingMedia_","media_","updateMediaUpdateTimeout_","parsedPlaylist","stopRequest","mediaUpdateTimeout","finalRenditionTimeout","oldRequest","shouldDelay","delay","mediaChange","mainPlaylistRef","started","setupInitialPlaylist","srcUri","isUpdate","pathway","ID","oldPlaylistUri","oldPlaylistId","newPlaylistUri","createCloneURI_","newPlaylistId","createCloneAttributes_","updatedPlaylist","createClonePlaylist_","updateOrDeleteCloneMedia","oldMediaPlaylist","createClonedMediaGroups_","basePlaylist","playlistId","baseID","newUri","newPlaylistID","newMediaPlaylist","newProps","hostname","HOST","PARAMS","oldAttributes","keyIds","keysystem","callbackWrapper","reqResponse","responseTime","roundTripTime","requestTime","responseHeaders","callAllRequestHooks","requestSet","newOptions","requestCallback","callAllResponseHooks","responseSet","responseCallback","xhrFactory","XhrFunction","beforeRequest","Vhs","_requestCallbackSet","_responseCallbackSet","xhrMethod","beforeRequestOptions","originalAbort","byterangeStr","byterangeEnd","byterangeStart","segmentXhrHeaders","Range","textRange","formatHexString","formatAsciiString","createTransferableMessage","transferable","initSegmentId","segmentKeyId","hexDump","ascii","tagDump","textRanges","utils","SEGMENT_END_FUDGE_PERCENT","playerTimeToProgramTime","playerTime","transmuxerPrependedSeconds","videoTimingInfo","transmuxedStart","transmuxedPresentationStart","startOfSegment","offsetFromSegmentStart","originalSegmentVideoDuration","transmuxedPresentationEnd","findSegmentForProgramTime","programTime","nextSegmentStart","lastSegmentStart","lastSegmentDuration","lastSegmentEnd","estimatedStart","findSegmentForPlayerTime","segmentEnd","getOffsetFromTimestamp","comparisonTimeStamp","segmentDateTime","segmentTimeEpoch","programTimeEpoch","verifyProgramDateTimeTags","getProgramTime","matchedSegment","seekTime","programTimeObject","mediaSeconds","toISOString","seekToProgramTime","retryCount","seekTo","pauseAfterSeek","mediaOffset","seekToTime","seekedCallback","callbackOnCompleted","containerRequest","id3Offset","finished","endRequestAndCallback","_bytes","progressListener","newPart","overrideMimeType","loaded","dashPlaylistUnchanged","aSegment","bSegment","aByterange","bByterange","dashGroupId","parseMainXml","mainXml","srcUrl","removeOldMediaGroupLabels","newMain","updateMain","oldMain","noChanges","playlistUpdate","equivalentSidx","neitherMap","equivalentMap","compareSidxEntry","oldSidxMapping","newSidxMapping","currentSidxInfo","savedSidxInfo","sidxInfo","filterChangedSidxMappings","videoSidx","mediaGroupSidx","DashPlaylistLoader","srcUrlOrPlaylist","mainPlaylistLoader","mainPlaylistLoader_","isMain_","addMetadataToTextTrack","refreshXml_","refreshMedia_","loadedPlaylists_","sidxMapping_","childPlaylist_","mediaRequest_","fin","requestErrored_","REQUEST_TYPE","sidxContainer","internal","playlistExclusionDuration","minimumUpdatePeriodTimeout_","createMupOnMedia_","addSidxSegments_","sidxChanged","isFinalRendition","updateMinimumUpdatePeriodTimeout_","requestMain_","mainChanged","haveMain_","hasPendingRequest","manifestInfo","mainXml_","date","mainLoaded_","handleMain_","syncClientServerClock_","utcTiming","clientOffset_","serverTime","addEventStreamToMetadataTrack_","parsedManifest","mpl","mup","createMUPTimeout_","mediaID","mediaChanged","createMediaUpdateTimeout","metadataArray","eventStreamNode","cueTime","frames","defaultKID","Config","GOAL_BUFFER_LENGTH","MAX_GOAL_BUFFER_LENGTH","BACK_BUFFER_LENGTH","GOAL_BUFFER_LENGTH_RATE","INITIAL_BANDWIDTH","BANDWIDTH_VARIANCE","BUFFER_LOW_WATER_LINE","MAX_BUFFER_LOW_WATER_LINE","EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE","BUFFER_LOW_WATER_LINE_RATE","BUFFER_HIGH_WATER_LINE","stringToArrayBuffer","browserWorkerPolyFill","workerObj","createObjectURL","Blob","blob","BlobBuilder","getBlob","factory","objectUrl","worker","Worker","objURL","terminate","revokeObjectURL","getWorkerString","workerCode$1","commonjsGlobal","globalThis","Stream$8","init","flushSource","partialFlush","endTimeline","dinf","esds","ftyp","mdat","mfhd","minf","moof","moov","mvex","mvhd","trak","tkhd","mdia","mdhd","hdlr","sdtp","stbl","stsd","traf","trex","trun$1","MAJOR_BRAND","MINOR_VERSION","AVC1_BRAND","VIDEO_HDLR","AUDIO_HDLR","HDLR_TYPES","VMHD","SMHD","DREF","STCO","STSC","STSZ","STTS","MAX_UINT32$1","getUint64$3","numbers","avc1","avcC","btrt","dref","mp4a","pasp","smhd","stco","stsc","stsz","stts","styp","tfdt","tfhd","trun","vmhd","setUint32","audioobjecttype","samplingfrequencyindex","channelcount","samplerate","sequenceNumber","trackFragments","samples","dependsOn","isDependedOn","hasRedundancy","videoSample","audioSample","avc1Box","sps","pps","sequenceParameterSets","pictureParameterSets","profileIdc","profileCompatibility","levelIdc","sarRatio","hSpacing","vSpacing","samplesize","trackFragmentHeader","trackFragmentDecodeTime","trackFragmentRun","sampleDependencyTable","dataOffset","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","baseMediaDecodeTime","audioTrun","videoTrun","trunHeader","durationPresent","sizePresent","flagsPresent","compositionTimeOffset","bytesOffest","header","sample","isLeading","paddingValue","isNonSyncSample","degradationPriority","silence","mp4Generator","fileType","movie","groupNalsIntoFrames","nalUnits","currentNal","currentFrame","nalCount","nalUnitType","dts","pts","keyFrame","groupFramesIntoGops","currentGop","gops","extendFirstKeyFrame","createDefaultSample","sampleForFrame","frame","generateSampleTable$1","baseDataOffset","concatenateNalData","nalsByteLength","numberOfNals","totalByteLength","generateSampleTableForFrame","concatenateNalDataForFrame","frameUtils$1","generateSampleTable","highPrefix","lowPrefix","zeroFill","makeTable","metaTable","silence_1","coneOfSilence","96000","88200","64000","48000","44100","32000","24000","16000","12000","11025","8000","ONE_SECOND_IN_TS$4","clock$2","clock$1","sumFrameByteLengths","currentObj","prefixWithSilence","audioAppendStartTs","videoBaseMediaDecodeTime","baseMediaDecodeTimeTs","silentFrame","firstFrame","frameDuration","audioGapDuration","audioFillFrameCount","audioFillDuration","trimAdtsFramesByEarliestDts","adtsFrames","earliestAllowedDts","minSegmentDts","minSegmentPts","concatenateFrameData","audioFrameUtils$1","ONE_SECOND_IN_TS$3","collectDtsInfo","timelineStartInfo","maxSegmentPts","maxSegmentDts","clearDtsInfo","calculateTrackBaseMediaDecodeTime","scale","trackDecodeInfo$1","USER_DATA_REGISTERED_ITU_T_T35","RBSP_TRAILING_BITS","parseSei","payloadType","payloadSize","userIdentifier","parseUserData","sei","parseCaptionPackets","userData","ccData","discardEmulationPreventionBytes$1","newLength","newData","emulationPreventionBytesPositions","sourceIndex","captionPacketParser","discardEmulationPreventionBytes","Stream$7","cea708Parser","CaptionStream$2","parse708captions_","parse708captions","captionPackets_","ccStreams_","Cea608Stream","cc708Stream_","Cea708Stream","newCaptionPackets","escapedRBSP","latestDts_","ignoreNextEqualDts_","numSameDts_","flushCCStreams","flushType","flushStream","presortIndex","packet","dispatchCea608Packet","dispatchCea708Packet","activeCea608Channel_","ccStream","setsTextOrXDSActive","setsChannel1Active","setsChannel2Active","CHARACTER_TRANSLATION_708","get708CharFromCode","newCode","within708TextBlock","Cea708Window","windowNum","clearText","pendingNewLine","winAttr","penAttr","penLoc","penColor","visible","rowLock","columnLock","relativePositioning","anchorVertical","anchorHorizontal","anchorPoint","rowCount","virtualRowCount","columnCount","windowStyle","penStyle","getText","rows","rowIdx","beforeRowOverflow","addText","backspace","Cea708Service","serviceNum","currentWindow","windows","createTextDecoder","startPts","setCurrentWindow","textDecoder_","serviceProps","captionServiceEncodings","serviceName","serviceEncodings","current708Packet","services","new708Packet","add708Bytes","push708Packet","ptsVals","byte0","byte1","packet708","packetData","blockSize","seq","sizeCode","pushServiceBlock","initService","handleText","multiByteCharacter","extendedCommands","defineWindow","clearWindows","deleteWindows","displayWindows","hideWindows","toggleWindows","setWindowAttributes","setPenAttributes","setPenColor","setPenLocation","isExtended","getPts","flushDisplayed","char","charCodeArray","isMultiByte","extended","currentByte","nextByte","unicode","fillOpacity","fillRed","fillGreen","fillBlue","borderType","borderRed","borderGreen","borderBlue","wordWrap","printDirection","scrollDirection","justify","effectSpeed","effectDirection","displayEffect","displayedText","winId","endPts","pushCaption","textTag","penSize","italics","underline","edgeType","fontStyle","fgOpacity","fgRed","fgGreen","fgBlue","bgOpacity","bgRed","bgGreen","bgBlue","edgeRed","edgeGreen","edgeBlue","column","CHARACTER_TRANSLATION","getCharFromCode","BOTTOM_ROW","ROWS","createDisplayBuffer","indent","field","dataChannel","field_","dataChannel_","setConstants","char0","char1","lastControlCode_","PADDING_","RESUME_CAPTION_LOADING_","mode_","END_OF_CAPTION_","clearFormatting","displayed_","nonDisplayed_","startPts_","ROLL_UP_2_ROWS_","rollUpRows_","setRollUp","ROLL_UP_3_ROWS_","ROLL_UP_4_ROWS_","CARRIAGE_RETURN_","shiftRowsUp_","BACKSPACE_","row_","ERASE_DISPLAYED_MEMORY_","ERASE_NON_DISPLAYED_MEMORY_","RESUME_DIRECT_CAPTIONING_","isSpecialCharacter","column_","isExtCharacter","isMidRowCode","addFormatting","isOffsetControlCode","isPAC","formatting_","indentations","isColorPAC","isNormalChar","logWarning","topRow_","BASE_","EXT_","CONTROL_","OFFSET_","newBaseRow","popOn","baseRow","rollUp","paintOn","captionStream","CaptionStream","streamTypes","H264_STREAM_TYPE","ADTS_STREAM_TYPE","METADATA_STREAM_TYPE","Stream$6","MAX_TS","RO_THRESH","TYPE_SHARED","handleRollover$1","TimestampRolloverStream$1","lastDTS","referenceDTS","type_","MetadataStream","timestampRolloverStream","TimestampRolloverStream","handleRollover","typedArrayIndexOf$1","typedArray","fromIndex","currentIndex","typedArrayIndexOf","textEncodingDescriptionByte","Iso88591","Utf16","Utf16be","Utf8","percentEncode$1","parseUtf8","parseIso88591$1","parseSyncSafeInteger$1","frameParsers","mimeTypeEndIndex","descriptionEndIndex","LINK_MIME_TYPE","pictureType","pictureData","owner","privateData","parseId3Frames$1","frameSize","frameHeader","frameStart","tagSize","hasExtendedHeader","parseId3","parseId3Frames","parseSyncSafeInteger","Stream$5","StreamTypes$3","id3","bufferSize","dispatchType","dataAlignmentIndicator","timeStamp","TransportPacketStream","TransportParseStream","ElementaryStream","metadataStream","Stream$4","CaptionStream$1","StreamTypes$2","MP2T_PACKET_LENGTH$1","SYNC_BYTE$1","bytesInBuffer","everything","parsePsi","parsePat","parsePmt","packetsWaitingForPmt","programMapTable","payloadUnitStartIndicator","pat","section_number","last_section_number","pmtPid","pmt","sectionLength","tableEnd","programInfoLength","streamType","pid","processPes_","STREAM_TYPES","h264","adts","segmentHadPmt","timedMetadata","parsePes","pes","ptsDtsFlags","startPrefix","packetLength","forceFlush","packetFlushable","trackId","flushStreams_","m2ts$1","PAT_PID","MP2T_PACKET_LENGTH","AdtsStream$1","m2ts_1","Stream$3","ONE_SECOND_IN_TS$2","ADTS_SAMPLING_FREQUENCIES$1","handlePartialSegments","frameNum","skipWarn_","frameLength","protectionSkipBytes","oldBuffer","sampleCount","adtsFrameDuration","ExpGolomb$1","workingData","workingBytesAvailable","workingWord","workingBitsAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","skipBits","skipBytes","readBits","bits","valu","skipLeadingZeros","leadingZeroCount","skipUnsignedExpGolomb","skipExpGolomb","readUnsignedExpGolomb","clz","readExpGolomb","readBoolean","readUnsignedByte","H264Stream$1","NalByteStream","PROFILES_WITH_OPTIONAL_SPS_DATA","expGolomb","Stream$2","ExpGolomb","syncPoint","swapBuffer","100","110","122","244","44","83","86","118","128","138","139","134","currentPts","currentDts","readSequenceParameterSet","skipScalingList","nalByteStream","nalUnitTypeCode","expGolombDecoder","deltaScale","lastScale","nextScale","chromaFormatIdc","picOrderCntType","numRefFramesInPicOrderCntCycle","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","scalingListCount","aspectRatioIdc","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","AacStream$1","H264Stream","ADTS_SAMPLING_FREQUENCIES","parseId3TagSize","isLikelyAacData$1","percentEncode","parseIso88591","parseAdtsSize","lowThree","highTwo","parseType$4","parseSampleRate","parseAacTimestamp","isLikelyAacData","parseType","Stream$1","aacUtils","setTimestamp","bytesLeft","tempLength","VideoSegmentStream","AudioSegmentStream","Transmuxer","CoalesceStream","AUDIO_PROPERTIES$1","audioProperties","VIDEO_PROPERTIES$1","videoProperties","frameUtils","audioFrameUtils","trackDecodeInfo","m2ts","clock","AdtsStream","AacStream","ONE_SECOND_IN_TS$1","AUDIO_PROPERTIES","VIDEO_PROPERTIES","retriggerForStream","addPipelineLogRetriggers","transmuxer","pipeline","arrayEquals","generateSegmentTimingInfo","startDts","endDts","prependedContentDuration","ptsOffsetFromDts","decodeDuration","presentationDuration","firstSequenceNumber","setEarliestDts","earliestDts","setVideoBaseMediaDecodeTime","setAudioAppendStart","videoClockCyclesOfSilencePrefixed","gopsToAlignWith","minPTS","gopCache_","nalUnit","gopForFusion","firstGop","lastGop","resetStream_","getGopForFusion_","alignedGops","alignGopsAtEnd","alignGopsAtEnd_","alignGopsAtStart_","gop","dtsDistance","nearestGopObj","currentGopObj","halfSecond","allowableOverlap","nearestDistance","alignIndex","gopIndex","alignEndIndex","matchFound","trimIndex","alignGopsWith","newGopsToAlignWith","numberOfTracks","remux","remuxTracks","pendingTracks","videoTrack","pendingBoxes","pendingCaptions","pendingMetadata","pendingBytes","emittedTracks","audioTrack","caption","captionStreams","setRemux","hasFlushed","transmuxPipeline_","setupAacPipeline","aacStream","audioTimestampRolloverStream","timedMetadataTimestampRolloverStream","adtsStream","coalesceStream","headOfPipeline","audioSegmentStream","getLogTrigger_","hasAudio","hasVideo","setupTsPipeline","packetStream","elementaryStream","h264Stream","videoSegmentStream","id3Frame","setBaseMediaDecodeTime","isAac","resetCaptions","toUnsigned$3","toHexString$1","bin","toUnsigned","parseType$3","parseType_1","toUnsigned$2","parseType$2","findBox$2","subresults","findBox_1","toUnsigned$1","getUint64$2","parseTfdt$2","parseSampleFlags$1","parseSampleFlags_1","parseSampleFlags","dataOffsetPresent","firstSampleFlagsPresent","sampleDurationPresent","sampleSizePresent","sampleFlagsPresent","sampleCompositionTimeOffsetPresent","getInt32","parseTrun$2","baseDataOffsetPresent","sampleDescriptionIndexPresent","defaultSampleDurationPresent","defaultSampleSizePresent","defaultSampleFlagsPresent","durationIsEmpty","defaultBaseIsMoof","sampleDescriptionIndex","defaultSampleDuration","defaultSampleSize","defaultSampleFlags","baseDataOffsetIsMoof","parseTfhd$2","compositionStartTime","getVideoTrackIds","getTracks","getTimescaleFromMediaHeader","getEmsgID3","window_1","findBox$1","parseTfdt$1","parseTrun$1","parseTfhd$1","window$2","mapToSample","approximateOffset","findSeiNals","avcStream","seiNal","lastMatchedSample","avcView","logs","seiNals","matchingSample","parseSamples","truns","allSamples","trackRun","parseCaptionNals","videoTrackId","trafs","mdats","captionNals","mdatTrafPairs","matchingTraf","pair","headerInfo","parseEmbeddedCaptions","trackNals","CaptionParser","segmentCache","parsedCaptions","parsingPartial","isInitialized","isPartial","isNewInit","videoTrackIds","timescales","parsedData","cachedSegment","pushNals","nals","nal","clearParsedCaptions","resetCaptionStream","clearAllCaptions","captionParser","uint8ToCString$1","curChar","retString","uint8ToCString","getUint64$1","parseEmsgBox","boxData","scheme_id_uri","presentation_time","presentation_time_delta","event_duration","message_data","emsgBox","isValidEmsgBox","scaleTime","timeDelta","emsg","hasScheme","isValidV0Box","isDefined","isValidV1Box","emsg$1","findBox","parseType$1","parseTfhd","parseTrun","parseTfdt","window$1","traks","lowestTime","baseTime","trafBoxes","parsedTfhd","parsedTfdt","parsedTrun","hdlrs","tkhds","handlerType","getUint8","tkhdVersion","sampleDescriptions","codecConfig","codecConfigType","codecBox","segmentData","emsgBoxes","parsedBox","parsedId3Frames","probe$2","StreamTypes$1","parsePid","parsePayloadUnitStartIndicator","parseAdaptionField","pusi","payloadOffset","parsePesType","parsePesTime","parseNalUnitType","videoPacketContainsKeyFrame","nalType","frameBuffer","frameI","frameSyncPoint","foundKeyFrame","probe$1","StreamTypes","probe","SYNC_BYTE","parsePsi_","table","parseAudioPes_","pesType","endLoop","parseVideoPes_","firstKeyFrame","adjustTimestamp_","baseTimestamp","audioBaseTimestamp","dtsTime","ptsTime","videoBaseTimestamp","inspectAac_","audioCount","audioTimescale","inspectTs_","isAacData","tsInspector","wireTransmuxerEvents","initArray","postMessage","gopInfo","timingInfo","videoSegmentTimingInfo","presentation","audioSegmentTimingInfo","trackInfo","audioTimingInfo","MessageHandlers","trackIds","id3Frames","emsgData","baseStartTime","tsStartTime","timeInfo","videoStart","audioStart","timestampOffset","appendStart","onmessage","messageHandlers","TransmuxWorker","handleData_","transmuxedData","videoFrameDtsTime","videoFramePtsTime","handleDone_","handleGopInfo_","processTransmux","audioAppendStart","onData","onTrackInfo","onAudioTimingInfo","onVideoTimingInfo","onVideoSegmentTimingInfo","onAudioSegmentTimingInfo","onId3","onCaptions","onDone","onEndedTimeline","onTransmuxerLog","isEndOfTimeline","triggerSegmentEventFn","waitForEndedTimelineEvent","handleMessage","currentTransmux","dequeue","handleError","segmentInfoPayload","transmuxQueue","processAction","enqueueAction","transmux","createTransmuxer","term","segmentTransmuxer","workerCallback","endAction","listenForEndEvent","isArrayBuffer","transfers","REQUEST_ERRORS","FAILURE","TIMEOUT","ABORTED","abortAll","activeXhrs","getRequestStats","getProgressStats","progressEvent","stats","handleErrors","handleKeyResponse","finishProcessingFn","errorObj","keyInfo","parseInitSegment","handleInitSegmentResponse","encryptedBytes","parseError","handleSegmentResponse","newBytes","lastReachedChar","transmuxAndNotify","trackInfoFn","timingInfoFn","videoSegmentTimingInfoFn","audioSegmentTimingInfoFn","id3Fn","captionsFn","endedTimelineFn","dataFn","doneFn","fmp4Tracks","isMuxed","audioStartFn","audioEndFn","videoStartFn","videoEndFn","finish","probeResult","handleSegmentBytes","bytesAsUint8Array","isFmp4","audioCodec","videoCodec","finishLoading","decrypt","decryptionWorker","decryptionHandler","decrypted","keyBytes","decryptError","encrypted","decryptSegment","requestId","decryptedBytes","waitForCompletion","didError","segmentFinish","endOfAllRequests","handleLoadEnd","loadendState","abortFn","calledAbortFn","handleProgress","progressFn","firstBytesReceivedAt","mediaSegmentRequest","xhrOptions","keyRequestOptions","keyRequestCallback","keyXhr","differentMapKey","mapKeyRequestOptions","mapKeyRequestCallback","mapKeyXhr","initSegmentOptions","initSegmentRequestCallback","initSegmentXhr","segmentRequestOptions","segmentRequestCallback","segmentXhr","activeXhr","logFn$1","getCodecs","mediaAttributes","isMaat","unwrapCodecList","codecList","codecCount","codecObj","codecsForPlaylist","codecInfo","defaultCodecs","logFn","representationToString","safeGetComputedStyle","property","stableSort","sortFn","newArray","cmp","comparePlaylistBandwidth","leftBandwidth","rightBandwidth","comparePlaylistResolution","leftWidth","rightWidth","simpleSelector","playerBandwidth","limitRenditionByPlayerDimensions","playlistController","getAudioTrackPlaylists_","sortedPlaylistReps","rep","enabledPlaylistReps","bandwidthPlaylistReps","highestRemainingBandwidthRep","bandwidthBestRep","chosenRep","haveResolution","resolutionBestRepList","resolutionBestRep","resolutionPlusOneList","resolutionPlusOneSmallest","resolutionPlusOneRep","leastPixelDiffRep","leastPixelDiffSelector","leastPixelDiffList","pixelDiff","lastBandwidthSelector","pixelRatio","useDevicePixelRatio","devicePixelRatio","customPixelRatio","systemBandwidth","playlistController_","movingAverageBandwidthSelector","decay","average","lastSystemBandwidth","minRebufferMaxBandwidthSelector","syncController","compatiblePlaylists","enabledPlaylists","bandwidthPlaylists","rebufferingEstimates","getSyncPoint","numRequests","requestTimeEstimate","rebufferingImpact","noRebufferingPlaylists","estimate","lowestBitrateCompatibleVariantSelector","playlistsWithVideo","concatSegments","segmentObj","compactSegmentUrlDescription","pathname","createCaptionsTrackIfNotExists","inbandTextTracks","getTrackById","captionService","addCaptionData","captionArray","Cue","WebKitDataCue","deprecateOldCue","addMetadata","videoDuration","metadataTrack","metadataTrack_","cuesArray","cuesGroupedByStartTime","timeSlot","sortedStartTimes","cueGroup","finiteDuration","nextTime","dateRangeAttr","scte35Out","scte35In","dateRangeKeysToOmit","addDateRangeMetadata","createMetadataTrackIfNotExists","inBandMetadataTrackDispatchType","removeCuesFromTrack","removeDuplicateCuesFromTrack","uniqueCues","cueKey","gopsSafeToAlignWith","mapping","currentTimePts","updateGopBuffer","removeGopBuffer","updatedBuffer","shallowEqual","akeys","bkeys","getSyncSegmentCandidate","targetTime","timelineSegments","MIN_BACK_BUFFER","CHECK_BUFFER_DELAY","finite","MIN_SEGMENT_DURATION_TO_SAVE_STATS","illegalMediaSwitch","loaderType","startingMedia","safeBackBufferTrimTime","trimTime","maxTrimTime","segmentInfoString","mediaIndex","segmentLen","selection","isSyncRequest","independent","hasPartIndex","zeroBasedPartCount","timingInfoPropertyForMedia","timestampOffsetForSegment","overrideCheck","shouldWaitForTimelineChange","timelineChangeController","audioDisabled","lastMainTimelineChange","lastTimelineChange","pendingAudioTimelineChange","pendingTimelineChange","shouldFixBadTimelineChanges","pendingMainTimelineChange","hasPendingTimelineChanges","differentPendingChanges","isNotInitialPendingTimelineChange","fixBadTimelineChange","segmentLoader","resetEverything","isAudioTimelineBehind","timelineChangeController_","checkAndFixTimelines","pendingSegment_","waitingForTimelineChange","currentTimeline_","loaderType_","audioDisabled_","sourceType_","mediaDuration","timingInfos","maxDuration","typeTimingInfo","segmentTooLong","getTroublesomeSegmentDurationMessage","sourceType","isSegmentWayTooLong","isSegmentSlightlyTooLong","segmentTooLongMessage","severity","isEncrypted","ke","isMediaInitialization","SegmentLoader","mediaSource","throughput","roundTrip","resetStats_","hasPlayed_","hasPlayed","seekable_","seeking_","mediaSource_","currentMediaInfo_","startingMediaInfo_","segmentMetadataTrack_","segmentMetadataTrack","goalBufferLength_","goalBufferLength","sourceUpdater_","sourceUpdater","inbandTextTracks_","state_","shouldSaveSegmentTimingInfo_","useDtsForTimestampOffset_","useDtsForTimestampOffset","captionServices_","checkBufferTimeout_","shouldForceTimestampOffsetAfterResync_","xhrOptions_","pendingSegments_","isPendingTimestampOffset_","gopBuffer_","timeMapping_","safeAppend_","appendInitSegment_","playlistOfLastInitSegment_","callQueue_","loadQueue_","metadataQueue_","waitingOnRemove_","quotaExceededErrorRetryTimeout_","activeInitSegmentId_","initSegments_","cacheEncryptionKeys_","cacheEncryptionKeys","keyCache_","decrypter_","decrypter","syncController_","syncPoint_","transmuxer_","createTransmuxer_","triggerSyncInfoUpdate_","isEndOfStream_","ended_","fetchAtBuffer_","newState","hasEnoughInfoToAppend_","processCallQueue_","hasEnoughInfoToLoad_","processLoadQueue_","getMediaSequenceSync","mediaBytesTransferred","mediaRequests","mediaRequestsAborted","mediaRequestsTimedout","mediaRequestsErrored","mediaTransferDuration","mediaSecondsLoaded","mediaAppends","abort_","removeAudio","monitorBuffer_","abortRequests","clearPendingTimelineChange","getMediaInfo_","videoBuffered","audioBuffered","storedMap","storedKey","playlist_","couldBeginLoading_","init_","newPlaylist","syncInfo","setDateTimeMappingForStart","oldId","mediaSequenceSync_","buffered_","diagnostics","isLLHLS","resetLoader","resyncLoader","mediaSequenceDiff","saveExpiredSegmentInfo","resetAppendedStatus","isHlsTs","force","removesRemaining","removeFinished","removeVideo","monitorBufferTick_","fillBuffer_","updating","chooseNextRequest_","loadSegment_","appendedLastSegment","appendedLastPart","bufferedTime","preloaded","haveEnoughBuffer","isReliable","getSyncInfoFromMediaSequenceSync_","mediaInfoForTime","nextSegment","hasIndependentSegments","lastSegmentLastPart","forceTimestampOffset","generateSegmentInfo_","finalTargetTime","mediaSequenceSyncInfo","getSyncInfoForTime","isAppended","nextMediaSequenceSyncInfo","timestampOffsetForSegment_","audioBufferedEnd","audioTimestampOffset","videoTimestampOffset","measuredBandwidth","requestTimeRemaining","timeUntilRebuffer$1","switchCandidate","timeSavedBySwitching","minimumTimeSaving","simpleSegment","earlyAbortWhenNeeded_","checkForAbort_","checkForIllegalMediaSwitch","timeType","timingInfoProperty","captionData","hasAppendedData_","handleCaptions_","captionTracks","captionTrack","trackName","handleId3_","callQueue","fun","loadQueue","getCurrentMediaInfo_","setTimeMapping_","updateMediaSecondsLoaded_","initSegmentForMap","segmentKey","useVideoTimingInfo","firstVideoFrameTimeForData","trueSegmentStart_","currentStart","currentVideoTimestampOffset","updateAppendInitSegmentStatus","updateSourceBufferTimestampOffset_","updateTimingInfoEnd_","saveSegmentTimingInfo","shouldSaveTimelineMapping","processMetadataQueue_","appendData_","changedTimestampOffset","audioBufferStart","audioBufferEnd","videoBufferStart","videoBufferEnd","appendToSourceBuffer_","timeToRemoveUntil","handleQuotaExceededError_","appendBuffer","handleAppendError_","segmentTimingInfo","transmuxedDecodeStart","transmuxedDecodeEnd","getInitSegmentAndUpdateState_","trimBackBuffer_","updateTransmuxerAndRequestSegment_","shouldUpdateTransmuxerTimestampOffset_","createSimplifiedSegmentObj_","isEndOfStream","isWalkingForward","isDiscontinuity","handleAbort_","handleProgress_","handleTrackInfo_","handleTimingInfo_","handleSegmentTimingInfo_","segmentRequestFinished_","segInfo","removeToTime","previousSegment","bandwidthInfo","saveTransferStats_","handleTimeout_","saveBandwidthRelatedStats_","waitForAppendsToComplete_","timelineMapping","mappingForTimeline","waitForVideo","waitForAudio","waitingOnAppends","checkAppendsDone_","videoQueueCallback","audioQueueCallback","handleAppendsDone_","illegalMediaSwitchError","didChange","getSegmentStartTimeForTimestampOffsetCalculation_","prioritizedTimingInfo","markAppended","segmentDurationMessage","recordThroughput_","addSegmentMetadataCue_","badSegmentGuess","badPartGuess","endOfStream","segmentProcessingTime","segmentProcessingThroughput","bufferTypes","sourceBuffer","queuePending","nextQueueIndexOfType","queueEntry","shiftQueue","queueIndex","cleanupBuffer","titleType","inSourceBuffers","sourceBuffers","actions","onError","addSourceBuffer","mime","removeSourceBuffer","changeType","newCodecBase","oldCodec","oldCodecBase","codecsChangeInfo","pushQueue","onUpdateend","bufferedRangesForType","descriptiveString","SourceUpdater","sourceopenListener_","audioTimestampOffset_","videoTimestampOffset_","delayedAudioAppendQueue_","videoAppendQueued_","onVideoUpdateEnd_","onAudioUpdateEnd_","onVideoError_","videoError_","onAudioError_","audioError_","createdSourceBuffers_","initializedEme_","triggeredReady_","hasCreatedSourceBuffers","hasInitializedAnyEme","addOrChangeSourceBuffers","canRemoveSourceBuffer","SourceBuffer","canChangeType","processedAppend_","videoBuffer","que","audioBuffer","uint8ToUtf8","uintArray","bufferToHexString","uInt8Buffer","VTT_LINE_TERMINATORS","NoVttJsError","VTTSegmentLoader","subtitlesTrack_","featuresNativeTextTracks_","loadVttJs","combinedByteLength","combinedSegment","timestampOffsetForTimeline","checkTimestampOffset","skipEmptySegments_","stopForError","requested","parseVTTCues_","updateTimeMapping_","timelines","decodeBytesToString","timestampmap","MPEGTS","LOCAL","mapData","mappingObj","mpegTsInSeconds","diff","handleRollover_","firstStart","lastStart","valueIn90khz","referenceIn90khz","findAdCue","mediaTime","adStartTime","adEndTime","updateAdCues","adOffset","adTotal","SyncInfo","appended","start_","end_","segmentIndex_","partIndex_","appended_","SyncInfoData","segmentSyncInfo","partsSyncInfo","segmentSyncInfo_","partsSyncInfo_","partSyncInfo","MediaSequenceSync","storage_","diagnostics_","isReliable_","syncInfoData","resetAppendStatus","isReliablePlaylist_","updateStorage_","calculateBaseTime_","isInRange","startingMediaSequence","startingTime","newStorage","newDiagnostics","currentMediaSequence","prevSyncInfoData","segmentStart","segmentIsAppended","currentPartStart","partStart","partEnd","partIsAppended","fallback","DependantMediaSequenceSync","parent_","getSyncInfoForMediaSequence","MAX_MEDIA_SEQUENCE_DIFF_FOR_SYNC","syncPointStrategies","run","mediaSequenceSync","timelineToDatetimeMappings","lastDistance","datetimeMapping","z","discontinuitySync","discontinuities","SyncController","vtt","mediaSequenceStorage_","vodSyncPointStrategy","syncPoints","runStrategies_","syncPointInfo","strategy","selectedSegment","selectSyncPoint_","bestSyncPoint","bestDistance","bestStrategy","newDistance","lastRemovedSegment","playlistTimestamp","didCalculateSegmentTimeMapping","calculateSegmentTimeMapping_","saveDiscontinuitySyncInfo_","dateTime","accuracy","mediaIndexDiff","TimelineChangeController","pendingTimelineChanges_","lastTimelineChanges_","timelineChangeInfo","workerCode","unpad","padded","precompute","tables","encTable","decTable","sbox","sboxInv","xInv","th","x2","x4","x8","tEnc","tDec","aesTables","AES","_tables","keyLen","rcon","encKey","decKey","encrypted0","encrypted1","encrypted2","encrypted3","a2","c2","nInnerRounds","kIndex","table0","table1","table2","table3","AsyncStream","jobs","timeout_","processJob_","job","ntoh","word","initVector","encrypted32","Int32Array","decipher","decrypted32","init0","init1","init2","init3","wordIx","Decrypter","STEP","asyncStream_","decryptChunk_","audioTrackKind_","stopLoaders","activePlaylistLoader","startLoaders","playlistLoader","onGroupChanged","segmentLoaders","mainSegmentLoader","activeTrack","activeGroup","getActiveGroup","previousActiveLoader","lastGroup","lastGroup_","lastTrack_","isMainPlaylist","onGroupChanging","onTrackChanged","lastTrack","pc","selectPlaylist","fastQualityChange_","setAudio","excludePlaylist","defaultTrack","setupListeners","requestOptions","initialize","variantLabel","useForcedSubtitles","groupMatch","variants","groupKeys","groupPropertyList","activeTrack_","setupMediaGroups","audioSegmentLoader","activeAudioGroup","onAudioTrackChanged","createMediaTypes","SteeringManifest","priority_","pathwayClones_","version_","ttl_","reloadUri_","ContentSteeringController","currentPathway","defaultPathway","availablePathways_","steeringManifest","proxyServerUrl_","manifestType_","ttlTimeout_","request_","currentPathwayClones","nextPathwayClones","excludedSteeringManifestURLs","xhr_","getBandwidth_","steeringTag","serverUri","steeringUri","startsWith","decodeDataUriManifest_","reloadUri","pathwayId","defaultServiceLocation","proxyServerURL","getRequestURI","errorInfo","retrySeconds","startTTLTimeout_","steeringManifestJson","assignSteeringProperties_","parsedMetadata","contentSteeringManifest","steeringUrl","steeringUrlObject","proxyServerUrlObject","encodeURI","setSteeringParams_","dataUri","urlObject","getPathway","networkThroughput","pathwayKey","throughputKey","steeringJson","ttl","TTL","pathwayClones","chooseNextPathway","pathwaysByPriority","nextPathway","proxyURI","setProxyServerUrl_","steeringURI","ttlMS","requestSteeringManifest","clearTTLTimeout_","newTag","ABORT_EARLY_EXCLUSION_SECONDS","Vhs$1","loaderStats","sumLoaderStat","stat","audioSegmentLoader_","mainSegmentLoader_","shouldSwitchToMedia","currentPlaylist","nextPlaylist","bufferLowWaterLine","bufferHighWaterLine","bufferBasedABR","sharedLogLine","isBuffered","forwardBuffer","maxBufferLowWaterLine","nextBandwidth","currBandwidth","logLine","PlaylistController","externVhs","useCueTags","enableLowInitialPlaylist","maxPlaylistRetries","useCueTags_","cueTagsTrack_","requestOptions_","pauseLoading","mediaTypes_","handleDurationChange_","handleSourceOpen_","handleSourceEnded_","keyStatusMap_","segmentLoaderSettings","setupMainPlaylistLoaderListeners_","subtitleSegmentLoader_","onLoad","getBandwidth","contentSteeringController_","setupSegmentLoaderListeners_","startABRTimer_","stopABRTimer_","triggeredFmp4Usage","loadOnPlay_","timeToLoadedData__","mainAppendsToLoadedData__","audioAppendsToLoadedData__","timeToLoadedDataStart","mainAppendsToLoadedData_","audioAppendsToLoadedData_","shouldSwitchToMedia_","switchMedia_","newId","renditionInfo","mediaPlaylists","dashMediaPlaylists","abrTimer_","checkABR_","defaultPlaylists","defaultGroup","requestTimeout","triggerPresenceUsage_","setupFirstPlay","selectedMedia","attachContentSteeringListeners_","initContentSteeringController_","excludeUnsupportedVariants_","selectInitialPlaylist","initialMedia_","haveJsonSource","handleUpdatedMediaPlaylist","playlistToExclude","waitingForFastQualityPlaylistReceived_","runFastQualitySwitch_","lastExcludeReason_","playlistOutdated","stuckAtPlaylistEnd_","playlistLoaderEvents","updateAdCues_","updateDuration","defaultDemuxed","audioGroupKeys","onSyncInfoUpdate_","onEndOfStream","delegateLoaders_","updateCodecs","tryToCreateSourceBuffers_","getCodecsOrExclude_","segmentLoaderEvents","startPoint","mainMediaInfo","getExpiredTime","absolutePlaylistEnd","pathwayAttribute_","reIncludeDelay","excludePathway","excludeThenChangePathway_","addAvailablePathway","reincluded","errorMessage","delayDuration","fnNames","loaders","dontFilterPlaylist","loader","audioSeekable","mainSeekable","oldEnd","oldStart","seekableRanges","updateDuration_","setDuration","usingAudioLoader","hasMainMediaInfo","hasAudioMediaInfo","getPendingSegmentPlaylist","playlistCodecs","supportFunction","unsupportedCodecs","unsupportedAudio","supporter","variantAudioGroup","switchMessages","newCodec","areMediaTypesKnown_","createSourceBuffers","excludeIncompatibleVariants_","ids","unsupported","codecCount_","videoDetails","audioDetails","exclusionReasons","variantCodecs","variantCodecCount","variantVideoDetails","variantAudioDetails","newMax","assignTagProperties","clearAvailablePathways","contentSteeringEvents","didDashTagChange","didDASHTagChange","didPathwaysChange","availablePathways","getAvailablePathways","newPathways","resetContentSteeringController_","handlePathwayClones_","didEnablePlaylists","differentPathwayId","steeringExclusion","noExcludeUntil","shouldExclude","changeSegmentPathway_","hasClones","entries","newClone","updateOrDeleteClone","oldClone","equalPathwayClones_","playlistsToClone","addClonePathway","aParams","bParams","switchMediaForDASHContentSteering_","nonUsableKeyStatusCount","NON_USABLE","keyIdSet","getKeyIdSet","USABLE","hasUsableKeyStatus","nonUsableExclusion","isNonHD","excludedForNonUsableKey","isString","keyIdHexString","formattedKeyIdString","addKeyStatus_","excludeNonUsableThenChangePlaylist_","excludeNonUsablePlaylistsByKeyId_","enableFunction","playlistID","changePlaylistFn","incompatible","currentlyEnabled","Representation","vhsHandler","qualityChangeFunction","renditionSelectionMixin","timerCancelEvents","PlaybackWatcher","allowSeeksWithinUnsafeLiveWindow","liveRangeSafeTimeDelta","playedRanges_","consecutiveUpdates","lastRecordedTime","checkCurrentTimeTimeout_","playHandler","monitorCurrentTime_","canPlayHandler","waitingHandler","techWaiting_","cancelTimerHandler","resetTimeUpdate_","loaderTypes","loaderChecks","resetSegmentDownloads_","updateend","checkSegmentDownloads_","setSeekingHandlers","seekingAppendCheck_","fixesBadSeeks_","clearSeekingAppendCheck_","watchForBadSeeking_","checkCurrentTime_","isBufferedDifferent","bufferedRanges","waiting_","playedRanges","isAfterSeekableRange","afterSeekableWindow_","beforeSeekableWindow_","minAppendedDuration","bufferedToCheck","timeAhead","nextRange","livePoint","videoUnderflow","videoUnderflow_","skipTheGap_","allowedEnd","lastVideoRange","videoRange","audioRange","gapFromVideoUnderflow_","scheduledCurrentTime","gapInfo","gaps","defaultOptions","errorInterval","IWillNotUseThisInPlugins","initPlugin","lastCalled","localOptions","loadedMetadataHandler","getSource","cleanupEvents","reinitPlugin","reloadSourceOnError","version$4","version$3","version$2","version$1","STANDARD_PLAYLIST_SELECTOR","INITIAL_PLAYLIST_SELECTOR","LOCAL_STORAGE_KEY","handleVhsMediaChange","handleVhsLoadedMetadata","addQualityLevel","emeKeySystems","keySystemOptions","audioPlaylist","videoContentType","audioContentType","keySystemContentTypes","getAllPsshKeySystemsOptions","keySystems","keySystemsArr","keySystemsOptions","keySystemsObj","waitForKeySessionCreation","sourceKeySystems","audioMedia","mainPlaylists","eme","initializeMediaKeys","keySystemsOptionsArr","initializationFinishedPromises","keySessionCreatedPromises","setupEmeOptions","sourceOptions","getVhsLocalStorage","storedObject","updateVhsLocalStorage","objectToStore","expandDataUri","addOnRequestHook","addOnResponseHook","removeOnRequestHook","removeOnResponseHook","supportsNativeHls","canPlay","canItPlay","supportsNativeDash","supportsTypeNatively","onRequest","onResponse","offRequest","offResponse","Component","VhsHandler","initialBandwidth","_player","source_","ignoreNextSeekingEvent_","setOptions_","overrideNative","overrideNativeAudioTracks","overrideNativeVideoTracks","featuresNativeVideoTracks","useBandwidthFromLocalStorage","useNetworkInformationApi","playbackWatcherOptions","playbackWatcher_","attachStreamingEventListeners_","defaultSelector","playerBandwidthEst","networkInformation","connection","mozConnection","webkitConnection","tenMbpsAsBitsPerSecond","networkInfoBandwidthEstBitsPerSec","downlink","invBandwidth","invThroughput","systemBitrate","mediaRequests_","mediaRequestsAborted_","mediaRequestsTimedout_","mediaRequestsErrored_","mediaTransferDuration_","mediaBytesTransferred_","mediaSecondsLoaded_","mediaAppends_","mainAppendsToLoadedData","audioAppendsToLoadedData","appendsToLoadedData","appendsToLoadedData_","timeToLoadedData","timeToLoadedData_","currentTech","playerDimensions","currentDimensions","setupEme_","setupQualityLevels_","mediaSourceUrl_","audioPlaylistLoader","initializedEme","createKeySessions_","didSetupEmeOptions","updatePlaylistByKeyStatus","handleWaitingForKey_","qualityLevels_","playlistControllerEvents","playbackWatcher","VhsSourceHandler","setupXhrHooks_","simpleType","getOverrideNative","canUseMsePlayback","defaultOverrideNative","supportsNativeMediaSources","DESCRIPTORS","normalizePaths","paths","headerSize","_DESCRIPTORS$z","dependsOnEsId","ocrEsId","descriptors","oti","maxBitrate","avgBitrate","complete","EBML_TAGS","EBML","DocType","Segment","SegmentInfo","Tracks","TrackNumber","DefaultDuration","TrackEntry","TrackType","FlagDefault","CodecID","CodecPrivate","Cluster","Timestamp","TimestampScale","BlockGroup","BlockDuration","Block","SimpleBlock","LENGTH_TABLE","getLength","removeLength","valueBytes","getInfinityDataSize","innerid","dataHeader","findEbml","dataStart","dataEnd","totalLength","NAL_TYPE_ONE","NAL_TYPE_TWO","EMULATION_PREVENTION","positions","dataType","nalLimit","nalStart","nalsFound","nalOffset","findH264Nal","findH265Nal","CONSTANTS","_isLikely","docType","matroska","fmp4","ac3","avi","riff","isLikelyTypes","isLikelyFn","isLikely","scrollSetting","findScrollSetting","isValidPercentValue","_width","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll"],"mappings":"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","file":"js/chunk-267e2ddb.e6a4dff9.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DestinationVideo.vue?vue&type=style&index=0&id=3a3838c1&prod&scoped=true&lang=less\"","import window from 'global/window';\nvar regexs = {\n // to determine mime types\n mp4: /^(av0?1|avc0?[1234]|vp0?9|flac|opus|mp3|mp4a|mp4v|stpp.ttml.im1t)/,\n webm: /^(vp0?[89]|av0?1|opus|vorbis)/,\n ogg: /^(vp0?[89]|theora|flac|opus|vorbis)/,\n // to determine if a codec is audio or video\n video: /^(av0?1|avc0?[1234]|vp0?[89]|hvc1|hev1|theora|mp4v)/,\n audio: /^(mp4a|flac|vorbis|opus|ac-[34]|ec-3|alac|mp3|speex|aac)/,\n text: /^(stpp.ttml.im1t)/,\n // mux.js support regex\n muxerVideo: /^(avc0?1)/,\n muxerAudio: /^(mp4a)/,\n // match nothing as muxer does not support text right now.\n // there cannot never be a character before the start of a string\n // so this matches nothing.\n muxerText: /a^/\n};\nvar mediaTypes = ['video', 'audio', 'text'];\nvar upperMediaTypes = ['Video', 'Audio', 'Text'];\n/**\n * Replace the old apple-style `avc1.
.
` codec string with the standard\n * `avc1.`\n *\n * @param {string} codec\n * Codec string to translate\n * @return {string}\n * The translated codec string\n */\n\nexport var translateLegacyCodec = function translateLegacyCodec(codec) {\n if (!codec) {\n return codec;\n }\n\n return codec.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (orig, profile, avcLevel) {\n var profileHex = ('00' + Number(profile).toString(16)).slice(-2);\n var avcLevelHex = ('00' + Number(avcLevel).toString(16)).slice(-2);\n return 'avc1.' + profileHex + '00' + avcLevelHex;\n });\n};\n/**\n * Replace the old apple-style `avc1.
.
` codec strings with the standard\n * `avc1.`\n *\n * @param {string[]} codecs\n * An array of codec strings to translate\n * @return {string[]}\n * The translated array of codec strings\n */\n\nexport var translateLegacyCodecs = function translateLegacyCodecs(codecs) {\n return codecs.map(translateLegacyCodec);\n};\n/**\n * Replace codecs in the codec string with the old apple-style `avc1.
.
` to the\n * standard `avc1.`.\n *\n * @param {string} codecString\n * The codec string\n * @return {string}\n * The codec string with old apple-style codecs replaced\n *\n * @private\n */\n\nexport var mapLegacyAvcCodecs = function mapLegacyAvcCodecs(codecString) {\n return codecString.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (match) {\n return translateLegacyCodecs([match])[0];\n });\n};\n/**\n * @typedef {Object} ParsedCodecInfo\n * @property {number} codecCount\n * Number of codecs parsed\n * @property {string} [videoCodec]\n * Parsed video codec (if found)\n * @property {string} [videoObjectTypeIndicator]\n * Video object type indicator (if found)\n * @property {string|null} audioProfile\n * Audio profile\n */\n\n/**\n * Parses a codec string to retrieve the number of codecs specified, the video codec and\n * object type indicator, and the audio profile.\n *\n * @param {string} [codecString]\n * The codec string to parse\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var parseCodecs = function parseCodecs(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n var codecs = codecString.split(',');\n var result = [];\n codecs.forEach(function (codec) {\n codec = codec.trim();\n var codecType;\n mediaTypes.forEach(function (name) {\n var match = regexs[name].exec(codec.toLowerCase());\n\n if (!match || match.length <= 1) {\n return;\n }\n\n codecType = name; // maintain codec case\n\n var type = codec.substring(0, match[1].length);\n var details = codec.replace(type, '');\n result.push({\n type: type,\n details: details,\n mediaType: name\n });\n });\n\n if (!codecType) {\n result.push({\n type: codec,\n details: '',\n mediaType: 'unknown'\n });\n }\n });\n return result;\n};\n/**\n * Returns a ParsedCodecInfo object for the default alternate audio playlist if there is\n * a default alternate audio playlist for the provided audio group.\n *\n * @param {Object} master\n * The master playlist\n * @param {string} audioGroupId\n * ID of the audio group for which to find the default codec info\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var codecsFromDefault = function codecsFromDefault(master, audioGroupId) {\n if (!master.mediaGroups.AUDIO || !audioGroupId) {\n return null;\n }\n\n var audioGroup = master.mediaGroups.AUDIO[audioGroupId];\n\n if (!audioGroup) {\n return null;\n }\n\n for (var name in audioGroup) {\n var audioType = audioGroup[name];\n\n if (audioType.default && audioType.playlists) {\n // codec should be the same for all playlists within the audio type\n return parseCodecs(audioType.playlists[0].attributes.CODECS);\n }\n }\n\n return null;\n};\nexport var isVideoCodec = function isVideoCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.video.test(codec.trim().toLowerCase());\n};\nexport var isAudioCodec = function isAudioCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.audio.test(codec.trim().toLowerCase());\n};\nexport var isTextCodec = function isTextCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.text.test(codec.trim().toLowerCase());\n};\nexport var getMimeForCodec = function getMimeForCodec(codecString) {\n if (!codecString || typeof codecString !== 'string') {\n return;\n }\n\n var codecs = codecString.toLowerCase().split(',').map(function (c) {\n return translateLegacyCodec(c.trim());\n }); // default to video type\n\n var type = 'video'; // only change to audio type if the only codec we have is\n // audio\n\n if (codecs.length === 1 && isAudioCodec(codecs[0])) {\n type = 'audio';\n } else if (codecs.length === 1 && isTextCodec(codecs[0])) {\n // text uses application/ for now\n type = 'application';\n } // default the container to mp4\n\n\n var container = 'mp4'; // every codec must be able to go into the container\n // for that container to be the correct one\n\n if (codecs.every(function (c) {\n return regexs.mp4.test(c);\n })) {\n container = 'mp4';\n } else if (codecs.every(function (c) {\n return regexs.webm.test(c);\n })) {\n container = 'webm';\n } else if (codecs.every(function (c) {\n return regexs.ogg.test(c);\n })) {\n container = 'ogg';\n }\n\n return type + \"/\" + container + \";codecs=\\\"\" + codecString + \"\\\"\";\n};\nexport var browserSupportsCodec = function browserSupportsCodec(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n return window.MediaSource && window.MediaSource.isTypeSupported && window.MediaSource.isTypeSupported(getMimeForCodec(codecString)) || false;\n};\nexport var muxerSupportsCodec = function muxerSupportsCodec(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n return codecString.toLowerCase().split(',').every(function (codec) {\n codec = codec.trim(); // any match is supported.\n\n for (var i = 0; i < upperMediaTypes.length; i++) {\n var type = upperMediaTypes[i];\n\n if (regexs[\"muxer\" + type].test(codec)) {\n return true;\n }\n }\n\n return false;\n });\n};\nexport var DEFAULT_AUDIO_CODEC = 'mp4a.40.2';\nexport var DEFAULT_VIDEO_CODEC = 'avc1.4d400d';","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","var dom = require('./dom')\nexports.DOMImplementation = dom.DOMImplementation\nexports.XMLSerializer = dom.XMLSerializer\nexports.DOMParser = require('./dom-parser').DOMParser\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default exports for Node. Export the extended versions of VTTCue and\n// VTTRegion in Node since we likely want the capability to convert back and\n// forth between JSON. If we don't then it's not that big of a deal since we're\n// off browser.\n\nvar window = require('global/window');\n\nvar vttjs = module.exports = {\n WebVTT: require(\"./vtt.js\"),\n VTTCue: require(\"./vttcue.js\"),\n VTTRegion: require(\"./vttregion.js\")\n};\n\nwindow.vttjs = vttjs;\nwindow.WebVTT = vttjs.WebVTT;\n\nvar cueShim = vttjs.VTTCue;\nvar regionShim = vttjs.VTTRegion;\nvar nativeVTTCue = window.VTTCue;\nvar nativeVTTRegion = window.VTTRegion;\n\nvttjs.shim = function() {\n window.VTTCue = cueShim;\n window.VTTRegion = regionShim;\n};\n\nvttjs.restore = function() {\n window.VTTCue = nativeVTTCue;\n window.VTTRegion = nativeVTTRegion;\n};\n\nif (!window.VTTCue) {\n vttjs.shim();\n}\n","import { toUint8, bytesMatch } from './byte-helpers.js';\nvar ID3 = toUint8([0x49, 0x44, 0x33]);\nexport var getId3Size = function getId3Size(bytes, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n bytes = toUint8(bytes);\n var flags = bytes[offset + 5];\n var returnSize = bytes[offset + 6] << 21 | bytes[offset + 7] << 14 | bytes[offset + 8] << 7 | bytes[offset + 9];\n var footerPresent = (flags & 16) >> 4;\n\n if (footerPresent) {\n return returnSize + 20;\n }\n\n return returnSize + 10;\n};\nexport var getId3Offset = function getId3Offset(bytes, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n bytes = toUint8(bytes);\n\n if (bytes.length - offset < 10 || !bytesMatch(bytes, ID3, {\n offset: offset\n })) {\n return offset;\n }\n\n offset += getId3Size(bytes, offset); // recursive check for id3 tags as some files\n // have multiple ID3 tag sections even though\n // they should not.\n\n return getId3Offset(bytes, offset);\n};","\"use strict\";\n\nvar window = require(\"global/window\");\n\nvar _extends = require(\"@babel/runtime/helpers/extends\");\n\nvar isFunction = require('is-function');\n\nvar InterceptorsStorage = require('./interceptors.js');\n\nvar RetryManager = require(\"./retry.js\");\n\ncreateXHR.httpHandler = require('./http-handler.js');\ncreateXHR.requestInterceptorsStorage = new InterceptorsStorage();\ncreateXHR.responseInterceptorsStorage = new InterceptorsStorage();\ncreateXHR.retryManager = new RetryManager();\n/**\n * @license\n * slighly modified parse-headers 2.0.2 \n * Copyright (c) 2014 David Björklund\n * Available under the MIT license\n * \n */\n\nvar parseHeaders = function parseHeaders(headers) {\n var result = {};\n\n if (!headers) {\n return result;\n }\n\n headers.trim().split('\\n').forEach(function (row) {\n var index = row.indexOf(':');\n var key = row.slice(0, index).trim().toLowerCase();\n var value = row.slice(index + 1).trim();\n\n if (typeof result[key] === 'undefined') {\n result[key] = value;\n } else if (Array.isArray(result[key])) {\n result[key].push(value);\n } else {\n result[key] = [result[key], value];\n }\n });\n return result;\n};\n\nmodule.exports = createXHR; // Allow use of default import syntax in TypeScript\n\nmodule.exports.default = createXHR;\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop;\ncreateXHR.XDomainRequest = \"withCredentials\" in new createXHR.XMLHttpRequest() ? createXHR.XMLHttpRequest : window.XDomainRequest;\nforEachArray([\"get\", \"put\", \"post\", \"patch\", \"head\", \"delete\"], function (method) {\n createXHR[method === \"delete\" ? \"del\" : method] = function (uri, options, callback) {\n options = initParams(uri, options, callback);\n options.method = method.toUpperCase();\n return _createXHR(options);\n };\n});\n\nfunction forEachArray(array, iterator) {\n for (var i = 0; i < array.length; i++) {\n iterator(array[i]);\n }\n}\n\nfunction isEmpty(obj) {\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) return false;\n }\n\n return true;\n}\n\nfunction initParams(uri, options, callback) {\n var params = uri;\n\n if (isFunction(options)) {\n callback = options;\n\n if (typeof uri === \"string\") {\n params = {\n uri: uri\n };\n }\n } else {\n params = _extends({}, options, {\n uri: uri\n });\n }\n\n params.callback = callback;\n return params;\n}\n\nfunction createXHR(uri, options, callback) {\n options = initParams(uri, options, callback);\n return _createXHR(options);\n}\n\nfunction _createXHR(options) {\n if (typeof options.callback === \"undefined\") {\n throw new Error(\"callback argument missing\");\n } // call all registered request interceptors for a given request type:\n\n\n if (options.requestType && createXHR.requestInterceptorsStorage.getIsEnabled()) {\n var requestInterceptorPayload = {\n uri: options.uri || options.url,\n headers: options.headers || {},\n body: options.body,\n metadata: options.metadata || {},\n retry: options.retry,\n timeout: options.timeout\n };\n var updatedPayload = createXHR.requestInterceptorsStorage.execute(options.requestType, requestInterceptorPayload);\n options.uri = updatedPayload.uri;\n options.headers = updatedPayload.headers;\n options.body = updatedPayload.body;\n options.metadata = updatedPayload.metadata;\n options.retry = updatedPayload.retry;\n options.timeout = updatedPayload.timeout;\n }\n\n var called = false;\n\n var callback = function cbOnce(err, response, body) {\n if (!called) {\n called = true;\n options.callback(err, response, body);\n }\n };\n\n function readystatechange() {\n // do not call load 2 times when response interceptors are enabled\n // why do we even need this 2nd load?\n if (xhr.readyState === 4 && !createXHR.responseInterceptorsStorage.getIsEnabled()) {\n setTimeout(loadFunc, 0);\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined;\n\n if (xhr.response) {\n body = xhr.response;\n } else {\n body = xhr.responseText || getXml(xhr);\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body);\n } catch (e) {}\n }\n\n return body;\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer);\n clearTimeout(options.retryTimeout);\n\n if (!(evt instanceof Error)) {\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\"));\n }\n\n evt.statusCode = 0; // we would like to retry on error:\n\n if (!aborted && createXHR.retryManager.getIsEnabled() && options.retry && options.retry.shouldRetry()) {\n options.retryTimeout = setTimeout(function () {\n options.retry.moveToNextAttempt(); // we want to re-use the same options and the same xhr object:\n\n options.xhr = xhr;\n\n _createXHR(options);\n }, options.retry.getCurrentFuzzedDelay());\n return;\n } // call all registered response interceptors for a given request type:\n\n\n if (options.requestType && createXHR.responseInterceptorsStorage.getIsEnabled()) {\n var responseInterceptorPayload = {\n headers: failureResponse.headers || {},\n body: failureResponse.body,\n responseUrl: xhr.responseURL,\n responseType: xhr.responseType\n };\n\n var _updatedPayload = createXHR.responseInterceptorsStorage.execute(options.requestType, responseInterceptorPayload);\n\n failureResponse.body = _updatedPayload.body;\n failureResponse.headers = _updatedPayload.headers;\n }\n\n return callback(evt, failureResponse);\n } // will load the data & process the response in a special response object\n\n\n function loadFunc() {\n if (aborted) return;\n var status;\n clearTimeout(timeoutTimer);\n clearTimeout(options.retryTimeout);\n\n if (options.useXDR && xhr.status === undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200;\n } else {\n status = xhr.status === 1223 ? 204 : xhr.status;\n }\n\n var response = failureResponse;\n var err = null;\n\n if (status !== 0) {\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n };\n\n if (xhr.getAllResponseHeaders) {\n //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders());\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\");\n } // call all registered response interceptors for a given request type:\n\n\n if (options.requestType && createXHR.responseInterceptorsStorage.getIsEnabled()) {\n var responseInterceptorPayload = {\n headers: response.headers || {},\n body: response.body,\n responseUrl: xhr.responseURL,\n responseType: xhr.responseType\n };\n\n var _updatedPayload2 = createXHR.responseInterceptorsStorage.execute(options.requestType, responseInterceptorPayload);\n\n response.body = _updatedPayload2.body;\n response.headers = _updatedPayload2.headers;\n }\n\n return callback(err, response, response.body);\n }\n\n var xhr = options.xhr || null;\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest();\n } else {\n xhr = new createXHR.XMLHttpRequest();\n }\n }\n\n var key;\n var aborted;\n var uri = xhr.url = options.uri || options.url;\n var method = xhr.method = options.method || \"GET\";\n var body = options.body || options.data;\n var headers = xhr.headers = options.headers || {};\n var sync = !!options.sync;\n var isJson = false;\n var timeoutTimer;\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n };\n\n if (\"json\" in options && options.json !== false) {\n isJson = true;\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\"); //Don't override existing accept header declared by user\n\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\"); //Don't override existing accept header declared by user\n\n body = JSON.stringify(options.json === true ? body : options.json);\n }\n }\n\n xhr.onreadystatechange = readystatechange;\n xhr.onload = loadFunc;\n xhr.onerror = errorFunc; // IE9 must have onprogress be set to a unique function.\n\n xhr.onprogress = function () {// IE must die\n };\n\n xhr.onabort = function () {\n aborted = true;\n clearTimeout(options.retryTimeout);\n };\n\n xhr.ontimeout = errorFunc;\n xhr.open(method, uri, !sync, options.username, options.password); //has to be after open\n\n if (!sync) {\n xhr.withCredentials = !!options.withCredentials;\n } // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n\n\n if (!sync && options.timeout > 0) {\n timeoutTimer = setTimeout(function () {\n if (aborted) return;\n aborted = true; //IE9 may still call readystatechange\n\n xhr.abort(\"timeout\");\n var e = new Error(\"XMLHttpRequest timeout\");\n e.code = \"ETIMEDOUT\";\n errorFunc(e);\n }, options.timeout);\n }\n\n if (xhr.setRequestHeader) {\n for (key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\");\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType;\n }\n\n if (\"beforeSend\" in options && typeof options.beforeSend === \"function\") {\n options.beforeSend(xhr);\n } // Microsoft Edge browser sends \"undefined\" when send is called with undefined value.\n // XMLHttpRequest spec says to pass null as body to indicate no body\n // See https://github.com/naugtur/xhr/issues/100.\n\n\n xhr.send(body || null);\n return xhr;\n}\n\nfunction getXml(xhr) {\n // xhr.responseXML will throw Exception \"InvalidStateError\" or \"DOMException\"\n // See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML.\n try {\n if (xhr.responseType === \"document\") {\n return xhr.responseXML;\n }\n\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \"parsererror\";\n\n if (xhr.responseType === \"\" && !firefoxBugTakenEffect) {\n return xhr.responseXML;\n }\n } catch (e) {}\n\n return null;\n}\n\nfunction noop() {}","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\nvar\n ONE_SECOND_IN_TS = 90000, // 90kHz clock\n secondsToVideoTs,\n secondsToAudioTs,\n videoTsToSeconds,\n audioTsToSeconds,\n audioTsToVideoTs,\n videoTsToAudioTs,\n metadataTsToSeconds;\n\nsecondsToVideoTs = function(seconds) {\n return seconds * ONE_SECOND_IN_TS;\n};\n\nsecondsToAudioTs = function(seconds, sampleRate) {\n return seconds * sampleRate;\n};\n\nvideoTsToSeconds = function(timestamp) {\n return timestamp / ONE_SECOND_IN_TS;\n};\n\naudioTsToSeconds = function(timestamp, sampleRate) {\n return timestamp / sampleRate;\n};\n\naudioTsToVideoTs = function(timestamp, sampleRate) {\n return secondsToVideoTs(audioTsToSeconds(timestamp, sampleRate));\n};\n\nvideoTsToAudioTs = function(timestamp, sampleRate) {\n return secondsToAudioTs(videoTsToSeconds(timestamp), sampleRate);\n};\n\n/**\n * Adjust ID3 tag or caption timing information by the timeline pts values\n * (if keepOriginalTimestamps is false) and convert to seconds\n */\nmetadataTsToSeconds = function(timestamp, timelineStartPts, keepOriginalTimestamps) {\n return videoTsToSeconds(keepOriginalTimestamps ? timestamp : timestamp - timelineStartPts);\n};\n\nmodule.exports = {\n ONE_SECOND_IN_TS: ONE_SECOND_IN_TS,\n secondsToVideoTs: secondsToVideoTs,\n secondsToAudioTs: secondsToAudioTs,\n videoTsToSeconds: videoTsToSeconds,\n audioTsToSeconds: audioTsToSeconds,\n audioTsToVideoTs: audioTsToVideoTs,\n videoTsToAudioTs: videoTsToAudioTs,\n metadataTsToSeconds: metadataTsToSeconds\n};\n","import window from 'global/window';\n\nvar atob = function atob(s) {\n return window.atob ? window.atob(s) : Buffer.from(s, 'base64').toString('binary');\n};\n\nexport default function decodeB64ToUint8Array(b64Text) {\n var decodedString = atob(b64Text);\n var array = new Uint8Array(decodedString.length);\n\n for (var i = 0; i < decodedString.length; i++) {\n array[i] = decodedString.charCodeAt(i);\n }\n\n return array;\n}","import URLToolkit from 'url-toolkit';\nimport window from 'global/window';\nvar DEFAULT_LOCATION = 'http://example.com';\n\nvar resolveUrl = function resolveUrl(baseUrl, relativeUrl) {\n // return early if we don't need to resolve\n if (/^[a-z]+:/i.test(relativeUrl)) {\n return relativeUrl;\n } // if baseUrl is a data URI, ignore it and resolve everything relative to window.location\n\n\n if (/^data:/.test(baseUrl)) {\n baseUrl = window.location && window.location.href || '';\n } // IE11 supports URL but not the URL constructor\n // feature detect the behavior we want\n\n\n var nativeURL = typeof window.URL === 'function';\n var protocolLess = /^\\/\\//.test(baseUrl); // remove location if window.location isn't available (i.e. we're in node)\n // and if baseUrl isn't an absolute url\n\n var removeLocation = !window.location && !/\\/\\//i.test(baseUrl); // if the base URL is relative then combine with the current location\n\n if (nativeURL) {\n baseUrl = new window.URL(baseUrl, window.location || DEFAULT_LOCATION);\n } else if (!/\\/\\//i.test(baseUrl)) {\n baseUrl = URLToolkit.buildAbsoluteURL(window.location && window.location.href || '', baseUrl);\n }\n\n if (nativeURL) {\n var newUrl = new URL(relativeUrl, baseUrl); // if we're a protocol-less url, remove the protocol\n // and if we're location-less, remove the location\n // otherwise, return the url unmodified\n\n if (removeLocation) {\n return newUrl.href.slice(DEFAULT_LOCATION.length);\n } else if (protocolLess) {\n return newUrl.href.slice(newUrl.protocol.length);\n }\n\n return newUrl.href;\n }\n\n return URLToolkit.buildAbsoluteURL(baseUrl, relativeUrl);\n};\n\nexport default resolveUrl;","var getUint64 = require('../utils/numbers.js').getUint64;\n\nvar parseSidx = function(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n references: [],\n referenceId: view.getUint32(4),\n timescale: view.getUint32(8)\n },\n i = 12;\n\n if (result.version === 0) {\n result.earliestPresentationTime = view.getUint32(i);\n result.firstOffset = view.getUint32(i + 4);\n i += 8;\n } else {\n // read 64 bits\n result.earliestPresentationTime = getUint64(data.subarray(i));\n result.firstOffset = getUint64(data.subarray(i + 8));\n i += 16;\n }\n\n i += 2; // reserved\n\n var referenceCount = view.getUint16(i);\n\n i += 2; // start of references\n\n for (; referenceCount > 0; i += 12, referenceCount--) {\n result.references.push({\n referenceType: (data[i] & 0x80) >>> 7,\n referencedSize: view.getUint32(i) & 0x7FFFFFFF,\n subsegmentDuration: view.getUint32(i + 4),\n startsWithSap: !!(data[i + 8] & 0x80),\n sapType: (data[i + 8] & 0x70) >>> 4,\n sapDeltaTime: view.getUint32(i + 8) & 0x0FFFFFFF\n });\n }\n\n return result;\n};\n\n\nmodule.exports = parseSidx;\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n if (!fn) {\n return false\n }\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","/**\n * Loops through all supported media groups in master and calls the provided\n * callback for each group\n *\n * @param {Object} master\n * The parsed master manifest object\n * @param {string[]} groups\n * The media groups to call the callback for\n * @param {Function} callback\n * Callback to call for each media group\n */\nexport var forEachMediaGroup = function forEachMediaGroup(master, groups, callback) {\n groups.forEach(function (mediaType) {\n for (var groupKey in master.mediaGroups[mediaType]) {\n for (var labelKey in master.mediaGroups[mediaType][groupKey]) {\n var mediaProperties = master.mediaGroups[mediaType][groupKey][labelKey];\n callback(mediaProperties, mediaType, groupKey, labelKey);\n }\n }\n });\n};","/*! @name mpd-parser @version 1.3.0 @license Apache-2.0 */\nimport resolveUrl from '@videojs/vhs-utils/es/resolve-url';\nimport window from 'global/window';\nimport { forEachMediaGroup } from '@videojs/vhs-utils/es/media-groups';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array';\nimport { DOMParser } from '@xmldom/xmldom';\n\nvar version = \"1.3.0\";\n\nconst isObject = obj => {\n return !!obj && typeof obj === 'object';\n};\n\nconst merge = (...objects) => {\n return objects.reduce((result, source) => {\n if (typeof source !== 'object') {\n return result;\n }\n\n Object.keys(source).forEach(key => {\n if (Array.isArray(result[key]) && Array.isArray(source[key])) {\n result[key] = result[key].concat(source[key]);\n } else if (isObject(result[key]) && isObject(source[key])) {\n result[key] = merge(result[key], source[key]);\n } else {\n result[key] = source[key];\n }\n });\n return result;\n }, {});\n};\nconst values = o => Object.keys(o).map(k => o[k]);\n\nconst range = (start, end) => {\n const result = [];\n\n for (let i = start; i < end; i++) {\n result.push(i);\n }\n\n return result;\n};\nconst flatten = lists => lists.reduce((x, y) => x.concat(y), []);\nconst from = list => {\n if (!list.length) {\n return [];\n }\n\n const result = [];\n\n for (let i = 0; i < list.length; i++) {\n result.push(list[i]);\n }\n\n return result;\n};\nconst findIndexes = (l, key) => l.reduce((a, e, i) => {\n if (e[key]) {\n a.push(i);\n }\n\n return a;\n}, []);\n/**\n * Returns a union of the included lists provided each element can be identified by a key.\n *\n * @param {Array} list - list of lists to get the union of\n * @param {Function} keyFunction - the function to use as a key for each element\n *\n * @return {Array} the union of the arrays\n */\n\nconst union = (lists, keyFunction) => {\n return values(lists.reduce((acc, list) => {\n list.forEach(el => {\n acc[keyFunction(el)] = el;\n });\n return acc;\n }, {}));\n};\n\nvar errors = {\n INVALID_NUMBER_OF_PERIOD: 'INVALID_NUMBER_OF_PERIOD',\n INVALID_NUMBER_OF_CONTENT_STEERING: 'INVALID_NUMBER_OF_CONTENT_STEERING',\n DASH_EMPTY_MANIFEST: 'DASH_EMPTY_MANIFEST',\n DASH_INVALID_XML: 'DASH_INVALID_XML',\n NO_BASE_URL: 'NO_BASE_URL',\n MISSING_SEGMENT_INFORMATION: 'MISSING_SEGMENT_INFORMATION',\n SEGMENT_TIME_UNSPECIFIED: 'SEGMENT_TIME_UNSPECIFIED',\n UNSUPPORTED_UTC_TIMING_SCHEME: 'UNSUPPORTED_UTC_TIMING_SCHEME'\n};\n\n/**\n * @typedef {Object} SingleUri\n * @property {string} uri - relative location of segment\n * @property {string} resolvedUri - resolved location of segment\n * @property {Object} byterange - Object containing information on how to make byte range\n * requests following byte-range-spec per RFC2616.\n * @property {String} byterange.length - length of range request\n * @property {String} byterange.offset - byte offset of range request\n *\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.1\n */\n\n/**\n * Converts a URLType node (5.3.9.2.3 Table 13) to a segment object\n * that conforms to how m3u8-parser is structured\n *\n * @see https://github.com/videojs/m3u8-parser\n *\n * @param {string} baseUrl - baseUrl provided by nodes\n * @param {string} source - source url for segment\n * @param {string} range - optional range used for range calls,\n * follows RFC 2616, Clause 14.35.1\n * @return {SingleUri} full segment information transformed into a format similar\n * to m3u8-parser\n */\n\nconst urlTypeToSegment = ({\n baseUrl = '',\n source = '',\n range = '',\n indexRange = ''\n}) => {\n const segment = {\n uri: source,\n resolvedUri: resolveUrl(baseUrl || '', source)\n };\n\n if (range || indexRange) {\n const rangeStr = range ? range : indexRange;\n const ranges = rangeStr.split('-'); // default to parsing this as a BigInt if possible\n\n let startRange = window.BigInt ? window.BigInt(ranges[0]) : parseInt(ranges[0], 10);\n let endRange = window.BigInt ? window.BigInt(ranges[1]) : parseInt(ranges[1], 10); // convert back to a number if less than MAX_SAFE_INTEGER\n\n if (startRange < Number.MAX_SAFE_INTEGER && typeof startRange === 'bigint') {\n startRange = Number(startRange);\n }\n\n if (endRange < Number.MAX_SAFE_INTEGER && typeof endRange === 'bigint') {\n endRange = Number(endRange);\n }\n\n let length;\n\n if (typeof endRange === 'bigint' || typeof startRange === 'bigint') {\n length = window.BigInt(endRange) - window.BigInt(startRange) + window.BigInt(1);\n } else {\n length = endRange - startRange + 1;\n }\n\n if (typeof length === 'bigint' && length < Number.MAX_SAFE_INTEGER) {\n length = Number(length);\n } // byterange should be inclusive according to\n // RFC 2616, Clause 14.35.1\n\n\n segment.byterange = {\n length,\n offset: startRange\n };\n }\n\n return segment;\n};\nconst byteRangeToString = byterange => {\n // `endRange` is one less than `offset + length` because the HTTP range\n // header uses inclusive ranges\n let endRange;\n\n if (typeof byterange.offset === 'bigint' || typeof byterange.length === 'bigint') {\n endRange = window.BigInt(byterange.offset) + window.BigInt(byterange.length) - window.BigInt(1);\n } else {\n endRange = byterange.offset + byterange.length - 1;\n }\n\n return `${byterange.offset}-${endRange}`;\n};\n\n/**\n * parse the end number attribue that can be a string\n * number, or undefined.\n *\n * @param {string|number|undefined} endNumber\n * The end number attribute.\n *\n * @return {number|null}\n * The result of parsing the end number.\n */\n\nconst parseEndNumber = endNumber => {\n if (endNumber && typeof endNumber !== 'number') {\n endNumber = parseInt(endNumber, 10);\n }\n\n if (isNaN(endNumber)) {\n return null;\n }\n\n return endNumber;\n};\n/**\n * Functions for calculating the range of available segments in static and dynamic\n * manifests.\n */\n\n\nconst segmentRange = {\n /**\n * Returns the entire range of available segments for a static MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n static(attributes) {\n const {\n duration,\n timescale = 1,\n sourceDuration,\n periodDuration\n } = attributes;\n const endNumber = parseEndNumber(attributes.endNumber);\n const segmentDuration = duration / timescale;\n\n if (typeof endNumber === 'number') {\n return {\n start: 0,\n end: endNumber\n };\n }\n\n if (typeof periodDuration === 'number') {\n return {\n start: 0,\n end: periodDuration / segmentDuration\n };\n }\n\n return {\n start: 0,\n end: sourceDuration / segmentDuration\n };\n },\n\n /**\n * Returns the current live window range of available segments for a dynamic MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n dynamic(attributes) {\n const {\n NOW,\n clientOffset,\n availabilityStartTime,\n timescale = 1,\n duration,\n periodStart = 0,\n minimumUpdatePeriod = 0,\n timeShiftBufferDepth = Infinity\n } = attributes;\n const endNumber = parseEndNumber(attributes.endNumber); // clientOffset is passed in at the top level of mpd-parser and is an offset calculated\n // after retrieving UTC server time.\n\n const now = (NOW + clientOffset) / 1000; // WC stands for Wall Clock.\n // Convert the period start time to EPOCH.\n\n const periodStartWC = availabilityStartTime + periodStart; // Period end in EPOCH is manifest's retrieval time + time until next update.\n\n const periodEndWC = now + minimumUpdatePeriod;\n const periodDuration = periodEndWC - periodStartWC;\n const segmentCount = Math.ceil(periodDuration * timescale / duration);\n const availableStart = Math.floor((now - periodStartWC - timeShiftBufferDepth) * timescale / duration);\n const availableEnd = Math.floor((now - periodStartWC) * timescale / duration);\n return {\n start: Math.max(0, availableStart),\n end: typeof endNumber === 'number' ? endNumber : Math.min(segmentCount, availableEnd)\n };\n }\n\n};\n/**\n * Maps a range of numbers to objects with information needed to build the corresponding\n * segment list\n *\n * @name toSegmentsCallback\n * @function\n * @param {number} number\n * Number of the segment\n * @param {number} index\n * Index of the number in the range list\n * @return {{ number: Number, duration: Number, timeline: Number, time: Number }}\n * Object with segment timing and duration info\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping a range of numbers to\n * information needed to build the segment list.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {toSegmentsCallback}\n * Callback map function\n */\n\nconst toSegments = attributes => number => {\n const {\n duration,\n timescale = 1,\n periodStart,\n startNumber = 1\n } = attributes;\n return {\n number: startNumber + number,\n duration: duration / timescale,\n timeline: periodStart,\n time: number * duration\n };\n};\n/**\n * Returns a list of objects containing segment timing and duration info used for\n * building the list of segments. This uses the @duration attribute specified\n * in the MPD manifest to derive the range of segments.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nconst parseByDuration = attributes => {\n const {\n type,\n duration,\n timescale = 1,\n periodDuration,\n sourceDuration\n } = attributes;\n const {\n start,\n end\n } = segmentRange[type](attributes);\n const segments = range(start, end).map(toSegments(attributes));\n\n if (type === 'static') {\n const index = segments.length - 1; // section is either a period or the full source\n\n const sectionDuration = typeof periodDuration === 'number' ? periodDuration : sourceDuration; // final segment may be less than full segment duration\n\n segments[index].duration = sectionDuration - duration / timescale * index;\n }\n\n return segments;\n};\n\n/**\n * Translates SegmentBase into a set of segments.\n * (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @return {Object.} list of segments\n */\n\nconst segmentsFromBase = attributes => {\n const {\n baseUrl,\n initialization = {},\n sourceDuration,\n indexRange = '',\n periodStart,\n presentationTime,\n number = 0,\n duration\n } = attributes; // base url is required for SegmentBase to work, per spec (Section 5.3.9.2.1)\n\n if (!baseUrl) {\n throw new Error(errors.NO_BASE_URL);\n }\n\n const initSegment = urlTypeToSegment({\n baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n const segment = urlTypeToSegment({\n baseUrl,\n source: baseUrl,\n indexRange\n });\n segment.map = initSegment; // If there is a duration, use it, otherwise use the given duration of the source\n // (since SegmentBase is only for one total segment)\n\n if (duration) {\n const segmentTimeInfo = parseByDuration(attributes);\n\n if (segmentTimeInfo.length) {\n segment.duration = segmentTimeInfo[0].duration;\n segment.timeline = segmentTimeInfo[0].timeline;\n }\n } else if (sourceDuration) {\n segment.duration = sourceDuration;\n segment.timeline = periodStart;\n } // If presentation time is provided, these segments are being generated by SIDX\n // references, and should use the time provided. For the general case of SegmentBase,\n // there should only be one segment in the period, so its presentation time is the same\n // as its period start.\n\n\n segment.presentationTime = presentationTime || periodStart;\n segment.number = number;\n return [segment];\n};\n/**\n * Given a playlist, a sidx box, and a baseUrl, update the segment list of the playlist\n * according to the sidx information given.\n *\n * playlist.sidx has metadadata about the sidx where-as the sidx param\n * is the parsed sidx box itself.\n *\n * @param {Object} playlist the playlist to update the sidx information for\n * @param {Object} sidx the parsed sidx box\n * @return {Object} the playlist object with the updated sidx information\n */\n\nconst addSidxSegmentsToPlaylist$1 = (playlist, sidx, baseUrl) => {\n // Retain init segment information\n const initSegment = playlist.sidx.map ? playlist.sidx.map : null; // Retain source duration from initial main manifest parsing\n\n const sourceDuration = playlist.sidx.duration; // Retain source timeline\n\n const timeline = playlist.timeline || 0;\n const sidxByteRange = playlist.sidx.byterange;\n const sidxEnd = sidxByteRange.offset + sidxByteRange.length; // Retain timescale of the parsed sidx\n\n const timescale = sidx.timescale; // referenceType 1 refers to other sidx boxes\n\n const mediaReferences = sidx.references.filter(r => r.referenceType !== 1);\n const segments = [];\n const type = playlist.endList ? 'static' : 'dynamic';\n const periodStart = playlist.sidx.timeline;\n let presentationTime = periodStart;\n let number = playlist.mediaSequence || 0; // firstOffset is the offset from the end of the sidx box\n\n let startIndex; // eslint-disable-next-line\n\n if (typeof sidx.firstOffset === 'bigint') {\n startIndex = window.BigInt(sidxEnd) + sidx.firstOffset;\n } else {\n startIndex = sidxEnd + sidx.firstOffset;\n }\n\n for (let i = 0; i < mediaReferences.length; i++) {\n const reference = sidx.references[i]; // size of the referenced (sub)segment\n\n const size = reference.referencedSize; // duration of the referenced (sub)segment, in the timescale\n // this will be converted to seconds when generating segments\n\n const duration = reference.subsegmentDuration; // should be an inclusive range\n\n let endIndex; // eslint-disable-next-line\n\n if (typeof startIndex === 'bigint') {\n endIndex = startIndex + window.BigInt(size) - window.BigInt(1);\n } else {\n endIndex = startIndex + size - 1;\n }\n\n const indexRange = `${startIndex}-${endIndex}`;\n const attributes = {\n baseUrl,\n timescale,\n timeline,\n periodStart,\n presentationTime,\n number,\n duration,\n sourceDuration,\n indexRange,\n type\n };\n const segment = segmentsFromBase(attributes)[0];\n\n if (initSegment) {\n segment.map = initSegment;\n }\n\n segments.push(segment);\n\n if (typeof startIndex === 'bigint') {\n startIndex += window.BigInt(size);\n } else {\n startIndex += size;\n }\n\n presentationTime += duration / timescale;\n number++;\n }\n\n playlist.segments = segments;\n return playlist;\n};\n\nconst SUPPORTED_MEDIA_TYPES = ['AUDIO', 'SUBTITLES']; // allow one 60fps frame as leniency (arbitrarily chosen)\n\nconst TIME_FUDGE = 1 / 60;\n/**\n * Given a list of timelineStarts, combines, dedupes, and sorts them.\n *\n * @param {TimelineStart[]} timelineStarts - list of timeline starts\n *\n * @return {TimelineStart[]} the combined and deduped timeline starts\n */\n\nconst getUniqueTimelineStarts = timelineStarts => {\n return union(timelineStarts, ({\n timeline\n }) => timeline).sort((a, b) => a.timeline > b.timeline ? 1 : -1);\n};\n/**\n * Finds the playlist with the matching NAME attribute.\n *\n * @param {Array} playlists - playlists to search through\n * @param {string} name - the NAME attribute to search for\n *\n * @return {Object|null} the matching playlist object, or null\n */\n\nconst findPlaylistWithName = (playlists, name) => {\n for (let i = 0; i < playlists.length; i++) {\n if (playlists[i].attributes.NAME === name) {\n return playlists[i];\n }\n }\n\n return null;\n};\n/**\n * Gets a flattened array of media group playlists.\n *\n * @param {Object} manifest - the main manifest object\n *\n * @return {Array} the media group playlists\n */\n\nconst getMediaGroupPlaylists = manifest => {\n let mediaGroupPlaylists = [];\n forEachMediaGroup(manifest, SUPPORTED_MEDIA_TYPES, (properties, type, group, label) => {\n mediaGroupPlaylists = mediaGroupPlaylists.concat(properties.playlists || []);\n });\n return mediaGroupPlaylists;\n};\n/**\n * Updates the playlist's media sequence numbers.\n *\n * @param {Object} config - options object\n * @param {Object} config.playlist - the playlist to update\n * @param {number} config.mediaSequence - the mediaSequence number to start with\n */\n\nconst updateMediaSequenceForPlaylist = ({\n playlist,\n mediaSequence\n}) => {\n playlist.mediaSequence = mediaSequence;\n playlist.segments.forEach((segment, index) => {\n segment.number = playlist.mediaSequence + index;\n });\n};\n/**\n * Updates the media and discontinuity sequence numbers of newPlaylists given oldPlaylists\n * and a complete list of timeline starts.\n *\n * If no matching playlist is found, only the discontinuity sequence number of the playlist\n * will be updated.\n *\n * Since early available timelines are not supported, at least one segment must be present.\n *\n * @param {Object} config - options object\n * @param {Object[]} oldPlaylists - the old playlists to use as a reference\n * @param {Object[]} newPlaylists - the new playlists to update\n * @param {Object} timelineStarts - all timelineStarts seen in the stream to this point\n */\n\nconst updateSequenceNumbers = ({\n oldPlaylists,\n newPlaylists,\n timelineStarts\n}) => {\n newPlaylists.forEach(playlist => {\n playlist.discontinuitySequence = timelineStarts.findIndex(function ({\n timeline\n }) {\n return timeline === playlist.timeline;\n }); // Playlists NAMEs come from DASH Representation IDs, which are mandatory\n // (see ISO_23009-1-2012 5.3.5.2).\n //\n // If the same Representation existed in a prior Period, it will retain the same NAME.\n\n const oldPlaylist = findPlaylistWithName(oldPlaylists, playlist.attributes.NAME);\n\n if (!oldPlaylist) {\n // Since this is a new playlist, the media sequence values can start from 0 without\n // consequence.\n return;\n } // TODO better support for live SIDX\n //\n // As of this writing, mpd-parser does not support multiperiod SIDX (in live or VOD).\n // This is evident by a playlist only having a single SIDX reference. In a multiperiod\n // playlist there would need to be multiple SIDX references. In addition, live SIDX is\n // not supported when the SIDX properties change on refreshes.\n //\n // In the future, if support needs to be added, the merging logic here can be called\n // after SIDX references are resolved. For now, exit early to prevent exceptions being\n // thrown due to undefined references.\n\n\n if (playlist.sidx) {\n return;\n } // Since we don't yet support early available timelines, we don't need to support\n // playlists with no segments.\n\n\n const firstNewSegment = playlist.segments[0];\n const oldMatchingSegmentIndex = oldPlaylist.segments.findIndex(function (oldSegment) {\n return Math.abs(oldSegment.presentationTime - firstNewSegment.presentationTime) < TIME_FUDGE;\n }); // No matching segment from the old playlist means the entire playlist was refreshed.\n // In this case the media sequence should account for this update, and the new segments\n // should be marked as discontinuous from the prior content, since the last prior\n // timeline was removed.\n\n if (oldMatchingSegmentIndex === -1) {\n updateMediaSequenceForPlaylist({\n playlist,\n mediaSequence: oldPlaylist.mediaSequence + oldPlaylist.segments.length\n });\n playlist.segments[0].discontinuity = true;\n playlist.discontinuityStarts.unshift(0); // No matching segment does not necessarily mean there's missing content.\n //\n // If the new playlist's timeline is the same as the last seen segment's timeline,\n // then a discontinuity can be added to identify that there's potentially missing\n // content. If there's no missing content, the discontinuity should still be rather\n // harmless. It's possible that if segment durations are accurate enough, that the\n // existence of a gap can be determined using the presentation times and durations,\n // but if the segment timing info is off, it may introduce more problems than simply\n // adding the discontinuity.\n //\n // If the new playlist's timeline is different from the last seen segment's timeline,\n // then a discontinuity can be added to identify that this is the first seen segment\n // of a new timeline. However, the logic at the start of this function that\n // determined the disconinuity sequence by timeline index is now off by one (the\n // discontinuity of the newest timeline hasn't yet fallen off the manifest...since\n // we added it), so the disconinuity sequence must be decremented.\n //\n // A period may also have a duration of zero, so the case of no segments is handled\n // here even though we don't yet support early available periods.\n\n if (!oldPlaylist.segments.length && playlist.timeline > oldPlaylist.timeline || oldPlaylist.segments.length && playlist.timeline > oldPlaylist.segments[oldPlaylist.segments.length - 1].timeline) {\n playlist.discontinuitySequence--;\n }\n\n return;\n } // If the first segment matched with a prior segment on a discontinuity (it's matching\n // on the first segment of a period), then the discontinuitySequence shouldn't be the\n // timeline's matching one, but instead should be the one prior, and the first segment\n // of the new manifest should be marked with a discontinuity.\n //\n // The reason for this special case is that discontinuity sequence shows how many\n // discontinuities have fallen off of the playlist, and discontinuities are marked on\n // the first segment of a new \"timeline.\" Because of this, while DASH will retain that\n // Period while the \"timeline\" exists, HLS keeps track of it via the discontinuity\n // sequence, and that first segment is an indicator, but can be removed before that\n // timeline is gone.\n\n\n const oldMatchingSegment = oldPlaylist.segments[oldMatchingSegmentIndex];\n\n if (oldMatchingSegment.discontinuity && !firstNewSegment.discontinuity) {\n firstNewSegment.discontinuity = true;\n playlist.discontinuityStarts.unshift(0);\n playlist.discontinuitySequence--;\n }\n\n updateMediaSequenceForPlaylist({\n playlist,\n mediaSequence: oldPlaylist.segments[oldMatchingSegmentIndex].number\n });\n });\n};\n/**\n * Given an old parsed manifest object and a new parsed manifest object, updates the\n * sequence and timing values within the new manifest to ensure that it lines up with the\n * old.\n *\n * @param {Array} oldManifest - the old main manifest object\n * @param {Array} newManifest - the new main manifest object\n *\n * @return {Object} the updated new manifest object\n */\n\nconst positionManifestOnTimeline = ({\n oldManifest,\n newManifest\n}) => {\n // Starting from v4.1.2 of the IOP, section 4.4.3.3 states:\n //\n // \"MPD@availabilityStartTime and Period@start shall not be changed over MPD updates.\"\n //\n // This was added from https://github.com/Dash-Industry-Forum/DASH-IF-IOP/issues/160\n //\n // Because of this change, and the difficulty of supporting periods with changing start\n // times, periods with changing start times are not supported. This makes the logic much\n // simpler, since periods with the same start time can be considerred the same period\n // across refreshes.\n //\n // To give an example as to the difficulty of handling periods where the start time may\n // change, if a single period manifest is refreshed with another manifest with a single\n // period, and both the start and end times are increased, then the only way to determine\n // if it's a new period or an old one that has changed is to look through the segments of\n // each playlist and determine the presentation time bounds to find a match. In addition,\n // if the period start changed to exceed the old period end, then there would be no\n // match, and it would not be possible to determine whether the refreshed period is a new\n // one or the old one.\n const oldPlaylists = oldManifest.playlists.concat(getMediaGroupPlaylists(oldManifest));\n const newPlaylists = newManifest.playlists.concat(getMediaGroupPlaylists(newManifest)); // Save all seen timelineStarts to the new manifest. Although this potentially means that\n // there's a \"memory leak\" in that it will never stop growing, in reality, only a couple\n // of properties are saved for each seen Period. Even long running live streams won't\n // generate too many Periods, unless the stream is watched for decades. In the future,\n // this can be optimized by mapping to discontinuity sequence numbers for each timeline,\n // but it may not become an issue, and the additional info can be useful for debugging.\n\n newManifest.timelineStarts = getUniqueTimelineStarts([oldManifest.timelineStarts, newManifest.timelineStarts]);\n updateSequenceNumbers({\n oldPlaylists,\n newPlaylists,\n timelineStarts: newManifest.timelineStarts\n });\n return newManifest;\n};\n\nconst generateSidxKey = sidx => sidx && sidx.uri + '-' + byteRangeToString(sidx.byterange);\n\nconst mergeDiscontiguousPlaylists = playlists => {\n // Break out playlists into groups based on their baseUrl\n const playlistsByBaseUrl = playlists.reduce(function (acc, cur) {\n if (!acc[cur.attributes.baseUrl]) {\n acc[cur.attributes.baseUrl] = [];\n }\n\n acc[cur.attributes.baseUrl].push(cur);\n return acc;\n }, {});\n let allPlaylists = [];\n Object.values(playlistsByBaseUrl).forEach(playlistGroup => {\n const mergedPlaylists = values(playlistGroup.reduce((acc, playlist) => {\n // assuming playlist IDs are the same across periods\n // TODO: handle multiperiod where representation sets are not the same\n // across periods\n const name = playlist.attributes.id + (playlist.attributes.lang || '');\n\n if (!acc[name]) {\n // First Period\n acc[name] = playlist;\n acc[name].attributes.timelineStarts = [];\n } else {\n // Subsequent Periods\n if (playlist.segments) {\n // first segment of subsequent periods signal a discontinuity\n if (playlist.segments[0]) {\n playlist.segments[0].discontinuity = true;\n }\n\n acc[name].segments.push(...playlist.segments);\n } // bubble up contentProtection, this assumes all DRM content\n // has the same contentProtection\n\n\n if (playlist.attributes.contentProtection) {\n acc[name].attributes.contentProtection = playlist.attributes.contentProtection;\n }\n }\n\n acc[name].attributes.timelineStarts.push({\n // Although they represent the same number, it's important to have both to make it\n // compatible with HLS potentially having a similar attribute.\n start: playlist.attributes.periodStart,\n timeline: playlist.attributes.periodStart\n });\n return acc;\n }, {}));\n allPlaylists = allPlaylists.concat(mergedPlaylists);\n });\n return allPlaylists.map(playlist => {\n playlist.discontinuityStarts = findIndexes(playlist.segments || [], 'discontinuity');\n return playlist;\n });\n};\n\nconst addSidxSegmentsToPlaylist = (playlist, sidxMapping) => {\n const sidxKey = generateSidxKey(playlist.sidx);\n const sidxMatch = sidxKey && sidxMapping[sidxKey] && sidxMapping[sidxKey].sidx;\n\n if (sidxMatch) {\n addSidxSegmentsToPlaylist$1(playlist, sidxMatch, playlist.sidx.resolvedUri);\n }\n\n return playlist;\n};\nconst addSidxSegmentsToPlaylists = (playlists, sidxMapping = {}) => {\n if (!Object.keys(sidxMapping).length) {\n return playlists;\n }\n\n for (const i in playlists) {\n playlists[i] = addSidxSegmentsToPlaylist(playlists[i], sidxMapping);\n }\n\n return playlists;\n};\nconst formatAudioPlaylist = ({\n attributes,\n segments,\n sidx,\n mediaSequence,\n discontinuitySequence,\n discontinuityStarts\n}, isAudioOnly) => {\n const playlist = {\n attributes: {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth,\n CODECS: attributes.codecs,\n ['PROGRAM-ID']: 1\n },\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n targetDuration: attributes.duration,\n discontinuitySequence,\n discontinuityStarts,\n timelineStarts: attributes.timelineStarts,\n mediaSequence,\n segments\n };\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (attributes.serviceLocation) {\n playlist.attributes.serviceLocation = attributes.serviceLocation;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n if (isAudioOnly) {\n playlist.attributes.AUDIO = 'audio';\n playlist.attributes.SUBTITLES = 'subs';\n }\n\n return playlist;\n};\nconst formatVttPlaylist = ({\n attributes,\n segments,\n mediaSequence,\n discontinuityStarts,\n discontinuitySequence\n}) => {\n if (typeof segments === 'undefined') {\n // vtt tracks may use single file in BaseURL\n segments = [{\n uri: attributes.baseUrl,\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n duration: attributes.sourceDuration,\n number: 0\n }]; // targetDuration should be the same duration as the only segment\n\n attributes.duration = attributes.sourceDuration;\n }\n\n const m3u8Attributes = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth,\n ['PROGRAM-ID']: 1\n };\n\n if (attributes.codecs) {\n m3u8Attributes.CODECS = attributes.codecs;\n }\n\n const vttPlaylist = {\n attributes: m3u8Attributes,\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n targetDuration: attributes.duration,\n timelineStarts: attributes.timelineStarts,\n discontinuityStarts,\n discontinuitySequence,\n mediaSequence,\n segments\n };\n\n if (attributes.serviceLocation) {\n vttPlaylist.attributes.serviceLocation = attributes.serviceLocation;\n }\n\n return vttPlaylist;\n};\nconst organizeAudioPlaylists = (playlists, sidxMapping = {}, isAudioOnly = false) => {\n let mainPlaylist;\n const formattedPlaylists = playlists.reduce((a, playlist) => {\n const role = playlist.attributes.role && playlist.attributes.role.value || '';\n const language = playlist.attributes.lang || '';\n let label = playlist.attributes.label || 'main';\n\n if (language && !playlist.attributes.label) {\n const roleLabel = role ? ` (${role})` : '';\n label = `${playlist.attributes.lang}${roleLabel}`;\n }\n\n if (!a[label]) {\n a[label] = {\n language,\n autoselect: true,\n default: role === 'main',\n playlists: [],\n uri: ''\n };\n }\n\n const formatted = addSidxSegmentsToPlaylist(formatAudioPlaylist(playlist, isAudioOnly), sidxMapping);\n a[label].playlists.push(formatted);\n\n if (typeof mainPlaylist === 'undefined' && role === 'main') {\n mainPlaylist = playlist;\n mainPlaylist.default = true;\n }\n\n return a;\n }, {}); // if no playlists have role \"main\", mark the first as main\n\n if (!mainPlaylist) {\n const firstLabel = Object.keys(formattedPlaylists)[0];\n formattedPlaylists[firstLabel].default = true;\n }\n\n return formattedPlaylists;\n};\nconst organizeVttPlaylists = (playlists, sidxMapping = {}) => {\n return playlists.reduce((a, playlist) => {\n const label = playlist.attributes.label || playlist.attributes.lang || 'text';\n\n if (!a[label]) {\n a[label] = {\n language: label,\n default: false,\n autoselect: false,\n playlists: [],\n uri: ''\n };\n }\n\n a[label].playlists.push(addSidxSegmentsToPlaylist(formatVttPlaylist(playlist), sidxMapping));\n return a;\n }, {});\n};\n\nconst organizeCaptionServices = captionServices => captionServices.reduce((svcObj, svc) => {\n if (!svc) {\n return svcObj;\n }\n\n svc.forEach(service => {\n const {\n channel,\n language\n } = service;\n svcObj[language] = {\n autoselect: false,\n default: false,\n instreamId: channel,\n language\n };\n\n if (service.hasOwnProperty('aspectRatio')) {\n svcObj[language].aspectRatio = service.aspectRatio;\n }\n\n if (service.hasOwnProperty('easyReader')) {\n svcObj[language].easyReader = service.easyReader;\n }\n\n if (service.hasOwnProperty('3D')) {\n svcObj[language]['3D'] = service['3D'];\n }\n });\n return svcObj;\n}, {});\n\nconst formatVideoPlaylist = ({\n attributes,\n segments,\n sidx,\n discontinuityStarts\n}) => {\n const playlist = {\n attributes: {\n NAME: attributes.id,\n AUDIO: 'audio',\n SUBTITLES: 'subs',\n RESOLUTION: {\n width: attributes.width,\n height: attributes.height\n },\n CODECS: attributes.codecs,\n BANDWIDTH: attributes.bandwidth,\n ['PROGRAM-ID']: 1\n },\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodStart,\n resolvedUri: attributes.baseUrl || '',\n targetDuration: attributes.duration,\n discontinuityStarts,\n timelineStarts: attributes.timelineStarts,\n segments\n };\n\n if (attributes.frameRate) {\n playlist.attributes['FRAME-RATE'] = attributes.frameRate;\n }\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (attributes.serviceLocation) {\n playlist.attributes.serviceLocation = attributes.serviceLocation;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n return playlist;\n};\n\nconst videoOnly = ({\n attributes\n}) => attributes.mimeType === 'video/mp4' || attributes.mimeType === 'video/webm' || attributes.contentType === 'video';\n\nconst audioOnly = ({\n attributes\n}) => attributes.mimeType === 'audio/mp4' || attributes.mimeType === 'audio/webm' || attributes.contentType === 'audio';\n\nconst vttOnly = ({\n attributes\n}) => attributes.mimeType === 'text/vtt' || attributes.contentType === 'text';\n/**\n * Contains start and timeline properties denoting a timeline start. For DASH, these will\n * be the same number.\n *\n * @typedef {Object} TimelineStart\n * @property {number} start - the start time of the timeline\n * @property {number} timeline - the timeline number\n */\n\n/**\n * Adds appropriate media and discontinuity sequence values to the segments and playlists.\n *\n * Throughout mpd-parser, the `number` attribute is used in relation to `startNumber`, a\n * DASH specific attribute used in constructing segment URI's from templates. However, from\n * an HLS perspective, the `number` attribute on a segment would be its `mediaSequence`\n * value, which should start at the original media sequence value (or 0) and increment by 1\n * for each segment thereafter. Since DASH's `startNumber` values are independent per\n * period, it doesn't make sense to use it for `number`. Instead, assume everything starts\n * from a 0 mediaSequence value and increment from there.\n *\n * Note that VHS currently doesn't use the `number` property, but it can be helpful for\n * debugging and making sense of the manifest.\n *\n * For live playlists, to account for values increasing in manifests when periods are\n * removed on refreshes, merging logic should be used to update the numbers to their\n * appropriate values (to ensure they're sequential and increasing).\n *\n * @param {Object[]} playlists - the playlists to update\n * @param {TimelineStart[]} timelineStarts - the timeline starts for the manifest\n */\n\n\nconst addMediaSequenceValues = (playlists, timelineStarts) => {\n // increment all segments sequentially\n playlists.forEach(playlist => {\n playlist.mediaSequence = 0;\n playlist.discontinuitySequence = timelineStarts.findIndex(function ({\n timeline\n }) {\n return timeline === playlist.timeline;\n });\n\n if (!playlist.segments) {\n return;\n }\n\n playlist.segments.forEach((segment, index) => {\n segment.number = index;\n });\n });\n};\n/**\n * Given a media group object, flattens all playlists within the media group into a single\n * array.\n *\n * @param {Object} mediaGroupObject - the media group object\n *\n * @return {Object[]}\n * The media group playlists\n */\n\nconst flattenMediaGroupPlaylists = mediaGroupObject => {\n if (!mediaGroupObject) {\n return [];\n }\n\n return Object.keys(mediaGroupObject).reduce((acc, label) => {\n const labelContents = mediaGroupObject[label];\n return acc.concat(labelContents.playlists);\n }, []);\n};\nconst toM3u8 = ({\n dashPlaylists,\n locations,\n contentSteering,\n sidxMapping = {},\n previousManifest,\n eventStream\n}) => {\n if (!dashPlaylists.length) {\n return {};\n } // grab all main manifest attributes\n\n\n const {\n sourceDuration: duration,\n type,\n suggestedPresentationDelay,\n minimumUpdatePeriod\n } = dashPlaylists[0].attributes;\n const videoPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist);\n const audioPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly));\n const vttPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(vttOnly));\n const captions = dashPlaylists.map(playlist => playlist.attributes.captionServices).filter(Boolean);\n const manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: [],\n endList: true,\n mediaGroups: {\n AUDIO: {},\n VIDEO: {},\n ['CLOSED-CAPTIONS']: {},\n SUBTITLES: {}\n },\n uri: '',\n duration,\n playlists: addSidxSegmentsToPlaylists(videoPlaylists, sidxMapping)\n };\n\n if (minimumUpdatePeriod >= 0) {\n manifest.minimumUpdatePeriod = minimumUpdatePeriod * 1000;\n }\n\n if (locations) {\n manifest.locations = locations;\n }\n\n if (contentSteering) {\n manifest.contentSteering = contentSteering;\n }\n\n if (type === 'dynamic') {\n manifest.suggestedPresentationDelay = suggestedPresentationDelay;\n }\n\n if (eventStream && eventStream.length > 0) {\n manifest.eventStream = eventStream;\n }\n\n const isAudioOnly = manifest.playlists.length === 0;\n const organizedAudioGroup = audioPlaylists.length ? organizeAudioPlaylists(audioPlaylists, sidxMapping, isAudioOnly) : null;\n const organizedVttGroup = vttPlaylists.length ? organizeVttPlaylists(vttPlaylists, sidxMapping) : null;\n const formattedPlaylists = videoPlaylists.concat(flattenMediaGroupPlaylists(organizedAudioGroup), flattenMediaGroupPlaylists(organizedVttGroup));\n const playlistTimelineStarts = formattedPlaylists.map(({\n timelineStarts\n }) => timelineStarts);\n manifest.timelineStarts = getUniqueTimelineStarts(playlistTimelineStarts);\n addMediaSequenceValues(formattedPlaylists, manifest.timelineStarts);\n\n if (organizedAudioGroup) {\n manifest.mediaGroups.AUDIO.audio = organizedAudioGroup;\n }\n\n if (organizedVttGroup) {\n manifest.mediaGroups.SUBTITLES.subs = organizedVttGroup;\n }\n\n if (captions.length) {\n manifest.mediaGroups['CLOSED-CAPTIONS'].cc = organizeCaptionServices(captions);\n }\n\n if (previousManifest) {\n return positionManifestOnTimeline({\n oldManifest: previousManifest,\n newManifest: manifest\n });\n }\n\n return manifest;\n};\n\n/**\n * Calculates the R (repetition) value for a live stream (for the final segment\n * in a manifest where the r value is negative 1)\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {number} time\n * current time (typically the total time up until the final segment)\n * @param {number} duration\n * duration property for the given \n *\n * @return {number}\n * R value to reach the end of the given period\n */\nconst getLiveRValue = (attributes, time, duration) => {\n const {\n NOW,\n clientOffset,\n availabilityStartTime,\n timescale = 1,\n periodStart = 0,\n minimumUpdatePeriod = 0\n } = attributes;\n const now = (NOW + clientOffset) / 1000;\n const periodStartWC = availabilityStartTime + periodStart;\n const periodEndWC = now + minimumUpdatePeriod;\n const periodDuration = periodEndWC - periodStartWC;\n return Math.ceil((periodDuration * timescale - time) / duration);\n};\n/**\n * Uses information provided by SegmentTemplate.SegmentTimeline to determine segment\n * timing and duration\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n *\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\n\nconst parseByTimeline = (attributes, segmentTimeline) => {\n const {\n type,\n minimumUpdatePeriod = 0,\n media = '',\n sourceDuration,\n timescale = 1,\n startNumber = 1,\n periodStart: timeline\n } = attributes;\n const segments = [];\n let time = -1;\n\n for (let sIndex = 0; sIndex < segmentTimeline.length; sIndex++) {\n const S = segmentTimeline[sIndex];\n const duration = S.d;\n const repeat = S.r || 0;\n const segmentTime = S.t || 0;\n\n if (time < 0) {\n // first segment\n time = segmentTime;\n }\n\n if (segmentTime && segmentTime > time) {\n // discontinuity\n // TODO: How to handle this type of discontinuity\n // timeline++ here would treat it like HLS discontuity and content would\n // get appended without gap\n // E.G.\n // \n // \n // \n // \n // would have $Time$ values of [0, 1, 2, 5]\n // should this be appened at time positions [0, 1, 2, 3],(#EXT-X-DISCONTINUITY)\n // or [0, 1, 2, gap, gap, 5]? (#EXT-X-GAP)\n // does the value of sourceDuration consider this when calculating arbitrary\n // negative @r repeat value?\n // E.G. Same elements as above with this added at the end\n // \n // with a sourceDuration of 10\n // Would the 2 gaps be included in the time duration calculations resulting in\n // 8 segments with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9] or 10 segments\n // with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9, 10, 11] ?\n time = segmentTime;\n }\n\n let count;\n\n if (repeat < 0) {\n const nextS = sIndex + 1;\n\n if (nextS === segmentTimeline.length) {\n // last segment\n if (type === 'dynamic' && minimumUpdatePeriod > 0 && media.indexOf('$Number$') > 0) {\n count = getLiveRValue(attributes, time, duration);\n } else {\n // TODO: This may be incorrect depending on conclusion of TODO above\n count = (sourceDuration * timescale - time) / duration;\n }\n } else {\n count = (segmentTimeline[nextS].t - time) / duration;\n }\n } else {\n count = repeat + 1;\n }\n\n const end = startNumber + segments.length + count;\n let number = startNumber + segments.length;\n\n while (number < end) {\n segments.push({\n number,\n duration: duration / timescale,\n time,\n timeline\n });\n time += duration;\n number++;\n }\n }\n\n return segments;\n};\n\nconst identifierPattern = /\\$([A-z]*)(?:(%0)([0-9]+)d)?\\$/g;\n/**\n * Replaces template identifiers with corresponding values. To be used as the callback\n * for String.prototype.replace\n *\n * @name replaceCallback\n * @function\n * @param {string} match\n * Entire match of identifier\n * @param {string} identifier\n * Name of matched identifier\n * @param {string} format\n * Format tag string. Its presence indicates that padding is expected\n * @param {string} width\n * Desired length of the replaced value. Values less than this width shall be left\n * zero padded\n * @return {string}\n * Replacement for the matched identifier\n */\n\n/**\n * Returns a function to be used as a callback for String.prototype.replace to replace\n * template identifiers\n *\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {replaceCallback}\n * Callback to be used with String.prototype.replace to replace identifiers\n */\n\nconst identifierReplacement = values => (match, identifier, format, width) => {\n if (match === '$$') {\n // escape sequence\n return '$';\n }\n\n if (typeof values[identifier] === 'undefined') {\n return match;\n }\n\n const value = '' + values[identifier];\n\n if (identifier === 'RepresentationID') {\n // Format tag shall not be present with RepresentationID\n return value;\n }\n\n if (!format) {\n width = 1;\n } else {\n width = parseInt(width, 10);\n }\n\n if (value.length >= width) {\n return value;\n }\n\n return `${new Array(width - value.length + 1).join('0')}${value}`;\n};\n/**\n * Constructs a segment url from a template string\n *\n * @param {string} url\n * Template string to construct url from\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {string}\n * Segment url with identifiers replaced\n */\n\nconst constructTemplateUrl = (url, values) => url.replace(identifierPattern, identifierReplacement(values));\n/**\n * Generates a list of objects containing timing and duration information about each\n * segment needed to generate segment uris and the complete segment object\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nconst parseTemplateInfo = (attributes, segmentTimeline) => {\n if (!attributes.duration && !segmentTimeline) {\n // if neither @duration or SegmentTimeline are present, then there shall be exactly\n // one media segment\n return [{\n number: attributes.startNumber || 1,\n duration: attributes.sourceDuration,\n time: 0,\n timeline: attributes.periodStart\n }];\n }\n\n if (attributes.duration) {\n return parseByDuration(attributes);\n }\n\n return parseByTimeline(attributes, segmentTimeline);\n};\n/**\n * Generates a list of segments using information provided by the SegmentTemplate element\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object[]}\n * List of segment objects\n */\n\nconst segmentsFromTemplate = (attributes, segmentTimeline) => {\n const templateValues = {\n RepresentationID: attributes.id,\n Bandwidth: attributes.bandwidth || 0\n };\n const {\n initialization = {\n sourceURL: '',\n range: ''\n }\n } = attributes;\n const mapSegment = urlTypeToSegment({\n baseUrl: attributes.baseUrl,\n source: constructTemplateUrl(initialization.sourceURL, templateValues),\n range: initialization.range\n });\n const segments = parseTemplateInfo(attributes, segmentTimeline);\n return segments.map(segment => {\n templateValues.Number = segment.number;\n templateValues.Time = segment.time;\n const uri = constructTemplateUrl(attributes.media || '', templateValues); // See DASH spec section 5.3.9.2.2\n // - if timescale isn't present on any level, default to 1.\n\n const timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n const presentationTimeOffset = attributes.presentationTimeOffset || 0;\n const presentationTime = // Even if the @t attribute is not specified for the segment, segment.time is\n // calculated in mpd-parser prior to this, so it's assumed to be available.\n attributes.periodStart + (segment.time - presentationTimeOffset) / timescale;\n const map = {\n uri,\n timeline: segment.timeline,\n duration: segment.duration,\n resolvedUri: resolveUrl(attributes.baseUrl || '', uri),\n map: mapSegment,\n number: segment.number,\n presentationTime\n };\n return map;\n });\n};\n\n/**\n * Converts a (of type URLType from the DASH spec 5.3.9.2 Table 14)\n * to an object that matches the output of a segment in videojs/mpd-parser\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object} segmentUrl\n * node to translate into a segment object\n * @return {Object} translated segment object\n */\n\nconst SegmentURLToSegmentObject = (attributes, segmentUrl) => {\n const {\n baseUrl,\n initialization = {}\n } = attributes;\n const initSegment = urlTypeToSegment({\n baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n const segment = urlTypeToSegment({\n baseUrl,\n source: segmentUrl.media,\n range: segmentUrl.mediaRange\n });\n segment.map = initSegment;\n return segment;\n};\n/**\n * Generates a list of segments using information provided by the SegmentList element\n * SegmentList (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object.} list of segments\n */\n\n\nconst segmentsFromList = (attributes, segmentTimeline) => {\n const {\n duration,\n segmentUrls = [],\n periodStart\n } = attributes; // Per spec (5.3.9.2.1) no way to determine segment duration OR\n // if both SegmentTimeline and @duration are defined, it is outside of spec.\n\n if (!duration && !segmentTimeline || duration && segmentTimeline) {\n throw new Error(errors.SEGMENT_TIME_UNSPECIFIED);\n }\n\n const segmentUrlMap = segmentUrls.map(segmentUrlObject => SegmentURLToSegmentObject(attributes, segmentUrlObject));\n let segmentTimeInfo;\n\n if (duration) {\n segmentTimeInfo = parseByDuration(attributes);\n }\n\n if (segmentTimeline) {\n segmentTimeInfo = parseByTimeline(attributes, segmentTimeline);\n }\n\n const segments = segmentTimeInfo.map((segmentTime, index) => {\n if (segmentUrlMap[index]) {\n const segment = segmentUrlMap[index]; // See DASH spec section 5.3.9.2.2\n // - if timescale isn't present on any level, default to 1.\n\n const timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n const presentationTimeOffset = attributes.presentationTimeOffset || 0;\n segment.timeline = segmentTime.timeline;\n segment.duration = segmentTime.duration;\n segment.number = segmentTime.number;\n segment.presentationTime = periodStart + (segmentTime.time - presentationTimeOffset) / timescale;\n return segment;\n } // Since we're mapping we should get rid of any blank segments (in case\n // the given SegmentTimeline is handling for more elements than we have\n // SegmentURLs for).\n\n }).filter(segment => segment);\n return segments;\n};\n\nconst generateSegments = ({\n attributes,\n segmentInfo\n}) => {\n let segmentAttributes;\n let segmentsFn;\n\n if (segmentInfo.template) {\n segmentsFn = segmentsFromTemplate;\n segmentAttributes = merge(attributes, segmentInfo.template);\n } else if (segmentInfo.base) {\n segmentsFn = segmentsFromBase;\n segmentAttributes = merge(attributes, segmentInfo.base);\n } else if (segmentInfo.list) {\n segmentsFn = segmentsFromList;\n segmentAttributes = merge(attributes, segmentInfo.list);\n }\n\n const segmentsInfo = {\n attributes\n };\n\n if (!segmentsFn) {\n return segmentsInfo;\n }\n\n const segments = segmentsFn(segmentAttributes, segmentInfo.segmentTimeline); // The @duration attribute will be used to determin the playlist's targetDuration which\n // must be in seconds. Since we've generated the segment list, we no longer need\n // @duration to be in @timescale units, so we can convert it here.\n\n if (segmentAttributes.duration) {\n const {\n duration,\n timescale = 1\n } = segmentAttributes;\n segmentAttributes.duration = duration / timescale;\n } else if (segments.length) {\n // if there is no @duration attribute, use the largest segment duration as\n // as target duration\n segmentAttributes.duration = segments.reduce((max, segment) => {\n return Math.max(max, Math.ceil(segment.duration));\n }, 0);\n } else {\n segmentAttributes.duration = 0;\n }\n\n segmentsInfo.attributes = segmentAttributes;\n segmentsInfo.segments = segments; // This is a sidx box without actual segment information\n\n if (segmentInfo.base && segmentAttributes.indexRange) {\n segmentsInfo.sidx = segments[0];\n segmentsInfo.segments = [];\n }\n\n return segmentsInfo;\n};\nconst toPlaylists = representations => representations.map(generateSegments);\n\nconst findChildren = (element, name) => from(element.childNodes).filter(({\n tagName\n}) => tagName === name);\nconst getContent = element => element.textContent.trim();\n\n/**\n * Converts the provided string that may contain a division operation to a number.\n *\n * @param {string} value - the provided string value\n *\n * @return {number} the parsed string value\n */\nconst parseDivisionValue = value => {\n return parseFloat(value.split('/').reduce((prev, current) => prev / current));\n};\n\nconst parseDuration = str => {\n const SECONDS_IN_YEAR = 365 * 24 * 60 * 60;\n const SECONDS_IN_MONTH = 30 * 24 * 60 * 60;\n const SECONDS_IN_DAY = 24 * 60 * 60;\n const SECONDS_IN_HOUR = 60 * 60;\n const SECONDS_IN_MIN = 60; // P10Y10M10DT10H10M10.1S\n\n const durationRegex = /P(?:(\\d*)Y)?(?:(\\d*)M)?(?:(\\d*)D)?(?:T(?:(\\d*)H)?(?:(\\d*)M)?(?:([\\d.]*)S)?)?/;\n const match = durationRegex.exec(str);\n\n if (!match) {\n return 0;\n }\n\n const [year, month, day, hour, minute, second] = match.slice(1);\n return parseFloat(year || 0) * SECONDS_IN_YEAR + parseFloat(month || 0) * SECONDS_IN_MONTH + parseFloat(day || 0) * SECONDS_IN_DAY + parseFloat(hour || 0) * SECONDS_IN_HOUR + parseFloat(minute || 0) * SECONDS_IN_MIN + parseFloat(second || 0);\n};\nconst parseDate = str => {\n // Date format without timezone according to ISO 8601\n // YYY-MM-DDThh:mm:ss.ssssss\n const dateRegex = /^\\d+-\\d+-\\d+T\\d+:\\d+:\\d+(\\.\\d+)?$/; // If the date string does not specifiy a timezone, we must specifiy UTC. This is\n // expressed by ending with 'Z'\n\n if (dateRegex.test(str)) {\n str += 'Z';\n }\n\n return Date.parse(str);\n};\n\nconst parsers = {\n /**\n * Specifies the duration of the entire Media Presentation. Format is a duration string\n * as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n mediaPresentationDuration(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the Segment availability start time for all Segments referred to in this\n * MPD. For a dynamic manifest, it specifies the anchor for the earliest availability\n * time. Format is a date string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The date as seconds from unix epoch\n */\n availabilityStartTime(value) {\n return parseDate(value) / 1000;\n },\n\n /**\n * Specifies the smallest period between potential changes to the MPD. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n minimumUpdatePeriod(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the suggested presentation delay. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n suggestedPresentationDelay(value) {\n return parseDuration(value);\n },\n\n /**\n * specifices the type of mpd. Can be either \"static\" or \"dynamic\"\n *\n * @param {string} value\n * value of attribute as a string\n *\n * @return {string}\n * The type as a string\n */\n type(value) {\n return value;\n },\n\n /**\n * Specifies the duration of the smallest time shifting buffer for any Representation\n * in the MPD. Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n timeShiftBufferDepth(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the PeriodStart time of the Period relative to the availabilityStarttime.\n * Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n start(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the width of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed width\n */\n width(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the height of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed height\n */\n height(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the bitrate of the representation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed bandwidth\n */\n bandwidth(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the frame rate of the representation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed frame rate\n */\n frameRate(value) {\n return parseDivisionValue(value);\n },\n\n /**\n * Specifies the number of the first Media Segment in this Representation in the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n startNumber(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the timescale in units per seconds\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed timescale\n */\n timescale(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the presentationTimeOffset.\n *\n * @param {string} value\n * value of the attribute as a string\n *\n * @return {number}\n * The parsed presentationTimeOffset\n */\n presentationTimeOffset(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the constant approximate Segment duration\n * NOTE: The element also contains an @duration attribute. This duration\n * specifies the duration of the Period. This attribute is currently not\n * supported by the rest of the parser, however we still check for it to prevent\n * errors.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n duration(value) {\n const parsedValue = parseInt(value, 10);\n\n if (isNaN(parsedValue)) {\n return parseDuration(value);\n }\n\n return parsedValue;\n },\n\n /**\n * Specifies the Segment duration, in units of the value of the @timescale.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n d(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the MPD start time, in @timescale units, the first Segment in the series\n * starts relative to the beginning of the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed time\n */\n t(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the repeat count of the number of following contiguous Segments with the\n * same duration expressed by the value of @d\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n r(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the presentationTime.\n *\n * @param {string} value\n * value of the attribute as a string\n *\n * @return {number}\n * The parsed presentationTime\n */\n presentationTime(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Default parser for all other attributes. Acts as a no-op and just returns the value\n * as a string\n *\n * @param {string} value\n * value of attribute as a string\n * @return {string}\n * Unparsed value\n */\n DEFAULT(value) {\n return value;\n }\n\n};\n/**\n * Gets all the attributes and values of the provided node, parses attributes with known\n * types, and returns an object with attribute names mapped to values.\n *\n * @param {Node} el\n * The node to parse attributes from\n * @return {Object}\n * Object with all attributes of el parsed\n */\n\nconst parseAttributes = el => {\n if (!(el && el.attributes)) {\n return {};\n }\n\n return from(el.attributes).reduce((a, e) => {\n const parseFn = parsers[e.name] || parsers.DEFAULT;\n a[e.name] = parseFn(e.value);\n return a;\n }, {});\n};\n\nconst keySystemsMap = {\n 'urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b': 'org.w3.clearkey',\n 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed': 'com.widevine.alpha',\n 'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95': 'com.microsoft.playready',\n 'urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb': 'com.adobe.primetime',\n // ISO_IEC 23009-1_2022 5.8.5.2.2 The mp4 Protection Scheme\n 'urn:mpeg:dash:mp4protection:2011': 'mp4protection'\n};\n/**\n * Builds a list of urls that is the product of the reference urls and BaseURL values\n *\n * @param {Object[]} references\n * List of objects containing the reference URL as well as its attributes\n * @param {Node[]} baseUrlElements\n * List of BaseURL nodes from the mpd\n * @return {Object[]}\n * List of objects with resolved urls and attributes\n */\n\nconst buildBaseUrls = (references, baseUrlElements) => {\n if (!baseUrlElements.length) {\n return references;\n }\n\n return flatten(references.map(function (reference) {\n return baseUrlElements.map(function (baseUrlElement) {\n const initialBaseUrl = getContent(baseUrlElement);\n const resolvedBaseUrl = resolveUrl(reference.baseUrl, initialBaseUrl);\n const finalBaseUrl = merge(parseAttributes(baseUrlElement), {\n baseUrl: resolvedBaseUrl\n }); // If the URL is resolved, we want to get the serviceLocation from the reference\n // assuming there is no serviceLocation on the initialBaseUrl\n\n if (resolvedBaseUrl !== initialBaseUrl && !finalBaseUrl.serviceLocation && reference.serviceLocation) {\n finalBaseUrl.serviceLocation = reference.serviceLocation;\n }\n\n return finalBaseUrl;\n });\n }));\n};\n/**\n * Contains all Segment information for its containing AdaptationSet\n *\n * @typedef {Object} SegmentInformation\n * @property {Object|undefined} template\n * Contains the attributes for the SegmentTemplate node\n * @property {Object[]|undefined} segmentTimeline\n * Contains a list of atrributes for each S node within the SegmentTimeline node\n * @property {Object|undefined} list\n * Contains the attributes for the SegmentList node\n * @property {Object|undefined} base\n * Contains the attributes for the SegmentBase node\n */\n\n/**\n * Returns all available Segment information contained within the AdaptationSet node\n *\n * @param {Node} adaptationSet\n * The AdaptationSet node to get Segment information from\n * @return {SegmentInformation}\n * The Segment information contained within the provided AdaptationSet\n */\n\nconst getSegmentInformation = adaptationSet => {\n const segmentTemplate = findChildren(adaptationSet, 'SegmentTemplate')[0];\n const segmentList = findChildren(adaptationSet, 'SegmentList')[0];\n const segmentUrls = segmentList && findChildren(segmentList, 'SegmentURL').map(s => merge({\n tag: 'SegmentURL'\n }, parseAttributes(s)));\n const segmentBase = findChildren(adaptationSet, 'SegmentBase')[0];\n const segmentTimelineParentNode = segmentList || segmentTemplate;\n const segmentTimeline = segmentTimelineParentNode && findChildren(segmentTimelineParentNode, 'SegmentTimeline')[0];\n const segmentInitializationParentNode = segmentList || segmentBase || segmentTemplate;\n const segmentInitialization = segmentInitializationParentNode && findChildren(segmentInitializationParentNode, 'Initialization')[0]; // SegmentTemplate is handled slightly differently, since it can have both\n // @initialization and an node. @initialization can be templated,\n // while the node can have a url and range specified. If the has\n // both @initialization and an subelement we opt to override with\n // the node, as this interaction is not defined in the spec.\n\n const template = segmentTemplate && parseAttributes(segmentTemplate);\n\n if (template && segmentInitialization) {\n template.initialization = segmentInitialization && parseAttributes(segmentInitialization);\n } else if (template && template.initialization) {\n // If it is @initialization we convert it to an object since this is the format that\n // later functions will rely on for the initialization segment. This is only valid\n // for \n template.initialization = {\n sourceURL: template.initialization\n };\n }\n\n const segmentInfo = {\n template,\n segmentTimeline: segmentTimeline && findChildren(segmentTimeline, 'S').map(s => parseAttributes(s)),\n list: segmentList && merge(parseAttributes(segmentList), {\n segmentUrls,\n initialization: parseAttributes(segmentInitialization)\n }),\n base: segmentBase && merge(parseAttributes(segmentBase), {\n initialization: parseAttributes(segmentInitialization)\n })\n };\n Object.keys(segmentInfo).forEach(key => {\n if (!segmentInfo[key]) {\n delete segmentInfo[key];\n }\n });\n return segmentInfo;\n};\n/**\n * Contains Segment information and attributes needed to construct a Playlist object\n * from a Representation\n *\n * @typedef {Object} RepresentationInformation\n * @property {SegmentInformation} segmentInfo\n * Segment information for this Representation\n * @property {Object} attributes\n * Inherited attributes for this Representation\n */\n\n/**\n * Maps a Representation node to an object containing Segment information and attributes\n *\n * @name inheritBaseUrlsCallback\n * @function\n * @param {Node} representation\n * Representation node from the mpd\n * @return {RepresentationInformation}\n * Representation information needed to construct a Playlist object\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Representation nodes to\n * Segment information and attributes using inherited BaseURL nodes.\n *\n * @param {Object} adaptationSetAttributes\n * Contains attributes inherited by the AdaptationSet\n * @param {Object[]} adaptationSetBaseUrls\n * List of objects containing resolved base URLs and attributes\n * inherited by the AdaptationSet\n * @param {SegmentInformation} adaptationSetSegmentInfo\n * Contains Segment information for the AdaptationSet\n * @return {inheritBaseUrlsCallback}\n * Callback map function\n */\n\nconst inheritBaseUrls = (adaptationSetAttributes, adaptationSetBaseUrls, adaptationSetSegmentInfo) => representation => {\n const repBaseUrlElements = findChildren(representation, 'BaseURL');\n const repBaseUrls = buildBaseUrls(adaptationSetBaseUrls, repBaseUrlElements);\n const attributes = merge(adaptationSetAttributes, parseAttributes(representation));\n const representationSegmentInfo = getSegmentInformation(representation);\n return repBaseUrls.map(baseUrl => {\n return {\n segmentInfo: merge(adaptationSetSegmentInfo, representationSegmentInfo),\n attributes: merge(attributes, baseUrl)\n };\n });\n};\n/**\n * Tranforms a series of content protection nodes to\n * an object containing pssh data by key system\n *\n * @param {Node[]} contentProtectionNodes\n * Content protection nodes\n * @return {Object}\n * Object containing pssh data by key system\n */\n\nconst generateKeySystemInformation = contentProtectionNodes => {\n return contentProtectionNodes.reduce((acc, node) => {\n const attributes = parseAttributes(node); // Although it could be argued that according to the UUID RFC spec the UUID string (a-f chars) should be generated\n // as a lowercase string it also mentions it should be treated as case-insensitive on input. Since the key system\n // UUIDs in the keySystemsMap are hardcoded as lowercase in the codebase there isn't any reason not to do\n // .toLowerCase() on the input UUID string from the manifest (at least I could not think of one).\n\n if (attributes.schemeIdUri) {\n attributes.schemeIdUri = attributes.schemeIdUri.toLowerCase();\n }\n\n const keySystem = keySystemsMap[attributes.schemeIdUri];\n\n if (keySystem) {\n acc[keySystem] = {\n attributes\n };\n const psshNode = findChildren(node, 'cenc:pssh')[0];\n\n if (psshNode) {\n const pssh = getContent(psshNode);\n acc[keySystem].pssh = pssh && decodeB64ToUint8Array(pssh);\n }\n }\n\n return acc;\n }, {});\n}; // defined in ANSI_SCTE 214-1 2016\n\n\nconst parseCaptionServiceMetadata = service => {\n // 608 captions\n if (service.schemeIdUri === 'urn:scte:dash:cc:cea-608:2015') {\n const values = typeof service.value !== 'string' ? [] : service.value.split(';');\n return values.map(value => {\n let channel;\n let language; // default language to value\n\n language = value;\n\n if (/^CC\\d=/.test(value)) {\n [channel, language] = value.split('=');\n } else if (/^CC\\d$/.test(value)) {\n channel = value;\n }\n\n return {\n channel,\n language\n };\n });\n } else if (service.schemeIdUri === 'urn:scte:dash:cc:cea-708:2015') {\n const values = typeof service.value !== 'string' ? [] : service.value.split(';');\n return values.map(value => {\n const flags = {\n // service or channel number 1-63\n 'channel': undefined,\n // language is a 3ALPHA per ISO 639.2/B\n // field is required\n 'language': undefined,\n // BIT 1/0 or ?\n // default value is 1, meaning 16:9 aspect ratio, 0 is 4:3, ? is unknown\n 'aspectRatio': 1,\n // BIT 1/0\n // easy reader flag indicated the text is tailed to the needs of beginning readers\n // default 0, or off\n 'easyReader': 0,\n // BIT 1/0\n // If 3d metadata is present (CEA-708.1) then 1\n // default 0\n '3D': 0\n };\n\n if (/=/.test(value)) {\n const [channel, opts = ''] = value.split('=');\n flags.channel = channel;\n flags.language = value;\n opts.split(',').forEach(opt => {\n const [name, val] = opt.split(':');\n\n if (name === 'lang') {\n flags.language = val; // er for easyReadery\n } else if (name === 'er') {\n flags.easyReader = Number(val); // war for wide aspect ratio\n } else if (name === 'war') {\n flags.aspectRatio = Number(val);\n } else if (name === '3D') {\n flags['3D'] = Number(val);\n }\n });\n } else {\n flags.language = value;\n }\n\n if (flags.channel) {\n flags.channel = 'SERVICE' + flags.channel;\n }\n\n return flags;\n });\n }\n};\n/**\n * A map callback that will parse all event stream data for a collection of periods\n * DASH ISO_IEC_23009 5.10.2.2\n * https://dashif-documents.azurewebsites.net/Events/master/event.html#mpd-event-timing\n *\n * @param {PeriodInformation} period object containing necessary period information\n * @return a collection of parsed eventstream event objects\n */\n\nconst toEventStream = period => {\n // get and flatten all EventStreams tags and parse attributes and children\n return flatten(findChildren(period.node, 'EventStream').map(eventStream => {\n const eventStreamAttributes = parseAttributes(eventStream);\n const schemeIdUri = eventStreamAttributes.schemeIdUri; // find all Events per EventStream tag and map to return objects\n\n return findChildren(eventStream, 'Event').map(event => {\n const eventAttributes = parseAttributes(event);\n const presentationTime = eventAttributes.presentationTime || 0;\n const timescale = eventStreamAttributes.timescale || 1;\n const duration = eventAttributes.duration || 0;\n const start = presentationTime / timescale + period.attributes.start;\n return {\n schemeIdUri,\n value: eventStreamAttributes.value,\n id: eventAttributes.id,\n start,\n end: start + duration / timescale,\n messageData: getContent(event) || eventAttributes.messageData,\n contentEncoding: eventStreamAttributes.contentEncoding,\n presentationTimeOffset: eventStreamAttributes.presentationTimeOffset || 0\n };\n });\n }));\n};\n/**\n * Maps an AdaptationSet node to a list of Representation information objects\n *\n * @name toRepresentationsCallback\n * @function\n * @param {Node} adaptationSet\n * AdaptationSet node from the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping AdaptationSet nodes to a list of\n * Representation information objects\n *\n * @param {Object} periodAttributes\n * Contains attributes inherited by the Period\n * @param {Object[]} periodBaseUrls\n * Contains list of objects with resolved base urls and attributes\n * inherited by the Period\n * @param {string[]} periodSegmentInfo\n * Contains Segment Information at the period level\n * @return {toRepresentationsCallback}\n * Callback map function\n */\n\nconst toRepresentations = (periodAttributes, periodBaseUrls, periodSegmentInfo) => adaptationSet => {\n const adaptationSetAttributes = parseAttributes(adaptationSet);\n const adaptationSetBaseUrls = buildBaseUrls(periodBaseUrls, findChildren(adaptationSet, 'BaseURL'));\n const role = findChildren(adaptationSet, 'Role')[0];\n const roleAttributes = {\n role: parseAttributes(role)\n };\n let attrs = merge(periodAttributes, adaptationSetAttributes, roleAttributes);\n const accessibility = findChildren(adaptationSet, 'Accessibility')[0];\n const captionServices = parseCaptionServiceMetadata(parseAttributes(accessibility));\n\n if (captionServices) {\n attrs = merge(attrs, {\n captionServices\n });\n }\n\n const label = findChildren(adaptationSet, 'Label')[0];\n\n if (label && label.childNodes.length) {\n const labelVal = label.childNodes[0].nodeValue.trim();\n attrs = merge(attrs, {\n label: labelVal\n });\n }\n\n const contentProtection = generateKeySystemInformation(findChildren(adaptationSet, 'ContentProtection'));\n\n if (Object.keys(contentProtection).length) {\n attrs = merge(attrs, {\n contentProtection\n });\n }\n\n const segmentInfo = getSegmentInformation(adaptationSet);\n const representations = findChildren(adaptationSet, 'Representation');\n const adaptationSetSegmentInfo = merge(periodSegmentInfo, segmentInfo);\n return flatten(representations.map(inheritBaseUrls(attrs, adaptationSetBaseUrls, adaptationSetSegmentInfo)));\n};\n/**\n * Contains all period information for mapping nodes onto adaptation sets.\n *\n * @typedef {Object} PeriodInformation\n * @property {Node} period.node\n * Period node from the mpd\n * @property {Object} period.attributes\n * Parsed period attributes from node plus any added\n */\n\n/**\n * Maps a PeriodInformation object to a list of Representation information objects for all\n * AdaptationSet nodes contained within the Period.\n *\n * @name toAdaptationSetsCallback\n * @function\n * @param {PeriodInformation} period\n * Period object containing necessary period information\n * @param {number} periodStart\n * Start time of the Period within the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Period nodes to a list of\n * Representation information objects\n *\n * @param {Object} mpdAttributes\n * Contains attributes inherited by the mpd\n * @param {Object[]} mpdBaseUrls\n * Contains list of objects with resolved base urls and attributes\n * inherited by the mpd\n * @return {toAdaptationSetsCallback}\n * Callback map function\n */\n\nconst toAdaptationSets = (mpdAttributes, mpdBaseUrls) => (period, index) => {\n const periodBaseUrls = buildBaseUrls(mpdBaseUrls, findChildren(period.node, 'BaseURL'));\n const periodAttributes = merge(mpdAttributes, {\n periodStart: period.attributes.start\n });\n\n if (typeof period.attributes.duration === 'number') {\n periodAttributes.periodDuration = period.attributes.duration;\n }\n\n const adaptationSets = findChildren(period.node, 'AdaptationSet');\n const periodSegmentInfo = getSegmentInformation(period.node);\n return flatten(adaptationSets.map(toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo)));\n};\n/**\n * Tranforms an array of content steering nodes into an object\n * containing CDN content steering information from the MPD manifest.\n *\n * For more information on the DASH spec for Content Steering parsing, see:\n * https://dashif.org/docs/DASH-IF-CTS-00XX-Content-Steering-Community-Review.pdf\n *\n * @param {Node[]} contentSteeringNodes\n * Content steering nodes\n * @param {Function} eventHandler\n * The event handler passed into the parser options to handle warnings\n * @return {Object}\n * Object containing content steering data\n */\n\nconst generateContentSteeringInformation = (contentSteeringNodes, eventHandler) => {\n // If there are more than one ContentSteering tags, throw an error\n if (contentSteeringNodes.length > 1) {\n eventHandler({\n type: 'warn',\n message: 'The MPD manifest should contain no more than one ContentSteering tag'\n });\n } // Return a null value if there are no ContentSteering tags\n\n\n if (!contentSteeringNodes.length) {\n return null;\n }\n\n const infoFromContentSteeringTag = merge({\n serverURL: getContent(contentSteeringNodes[0])\n }, parseAttributes(contentSteeringNodes[0])); // Converts `queryBeforeStart` to a boolean, as well as setting the default value\n // to `false` if it doesn't exist\n\n infoFromContentSteeringTag.queryBeforeStart = infoFromContentSteeringTag.queryBeforeStart === 'true';\n return infoFromContentSteeringTag;\n};\n/**\n * Gets Period@start property for a given period.\n *\n * @param {Object} options\n * Options object\n * @param {Object} options.attributes\n * Period attributes\n * @param {Object} [options.priorPeriodAttributes]\n * Prior period attributes (if prior period is available)\n * @param {string} options.mpdType\n * The MPD@type these periods came from\n * @return {number|null}\n * The period start, or null if it's an early available period or error\n */\n\nconst getPeriodStart = ({\n attributes,\n priorPeriodAttributes,\n mpdType\n}) => {\n // Summary of period start time calculation from DASH spec section 5.3.2.1\n //\n // A period's start is the first period's start + time elapsed after playing all\n // prior periods to this one. Periods continue one after the other in time (without\n // gaps) until the end of the presentation.\n //\n // The value of Period@start should be:\n // 1. if Period@start is present: value of Period@start\n // 2. if previous period exists and it has @duration: previous Period@start +\n // previous Period@duration\n // 3. if this is first period and MPD@type is 'static': 0\n // 4. in all other cases, consider the period an \"early available period\" (note: not\n // currently supported)\n // (1)\n if (typeof attributes.start === 'number') {\n return attributes.start;\n } // (2)\n\n\n if (priorPeriodAttributes && typeof priorPeriodAttributes.start === 'number' && typeof priorPeriodAttributes.duration === 'number') {\n return priorPeriodAttributes.start + priorPeriodAttributes.duration;\n } // (3)\n\n\n if (!priorPeriodAttributes && mpdType === 'static') {\n return 0;\n } // (4)\n // There is currently no logic for calculating the Period@start value if there is\n // no Period@start or prior Period@start and Period@duration available. This is not made\n // explicit by the DASH interop guidelines or the DASH spec, however, since there's\n // nothing about any other resolution strategies, it's implied. Thus, this case should\n // be considered an early available period, or error, and null should suffice for both\n // of those cases.\n\n\n return null;\n};\n/**\n * Traverses the mpd xml tree to generate a list of Representation information objects\n * that have inherited attributes from parent nodes\n *\n * @param {Node} mpd\n * The root node of the mpd\n * @param {Object} options\n * Available options for inheritAttributes\n * @param {string} options.manifestUri\n * The uri source of the mpd\n * @param {number} options.NOW\n * Current time per DASH IOP. Default is current time in ms since epoch\n * @param {number} options.clientOffset\n * Client time difference from NOW (in milliseconds)\n * @return {RepresentationInformation[]}\n * List of objects containing Representation information\n */\n\nconst inheritAttributes = (mpd, options = {}) => {\n const {\n manifestUri = '',\n NOW = Date.now(),\n clientOffset = 0,\n // TODO: For now, we are expecting an eventHandler callback function\n // to be passed into the mpd parser as an option.\n // In the future, we should enable stream parsing by using the Stream class from vhs-utils.\n // This will support new features including a standardized event handler.\n // See the m3u8 parser for examples of how stream parsing is currently used for HLS parsing.\n // https://github.com/videojs/vhs-utils/blob/88d6e10c631e57a5af02c5a62bc7376cd456b4f5/src/stream.js#L9\n eventHandler = function () {}\n } = options;\n const periodNodes = findChildren(mpd, 'Period');\n\n if (!periodNodes.length) {\n throw new Error(errors.INVALID_NUMBER_OF_PERIOD);\n }\n\n const locations = findChildren(mpd, 'Location');\n const mpdAttributes = parseAttributes(mpd);\n const mpdBaseUrls = buildBaseUrls([{\n baseUrl: manifestUri\n }], findChildren(mpd, 'BaseURL'));\n const contentSteeringNodes = findChildren(mpd, 'ContentSteering'); // See DASH spec section 5.3.1.2, Semantics of MPD element. Default type to 'static'.\n\n mpdAttributes.type = mpdAttributes.type || 'static';\n mpdAttributes.sourceDuration = mpdAttributes.mediaPresentationDuration || 0;\n mpdAttributes.NOW = NOW;\n mpdAttributes.clientOffset = clientOffset;\n\n if (locations.length) {\n mpdAttributes.locations = locations.map(getContent);\n }\n\n const periods = []; // Since toAdaptationSets acts on individual periods right now, the simplest approach to\n // adding properties that require looking at prior periods is to parse attributes and add\n // missing ones before toAdaptationSets is called. If more such properties are added, it\n // may be better to refactor toAdaptationSets.\n\n periodNodes.forEach((node, index) => {\n const attributes = parseAttributes(node); // Use the last modified prior period, as it may contain added information necessary\n // for this period.\n\n const priorPeriod = periods[index - 1];\n attributes.start = getPeriodStart({\n attributes,\n priorPeriodAttributes: priorPeriod ? priorPeriod.attributes : null,\n mpdType: mpdAttributes.type\n });\n periods.push({\n node,\n attributes\n });\n });\n return {\n locations: mpdAttributes.locations,\n contentSteeringInfo: generateContentSteeringInformation(contentSteeringNodes, eventHandler),\n // TODO: There are occurences where this `representationInfo` array contains undesired\n // duplicates. This generally occurs when there are multiple BaseURL nodes that are\n // direct children of the MPD node. When we attempt to resolve URLs from a combination of the\n // parent BaseURL and a child BaseURL, and the value does not resolve,\n // we end up returning the child BaseURL multiple times.\n // We need to determine a way to remove these duplicates in a safe way.\n // See: https://github.com/videojs/mpd-parser/pull/17#discussion_r162750527\n representationInfo: flatten(periods.map(toAdaptationSets(mpdAttributes, mpdBaseUrls))),\n eventStream: flatten(periods.map(toEventStream))\n };\n};\n\nconst stringToMpdXml = manifestString => {\n if (manifestString === '') {\n throw new Error(errors.DASH_EMPTY_MANIFEST);\n }\n\n const parser = new DOMParser();\n let xml;\n let mpd;\n\n try {\n xml = parser.parseFromString(manifestString, 'application/xml');\n mpd = xml && xml.documentElement.tagName === 'MPD' ? xml.documentElement : null;\n } catch (e) {// ie 11 throws on invalid xml\n }\n\n if (!mpd || mpd && mpd.getElementsByTagName('parsererror').length > 0) {\n throw new Error(errors.DASH_INVALID_XML);\n }\n\n return mpd;\n};\n\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} mpd\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\nconst parseUTCTimingScheme = mpd => {\n const UTCTimingNode = findChildren(mpd, 'UTCTiming')[0];\n\n if (!UTCTimingNode) {\n return null;\n }\n\n const attributes = parseAttributes(UTCTimingNode);\n\n switch (attributes.schemeIdUri) {\n case 'urn:mpeg:dash:utc:http-head:2014':\n case 'urn:mpeg:dash:utc:http-head:2012':\n attributes.method = 'HEAD';\n break;\n\n case 'urn:mpeg:dash:utc:http-xsdate:2014':\n case 'urn:mpeg:dash:utc:http-iso:2014':\n case 'urn:mpeg:dash:utc:http-xsdate:2012':\n case 'urn:mpeg:dash:utc:http-iso:2012':\n attributes.method = 'GET';\n break;\n\n case 'urn:mpeg:dash:utc:direct:2014':\n case 'urn:mpeg:dash:utc:direct:2012':\n attributes.method = 'DIRECT';\n attributes.value = Date.parse(attributes.value);\n break;\n\n case 'urn:mpeg:dash:utc:http-ntp:2014':\n case 'urn:mpeg:dash:utc:ntp:2014':\n case 'urn:mpeg:dash:utc:sntp:2014':\n default:\n throw new Error(errors.UNSUPPORTED_UTC_TIMING_SCHEME);\n }\n\n return attributes;\n};\n\nconst VERSION = version;\n/*\n * Given a DASH manifest string and options, parses the DASH manifest into an object in the\n * form outputed by m3u8-parser and accepted by videojs/http-streaming.\n *\n * For live DASH manifests, if `previousManifest` is provided in options, then the newly\n * parsed DASH manifest will have its media sequence and discontinuity sequence values\n * updated to reflect its position relative to the prior manifest.\n *\n * @param {string} manifestString - the DASH manifest as a string\n * @param {options} [options] - any options\n *\n * @return {Object} the manifest object\n */\n\nconst parse = (manifestString, options = {}) => {\n const parsedManifestInfo = inheritAttributes(stringToMpdXml(manifestString), options);\n const playlists = toPlaylists(parsedManifestInfo.representationInfo);\n return toM3u8({\n dashPlaylists: playlists,\n locations: parsedManifestInfo.locations,\n contentSteering: parsedManifestInfo.contentSteeringInfo,\n sidxMapping: options.sidxMapping,\n previousManifest: options.previousManifest,\n eventStream: parsedManifestInfo.eventStream\n });\n};\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} manifestString\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\n\nconst parseUTCTiming = manifestString => parseUTCTimingScheme(stringToMpdXml(manifestString));\n\nexport { VERSION, addSidxSegmentsToPlaylist$1 as addSidxSegmentsToPlaylist, generateSidxKey, inheritAttributes, parse, parseUTCTiming, stringToMpdXml, toM3u8, toPlaylists };\n","'use strict'\n\n/**\n * Ponyfill for `Array.prototype.find` which is only available in ES6 runtimes.\n *\n * Works with anything that has a `length` property and index access properties, including NodeList.\n *\n * @template {unknown} T\n * @param {Array | ({length:number, [number]: T})} list\n * @param {function (item: T, index: number, list:Array | ({length:number, [number]: T})):boolean} predicate\n * @param {Partial>?} ac `Array.prototype` by default,\n * \t\t\t\tallows injecting a custom implementation in tests\n * @returns {T | undefined}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * @see https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find\n */\nfunction find(list, predicate, ac) {\n\tif (ac === undefined) {\n\t\tac = Array.prototype;\n\t}\n\tif (list && typeof ac.find === 'function') {\n\t\treturn ac.find.call(list, predicate);\n\t}\n\tfor (var i = 0; i < list.length; i++) {\n\t\tif (Object.prototype.hasOwnProperty.call(list, i)) {\n\t\t\tvar item = list[i];\n\t\t\tif (predicate.call(undefined, item, i, list)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * @template T\n * @param {T} object the object to freeze\n * @param {Pick = Object} oc `Object` by default,\n * \t\t\t\tallows to inject custom object constructor for tests\n * @returns {Readonly}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\n}\n\n/**\n * Since we can not rely on `Object.assign` we provide a simplified version\n * that is sufficient for our needs.\n *\n * @param {Object} target\n * @param {Object | null | undefined} source\n *\n * @returns {Object} target\n * @throws TypeError if target is not an object\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n * @see https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.assign\n */\nfunction assign(target, source) {\n\tif (target === null || typeof target !== 'object') {\n\t\tthrow new TypeError('target is not an object')\n\t}\n\tfor (var key in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\ttarget[key] = source[key]\n\t\t}\n\t}\n\treturn target\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\n * @see DOMParser.prototype.parseFromString\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see DOMParser.SupportedType.isHTML\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * Helper method to check a mime type if it indicates an HTML document\n\t *\n\t * @param {string} [value]\n\t * @returns {boolean}\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \t */\n\tisHTML: function (value) {\n\t\treturn value === MIME_TYPE.HTML\n\t},\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/html`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n})\n\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * Checks if `uri` equals `NAMESPACE.HTML`.\n\t *\n\t * @param {string} [uri]\n\t *\n\t * @see NAMESPACE.HTML\n\t */\n\tisHTML: function (uri) {\n\t\treturn uri === NAMESPACE.HTML\n\t},\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n})\n\nexports.assign = assign;\nexports.find = find;\nexports.freeze = freeze;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n","var MPEGURL_REGEX = /^(audio|video|application)\\/(x-|vnd\\.apple\\.)?mpegurl/i;\nvar DASH_REGEX = /^application\\/dash\\+xml/i;\n/**\n * Returns a string that describes the type of source based on a video source object's\n * media type.\n *\n * @see {@link https://dev.w3.org/html5/pf-summary/video.html#dom-source-type|Source Type}\n *\n * @param {string} type\n * Video source object media type\n * @return {('hls'|'dash'|'vhs-json'|null)}\n * VHS source type string\n */\n\nexport var simpleTypeFromSourceType = function simpleTypeFromSourceType(type) {\n if (MPEGURL_REGEX.test(type)) {\n return 'hls';\n }\n\n if (DASH_REGEX.test(type)) {\n return 'dash';\n } // Denotes the special case of a manifest object passed to http-streaming instead of a\n // source URL.\n //\n // See https://en.wikipedia.org/wiki/Media_type for details on specifying media types.\n //\n // In this case, vnd stands for vendor, video.js for the organization, VHS for this\n // project, and the +json suffix identifies the structure of the media type.\n\n\n if (type === 'application/vnd.videojs.vhs+json') {\n return 'vhs-json';\n }\n\n return null;\n};","\"use strict\";\n\nvar window = require('global/window');\n\nvar httpResponseHandler = function httpResponseHandler(callback, decodeResponseBody) {\n if (decodeResponseBody === void 0) {\n decodeResponseBody = false;\n }\n\n return function (err, response, responseBody) {\n // if the XHR failed, return that error\n if (err) {\n callback(err);\n return;\n } // if the HTTP status code is 4xx or 5xx, the request also failed\n\n\n if (response.statusCode >= 400 && response.statusCode <= 599) {\n var cause = responseBody;\n\n if (decodeResponseBody) {\n if (window.TextDecoder) {\n var charset = getCharset(response.headers && response.headers['content-type']);\n\n try {\n cause = new TextDecoder(charset).decode(responseBody);\n } catch (e) {}\n } else {\n cause = String.fromCharCode.apply(null, new Uint8Array(responseBody));\n }\n }\n\n callback({\n cause: cause\n });\n return;\n } // otherwise, request succeeded\n\n\n callback(null, responseBody);\n };\n};\n\nfunction getCharset(contentTypeHeader) {\n if (contentTypeHeader === void 0) {\n contentTypeHeader = '';\n }\n\n return contentTypeHeader.toLowerCase().split(';').reduce(function (charset, contentType) {\n var _contentType$split = contentType.split('='),\n type = _contentType$split[0],\n value = _contentType$split[1];\n\n if (type.trim() === 'charset') {\n return value.trim();\n }\n\n return charset;\n }, 'utf-8');\n}\n\nmodule.exports = httpResponseHandler;","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var MAX_UINT32 = Math.pow(2, 32);\n\nvar getUint64 = function(uint8) {\n var dv = new DataView(uint8.buffer, uint8.byteOffset, uint8.byteLength);\n var value;\n\n if (dv.getBigUint64) {\n value = dv.getBigUint64(0);\n\n if (value < Number.MAX_SAFE_INTEGER) {\n return Number(value);\n }\n\n return value;\n }\n\n return (dv.getUint32(0) * MAX_UINT32) + dv.getUint32(4);\n};\n\nmodule.exports = {\n getUint64: getUint64,\n MAX_UINT32: MAX_UINT32\n};\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar autoKeyword = \"auto\";\nvar directionSetting = {\n \"\": 1,\n \"lr\": 1,\n \"rl\": 1\n};\nvar alignSetting = {\n \"start\": 1,\n \"center\": 1,\n \"end\": 1,\n \"left\": 1,\n \"right\": 1,\n \"auto\": 1,\n \"line-left\": 1,\n \"line-right\": 1\n};\n\nfunction findDirectionSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var dir = directionSetting[value.toLowerCase()];\n return dir ? value.toLowerCase() : false;\n}\n\nfunction findAlignSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var align = alignSetting[value.toLowerCase()];\n return align ? value.toLowerCase() : false;\n}\n\nfunction VTTCue(startTime, endTime, text) {\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n this.hasBeenReset = false;\n\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n var _id = \"\";\n var _pauseOnExit = false;\n var _startTime = startTime;\n var _endTime = endTime;\n var _text = text;\n var _region = null;\n var _vertical = \"\";\n var _snapToLines = true;\n var _line = \"auto\";\n var _lineAlign = \"start\";\n var _position = \"auto\";\n var _positionAlign = \"auto\";\n var _size = 100;\n var _align = \"center\";\n\n Object.defineProperties(this, {\n \"id\": {\n enumerable: true,\n get: function() {\n return _id;\n },\n set: function(value) {\n _id = \"\" + value;\n }\n },\n\n \"pauseOnExit\": {\n enumerable: true,\n get: function() {\n return _pauseOnExit;\n },\n set: function(value) {\n _pauseOnExit = !!value;\n }\n },\n\n \"startTime\": {\n enumerable: true,\n get: function() {\n return _startTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Start time must be set to a number.\");\n }\n _startTime = value;\n this.hasBeenReset = true;\n }\n },\n\n \"endTime\": {\n enumerable: true,\n get: function() {\n return _endTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"End time must be set to a number.\");\n }\n _endTime = value;\n this.hasBeenReset = true;\n }\n },\n\n \"text\": {\n enumerable: true,\n get: function() {\n return _text;\n },\n set: function(value) {\n _text = \"\" + value;\n this.hasBeenReset = true;\n }\n },\n\n \"region\": {\n enumerable: true,\n get: function() {\n return _region;\n },\n set: function(value) {\n _region = value;\n this.hasBeenReset = true;\n }\n },\n\n \"vertical\": {\n enumerable: true,\n get: function() {\n return _vertical;\n },\n set: function(value) {\n var setting = findDirectionSetting(value);\n // Have to check for false because the setting an be an empty string.\n if (setting === false) {\n throw new SyntaxError(\"Vertical: an invalid or illegal direction string was specified.\");\n }\n _vertical = setting;\n this.hasBeenReset = true;\n }\n },\n\n \"snapToLines\": {\n enumerable: true,\n get: function() {\n return _snapToLines;\n },\n set: function(value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n },\n\n \"line\": {\n enumerable: true,\n get: function() {\n return _line;\n },\n set: function(value) {\n if (typeof value !== \"number\" && value !== autoKeyword) {\n throw new SyntaxError(\"Line: an invalid number or illegal string was specified.\");\n }\n _line = value;\n this.hasBeenReset = true;\n }\n },\n\n \"lineAlign\": {\n enumerable: true,\n get: function() {\n return _lineAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n console.warn(\"lineAlign: an invalid or illegal string was specified.\");\n } else {\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n }\n },\n\n \"position\": {\n enumerable: true,\n get: function() {\n return _position;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Position must be between 0 and 100.\");\n }\n _position = value;\n this.hasBeenReset = true;\n }\n },\n\n \"positionAlign\": {\n enumerable: true,\n get: function() {\n return _positionAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n console.warn(\"positionAlign: an invalid or illegal string was specified.\");\n } else {\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n }\n },\n\n \"size\": {\n enumerable: true,\n get: function() {\n return _size;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Size must be between 0 and 100.\");\n }\n _size = value;\n this.hasBeenReset = true;\n }\n },\n\n \"align\": {\n enumerable: true,\n get: function() {\n return _align;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"align: an invalid or illegal alignment string was specified.\");\n }\n _align = setting;\n this.hasBeenReset = true;\n }\n }\n });\n\n /**\n * Other spec defined properties\n */\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n this.displayState = undefined;\n}\n\n/**\n * VTTCue methods\n */\n\nVTTCue.prototype.getCueAsHTML = function() {\n // Assume WebVTT.convertCueToDOMTree is on the global.\n return WebVTT.convertCueToDOMTree(window, this.text);\n};\n\nmodule.exports = VTTCue;\n","var conventions = require(\"./conventions\");\nvar dom = require('./dom')\nvar entities = require('./entities');\nvar sax = require('./sax');\n\nvar DOMImplementation = dom.DOMImplementation;\n\nvar NAMESPACE = conventions.NAMESPACE;\n\nvar ParseError = sax.ParseError;\nvar XMLReader = sax.XMLReader;\n\n/**\n * Normalizes line ending according to https://www.w3.org/TR/xml11/#sec-line-ends:\n *\n * > XML parsed entities are often stored in computer files which,\n * > for editing convenience, are organized into lines.\n * > These lines are typically separated by some combination\n * > of the characters CARRIAGE RETURN (#xD) and LINE FEED (#xA).\n * >\n * > To simplify the tasks of applications, the XML processor must behave\n * > as if it normalized all line breaks in external parsed entities (including the document entity)\n * > on input, before parsing, by translating all of the following to a single #xA character:\n * >\n * > 1. the two-character sequence #xD #xA\n * > 2. the two-character sequence #xD #x85\n * > 3. the single character #x85\n * > 4. the single character #x2028\n * > 5. any #xD character that is not immediately followed by #xA or #x85.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizeLineEndings(input) {\n\treturn input\n\t\t.replace(/\\r[\\n\\u0085]/g, '\\n')\n\t\t.replace(/[\\r\\u0085\\u2028]/g, '\\n')\n}\n\n/**\n * @typedef Locator\n * @property {number} [columnNumber]\n * @property {number} [lineNumber]\n */\n\n/**\n * @typedef DOMParserOptions\n * @property {DOMHandler} [domBuilder]\n * @property {Function} [errorHandler]\n * @property {(string) => string} [normalizeLineEndings] used to replace line endings before parsing\n * \t\t\t\t\t\tdefaults to `normalizeLineEndings`\n * @property {Locator} [locator]\n * @property {Record} [xmlns]\n *\n * @see normalizeLineEndings\n */\n\n/**\n * The DOMParser interface provides the ability to parse XML or HTML source code\n * from a string into a DOM `Document`.\n *\n * _xmldom is different from the spec in that it allows an `options` parameter,\n * to override the default behavior._\n *\n * @param {DOMParserOptions} [options]\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsing-and-serialization\n */\nfunction DOMParser(options){\n\tthis.options = options ||{locator:{}};\n}\n\nDOMParser.prototype.parseFromString = function(source,mimeType){\n\tvar options = this.options;\n\tvar sax = new XMLReader();\n\tvar domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler\n\tvar errorHandler = options.errorHandler;\n\tvar locator = options.locator;\n\tvar defaultNSMap = options.xmlns||{};\n\tvar isHTML = /\\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1;\n \tvar entityMap = isHTML ? entities.HTML_ENTITIES : entities.XML_ENTITIES;\n\tif(locator){\n\t\tdomBuilder.setDocumentLocator(locator)\n\t}\n\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\n\tsax.domBuilder = options.domBuilder || domBuilder;\n\tif(isHTML){\n\t\tdefaultNSMap[''] = NAMESPACE.HTML;\n\t}\n\tdefaultNSMap.xml = defaultNSMap.xml || NAMESPACE.XML;\n\tvar normalize = options.normalizeLineEndings || normalizeLineEndings;\n\tif (source && typeof source === 'string') {\n\t\tsax.parse(\n\t\t\tnormalize(source),\n\t\t\tdefaultNSMap,\n\t\t\tentityMap\n\t\t)\n\t} else {\n\t\tsax.errorHandler.error('invalid doc source')\n\t}\n\treturn domBuilder.doc;\n}\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\n\tif(!errorImpl){\n\t\tif(domBuilder instanceof DOMHandler){\n\t\t\treturn domBuilder;\n\t\t}\n\t\terrorImpl = domBuilder ;\n\t}\n\tvar errorHandler = {}\n\tvar isCallback = errorImpl instanceof Function;\n\tlocator = locator||{}\n\tfunction build(key){\n\t\tvar fn = errorImpl[key];\n\t\tif(!fn && isCallback){\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\n\t\t}\n\t\terrorHandler[key] = fn && function(msg){\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\n\t\t}||function(){};\n\t}\n\tbuild('warning');\n\tbuild('error');\n\tbuild('fatalError');\n\treturn errorHandler;\n}\n\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\n/**\n * +ContentHandler+ErrorHandler\n * +LexicalHandler+EntityResolver2\n * -DeclHandler-DTDHandler\n *\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\n */\nfunction DOMHandler() {\n this.cdata = false;\n}\nfunction position(locator,node){\n\tnode.lineNumber = locator.lineNumber;\n\tnode.columnNumber = locator.columnNumber;\n}\n/**\n * @see org.xml.sax.ContentHandler#startDocument\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\n */\nDOMHandler.prototype = {\n\tstartDocument : function() {\n \tthis.doc = new DOMImplementation().createDocument(null, null, null);\n \tif (this.locator) {\n \tthis.doc.documentURI = this.locator.systemId;\n \t}\n\t},\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\n\t\tvar doc = this.doc;\n\t var el = doc.createElementNS(namespaceURI, qName||localName);\n\t var len = attrs.length;\n\t appendElement(this, el);\n\t this.currentElement = el;\n\n\t\tthis.locator && position(this.locator,el)\n\t for (var i = 0 ; i < len; i++) {\n\t var namespaceURI = attrs.getURI(i);\n\t var value = attrs.getValue(i);\n\t var qName = attrs.getQName(i);\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\n\t\t\tattr.value = attr.nodeValue = value;\n\t\t\tel.setAttributeNode(attr)\n\t }\n\t},\n\tendElement:function(namespaceURI, localName, qName) {\n\t\tvar current = this.currentElement\n\t\tvar tagName = current.tagName;\n\t\tthis.currentElement = current.parentNode;\n\t},\n\tstartPrefixMapping:function(prefix, uri) {\n\t},\n\tendPrefixMapping:function(prefix) {\n\t},\n\tprocessingInstruction:function(target, data) {\n\t var ins = this.doc.createProcessingInstruction(target, data);\n\t this.locator && position(this.locator,ins)\n\t appendElement(this, ins);\n\t},\n\tignorableWhitespace:function(ch, start, length) {\n\t},\n\tcharacters:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t\t//console.log(chars)\n\t\tif(chars){\n\t\t\tif (this.cdata) {\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\n\t\t\t} else {\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\n\t\t\t}\n\t\t\tif(this.currentElement){\n\t\t\t\tthis.currentElement.appendChild(charNode);\n\t\t\t}else if(/^\\s*$/.test(chars)){\n\t\t\t\tthis.doc.appendChild(charNode);\n\t\t\t\t//process xml\n\t\t\t}\n\t\t\tthis.locator && position(this.locator,charNode)\n\t\t}\n\t},\n\tskippedEntity:function(name) {\n\t},\n\tendDocument:function() {\n\t\tthis.doc.normalize();\n\t},\n\tsetDocumentLocator:function (locator) {\n\t if(this.locator = locator){// && !('lineNumber' in locator)){\n\t \tlocator.lineNumber = 0;\n\t }\n\t},\n\t//LexicalHandler\n\tcomment:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t var comm = this.doc.createComment(chars);\n\t this.locator && position(this.locator,comm)\n\t appendElement(this, comm);\n\t},\n\n\tstartCDATA:function() {\n\t //used in characters() methods\n\t this.cdata = true;\n\t},\n\tendCDATA:function() {\n\t this.cdata = false;\n\t},\n\n\tstartDTD:function(name, publicId, systemId) {\n\t\tvar impl = this.doc.implementation;\n\t if (impl && impl.createDocumentType) {\n\t var dt = impl.createDocumentType(name, publicId, systemId);\n\t this.locator && position(this.locator,dt)\n\t appendElement(this, dt);\n\t\t\t\t\tthis.doc.doctype = dt;\n\t }\n\t},\n\t/**\n\t * @see org.xml.sax.ErrorHandler\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\n\t */\n\twarning:function(error) {\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\n\t},\n\terror:function(error) {\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\n\t},\n\tfatalError:function(error) {\n\t\tthrow new ParseError(error, this.locator);\n\t}\n}\nfunction _locator(l){\n\tif(l){\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\n\t}\n}\nfunction _toString(chars,start,length){\n\tif(typeof chars == 'string'){\n\t\treturn chars.substr(start,length)\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\n\t\tif(chars.length >= start+length || start){\n\t\t\treturn new java.lang.String(chars,start,length)+'';\n\t\t}\n\t\treturn chars;\n\t}\n}\n\n/*\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\n * used method of org.xml.sax.ext.LexicalHandler:\n * #comment(chars, start, length)\n * #startCDATA()\n * #endCDATA()\n * #startDTD(name, publicId, systemId)\n *\n *\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\n * #endDTD()\n * #startEntity(name)\n * #endEntity(name)\n *\n *\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\n * IGNORED method of org.xml.sax.ext.DeclHandler\n * \t#attributeDecl(eName, aName, type, mode, value)\n * #elementDecl(name, model)\n * #externalEntityDecl(name, publicId, systemId)\n * #internalEntityDecl(name, value)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\n * IGNORED method of org.xml.sax.EntityResolver2\n * #resolveEntity(String name,String publicId,String baseURI,String systemId)\n * #resolveEntity(publicId, systemId)\n * #getExternalSubset(name, baseURI)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\n * IGNORED method of org.xml.sax.DTDHandler\n * #notationDecl(name, publicId, systemId) {};\n * #unparsedEntityDecl(name, publicId, systemId, notationName) {};\n */\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\n\tDOMHandler.prototype[key] = function(){return null}\n})\n\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\nfunction appendElement (hander,node) {\n if (!hander.currentElement) {\n hander.doc.appendChild(node);\n } else {\n hander.currentElement.appendChild(node);\n }\n}//appendChild and setAttributeNS are preformance key\n\nexports.__DOMHandler = DOMHandler;\nexports.normalizeLineEndings = normalizeLineEndings;\nexports.DOMParser = DOMParser;\n","'use strict';\n\nvar freeze = require('./conventions').freeze;\n\n/**\n * The entities that are predefined in every XML document.\n *\n * @see https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-predefined-ent W3C XML 1.1\n * @see https://www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent W3C XML 1.0\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML Wikipedia\n */\nexports.XML_ENTITIES = freeze({\n\tamp: '&',\n\tapos: \"'\",\n\tgt: '>',\n\tlt: '<',\n\tquot: '\"',\n});\n\n/**\n * A map of all entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://html.spec.whatwg.org/entities.json JSON\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n\tAacute: '\\u00C1',\n\taacute: '\\u00E1',\n\tAbreve: '\\u0102',\n\tabreve: '\\u0103',\n\tac: '\\u223E',\n\tacd: '\\u223F',\n\tacE: '\\u223E\\u0333',\n\tAcirc: '\\u00C2',\n\tacirc: '\\u00E2',\n\tacute: '\\u00B4',\n\tAcy: '\\u0410',\n\tacy: '\\u0430',\n\tAElig: '\\u00C6',\n\taelig: '\\u00E6',\n\taf: '\\u2061',\n\tAfr: '\\uD835\\uDD04',\n\tafr: '\\uD835\\uDD1E',\n\tAgrave: '\\u00C0',\n\tagrave: '\\u00E0',\n\talefsym: '\\u2135',\n\taleph: '\\u2135',\n\tAlpha: '\\u0391',\n\talpha: '\\u03B1',\n\tAmacr: '\\u0100',\n\tamacr: '\\u0101',\n\tamalg: '\\u2A3F',\n\tAMP: '\\u0026',\n\tamp: '\\u0026',\n\tAnd: '\\u2A53',\n\tand: '\\u2227',\n\tandand: '\\u2A55',\n\tandd: '\\u2A5C',\n\tandslope: '\\u2A58',\n\tandv: '\\u2A5A',\n\tang: '\\u2220',\n\tange: '\\u29A4',\n\tangle: '\\u2220',\n\tangmsd: '\\u2221',\n\tangmsdaa: '\\u29A8',\n\tangmsdab: '\\u29A9',\n\tangmsdac: '\\u29AA',\n\tangmsdad: '\\u29AB',\n\tangmsdae: '\\u29AC',\n\tangmsdaf: '\\u29AD',\n\tangmsdag: '\\u29AE',\n\tangmsdah: '\\u29AF',\n\tangrt: '\\u221F',\n\tangrtvb: '\\u22BE',\n\tangrtvbd: '\\u299D',\n\tangsph: '\\u2222',\n\tangst: '\\u00C5',\n\tangzarr: '\\u237C',\n\tAogon: '\\u0104',\n\taogon: '\\u0105',\n\tAopf: '\\uD835\\uDD38',\n\taopf: '\\uD835\\uDD52',\n\tap: '\\u2248',\n\tapacir: '\\u2A6F',\n\tapE: '\\u2A70',\n\tape: '\\u224A',\n\tapid: '\\u224B',\n\tapos: '\\u0027',\n\tApplyFunction: '\\u2061',\n\tapprox: '\\u2248',\n\tapproxeq: '\\u224A',\n\tAring: '\\u00C5',\n\taring: '\\u00E5',\n\tAscr: '\\uD835\\uDC9C',\n\tascr: '\\uD835\\uDCB6',\n\tAssign: '\\u2254',\n\tast: '\\u002A',\n\tasymp: '\\u2248',\n\tasympeq: '\\u224D',\n\tAtilde: '\\u00C3',\n\tatilde: '\\u00E3',\n\tAuml: '\\u00C4',\n\tauml: '\\u00E4',\n\tawconint: '\\u2233',\n\tawint: '\\u2A11',\n\tbackcong: '\\u224C',\n\tbackepsilon: '\\u03F6',\n\tbackprime: '\\u2035',\n\tbacksim: '\\u223D',\n\tbacksimeq: '\\u22CD',\n\tBackslash: '\\u2216',\n\tBarv: '\\u2AE7',\n\tbarvee: '\\u22BD',\n\tBarwed: '\\u2306',\n\tbarwed: '\\u2305',\n\tbarwedge: '\\u2305',\n\tbbrk: '\\u23B5',\n\tbbrktbrk: '\\u23B6',\n\tbcong: '\\u224C',\n\tBcy: '\\u0411',\n\tbcy: '\\u0431',\n\tbdquo: '\\u201E',\n\tbecaus: '\\u2235',\n\tBecause: '\\u2235',\n\tbecause: '\\u2235',\n\tbemptyv: '\\u29B0',\n\tbepsi: '\\u03F6',\n\tbernou: '\\u212C',\n\tBernoullis: '\\u212C',\n\tBeta: '\\u0392',\n\tbeta: '\\u03B2',\n\tbeth: '\\u2136',\n\tbetween: '\\u226C',\n\tBfr: '\\uD835\\uDD05',\n\tbfr: '\\uD835\\uDD1F',\n\tbigcap: '\\u22C2',\n\tbigcirc: '\\u25EF',\n\tbigcup: '\\u22C3',\n\tbigodot: '\\u2A00',\n\tbigoplus: '\\u2A01',\n\tbigotimes: '\\u2A02',\n\tbigsqcup: '\\u2A06',\n\tbigstar: '\\u2605',\n\tbigtriangledown: '\\u25BD',\n\tbigtriangleup: '\\u25B3',\n\tbiguplus: '\\u2A04',\n\tbigvee: '\\u22C1',\n\tbigwedge: '\\u22C0',\n\tbkarow: '\\u290D',\n\tblacklozenge: '\\u29EB',\n\tblacksquare: '\\u25AA',\n\tblacktriangle: '\\u25B4',\n\tblacktriangledown: '\\u25BE',\n\tblacktriangleleft: '\\u25C2',\n\tblacktriangleright: '\\u25B8',\n\tblank: '\\u2423',\n\tblk12: '\\u2592',\n\tblk14: '\\u2591',\n\tblk34: '\\u2593',\n\tblock: '\\u2588',\n\tbne: '\\u003D\\u20E5',\n\tbnequiv: '\\u2261\\u20E5',\n\tbNot: '\\u2AED',\n\tbnot: '\\u2310',\n\tBopf: '\\uD835\\uDD39',\n\tbopf: '\\uD835\\uDD53',\n\tbot: '\\u22A5',\n\tbottom: '\\u22A5',\n\tbowtie: '\\u22C8',\n\tboxbox: '\\u29C9',\n\tboxDL: '\\u2557',\n\tboxDl: '\\u2556',\n\tboxdL: '\\u2555',\n\tboxdl: '\\u2510',\n\tboxDR: '\\u2554',\n\tboxDr: '\\u2553',\n\tboxdR: '\\u2552',\n\tboxdr: '\\u250C',\n\tboxH: '\\u2550',\n\tboxh: '\\u2500',\n\tboxHD: '\\u2566',\n\tboxHd: '\\u2564',\n\tboxhD: '\\u2565',\n\tboxhd: '\\u252C',\n\tboxHU: '\\u2569',\n\tboxHu: '\\u2567',\n\tboxhU: '\\u2568',\n\tboxhu: '\\u2534',\n\tboxminus: '\\u229F',\n\tboxplus: '\\u229E',\n\tboxtimes: '\\u22A0',\n\tboxUL: '\\u255D',\n\tboxUl: '\\u255C',\n\tboxuL: '\\u255B',\n\tboxul: '\\u2518',\n\tboxUR: '\\u255A',\n\tboxUr: '\\u2559',\n\tboxuR: '\\u2558',\n\tboxur: '\\u2514',\n\tboxV: '\\u2551',\n\tboxv: '\\u2502',\n\tboxVH: '\\u256C',\n\tboxVh: '\\u256B',\n\tboxvH: '\\u256A',\n\tboxvh: '\\u253C',\n\tboxVL: '\\u2563',\n\tboxVl: '\\u2562',\n\tboxvL: '\\u2561',\n\tboxvl: '\\u2524',\n\tboxVR: '\\u2560',\n\tboxVr: '\\u255F',\n\tboxvR: '\\u255E',\n\tboxvr: '\\u251C',\n\tbprime: '\\u2035',\n\tBreve: '\\u02D8',\n\tbreve: '\\u02D8',\n\tbrvbar: '\\u00A6',\n\tBscr: '\\u212C',\n\tbscr: '\\uD835\\uDCB7',\n\tbsemi: '\\u204F',\n\tbsim: '\\u223D',\n\tbsime: '\\u22CD',\n\tbsol: '\\u005C',\n\tbsolb: '\\u29C5',\n\tbsolhsub: '\\u27C8',\n\tbull: '\\u2022',\n\tbullet: '\\u2022',\n\tbump: '\\u224E',\n\tbumpE: '\\u2AAE',\n\tbumpe: '\\u224F',\n\tBumpeq: '\\u224E',\n\tbumpeq: '\\u224F',\n\tCacute: '\\u0106',\n\tcacute: '\\u0107',\n\tCap: '\\u22D2',\n\tcap: '\\u2229',\n\tcapand: '\\u2A44',\n\tcapbrcup: '\\u2A49',\n\tcapcap: '\\u2A4B',\n\tcapcup: '\\u2A47',\n\tcapdot: '\\u2A40',\n\tCapitalDifferentialD: '\\u2145',\n\tcaps: '\\u2229\\uFE00',\n\tcaret: '\\u2041',\n\tcaron: '\\u02C7',\n\tCayleys: '\\u212D',\n\tccaps: '\\u2A4D',\n\tCcaron: '\\u010C',\n\tccaron: '\\u010D',\n\tCcedil: '\\u00C7',\n\tccedil: '\\u00E7',\n\tCcirc: '\\u0108',\n\tccirc: '\\u0109',\n\tCconint: '\\u2230',\n\tccups: '\\u2A4C',\n\tccupssm: '\\u2A50',\n\tCdot: '\\u010A',\n\tcdot: '\\u010B',\n\tcedil: '\\u00B8',\n\tCedilla: '\\u00B8',\n\tcemptyv: '\\u29B2',\n\tcent: '\\u00A2',\n\tCenterDot: '\\u00B7',\n\tcenterdot: '\\u00B7',\n\tCfr: '\\u212D',\n\tcfr: '\\uD835\\uDD20',\n\tCHcy: '\\u0427',\n\tchcy: '\\u0447',\n\tcheck: '\\u2713',\n\tcheckmark: '\\u2713',\n\tChi: '\\u03A7',\n\tchi: '\\u03C7',\n\tcir: '\\u25CB',\n\tcirc: '\\u02C6',\n\tcirceq: '\\u2257',\n\tcirclearrowleft: '\\u21BA',\n\tcirclearrowright: '\\u21BB',\n\tcircledast: '\\u229B',\n\tcircledcirc: '\\u229A',\n\tcircleddash: '\\u229D',\n\tCircleDot: '\\u2299',\n\tcircledR: '\\u00AE',\n\tcircledS: '\\u24C8',\n\tCircleMinus: '\\u2296',\n\tCirclePlus: '\\u2295',\n\tCircleTimes: '\\u2297',\n\tcirE: '\\u29C3',\n\tcire: '\\u2257',\n\tcirfnint: '\\u2A10',\n\tcirmid: '\\u2AEF',\n\tcirscir: '\\u29C2',\n\tClockwiseContourIntegral: '\\u2232',\n\tCloseCurlyDoubleQuote: '\\u201D',\n\tCloseCurlyQuote: '\\u2019',\n\tclubs: '\\u2663',\n\tclubsuit: '\\u2663',\n\tColon: '\\u2237',\n\tcolon: '\\u003A',\n\tColone: '\\u2A74',\n\tcolone: '\\u2254',\n\tcoloneq: '\\u2254',\n\tcomma: '\\u002C',\n\tcommat: '\\u0040',\n\tcomp: '\\u2201',\n\tcompfn: '\\u2218',\n\tcomplement: '\\u2201',\n\tcomplexes: '\\u2102',\n\tcong: '\\u2245',\n\tcongdot: '\\u2A6D',\n\tCongruent: '\\u2261',\n\tConint: '\\u222F',\n\tconint: '\\u222E',\n\tContourIntegral: '\\u222E',\n\tCopf: '\\u2102',\n\tcopf: '\\uD835\\uDD54',\n\tcoprod: '\\u2210',\n\tCoproduct: '\\u2210',\n\tCOPY: '\\u00A9',\n\tcopy: '\\u00A9',\n\tcopysr: '\\u2117',\n\tCounterClockwiseContourIntegral: '\\u2233',\n\tcrarr: '\\u21B5',\n\tCross: '\\u2A2F',\n\tcross: '\\u2717',\n\tCscr: '\\uD835\\uDC9E',\n\tcscr: '\\uD835\\uDCB8',\n\tcsub: '\\u2ACF',\n\tcsube: '\\u2AD1',\n\tcsup: '\\u2AD0',\n\tcsupe: '\\u2AD2',\n\tctdot: '\\u22EF',\n\tcudarrl: '\\u2938',\n\tcudarrr: '\\u2935',\n\tcuepr: '\\u22DE',\n\tcuesc: '\\u22DF',\n\tcularr: '\\u21B6',\n\tcularrp: '\\u293D',\n\tCup: '\\u22D3',\n\tcup: '\\u222A',\n\tcupbrcap: '\\u2A48',\n\tCupCap: '\\u224D',\n\tcupcap: '\\u2A46',\n\tcupcup: '\\u2A4A',\n\tcupdot: '\\u228D',\n\tcupor: '\\u2A45',\n\tcups: '\\u222A\\uFE00',\n\tcurarr: '\\u21B7',\n\tcurarrm: '\\u293C',\n\tcurlyeqprec: '\\u22DE',\n\tcurlyeqsucc: '\\u22DF',\n\tcurlyvee: '\\u22CE',\n\tcurlywedge: '\\u22CF',\n\tcurren: '\\u00A4',\n\tcurvearrowleft: '\\u21B6',\n\tcurvearrowright: '\\u21B7',\n\tcuvee: '\\u22CE',\n\tcuwed: '\\u22CF',\n\tcwconint: '\\u2232',\n\tcwint: '\\u2231',\n\tcylcty: '\\u232D',\n\tDagger: '\\u2021',\n\tdagger: '\\u2020',\n\tdaleth: '\\u2138',\n\tDarr: '\\u21A1',\n\tdArr: '\\u21D3',\n\tdarr: '\\u2193',\n\tdash: '\\u2010',\n\tDashv: '\\u2AE4',\n\tdashv: '\\u22A3',\n\tdbkarow: '\\u290F',\n\tdblac: '\\u02DD',\n\tDcaron: '\\u010E',\n\tdcaron: '\\u010F',\n\tDcy: '\\u0414',\n\tdcy: '\\u0434',\n\tDD: '\\u2145',\n\tdd: '\\u2146',\n\tddagger: '\\u2021',\n\tddarr: '\\u21CA',\n\tDDotrahd: '\\u2911',\n\tddotseq: '\\u2A77',\n\tdeg: '\\u00B0',\n\tDel: '\\u2207',\n\tDelta: '\\u0394',\n\tdelta: '\\u03B4',\n\tdemptyv: '\\u29B1',\n\tdfisht: '\\u297F',\n\tDfr: '\\uD835\\uDD07',\n\tdfr: '\\uD835\\uDD21',\n\tdHar: '\\u2965',\n\tdharl: '\\u21C3',\n\tdharr: '\\u21C2',\n\tDiacriticalAcute: '\\u00B4',\n\tDiacriticalDot: '\\u02D9',\n\tDiacriticalDoubleAcute: '\\u02DD',\n\tDiacriticalGrave: '\\u0060',\n\tDiacriticalTilde: '\\u02DC',\n\tdiam: '\\u22C4',\n\tDiamond: '\\u22C4',\n\tdiamond: '\\u22C4',\n\tdiamondsuit: '\\u2666',\n\tdiams: '\\u2666',\n\tdie: '\\u00A8',\n\tDifferentialD: '\\u2146',\n\tdigamma: '\\u03DD',\n\tdisin: '\\u22F2',\n\tdiv: '\\u00F7',\n\tdivide: '\\u00F7',\n\tdivideontimes: '\\u22C7',\n\tdivonx: '\\u22C7',\n\tDJcy: '\\u0402',\n\tdjcy: '\\u0452',\n\tdlcorn: '\\u231E',\n\tdlcrop: '\\u230D',\n\tdollar: '\\u0024',\n\tDopf: '\\uD835\\uDD3B',\n\tdopf: '\\uD835\\uDD55',\n\tDot: '\\u00A8',\n\tdot: '\\u02D9',\n\tDotDot: '\\u20DC',\n\tdoteq: '\\u2250',\n\tdoteqdot: '\\u2251',\n\tDotEqual: '\\u2250',\n\tdotminus: '\\u2238',\n\tdotplus: '\\u2214',\n\tdotsquare: '\\u22A1',\n\tdoublebarwedge: '\\u2306',\n\tDoubleContourIntegral: '\\u222F',\n\tDoubleDot: '\\u00A8',\n\tDoubleDownArrow: '\\u21D3',\n\tDoubleLeftArrow: '\\u21D0',\n\tDoubleLeftRightArrow: '\\u21D4',\n\tDoubleLeftTee: '\\u2AE4',\n\tDoubleLongLeftArrow: '\\u27F8',\n\tDoubleLongLeftRightArrow: '\\u27FA',\n\tDoubleLongRightArrow: '\\u27F9',\n\tDoubleRightArrow: '\\u21D2',\n\tDoubleRightTee: '\\u22A8',\n\tDoubleUpArrow: '\\u21D1',\n\tDoubleUpDownArrow: '\\u21D5',\n\tDoubleVerticalBar: '\\u2225',\n\tDownArrow: '\\u2193',\n\tDownarrow: '\\u21D3',\n\tdownarrow: '\\u2193',\n\tDownArrowBar: '\\u2913',\n\tDownArrowUpArrow: '\\u21F5',\n\tDownBreve: '\\u0311',\n\tdowndownarrows: '\\u21CA',\n\tdownharpoonleft: '\\u21C3',\n\tdownharpoonright: '\\u21C2',\n\tDownLeftRightVector: '\\u2950',\n\tDownLeftTeeVector: '\\u295E',\n\tDownLeftVector: '\\u21BD',\n\tDownLeftVectorBar: '\\u2956',\n\tDownRightTeeVector: '\\u295F',\n\tDownRightVector: '\\u21C1',\n\tDownRightVectorBar: '\\u2957',\n\tDownTee: '\\u22A4',\n\tDownTeeArrow: '\\u21A7',\n\tdrbkarow: '\\u2910',\n\tdrcorn: '\\u231F',\n\tdrcrop: '\\u230C',\n\tDscr: '\\uD835\\uDC9F',\n\tdscr: '\\uD835\\uDCB9',\n\tDScy: '\\u0405',\n\tdscy: '\\u0455',\n\tdsol: '\\u29F6',\n\tDstrok: '\\u0110',\n\tdstrok: '\\u0111',\n\tdtdot: '\\u22F1',\n\tdtri: '\\u25BF',\n\tdtrif: '\\u25BE',\n\tduarr: '\\u21F5',\n\tduhar: '\\u296F',\n\tdwangle: '\\u29A6',\n\tDZcy: '\\u040F',\n\tdzcy: '\\u045F',\n\tdzigrarr: '\\u27FF',\n\tEacute: '\\u00C9',\n\teacute: '\\u00E9',\n\teaster: '\\u2A6E',\n\tEcaron: '\\u011A',\n\tecaron: '\\u011B',\n\tecir: '\\u2256',\n\tEcirc: '\\u00CA',\n\tecirc: '\\u00EA',\n\tecolon: '\\u2255',\n\tEcy: '\\u042D',\n\tecy: '\\u044D',\n\teDDot: '\\u2A77',\n\tEdot: '\\u0116',\n\teDot: '\\u2251',\n\tedot: '\\u0117',\n\tee: '\\u2147',\n\tefDot: '\\u2252',\n\tEfr: '\\uD835\\uDD08',\n\tefr: '\\uD835\\uDD22',\n\teg: '\\u2A9A',\n\tEgrave: '\\u00C8',\n\tegrave: '\\u00E8',\n\tegs: '\\u2A96',\n\tegsdot: '\\u2A98',\n\tel: '\\u2A99',\n\tElement: '\\u2208',\n\telinters: '\\u23E7',\n\tell: '\\u2113',\n\tels: '\\u2A95',\n\telsdot: '\\u2A97',\n\tEmacr: '\\u0112',\n\temacr: '\\u0113',\n\tempty: '\\u2205',\n\temptyset: '\\u2205',\n\tEmptySmallSquare: '\\u25FB',\n\temptyv: '\\u2205',\n\tEmptyVerySmallSquare: '\\u25AB',\n\temsp: '\\u2003',\n\temsp13: '\\u2004',\n\temsp14: '\\u2005',\n\tENG: '\\u014A',\n\teng: '\\u014B',\n\tensp: '\\u2002',\n\tEogon: '\\u0118',\n\teogon: '\\u0119',\n\tEopf: '\\uD835\\uDD3C',\n\teopf: '\\uD835\\uDD56',\n\tepar: '\\u22D5',\n\teparsl: '\\u29E3',\n\teplus: '\\u2A71',\n\tepsi: '\\u03B5',\n\tEpsilon: '\\u0395',\n\tepsilon: '\\u03B5',\n\tepsiv: '\\u03F5',\n\teqcirc: '\\u2256',\n\teqcolon: '\\u2255',\n\teqsim: '\\u2242',\n\teqslantgtr: '\\u2A96',\n\teqslantless: '\\u2A95',\n\tEqual: '\\u2A75',\n\tequals: '\\u003D',\n\tEqualTilde: '\\u2242',\n\tequest: '\\u225F',\n\tEquilibrium: '\\u21CC',\n\tequiv: '\\u2261',\n\tequivDD: '\\u2A78',\n\teqvparsl: '\\u29E5',\n\terarr: '\\u2971',\n\terDot: '\\u2253',\n\tEscr: '\\u2130',\n\tescr: '\\u212F',\n\tesdot: '\\u2250',\n\tEsim: '\\u2A73',\n\tesim: '\\u2242',\n\tEta: '\\u0397',\n\teta: '\\u03B7',\n\tETH: '\\u00D0',\n\teth: '\\u00F0',\n\tEuml: '\\u00CB',\n\teuml: '\\u00EB',\n\teuro: '\\u20AC',\n\texcl: '\\u0021',\n\texist: '\\u2203',\n\tExists: '\\u2203',\n\texpectation: '\\u2130',\n\tExponentialE: '\\u2147',\n\texponentiale: '\\u2147',\n\tfallingdotseq: '\\u2252',\n\tFcy: '\\u0424',\n\tfcy: '\\u0444',\n\tfemale: '\\u2640',\n\tffilig: '\\uFB03',\n\tfflig: '\\uFB00',\n\tffllig: '\\uFB04',\n\tFfr: '\\uD835\\uDD09',\n\tffr: '\\uD835\\uDD23',\n\tfilig: '\\uFB01',\n\tFilledSmallSquare: '\\u25FC',\n\tFilledVerySmallSquare: '\\u25AA',\n\tfjlig: '\\u0066\\u006A',\n\tflat: '\\u266D',\n\tfllig: '\\uFB02',\n\tfltns: '\\u25B1',\n\tfnof: '\\u0192',\n\tFopf: '\\uD835\\uDD3D',\n\tfopf: '\\uD835\\uDD57',\n\tForAll: '\\u2200',\n\tforall: '\\u2200',\n\tfork: '\\u22D4',\n\tforkv: '\\u2AD9',\n\tFouriertrf: '\\u2131',\n\tfpartint: '\\u2A0D',\n\tfrac12: '\\u00BD',\n\tfrac13: '\\u2153',\n\tfrac14: '\\u00BC',\n\tfrac15: '\\u2155',\n\tfrac16: '\\u2159',\n\tfrac18: '\\u215B',\n\tfrac23: '\\u2154',\n\tfrac25: '\\u2156',\n\tfrac34: '\\u00BE',\n\tfrac35: '\\u2157',\n\tfrac38: '\\u215C',\n\tfrac45: '\\u2158',\n\tfrac56: '\\u215A',\n\tfrac58: '\\u215D',\n\tfrac78: '\\u215E',\n\tfrasl: '\\u2044',\n\tfrown: '\\u2322',\n\tFscr: '\\u2131',\n\tfscr: '\\uD835\\uDCBB',\n\tgacute: '\\u01F5',\n\tGamma: '\\u0393',\n\tgamma: '\\u03B3',\n\tGammad: '\\u03DC',\n\tgammad: '\\u03DD',\n\tgap: '\\u2A86',\n\tGbreve: '\\u011E',\n\tgbreve: '\\u011F',\n\tGcedil: '\\u0122',\n\tGcirc: '\\u011C',\n\tgcirc: '\\u011D',\n\tGcy: '\\u0413',\n\tgcy: '\\u0433',\n\tGdot: '\\u0120',\n\tgdot: '\\u0121',\n\tgE: '\\u2267',\n\tge: '\\u2265',\n\tgEl: '\\u2A8C',\n\tgel: '\\u22DB',\n\tgeq: '\\u2265',\n\tgeqq: '\\u2267',\n\tgeqslant: '\\u2A7E',\n\tges: '\\u2A7E',\n\tgescc: '\\u2AA9',\n\tgesdot: '\\u2A80',\n\tgesdoto: '\\u2A82',\n\tgesdotol: '\\u2A84',\n\tgesl: '\\u22DB\\uFE00',\n\tgesles: '\\u2A94',\n\tGfr: '\\uD835\\uDD0A',\n\tgfr: '\\uD835\\uDD24',\n\tGg: '\\u22D9',\n\tgg: '\\u226B',\n\tggg: '\\u22D9',\n\tgimel: '\\u2137',\n\tGJcy: '\\u0403',\n\tgjcy: '\\u0453',\n\tgl: '\\u2277',\n\tgla: '\\u2AA5',\n\tglE: '\\u2A92',\n\tglj: '\\u2AA4',\n\tgnap: '\\u2A8A',\n\tgnapprox: '\\u2A8A',\n\tgnE: '\\u2269',\n\tgne: '\\u2A88',\n\tgneq: '\\u2A88',\n\tgneqq: '\\u2269',\n\tgnsim: '\\u22E7',\n\tGopf: '\\uD835\\uDD3E',\n\tgopf: '\\uD835\\uDD58',\n\tgrave: '\\u0060',\n\tGreaterEqual: '\\u2265',\n\tGreaterEqualLess: '\\u22DB',\n\tGreaterFullEqual: '\\u2267',\n\tGreaterGreater: '\\u2AA2',\n\tGreaterLess: '\\u2277',\n\tGreaterSlantEqual: '\\u2A7E',\n\tGreaterTilde: '\\u2273',\n\tGscr: '\\uD835\\uDCA2',\n\tgscr: '\\u210A',\n\tgsim: '\\u2273',\n\tgsime: '\\u2A8E',\n\tgsiml: '\\u2A90',\n\tGt: '\\u226B',\n\tGT: '\\u003E',\n\tgt: '\\u003E',\n\tgtcc: '\\u2AA7',\n\tgtcir: '\\u2A7A',\n\tgtdot: '\\u22D7',\n\tgtlPar: '\\u2995',\n\tgtquest: '\\u2A7C',\n\tgtrapprox: '\\u2A86',\n\tgtrarr: '\\u2978',\n\tgtrdot: '\\u22D7',\n\tgtreqless: '\\u22DB',\n\tgtreqqless: '\\u2A8C',\n\tgtrless: '\\u2277',\n\tgtrsim: '\\u2273',\n\tgvertneqq: '\\u2269\\uFE00',\n\tgvnE: '\\u2269\\uFE00',\n\tHacek: '\\u02C7',\n\thairsp: '\\u200A',\n\thalf: '\\u00BD',\n\thamilt: '\\u210B',\n\tHARDcy: '\\u042A',\n\thardcy: '\\u044A',\n\thArr: '\\u21D4',\n\tharr: '\\u2194',\n\tharrcir: '\\u2948',\n\tharrw: '\\u21AD',\n\tHat: '\\u005E',\n\thbar: '\\u210F',\n\tHcirc: '\\u0124',\n\thcirc: '\\u0125',\n\thearts: '\\u2665',\n\theartsuit: '\\u2665',\n\thellip: '\\u2026',\n\thercon: '\\u22B9',\n\tHfr: '\\u210C',\n\thfr: '\\uD835\\uDD25',\n\tHilbertSpace: '\\u210B',\n\thksearow: '\\u2925',\n\thkswarow: '\\u2926',\n\thoarr: '\\u21FF',\n\thomtht: '\\u223B',\n\thookleftarrow: '\\u21A9',\n\thookrightarrow: '\\u21AA',\n\tHopf: '\\u210D',\n\thopf: '\\uD835\\uDD59',\n\thorbar: '\\u2015',\n\tHorizontalLine: '\\u2500',\n\tHscr: '\\u210B',\n\thscr: '\\uD835\\uDCBD',\n\thslash: '\\u210F',\n\tHstrok: '\\u0126',\n\thstrok: '\\u0127',\n\tHumpDownHump: '\\u224E',\n\tHumpEqual: '\\u224F',\n\thybull: '\\u2043',\n\thyphen: '\\u2010',\n\tIacute: '\\u00CD',\n\tiacute: '\\u00ED',\n\tic: '\\u2063',\n\tIcirc: '\\u00CE',\n\ticirc: '\\u00EE',\n\tIcy: '\\u0418',\n\ticy: '\\u0438',\n\tIdot: '\\u0130',\n\tIEcy: '\\u0415',\n\tiecy: '\\u0435',\n\tiexcl: '\\u00A1',\n\tiff: '\\u21D4',\n\tIfr: '\\u2111',\n\tifr: '\\uD835\\uDD26',\n\tIgrave: '\\u00CC',\n\tigrave: '\\u00EC',\n\tii: '\\u2148',\n\tiiiint: '\\u2A0C',\n\tiiint: '\\u222D',\n\tiinfin: '\\u29DC',\n\tiiota: '\\u2129',\n\tIJlig: '\\u0132',\n\tijlig: '\\u0133',\n\tIm: '\\u2111',\n\tImacr: '\\u012A',\n\timacr: '\\u012B',\n\timage: '\\u2111',\n\tImaginaryI: '\\u2148',\n\timagline: '\\u2110',\n\timagpart: '\\u2111',\n\timath: '\\u0131',\n\timof: '\\u22B7',\n\timped: '\\u01B5',\n\tImplies: '\\u21D2',\n\tin: '\\u2208',\n\tincare: '\\u2105',\n\tinfin: '\\u221E',\n\tinfintie: '\\u29DD',\n\tinodot: '\\u0131',\n\tInt: '\\u222C',\n\tint: '\\u222B',\n\tintcal: '\\u22BA',\n\tintegers: '\\u2124',\n\tIntegral: '\\u222B',\n\tintercal: '\\u22BA',\n\tIntersection: '\\u22C2',\n\tintlarhk: '\\u2A17',\n\tintprod: '\\u2A3C',\n\tInvisibleComma: '\\u2063',\n\tInvisibleTimes: '\\u2062',\n\tIOcy: '\\u0401',\n\tiocy: '\\u0451',\n\tIogon: '\\u012E',\n\tiogon: '\\u012F',\n\tIopf: '\\uD835\\uDD40',\n\tiopf: '\\uD835\\uDD5A',\n\tIota: '\\u0399',\n\tiota: '\\u03B9',\n\tiprod: '\\u2A3C',\n\tiquest: '\\u00BF',\n\tIscr: '\\u2110',\n\tiscr: '\\uD835\\uDCBE',\n\tisin: '\\u2208',\n\tisindot: '\\u22F5',\n\tisinE: '\\u22F9',\n\tisins: '\\u22F4',\n\tisinsv: '\\u22F3',\n\tisinv: '\\u2208',\n\tit: '\\u2062',\n\tItilde: '\\u0128',\n\titilde: '\\u0129',\n\tIukcy: '\\u0406',\n\tiukcy: '\\u0456',\n\tIuml: '\\u00CF',\n\tiuml: '\\u00EF',\n\tJcirc: '\\u0134',\n\tjcirc: '\\u0135',\n\tJcy: '\\u0419',\n\tjcy: '\\u0439',\n\tJfr: '\\uD835\\uDD0D',\n\tjfr: '\\uD835\\uDD27',\n\tjmath: '\\u0237',\n\tJopf: '\\uD835\\uDD41',\n\tjopf: '\\uD835\\uDD5B',\n\tJscr: '\\uD835\\uDCA5',\n\tjscr: '\\uD835\\uDCBF',\n\tJsercy: '\\u0408',\n\tjsercy: '\\u0458',\n\tJukcy: '\\u0404',\n\tjukcy: '\\u0454',\n\tKappa: '\\u039A',\n\tkappa: '\\u03BA',\n\tkappav: '\\u03F0',\n\tKcedil: '\\u0136',\n\tkcedil: '\\u0137',\n\tKcy: '\\u041A',\n\tkcy: '\\u043A',\n\tKfr: '\\uD835\\uDD0E',\n\tkfr: '\\uD835\\uDD28',\n\tkgreen: '\\u0138',\n\tKHcy: '\\u0425',\n\tkhcy: '\\u0445',\n\tKJcy: '\\u040C',\n\tkjcy: '\\u045C',\n\tKopf: '\\uD835\\uDD42',\n\tkopf: '\\uD835\\uDD5C',\n\tKscr: '\\uD835\\uDCA6',\n\tkscr: '\\uD835\\uDCC0',\n\tlAarr: '\\u21DA',\n\tLacute: '\\u0139',\n\tlacute: '\\u013A',\n\tlaemptyv: '\\u29B4',\n\tlagran: '\\u2112',\n\tLambda: '\\u039B',\n\tlambda: '\\u03BB',\n\tLang: '\\u27EA',\n\tlang: '\\u27E8',\n\tlangd: '\\u2991',\n\tlangle: '\\u27E8',\n\tlap: '\\u2A85',\n\tLaplacetrf: '\\u2112',\n\tlaquo: '\\u00AB',\n\tLarr: '\\u219E',\n\tlArr: '\\u21D0',\n\tlarr: '\\u2190',\n\tlarrb: '\\u21E4',\n\tlarrbfs: '\\u291F',\n\tlarrfs: '\\u291D',\n\tlarrhk: '\\u21A9',\n\tlarrlp: '\\u21AB',\n\tlarrpl: '\\u2939',\n\tlarrsim: '\\u2973',\n\tlarrtl: '\\u21A2',\n\tlat: '\\u2AAB',\n\tlAtail: '\\u291B',\n\tlatail: '\\u2919',\n\tlate: '\\u2AAD',\n\tlates: '\\u2AAD\\uFE00',\n\tlBarr: '\\u290E',\n\tlbarr: '\\u290C',\n\tlbbrk: '\\u2772',\n\tlbrace: '\\u007B',\n\tlbrack: '\\u005B',\n\tlbrke: '\\u298B',\n\tlbrksld: '\\u298F',\n\tlbrkslu: '\\u298D',\n\tLcaron: '\\u013D',\n\tlcaron: '\\u013E',\n\tLcedil: '\\u013B',\n\tlcedil: '\\u013C',\n\tlceil: '\\u2308',\n\tlcub: '\\u007B',\n\tLcy: '\\u041B',\n\tlcy: '\\u043B',\n\tldca: '\\u2936',\n\tldquo: '\\u201C',\n\tldquor: '\\u201E',\n\tldrdhar: '\\u2967',\n\tldrushar: '\\u294B',\n\tldsh: '\\u21B2',\n\tlE: '\\u2266',\n\tle: '\\u2264',\n\tLeftAngleBracket: '\\u27E8',\n\tLeftArrow: '\\u2190',\n\tLeftarrow: '\\u21D0',\n\tleftarrow: '\\u2190',\n\tLeftArrowBar: '\\u21E4',\n\tLeftArrowRightArrow: '\\u21C6',\n\tleftarrowtail: '\\u21A2',\n\tLeftCeiling: '\\u2308',\n\tLeftDoubleBracket: '\\u27E6',\n\tLeftDownTeeVector: '\\u2961',\n\tLeftDownVector: '\\u21C3',\n\tLeftDownVectorBar: '\\u2959',\n\tLeftFloor: '\\u230A',\n\tleftharpoondown: '\\u21BD',\n\tleftharpoonup: '\\u21BC',\n\tleftleftarrows: '\\u21C7',\n\tLeftRightArrow: '\\u2194',\n\tLeftrightarrow: '\\u21D4',\n\tleftrightarrow: '\\u2194',\n\tleftrightarrows: '\\u21C6',\n\tleftrightharpoons: '\\u21CB',\n\tleftrightsquigarrow: '\\u21AD',\n\tLeftRightVector: '\\u294E',\n\tLeftTee: '\\u22A3',\n\tLeftTeeArrow: '\\u21A4',\n\tLeftTeeVector: '\\u295A',\n\tleftthreetimes: '\\u22CB',\n\tLeftTriangle: '\\u22B2',\n\tLeftTriangleBar: '\\u29CF',\n\tLeftTriangleEqual: '\\u22B4',\n\tLeftUpDownVector: '\\u2951',\n\tLeftUpTeeVector: '\\u2960',\n\tLeftUpVector: '\\u21BF',\n\tLeftUpVectorBar: '\\u2958',\n\tLeftVector: '\\u21BC',\n\tLeftVectorBar: '\\u2952',\n\tlEg: '\\u2A8B',\n\tleg: '\\u22DA',\n\tleq: '\\u2264',\n\tleqq: '\\u2266',\n\tleqslant: '\\u2A7D',\n\tles: '\\u2A7D',\n\tlescc: '\\u2AA8',\n\tlesdot: '\\u2A7F',\n\tlesdoto: '\\u2A81',\n\tlesdotor: '\\u2A83',\n\tlesg: '\\u22DA\\uFE00',\n\tlesges: '\\u2A93',\n\tlessapprox: '\\u2A85',\n\tlessdot: '\\u22D6',\n\tlesseqgtr: '\\u22DA',\n\tlesseqqgtr: '\\u2A8B',\n\tLessEqualGreater: '\\u22DA',\n\tLessFullEqual: '\\u2266',\n\tLessGreater: '\\u2276',\n\tlessgtr: '\\u2276',\n\tLessLess: '\\u2AA1',\n\tlesssim: '\\u2272',\n\tLessSlantEqual: '\\u2A7D',\n\tLessTilde: '\\u2272',\n\tlfisht: '\\u297C',\n\tlfloor: '\\u230A',\n\tLfr: '\\uD835\\uDD0F',\n\tlfr: '\\uD835\\uDD29',\n\tlg: '\\u2276',\n\tlgE: '\\u2A91',\n\tlHar: '\\u2962',\n\tlhard: '\\u21BD',\n\tlharu: '\\u21BC',\n\tlharul: '\\u296A',\n\tlhblk: '\\u2584',\n\tLJcy: '\\u0409',\n\tljcy: '\\u0459',\n\tLl: '\\u22D8',\n\tll: '\\u226A',\n\tllarr: '\\u21C7',\n\tllcorner: '\\u231E',\n\tLleftarrow: '\\u21DA',\n\tllhard: '\\u296B',\n\tlltri: '\\u25FA',\n\tLmidot: '\\u013F',\n\tlmidot: '\\u0140',\n\tlmoust: '\\u23B0',\n\tlmoustache: '\\u23B0',\n\tlnap: '\\u2A89',\n\tlnapprox: '\\u2A89',\n\tlnE: '\\u2268',\n\tlne: '\\u2A87',\n\tlneq: '\\u2A87',\n\tlneqq: '\\u2268',\n\tlnsim: '\\u22E6',\n\tloang: '\\u27EC',\n\tloarr: '\\u21FD',\n\tlobrk: '\\u27E6',\n\tLongLeftArrow: '\\u27F5',\n\tLongleftarrow: '\\u27F8',\n\tlongleftarrow: '\\u27F5',\n\tLongLeftRightArrow: '\\u27F7',\n\tLongleftrightarrow: '\\u27FA',\n\tlongleftrightarrow: '\\u27F7',\n\tlongmapsto: '\\u27FC',\n\tLongRightArrow: '\\u27F6',\n\tLongrightarrow: '\\u27F9',\n\tlongrightarrow: '\\u27F6',\n\tlooparrowleft: '\\u21AB',\n\tlooparrowright: '\\u21AC',\n\tlopar: '\\u2985',\n\tLopf: '\\uD835\\uDD43',\n\tlopf: '\\uD835\\uDD5D',\n\tloplus: '\\u2A2D',\n\tlotimes: '\\u2A34',\n\tlowast: '\\u2217',\n\tlowbar: '\\u005F',\n\tLowerLeftArrow: '\\u2199',\n\tLowerRightArrow: '\\u2198',\n\tloz: '\\u25CA',\n\tlozenge: '\\u25CA',\n\tlozf: '\\u29EB',\n\tlpar: '\\u0028',\n\tlparlt: '\\u2993',\n\tlrarr: '\\u21C6',\n\tlrcorner: '\\u231F',\n\tlrhar: '\\u21CB',\n\tlrhard: '\\u296D',\n\tlrm: '\\u200E',\n\tlrtri: '\\u22BF',\n\tlsaquo: '\\u2039',\n\tLscr: '\\u2112',\n\tlscr: '\\uD835\\uDCC1',\n\tLsh: '\\u21B0',\n\tlsh: '\\u21B0',\n\tlsim: '\\u2272',\n\tlsime: '\\u2A8D',\n\tlsimg: '\\u2A8F',\n\tlsqb: '\\u005B',\n\tlsquo: '\\u2018',\n\tlsquor: '\\u201A',\n\tLstrok: '\\u0141',\n\tlstrok: '\\u0142',\n\tLt: '\\u226A',\n\tLT: '\\u003C',\n\tlt: '\\u003C',\n\tltcc: '\\u2AA6',\n\tltcir: '\\u2A79',\n\tltdot: '\\u22D6',\n\tlthree: '\\u22CB',\n\tltimes: '\\u22C9',\n\tltlarr: '\\u2976',\n\tltquest: '\\u2A7B',\n\tltri: '\\u25C3',\n\tltrie: '\\u22B4',\n\tltrif: '\\u25C2',\n\tltrPar: '\\u2996',\n\tlurdshar: '\\u294A',\n\tluruhar: '\\u2966',\n\tlvertneqq: '\\u2268\\uFE00',\n\tlvnE: '\\u2268\\uFE00',\n\tmacr: '\\u00AF',\n\tmale: '\\u2642',\n\tmalt: '\\u2720',\n\tmaltese: '\\u2720',\n\tMap: '\\u2905',\n\tmap: '\\u21A6',\n\tmapsto: '\\u21A6',\n\tmapstodown: '\\u21A7',\n\tmapstoleft: '\\u21A4',\n\tmapstoup: '\\u21A5',\n\tmarker: '\\u25AE',\n\tmcomma: '\\u2A29',\n\tMcy: '\\u041C',\n\tmcy: '\\u043C',\n\tmdash: '\\u2014',\n\tmDDot: '\\u223A',\n\tmeasuredangle: '\\u2221',\n\tMediumSpace: '\\u205F',\n\tMellintrf: '\\u2133',\n\tMfr: '\\uD835\\uDD10',\n\tmfr: '\\uD835\\uDD2A',\n\tmho: '\\u2127',\n\tmicro: '\\u00B5',\n\tmid: '\\u2223',\n\tmidast: '\\u002A',\n\tmidcir: '\\u2AF0',\n\tmiddot: '\\u00B7',\n\tminus: '\\u2212',\n\tminusb: '\\u229F',\n\tminusd: '\\u2238',\n\tminusdu: '\\u2A2A',\n\tMinusPlus: '\\u2213',\n\tmlcp: '\\u2ADB',\n\tmldr: '\\u2026',\n\tmnplus: '\\u2213',\n\tmodels: '\\u22A7',\n\tMopf: '\\uD835\\uDD44',\n\tmopf: '\\uD835\\uDD5E',\n\tmp: '\\u2213',\n\tMscr: '\\u2133',\n\tmscr: '\\uD835\\uDCC2',\n\tmstpos: '\\u223E',\n\tMu: '\\u039C',\n\tmu: '\\u03BC',\n\tmultimap: '\\u22B8',\n\tmumap: '\\u22B8',\n\tnabla: '\\u2207',\n\tNacute: '\\u0143',\n\tnacute: '\\u0144',\n\tnang: '\\u2220\\u20D2',\n\tnap: '\\u2249',\n\tnapE: '\\u2A70\\u0338',\n\tnapid: '\\u224B\\u0338',\n\tnapos: '\\u0149',\n\tnapprox: '\\u2249',\n\tnatur: '\\u266E',\n\tnatural: '\\u266E',\n\tnaturals: '\\u2115',\n\tnbsp: '\\u00A0',\n\tnbump: '\\u224E\\u0338',\n\tnbumpe: '\\u224F\\u0338',\n\tncap: '\\u2A43',\n\tNcaron: '\\u0147',\n\tncaron: '\\u0148',\n\tNcedil: '\\u0145',\n\tncedil: '\\u0146',\n\tncong: '\\u2247',\n\tncongdot: '\\u2A6D\\u0338',\n\tncup: '\\u2A42',\n\tNcy: '\\u041D',\n\tncy: '\\u043D',\n\tndash: '\\u2013',\n\tne: '\\u2260',\n\tnearhk: '\\u2924',\n\tneArr: '\\u21D7',\n\tnearr: '\\u2197',\n\tnearrow: '\\u2197',\n\tnedot: '\\u2250\\u0338',\n\tNegativeMediumSpace: '\\u200B',\n\tNegativeThickSpace: '\\u200B',\n\tNegativeThinSpace: '\\u200B',\n\tNegativeVeryThinSpace: '\\u200B',\n\tnequiv: '\\u2262',\n\tnesear: '\\u2928',\n\tnesim: '\\u2242\\u0338',\n\tNestedGreaterGreater: '\\u226B',\n\tNestedLessLess: '\\u226A',\n\tNewLine: '\\u000A',\n\tnexist: '\\u2204',\n\tnexists: '\\u2204',\n\tNfr: '\\uD835\\uDD11',\n\tnfr: '\\uD835\\uDD2B',\n\tngE: '\\u2267\\u0338',\n\tnge: '\\u2271',\n\tngeq: '\\u2271',\n\tngeqq: '\\u2267\\u0338',\n\tngeqslant: '\\u2A7E\\u0338',\n\tnges: '\\u2A7E\\u0338',\n\tnGg: '\\u22D9\\u0338',\n\tngsim: '\\u2275',\n\tnGt: '\\u226B\\u20D2',\n\tngt: '\\u226F',\n\tngtr: '\\u226F',\n\tnGtv: '\\u226B\\u0338',\n\tnhArr: '\\u21CE',\n\tnharr: '\\u21AE',\n\tnhpar: '\\u2AF2',\n\tni: '\\u220B',\n\tnis: '\\u22FC',\n\tnisd: '\\u22FA',\n\tniv: '\\u220B',\n\tNJcy: '\\u040A',\n\tnjcy: '\\u045A',\n\tnlArr: '\\u21CD',\n\tnlarr: '\\u219A',\n\tnldr: '\\u2025',\n\tnlE: '\\u2266\\u0338',\n\tnle: '\\u2270',\n\tnLeftarrow: '\\u21CD',\n\tnleftarrow: '\\u219A',\n\tnLeftrightarrow: '\\u21CE',\n\tnleftrightarrow: '\\u21AE',\n\tnleq: '\\u2270',\n\tnleqq: '\\u2266\\u0338',\n\tnleqslant: '\\u2A7D\\u0338',\n\tnles: '\\u2A7D\\u0338',\n\tnless: '\\u226E',\n\tnLl: '\\u22D8\\u0338',\n\tnlsim: '\\u2274',\n\tnLt: '\\u226A\\u20D2',\n\tnlt: '\\u226E',\n\tnltri: '\\u22EA',\n\tnltrie: '\\u22EC',\n\tnLtv: '\\u226A\\u0338',\n\tnmid: '\\u2224',\n\tNoBreak: '\\u2060',\n\tNonBreakingSpace: '\\u00A0',\n\tNopf: '\\u2115',\n\tnopf: '\\uD835\\uDD5F',\n\tNot: '\\u2AEC',\n\tnot: '\\u00AC',\n\tNotCongruent: '\\u2262',\n\tNotCupCap: '\\u226D',\n\tNotDoubleVerticalBar: '\\u2226',\n\tNotElement: '\\u2209',\n\tNotEqual: '\\u2260',\n\tNotEqualTilde: '\\u2242\\u0338',\n\tNotExists: '\\u2204',\n\tNotGreater: '\\u226F',\n\tNotGreaterEqual: '\\u2271',\n\tNotGreaterFullEqual: '\\u2267\\u0338',\n\tNotGreaterGreater: '\\u226B\\u0338',\n\tNotGreaterLess: '\\u2279',\n\tNotGreaterSlantEqual: '\\u2A7E\\u0338',\n\tNotGreaterTilde: '\\u2275',\n\tNotHumpDownHump: '\\u224E\\u0338',\n\tNotHumpEqual: '\\u224F\\u0338',\n\tnotin: '\\u2209',\n\tnotindot: '\\u22F5\\u0338',\n\tnotinE: '\\u22F9\\u0338',\n\tnotinva: '\\u2209',\n\tnotinvb: '\\u22F7',\n\tnotinvc: '\\u22F6',\n\tNotLeftTriangle: '\\u22EA',\n\tNotLeftTriangleBar: '\\u29CF\\u0338',\n\tNotLeftTriangleEqual: '\\u22EC',\n\tNotLess: '\\u226E',\n\tNotLessEqual: '\\u2270',\n\tNotLessGreater: '\\u2278',\n\tNotLessLess: '\\u226A\\u0338',\n\tNotLessSlantEqual: '\\u2A7D\\u0338',\n\tNotLessTilde: '\\u2274',\n\tNotNestedGreaterGreater: '\\u2AA2\\u0338',\n\tNotNestedLessLess: '\\u2AA1\\u0338',\n\tnotni: '\\u220C',\n\tnotniva: '\\u220C',\n\tnotnivb: '\\u22FE',\n\tnotnivc: '\\u22FD',\n\tNotPrecedes: '\\u2280',\n\tNotPrecedesEqual: '\\u2AAF\\u0338',\n\tNotPrecedesSlantEqual: '\\u22E0',\n\tNotReverseElement: '\\u220C',\n\tNotRightTriangle: '\\u22EB',\n\tNotRightTriangleBar: '\\u29D0\\u0338',\n\tNotRightTriangleEqual: '\\u22ED',\n\tNotSquareSubset: '\\u228F\\u0338',\n\tNotSquareSubsetEqual: '\\u22E2',\n\tNotSquareSuperset: '\\u2290\\u0338',\n\tNotSquareSupersetEqual: '\\u22E3',\n\tNotSubset: '\\u2282\\u20D2',\n\tNotSubsetEqual: '\\u2288',\n\tNotSucceeds: '\\u2281',\n\tNotSucceedsEqual: '\\u2AB0\\u0338',\n\tNotSucceedsSlantEqual: '\\u22E1',\n\tNotSucceedsTilde: '\\u227F\\u0338',\n\tNotSuperset: '\\u2283\\u20D2',\n\tNotSupersetEqual: '\\u2289',\n\tNotTilde: '\\u2241',\n\tNotTildeEqual: '\\u2244',\n\tNotTildeFullEqual: '\\u2247',\n\tNotTildeTilde: '\\u2249',\n\tNotVerticalBar: '\\u2224',\n\tnpar: '\\u2226',\n\tnparallel: '\\u2226',\n\tnparsl: '\\u2AFD\\u20E5',\n\tnpart: '\\u2202\\u0338',\n\tnpolint: '\\u2A14',\n\tnpr: '\\u2280',\n\tnprcue: '\\u22E0',\n\tnpre: '\\u2AAF\\u0338',\n\tnprec: '\\u2280',\n\tnpreceq: '\\u2AAF\\u0338',\n\tnrArr: '\\u21CF',\n\tnrarr: '\\u219B',\n\tnrarrc: '\\u2933\\u0338',\n\tnrarrw: '\\u219D\\u0338',\n\tnRightarrow: '\\u21CF',\n\tnrightarrow: '\\u219B',\n\tnrtri: '\\u22EB',\n\tnrtrie: '\\u22ED',\n\tnsc: '\\u2281',\n\tnsccue: '\\u22E1',\n\tnsce: '\\u2AB0\\u0338',\n\tNscr: '\\uD835\\uDCA9',\n\tnscr: '\\uD835\\uDCC3',\n\tnshortmid: '\\u2224',\n\tnshortparallel: '\\u2226',\n\tnsim: '\\u2241',\n\tnsime: '\\u2244',\n\tnsimeq: '\\u2244',\n\tnsmid: '\\u2224',\n\tnspar: '\\u2226',\n\tnsqsube: '\\u22E2',\n\tnsqsupe: '\\u22E3',\n\tnsub: '\\u2284',\n\tnsubE: '\\u2AC5\\u0338',\n\tnsube: '\\u2288',\n\tnsubset: '\\u2282\\u20D2',\n\tnsubseteq: '\\u2288',\n\tnsubseteqq: '\\u2AC5\\u0338',\n\tnsucc: '\\u2281',\n\tnsucceq: '\\u2AB0\\u0338',\n\tnsup: '\\u2285',\n\tnsupE: '\\u2AC6\\u0338',\n\tnsupe: '\\u2289',\n\tnsupset: '\\u2283\\u20D2',\n\tnsupseteq: '\\u2289',\n\tnsupseteqq: '\\u2AC6\\u0338',\n\tntgl: '\\u2279',\n\tNtilde: '\\u00D1',\n\tntilde: '\\u00F1',\n\tntlg: '\\u2278',\n\tntriangleleft: '\\u22EA',\n\tntrianglelefteq: '\\u22EC',\n\tntriangleright: '\\u22EB',\n\tntrianglerighteq: '\\u22ED',\n\tNu: '\\u039D',\n\tnu: '\\u03BD',\n\tnum: '\\u0023',\n\tnumero: '\\u2116',\n\tnumsp: '\\u2007',\n\tnvap: '\\u224D\\u20D2',\n\tnVDash: '\\u22AF',\n\tnVdash: '\\u22AE',\n\tnvDash: '\\u22AD',\n\tnvdash: '\\u22AC',\n\tnvge: '\\u2265\\u20D2',\n\tnvgt: '\\u003E\\u20D2',\n\tnvHarr: '\\u2904',\n\tnvinfin: '\\u29DE',\n\tnvlArr: '\\u2902',\n\tnvle: '\\u2264\\u20D2',\n\tnvlt: '\\u003C\\u20D2',\n\tnvltrie: '\\u22B4\\u20D2',\n\tnvrArr: '\\u2903',\n\tnvrtrie: '\\u22B5\\u20D2',\n\tnvsim: '\\u223C\\u20D2',\n\tnwarhk: '\\u2923',\n\tnwArr: '\\u21D6',\n\tnwarr: '\\u2196',\n\tnwarrow: '\\u2196',\n\tnwnear: '\\u2927',\n\tOacute: '\\u00D3',\n\toacute: '\\u00F3',\n\toast: '\\u229B',\n\tocir: '\\u229A',\n\tOcirc: '\\u00D4',\n\tocirc: '\\u00F4',\n\tOcy: '\\u041E',\n\tocy: '\\u043E',\n\todash: '\\u229D',\n\tOdblac: '\\u0150',\n\todblac: '\\u0151',\n\todiv: '\\u2A38',\n\todot: '\\u2299',\n\todsold: '\\u29BC',\n\tOElig: '\\u0152',\n\toelig: '\\u0153',\n\tofcir: '\\u29BF',\n\tOfr: '\\uD835\\uDD12',\n\tofr: '\\uD835\\uDD2C',\n\togon: '\\u02DB',\n\tOgrave: '\\u00D2',\n\tograve: '\\u00F2',\n\togt: '\\u29C1',\n\tohbar: '\\u29B5',\n\tohm: '\\u03A9',\n\toint: '\\u222E',\n\tolarr: '\\u21BA',\n\tolcir: '\\u29BE',\n\tolcross: '\\u29BB',\n\toline: '\\u203E',\n\tolt: '\\u29C0',\n\tOmacr: '\\u014C',\n\tomacr: '\\u014D',\n\tOmega: '\\u03A9',\n\tomega: '\\u03C9',\n\tOmicron: '\\u039F',\n\tomicron: '\\u03BF',\n\tomid: '\\u29B6',\n\tominus: '\\u2296',\n\tOopf: '\\uD835\\uDD46',\n\toopf: '\\uD835\\uDD60',\n\topar: '\\u29B7',\n\tOpenCurlyDoubleQuote: '\\u201C',\n\tOpenCurlyQuote: '\\u2018',\n\toperp: '\\u29B9',\n\toplus: '\\u2295',\n\tOr: '\\u2A54',\n\tor: '\\u2228',\n\torarr: '\\u21BB',\n\tord: '\\u2A5D',\n\torder: '\\u2134',\n\torderof: '\\u2134',\n\tordf: '\\u00AA',\n\tordm: '\\u00BA',\n\torigof: '\\u22B6',\n\toror: '\\u2A56',\n\torslope: '\\u2A57',\n\torv: '\\u2A5B',\n\toS: '\\u24C8',\n\tOscr: '\\uD835\\uDCAA',\n\toscr: '\\u2134',\n\tOslash: '\\u00D8',\n\toslash: '\\u00F8',\n\tosol: '\\u2298',\n\tOtilde: '\\u00D5',\n\totilde: '\\u00F5',\n\tOtimes: '\\u2A37',\n\totimes: '\\u2297',\n\totimesas: '\\u2A36',\n\tOuml: '\\u00D6',\n\touml: '\\u00F6',\n\tovbar: '\\u233D',\n\tOverBar: '\\u203E',\n\tOverBrace: '\\u23DE',\n\tOverBracket: '\\u23B4',\n\tOverParenthesis: '\\u23DC',\n\tpar: '\\u2225',\n\tpara: '\\u00B6',\n\tparallel: '\\u2225',\n\tparsim: '\\u2AF3',\n\tparsl: '\\u2AFD',\n\tpart: '\\u2202',\n\tPartialD: '\\u2202',\n\tPcy: '\\u041F',\n\tpcy: '\\u043F',\n\tpercnt: '\\u0025',\n\tperiod: '\\u002E',\n\tpermil: '\\u2030',\n\tperp: '\\u22A5',\n\tpertenk: '\\u2031',\n\tPfr: '\\uD835\\uDD13',\n\tpfr: '\\uD835\\uDD2D',\n\tPhi: '\\u03A6',\n\tphi: '\\u03C6',\n\tphiv: '\\u03D5',\n\tphmmat: '\\u2133',\n\tphone: '\\u260E',\n\tPi: '\\u03A0',\n\tpi: '\\u03C0',\n\tpitchfork: '\\u22D4',\n\tpiv: '\\u03D6',\n\tplanck: '\\u210F',\n\tplanckh: '\\u210E',\n\tplankv: '\\u210F',\n\tplus: '\\u002B',\n\tplusacir: '\\u2A23',\n\tplusb: '\\u229E',\n\tpluscir: '\\u2A22',\n\tplusdo: '\\u2214',\n\tplusdu: '\\u2A25',\n\tpluse: '\\u2A72',\n\tPlusMinus: '\\u00B1',\n\tplusmn: '\\u00B1',\n\tplussim: '\\u2A26',\n\tplustwo: '\\u2A27',\n\tpm: '\\u00B1',\n\tPoincareplane: '\\u210C',\n\tpointint: '\\u2A15',\n\tPopf: '\\u2119',\n\tpopf: '\\uD835\\uDD61',\n\tpound: '\\u00A3',\n\tPr: '\\u2ABB',\n\tpr: '\\u227A',\n\tprap: '\\u2AB7',\n\tprcue: '\\u227C',\n\tprE: '\\u2AB3',\n\tpre: '\\u2AAF',\n\tprec: '\\u227A',\n\tprecapprox: '\\u2AB7',\n\tpreccurlyeq: '\\u227C',\n\tPrecedes: '\\u227A',\n\tPrecedesEqual: '\\u2AAF',\n\tPrecedesSlantEqual: '\\u227C',\n\tPrecedesTilde: '\\u227E',\n\tpreceq: '\\u2AAF',\n\tprecnapprox: '\\u2AB9',\n\tprecneqq: '\\u2AB5',\n\tprecnsim: '\\u22E8',\n\tprecsim: '\\u227E',\n\tPrime: '\\u2033',\n\tprime: '\\u2032',\n\tprimes: '\\u2119',\n\tprnap: '\\u2AB9',\n\tprnE: '\\u2AB5',\n\tprnsim: '\\u22E8',\n\tprod: '\\u220F',\n\tProduct: '\\u220F',\n\tprofalar: '\\u232E',\n\tprofline: '\\u2312',\n\tprofsurf: '\\u2313',\n\tprop: '\\u221D',\n\tProportion: '\\u2237',\n\tProportional: '\\u221D',\n\tpropto: '\\u221D',\n\tprsim: '\\u227E',\n\tprurel: '\\u22B0',\n\tPscr: '\\uD835\\uDCAB',\n\tpscr: '\\uD835\\uDCC5',\n\tPsi: '\\u03A8',\n\tpsi: '\\u03C8',\n\tpuncsp: '\\u2008',\n\tQfr: '\\uD835\\uDD14',\n\tqfr: '\\uD835\\uDD2E',\n\tqint: '\\u2A0C',\n\tQopf: '\\u211A',\n\tqopf: '\\uD835\\uDD62',\n\tqprime: '\\u2057',\n\tQscr: '\\uD835\\uDCAC',\n\tqscr: '\\uD835\\uDCC6',\n\tquaternions: '\\u210D',\n\tquatint: '\\u2A16',\n\tquest: '\\u003F',\n\tquesteq: '\\u225F',\n\tQUOT: '\\u0022',\n\tquot: '\\u0022',\n\trAarr: '\\u21DB',\n\trace: '\\u223D\\u0331',\n\tRacute: '\\u0154',\n\tracute: '\\u0155',\n\tradic: '\\u221A',\n\traemptyv: '\\u29B3',\n\tRang: '\\u27EB',\n\trang: '\\u27E9',\n\trangd: '\\u2992',\n\trange: '\\u29A5',\n\trangle: '\\u27E9',\n\traquo: '\\u00BB',\n\tRarr: '\\u21A0',\n\trArr: '\\u21D2',\n\trarr: '\\u2192',\n\trarrap: '\\u2975',\n\trarrb: '\\u21E5',\n\trarrbfs: '\\u2920',\n\trarrc: '\\u2933',\n\trarrfs: '\\u291E',\n\trarrhk: '\\u21AA',\n\trarrlp: '\\u21AC',\n\trarrpl: '\\u2945',\n\trarrsim: '\\u2974',\n\tRarrtl: '\\u2916',\n\trarrtl: '\\u21A3',\n\trarrw: '\\u219D',\n\trAtail: '\\u291C',\n\tratail: '\\u291A',\n\tratio: '\\u2236',\n\trationals: '\\u211A',\n\tRBarr: '\\u2910',\n\trBarr: '\\u290F',\n\trbarr: '\\u290D',\n\trbbrk: '\\u2773',\n\trbrace: '\\u007D',\n\trbrack: '\\u005D',\n\trbrke: '\\u298C',\n\trbrksld: '\\u298E',\n\trbrkslu: '\\u2990',\n\tRcaron: '\\u0158',\n\trcaron: '\\u0159',\n\tRcedil: '\\u0156',\n\trcedil: '\\u0157',\n\trceil: '\\u2309',\n\trcub: '\\u007D',\n\tRcy: '\\u0420',\n\trcy: '\\u0440',\n\trdca: '\\u2937',\n\trdldhar: '\\u2969',\n\trdquo: '\\u201D',\n\trdquor: '\\u201D',\n\trdsh: '\\u21B3',\n\tRe: '\\u211C',\n\treal: '\\u211C',\n\trealine: '\\u211B',\n\trealpart: '\\u211C',\n\treals: '\\u211D',\n\trect: '\\u25AD',\n\tREG: '\\u00AE',\n\treg: '\\u00AE',\n\tReverseElement: '\\u220B',\n\tReverseEquilibrium: '\\u21CB',\n\tReverseUpEquilibrium: '\\u296F',\n\trfisht: '\\u297D',\n\trfloor: '\\u230B',\n\tRfr: '\\u211C',\n\trfr: '\\uD835\\uDD2F',\n\trHar: '\\u2964',\n\trhard: '\\u21C1',\n\trharu: '\\u21C0',\n\trharul: '\\u296C',\n\tRho: '\\u03A1',\n\trho: '\\u03C1',\n\trhov: '\\u03F1',\n\tRightAngleBracket: '\\u27E9',\n\tRightArrow: '\\u2192',\n\tRightarrow: '\\u21D2',\n\trightarrow: '\\u2192',\n\tRightArrowBar: '\\u21E5',\n\tRightArrowLeftArrow: '\\u21C4',\n\trightarrowtail: '\\u21A3',\n\tRightCeiling: '\\u2309',\n\tRightDoubleBracket: '\\u27E7',\n\tRightDownTeeVector: '\\u295D',\n\tRightDownVector: '\\u21C2',\n\tRightDownVectorBar: '\\u2955',\n\tRightFloor: '\\u230B',\n\trightharpoondown: '\\u21C1',\n\trightharpoonup: '\\u21C0',\n\trightleftarrows: '\\u21C4',\n\trightleftharpoons: '\\u21CC',\n\trightrightarrows: '\\u21C9',\n\trightsquigarrow: '\\u219D',\n\tRightTee: '\\u22A2',\n\tRightTeeArrow: '\\u21A6',\n\tRightTeeVector: '\\u295B',\n\trightthreetimes: '\\u22CC',\n\tRightTriangle: '\\u22B3',\n\tRightTriangleBar: '\\u29D0',\n\tRightTriangleEqual: '\\u22B5',\n\tRightUpDownVector: '\\u294F',\n\tRightUpTeeVector: '\\u295C',\n\tRightUpVector: '\\u21BE',\n\tRightUpVectorBar: '\\u2954',\n\tRightVector: '\\u21C0',\n\tRightVectorBar: '\\u2953',\n\tring: '\\u02DA',\n\trisingdotseq: '\\u2253',\n\trlarr: '\\u21C4',\n\trlhar: '\\u21CC',\n\trlm: '\\u200F',\n\trmoust: '\\u23B1',\n\trmoustache: '\\u23B1',\n\trnmid: '\\u2AEE',\n\troang: '\\u27ED',\n\troarr: '\\u21FE',\n\trobrk: '\\u27E7',\n\tropar: '\\u2986',\n\tRopf: '\\u211D',\n\tropf: '\\uD835\\uDD63',\n\troplus: '\\u2A2E',\n\trotimes: '\\u2A35',\n\tRoundImplies: '\\u2970',\n\trpar: '\\u0029',\n\trpargt: '\\u2994',\n\trppolint: '\\u2A12',\n\trrarr: '\\u21C9',\n\tRrightarrow: '\\u21DB',\n\trsaquo: '\\u203A',\n\tRscr: '\\u211B',\n\trscr: '\\uD835\\uDCC7',\n\tRsh: '\\u21B1',\n\trsh: '\\u21B1',\n\trsqb: '\\u005D',\n\trsquo: '\\u2019',\n\trsquor: '\\u2019',\n\trthree: '\\u22CC',\n\trtimes: '\\u22CA',\n\trtri: '\\u25B9',\n\trtrie: '\\u22B5',\n\trtrif: '\\u25B8',\n\trtriltri: '\\u29CE',\n\tRuleDelayed: '\\u29F4',\n\truluhar: '\\u2968',\n\trx: '\\u211E',\n\tSacute: '\\u015A',\n\tsacute: '\\u015B',\n\tsbquo: '\\u201A',\n\tSc: '\\u2ABC',\n\tsc: '\\u227B',\n\tscap: '\\u2AB8',\n\tScaron: '\\u0160',\n\tscaron: '\\u0161',\n\tsccue: '\\u227D',\n\tscE: '\\u2AB4',\n\tsce: '\\u2AB0',\n\tScedil: '\\u015E',\n\tscedil: '\\u015F',\n\tScirc: '\\u015C',\n\tscirc: '\\u015D',\n\tscnap: '\\u2ABA',\n\tscnE: '\\u2AB6',\n\tscnsim: '\\u22E9',\n\tscpolint: '\\u2A13',\n\tscsim: '\\u227F',\n\tScy: '\\u0421',\n\tscy: '\\u0441',\n\tsdot: '\\u22C5',\n\tsdotb: '\\u22A1',\n\tsdote: '\\u2A66',\n\tsearhk: '\\u2925',\n\tseArr: '\\u21D8',\n\tsearr: '\\u2198',\n\tsearrow: '\\u2198',\n\tsect: '\\u00A7',\n\tsemi: '\\u003B',\n\tseswar: '\\u2929',\n\tsetminus: '\\u2216',\n\tsetmn: '\\u2216',\n\tsext: '\\u2736',\n\tSfr: '\\uD835\\uDD16',\n\tsfr: '\\uD835\\uDD30',\n\tsfrown: '\\u2322',\n\tsharp: '\\u266F',\n\tSHCHcy: '\\u0429',\n\tshchcy: '\\u0449',\n\tSHcy: '\\u0428',\n\tshcy: '\\u0448',\n\tShortDownArrow: '\\u2193',\n\tShortLeftArrow: '\\u2190',\n\tshortmid: '\\u2223',\n\tshortparallel: '\\u2225',\n\tShortRightArrow: '\\u2192',\n\tShortUpArrow: '\\u2191',\n\tshy: '\\u00AD',\n\tSigma: '\\u03A3',\n\tsigma: '\\u03C3',\n\tsigmaf: '\\u03C2',\n\tsigmav: '\\u03C2',\n\tsim: '\\u223C',\n\tsimdot: '\\u2A6A',\n\tsime: '\\u2243',\n\tsimeq: '\\u2243',\n\tsimg: '\\u2A9E',\n\tsimgE: '\\u2AA0',\n\tsiml: '\\u2A9D',\n\tsimlE: '\\u2A9F',\n\tsimne: '\\u2246',\n\tsimplus: '\\u2A24',\n\tsimrarr: '\\u2972',\n\tslarr: '\\u2190',\n\tSmallCircle: '\\u2218',\n\tsmallsetminus: '\\u2216',\n\tsmashp: '\\u2A33',\n\tsmeparsl: '\\u29E4',\n\tsmid: '\\u2223',\n\tsmile: '\\u2323',\n\tsmt: '\\u2AAA',\n\tsmte: '\\u2AAC',\n\tsmtes: '\\u2AAC\\uFE00',\n\tSOFTcy: '\\u042C',\n\tsoftcy: '\\u044C',\n\tsol: '\\u002F',\n\tsolb: '\\u29C4',\n\tsolbar: '\\u233F',\n\tSopf: '\\uD835\\uDD4A',\n\tsopf: '\\uD835\\uDD64',\n\tspades: '\\u2660',\n\tspadesuit: '\\u2660',\n\tspar: '\\u2225',\n\tsqcap: '\\u2293',\n\tsqcaps: '\\u2293\\uFE00',\n\tsqcup: '\\u2294',\n\tsqcups: '\\u2294\\uFE00',\n\tSqrt: '\\u221A',\n\tsqsub: '\\u228F',\n\tsqsube: '\\u2291',\n\tsqsubset: '\\u228F',\n\tsqsubseteq: '\\u2291',\n\tsqsup: '\\u2290',\n\tsqsupe: '\\u2292',\n\tsqsupset: '\\u2290',\n\tsqsupseteq: '\\u2292',\n\tsqu: '\\u25A1',\n\tSquare: '\\u25A1',\n\tsquare: '\\u25A1',\n\tSquareIntersection: '\\u2293',\n\tSquareSubset: '\\u228F',\n\tSquareSubsetEqual: '\\u2291',\n\tSquareSuperset: '\\u2290',\n\tSquareSupersetEqual: '\\u2292',\n\tSquareUnion: '\\u2294',\n\tsquarf: '\\u25AA',\n\tsquf: '\\u25AA',\n\tsrarr: '\\u2192',\n\tSscr: '\\uD835\\uDCAE',\n\tsscr: '\\uD835\\uDCC8',\n\tssetmn: '\\u2216',\n\tssmile: '\\u2323',\n\tsstarf: '\\u22C6',\n\tStar: '\\u22C6',\n\tstar: '\\u2606',\n\tstarf: '\\u2605',\n\tstraightepsilon: '\\u03F5',\n\tstraightphi: '\\u03D5',\n\tstrns: '\\u00AF',\n\tSub: '\\u22D0',\n\tsub: '\\u2282',\n\tsubdot: '\\u2ABD',\n\tsubE: '\\u2AC5',\n\tsube: '\\u2286',\n\tsubedot: '\\u2AC3',\n\tsubmult: '\\u2AC1',\n\tsubnE: '\\u2ACB',\n\tsubne: '\\u228A',\n\tsubplus: '\\u2ABF',\n\tsubrarr: '\\u2979',\n\tSubset: '\\u22D0',\n\tsubset: '\\u2282',\n\tsubseteq: '\\u2286',\n\tsubseteqq: '\\u2AC5',\n\tSubsetEqual: '\\u2286',\n\tsubsetneq: '\\u228A',\n\tsubsetneqq: '\\u2ACB',\n\tsubsim: '\\u2AC7',\n\tsubsub: '\\u2AD5',\n\tsubsup: '\\u2AD3',\n\tsucc: '\\u227B',\n\tsuccapprox: '\\u2AB8',\n\tsucccurlyeq: '\\u227D',\n\tSucceeds: '\\u227B',\n\tSucceedsEqual: '\\u2AB0',\n\tSucceedsSlantEqual: '\\u227D',\n\tSucceedsTilde: '\\u227F',\n\tsucceq: '\\u2AB0',\n\tsuccnapprox: '\\u2ABA',\n\tsuccneqq: '\\u2AB6',\n\tsuccnsim: '\\u22E9',\n\tsuccsim: '\\u227F',\n\tSuchThat: '\\u220B',\n\tSum: '\\u2211',\n\tsum: '\\u2211',\n\tsung: '\\u266A',\n\tSup: '\\u22D1',\n\tsup: '\\u2283',\n\tsup1: '\\u00B9',\n\tsup2: '\\u00B2',\n\tsup3: '\\u00B3',\n\tsupdot: '\\u2ABE',\n\tsupdsub: '\\u2AD8',\n\tsupE: '\\u2AC6',\n\tsupe: '\\u2287',\n\tsupedot: '\\u2AC4',\n\tSuperset: '\\u2283',\n\tSupersetEqual: '\\u2287',\n\tsuphsol: '\\u27C9',\n\tsuphsub: '\\u2AD7',\n\tsuplarr: '\\u297B',\n\tsupmult: '\\u2AC2',\n\tsupnE: '\\u2ACC',\n\tsupne: '\\u228B',\n\tsupplus: '\\u2AC0',\n\tSupset: '\\u22D1',\n\tsupset: '\\u2283',\n\tsupseteq: '\\u2287',\n\tsupseteqq: '\\u2AC6',\n\tsupsetneq: '\\u228B',\n\tsupsetneqq: '\\u2ACC',\n\tsupsim: '\\u2AC8',\n\tsupsub: '\\u2AD4',\n\tsupsup: '\\u2AD6',\n\tswarhk: '\\u2926',\n\tswArr: '\\u21D9',\n\tswarr: '\\u2199',\n\tswarrow: '\\u2199',\n\tswnwar: '\\u292A',\n\tszlig: '\\u00DF',\n\tTab: '\\u0009',\n\ttarget: '\\u2316',\n\tTau: '\\u03A4',\n\ttau: '\\u03C4',\n\ttbrk: '\\u23B4',\n\tTcaron: '\\u0164',\n\ttcaron: '\\u0165',\n\tTcedil: '\\u0162',\n\ttcedil: '\\u0163',\n\tTcy: '\\u0422',\n\ttcy: '\\u0442',\n\ttdot: '\\u20DB',\n\ttelrec: '\\u2315',\n\tTfr: '\\uD835\\uDD17',\n\ttfr: '\\uD835\\uDD31',\n\tthere4: '\\u2234',\n\tTherefore: '\\u2234',\n\ttherefore: '\\u2234',\n\tTheta: '\\u0398',\n\ttheta: '\\u03B8',\n\tthetasym: '\\u03D1',\n\tthetav: '\\u03D1',\n\tthickapprox: '\\u2248',\n\tthicksim: '\\u223C',\n\tThickSpace: '\\u205F\\u200A',\n\tthinsp: '\\u2009',\n\tThinSpace: '\\u2009',\n\tthkap: '\\u2248',\n\tthksim: '\\u223C',\n\tTHORN: '\\u00DE',\n\tthorn: '\\u00FE',\n\tTilde: '\\u223C',\n\ttilde: '\\u02DC',\n\tTildeEqual: '\\u2243',\n\tTildeFullEqual: '\\u2245',\n\tTildeTilde: '\\u2248',\n\ttimes: '\\u00D7',\n\ttimesb: '\\u22A0',\n\ttimesbar: '\\u2A31',\n\ttimesd: '\\u2A30',\n\ttint: '\\u222D',\n\ttoea: '\\u2928',\n\ttop: '\\u22A4',\n\ttopbot: '\\u2336',\n\ttopcir: '\\u2AF1',\n\tTopf: '\\uD835\\uDD4B',\n\ttopf: '\\uD835\\uDD65',\n\ttopfork: '\\u2ADA',\n\ttosa: '\\u2929',\n\ttprime: '\\u2034',\n\tTRADE: '\\u2122',\n\ttrade: '\\u2122',\n\ttriangle: '\\u25B5',\n\ttriangledown: '\\u25BF',\n\ttriangleleft: '\\u25C3',\n\ttrianglelefteq: '\\u22B4',\n\ttriangleq: '\\u225C',\n\ttriangleright: '\\u25B9',\n\ttrianglerighteq: '\\u22B5',\n\ttridot: '\\u25EC',\n\ttrie: '\\u225C',\n\ttriminus: '\\u2A3A',\n\tTripleDot: '\\u20DB',\n\ttriplus: '\\u2A39',\n\ttrisb: '\\u29CD',\n\ttritime: '\\u2A3B',\n\ttrpezium: '\\u23E2',\n\tTscr: '\\uD835\\uDCAF',\n\ttscr: '\\uD835\\uDCC9',\n\tTScy: '\\u0426',\n\ttscy: '\\u0446',\n\tTSHcy: '\\u040B',\n\ttshcy: '\\u045B',\n\tTstrok: '\\u0166',\n\ttstrok: '\\u0167',\n\ttwixt: '\\u226C',\n\ttwoheadleftarrow: '\\u219E',\n\ttwoheadrightarrow: '\\u21A0',\n\tUacute: '\\u00DA',\n\tuacute: '\\u00FA',\n\tUarr: '\\u219F',\n\tuArr: '\\u21D1',\n\tuarr: '\\u2191',\n\tUarrocir: '\\u2949',\n\tUbrcy: '\\u040E',\n\tubrcy: '\\u045E',\n\tUbreve: '\\u016C',\n\tubreve: '\\u016D',\n\tUcirc: '\\u00DB',\n\tucirc: '\\u00FB',\n\tUcy: '\\u0423',\n\tucy: '\\u0443',\n\tudarr: '\\u21C5',\n\tUdblac: '\\u0170',\n\tudblac: '\\u0171',\n\tudhar: '\\u296E',\n\tufisht: '\\u297E',\n\tUfr: '\\uD835\\uDD18',\n\tufr: '\\uD835\\uDD32',\n\tUgrave: '\\u00D9',\n\tugrave: '\\u00F9',\n\tuHar: '\\u2963',\n\tuharl: '\\u21BF',\n\tuharr: '\\u21BE',\n\tuhblk: '\\u2580',\n\tulcorn: '\\u231C',\n\tulcorner: '\\u231C',\n\tulcrop: '\\u230F',\n\tultri: '\\u25F8',\n\tUmacr: '\\u016A',\n\tumacr: '\\u016B',\n\tuml: '\\u00A8',\n\tUnderBar: '\\u005F',\n\tUnderBrace: '\\u23DF',\n\tUnderBracket: '\\u23B5',\n\tUnderParenthesis: '\\u23DD',\n\tUnion: '\\u22C3',\n\tUnionPlus: '\\u228E',\n\tUogon: '\\u0172',\n\tuogon: '\\u0173',\n\tUopf: '\\uD835\\uDD4C',\n\tuopf: '\\uD835\\uDD66',\n\tUpArrow: '\\u2191',\n\tUparrow: '\\u21D1',\n\tuparrow: '\\u2191',\n\tUpArrowBar: '\\u2912',\n\tUpArrowDownArrow: '\\u21C5',\n\tUpDownArrow: '\\u2195',\n\tUpdownarrow: '\\u21D5',\n\tupdownarrow: '\\u2195',\n\tUpEquilibrium: '\\u296E',\n\tupharpoonleft: '\\u21BF',\n\tupharpoonright: '\\u21BE',\n\tuplus: '\\u228E',\n\tUpperLeftArrow: '\\u2196',\n\tUpperRightArrow: '\\u2197',\n\tUpsi: '\\u03D2',\n\tupsi: '\\u03C5',\n\tupsih: '\\u03D2',\n\tUpsilon: '\\u03A5',\n\tupsilon: '\\u03C5',\n\tUpTee: '\\u22A5',\n\tUpTeeArrow: '\\u21A5',\n\tupuparrows: '\\u21C8',\n\turcorn: '\\u231D',\n\turcorner: '\\u231D',\n\turcrop: '\\u230E',\n\tUring: '\\u016E',\n\turing: '\\u016F',\n\turtri: '\\u25F9',\n\tUscr: '\\uD835\\uDCB0',\n\tuscr: '\\uD835\\uDCCA',\n\tutdot: '\\u22F0',\n\tUtilde: '\\u0168',\n\tutilde: '\\u0169',\n\tutri: '\\u25B5',\n\tutrif: '\\u25B4',\n\tuuarr: '\\u21C8',\n\tUuml: '\\u00DC',\n\tuuml: '\\u00FC',\n\tuwangle: '\\u29A7',\n\tvangrt: '\\u299C',\n\tvarepsilon: '\\u03F5',\n\tvarkappa: '\\u03F0',\n\tvarnothing: '\\u2205',\n\tvarphi: '\\u03D5',\n\tvarpi: '\\u03D6',\n\tvarpropto: '\\u221D',\n\tvArr: '\\u21D5',\n\tvarr: '\\u2195',\n\tvarrho: '\\u03F1',\n\tvarsigma: '\\u03C2',\n\tvarsubsetneq: '\\u228A\\uFE00',\n\tvarsubsetneqq: '\\u2ACB\\uFE00',\n\tvarsupsetneq: '\\u228B\\uFE00',\n\tvarsupsetneqq: '\\u2ACC\\uFE00',\n\tvartheta: '\\u03D1',\n\tvartriangleleft: '\\u22B2',\n\tvartriangleright: '\\u22B3',\n\tVbar: '\\u2AEB',\n\tvBar: '\\u2AE8',\n\tvBarv: '\\u2AE9',\n\tVcy: '\\u0412',\n\tvcy: '\\u0432',\n\tVDash: '\\u22AB',\n\tVdash: '\\u22A9',\n\tvDash: '\\u22A8',\n\tvdash: '\\u22A2',\n\tVdashl: '\\u2AE6',\n\tVee: '\\u22C1',\n\tvee: '\\u2228',\n\tveebar: '\\u22BB',\n\tveeeq: '\\u225A',\n\tvellip: '\\u22EE',\n\tVerbar: '\\u2016',\n\tverbar: '\\u007C',\n\tVert: '\\u2016',\n\tvert: '\\u007C',\n\tVerticalBar: '\\u2223',\n\tVerticalLine: '\\u007C',\n\tVerticalSeparator: '\\u2758',\n\tVerticalTilde: '\\u2240',\n\tVeryThinSpace: '\\u200A',\n\tVfr: '\\uD835\\uDD19',\n\tvfr: '\\uD835\\uDD33',\n\tvltri: '\\u22B2',\n\tvnsub: '\\u2282\\u20D2',\n\tvnsup: '\\u2283\\u20D2',\n\tVopf: '\\uD835\\uDD4D',\n\tvopf: '\\uD835\\uDD67',\n\tvprop: '\\u221D',\n\tvrtri: '\\u22B3',\n\tVscr: '\\uD835\\uDCB1',\n\tvscr: '\\uD835\\uDCCB',\n\tvsubnE: '\\u2ACB\\uFE00',\n\tvsubne: '\\u228A\\uFE00',\n\tvsupnE: '\\u2ACC\\uFE00',\n\tvsupne: '\\u228B\\uFE00',\n\tVvdash: '\\u22AA',\n\tvzigzag: '\\u299A',\n\tWcirc: '\\u0174',\n\twcirc: '\\u0175',\n\twedbar: '\\u2A5F',\n\tWedge: '\\u22C0',\n\twedge: '\\u2227',\n\twedgeq: '\\u2259',\n\tweierp: '\\u2118',\n\tWfr: '\\uD835\\uDD1A',\n\twfr: '\\uD835\\uDD34',\n\tWopf: '\\uD835\\uDD4E',\n\twopf: '\\uD835\\uDD68',\n\twp: '\\u2118',\n\twr: '\\u2240',\n\twreath: '\\u2240',\n\tWscr: '\\uD835\\uDCB2',\n\twscr: '\\uD835\\uDCCC',\n\txcap: '\\u22C2',\n\txcirc: '\\u25EF',\n\txcup: '\\u22C3',\n\txdtri: '\\u25BD',\n\tXfr: '\\uD835\\uDD1B',\n\txfr: '\\uD835\\uDD35',\n\txhArr: '\\u27FA',\n\txharr: '\\u27F7',\n\tXi: '\\u039E',\n\txi: '\\u03BE',\n\txlArr: '\\u27F8',\n\txlarr: '\\u27F5',\n\txmap: '\\u27FC',\n\txnis: '\\u22FB',\n\txodot: '\\u2A00',\n\tXopf: '\\uD835\\uDD4F',\n\txopf: '\\uD835\\uDD69',\n\txoplus: '\\u2A01',\n\txotime: '\\u2A02',\n\txrArr: '\\u27F9',\n\txrarr: '\\u27F6',\n\tXscr: '\\uD835\\uDCB3',\n\txscr: '\\uD835\\uDCCD',\n\txsqcup: '\\u2A06',\n\txuplus: '\\u2A04',\n\txutri: '\\u25B3',\n\txvee: '\\u22C1',\n\txwedge: '\\u22C0',\n\tYacute: '\\u00DD',\n\tyacute: '\\u00FD',\n\tYAcy: '\\u042F',\n\tyacy: '\\u044F',\n\tYcirc: '\\u0176',\n\tycirc: '\\u0177',\n\tYcy: '\\u042B',\n\tycy: '\\u044B',\n\tyen: '\\u00A5',\n\tYfr: '\\uD835\\uDD1C',\n\tyfr: '\\uD835\\uDD36',\n\tYIcy: '\\u0407',\n\tyicy: '\\u0457',\n\tYopf: '\\uD835\\uDD50',\n\tyopf: '\\uD835\\uDD6A',\n\tYscr: '\\uD835\\uDCB4',\n\tyscr: '\\uD835\\uDCCE',\n\tYUcy: '\\u042E',\n\tyucy: '\\u044E',\n\tYuml: '\\u0178',\n\tyuml: '\\u00FF',\n\tZacute: '\\u0179',\n\tzacute: '\\u017A',\n\tZcaron: '\\u017D',\n\tzcaron: '\\u017E',\n\tZcy: '\\u0417',\n\tzcy: '\\u0437',\n\tZdot: '\\u017B',\n\tzdot: '\\u017C',\n\tzeetrf: '\\u2128',\n\tZeroWidthSpace: '\\u200B',\n\tZeta: '\\u0396',\n\tzeta: '\\u03B6',\n\tZfr: '\\u2128',\n\tzfr: '\\uD835\\uDD37',\n\tZHcy: '\\u0416',\n\tzhcy: '\\u0436',\n\tzigrarr: '\\u21DD',\n\tZopf: '\\u2124',\n\tzopf: '\\uD835\\uDD6B',\n\tZscr: '\\uD835\\uDCB5',\n\tzscr: '\\uD835\\uDCCF',\n\tzwj: '\\u200D',\n\tzwnj: '\\u200C',\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES;\n","var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\"){\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n","\"use strict\";\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar InterceptorsStorage = /*#__PURE__*/function () {\n function InterceptorsStorage() {\n this.typeToInterceptorsMap_ = new Map();\n this.enabled_ = false;\n }\n\n var _proto = InterceptorsStorage.prototype;\n\n _proto.getIsEnabled = function getIsEnabled() {\n return this.enabled_;\n };\n\n _proto.enable = function enable() {\n this.enabled_ = true;\n };\n\n _proto.disable = function disable() {\n this.enabled_ = false;\n };\n\n _proto.reset = function reset() {\n this.typeToInterceptorsMap_ = new Map();\n this.enabled_ = false;\n };\n\n _proto.addInterceptor = function addInterceptor(type, interceptor) {\n if (!this.typeToInterceptorsMap_.has(type)) {\n this.typeToInterceptorsMap_.set(type, new Set());\n }\n\n var interceptorsSet = this.typeToInterceptorsMap_.get(type);\n\n if (interceptorsSet.has(interceptor)) {\n // already have this interceptor\n return false;\n }\n\n interceptorsSet.add(interceptor);\n return true;\n };\n\n _proto.removeInterceptor = function removeInterceptor(type, interceptor) {\n var interceptorsSet = this.typeToInterceptorsMap_.get(type);\n\n if (interceptorsSet && interceptorsSet.has(interceptor)) {\n interceptorsSet.delete(interceptor);\n return true;\n }\n\n return false;\n };\n\n _proto.clearInterceptorsByType = function clearInterceptorsByType(type) {\n var interceptorsSet = this.typeToInterceptorsMap_.get(type);\n\n if (!interceptorsSet) {\n return false;\n }\n\n this.typeToInterceptorsMap_.delete(type);\n this.typeToInterceptorsMap_.set(type, new Set());\n return true;\n };\n\n _proto.clear = function clear() {\n if (!this.typeToInterceptorsMap_.size) {\n return false;\n }\n\n this.typeToInterceptorsMap_ = new Map();\n return true;\n };\n\n _proto.getForType = function getForType(type) {\n return this.typeToInterceptorsMap_.get(type) || new Set();\n };\n\n _proto.execute = function execute(type, payload) {\n var interceptors = this.getForType(type);\n\n for (var _iterator = _createForOfIteratorHelperLoose(interceptors), _step; !(_step = _iterator()).done;) {\n var interceptor = _step.value;\n\n try {\n payload = interceptor(payload);\n } catch (e) {//ignore\n }\n }\n\n return payload;\n };\n\n return InterceptorsStorage;\n}();\n\nmodule.exports = InterceptorsStorage;","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShorexSwiper.vue?vue&type=style&index=0&id=974a797e&prod&scoped=true&lang=less\"","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\nvar document = require('global/document');\n\nvar _objCreate = Object.create || (function() {\n function F() {}\n return function(o) {\n if (arguments.length !== 1) {\n throw new Error('Object.create shim only accepts one parameter.');\n }\n F.prototype = o;\n return new F();\n };\n})();\n\n// Creates a new ParserError object from an errorData object. The errorData\n// object should have default code and message properties. The default message\n// property can be overriden by passing in a message parameter.\n// See ParsingError.Errors below for acceptable errors.\nfunction ParsingError(errorData, message) {\n this.name = \"ParsingError\";\n this.code = errorData.code;\n this.message = message || errorData.message;\n}\nParsingError.prototype = _objCreate(Error.prototype);\nParsingError.prototype.constructor = ParsingError;\n\n// ParsingError metadata for acceptable ParsingErrors.\nParsingError.Errors = {\n BadSignature: {\n code: 0,\n message: \"Malformed WebVTT signature.\"\n },\n BadTimeStamp: {\n code: 1,\n message: \"Malformed time stamp.\"\n }\n};\n\n// Try to parse input as a time stamp.\nfunction parseTimeStamp(input) {\n\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + (f | 0) / 1000;\n }\n\n var m = input.match(/^(\\d+):(\\d{1,2})(:\\d{1,2})?\\.(\\d{3})/);\n if (!m) {\n return null;\n }\n\n if (m[3]) {\n // Timestamp takes the form of [hours]:[minutes]:[seconds].[milliseconds]\n return computeSeconds(m[1], m[2], m[3].replace(\":\", \"\"), m[4]);\n } else if (m[1] > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[1], m[2], 0, m[4]);\n } else {\n // Timestamp takes the form of [minutes]:[seconds].[milliseconds]\n return computeSeconds(0, m[1], m[2], m[4]);\n }\n}\n\n// A settings object holds key/value pairs and will ignore anything but the first\n// assignment to a specific key.\nfunction Settings() {\n this.values = _objCreate(null);\n}\n\nSettings.prototype = {\n // Only accept the first assignment to any key.\n set: function(k, v) {\n if (!this.get(k) && v !== \"\") {\n this.values[k] = v;\n }\n },\n // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n get: function(k, dflt, defaultKey) {\n if (defaultKey) {\n return this.has(k) ? this.values[k] : dflt[defaultKey];\n }\n return this.has(k) ? this.values[k] : dflt;\n },\n // Check whether we have a value for a key.\n has: function(k) {\n return k in this.values;\n },\n // Accept a setting if its one of the given alternatives.\n alt: function(k, v, a) {\n for (var n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n },\n // Accept a setting if its a valid (signed) integer.\n integer: function(k, v) {\n if (/^-?\\d+$/.test(v)) { // integer\n this.set(k, parseInt(v, 10));\n }\n },\n // Accept a setting if its a valid percentage.\n percent: function(k, v) {\n var m;\n if ((m = v.match(/^([\\d]{1,3})(\\.[\\d]*)?%$/))) {\n v = parseFloat(v);\n if (v >= 0 && v <= 100) {\n this.set(k, v);\n return true;\n }\n }\n return false;\n }\n};\n\n// Helper function to parse input into groups separated by 'groupDelim', and\n// interprete each group as a key/value pair separated by 'keyValueDelim'.\nfunction parseOptions(input, callback, keyValueDelim, groupDelim) {\n var groups = groupDelim ? input.split(groupDelim) : [input];\n for (var i in groups) {\n if (typeof groups[i] !== \"string\") {\n continue;\n }\n var kv = groups[i].split(keyValueDelim);\n if (kv.length !== 2) {\n continue;\n }\n var k = kv[0].trim();\n var v = kv[1].trim();\n callback(k, v);\n }\n}\n\nfunction parseCue(input, cue, regionList) {\n // Remember the original input if we need to throw an error.\n var oInput = input;\n // 4.1 WebVTT timestamp\n function consumeTimeStamp() {\n var ts = parseTimeStamp(input);\n if (ts === null) {\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed timestamp: \" + oInput);\n }\n // Remove time stamp from input.\n input = input.replace(/^[^\\sa-zA-Z-]+/, \"\");\n return ts;\n }\n\n // 4.4.2 WebVTT cue settings\n function consumeCueSettings(input, cue) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"region\":\n // Find the last region we parsed with the same region id.\n for (var i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n break;\n case \"vertical\":\n settings.alt(k, v, [\"rl\", \"lr\"]);\n break;\n case \"line\":\n var vals = v.split(\",\"),\n vals0 = vals[0];\n settings.integer(k, vals0);\n settings.percent(k, vals0) ? settings.set(\"snapToLines\", false) : null;\n settings.alt(k, vals0, [\"auto\"]);\n if (vals.length === 2) {\n settings.alt(\"lineAlign\", vals[1], [\"start\", \"center\", \"end\"]);\n }\n break;\n case \"position\":\n vals = v.split(\",\");\n settings.percent(k, vals[0]);\n if (vals.length === 2) {\n settings.alt(\"positionAlign\", vals[1], [\"start\", \"center\", \"end\"]);\n }\n break;\n case \"size\":\n settings.percent(k, v);\n break;\n case \"align\":\n settings.alt(k, v, [\"start\", \"center\", \"end\", \"left\", \"right\"]);\n break;\n }\n }, /:/, /\\s/);\n\n // Apply default values for any missing fields.\n cue.region = settings.get(\"region\", null);\n cue.vertical = settings.get(\"vertical\", \"\");\n try {\n cue.line = settings.get(\"line\", \"auto\");\n } catch (e) {}\n cue.lineAlign = settings.get(\"lineAlign\", \"start\");\n cue.snapToLines = settings.get(\"snapToLines\", true);\n cue.size = settings.get(\"size\", 100);\n // Safari still uses the old middle value and won't accept center\n try {\n cue.align = settings.get(\"align\", \"center\");\n } catch (e) {\n cue.align = settings.get(\"align\", \"middle\");\n }\n try {\n cue.position = settings.get(\"position\", \"auto\");\n } catch (e) {\n cue.position = settings.get(\"position\", {\n start: 0,\n left: 0,\n center: 50,\n middle: 50,\n end: 100,\n right: 100\n }, cue.align);\n }\n\n\n cue.positionAlign = settings.get(\"positionAlign\", {\n start: \"start\",\n left: \"start\",\n center: \"center\",\n middle: \"center\",\n end: \"end\",\n right: \"end\"\n }, cue.align);\n }\n\n function skipWhitespace() {\n input = input.replace(/^\\s+/, \"\");\n }\n\n // 4.1 WebVTT cue timings.\n skipWhitespace();\n cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n skipWhitespace();\n if (input.substr(0, 3) !== \"-->\") { // (3) next characters must match \"-->\"\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed time stamp (time stamps must be separated by '-->'): \" +\n oInput);\n }\n input = input.substr(3);\n skipWhitespace();\n cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n\n // 4.1 WebVTT cue settings list.\n skipWhitespace();\n consumeCueSettings(input, cue);\n}\n\n// When evaluating this file as part of a Webpack bundle for server\n// side rendering, `document` is an empty object.\nvar TEXTAREA_ELEMENT = document.createElement && document.createElement(\"textarea\");\n\nvar TAG_NAME = {\n c: \"span\",\n i: \"i\",\n b: \"b\",\n u: \"u\",\n ruby: \"ruby\",\n rt: \"rt\",\n v: \"span\",\n lang: \"span\"\n};\n\n// 5.1 default text color\n// 5.2 default text background color is equivalent to text color with bg_ prefix\nvar DEFAULT_COLOR_CLASS = {\n white: 'rgba(255,255,255,1)',\n lime: 'rgba(0,255,0,1)',\n cyan: 'rgba(0,255,255,1)',\n red: 'rgba(255,0,0,1)',\n yellow: 'rgba(255,255,0,1)',\n magenta: 'rgba(255,0,255,1)',\n blue: 'rgba(0,0,255,1)',\n black: 'rgba(0,0,0,1)'\n};\n\nvar TAG_ANNOTATION = {\n v: \"title\",\n lang: \"lang\"\n};\n\nvar NEEDS_PARENT = {\n rt: \"ruby\"\n};\n\n// Parse content into a document fragment.\nfunction parseContent(window, input) {\n function nextToken() {\n // Check for end-of-string.\n if (!input) {\n return null;\n }\n\n // Consume 'n' characters from the input.\n function consume(result) {\n input = input.substr(result.length);\n return result;\n }\n\n var m = input.match(/^([^<]*)(<[^>]*>?)?/);\n // If there is some text before the next tag, return it, otherwise return\n // the tag.\n return consume(m[1] ? m[1] : m[2]);\n }\n\n function unescape(s) {\n TEXTAREA_ELEMENT.innerHTML = s;\n s = TEXTAREA_ELEMENT.textContent;\n TEXTAREA_ELEMENT.textContent = \"\";\n return s;\n }\n\n function shouldAdd(current, element) {\n return !NEEDS_PARENT[element.localName] ||\n NEEDS_PARENT[element.localName] === current.localName;\n }\n\n // Create an element for this tag.\n function createElement(type, annotation) {\n var tagName = TAG_NAME[type];\n if (!tagName) {\n return null;\n }\n var element = window.document.createElement(tagName);\n var name = TAG_ANNOTATION[type];\n if (name && annotation) {\n element[name] = annotation.trim();\n }\n return element;\n }\n\n var rootDiv = window.document.createElement(\"div\"),\n current = rootDiv,\n t,\n tagStack = [];\n\n while ((t = nextToken()) !== null) {\n if (t[0] === '<') {\n if (t[1] === \"/\") {\n // If the closing tag matches, move back up to the parent node.\n if (tagStack.length &&\n tagStack[tagStack.length - 1] === t.substr(2).replace(\">\", \"\")) {\n tagStack.pop();\n current = current.parentNode;\n }\n // Otherwise just ignore the end tag.\n continue;\n }\n var ts = parseTimeStamp(t.substr(1, t.length - 2));\n var node;\n if (ts) {\n // Timestamps are lead nodes as well.\n node = window.document.createProcessingInstruction(\"timestamp\", ts);\n current.appendChild(node);\n continue;\n }\n var m = t.match(/^<([^.\\s/0-9>]+)(\\.[^\\s\\\\>]+)?([^>\\\\]+)?(\\\\?)>?$/);\n // If we can't parse the tag, skip to the next tag.\n if (!m) {\n continue;\n }\n // Try to construct an element, and ignore the tag if we couldn't.\n node = createElement(m[1], m[3]);\n if (!node) {\n continue;\n }\n // Determine if the tag should be added based on the context of where it\n // is placed in the cuetext.\n if (!shouldAdd(current, node)) {\n continue;\n }\n // Set the class list (as a list of classes, separated by space).\n if (m[2]) {\n var classes = m[2].split('.');\n\n classes.forEach(function(cl) {\n var bgColor = /^bg_/.test(cl);\n // slice out `bg_` if it's a background color\n var colorName = bgColor ? cl.slice(3) : cl;\n\n if (DEFAULT_COLOR_CLASS.hasOwnProperty(colorName)) {\n var propName = bgColor ? 'background-color' : 'color';\n var propValue = DEFAULT_COLOR_CLASS[colorName];\n\n node.style[propName] = propValue;\n }\n });\n\n node.className = classes.join(' ');\n }\n // Append the node to the current node, and enter the scope of the new\n // node.\n tagStack.push(m[1]);\n current.appendChild(node);\n current = node;\n continue;\n }\n\n // Text nodes are leaf nodes.\n current.appendChild(window.document.createTextNode(unescape(t)));\n }\n\n return rootDiv;\n}\n\n// This is a list of all the Unicode characters that have a strong\n// right-to-left category. What this means is that these characters are\n// written right-to-left for sure. It was generated by pulling all the strong\n// right-to-left characters out of the Unicode data table. That table can\n// found at: http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\nvar strongRTLRanges = [[0x5be, 0x5be], [0x5c0, 0x5c0], [0x5c3, 0x5c3], [0x5c6, 0x5c6],\n [0x5d0, 0x5ea], [0x5f0, 0x5f4], [0x608, 0x608], [0x60b, 0x60b], [0x60d, 0x60d],\n [0x61b, 0x61b], [0x61e, 0x64a], [0x66d, 0x66f], [0x671, 0x6d5], [0x6e5, 0x6e6],\n [0x6ee, 0x6ef], [0x6fa, 0x70d], [0x70f, 0x710], [0x712, 0x72f], [0x74d, 0x7a5],\n [0x7b1, 0x7b1], [0x7c0, 0x7ea], [0x7f4, 0x7f5], [0x7fa, 0x7fa], [0x800, 0x815],\n [0x81a, 0x81a], [0x824, 0x824], [0x828, 0x828], [0x830, 0x83e], [0x840, 0x858],\n [0x85e, 0x85e], [0x8a0, 0x8a0], [0x8a2, 0x8ac], [0x200f, 0x200f],\n [0xfb1d, 0xfb1d], [0xfb1f, 0xfb28], [0xfb2a, 0xfb36], [0xfb38, 0xfb3c],\n [0xfb3e, 0xfb3e], [0xfb40, 0xfb41], [0xfb43, 0xfb44], [0xfb46, 0xfbc1],\n [0xfbd3, 0xfd3d], [0xfd50, 0xfd8f], [0xfd92, 0xfdc7], [0xfdf0, 0xfdfc],\n [0xfe70, 0xfe74], [0xfe76, 0xfefc], [0x10800, 0x10805], [0x10808, 0x10808],\n [0x1080a, 0x10835], [0x10837, 0x10838], [0x1083c, 0x1083c], [0x1083f, 0x10855],\n [0x10857, 0x1085f], [0x10900, 0x1091b], [0x10920, 0x10939], [0x1093f, 0x1093f],\n [0x10980, 0x109b7], [0x109be, 0x109bf], [0x10a00, 0x10a00], [0x10a10, 0x10a13],\n [0x10a15, 0x10a17], [0x10a19, 0x10a33], [0x10a40, 0x10a47], [0x10a50, 0x10a58],\n [0x10a60, 0x10a7f], [0x10b00, 0x10b35], [0x10b40, 0x10b55], [0x10b58, 0x10b72],\n [0x10b78, 0x10b7f], [0x10c00, 0x10c48], [0x1ee00, 0x1ee03], [0x1ee05, 0x1ee1f],\n [0x1ee21, 0x1ee22], [0x1ee24, 0x1ee24], [0x1ee27, 0x1ee27], [0x1ee29, 0x1ee32],\n [0x1ee34, 0x1ee37], [0x1ee39, 0x1ee39], [0x1ee3b, 0x1ee3b], [0x1ee42, 0x1ee42],\n [0x1ee47, 0x1ee47], [0x1ee49, 0x1ee49], [0x1ee4b, 0x1ee4b], [0x1ee4d, 0x1ee4f],\n [0x1ee51, 0x1ee52], [0x1ee54, 0x1ee54], [0x1ee57, 0x1ee57], [0x1ee59, 0x1ee59],\n [0x1ee5b, 0x1ee5b], [0x1ee5d, 0x1ee5d], [0x1ee5f, 0x1ee5f], [0x1ee61, 0x1ee62],\n [0x1ee64, 0x1ee64], [0x1ee67, 0x1ee6a], [0x1ee6c, 0x1ee72], [0x1ee74, 0x1ee77],\n [0x1ee79, 0x1ee7c], [0x1ee7e, 0x1ee7e], [0x1ee80, 0x1ee89], [0x1ee8b, 0x1ee9b],\n [0x1eea1, 0x1eea3], [0x1eea5, 0x1eea9], [0x1eeab, 0x1eebb], [0x10fffd, 0x10fffd]];\n\nfunction isStrongRTLChar(charCode) {\n for (var i = 0; i < strongRTLRanges.length; i++) {\n var currentRange = strongRTLRanges[i];\n if (charCode >= currentRange[0] && charCode <= currentRange[1]) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction determineBidi(cueDiv) {\n var nodeStack = [],\n text = \"\",\n charCode;\n\n if (!cueDiv || !cueDiv.childNodes) {\n return \"ltr\";\n }\n\n function pushNodes(nodeStack, node) {\n for (var i = node.childNodes.length - 1; i >= 0; i--) {\n nodeStack.push(node.childNodes[i]);\n }\n }\n\n function nextTextNode(nodeStack) {\n if (!nodeStack || !nodeStack.length) {\n return null;\n }\n\n var node = nodeStack.pop(),\n text = node.textContent || node.innerText;\n if (text) {\n // TODO: This should match all unicode type B characters (paragraph\n // separator characters). See issue #115.\n var m = text.match(/^.*(\\n|\\r)/);\n if (m) {\n nodeStack.length = 0;\n return m[0];\n }\n return text;\n }\n if (node.tagName === \"ruby\") {\n return nextTextNode(nodeStack);\n }\n if (node.childNodes) {\n pushNodes(nodeStack, node);\n return nextTextNode(nodeStack);\n }\n }\n\n pushNodes(nodeStack, cueDiv);\n while ((text = nextTextNode(nodeStack))) {\n for (var i = 0; i < text.length; i++) {\n charCode = text.charCodeAt(i);\n if (isStrongRTLChar(charCode)) {\n return \"rtl\";\n }\n }\n }\n return \"ltr\";\n}\n\nfunction computeLinePos(cue) {\n if (typeof cue.line === \"number\" &&\n (cue.snapToLines || (cue.line >= 0 && cue.line <= 100))) {\n return cue.line;\n }\n if (!cue.track || !cue.track.textTrackList ||\n !cue.track.textTrackList.mediaElement) {\n return -1;\n }\n var track = cue.track,\n trackList = track.textTrackList,\n count = 0;\n for (var i = 0; i < trackList.length && trackList[i] !== track; i++) {\n if (trackList[i].mode === \"showing\") {\n count++;\n }\n }\n return ++count * -1;\n}\n\nfunction StyleBox() {\n}\n\n// Apply styles to a div. If there is no div passed then it defaults to the\n// div on 'this'.\nStyleBox.prototype.applyStyles = function(styles, div) {\n div = div || this.div;\n for (var prop in styles) {\n if (styles.hasOwnProperty(prop)) {\n div.style[prop] = styles[prop];\n }\n }\n};\n\nStyleBox.prototype.formatStyle = function(val, unit) {\n return val === 0 ? 0 : val + unit;\n};\n\n// Constructs the computed display state of the cue (a div). Places the div\n// into the overlay which should be a block level element (usually a div).\nfunction CueStyleBox(window, cue, styleOptions) {\n StyleBox.call(this);\n this.cue = cue;\n\n // Parse our cue's text into a DOM tree rooted at 'cueDiv'. This div will\n // have inline positioning and will function as the cue background box.\n this.cueDiv = parseContent(window, cue.text);\n var styles = {\n color: \"rgba(255, 255, 255, 1)\",\n backgroundColor: \"rgba(0, 0, 0, 0.8)\",\n position: \"relative\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"inline\",\n writingMode: cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\",\n unicodeBidi: \"plaintext\"\n };\n\n this.applyStyles(styles, this.cueDiv);\n\n // Create an absolutely positioned div that will be used to position the cue\n // div. Note, all WebVTT cue-setting alignments are equivalent to the CSS\n // mirrors of them except middle instead of center on Safari.\n this.div = window.document.createElement(\"div\");\n styles = {\n direction: determineBidi(this.cueDiv),\n writingMode: cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\",\n unicodeBidi: \"plaintext\",\n textAlign: cue.align === \"middle\" ? \"center\" : cue.align,\n font: styleOptions.font,\n whiteSpace: \"pre-line\",\n position: \"absolute\"\n };\n\n this.applyStyles(styles);\n this.div.appendChild(this.cueDiv);\n\n // Calculate the distance from the reference edge of the viewport to the text\n // position of the cue box. The reference edge will be resolved later when\n // the box orientation styles are applied.\n var textPos = 0;\n switch (cue.positionAlign) {\n case \"start\":\n case \"line-left\":\n textPos = cue.position;\n break;\n case \"center\":\n textPos = cue.position - (cue.size / 2);\n break;\n case \"end\":\n case \"line-right\":\n textPos = cue.position - cue.size;\n break;\n }\n\n // Horizontal box orientation; textPos is the distance from the left edge of the\n // area to the left edge of the box and cue.size is the distance extending to\n // the right from there.\n if (cue.vertical === \"\") {\n this.applyStyles({\n left: this.formatStyle(textPos, \"%\"),\n width: this.formatStyle(cue.size, \"%\")\n });\n // Vertical box orientation; textPos is the distance from the top edge of the\n // area to the top edge of the box and cue.size is the height extending\n // downwards from there.\n } else {\n this.applyStyles({\n top: this.formatStyle(textPos, \"%\"),\n height: this.formatStyle(cue.size, \"%\")\n });\n }\n\n this.move = function(box) {\n this.applyStyles({\n top: this.formatStyle(box.top, \"px\"),\n bottom: this.formatStyle(box.bottom, \"px\"),\n left: this.formatStyle(box.left, \"px\"),\n right: this.formatStyle(box.right, \"px\"),\n height: this.formatStyle(box.height, \"px\"),\n width: this.formatStyle(box.width, \"px\")\n });\n };\n}\nCueStyleBox.prototype = _objCreate(StyleBox.prototype);\nCueStyleBox.prototype.constructor = CueStyleBox;\n\n// Represents the co-ordinates of an Element in a way that we can easily\n// compute things with such as if it overlaps or intersects with another Element.\n// Can initialize it with either a StyleBox or another BoxPosition.\nfunction BoxPosition(obj) {\n // Either a BoxPosition was passed in and we need to copy it, or a StyleBox\n // was passed in and we need to copy the results of 'getBoundingClientRect'\n // as the object returned is readonly. All co-ordinate values are in reference\n // to the viewport origin (top left).\n var lh, height, width, top;\n if (obj.div) {\n height = obj.div.offsetHeight;\n width = obj.div.offsetWidth;\n top = obj.div.offsetTop;\n\n var rects = (rects = obj.div.childNodes) && (rects = rects[0]) &&\n rects.getClientRects && rects.getClientRects();\n obj = obj.div.getBoundingClientRect();\n // In certain cases the outter div will be slightly larger then the sum of\n // the inner div's lines. This could be due to bold text, etc, on some platforms.\n // In this case we should get the average line height and use that. This will\n // result in the desired behaviour.\n lh = rects ? Math.max((rects[0] && rects[0].height) || 0, obj.height / rects.length)\n : 0;\n\n }\n this.left = obj.left;\n this.right = obj.right;\n this.top = obj.top || top;\n this.height = obj.height || height;\n this.bottom = obj.bottom || (top + (obj.height || height));\n this.width = obj.width || width;\n this.lineHeight = lh !== undefined ? lh : obj.lineHeight;\n}\n\n// Move the box along a particular axis. Optionally pass in an amount to move\n// the box. If no amount is passed then the default is the line height of the\n// box.\nBoxPosition.prototype.move = function(axis, toMove) {\n toMove = toMove !== undefined ? toMove : this.lineHeight;\n switch (axis) {\n case \"+x\":\n this.left += toMove;\n this.right += toMove;\n break;\n case \"-x\":\n this.left -= toMove;\n this.right -= toMove;\n break;\n case \"+y\":\n this.top += toMove;\n this.bottom += toMove;\n break;\n case \"-y\":\n this.top -= toMove;\n this.bottom -= toMove;\n break;\n }\n};\n\n// Check if this box overlaps another box, b2.\nBoxPosition.prototype.overlaps = function(b2) {\n return this.left < b2.right &&\n this.right > b2.left &&\n this.top < b2.bottom &&\n this.bottom > b2.top;\n};\n\n// Check if this box overlaps any other boxes in boxes.\nBoxPosition.prototype.overlapsAny = function(boxes) {\n for (var i = 0; i < boxes.length; i++) {\n if (this.overlaps(boxes[i])) {\n return true;\n }\n }\n return false;\n};\n\n// Check if this box is within another box.\nBoxPosition.prototype.within = function(container) {\n return this.top >= container.top &&\n this.bottom <= container.bottom &&\n this.left >= container.left &&\n this.right <= container.right;\n};\n\n// Check if this box is entirely within the container or it is overlapping\n// on the edge opposite of the axis direction passed. For example, if \"+x\" is\n// passed and the box is overlapping on the left edge of the container, then\n// return true.\nBoxPosition.prototype.overlapsOppositeAxis = function(container, axis) {\n switch (axis) {\n case \"+x\":\n return this.left < container.left;\n case \"-x\":\n return this.right > container.right;\n case \"+y\":\n return this.top < container.top;\n case \"-y\":\n return this.bottom > container.bottom;\n }\n};\n\n// Find the percentage of the area that this box is overlapping with another\n// box.\nBoxPosition.prototype.intersectPercentage = function(b2) {\n var x = Math.max(0, Math.min(this.right, b2.right) - Math.max(this.left, b2.left)),\n y = Math.max(0, Math.min(this.bottom, b2.bottom) - Math.max(this.top, b2.top)),\n intersectArea = x * y;\n return intersectArea / (this.height * this.width);\n};\n\n// Convert the positions from this box to CSS compatible positions using\n// the reference container's positions. This has to be done because this\n// box's positions are in reference to the viewport origin, whereas, CSS\n// values are in referecne to their respective edges.\nBoxPosition.prototype.toCSSCompatValues = function(reference) {\n return {\n top: this.top - reference.top,\n bottom: reference.bottom - this.bottom,\n left: this.left - reference.left,\n right: reference.right - this.right,\n height: this.height,\n width: this.width\n };\n};\n\n// Get an object that represents the box's position without anything extra.\n// Can pass a StyleBox, HTMLElement, or another BoxPositon.\nBoxPosition.getSimpleBoxPosition = function(obj) {\n var height = obj.div ? obj.div.offsetHeight : obj.tagName ? obj.offsetHeight : 0;\n var width = obj.div ? obj.div.offsetWidth : obj.tagName ? obj.offsetWidth : 0;\n var top = obj.div ? obj.div.offsetTop : obj.tagName ? obj.offsetTop : 0;\n\n obj = obj.div ? obj.div.getBoundingClientRect() :\n obj.tagName ? obj.getBoundingClientRect() : obj;\n var ret = {\n left: obj.left,\n right: obj.right,\n top: obj.top || top,\n height: obj.height || height,\n bottom: obj.bottom || (top + (obj.height || height)),\n width: obj.width || width\n };\n return ret;\n};\n\n// Move a StyleBox to its specified, or next best, position. The containerBox\n// is the box that contains the StyleBox, such as a div. boxPositions are\n// a list of other boxes that the styleBox can't overlap with.\nfunction moveBoxToLinePosition(window, styleBox, containerBox, boxPositions) {\n\n // Find the best position for a cue box, b, on the video. The axis parameter\n // is a list of axis, the order of which, it will move the box along. For example:\n // Passing [\"+x\", \"-x\"] will move the box first along the x axis in the positive\n // direction. If it doesn't find a good position for it there it will then move\n // it along the x axis in the negative direction.\n function findBestPosition(b, axis) {\n var bestPosition,\n specifiedPosition = new BoxPosition(b),\n percentage = 1; // Highest possible so the first thing we get is better.\n\n for (var i = 0; i < axis.length; i++) {\n while (b.overlapsOppositeAxis(containerBox, axis[i]) ||\n (b.within(containerBox) && b.overlapsAny(boxPositions))) {\n b.move(axis[i]);\n }\n // We found a spot where we aren't overlapping anything. This is our\n // best position.\n if (b.within(containerBox)) {\n return b;\n }\n var p = b.intersectPercentage(containerBox);\n // If we're outside the container box less then we were on our last try\n // then remember this position as the best position.\n if (percentage > p) {\n bestPosition = new BoxPosition(b);\n percentage = p;\n }\n // Reset the box position to the specified position.\n b = new BoxPosition(specifiedPosition);\n }\n return bestPosition || specifiedPosition;\n }\n\n var boxPosition = new BoxPosition(styleBox),\n cue = styleBox.cue,\n linePos = computeLinePos(cue),\n axis = [];\n\n // If we have a line number to align the cue to.\n if (cue.snapToLines) {\n var size;\n switch (cue.vertical) {\n case \"\":\n axis = [ \"+y\", \"-y\" ];\n size = \"height\";\n break;\n case \"rl\":\n axis = [ \"+x\", \"-x\" ];\n size = \"width\";\n break;\n case \"lr\":\n axis = [ \"-x\", \"+x\" ];\n size = \"width\";\n break;\n }\n\n var step = boxPosition.lineHeight,\n position = step * Math.round(linePos),\n maxPosition = containerBox[size] + step,\n initialAxis = axis[0];\n\n // If the specified intial position is greater then the max position then\n // clamp the box to the amount of steps it would take for the box to\n // reach the max position.\n if (Math.abs(position) > maxPosition) {\n position = position < 0 ? -1 : 1;\n position *= Math.ceil(maxPosition / step) * step;\n }\n\n // If computed line position returns negative then line numbers are\n // relative to the bottom of the video instead of the top. Therefore, we\n // need to increase our initial position by the length or width of the\n // video, depending on the writing direction, and reverse our axis directions.\n if (linePos < 0) {\n position += cue.vertical === \"\" ? containerBox.height : containerBox.width;\n axis = axis.reverse();\n }\n\n // Move the box to the specified position. This may not be its best\n // position.\n boxPosition.move(initialAxis, position);\n\n } else {\n // If we have a percentage line value for the cue.\n var calculatedPercentage = (boxPosition.lineHeight / containerBox.height) * 100;\n\n switch (cue.lineAlign) {\n case \"center\":\n linePos -= (calculatedPercentage / 2);\n break;\n case \"end\":\n linePos -= calculatedPercentage;\n break;\n }\n\n // Apply initial line position to the cue box.\n switch (cue.vertical) {\n case \"\":\n styleBox.applyStyles({\n top: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"rl\":\n styleBox.applyStyles({\n left: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"lr\":\n styleBox.applyStyles({\n right: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n }\n\n axis = [ \"+y\", \"-x\", \"+x\", \"-y\" ];\n\n // Get the box position again after we've applied the specified positioning\n // to it.\n boxPosition = new BoxPosition(styleBox);\n }\n\n var bestPosition = findBestPosition(boxPosition, axis);\n styleBox.move(bestPosition.toCSSCompatValues(containerBox));\n}\n\nfunction WebVTT() {\n // Nothing\n}\n\n// Helper to allow strings to be decoded instead of the default binary utf8 data.\nWebVTT.StringDecoder = function() {\n return {\n decode: function(data) {\n if (!data) {\n return \"\";\n }\n if (typeof data !== \"string\") {\n throw new Error(\"Error - expected string data.\");\n }\n return decodeURIComponent(encodeURIComponent(data));\n }\n };\n};\n\nWebVTT.convertCueToDOMTree = function(window, cuetext) {\n if (!window || !cuetext) {\n return null;\n }\n return parseContent(window, cuetext);\n};\n\nvar FONT_SIZE_PERCENT = 0.05;\nvar FONT_STYLE = \"sans-serif\";\nvar CUE_BACKGROUND_PADDING = \"1.5%\";\n\n// Runs the processing model over the cues and regions passed to it.\n// @param overlay A block level element (usually a div) that the computed cues\n// and regions will be placed into.\nWebVTT.processCues = function(window, cues, overlay) {\n if (!window || !cues || !overlay) {\n return null;\n }\n\n // Remove all previous children.\n while (overlay.firstChild) {\n overlay.removeChild(overlay.firstChild);\n }\n\n var paddedOverlay = window.document.createElement(\"div\");\n paddedOverlay.style.position = \"absolute\";\n paddedOverlay.style.left = \"0\";\n paddedOverlay.style.right = \"0\";\n paddedOverlay.style.top = \"0\";\n paddedOverlay.style.bottom = \"0\";\n paddedOverlay.style.margin = CUE_BACKGROUND_PADDING;\n overlay.appendChild(paddedOverlay);\n\n // Determine if we need to compute the display states of the cues. This could\n // be the case if a cue's state has been changed since the last computation or\n // if it has not been computed yet.\n function shouldCompute(cues) {\n for (var i = 0; i < cues.length; i++) {\n if (cues[i].hasBeenReset || !cues[i].displayState) {\n return true;\n }\n }\n return false;\n }\n\n // We don't need to recompute the cues' display states. Just reuse them.\n if (!shouldCompute(cues)) {\n for (var i = 0; i < cues.length; i++) {\n paddedOverlay.appendChild(cues[i].displayState);\n }\n return;\n }\n\n var boxPositions = [],\n containerBox = BoxPosition.getSimpleBoxPosition(paddedOverlay),\n fontSize = Math.round(containerBox.height * FONT_SIZE_PERCENT * 100) / 100;\n var styleOptions = {\n font: fontSize + \"px \" + FONT_STYLE\n };\n\n (function() {\n var styleBox, cue;\n\n for (var i = 0; i < cues.length; i++) {\n cue = cues[i];\n\n // Compute the intial position and styles of the cue div.\n styleBox = new CueStyleBox(window, cue, styleOptions);\n paddedOverlay.appendChild(styleBox.div);\n\n // Move the cue div to it's correct line position.\n moveBoxToLinePosition(window, styleBox, containerBox, boxPositions);\n\n // Remember the computed div so that we don't have to recompute it later\n // if we don't have too.\n cue.displayState = styleBox.div;\n\n boxPositions.push(BoxPosition.getSimpleBoxPosition(styleBox));\n }\n })();\n};\n\nWebVTT.Parser = function(window, vttjs, decoder) {\n if (!decoder) {\n decoder = vttjs;\n vttjs = {};\n }\n if (!vttjs) {\n vttjs = {};\n }\n\n this.window = window;\n this.vttjs = vttjs;\n this.state = \"INITIAL\";\n this.buffer = \"\";\n this.decoder = decoder || new TextDecoder(\"utf8\");\n this.regionList = [];\n};\n\nWebVTT.Parser.prototype = {\n // If the error is a ParsingError then report it to the consumer if\n // possible. If it's not a ParsingError then throw it like normal.\n reportOrThrowError: function(e) {\n if (e instanceof ParsingError) {\n this.onparsingerror && this.onparsingerror(e);\n } else {\n throw e;\n }\n },\n parse: function (data) {\n var self = this;\n\n // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n if (data) {\n // Try to decode the data that we received.\n self.buffer += self.decoder.decode(data, {stream: true});\n }\n\n function collectNextLine() {\n var buffer = self.buffer;\n var pos = 0;\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n var line = buffer.substr(0, pos);\n // Advance the buffer early in case we fail below.\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n self.buffer = buffer.substr(pos);\n return line;\n }\n\n // 3.4 WebVTT region and WebVTT region settings syntax\n function parseRegion(input) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"id\":\n settings.set(k, v);\n break;\n case \"width\":\n settings.percent(k, v);\n break;\n case \"lines\":\n settings.integer(k, v);\n break;\n case \"regionanchor\":\n case \"viewportanchor\":\n var xy = v.split(',');\n if (xy.length !== 2) {\n break;\n }\n // We have to make sure both x and y parse, so use a temporary\n // settings object here.\n var anchor = new Settings();\n anchor.percent(\"x\", xy[0]);\n anchor.percent(\"y\", xy[1]);\n if (!anchor.has(\"x\") || !anchor.has(\"y\")) {\n break;\n }\n settings.set(k + \"X\", anchor.get(\"x\"));\n settings.set(k + \"Y\", anchor.get(\"y\"));\n break;\n case \"scroll\":\n settings.alt(k, v, [\"up\"]);\n break;\n }\n }, /=/, /\\s/);\n\n // Create the region, using default values for any values that were not\n // specified.\n if (settings.has(\"id\")) {\n var region = new (self.vttjs.VTTRegion || self.window.VTTRegion)();\n region.width = settings.get(\"width\", 100);\n region.lines = settings.get(\"lines\", 3);\n region.regionAnchorX = settings.get(\"regionanchorX\", 0);\n region.regionAnchorY = settings.get(\"regionanchorY\", 100);\n region.viewportAnchorX = settings.get(\"viewportanchorX\", 0);\n region.viewportAnchorY = settings.get(\"viewportanchorY\", 100);\n region.scroll = settings.get(\"scroll\", \"\");\n // Register the region.\n self.onregion && self.onregion(region);\n // Remember the VTTRegion for later in case we parse any VTTCues that\n // reference it.\n self.regionList.push({\n id: settings.get(\"id\"),\n region: region\n });\n }\n }\n\n // draft-pantos-http-live-streaming-20\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-20#section-3.5\n // 3.5 WebVTT\n function parseTimestampMap(input) {\n var settings = new Settings();\n\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"MPEGT\":\n settings.integer(k + 'S', v);\n break;\n case \"LOCA\":\n settings.set(k + 'L', parseTimeStamp(v));\n break;\n }\n }, /[^\\d]:/, /,/);\n\n self.ontimestampmap && self.ontimestampmap({\n \"MPEGTS\": settings.get(\"MPEGTS\"),\n \"LOCAL\": settings.get(\"LOCAL\")\n });\n }\n\n // 3.2 WebVTT metadata header syntax\n function parseHeader(input) {\n if (input.match(/X-TIMESTAMP-MAP/)) {\n // This line contains HLS X-TIMESTAMP-MAP metadata\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"X-TIMESTAMP-MAP\":\n parseTimestampMap(v);\n break;\n }\n }, /=/);\n } else {\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"Region\":\n // 3.3 WebVTT region metadata header syntax\n parseRegion(v);\n break;\n }\n }, /:/);\n }\n\n }\n\n // 5.1 WebVTT file parsing.\n try {\n var line;\n if (self.state === \"INITIAL\") {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n line = collectNextLine();\n\n var m = line.match(/^WEBVTT([ \\t].*)?$/);\n if (!m || !m[0]) {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n\n self.state = \"HEADER\";\n }\n\n var alreadyCollectedLine = false;\n while (self.buffer) {\n // We can't parse a line until we have the full line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n } else {\n alreadyCollectedLine = false;\n }\n\n switch (self.state) {\n case \"HEADER\":\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n self.state = \"ID\";\n }\n continue;\n case \"NOTE\":\n // Ignore NOTE blocks.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n case \"ID\":\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n self.state = \"NOTE\";\n break;\n }\n // 19-29 - Allow any number of line terminators, then initialize new cue values.\n if (!line) {\n continue;\n }\n self.cue = new (self.vttjs.VTTCue || self.window.VTTCue)(0, 0, \"\");\n // Safari still uses the old middle value and won't accept center\n try {\n self.cue.align = \"center\";\n } catch (e) {\n self.cue.align = \"middle\";\n }\n self.state = \"CUE\";\n // 30-39 - Check if self line contains an optional identifier or timing data.\n if (line.indexOf(\"-->\") === -1) {\n self.cue.id = line;\n continue;\n }\n // Process line as start of a cue.\n /*falls through*/\n case \"CUE\":\n // 40 - Collect cue timings and settings.\n try {\n parseCue(line, self.cue, self.regionList);\n } catch (e) {\n self.reportOrThrowError(e);\n // In case of an error ignore rest of the cue.\n self.cue = null;\n self.state = \"BADCUE\";\n continue;\n }\n self.state = \"CUETEXT\";\n continue;\n case \"CUETEXT\":\n var hasSubstring = line.indexOf(\"-->\") !== -1;\n // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n self.oncue && self.oncue(self.cue);\n self.cue = null;\n self.state = \"ID\";\n continue;\n }\n if (self.cue.text) {\n self.cue.text += \"\\n\";\n }\n self.cue.text += line.replace(/\\u2028/g, '\\n').replace(/u2029/g, '\\n');\n continue;\n case \"BADCUE\": // BADCUE\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n }\n }\n } catch (e) {\n self.reportOrThrowError(e);\n\n // If we are currently parsing a cue, report what we have.\n if (self.state === \"CUETEXT\" && self.cue && self.oncue) {\n self.oncue(self.cue);\n }\n self.cue = null;\n // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n self.state = self.state === \"INITIAL\" ? \"BADWEBVTT\" : \"BADCUE\";\n }\n return this;\n },\n flush: function () {\n var self = this;\n try {\n // Finish decoding the stream.\n self.buffer += self.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (self.cue || self.state === \"HEADER\") {\n self.buffer += \"\\n\\n\";\n self.parse();\n }\n // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n if (self.state === \"INITIAL\") {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n } catch(e) {\n self.reportOrThrowError(e);\n }\n self.onflush && self.onflush();\n return this;\n }\n};\n\nmodule.exports = WebVTT;\n","// see https://tools.ietf.org/html/rfc1808\n\n(function (root) {\n var URL_REGEX =\n /^(?=((?:[a-zA-Z0-9+\\-.]+:)?))\\1(?=((?:\\/\\/[^\\/?#]*)?))\\2(?=((?:(?:[^?#\\/]*\\/)*[^;?#\\/]*)?))\\3((?:;[^?#]*)?)(\\?[^#]*)?(#[^]*)?$/;\n var FIRST_SEGMENT_REGEX = /^(?=([^\\/?#]*))\\1([^]*)$/;\n var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\n var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/)[^\\/]*(?=\\/)/g;\n\n var URLToolkit = {\n // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\n // E.g\n // With opts.alwaysNormalize = false (default, spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\n // With opts.alwaysNormalize = true (not spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\n buildAbsoluteURL: function (baseURL, relativeURL, opts) {\n opts = opts || {};\n // remove any remaining space and CRLF\n baseURL = baseURL.trim();\n relativeURL = relativeURL.trim();\n if (!relativeURL) {\n // 2a) If the embedded URL is entirely empty, it inherits the\n // entire base URL (i.e., is set equal to the base URL)\n // and we are done.\n if (!opts.alwaysNormalize) {\n return baseURL;\n }\n var basePartsForNormalise = URLToolkit.parseURL(baseURL);\n if (!basePartsForNormalise) {\n throw new Error('Error trying to parse base URL.');\n }\n basePartsForNormalise.path = URLToolkit.normalizePath(\n basePartsForNormalise.path\n );\n return URLToolkit.buildURLFromParts(basePartsForNormalise);\n }\n var relativeParts = URLToolkit.parseURL(relativeURL);\n if (!relativeParts) {\n throw new Error('Error trying to parse relative URL.');\n }\n if (relativeParts.scheme) {\n // 2b) If the embedded URL starts with a scheme name, it is\n // interpreted as an absolute URL and we are done.\n if (!opts.alwaysNormalize) {\n return relativeURL;\n }\n relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\n return URLToolkit.buildURLFromParts(relativeParts);\n }\n var baseParts = URLToolkit.parseURL(baseURL);\n if (!baseParts) {\n throw new Error('Error trying to parse base URL.');\n }\n if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') {\n // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc\n // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a'\n var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\n baseParts.netLoc = pathParts[1];\n baseParts.path = pathParts[2];\n }\n if (baseParts.netLoc && !baseParts.path) {\n baseParts.path = '/';\n }\n var builtParts = {\n // 2c) Otherwise, the embedded URL inherits the scheme of\n // the base URL.\n scheme: baseParts.scheme,\n netLoc: relativeParts.netLoc,\n path: null,\n params: relativeParts.params,\n query: relativeParts.query,\n fragment: relativeParts.fragment,\n };\n if (!relativeParts.netLoc) {\n // 3) If the embedded URL's is non-empty, we skip to\n // Step 7. Otherwise, the embedded URL inherits the \n // (if any) of the base URL.\n builtParts.netLoc = baseParts.netLoc;\n // 4) If the embedded URL path is preceded by a slash \"/\", the\n // path is not relative and we skip to Step 7.\n if (relativeParts.path[0] !== '/') {\n if (!relativeParts.path) {\n // 5) If the embedded URL path is empty (and not preceded by a\n // slash), then the embedded URL inherits the base URL path\n builtParts.path = baseParts.path;\n // 5a) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and\n if (!relativeParts.params) {\n builtParts.params = baseParts.params;\n // 5b) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and we skip to step 7.\n if (!relativeParts.query) {\n builtParts.query = baseParts.query;\n }\n }\n } else {\n // 6) The last segment of the base URL's path (anything\n // following the rightmost slash \"/\", or the entire path if no\n // slash is present) is removed and the embedded URL's path is\n // appended in its place.\n var baseURLPath = baseParts.path;\n var newPath =\n baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) +\n relativeParts.path;\n builtParts.path = URLToolkit.normalizePath(newPath);\n }\n }\n }\n if (builtParts.path === null) {\n builtParts.path = opts.alwaysNormalize\n ? URLToolkit.normalizePath(relativeParts.path)\n : relativeParts.path;\n }\n return URLToolkit.buildURLFromParts(builtParts);\n },\n parseURL: function (url) {\n var parts = URL_REGEX.exec(url);\n if (!parts) {\n return null;\n }\n return {\n scheme: parts[1] || '',\n netLoc: parts[2] || '',\n path: parts[3] || '',\n params: parts[4] || '',\n query: parts[5] || '',\n fragment: parts[6] || '',\n };\n },\n normalizePath: function (path) {\n // The following operations are\n // then applied, in order, to the new path:\n // 6a) All occurrences of \"./\", where \".\" is a complete path\n // segment, are removed.\n // 6b) If the path ends with \".\" as a complete path segment,\n // that \".\" is removed.\n path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, '');\n // 6c) All occurrences of \"/../\", where is a\n // complete path segment not equal to \"..\", are removed.\n // Removal of these path segments is performed iteratively,\n // removing the leftmost matching pattern on each iteration,\n // until no matching pattern remains.\n // 6d) If the path ends with \"/..\", where is a\n // complete path segment not equal to \"..\", that\n // \"/..\" is removed.\n while (\n path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length\n ) {}\n return path.split('').reverse().join('');\n },\n buildURLFromParts: function (parts) {\n return (\n parts.scheme +\n parts.netLoc +\n parts.path +\n parts.params +\n parts.query +\n parts.fragment\n );\n },\n };\n\n if (typeof exports === 'object' && typeof module === 'object')\n module.exports = URLToolkit;\n else if (typeof define === 'function' && define.amd)\n define([], function () {\n return URLToolkit;\n });\n else if (typeof exports === 'object') exports['URLToolkit'] = URLToolkit;\n else root['URLToolkit'] = URLToolkit;\n})(this);\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"video-popup\"},[_c('div',{staticClass:\"video-content\"},[_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isShowVideo),expression:\"!isShowVideo\"}],attrs:{\"src\":_vm.coverUrl,\"alt\":\"\"}}),(_vm.isAndroid)?[_c('video',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isShowVideo),expression:\"isShowVideo\"}],attrs:{\"id\":`myVideo_${_vm.shorexBannerIndex}`,\"controls\":false,\"src\":_vm.videoUrl,\"poster\":_vm.coverUrl,\"controlsList\":\"nodownload noremoteplayback noplaybackrate\",\"disablePictureInPicture\":\"\"},on:{\"fullscreenchange\":_vm.handleFullscreenChange}})]:[_c('video',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isShowVideo),expression:\"isShowVideo\"}],staticClass:\"video-js vjs-default-skin vjs-big-play-centered\",attrs:{\"id\":`playerId_${_vm.shorexBannerIndex}`}},[_c('source',{attrs:{\"src\":_vm.videoUrl}})])],_c('div',{staticClass:\"videoPlayBtn\",on:{\"click\":_vm.onChangeVideoPlay}},[_c('img',{staticClass:\"videoBtn\",attrs:{\"src\":\"https://resource.rcclchina.com.cn/paySuccess/videoBtn.png\",\"alt\":\"\"}}),(_vm.isShowTextBtn)?_c('div',{staticClass:\"videoTextBtn\"},[_c('img',{attrs:{\"src\":\"https://resource.rcclchina.com.cn/paySuccess/videoTextBtn.png\",\"alt\":\"\"}})]):_vm._e()])],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DestinationVideo.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DestinationVideo.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DestinationVideo.vue?vue&type=template&id=3a3838c1&scoped=true\"\nimport script from \"./DestinationVideo.vue?vue&type=script&lang=js\"\nexport * from \"./DestinationVideo.vue?vue&type=script&lang=js\"\nimport style0 from \"./DestinationVideo.vue?vue&type=style&index=0&id=3a3838c1&prod&scoped=true&lang=less\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3a3838c1\",\n null\n \n)\n\nexport default component.exports","/**\n * @file stream.js\n */\n\n/**\n * A lightweight readable stream implemention that handles event dispatching.\n *\n * @class Stream\n */\nvar Stream = /*#__PURE__*/function () {\n function Stream() {\n this.listeners = {};\n }\n /**\n * Add a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener the callback to be invoked when an event of\n * the specified type occurs\n */\n\n\n var _proto = Stream.prototype;\n\n _proto.on = function on(type, listener) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(listener);\n }\n /**\n * Remove a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener a function previously registered for this\n * type of event through `on`\n * @return {boolean} if we could turn it off or not\n */\n ;\n\n _proto.off = function off(type, listener) {\n if (!this.listeners[type]) {\n return false;\n }\n\n var index = this.listeners[type].indexOf(listener); // TODO: which is better?\n // In Video.js we slice listener functions\n // on trigger so that it does not mess up the order\n // while we loop through.\n //\n // Here we slice on off so that the loop in trigger\n // can continue using it's old reference to loop without\n // messing up the order.\n\n this.listeners[type] = this.listeners[type].slice(0);\n this.listeners[type].splice(index, 1);\n return index > -1;\n }\n /**\n * Trigger an event of the specified type on this stream. Any additional\n * arguments to this function are passed as parameters to event listeners.\n *\n * @param {string} type the event name\n */\n ;\n\n _proto.trigger = function trigger(type) {\n var callbacks = this.listeners[type];\n\n if (!callbacks) {\n return;\n } // Slicing the arguments on every invocation of this method\n // can add a significant amount of overhead. Avoid the\n // intermediate object creation for the common case of a\n // single callback argument\n\n\n if (arguments.length === 2) {\n var length = callbacks.length;\n\n for (var i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n var _length = callbacks.length;\n\n for (var _i = 0; _i < _length; ++_i) {\n callbacks[_i].apply(this, args);\n }\n }\n }\n /**\n * Destroys the stream and cleans up.\n */\n ;\n\n _proto.dispose = function dispose() {\n this.listeners = {};\n }\n /**\n * Forwards all `data` events on this stream to the destination stream. The\n * destination stream should provide a method `push` to receive the data\n * events as they arrive.\n *\n * @param {Stream} destination the stream that will receive all `data` events\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */\n ;\n\n _proto.pipe = function pipe(destination) {\n this.on('data', function (data) {\n destination.push(data);\n });\n };\n\n return Stream;\n}();\n\nexport { Stream as default };","/*! @name m3u8-parser @version 7.2.0 @license Apache-2.0 */\nimport Stream from '@videojs/vhs-utils/es/stream.js';\nimport _extends from '@babel/runtime/helpers/extends';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array.js';\n\n/**\n * @file m3u8/line-stream.js\n */\n/**\n * A stream that buffers string input and generates a `data` event for each\n * line.\n *\n * @class LineStream\n * @extends Stream\n */\n\nclass LineStream extends Stream {\n constructor() {\n super();\n this.buffer = '';\n }\n /**\n * Add new data to be parsed.\n *\n * @param {string} data the text to process\n */\n\n\n push(data) {\n let nextNewline;\n this.buffer += data;\n nextNewline = this.buffer.indexOf('\\n');\n\n for (; nextNewline > -1; nextNewline = this.buffer.indexOf('\\n')) {\n this.trigger('data', this.buffer.substring(0, nextNewline));\n this.buffer = this.buffer.substring(nextNewline + 1);\n }\n }\n\n}\n\nconst TAB = String.fromCharCode(0x09);\n\nconst parseByterange = function (byterangeString) {\n // optionally match and capture 0+ digits before `@`\n // optionally match and capture 0+ digits after `@`\n const match = /([0-9.]*)?@?([0-9.]*)?/.exec(byterangeString || '');\n const result = {};\n\n if (match[1]) {\n result.length = parseInt(match[1], 10);\n }\n\n if (match[2]) {\n result.offset = parseInt(match[2], 10);\n }\n\n return result;\n};\n/**\n * \"forgiving\" attribute list psuedo-grammar:\n * attributes -> keyvalue (',' keyvalue)*\n * keyvalue -> key '=' value\n * key -> [^=]*\n * value -> '\"' [^\"]* '\"' | [^,]*\n */\n\n\nconst attributeSeparator = function () {\n const key = '[^=]*';\n const value = '\"[^\"]*\"|[^,]*';\n const keyvalue = '(?:' + key + ')=(?:' + value + ')';\n return new RegExp('(?:^|,)(' + keyvalue + ')');\n};\n/**\n * Parse attributes from a line given the separator\n *\n * @param {string} attributes the attribute line to parse\n */\n\n\nconst parseAttributes = function (attributes) {\n const result = {};\n\n if (!attributes) {\n return result;\n } // split the string using attributes as the separator\n\n\n const attrs = attributes.split(attributeSeparator());\n let i = attrs.length;\n let attr;\n\n while (i--) {\n // filter out unmatched portions of the string\n if (attrs[i] === '') {\n continue;\n } // split the key and value\n\n\n attr = /([^=]*)=(.*)/.exec(attrs[i]).slice(1); // trim whitespace and remove optional quotes around the value\n\n attr[0] = attr[0].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^['\"](.*)['\"]$/g, '$1');\n result[attr[0]] = attr[1];\n }\n\n return result;\n};\n/**\n * Converts a string into a resolution object\n *\n * @param {string} resolution a string such as 3840x2160\n *\n * @return {Object} An object representing the resolution\n *\n */\n\n\nconst parseResolution = resolution => {\n const split = resolution.split('x');\n const result = {};\n\n if (split[0]) {\n result.width = parseInt(split[0], 10);\n }\n\n if (split[1]) {\n result.height = parseInt(split[1], 10);\n }\n\n return result;\n};\n/**\n * A line-level M3U8 parser event stream. It expects to receive input one\n * line at a time and performs a context-free parse of its contents. A stream\n * interpretation of a manifest can be useful if the manifest is expected to\n * be too large to fit comfortably into memory or the entirety of the input\n * is not immediately available. Otherwise, it's probably much easier to work\n * with a regular `Parser` object.\n *\n * Produces `data` events with an object that captures the parser's\n * interpretation of the input. That object has a property `tag` that is one\n * of `uri`, `comment`, or `tag`. URIs only have a single additional\n * property, `line`, which captures the entirety of the input without\n * interpretation. Comments similarly have a single additional property\n * `text` which is the input without the leading `#`.\n *\n * Tags always have a property `tagType` which is the lower-cased version of\n * the M3U8 directive without the `#EXT` or `#EXT-X-` prefix. For instance,\n * `#EXT-X-MEDIA-SEQUENCE` becomes `media-sequence` when parsed. Unrecognized\n * tags are given the tag type `unknown` and a single additional property\n * `data` with the remainder of the input.\n *\n * @class ParseStream\n * @extends Stream\n */\n\n\nclass ParseStream extends Stream {\n constructor() {\n super();\n this.customParsers = [];\n this.tagMappers = [];\n }\n /**\n * Parses an additional line of input.\n *\n * @param {string} line a single line of an M3U8 file to parse\n */\n\n\n push(line) {\n let match;\n let event; // strip whitespace\n\n line = line.trim();\n\n if (line.length === 0) {\n // ignore empty lines\n return;\n } // URIs\n\n\n if (line[0] !== '#') {\n this.trigger('data', {\n type: 'uri',\n uri: line\n });\n return;\n } // map tags\n\n\n const newLines = this.tagMappers.reduce((acc, mapper) => {\n const mappedLine = mapper(line); // skip if unchanged\n\n if (mappedLine === line) {\n return acc;\n }\n\n return acc.concat([mappedLine]);\n }, [line]);\n newLines.forEach(newLine => {\n for (let i = 0; i < this.customParsers.length; i++) {\n if (this.customParsers[i].call(this, newLine)) {\n return;\n }\n } // Comments\n\n\n if (newLine.indexOf('#EXT') !== 0) {\n this.trigger('data', {\n type: 'comment',\n text: newLine.slice(1)\n });\n return;\n } // strip off any carriage returns here so the regex matching\n // doesn't have to account for them.\n\n\n newLine = newLine.replace('\\r', ''); // Tags\n\n match = /^#EXTM3U/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'm3u'\n });\n return;\n }\n\n match = /^#EXTINF:([0-9\\.]*)?,?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'inf'\n };\n\n if (match[1]) {\n event.duration = parseFloat(match[1]);\n }\n\n if (match[2]) {\n event.title = match[2];\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-TARGETDURATION:([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'targetduration'\n };\n\n if (match[1]) {\n event.duration = parseInt(match[1], 10);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-VERSION:([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'version'\n };\n\n if (match[1]) {\n event.version = parseInt(match[1], 10);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-MEDIA-SEQUENCE:(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY-SEQUENCE:(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'discontinuity-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-PLAYLIST-TYPE:(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'playlist-type'\n };\n\n if (match[1]) {\n event.playlistType = match[1];\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-BYTERANGE:(.*)?$/.exec(newLine);\n\n if (match) {\n event = _extends(parseByterange(match[1]), {\n type: 'tag',\n tagType: 'byterange'\n });\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-ALLOW-CACHE:(YES|NO)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'allow-cache'\n };\n\n if (match[1]) {\n event.allowed = !/NO/.test(match[1]);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-MAP:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'map'\n };\n\n if (match[1]) {\n const attributes = parseAttributes(match[1]);\n\n if (attributes.URI) {\n event.uri = attributes.URI;\n }\n\n if (attributes.BYTERANGE) {\n event.byterange = parseByterange(attributes.BYTERANGE);\n }\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-STREAM-INF:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'stream-inf'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.RESOLUTION) {\n event.attributes.RESOLUTION = parseResolution(event.attributes.RESOLUTION);\n }\n\n if (event.attributes.BANDWIDTH) {\n event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10);\n }\n\n if (event.attributes['FRAME-RATE']) {\n event.attributes['FRAME-RATE'] = parseFloat(event.attributes['FRAME-RATE']);\n }\n\n if (event.attributes['PROGRAM-ID']) {\n event.attributes['PROGRAM-ID'] = parseInt(event.attributes['PROGRAM-ID'], 10);\n }\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-MEDIA:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-ENDLIST/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'endlist'\n });\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'discontinuity'\n });\n return;\n }\n\n match = /^#EXT-X-PROGRAM-DATE-TIME:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'program-date-time'\n };\n\n if (match[1]) {\n event.dateTimeString = match[1];\n event.dateTimeObject = new Date(match[1]);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-KEY:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'key'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]); // parse the IV string into a Uint32Array\n\n if (event.attributes.IV) {\n if (event.attributes.IV.substring(0, 2).toLowerCase() === '0x') {\n event.attributes.IV = event.attributes.IV.substring(2);\n }\n\n event.attributes.IV = event.attributes.IV.match(/.{8}/g);\n event.attributes.IV[0] = parseInt(event.attributes.IV[0], 16);\n event.attributes.IV[1] = parseInt(event.attributes.IV[1], 16);\n event.attributes.IV[2] = parseInt(event.attributes.IV[2], 16);\n event.attributes.IV[3] = parseInt(event.attributes.IV[3], 16);\n event.attributes.IV = new Uint32Array(event.attributes.IV);\n }\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-START:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'start'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n event.attributes['TIME-OFFSET'] = parseFloat(event.attributes['TIME-OFFSET']);\n event.attributes.PRECISE = /YES/.test(event.attributes.PRECISE);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-CUE-OUT-CONT:(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out-cont'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-CUE-OUT:(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-CUE-IN:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-in'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-SKIP:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'skip'\n };\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.hasOwnProperty('SKIPPED-SEGMENTS')) {\n event.attributes['SKIPPED-SEGMENTS'] = parseInt(event.attributes['SKIPPED-SEGMENTS'], 10);\n }\n\n if (event.attributes.hasOwnProperty('RECENTLY-REMOVED-DATERANGES')) {\n event.attributes['RECENTLY-REMOVED-DATERANGES'] = event.attributes['RECENTLY-REMOVED-DATERANGES'].split(TAB);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-PART:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part'\n };\n event.attributes = parseAttributes(match[1]);\n ['DURATION'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['INDEPENDENT', 'GAP'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n\n if (event.attributes.hasOwnProperty('BYTERANGE')) {\n event.attributes.byterange = parseByterange(event.attributes.BYTERANGE);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-SERVER-CONTROL:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'server-control'\n };\n event.attributes = parseAttributes(match[1]);\n ['CAN-SKIP-UNTIL', 'PART-HOLD-BACK', 'HOLD-BACK'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['CAN-SKIP-DATERANGES', 'CAN-BLOCK-RELOAD'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-PART-INF:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part-inf'\n };\n event.attributes = parseAttributes(match[1]);\n ['PART-TARGET'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-PRELOAD-HINT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'preload-hint'\n };\n event.attributes = parseAttributes(match[1]);\n ['BYTERANGE-START', 'BYTERANGE-LENGTH'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n const subkey = key === 'BYTERANGE-LENGTH' ? 'length' : 'offset';\n event.attributes.byterange = event.attributes.byterange || {};\n event.attributes.byterange[subkey] = event.attributes[key]; // only keep the parsed byterange object.\n\n delete event.attributes[key];\n }\n });\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-RENDITION-REPORT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'rendition-report'\n };\n event.attributes = parseAttributes(match[1]);\n ['LAST-MSN', 'LAST-PART'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n }\n });\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-DATERANGE:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'daterange'\n };\n event.attributes = parseAttributes(match[1]);\n ['ID', 'CLASS'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = String(event.attributes[key]);\n }\n });\n ['START-DATE', 'END-DATE'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = new Date(event.attributes[key]);\n }\n });\n ['DURATION', 'PLANNED-DURATION'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['END-ON-NEXT'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/i.test(event.attributes[key]);\n }\n });\n ['SCTE35-CMD', ' SCTE35-OUT', 'SCTE35-IN'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = event.attributes[key].toString(16);\n }\n });\n const clientAttributePattern = /^X-([A-Z]+-)+[A-Z]+$/;\n\n for (const key in event.attributes) {\n if (!clientAttributePattern.test(key)) {\n continue;\n }\n\n const isHexaDecimal = /[0-9A-Fa-f]{6}/g.test(event.attributes[key]);\n const isDecimalFloating = /^\\d+(\\.\\d+)?$/.test(event.attributes[key]);\n event.attributes[key] = isHexaDecimal ? event.attributes[key].toString(16) : isDecimalFloating ? parseFloat(event.attributes[key]) : String(event.attributes[key]);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-INDEPENDENT-SEGMENTS/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'independent-segments'\n });\n return;\n }\n\n match = /^#EXT-X-I-FRAMES-ONLY/.exec(newLine);\n\n if (match) {\n this.trigger('data', {\n type: 'tag',\n tagType: 'i-frames-only'\n });\n return;\n }\n\n match = /^#EXT-X-CONTENT-STEERING:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'content-steering'\n };\n event.attributes = parseAttributes(match[1]);\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-I-FRAME-STREAM-INF:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'i-frame-playlist'\n };\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.URI) {\n event.uri = event.attributes.URI;\n }\n\n if (event.attributes.BANDWIDTH) {\n event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10);\n }\n\n if (event.attributes.RESOLUTION) {\n event.attributes.RESOLUTION = parseResolution(event.attributes.RESOLUTION);\n }\n\n if (event.attributes['AVERAGE-BANDWIDTH']) {\n event.attributes['AVERAGE-BANDWIDTH'] = parseInt(event.attributes['AVERAGE-BANDWIDTH'], 10);\n }\n\n if (event.attributes['FRAME-RATE']) {\n event.attributes['FRAME-RATE'] = parseFloat(event.attributes['FRAME-RATE']);\n }\n\n this.trigger('data', event);\n return;\n }\n\n match = /^#EXT-X-DEFINE:(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'define'\n };\n event.attributes = parseAttributes(match[1]);\n this.trigger('data', event);\n return;\n } // unknown tag type\n\n\n this.trigger('data', {\n type: 'tag',\n data: newLine.slice(4)\n });\n });\n }\n /**\n * Add a parser for custom headers\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.customType the custom type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n\n\n addParser({\n expression,\n customType,\n dataParser,\n segment\n }) {\n if (typeof dataParser !== 'function') {\n dataParser = line => line;\n }\n\n this.customParsers.push(line => {\n const match = expression.exec(line);\n\n if (match) {\n this.trigger('data', {\n type: 'custom',\n data: dataParser(line),\n customType,\n segment\n });\n return true;\n }\n });\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n\n\n addTagMapper({\n expression,\n map\n }) {\n const mapFn = line => {\n if (expression.test(line)) {\n return map(line);\n }\n\n return line;\n };\n\n this.tagMappers.push(mapFn);\n }\n\n}\n\nconst camelCase = str => str.toLowerCase().replace(/-(\\w)/g, a => a[1].toUpperCase());\n\nconst camelCaseKeys = function (attributes) {\n const result = {};\n Object.keys(attributes).forEach(function (key) {\n result[camelCase(key)] = attributes[key];\n });\n return result;\n}; // set SERVER-CONTROL hold back based upon targetDuration and partTargetDuration\n// we need this helper because defaults are based upon targetDuration and\n// partTargetDuration being set, but they may not be if SERVER-CONTROL appears before\n// target durations are set.\n\n\nconst setHoldBack = function (manifest) {\n const {\n serverControl,\n targetDuration,\n partTargetDuration\n } = manifest;\n\n if (!serverControl) {\n return;\n }\n\n const tag = '#EXT-X-SERVER-CONTROL';\n const hb = 'holdBack';\n const phb = 'partHoldBack';\n const minTargetDuration = targetDuration && targetDuration * 3;\n const minPartDuration = partTargetDuration && partTargetDuration * 2;\n\n if (targetDuration && !serverControl.hasOwnProperty(hb)) {\n serverControl[hb] = minTargetDuration;\n this.trigger('info', {\n message: `${tag} defaulting HOLD-BACK to targetDuration * 3 (${minTargetDuration}).`\n });\n }\n\n if (minTargetDuration && serverControl[hb] < minTargetDuration) {\n this.trigger('warn', {\n message: `${tag} clamping HOLD-BACK (${serverControl[hb]}) to targetDuration * 3 (${minTargetDuration})`\n });\n serverControl[hb] = minTargetDuration;\n } // default no part hold back to part target duration * 3\n\n\n if (partTargetDuration && !serverControl.hasOwnProperty(phb)) {\n serverControl[phb] = partTargetDuration * 3;\n this.trigger('info', {\n message: `${tag} defaulting PART-HOLD-BACK to partTargetDuration * 3 (${serverControl[phb]}).`\n });\n } // if part hold back is too small default it to part target duration * 2\n\n\n if (partTargetDuration && serverControl[phb] < minPartDuration) {\n this.trigger('warn', {\n message: `${tag} clamping PART-HOLD-BACK (${serverControl[phb]}) to partTargetDuration * 2 (${minPartDuration}).`\n });\n serverControl[phb] = minPartDuration;\n }\n};\n/**\n * A parser for M3U8 files. The current interpretation of the input is\n * exposed as a property `manifest` on parser objects. It's just two lines to\n * create and parse a manifest once you have the contents available as a string:\n *\n * ```js\n * var parser = new m3u8.Parser();\n * parser.push(xhr.responseText);\n * ```\n *\n * New input can later be applied to update the manifest object by calling\n * `push` again.\n *\n * The parser attempts to create a usable manifest object even if the\n * underlying input is somewhat nonsensical. It emits `info` and `warning`\n * events during the parse if it encounters input that seems invalid or\n * requires some property of the manifest object to be defaulted.\n *\n * @class Parser\n * @param {Object} [opts] Options for the constructor, needed for substitutions\n * @param {string} [opts.uri] URL to check for query params\n * @param {Object} [opts.mainDefinitions] Definitions on main playlist that can be imported\n * @extends Stream\n */\n\n\nclass Parser extends Stream {\n constructor(opts = {}) {\n super();\n this.lineStream = new LineStream();\n this.parseStream = new ParseStream();\n this.lineStream.pipe(this.parseStream);\n this.mainDefinitions = opts.mainDefinitions || {};\n this.params = new URL(opts.uri, 'https://a.com').searchParams;\n this.lastProgramDateTime = null;\n /* eslint-disable consistent-this */\n\n const self = this;\n /* eslint-enable consistent-this */\n\n const uris = [];\n let currentUri = {}; // if specified, the active EXT-X-MAP definition\n\n let currentMap; // if specified, the active decryption key\n\n let key;\n let hasParts = false;\n\n const noop = function () {};\n\n const defaultMediaGroups = {\n 'AUDIO': {},\n 'VIDEO': {},\n 'CLOSED-CAPTIONS': {},\n 'SUBTITLES': {}\n }; // This is the Widevine UUID from DASH IF IOP. The same exact string is\n // used in MPDs with Widevine encrypted streams.\n\n const widevineUuid = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed'; // group segments into numbered timelines delineated by discontinuities\n\n let currentTimeline = 0; // the manifest is empty until the parse stream begins delivering data\n\n this.manifest = {\n allowCache: true,\n discontinuityStarts: [],\n dateRanges: [],\n iFramePlaylists: [],\n segments: []\n }; // keep track of the last seen segment's byte range end, as segments are not required\n // to provide the offset, in which case it defaults to the next byte after the\n // previous segment\n\n let lastByterangeEnd = 0; // keep track of the last seen part's byte range end.\n\n let lastPartByterangeEnd = 0;\n const dateRangeTags = {};\n this.on('end', () => {\n // only add preloadSegment if we don't yet have a uri for it.\n // and we actually have parts/preloadHints\n if (currentUri.uri || !currentUri.parts && !currentUri.preloadHints) {\n return;\n }\n\n if (!currentUri.map && currentMap) {\n currentUri.map = currentMap;\n }\n\n if (!currentUri.key && key) {\n currentUri.key = key;\n }\n\n if (!currentUri.timeline && typeof currentTimeline === 'number') {\n currentUri.timeline = currentTimeline;\n }\n\n this.manifest.preloadSegment = currentUri;\n }); // update the manifest with the m3u8 entry from the parse stream\n\n this.parseStream.on('data', function (entry) {\n let mediaGroup;\n let rendition; // Replace variables in uris and attributes as defined in #EXT-X-DEFINE tags\n\n if (self.manifest.definitions) {\n for (const def in self.manifest.definitions) {\n if (entry.uri) {\n entry.uri = entry.uri.replace(`{$${def}}`, self.manifest.definitions[def]);\n }\n\n if (entry.attributes) {\n for (const attr in entry.attributes) {\n if (typeof entry.attributes[attr] === 'string') {\n entry.attributes[attr] = entry.attributes[attr].replace(`{$${def}}`, self.manifest.definitions[def]);\n }\n }\n }\n }\n }\n\n ({\n tag() {\n // switch based on the tag type\n (({\n version() {\n if (entry.version) {\n this.manifest.version = entry.version;\n }\n },\n\n 'allow-cache'() {\n this.manifest.allowCache = entry.allowed;\n\n if (!('allowed' in entry)) {\n this.trigger('info', {\n message: 'defaulting allowCache to YES'\n });\n this.manifest.allowCache = true;\n }\n },\n\n byterange() {\n const byterange = {};\n\n if ('length' in entry) {\n currentUri.byterange = byterange;\n byterange.length = entry.length;\n\n if (!('offset' in entry)) {\n /*\n * From the latest spec (as of this writing):\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.2.2\n *\n * Same text since EXT-X-BYTERANGE's introduction in draft 7:\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-07#section-3.3.1)\n *\n * \"If o [offset] is not present, the sub-range begins at the next byte\n * following the sub-range of the previous media segment.\"\n */\n entry.offset = lastByterangeEnd;\n }\n }\n\n if ('offset' in entry) {\n currentUri.byterange = byterange;\n byterange.offset = entry.offset;\n }\n\n lastByterangeEnd = byterange.offset + byterange.length;\n },\n\n endlist() {\n this.manifest.endList = true;\n },\n\n inf() {\n if (!('mediaSequence' in this.manifest)) {\n this.manifest.mediaSequence = 0;\n this.trigger('info', {\n message: 'defaulting media sequence to zero'\n });\n }\n\n if (!('discontinuitySequence' in this.manifest)) {\n this.manifest.discontinuitySequence = 0;\n this.trigger('info', {\n message: 'defaulting discontinuity sequence to zero'\n });\n }\n\n if (entry.title) {\n currentUri.title = entry.title;\n }\n\n if (entry.duration > 0) {\n currentUri.duration = entry.duration;\n }\n\n if (entry.duration === 0) {\n currentUri.duration = 0.01;\n this.trigger('info', {\n message: 'updating zero segment duration to a small value'\n });\n }\n\n this.manifest.segments = uris;\n },\n\n key() {\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring key declaration without attribute list'\n });\n return;\n } // clear the active encryption key\n\n\n if (entry.attributes.METHOD === 'NONE') {\n key = null;\n return;\n }\n\n if (!entry.attributes.URI) {\n this.trigger('warn', {\n message: 'ignoring key declaration without URI'\n });\n return;\n }\n\n if (entry.attributes.KEYFORMAT === 'com.apple.streamingkeydelivery') {\n this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this.\n\n this.manifest.contentProtection['com.apple.fps.1_0'] = {\n attributes: entry.attributes\n };\n return;\n }\n\n if (entry.attributes.KEYFORMAT === 'com.microsoft.playready') {\n this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this.\n\n this.manifest.contentProtection['com.microsoft.playready'] = {\n uri: entry.attributes.URI\n };\n return;\n } // check if the content is encrypted for Widevine\n // Widevine/HLS spec: https://storage.googleapis.com/wvdocs/Widevine_DRM_HLS.pdf\n\n\n if (entry.attributes.KEYFORMAT === widevineUuid) {\n const VALID_METHODS = ['SAMPLE-AES', 'SAMPLE-AES-CTR', 'SAMPLE-AES-CENC'];\n\n if (VALID_METHODS.indexOf(entry.attributes.METHOD) === -1) {\n this.trigger('warn', {\n message: 'invalid key method provided for Widevine'\n });\n return;\n }\n\n if (entry.attributes.METHOD === 'SAMPLE-AES-CENC') {\n this.trigger('warn', {\n message: 'SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead'\n });\n }\n\n if (entry.attributes.URI.substring(0, 23) !== 'data:text/plain;base64,') {\n this.trigger('warn', {\n message: 'invalid key URI provided for Widevine'\n });\n return;\n }\n\n if (!(entry.attributes.KEYID && entry.attributes.KEYID.substring(0, 2) === '0x')) {\n this.trigger('warn', {\n message: 'invalid key ID provided for Widevine'\n });\n return;\n } // if Widevine key attributes are valid, store them as `contentProtection`\n // on the manifest to emulate Widevine tag structure in a DASH mpd\n\n\n this.manifest.contentProtection = this.manifest.contentProtection || {};\n this.manifest.contentProtection['com.widevine.alpha'] = {\n attributes: {\n schemeIdUri: entry.attributes.KEYFORMAT,\n // remove '0x' from the key id string\n keyId: entry.attributes.KEYID.substring(2)\n },\n // decode the base64-encoded PSSH box\n pssh: decodeB64ToUint8Array(entry.attributes.URI.split(',')[1])\n };\n return;\n }\n\n if (!entry.attributes.METHOD) {\n this.trigger('warn', {\n message: 'defaulting key method to AES-128'\n });\n } // setup an encryption key for upcoming segments\n\n\n key = {\n method: entry.attributes.METHOD || 'AES-128',\n uri: entry.attributes.URI\n };\n\n if (typeof entry.attributes.IV !== 'undefined') {\n key.iv = entry.attributes.IV;\n }\n },\n\n 'media-sequence'() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid media sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.mediaSequence = entry.number;\n },\n\n 'discontinuity-sequence'() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid discontinuity sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.discontinuitySequence = entry.number;\n currentTimeline = entry.number;\n },\n\n 'playlist-type'() {\n if (!/VOD|EVENT/.test(entry.playlistType)) {\n this.trigger('warn', {\n message: 'ignoring unknown playlist type: ' + entry.playlist\n });\n return;\n }\n\n this.manifest.playlistType = entry.playlistType;\n },\n\n map() {\n currentMap = {};\n\n if (entry.uri) {\n currentMap.uri = entry.uri;\n }\n\n if (entry.byterange) {\n currentMap.byterange = entry.byterange;\n }\n\n if (key) {\n currentMap.key = key;\n }\n },\n\n 'stream-inf'() {\n this.manifest.playlists = uris;\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring empty stream-inf attributes'\n });\n return;\n }\n\n if (!currentUri.attributes) {\n currentUri.attributes = {};\n }\n\n _extends(currentUri.attributes, entry.attributes);\n },\n\n media() {\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!(entry.attributes && entry.attributes.TYPE && entry.attributes['GROUP-ID'] && entry.attributes.NAME)) {\n this.trigger('warn', {\n message: 'ignoring incomplete or missing media group'\n });\n return;\n } // find the media group, creating defaults as necessary\n\n\n const mediaGroupType = this.manifest.mediaGroups[entry.attributes.TYPE];\n mediaGroupType[entry.attributes['GROUP-ID']] = mediaGroupType[entry.attributes['GROUP-ID']] || {};\n mediaGroup = mediaGroupType[entry.attributes['GROUP-ID']]; // collect the rendition metadata\n\n rendition = {\n default: /yes/i.test(entry.attributes.DEFAULT)\n };\n\n if (rendition.default) {\n rendition.autoselect = true;\n } else {\n rendition.autoselect = /yes/i.test(entry.attributes.AUTOSELECT);\n }\n\n if (entry.attributes.LANGUAGE) {\n rendition.language = entry.attributes.LANGUAGE;\n }\n\n if (entry.attributes.URI) {\n rendition.uri = entry.attributes.URI;\n }\n\n if (entry.attributes['INSTREAM-ID']) {\n rendition.instreamId = entry.attributes['INSTREAM-ID'];\n }\n\n if (entry.attributes.CHARACTERISTICS) {\n rendition.characteristics = entry.attributes.CHARACTERISTICS;\n }\n\n if (entry.attributes.FORCED) {\n rendition.forced = /yes/i.test(entry.attributes.FORCED);\n } // insert the new rendition\n\n\n mediaGroup[entry.attributes.NAME] = rendition;\n },\n\n discontinuity() {\n currentTimeline += 1;\n currentUri.discontinuity = true;\n this.manifest.discontinuityStarts.push(uris.length);\n },\n\n 'program-date-time'() {\n if (typeof this.manifest.dateTimeString === 'undefined') {\n // PROGRAM-DATE-TIME is a media-segment tag, but for backwards\n // compatibility, we add the first occurence of the PROGRAM-DATE-TIME tag\n // to the manifest object\n // TODO: Consider removing this in future major version\n this.manifest.dateTimeString = entry.dateTimeString;\n this.manifest.dateTimeObject = entry.dateTimeObject;\n }\n\n currentUri.dateTimeString = entry.dateTimeString;\n currentUri.dateTimeObject = entry.dateTimeObject;\n const {\n lastProgramDateTime\n } = this;\n this.lastProgramDateTime = new Date(entry.dateTimeString).getTime(); // We should extrapolate Program Date Time backward only during first program date time occurrence.\n // Once we have at least one program date time point, we can always extrapolate it forward using lastProgramDateTime reference.\n\n if (lastProgramDateTime === null) {\n // Extrapolate Program Date Time backward\n // Since it is first program date time occurrence we're assuming that\n // all this.manifest.segments have no program date time info\n this.manifest.segments.reduceRight((programDateTime, segment) => {\n segment.programDateTime = programDateTime - segment.duration * 1000;\n return segment.programDateTime;\n }, this.lastProgramDateTime);\n }\n },\n\n targetduration() {\n if (!isFinite(entry.duration) || entry.duration < 0) {\n this.trigger('warn', {\n message: 'ignoring invalid target duration: ' + entry.duration\n });\n return;\n }\n\n this.manifest.targetDuration = entry.duration;\n setHoldBack.call(this, this.manifest);\n },\n\n start() {\n if (!entry.attributes || isNaN(entry.attributes['TIME-OFFSET'])) {\n this.trigger('warn', {\n message: 'ignoring start declaration without appropriate attribute list'\n });\n return;\n }\n\n this.manifest.start = {\n timeOffset: entry.attributes['TIME-OFFSET'],\n precise: entry.attributes.PRECISE\n };\n },\n\n 'cue-out'() {\n currentUri.cueOut = entry.data;\n },\n\n 'cue-out-cont'() {\n currentUri.cueOutCont = entry.data;\n },\n\n 'cue-in'() {\n currentUri.cueIn = entry.data;\n },\n\n 'skip'() {\n this.manifest.skip = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-SKIP', entry.attributes, ['SKIPPED-SEGMENTS']);\n },\n\n 'part'() {\n hasParts = true; // parts are always specifed before a segment\n\n const segmentIndex = this.manifest.segments.length;\n const part = camelCaseKeys(entry.attributes);\n currentUri.parts = currentUri.parts || [];\n currentUri.parts.push(part);\n\n if (part.byterange) {\n if (!part.byterange.hasOwnProperty('offset')) {\n part.byterange.offset = lastPartByterangeEnd;\n }\n\n lastPartByterangeEnd = part.byterange.offset + part.byterange.length;\n }\n\n const partIndex = currentUri.parts.length - 1;\n this.warnOnMissingAttributes_(`#EXT-X-PART #${partIndex} for segment #${segmentIndex}`, entry.attributes, ['URI', 'DURATION']);\n\n if (this.manifest.renditionReports) {\n this.manifest.renditionReports.forEach((r, i) => {\n if (!r.hasOwnProperty('lastPart')) {\n this.trigger('warn', {\n message: `#EXT-X-RENDITION-REPORT #${i} lacks required attribute(s): LAST-PART`\n });\n }\n });\n }\n },\n\n 'server-control'() {\n const attrs = this.manifest.serverControl = camelCaseKeys(entry.attributes);\n\n if (!attrs.hasOwnProperty('canBlockReload')) {\n attrs.canBlockReload = false;\n this.trigger('info', {\n message: '#EXT-X-SERVER-CONTROL defaulting CAN-BLOCK-RELOAD to false'\n });\n }\n\n setHoldBack.call(this, this.manifest);\n\n if (attrs.canSkipDateranges && !attrs.hasOwnProperty('canSkipUntil')) {\n this.trigger('warn', {\n message: '#EXT-X-SERVER-CONTROL lacks required attribute CAN-SKIP-UNTIL which is required when CAN-SKIP-DATERANGES is set'\n });\n }\n },\n\n 'preload-hint'() {\n // parts are always specifed before a segment\n const segmentIndex = this.manifest.segments.length;\n const hint = camelCaseKeys(entry.attributes);\n const isPart = hint.type && hint.type === 'PART';\n currentUri.preloadHints = currentUri.preloadHints || [];\n currentUri.preloadHints.push(hint);\n\n if (hint.byterange) {\n if (!hint.byterange.hasOwnProperty('offset')) {\n // use last part byterange end or zero if not a part.\n hint.byterange.offset = isPart ? lastPartByterangeEnd : 0;\n\n if (isPart) {\n lastPartByterangeEnd = hint.byterange.offset + hint.byterange.length;\n }\n }\n }\n\n const index = currentUri.preloadHints.length - 1;\n this.warnOnMissingAttributes_(`#EXT-X-PRELOAD-HINT #${index} for segment #${segmentIndex}`, entry.attributes, ['TYPE', 'URI']);\n\n if (!hint.type) {\n return;\n } // search through all preload hints except for the current one for\n // a duplicate type.\n\n\n for (let i = 0; i < currentUri.preloadHints.length - 1; i++) {\n const otherHint = currentUri.preloadHints[i];\n\n if (!otherHint.type) {\n continue;\n }\n\n if (otherHint.type === hint.type) {\n this.trigger('warn', {\n message: `#EXT-X-PRELOAD-HINT #${index} for segment #${segmentIndex} has the same TYPE ${hint.type} as preload hint #${i}`\n });\n }\n }\n },\n\n 'rendition-report'() {\n const report = camelCaseKeys(entry.attributes);\n this.manifest.renditionReports = this.manifest.renditionReports || [];\n this.manifest.renditionReports.push(report);\n const index = this.manifest.renditionReports.length - 1;\n const required = ['LAST-MSN', 'URI'];\n\n if (hasParts) {\n required.push('LAST-PART');\n }\n\n this.warnOnMissingAttributes_(`#EXT-X-RENDITION-REPORT #${index}`, entry.attributes, required);\n },\n\n 'part-inf'() {\n this.manifest.partInf = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-PART-INF', entry.attributes, ['PART-TARGET']);\n\n if (this.manifest.partInf.partTarget) {\n this.manifest.partTargetDuration = this.manifest.partInf.partTarget;\n }\n\n setHoldBack.call(this, this.manifest);\n },\n\n 'daterange'() {\n this.manifest.dateRanges.push(camelCaseKeys(entry.attributes));\n const index = this.manifest.dateRanges.length - 1;\n this.warnOnMissingAttributes_(`#EXT-X-DATERANGE #${index}`, entry.attributes, ['ID', 'START-DATE']);\n const dateRange = this.manifest.dateRanges[index];\n\n if (dateRange.endDate && dateRange.startDate && new Date(dateRange.endDate) < new Date(dateRange.startDate)) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE END-DATE must be equal to or later than the value of the START-DATE'\n });\n }\n\n if (dateRange.duration && dateRange.duration < 0) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE DURATION must not be negative'\n });\n }\n\n if (dateRange.plannedDuration && dateRange.plannedDuration < 0) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE PLANNED-DURATION must not be negative'\n });\n }\n\n const endOnNextYes = !!dateRange.endOnNext;\n\n if (endOnNextYes && !dateRange.class) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE with an END-ON-NEXT=YES attribute must have a CLASS attribute'\n });\n }\n\n if (endOnNextYes && (dateRange.duration || dateRange.endDate)) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE with an END-ON-NEXT=YES attribute must not contain DURATION or END-DATE attributes'\n });\n }\n\n if (dateRange.duration && dateRange.endDate) {\n const startDate = dateRange.startDate;\n const newDateInSeconds = startDate.getTime() + dateRange.duration * 1000;\n this.manifest.dateRanges[index].endDate = new Date(newDateInSeconds);\n }\n\n if (!dateRangeTags[dateRange.id]) {\n dateRangeTags[dateRange.id] = dateRange;\n } else {\n for (const attribute in dateRangeTags[dateRange.id]) {\n if (!!dateRange[attribute] && JSON.stringify(dateRangeTags[dateRange.id][attribute]) !== JSON.stringify(dateRange[attribute])) {\n this.trigger('warn', {\n message: 'EXT-X-DATERANGE tags with the same ID in a playlist must have the same attributes values'\n });\n break;\n }\n } // if tags with the same ID do not have conflicting attributes, merge them\n\n\n const dateRangeWithSameId = this.manifest.dateRanges.findIndex(dateRangeToFind => dateRangeToFind.id === dateRange.id);\n this.manifest.dateRanges[dateRangeWithSameId] = _extends(this.manifest.dateRanges[dateRangeWithSameId], dateRange);\n dateRangeTags[dateRange.id] = _extends(dateRangeTags[dateRange.id], dateRange); // after merging, delete the duplicate dateRange that was added last\n\n this.manifest.dateRanges.pop();\n }\n },\n\n 'independent-segments'() {\n this.manifest.independentSegments = true;\n },\n\n 'i-frames-only'() {\n this.manifest.iFramesOnly = true;\n this.requiredCompatibilityversion(this.manifest.version, 4);\n },\n\n 'content-steering'() {\n this.manifest.contentSteering = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-CONTENT-STEERING', entry.attributes, ['SERVER-URI']);\n },\n\n /** @this {Parser} */\n define() {\n this.manifest.definitions = this.manifest.definitions || {};\n\n const addDef = (n, v) => {\n if (n in this.manifest.definitions) {\n // An EXT-X-DEFINE tag MUST NOT specify the same Variable Name as any other\n // EXT-X-DEFINE tag in the same Playlist. Parsers that encounter duplicate\n // Variable Name declarations MUST fail to parse the Playlist.\n this.trigger('error', {\n message: `EXT-X-DEFINE: Duplicate name ${n}`\n });\n return;\n }\n\n this.manifest.definitions[n] = v;\n };\n\n if ('QUERYPARAM' in entry.attributes) {\n if ('NAME' in entry.attributes || 'IMPORT' in entry.attributes) {\n // An EXT-X-DEFINE tag MUST contain either a NAME, an IMPORT, or a\n // QUERYPARAM attribute, but only one of the three. Otherwise, the\n // client MUST fail to parse the Playlist.\n this.trigger('error', {\n message: 'EXT-X-DEFINE: Invalid attributes'\n });\n return;\n }\n\n const val = this.params.get(entry.attributes.QUERYPARAM);\n\n if (!val) {\n // If the QUERYPARAM attribute value does not match any query parameter in\n // the URI or the matching parameter has no associated value, the parser\n // MUST fail to parse the Playlist. If more than one parameter matches,\n // any of the associated values MAY be used.\n this.trigger('error', {\n message: `EXT-X-DEFINE: No query param ${entry.attributes.QUERYPARAM}`\n });\n return;\n }\n\n addDef(entry.attributes.QUERYPARAM, decodeURIComponent(val));\n return;\n }\n\n if ('NAME' in entry.attributes) {\n if ('IMPORT' in entry.attributes) {\n // An EXT-X-DEFINE tag MUST contain either a NAME, an IMPORT, or a\n // QUERYPARAM attribute, but only one of the three. Otherwise, the\n // client MUST fail to parse the Playlist.\n this.trigger('error', {\n message: 'EXT-X-DEFINE: Invalid attributes'\n });\n return;\n }\n\n if (!('VALUE' in entry.attributes) || typeof entry.attributes.VALUE !== 'string') {\n // This attribute is REQUIRED if the EXT-X-DEFINE tag has a NAME attribute.\n // The quoted-string MAY be empty.\n this.trigger('error', {\n message: `EXT-X-DEFINE: No value for ${entry.attributes.NAME}`\n });\n return;\n }\n\n addDef(entry.attributes.NAME, entry.attributes.VALUE);\n return;\n }\n\n if ('IMPORT' in entry.attributes) {\n if (!this.mainDefinitions[entry.attributes.IMPORT]) {\n // Covers two conditions, as mainDefinitions will always be empty on main\n //\n // EXT-X-DEFINE tags containing the IMPORT attribute MUST NOT occur in\n // Multivariant Playlists; they are only allowed in Media Playlists.\n //\n // If the IMPORT attribute value does not match any Variable Name in the\n // Multivariant Playlist, or if the Media Playlist loaded from a\n // Multivariant Playlist, the parser MUST fail the Playlist.\n this.trigger('error', {\n message: `EXT-X-DEFINE: No value ${entry.attributes.IMPORT} to import, or IMPORT used on main playlist`\n });\n return;\n }\n\n addDef(entry.attributes.IMPORT, this.mainDefinitions[entry.attributes.IMPORT]);\n return;\n } // An EXT-X-DEFINE tag MUST contain either a NAME, an IMPORT, or a QUERYPARAM\n // attribute, but only one of the three. Otherwise, the client MUST fail to\n // parse the Playlist.\n\n\n this.trigger('error', {\n message: 'EXT-X-DEFINE: No attribute'\n });\n },\n\n 'i-frame-playlist'() {\n this.manifest.iFramePlaylists.push({\n attributes: entry.attributes,\n uri: entry.uri,\n timeline: currentTimeline\n });\n this.warnOnMissingAttributes_('#EXT-X-I-FRAME-STREAM-INF', entry.attributes, ['BANDWIDTH', 'URI']);\n }\n\n })[entry.tagType] || noop).call(self);\n },\n\n uri() {\n currentUri.uri = entry.uri;\n uris.push(currentUri); // if no explicit duration was declared, use the target duration\n\n if (this.manifest.targetDuration && !('duration' in currentUri)) {\n this.trigger('warn', {\n message: 'defaulting segment duration to the target duration'\n });\n currentUri.duration = this.manifest.targetDuration;\n } // annotate with encryption information, if necessary\n\n\n if (key) {\n currentUri.key = key;\n }\n\n currentUri.timeline = currentTimeline; // annotate with initialization segment information, if necessary\n\n if (currentMap) {\n currentUri.map = currentMap;\n } // reset the last byterange end as it needs to be 0 between parts\n\n\n lastPartByterangeEnd = 0; // Once we have at least one program date time we can always extrapolate it forward\n\n if (this.lastProgramDateTime !== null) {\n currentUri.programDateTime = this.lastProgramDateTime;\n this.lastProgramDateTime += currentUri.duration * 1000;\n } // prepare for the next URI\n\n\n currentUri = {};\n },\n\n comment() {// comments are not important for playback\n },\n\n custom() {\n // if this is segment-level data attach the output to the segment\n if (entry.segment) {\n currentUri.custom = currentUri.custom || {};\n currentUri.custom[entry.customType] = entry.data; // if this is manifest-level data attach to the top level manifest object\n } else {\n this.manifest.custom = this.manifest.custom || {};\n this.manifest.custom[entry.customType] = entry.data;\n }\n }\n\n })[entry.type].call(self);\n });\n }\n\n requiredCompatibilityversion(currentVersion, targetVersion) {\n if (currentVersion < targetVersion || !currentVersion) {\n this.trigger('warn', {\n message: `manifest must be at least version ${targetVersion}`\n });\n }\n }\n\n warnOnMissingAttributes_(identifier, attributes, required) {\n const missing = [];\n required.forEach(function (key) {\n if (!attributes.hasOwnProperty(key)) {\n missing.push(key);\n }\n });\n\n if (missing.length) {\n this.trigger('warn', {\n message: `${identifier} lacks required attribute(s): ${missing.join(', ')}`\n });\n }\n }\n /**\n * Parse the input string and update the manifest object.\n *\n * @param {string} chunk a potentially incomplete portion of the manifest\n */\n\n\n push(chunk) {\n this.lineStream.push(chunk);\n }\n /**\n * Flush any remaining input. This can be handy if the last line of an M3U8\n * manifest did not contain a trailing newline but the file has been\n * completely received.\n */\n\n\n end() {\n // flush any buffered input\n this.lineStream.push('\\n');\n\n if (this.manifest.dateRanges.length && this.lastProgramDateTime === null) {\n this.trigger('warn', {\n message: 'A playlist with EXT-X-DATERANGE tag must contain atleast one EXT-X-PROGRAM-DATE-TIME tag'\n });\n }\n\n this.lastProgramDateTime = null;\n this.trigger('end');\n }\n /**\n * Add an additional parser for non-standard tags\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.customType the custom type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n\n\n addParser(options) {\n this.parseStream.addParser(options);\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n\n\n addTagMapper(options) {\n this.parseStream.addTagMapper(options);\n }\n\n}\n\nexport { LineStream, ParseStream, Parser };\n","import window from 'global/window'; // const log2 = Math.log2 ? Math.log2 : (x) => (Math.log(x) / Math.log(2));\n\nvar repeat = function repeat(str, len) {\n var acc = '';\n\n while (len--) {\n acc += str;\n }\n\n return acc;\n}; // count the number of bits it would take to represent a number\n// we used to do this with log2 but BigInt does not support builtin math\n// Math.ceil(log2(x));\n\n\nexport var countBits = function countBits(x) {\n return x.toString(2).length;\n}; // count the number of whole bytes it would take to represent a number\n\nexport var countBytes = function countBytes(x) {\n return Math.ceil(countBits(x) / 8);\n};\nexport var padStart = function padStart(b, len, str) {\n if (str === void 0) {\n str = ' ';\n }\n\n return (repeat(str, len) + b.toString()).slice(-len);\n};\nexport var isArrayBufferView = function isArrayBufferView(obj) {\n if (ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(obj);\n }\n\n return obj && obj.buffer instanceof ArrayBuffer;\n};\nexport var isTypedArray = function isTypedArray(obj) {\n return isArrayBufferView(obj);\n};\nexport var toUint8 = function toUint8(bytes) {\n if (bytes instanceof Uint8Array) {\n return bytes;\n }\n\n if (!Array.isArray(bytes) && !isTypedArray(bytes) && !(bytes instanceof ArrayBuffer)) {\n // any non-number or NaN leads to empty uint8array\n // eslint-disable-next-line\n if (typeof bytes !== 'number' || typeof bytes === 'number' && bytes !== bytes) {\n bytes = 0;\n } else {\n bytes = [bytes];\n }\n }\n\n return new Uint8Array(bytes && bytes.buffer || bytes, bytes && bytes.byteOffset || 0, bytes && bytes.byteLength || 0);\n};\nexport var toHexString = function toHexString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(16), 2, '0');\n }\n\n return str;\n};\nexport var toBinaryString = function toBinaryString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(2), 8, '0');\n }\n\n return str;\n};\nvar BigInt = window.BigInt || Number;\nvar BYTE_TABLE = [BigInt('0x1'), BigInt('0x100'), BigInt('0x10000'), BigInt('0x1000000'), BigInt('0x100000000'), BigInt('0x10000000000'), BigInt('0x1000000000000'), BigInt('0x100000000000000'), BigInt('0x10000000000000000')];\nexport var ENDIANNESS = function () {\n var a = new Uint16Array([0xFFCC]);\n var b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n\n if (b[0] === 0xFF) {\n return 'big';\n }\n\n if (b[0] === 0xCC) {\n return 'little';\n }\n\n return 'unknown';\n}();\nexport var IS_BIG_ENDIAN = ENDIANNESS === 'big';\nexport var IS_LITTLE_ENDIAN = ENDIANNESS === 'little';\nexport var bytesToNumber = function bytesToNumber(bytes, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$signed = _ref.signed,\n signed = _ref$signed === void 0 ? false : _ref$signed,\n _ref$le = _ref.le,\n le = _ref$le === void 0 ? false : _ref$le;\n\n bytes = toUint8(bytes);\n var fn = le ? 'reduce' : 'reduceRight';\n var obj = bytes[fn] ? bytes[fn] : Array.prototype[fn];\n var number = obj.call(bytes, function (total, byte, i) {\n var exponent = le ? i : Math.abs(i + 1 - bytes.length);\n return total + BigInt(byte) * BYTE_TABLE[exponent];\n }, BigInt(0));\n\n if (signed) {\n var max = BYTE_TABLE[bytes.length] / BigInt(2) - BigInt(1);\n number = BigInt(number);\n\n if (number > max) {\n number -= max;\n number -= max;\n number -= BigInt(2);\n }\n }\n\n return Number(number);\n};\nexport var numberToBytes = function numberToBytes(number, _temp2) {\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\n _ref2$le = _ref2.le,\n le = _ref2$le === void 0 ? false : _ref2$le;\n\n // eslint-disable-next-line\n if (typeof number !== 'bigint' && typeof number !== 'number' || typeof number === 'number' && number !== number) {\n number = 0;\n }\n\n number = BigInt(number);\n var byteCount = countBytes(number);\n var bytes = new Uint8Array(new ArrayBuffer(byteCount));\n\n for (var i = 0; i < byteCount; i++) {\n var byteIndex = le ? i : Math.abs(i + 1 - bytes.length);\n bytes[byteIndex] = Number(number / BYTE_TABLE[i] & BigInt(0xFF));\n\n if (number < 0) {\n bytes[byteIndex] = Math.abs(~bytes[byteIndex]);\n bytes[byteIndex] -= i === 0 ? 1 : 2;\n }\n }\n\n return bytes;\n};\nexport var bytesToString = function bytesToString(bytes) {\n if (!bytes) {\n return '';\n } // TODO: should toUint8 handle cases where we only have 8 bytes\n // but report more since this is a Uint16+ Array?\n\n\n bytes = Array.prototype.slice.call(bytes);\n var string = String.fromCharCode.apply(null, toUint8(bytes));\n\n try {\n return decodeURIComponent(escape(string));\n } catch (e) {// if decodeURIComponent/escape fails, we are dealing with partial\n // or full non string data. Just return the potentially garbled string.\n }\n\n return string;\n};\nexport var stringToBytes = function stringToBytes(string, stringIsBytes) {\n if (typeof string !== 'string' && string && typeof string.toString === 'function') {\n string = string.toString();\n }\n\n if (typeof string !== 'string') {\n return new Uint8Array();\n } // If the string already is bytes, we don't have to do this\n // otherwise we do this so that we split multi length characters\n // into individual bytes\n\n\n if (!stringIsBytes) {\n string = unescape(encodeURIComponent(string));\n }\n\n var view = new Uint8Array(string.length);\n\n for (var i = 0; i < string.length; i++) {\n view[i] = string.charCodeAt(i);\n }\n\n return view;\n};\nexport var concatTypedArrays = function concatTypedArrays() {\n for (var _len = arguments.length, buffers = new Array(_len), _key = 0; _key < _len; _key++) {\n buffers[_key] = arguments[_key];\n }\n\n buffers = buffers.filter(function (b) {\n return b && (b.byteLength || b.length) && typeof b !== 'string';\n });\n\n if (buffers.length <= 1) {\n // for 0 length we will return empty uint8\n // for 1 length we return the first uint8\n return toUint8(buffers[0]);\n }\n\n var totalLen = buffers.reduce(function (total, buf, i) {\n return total + (buf.byteLength || buf.length);\n }, 0);\n var tempBuffer = new Uint8Array(totalLen);\n var offset = 0;\n buffers.forEach(function (buf) {\n buf = toUint8(buf);\n tempBuffer.set(buf, offset);\n offset += buf.byteLength;\n });\n return tempBuffer;\n};\n/**\n * Check if the bytes \"b\" are contained within bytes \"a\".\n *\n * @param {Uint8Array|Array} a\n * Bytes to check in\n *\n * @param {Uint8Array|Array} b\n * Bytes to check for\n *\n * @param {Object} options\n * options\n *\n * @param {Array|Uint8Array} [offset=0]\n * offset to use when looking at bytes in a\n *\n * @param {Array|Uint8Array} [mask=[]]\n * mask to use on bytes before comparison.\n *\n * @return {boolean}\n * If all bytes in b are inside of a, taking into account\n * bit masks.\n */\n\nexport var bytesMatch = function bytesMatch(a, b, _temp3) {\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\n _ref3$offset = _ref3.offset,\n offset = _ref3$offset === void 0 ? 0 : _ref3$offset,\n _ref3$mask = _ref3.mask,\n mask = _ref3$mask === void 0 ? [] : _ref3$mask;\n\n a = toUint8(a);\n b = toUint8(b); // ie 11 does not support uint8 every\n\n var fn = b.every ? b.every : Array.prototype.every;\n return b.length && a.length - offset >= b.length && // ie 11 doesn't support every on uin8\n fn.call(b, function (bByte, i) {\n var aByte = mask[i] ? mask[i] & a[offset + i] : a[offset + i];\n return bByte === aByte;\n });\n};\nexport var sliceBytes = function sliceBytes(src, start, end) {\n if (Uint8Array.prototype.slice) {\n return Uint8Array.prototype.slice.call(src, start, end);\n }\n\n return new Uint8Array(Array.prototype.slice.call(src, start, end));\n};\nexport var reverseBytes = function reverseBytes(src) {\n if (src.reverse) {\n return src.reverse();\n }\n\n return Array.prototype.reverse.call(src);\n};","var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring\nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif (Object.hasOwnProperty.call(entityMap, k)) {\n\t\t\treturn entityMap[k];\n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退,有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(\n\t\t\tqname,\n\t\t\t// @see https://www.w3.org/TR/xml/#AVNormalize\n\t\t\t// since the xmldom sax parser does not \"interpret\" DTD the following is not implemented:\n\t\t\t// - recursive replacement of (DTD) entity references\n\t\t\t// - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA\n\t\t\tvalue.replace(/[\\t\\n\\r]/g, ' ').replace(/&#?\\w+;/g, entityReplacer),\n\t\t\tstartIndex\n\t\t)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tel.closed = true;\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start, p);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value)\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('')\n\t\tif(pos',start+4);\n\t\t\t//append comment source.substring(4,end)//\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i1)?_c('div',{staticClass:\"swiper-dots\"},_vm._l((_vm.bannerList),function(x,idx){return _c('span',{key:idx,staticClass:\"dots-item\",class:{'active': idx === _vm.bannerIndex},attrs:{\"id\":\"cruiseDetailBannerIndex\"}})}),0):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShorexSwiper.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShorexSwiper.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ShorexSwiper.vue?vue&type=template&id=974a797e&scoped=true\"\nimport script from \"./ShorexSwiper.vue?vue&type=script&lang=js\"\nexport * from \"./ShorexSwiper.vue?vue&type=script&lang=js\"\nimport style0 from \"./ShorexSwiper.vue?vue&type=style&index=0&id=974a797e&prod&scoped=true&lang=less\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"974a797e\",\n null\n \n)\n\nexport default component.exports","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","\"use strict\";\n\nvar RetryManager = /*#__PURE__*/function () {\n function RetryManager() {\n this.maxAttempts_ = 1;\n this.delayFactor_ = 0.1;\n this.fuzzFactor_ = 0.1;\n this.initialDelay_ = 1000;\n this.enabled_ = false;\n }\n\n var _proto = RetryManager.prototype;\n\n _proto.getIsEnabled = function getIsEnabled() {\n return this.enabled_;\n };\n\n _proto.enable = function enable() {\n this.enabled_ = true;\n };\n\n _proto.disable = function disable() {\n this.enabled_ = false;\n };\n\n _proto.reset = function reset() {\n this.maxAttempts_ = 1;\n this.delayFactor_ = 0.1;\n this.fuzzFactor_ = 0.1;\n this.initialDelay_ = 1000;\n this.enabled_ = false;\n };\n\n _proto.getMaxAttempts = function getMaxAttempts() {\n return this.maxAttempts_;\n };\n\n _proto.setMaxAttempts = function setMaxAttempts(maxAttempts) {\n this.maxAttempts_ = maxAttempts;\n };\n\n _proto.getDelayFactor = function getDelayFactor() {\n return this.delayFactor_;\n };\n\n _proto.setDelayFactor = function setDelayFactor(delayFactor) {\n this.delayFactor_ = delayFactor;\n };\n\n _proto.getFuzzFactor = function getFuzzFactor() {\n return this.fuzzFactor_;\n };\n\n _proto.setFuzzFactor = function setFuzzFactor(fuzzFactor) {\n this.fuzzFactor_ = fuzzFactor;\n };\n\n _proto.getInitialDelay = function getInitialDelay() {\n return this.initialDelay_;\n };\n\n _proto.setInitialDelay = function setInitialDelay(initialDelay) {\n this.initialDelay_ = initialDelay;\n };\n\n _proto.createRetry = function createRetry(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n maxAttempts = _ref.maxAttempts,\n delayFactor = _ref.delayFactor,\n fuzzFactor = _ref.fuzzFactor,\n initialDelay = _ref.initialDelay;\n\n return new Retry({\n maxAttempts: maxAttempts || this.maxAttempts_,\n delayFactor: delayFactor || this.delayFactor_,\n fuzzFactor: fuzzFactor || this.fuzzFactor_,\n initialDelay: initialDelay || this.initialDelay_\n });\n };\n\n return RetryManager;\n}();\n\nvar Retry = /*#__PURE__*/function () {\n function Retry(options) {\n this.maxAttempts_ = options.maxAttempts;\n this.delayFactor_ = options.delayFactor;\n this.fuzzFactor_ = options.fuzzFactor;\n this.currentDelay_ = options.initialDelay;\n this.currentAttempt_ = 1;\n }\n\n var _proto2 = Retry.prototype;\n\n _proto2.moveToNextAttempt = function moveToNextAttempt() {\n this.currentAttempt_++;\n var delayDelta = this.currentDelay_ * this.delayFactor_;\n this.currentDelay_ = this.currentDelay_ + delayDelta;\n };\n\n _proto2.shouldRetry = function shouldRetry() {\n return this.currentAttempt_ < this.maxAttempts_;\n };\n\n _proto2.getCurrentDelay = function getCurrentDelay() {\n return this.currentDelay_;\n };\n\n _proto2.getCurrentMinPossibleDelay = function getCurrentMinPossibleDelay() {\n return (1 - this.fuzzFactor_) * this.currentDelay_;\n };\n\n _proto2.getCurrentMaxPossibleDelay = function getCurrentMaxPossibleDelay() {\n return (1 + this.fuzzFactor_) * this.currentDelay_;\n }\n /**\n * For example fuzzFactor is 0.1\n * This means ±10% deviation\n * So if we have delay as 1000\n * This function can generate any value from 900 to 1100\n */\n ;\n\n _proto2.getCurrentFuzzedDelay = function getCurrentFuzzedDelay() {\n var lowValue = this.getCurrentMinPossibleDelay();\n var highValue = this.getCurrentMaxPossibleDelay();\n return lowValue + Math.random() * (highValue - lowValue);\n };\n\n return Retry;\n}();\n\nmodule.exports = RetryManager;","var topLevel = typeof global !== 'undefined' ? global :\n typeof window !== 'undefined' ? window : {}\nvar minDoc = require('min-document');\n\nvar doccy;\n\nif (typeof document !== 'undefined') {\n doccy = document;\n} else {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];\n\n if (!doccy) {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;\n }\n}\n\nmodule.exports = doccy;\n","/**\n * @license\n * Video.js 8.17.4 \n * Copyright Brightcove, Inc. \n * Available under Apache License Version 2.0\n * \n *\n * Includes vtt.js \n * Available under Apache License Version 2.0\n * \n */\n\nimport window$1 from 'global/window';\nimport document$1 from 'global/document';\nimport XHR from '@videojs/xhr';\nimport vtt from 'videojs-vtt.js';\nimport _extends from '@babel/runtime/helpers/extends';\nimport _resolveUrl from '@videojs/vhs-utils/es/resolve-url.js';\nimport { Parser } from 'm3u8-parser';\nimport { DEFAULT_VIDEO_CODEC, DEFAULT_AUDIO_CODEC, parseCodecs, muxerSupportsCodec, browserSupportsCodec, translateLegacyCodec, codecsFromDefault, isAudioCodec, getMimeForCodec } from '@videojs/vhs-utils/es/codecs.js';\nimport { simpleTypeFromSourceType } from '@videojs/vhs-utils/es/media-types.js';\nimport { isArrayBufferView, concatTypedArrays, stringToBytes, toUint8 } from '@videojs/vhs-utils/es/byte-helpers';\nimport { generateSidxKey, parseUTCTiming, parse, addSidxSegmentsToPlaylist } from 'mpd-parser';\nimport parseSidx from 'mux.js/lib/tools/parse-sidx';\nimport { getId3Offset } from '@videojs/vhs-utils/es/id3-helpers';\nimport { detectContainerForBytes, isLikelyFmp4MediaSegment } from '@videojs/vhs-utils/es/containers';\nimport { ONE_SECOND_IN_TS } from 'mux.js/lib/utils/clock';\n\nvar version$6 = \"8.17.4\";\n\n/**\n * An Object that contains lifecycle hooks as keys which point to an array\n * of functions that are run when a lifecycle is triggered\n *\n * @private\n */\nconst hooks_ = {};\n\n/**\n * Get a list of hooks for a specific lifecycle\n *\n * @param {string} type\n * the lifecycle to get hooks from\n *\n * @param {Function|Function[]} [fn]\n * Optionally add a hook (or hooks) to the lifecycle that your are getting.\n *\n * @return {Array}\n * an array of hooks, or an empty array if there are none.\n */\nconst hooks = function (type, fn) {\n hooks_[type] = hooks_[type] || [];\n if (fn) {\n hooks_[type] = hooks_[type].concat(fn);\n }\n return hooks_[type];\n};\n\n/**\n * Add a function hook to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\nconst hook = function (type, fn) {\n hooks(type, fn);\n};\n\n/**\n * Remove a hook from a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle that the function hooked to\n *\n * @param {Function} fn\n * The hooked function to remove\n *\n * @return {boolean}\n * The function that was removed or undef\n */\nconst removeHook = function (type, fn) {\n const index = hooks(type).indexOf(fn);\n if (index <= -1) {\n return false;\n }\n hooks_[type] = hooks_[type].slice();\n hooks_[type].splice(index, 1);\n return true;\n};\n\n/**\n * Add a function hook that will only run once to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\nconst hookOnce = function (type, fn) {\n hooks(type, [].concat(fn).map(original => {\n const wrapper = (...args) => {\n removeHook(type, wrapper);\n return original(...args);\n };\n return wrapper;\n }));\n};\n\n/**\n * @file fullscreen-api.js\n * @module fullscreen-api\n */\n\n/**\n * Store the browser-specific methods for the fullscreen API.\n *\n * @type {Object}\n * @see [Specification]{@link https://fullscreen.spec.whatwg.org}\n * @see [Map Approach From Screenfull.js]{@link https://github.com/sindresorhus/screenfull.js}\n */\nconst FullscreenApi = {\n prefixed: true\n};\n\n// browser API methods\nconst apiMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror', 'fullscreen'],\n// WebKit\n['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror', '-webkit-full-screen']];\nconst specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document$1) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (let i = 0; i < browserApi.length; i++) {\n FullscreenApi[specApi[i]] = browserApi[i];\n }\n FullscreenApi.prefixed = browserApi[0] !== specApi[0];\n}\n\n/**\n * @file create-logger.js\n * @module create-logger\n */\n\n// This is the private tracking variable for the logging history.\nlet history = [];\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @private\n * @param {string} name\n * The name of the console method to use.\n *\n * @param {Object} log\n * The arguments to be passed to the matching console method.\n *\n * @param {string} [styles]\n * styles for name\n */\nconst LogByTypeFactory = (name, log, styles) => (type, level, args) => {\n const lvl = log.levels[level];\n const lvlRegExp = new RegExp(`^(${lvl})$`);\n let resultName = name;\n if (type !== 'log') {\n // Add the type to the front of the message when it's not \"log\".\n args.unshift(type.toUpperCase() + ':');\n }\n if (styles) {\n resultName = `%c${name}`;\n args.unshift(styles);\n }\n\n // Add console prefix after adding to history.\n args.unshift(resultName + ':');\n\n // Add a clone of the args at this point to history.\n if (history) {\n history.push([].concat(args));\n\n // only store 1000 history entries\n const splice = history.length - 1000;\n history.splice(0, splice > 0 ? splice : 0);\n }\n\n // If there's no console then don't try to output messages, but they will\n // still be stored in history.\n if (!window$1.console) {\n return;\n }\n\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n // when the module is executed.\n let fn = window$1.console[type];\n if (!fn && type === 'debug') {\n // Certain browsers don't have support for console.debug. For those, we\n // should default to the closest comparable log.\n fn = window$1.console.info || window$1.console.log;\n }\n\n // Bail out if there's no console or if this type is not allowed by the\n // current logging level.\n if (!fn || !lvl || !lvlRegExp.test(type)) {\n return;\n }\n fn[Array.isArray(args) ? 'apply' : 'call'](window$1.console, args);\n};\nfunction createLogger$1(name, delimiter = ':', styles = '') {\n // This is the private tracking variable for logging level.\n let level = 'info';\n\n // the curried logByType bound to the specific log and history\n let logByType;\n\n /**\n * Logs plain debug messages. Similar to `console.log`.\n *\n * Due to [limitations](https://github.com/jsdoc3/jsdoc/issues/955#issuecomment-313829149)\n * of our JSDoc template, we cannot properly document this as both a function\n * and a namespace, so its function signature is documented here.\n *\n * #### Arguments\n * ##### *args\n * *[]\n *\n * Any combination of values that could be passed to `console.log()`.\n *\n * #### Return Value\n *\n * `undefined`\n *\n * @namespace\n * @param {...*} args\n * One or more messages or objects that should be logged.\n */\n function log(...args) {\n logByType('log', level, args);\n }\n\n // This is the logByType helper that the logging methods below use\n logByType = LogByTypeFactory(name, log, styles);\n\n /**\n * Create a new subLogger which chains the old name to the new name.\n *\n * For example, doing `mylogger = videojs.log.createLogger('player')` and then using that logger will log the following:\n * ```js\n * mylogger('foo');\n * // > VIDEOJS: player: foo\n * ```\n *\n * @param {string} subName\n * The name to add call the new logger\n * @param {string} [subDelimiter]\n * Optional delimiter\n * @param {string} [subStyles]\n * Optional styles\n * @return {Object}\n */\n log.createLogger = (subName, subDelimiter, subStyles) => {\n const resultDelimiter = subDelimiter !== undefined ? subDelimiter : delimiter;\n const resultStyles = subStyles !== undefined ? subStyles : styles;\n const resultName = `${name} ${resultDelimiter} ${subName}`;\n return createLogger$1(resultName, resultDelimiter, resultStyles);\n };\n\n /**\n * Create a new logger.\n *\n * @param {string} newName\n * The name for the new logger\n * @param {string} [newDelimiter]\n * Optional delimiter\n * @param {string} [newStyles]\n * Optional styles\n * @return {Object}\n */\n log.createNewLogger = (newName, newDelimiter, newStyles) => {\n return createLogger$1(newName, newDelimiter, newStyles);\n };\n\n /**\n * Enumeration of available logging levels, where the keys are the level names\n * and the values are `|`-separated strings containing logging methods allowed\n * in that logging level. These strings are used to create a regular expression\n * matching the function name being called.\n *\n * Levels provided by Video.js are:\n *\n * - `off`: Matches no calls. Any value that can be cast to `false` will have\n * this effect. The most restrictive.\n * - `all`: Matches only Video.js-provided functions (`debug`, `log`,\n * `log.warn`, and `log.error`).\n * - `debug`: Matches `log.debug`, `log`, `log.warn`, and `log.error` calls.\n * - `info` (default): Matches `log`, `log.warn`, and `log.error` calls.\n * - `warn`: Matches `log.warn` and `log.error` calls.\n * - `error`: Matches only `log.error` calls.\n *\n * @type {Object}\n */\n log.levels = {\n all: 'debug|log|warn|error',\n off: '',\n debug: 'debug|log|warn|error',\n info: 'log|warn|error',\n warn: 'warn|error',\n error: 'error',\n DEFAULT: level\n };\n\n /**\n * Get or set the current logging level.\n *\n * If a string matching a key from {@link module:log.levels} is provided, acts\n * as a setter.\n *\n * @param {'all'|'debug'|'info'|'warn'|'error'|'off'} [lvl]\n * Pass a valid level to set a new logging level.\n *\n * @return {string}\n * The current logging level.\n */\n log.level = lvl => {\n if (typeof lvl === 'string') {\n if (!log.levels.hasOwnProperty(lvl)) {\n throw new Error(`\"${lvl}\" in not a valid log level`);\n }\n level = lvl;\n }\n return level;\n };\n\n /**\n * Returns an array containing everything that has been logged to the history.\n *\n * This array is a shallow clone of the internal history record. However, its\n * contents are _not_ cloned; so, mutating objects inside this array will\n * mutate them in history.\n *\n * @return {Array}\n */\n log.history = () => history ? [].concat(history) : [];\n\n /**\n * Allows you to filter the history by the given logger name\n *\n * @param {string} fname\n * The name to filter by\n *\n * @return {Array}\n * The filtered list to return\n */\n log.history.filter = fname => {\n return (history || []).filter(historyItem => {\n // if the first item in each historyItem includes `fname`, then it's a match\n return new RegExp(`.*${fname}.*`).test(historyItem[0]);\n });\n };\n\n /**\n * Clears the internal history tracking, but does not prevent further history\n * tracking.\n */\n log.history.clear = () => {\n if (history) {\n history.length = 0;\n }\n };\n\n /**\n * Disable history tracking if it is currently enabled.\n */\n log.history.disable = () => {\n if (history !== null) {\n history.length = 0;\n history = null;\n }\n };\n\n /**\n * Enable history tracking if it is currently disabled.\n */\n log.history.enable = () => {\n if (history === null) {\n history = [];\n }\n };\n\n /**\n * Logs error messages. Similar to `console.error`.\n *\n * @param {...*} args\n * One or more messages or objects that should be logged as an error\n */\n log.error = (...args) => logByType('error', level, args);\n\n /**\n * Logs warning messages. Similar to `console.warn`.\n *\n * @param {...*} args\n * One or more messages or objects that should be logged as a warning.\n */\n log.warn = (...args) => logByType('warn', level, args);\n\n /**\n * Logs debug messages. Similar to `console.debug`, but may also act as a comparable\n * log if `console.debug` is not available\n *\n * @param {...*} args\n * One or more messages or objects that should be logged as debug.\n */\n log.debug = (...args) => logByType('debug', level, args);\n return log;\n}\n\n/**\n * @file log.js\n * @module log\n */\nconst log$1 = createLogger$1('VIDEOJS');\nconst createLogger = log$1.createLogger;\n\n/**\n * @file obj.js\n * @module obj\n */\n\n/**\n * @callback obj:EachCallback\n *\n * @param {*} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n */\n\n/**\n * @callback obj:ReduceCallback\n *\n * @param {*} accum\n * The value that is accumulating over the reduce loop.\n *\n * @param {*} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n *\n * @return {*}\n * The new accumulated value.\n */\nconst toString = Object.prototype.toString;\n\n/**\n * Get the keys of an Object\n *\n * @param {Object}\n * The Object to get the keys from\n *\n * @return {string[]}\n * An array of the keys from the object. Returns an empty array if the\n * object passed in was invalid or had no keys.\n *\n * @private\n */\nconst keys = function (object) {\n return isObject(object) ? Object.keys(object) : [];\n};\n\n/**\n * Array-like iteration for objects.\n *\n * @param {Object} object\n * The object to iterate over\n *\n * @param {obj:EachCallback} fn\n * The callback function which is called for each key in the object.\n */\nfunction each(object, fn) {\n keys(object).forEach(key => fn(object[key], key));\n}\n\n/**\n * Array-like reduce for objects.\n *\n * @param {Object} object\n * The Object that you want to reduce.\n *\n * @param {Function} fn\n * A callback function which is called for each key in the object. It\n * receives the accumulated value and the per-iteration value and key\n * as arguments.\n *\n * @param {*} [initial = 0]\n * Starting value\n *\n * @return {*}\n * The final accumulated value.\n */\nfunction reduce(object, fn, initial = 0) {\n return keys(object).reduce((accum, key) => fn(accum, object[key], key), initial);\n}\n\n/**\n * Returns whether a value is an object of any kind - including DOM nodes,\n * arrays, regular expressions, etc. Not functions, though.\n *\n * This avoids the gotcha where using `typeof` on a `null` value\n * results in `'object'`.\n *\n * @param {Object} value\n * @return {boolean}\n */\nfunction isObject(value) {\n return !!value && typeof value === 'object';\n}\n\n/**\n * Returns whether an object appears to be a \"plain\" object - that is, a\n * direct instance of `Object`.\n *\n * @param {Object} value\n * @return {boolean}\n */\nfunction isPlain(value) {\n return isObject(value) && toString.call(value) === '[object Object]' && value.constructor === Object;\n}\n\n/**\n * Merge two objects recursively.\n *\n * Performs a deep merge like\n * {@link https://lodash.com/docs/4.17.10#merge|lodash.merge}, but only merges\n * plain objects (not arrays, elements, or anything else).\n *\n * Non-plain object values will be copied directly from the right-most\n * argument.\n *\n * @param {Object[]} sources\n * One or more objects to merge into a new object.\n *\n * @return {Object}\n * A new object that is the merged result of all sources.\n */\nfunction merge$1(...sources) {\n const result = {};\n sources.forEach(source => {\n if (!source) {\n return;\n }\n each(source, (value, key) => {\n if (!isPlain(value)) {\n result[key] = value;\n return;\n }\n if (!isPlain(result[key])) {\n result[key] = {};\n }\n result[key] = merge$1(result[key], value);\n });\n });\n return result;\n}\n\n/**\n * Returns an array of values for a given object\n *\n * @param {Object} source - target object\n * @return {Array} - object values\n */\nfunction values(source = {}) {\n const result = [];\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n const value = source[key];\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * Object.defineProperty but \"lazy\", which means that the value is only set after\n * it is retrieved the first time, rather than being set right away.\n *\n * @param {Object} obj the object to set the property on\n * @param {string} key the key for the property to set\n * @param {Function} getValue the function used to get the value when it is needed.\n * @param {boolean} setter whether a setter should be allowed or not\n */\nfunction defineLazyProperty(obj, key, getValue, setter = true) {\n const set = value => Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n writable: true\n });\n const options = {\n configurable: true,\n enumerable: true,\n get() {\n const value = getValue();\n set(value);\n return value;\n }\n };\n if (setter) {\n options.set = set;\n }\n return Object.defineProperty(obj, key, options);\n}\n\nvar Obj = /*#__PURE__*/Object.freeze({\n __proto__: null,\n each: each,\n reduce: reduce,\n isObject: isObject,\n isPlain: isPlain,\n merge: merge$1,\n values: values,\n defineLazyProperty: defineLazyProperty\n});\n\n/**\n * @file browser.js\n * @module browser\n */\n\n/**\n * Whether or not this device is an iPod.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_IPOD = false;\n\n/**\n * The detected iOS version - or `null`.\n *\n * @static\n * @type {string|null}\n */\nlet IOS_VERSION = null;\n\n/**\n * Whether or not this is an Android device.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_ANDROID = false;\n\n/**\n * The detected Android version - or `null` if not Android or indeterminable.\n *\n * @static\n * @type {number|string|null}\n */\nlet ANDROID_VERSION;\n\n/**\n * Whether or not this is Mozilla Firefox.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_FIREFOX = false;\n\n/**\n * Whether or not this is Microsoft Edge.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_EDGE = false;\n\n/**\n * Whether or not this is any Chromium Browser\n *\n * @static\n * @type {Boolean}\n */\nlet IS_CHROMIUM = false;\n\n/**\n * Whether or not this is any Chromium browser that is not Edge.\n *\n * This will also be `true` for Chrome on iOS, which will have different support\n * as it is actually Safari under the hood.\n *\n * Deprecated, as the behaviour to not match Edge was to prevent Legacy Edge's UA matching.\n * IS_CHROMIUM should be used instead.\n * \"Chromium but not Edge\" could be explicitly tested with IS_CHROMIUM && !IS_EDGE\n *\n * @static\n * @deprecated\n * @type {Boolean}\n */\nlet IS_CHROME = false;\n\n/**\n * The detected Chromium version - or `null`.\n *\n * @static\n * @type {number|null}\n */\nlet CHROMIUM_VERSION = null;\n\n/**\n * The detected Google Chrome version - or `null`.\n * This has always been the _Chromium_ version, i.e. would return on Chromium Edge.\n * Deprecated, use CHROMIUM_VERSION instead.\n *\n * @static\n * @deprecated\n * @type {number|null}\n */\nlet CHROME_VERSION = null;\n\n/**\n * Whether or not this is a Chromecast receiver application.\n *\n * @static\n * @type {Boolean}\n */\nconst IS_CHROMECAST_RECEIVER = Boolean(window$1.cast && window$1.cast.framework && window$1.cast.framework.CastReceiverContext);\n\n/**\n * The detected Internet Explorer version - or `null`.\n *\n * @static\n * @deprecated\n * @type {number|null}\n */\nlet IE_VERSION = null;\n\n/**\n * Whether or not this is desktop Safari.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_SAFARI = false;\n\n/**\n * Whether or not this is a Windows machine.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_WINDOWS = false;\n\n/**\n * Whether or not this device is an iPad.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_IPAD = false;\n\n/**\n * Whether or not this device is an iPhone.\n *\n * @static\n * @type {Boolean}\n */\n// The Facebook app's UIWebView identifies as both an iPhone and iPad, so\n// to identify iPhones, we need to exclude iPads.\n// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/\nlet IS_IPHONE = false;\n\n/**\n * Whether or not this is a Tizen device.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_TIZEN = false;\n\n/**\n * Whether or not this is a WebOS device.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_WEBOS = false;\n\n/**\n * Whether or not this is a Smart TV (Tizen or WebOS) device.\n *\n * @static\n * @type {Boolean}\n */\nlet IS_SMART_TV = false;\n\n/**\n * Whether or not this device is touch-enabled.\n *\n * @static\n * @const\n * @type {Boolean}\n */\nconst TOUCH_ENABLED = Boolean(isReal() && ('ontouchstart' in window$1 || window$1.navigator.maxTouchPoints || window$1.DocumentTouch && window$1.document instanceof window$1.DocumentTouch));\nconst UAD = window$1.navigator && window$1.navigator.userAgentData;\nif (UAD && UAD.platform && UAD.brands) {\n // If userAgentData is present, use it instead of userAgent to avoid warnings\n // Currently only implemented on Chromium\n // userAgentData does not expose Android version, so ANDROID_VERSION remains `null`\n\n IS_ANDROID = UAD.platform === 'Android';\n IS_EDGE = Boolean(UAD.brands.find(b => b.brand === 'Microsoft Edge'));\n IS_CHROMIUM = Boolean(UAD.brands.find(b => b.brand === 'Chromium'));\n IS_CHROME = !IS_EDGE && IS_CHROMIUM;\n CHROMIUM_VERSION = CHROME_VERSION = (UAD.brands.find(b => b.brand === 'Chromium') || {}).version || null;\n IS_WINDOWS = UAD.platform === 'Windows';\n}\n\n// If the browser is not Chromium, either userAgentData is not present which could be an old Chromium browser,\n// or it's a browser that has added userAgentData since that we don't have tests for yet. In either case,\n// the checks need to be made agiainst the regular userAgent string.\nif (!IS_CHROMIUM) {\n const USER_AGENT = window$1.navigator && window$1.navigator.userAgent || '';\n IS_IPOD = /iPod/i.test(USER_AGENT);\n IOS_VERSION = function () {\n const match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) {\n return match[1];\n }\n return null;\n }();\n IS_ANDROID = /Android/i.test(USER_AGENT);\n ANDROID_VERSION = function () {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n const match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i);\n if (!match) {\n return null;\n }\n const major = match[1] && parseFloat(match[1]);\n const minor = match[2] && parseFloat(match[2]);\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n }\n return null;\n }();\n IS_FIREFOX = /Firefox/i.test(USER_AGENT);\n IS_EDGE = /Edg/i.test(USER_AGENT);\n IS_CHROMIUM = /Chrome/i.test(USER_AGENT) || /CriOS/i.test(USER_AGENT);\n IS_CHROME = !IS_EDGE && IS_CHROMIUM;\n CHROMIUM_VERSION = CHROME_VERSION = function () {\n const match = USER_AGENT.match(/(Chrome|CriOS)\\/(\\d+)/);\n if (match && match[2]) {\n return parseFloat(match[2]);\n }\n return null;\n }();\n IE_VERSION = function () {\n const result = /MSIE\\s(\\d+)\\.\\d/.exec(USER_AGENT);\n let version = result && parseFloat(result[1]);\n if (!version && /Trident\\/7.0/i.test(USER_AGENT) && /rv:11.0/.test(USER_AGENT)) {\n // IE 11 has a different user agent string than other IE versions\n version = 11.0;\n }\n return version;\n }();\n IS_TIZEN = /Tizen/i.test(USER_AGENT);\n IS_WEBOS = /Web0S/i.test(USER_AGENT);\n IS_SMART_TV = IS_TIZEN || IS_WEBOS;\n IS_SAFARI = /Safari/i.test(USER_AGENT) && !IS_CHROME && !IS_ANDROID && !IS_EDGE && !IS_SMART_TV;\n IS_WINDOWS = /Windows/i.test(USER_AGENT);\n IS_IPAD = /iPad/i.test(USER_AGENT) || IS_SAFARI && TOUCH_ENABLED && !/iPhone/i.test(USER_AGENT);\n IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\n}\n\n/**\n * Whether or not this is an iOS device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\nconst IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\n/**\n * Whether or not this is any flavor of Safari - including iOS.\n *\n * @static\n * @const\n * @type {Boolean}\n */\nconst IS_ANY_SAFARI = (IS_SAFARI || IS_IOS) && !IS_CHROME;\n\nvar browser = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get IS_IPOD () { return IS_IPOD; },\n get IOS_VERSION () { return IOS_VERSION; },\n get IS_ANDROID () { return IS_ANDROID; },\n get ANDROID_VERSION () { return ANDROID_VERSION; },\n get IS_FIREFOX () { return IS_FIREFOX; },\n get IS_EDGE () { return IS_EDGE; },\n get IS_CHROMIUM () { return IS_CHROMIUM; },\n get IS_CHROME () { return IS_CHROME; },\n get CHROMIUM_VERSION () { return CHROMIUM_VERSION; },\n get CHROME_VERSION () { return CHROME_VERSION; },\n IS_CHROMECAST_RECEIVER: IS_CHROMECAST_RECEIVER,\n get IE_VERSION () { return IE_VERSION; },\n get IS_SAFARI () { return IS_SAFARI; },\n get IS_WINDOWS () { return IS_WINDOWS; },\n get IS_IPAD () { return IS_IPAD; },\n get IS_IPHONE () { return IS_IPHONE; },\n get IS_TIZEN () { return IS_TIZEN; },\n get IS_WEBOS () { return IS_WEBOS; },\n get IS_SMART_TV () { return IS_SMART_TV; },\n TOUCH_ENABLED: TOUCH_ENABLED,\n IS_IOS: IS_IOS,\n IS_ANY_SAFARI: IS_ANY_SAFARI\n});\n\n/**\n * @file dom.js\n * @module dom\n */\n\n/**\n * Detect if a value is a string with any non-whitespace characters.\n *\n * @private\n * @param {string} str\n * The string to check\n *\n * @return {boolean}\n * Will be `true` if the string is non-blank, `false` otherwise.\n *\n */\nfunction isNonBlankString(str) {\n // we use str.trim as it will trim any whitespace characters\n // from the front or back of non-whitespace characters. aka\n // Any string that contains non-whitespace characters will\n // still contain them after `trim` but whitespace only strings\n // will have a length of 0, failing this check.\n return typeof str === 'string' && Boolean(str.trim());\n}\n\n/**\n * Throws an error if the passed string has whitespace. This is used by\n * class methods to be relatively consistent with the classList API.\n *\n * @private\n * @param {string} str\n * The string to check for whitespace.\n *\n * @throws {Error}\n * Throws an error if there is whitespace in the string.\n */\nfunction throwIfWhitespace(str) {\n // str.indexOf instead of regex because str.indexOf is faster performance wise.\n if (str.indexOf(' ') >= 0) {\n throw new Error('class has illegal whitespace characters');\n }\n}\n\n/**\n * Whether the current DOM interface appears to be real (i.e. not simulated).\n *\n * @return {boolean}\n * Will be `true` if the DOM appears to be real, `false` otherwise.\n */\nfunction isReal() {\n // Both document and window will never be undefined thanks to `global`.\n return document$1 === window$1.document;\n}\n\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @param {*} value\n * The value to check.\n *\n * @return {boolean}\n * Will be `true` if the value is a DOM element, `false` otherwise.\n */\nfunction isEl(value) {\n return isObject(value) && value.nodeType === 1;\n}\n\n/**\n * Determines if the current DOM is embedded in an iframe.\n *\n * @return {boolean}\n * Will be `true` if the DOM is embedded in an iframe, `false`\n * otherwise.\n */\nfunction isInFrame() {\n // We need a try/catch here because Safari will throw errors when attempting\n // to get either `parent` or `self`\n try {\n return window$1.parent !== window$1.self;\n } catch (x) {\n return true;\n }\n}\n\n/**\n * Creates functions to query the DOM using a given method.\n *\n * @private\n * @param {string} method\n * The method to create the query with.\n *\n * @return {Function}\n * The query method\n */\nfunction createQuerier(method) {\n return function (selector, context) {\n if (!isNonBlankString(selector)) {\n return document$1[method](null);\n }\n if (isNonBlankString(context)) {\n context = document$1.querySelector(context);\n }\n const ctx = isEl(context) ? context : document$1;\n return ctx[method] && ctx[method](selector);\n };\n}\n\n/**\n * Creates an element and applies properties, attributes, and inserts content.\n *\n * @param {string} [tagName='div']\n * Name of tag to be created.\n *\n * @param {Object} [properties={}]\n * Element properties to be applied.\n *\n * @param {Object} [attributes={}]\n * Element attributes to be applied.\n *\n * @param {ContentDescriptor} [content]\n * A content descriptor object.\n *\n * @return {Element}\n * The element that was created.\n */\nfunction createEl(tagName = 'div', properties = {}, attributes = {}, content) {\n const el = document$1.createElement(tagName);\n Object.getOwnPropertyNames(properties).forEach(function (propName) {\n const val = properties[propName];\n\n // Handle textContent since it's not supported everywhere and we have a\n // method for it.\n if (propName === 'textContent') {\n textContent(el, val);\n } else if (el[propName] !== val || propName === 'tabIndex') {\n el[propName] = val;\n }\n });\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n el.setAttribute(attrName, attributes[attrName]);\n });\n if (content) {\n appendContent(el, content);\n }\n return el;\n}\n\n/**\n * Injects text into an element, replacing any existing contents entirely.\n *\n * @param {HTMLElement} el\n * The element to add text content into\n *\n * @param {string} text\n * The text content to add.\n *\n * @return {Element}\n * The element with added text content.\n */\nfunction textContent(el, text) {\n if (typeof el.textContent === 'undefined') {\n el.innerText = text;\n } else {\n el.textContent = text;\n }\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child\n * Element to insert\n *\n * @param {Element} parent\n * Element to insert child into\n */\nfunction prependTo(child, parent) {\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Check if an element has a class name.\n *\n * @param {Element} element\n * Element to check\n *\n * @param {string} classToCheck\n * Class name to check for\n *\n * @return {boolean}\n * Will be `true` if the element has a class, `false` otherwise.\n *\n * @throws {Error}\n * Throws an error if `classToCheck` has white space.\n */\nfunction hasClass(element, classToCheck) {\n throwIfWhitespace(classToCheck);\n return element.classList.contains(classToCheck);\n}\n\n/**\n * Add a class name to an element.\n *\n * @param {Element} element\n * Element to add class name to.\n *\n * @param {...string} classesToAdd\n * One or more class name to add.\n *\n * @return {Element}\n * The DOM element with the added class name.\n */\nfunction addClass(element, ...classesToAdd) {\n element.classList.add(...classesToAdd.reduce((prev, current) => prev.concat(current.split(/\\s+/)), []));\n return element;\n}\n\n/**\n * Remove a class name from an element.\n *\n * @param {Element} element\n * Element to remove a class name from.\n *\n * @param {...string} classesToRemove\n * One or more class name to remove.\n *\n * @return {Element}\n * The DOM element with class name removed.\n */\nfunction removeClass(element, ...classesToRemove) {\n // Protect in case the player gets disposed\n if (!element) {\n log$1.warn(\"removeClass was called with an element that doesn't exist\");\n return null;\n }\n element.classList.remove(...classesToRemove.reduce((prev, current) => prev.concat(current.split(/\\s+/)), []));\n return element;\n}\n\n/**\n * The callback definition for toggleClass.\n *\n * @callback PredicateCallback\n * @param {Element} element\n * The DOM element of the Component.\n *\n * @param {string} classToToggle\n * The `className` that wants to be toggled\n *\n * @return {boolean|undefined}\n * If `true` is returned, the `classToToggle` will be added to the\n * `element`, but not removed. If `false`, the `classToToggle` will be removed from\n * the `element`, but not added. If `undefined`, the callback will be ignored.\n *\n */\n\n/**\n * Adds or removes a class name to/from an element depending on an optional\n * condition or the presence/absence of the class name.\n *\n * @param {Element} element\n * The element to toggle a class name on.\n *\n * @param {string} classToToggle\n * The class that should be toggled.\n *\n * @param {boolean|PredicateCallback} [predicate]\n * See the return value for {@link module:dom~PredicateCallback}\n *\n * @return {Element}\n * The element with a class that has been toggled.\n */\nfunction toggleClass(element, classToToggle, predicate) {\n if (typeof predicate === 'function') {\n predicate = predicate(element, classToToggle);\n }\n if (typeof predicate !== 'boolean') {\n predicate = undefined;\n }\n classToToggle.split(/\\s+/).forEach(className => element.classList.toggle(className, predicate));\n return element;\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el\n * Element to add attributes to.\n *\n * @param {Object} [attributes]\n * Attributes to be applied.\n */\nfunction setAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n const attrValue = attributes[attrName];\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, attrValue === true ? '' : attrValue);\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag.\n *\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute.\n *\n * @param {Element} tag\n * Element from which to get tag attributes.\n *\n * @return {Object}\n * All attributes of the element. Boolean attributes will be `true` or\n * `false`, others will be strings.\n */\nfunction getAttributes(tag) {\n const obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but not all browsers\n // and not all tags know about these attributes, so, we still want to check them manually\n const knownBooleans = ['autoplay', 'controls', 'playsinline', 'loop', 'muted', 'default', 'defaultMuted'];\n if (tag && tag.attributes && tag.attributes.length > 0) {\n const attrs = tag.attributes;\n for (let i = attrs.length - 1; i >= 0; i--) {\n const attrName = attrs[i].name;\n /** @type {boolean|string} */\n let attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (knownBooleans.includes(attrName)) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = attrVal !== null ? true : false;\n }\n obj[attrName] = attrVal;\n }\n }\n return obj;\n}\n\n/**\n * Get the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to get the value of.\n *\n * @return {string}\n * The value of the attribute.\n */\nfunction getAttribute(el, attribute) {\n return el.getAttribute(attribute);\n}\n\n/**\n * Set the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n */\nfunction setAttribute(el, attribute, value) {\n el.setAttribute(attribute, value);\n}\n\n/**\n * Remove an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to remove.\n */\nfunction removeAttribute(el, attribute) {\n el.removeAttribute(attribute);\n}\n\n/**\n * Attempt to block the ability to select text.\n */\nfunction blockTextSelection() {\n document$1.body.focus();\n document$1.onselectstart = function () {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking.\n */\nfunction unblockTextSelection() {\n document$1.onselectstart = function () {\n return true;\n };\n}\n\n/**\n * Identical to the native `getBoundingClientRect` function, but ensures that\n * the method is supported at all (it is in all browsers we claim to support)\n * and that the element is in the DOM before continuing.\n *\n * This wrapper function also shims properties which are not provided by some\n * older browsers (namely, IE8).\n *\n * Additionally, some browsers do not support adding properties to a\n * `ClientRect`/`DOMRect` object; so, we shallow-copy it with the standard\n * properties (except `x` and `y` which are not widely supported). This helps\n * avoid implementations where keys are non-enumerable.\n *\n * @param {Element} el\n * Element whose `ClientRect` we want to calculate.\n *\n * @return {Object|undefined}\n * Always returns a plain object - or `undefined` if it cannot.\n */\nfunction getBoundingClientRect(el) {\n if (el && el.getBoundingClientRect && el.parentNode) {\n const rect = el.getBoundingClientRect();\n const result = {};\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(k => {\n if (rect[k] !== undefined) {\n result[k] = rect[k];\n }\n });\n if (!result.height) {\n result.height = parseFloat(computedStyle(el, 'height'));\n }\n if (!result.width) {\n result.width = parseFloat(computedStyle(el, 'width'));\n }\n return result;\n }\n}\n\n/**\n * Represents the position of a DOM element on the page.\n *\n * @typedef {Object} module:dom~Position\n *\n * @property {number} left\n * Pixels to the left.\n *\n * @property {number} top\n * Pixels from the top.\n */\n\n/**\n * Get the position of an element in the DOM.\n *\n * Uses `getBoundingClientRect` technique from John Resig.\n *\n * @see http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el\n * Element from which to get offset.\n *\n * @return {module:dom~Position}\n * The position of the element that was passed in.\n */\nfunction findPosition(el) {\n if (!el || el && !el.offsetParent) {\n return {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n };\n }\n const width = el.offsetWidth;\n const height = el.offsetHeight;\n let left = 0;\n let top = 0;\n while (el.offsetParent && el !== document$1[FullscreenApi.fullscreenElement]) {\n left += el.offsetLeft;\n top += el.offsetTop;\n el = el.offsetParent;\n }\n return {\n left,\n top,\n width,\n height\n };\n}\n\n/**\n * Represents x and y coordinates for a DOM element or mouse pointer.\n *\n * @typedef {Object} module:dom~Coordinates\n *\n * @property {number} x\n * x coordinate in pixels\n *\n * @property {number} y\n * y coordinate in pixels\n */\n\n/**\n * Get the pointer position within an element.\n *\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el\n * Element on which to get the pointer position on.\n *\n * @param {Event} event\n * Event object.\n *\n * @return {module:dom~Coordinates}\n * A coordinates object corresponding to the mouse position.\n *\n */\nfunction getPointerPosition(el, event) {\n const translated = {\n x: 0,\n y: 0\n };\n if (IS_IOS) {\n let item = el;\n while (item && item.nodeName.toLowerCase() !== 'html') {\n const transform = computedStyle(item, 'transform');\n if (/^matrix/.test(transform)) {\n const values = transform.slice(7, -1).split(/,\\s/).map(Number);\n translated.x += values[4];\n translated.y += values[5];\n } else if (/^matrix3d/.test(transform)) {\n const values = transform.slice(9, -1).split(/,\\s/).map(Number);\n translated.x += values[12];\n translated.y += values[13];\n }\n if (item.assignedSlot && item.assignedSlot.parentElement && window$1.WebKitCSSMatrix) {\n const transformValue = window$1.getComputedStyle(item.assignedSlot.parentElement).transform;\n const matrix = new window$1.WebKitCSSMatrix(transformValue);\n translated.x += matrix.m41;\n translated.y += matrix.m42;\n }\n item = item.parentNode || item.host;\n }\n }\n const position = {};\n const boxTarget = findPosition(event.target);\n const box = findPosition(el);\n const boxW = box.width;\n const boxH = box.height;\n let offsetY = event.offsetY - (box.top - boxTarget.top);\n let offsetX = event.offsetX - (box.left - boxTarget.left);\n if (event.changedTouches) {\n offsetX = event.changedTouches[0].pageX - box.left;\n offsetY = event.changedTouches[0].pageY + box.top;\n if (IS_IOS) {\n offsetX -= translated.x;\n offsetY -= translated.y;\n }\n }\n position.y = 1 - Math.max(0, Math.min(1, offsetY / boxH));\n position.x = Math.max(0, Math.min(1, offsetX / boxW));\n return position;\n}\n\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @param {*} value\n * Check if this value is a text node.\n *\n * @return {boolean}\n * Will be `true` if the value is a text node, `false` otherwise.\n */\nfunction isTextNode(value) {\n return isObject(value) && value.nodeType === 3;\n}\n\n/**\n * Empties the contents of an element.\n *\n * @param {Element} el\n * The element to empty children from\n *\n * @return {Element}\n * The element with no children\n */\nfunction emptyEl(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n return el;\n}\n\n/**\n * This is a mixed value that describes content to be injected into the DOM\n * via some method. It can be of the following types:\n *\n * Type | Description\n * -----------|-------------\n * `string` | The value will be normalized into a text node.\n * `Element` | The value will be accepted as-is.\n * `Text` | A TextNode. The value will be accepted as-is.\n * `Array` | A one-dimensional array of strings, elements, text nodes, or functions. These functions should return a string, element, or text node (any other return value, like an array, will be ignored).\n * `Function` | A function, which is expected to return a string, element, text node, or array - any of the other possible values described above. This means that a content descriptor could be a function that returns an array of functions, but those second-level functions must return strings, elements, or text nodes.\n *\n * @typedef {string|Element|Text|Array|Function} ContentDescriptor\n */\n\n/**\n * Normalizes content for eventual insertion into the DOM.\n *\n * This allows a wide range of content definition methods, but helps protect\n * from falling into the trap of simply writing to `innerHTML`, which could\n * be an XSS concern.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * @param {ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Array}\n * All of the content that was passed in, normalized to an array of\n * elements or text nodes.\n */\nfunction normalizeContent(content) {\n // First, invoke content if it is a function. If it produces an array,\n // that needs to happen before normalization.\n if (typeof content === 'function') {\n content = content();\n }\n\n // Next up, normalize to an array, so one or many items can be normalized,\n // filtered, and returned.\n return (Array.isArray(content) ? content : [content]).map(value => {\n // First, invoke value if it is a function to produce a new value,\n // which will be subsequently normalized to a Node of some kind.\n if (typeof value === 'function') {\n value = value();\n }\n if (isEl(value) || isTextNode(value)) {\n return value;\n }\n if (typeof value === 'string' && /\\S/.test(value)) {\n return document$1.createTextNode(value);\n }\n }).filter(value => value);\n}\n\n/**\n * Normalizes and appends content to an element.\n *\n * @param {Element} el\n * Element to append normalized content to.\n *\n * @param {ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with appended normalized content.\n */\nfunction appendContent(el, content) {\n normalizeContent(content).forEach(node => el.appendChild(node));\n return el;\n}\n\n/**\n * Normalizes and inserts content into an element; this is identical to\n * `appendContent()`, except it empties the element first.\n *\n * @param {Element} el\n * Element to insert normalized content into.\n *\n * @param {ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with inserted normalized content.\n */\nfunction insertContent(el, content) {\n return appendContent(emptyEl(el), content);\n}\n\n/**\n * Check if an event was a single left click.\n *\n * @param {MouseEvent} event\n * Event object.\n *\n * @return {boolean}\n * Will be `true` if a single left click, `false` otherwise.\n */\nfunction isSingleLeftClick(event) {\n // Note: if you create something draggable, be sure to\n // call it on both `mousedown` and `mousemove` event,\n // otherwise `mousedown` should be enough for a button\n\n if (event.button === undefined && event.buttons === undefined) {\n // Why do we need `buttons` ?\n // Because, middle mouse sometimes have this:\n // e.button === 0 and e.buttons === 4\n // Furthermore, we want to prevent combination click, something like\n // HOLD middlemouse then left click, that would be\n // e.button === 0, e.buttons === 5\n // just `button` is not gonna work\n\n // Alright, then what this block does ?\n // this is for chrome `simulate mobile devices`\n // I want to support this as well\n\n return true;\n }\n if (event.button === 0 && event.buttons === undefined) {\n // Touch screen, sometimes on some specific device, `buttons`\n // doesn't have anything (safari on ios, blackberry...)\n\n return true;\n }\n\n // `mouseup` event on a single left click has\n // `button` and `buttons` equal to 0\n if (event.type === 'mouseup' && event.button === 0 && event.buttons === 0) {\n return true;\n }\n\n // MacOS Sonoma trackpad when \"tap to click enabled\"\n if (event.type === 'mousedown' && event.button === 0 && event.buttons === 0) {\n return true;\n }\n if (event.button !== 0 || event.buttons !== 1) {\n // This is the reason we have those if else block above\n // if any special case we can catch and let it slide\n // we do it above, when get to here, this definitely\n // is-not-left-click\n\n return false;\n }\n return true;\n}\n\n/**\n * Finds a single DOM element matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {Element|null}\n * The element that was found or null.\n */\nconst $ = createQuerier('querySelector');\n\n/**\n * Finds a all DOM elements matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {NodeList}\n * A element list of elements that were found. Will be empty if none\n * were found.\n *\n */\nconst $$ = createQuerier('querySelectorAll');\n\n/**\n * A safe getComputedStyle.\n *\n * This is needed because in Firefox, if the player is loaded in an iframe with\n * `display:none`, then `getComputedStyle` returns `null`, so, we do a\n * null-check to make sure that the player doesn't break in these cases.\n *\n * @param {Element} el\n * The element you want the computed style of\n *\n * @param {string} prop\n * The property name you want\n *\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction computedStyle(el, prop) {\n if (!el || !prop) {\n return '';\n }\n if (typeof window$1.getComputedStyle === 'function') {\n let computedStyleValue;\n try {\n computedStyleValue = window$1.getComputedStyle(el);\n } catch (e) {\n return '';\n }\n return computedStyleValue ? computedStyleValue.getPropertyValue(prop) || computedStyleValue[prop] : '';\n }\n return '';\n}\n\n/**\n * Copy document style sheets to another window.\n *\n * @param {Window} win\n * The window element you want to copy the document style sheets to.\n *\n */\nfunction copyStyleSheetsToWindow(win) {\n [...document$1.styleSheets].forEach(styleSheet => {\n try {\n const cssRules = [...styleSheet.cssRules].map(rule => rule.cssText).join('');\n const style = document$1.createElement('style');\n style.textContent = cssRules;\n win.document.head.appendChild(style);\n } catch (e) {\n const link = document$1.createElement('link');\n link.rel = 'stylesheet';\n link.type = styleSheet.type;\n // For older Safari this has to be the string; on other browsers setting the MediaList works\n link.media = styleSheet.media.mediaText;\n link.href = styleSheet.href;\n win.document.head.appendChild(link);\n }\n });\n}\n\nvar Dom = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isReal: isReal,\n isEl: isEl,\n isInFrame: isInFrame,\n createEl: createEl,\n textContent: textContent,\n prependTo: prependTo,\n hasClass: hasClass,\n addClass: addClass,\n removeClass: removeClass,\n toggleClass: toggleClass,\n setAttributes: setAttributes,\n getAttributes: getAttributes,\n getAttribute: getAttribute,\n setAttribute: setAttribute,\n removeAttribute: removeAttribute,\n blockTextSelection: blockTextSelection,\n unblockTextSelection: unblockTextSelection,\n getBoundingClientRect: getBoundingClientRect,\n findPosition: findPosition,\n getPointerPosition: getPointerPosition,\n isTextNode: isTextNode,\n emptyEl: emptyEl,\n normalizeContent: normalizeContent,\n appendContent: appendContent,\n insertContent: insertContent,\n isSingleLeftClick: isSingleLeftClick,\n $: $,\n $$: $$,\n computedStyle: computedStyle,\n copyStyleSheetsToWindow: copyStyleSheetsToWindow\n});\n\n/**\n * @file setup.js - Functions for setting up a player without\n * user interaction based on the data-setup `attribute` of the video tag.\n *\n * @module setup\n */\nlet _windowLoaded = false;\nlet videojs$1;\n\n/**\n * Set up any tags that have a data-setup `attribute` when the player is started.\n */\nconst autoSetup = function () {\n if (videojs$1.options.autoSetup === false) {\n return;\n }\n const vids = Array.prototype.slice.call(document$1.getElementsByTagName('video'));\n const audios = Array.prototype.slice.call(document$1.getElementsByTagName('audio'));\n const divs = Array.prototype.slice.call(document$1.getElementsByTagName('video-js'));\n const mediaEls = vids.concat(audios, divs);\n\n // Check if any media elements exist\n if (mediaEls && mediaEls.length > 0) {\n for (let i = 0, e = mediaEls.length; i < e; i++) {\n const mediaEl = mediaEls[i];\n\n // Check if element exists, has getAttribute func.\n if (mediaEl && mediaEl.getAttribute) {\n // Make sure this player hasn't already been set up.\n if (mediaEl.player === undefined) {\n const options = mediaEl.getAttribute('data-setup');\n\n // Check if data-setup attr exists.\n // We only auto-setup if they've added the data-setup attr.\n if (options !== null) {\n // Create new video.js instance.\n videojs$1(mediaEl);\n }\n }\n\n // If getAttribute isn't defined, we need to wait for the DOM.\n } else {\n autoSetupTimeout(1);\n break;\n }\n }\n\n // No videos were found, so keep looping unless page is finished loading.\n } else if (!_windowLoaded) {\n autoSetupTimeout(1);\n }\n};\n\n/**\n * Wait until the page is loaded before running autoSetup. This will be called in\n * autoSetup if `hasLoaded` returns false.\n *\n * @param {number} wait\n * How long to wait in ms\n *\n * @param {module:videojs} [vjs]\n * The videojs library function\n */\nfunction autoSetupTimeout(wait, vjs) {\n // Protect against breakage in non-browser environments\n if (!isReal()) {\n return;\n }\n if (vjs) {\n videojs$1 = vjs;\n }\n window$1.setTimeout(autoSetup, wait);\n}\n\n/**\n * Used to set the internal tracking of window loaded state to true.\n *\n * @private\n */\nfunction setWindowLoaded() {\n _windowLoaded = true;\n window$1.removeEventListener('load', setWindowLoaded);\n}\nif (isReal()) {\n if (document$1.readyState === 'complete') {\n setWindowLoaded();\n } else {\n /**\n * Listen for the load event on window, and set _windowLoaded to true.\n *\n * We use a standard event listener here to avoid incrementing the GUID\n * before any players are created.\n *\n * @listens load\n */\n window$1.addEventListener('load', setWindowLoaded);\n }\n}\n\n/**\n * @file stylesheet.js\n * @module stylesheet\n */\n\n/**\n * Create a DOM style element given a className for it.\n *\n * @param {string} className\n * The className to add to the created style element.\n *\n * @return {Element}\n * The element that was created.\n */\nconst createStyleElement = function (className) {\n const style = document$1.createElement('style');\n style.className = className;\n return style;\n};\n\n/**\n * Add text to a DOM element.\n *\n * @param {Element} el\n * The Element to add text content to.\n *\n * @param {string} content\n * The text to add to the element.\n */\nconst setTextContent = function (el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n\n/**\n * @file dom-data.js\n * @module dom-data\n */\n\n/**\n * Element Data Store.\n *\n * Allows for binding data to an element without putting it directly on the\n * element. Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nvar DomData = new WeakMap();\n\n/**\n * @file guid.js\n * @module guid\n */\n\n// Default value for GUIDs. This allows us to reset the GUID counter in tests.\n//\n// The initial GUID is 3 because some users have come to rely on the first\n// default player ID ending up as `vjs_video_3`.\n//\n// See: https://github.com/videojs/video.js/pull/6216\nconst _initialGuid = 3;\n\n/**\n * Unique ID for an element or function\n *\n * @type {Number}\n */\nlet _guid = _initialGuid;\n\n/**\n * Get a unique auto-incrementing ID by number that has not been returned before.\n *\n * @return {number}\n * A new unique ID.\n */\nfunction newGUID() {\n return _guid++;\n}\n\n/**\n * @file events.js. An Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n *\n * @file events.js\n * @module events\n */\n\n/**\n * Clean up the listener cache and dispatchers\n *\n * @param {Element|Object} elem\n * Element to clean up\n *\n * @param {string} type\n * Type of event to clean up\n */\nfunction _cleanUpEvents(elem, type) {\n if (!DomData.has(elem)) {\n return;\n }\n const data = DomData.get(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n DomData.delete(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn\n * The event method we want to use.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string[]} types\n * Type of event to bind to.\n *\n * @param {Function} callback\n * Event listener.\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function (type) {\n // Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event\n * Event object to fix.\n *\n * @return {Object}\n * Fixed event object.\n */\nfunction fixEvent(event) {\n if (event.fixed_) {\n return event;\n }\n function returnTrue() {\n return true;\n }\n function returnFalse() {\n return false;\n }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped || !event.isImmediatePropagationStopped) {\n const old = event || window$1.event;\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n\n // TODO: Probably best to create an allowlist of event props\n const deprecatedProps = ['layerX', 'layerY', 'keyLocation', 'path', 'webkitMovementX', 'webkitMovementY', 'mozPressure', 'mozInputSource'];\n for (const key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n // Lighthouse complains if Event.path is copied\n if (!deprecatedProps.includes(key)) {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document$1;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX !== null && event.clientX !== undefined) {\n const doc = document$1.documentElement;\n const body = document$1.body;\n event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button !== null && event.button !== undefined) {\n // The following is disabled because it does not pass videojs-standard\n // and... yikes.\n /* eslint-disable */\n event.button = event.button & 1 ? 0 : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\n /* eslint-enable */\n }\n }\n event.fixed_ = true;\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Whether passive event listeners are supported\n */\nlet _supportsPassive;\nconst supportsPassive = function () {\n if (typeof _supportsPassive !== 'boolean') {\n _supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n get() {\n _supportsPassive = true;\n }\n });\n window$1.addEventListener('test', null, opts);\n window$1.removeEventListener('test', null, opts);\n } catch (e) {\n // disregard\n }\n }\n return _supportsPassive;\n};\n\n/**\n * Touch events Chrome expects to be passive\n */\nconst passiveEvents = ['touchstart', 'touchmove'];\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string|string[]} type\n * Type of event to bind to.\n *\n * @param {Function} fn\n * Event listener.\n */\nfunction on(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n if (!DomData.has(elem)) {\n DomData.set(elem, {});\n }\n const data = DomData.get(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) {\n data.handlers = {};\n }\n if (!data.handlers[type]) {\n data.handlers[type] = [];\n }\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n data.handlers[type].push(fn);\n if (!data.dispatcher) {\n data.disabled = false;\n data.dispatcher = function (event, hash) {\n if (data.disabled) {\n return;\n }\n event = fixEvent(event);\n const handlers = data.handlers[event.type];\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n const handlersCopy = handlers.slice(0);\n for (let m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n try {\n handlersCopy[m].call(elem, event, hash);\n } catch (e) {\n log$1.error(e);\n }\n }\n }\n }\n };\n }\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n let options = false;\n if (supportsPassive() && passiveEvents.indexOf(type) > -1) {\n options = {\n passive: true\n };\n }\n elem.addEventListener(type, data.dispatcher, options);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem\n * Object to remove listeners from.\n *\n * @param {string|string[]} [type]\n * Type of listener to remove. Don't include to remove all events from element.\n *\n * @param {Function} [fn]\n * Specific listener to remove. Don't include to remove listeners for an event\n * type.\n */\nfunction off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!DomData.has(elem)) {\n return;\n }\n const data = DomData.get(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) {\n return;\n }\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n const removeType = function (el, t) {\n data.handlers[t] = [];\n _cleanUpEvents(el, t);\n };\n\n // Are we removing all bound events?\n if (type === undefined) {\n for (const t in data.handlers) {\n if (Object.prototype.hasOwnProperty.call(data.handlers || {}, t)) {\n removeType(elem, t);\n }\n }\n return;\n }\n const handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) {\n return;\n }\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(elem, type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem\n * Element to trigger an event on\n *\n * @param {EventTarget~Event|string} event\n * A string (the type) or an event object with a type attribute\n *\n * @param {Object} [hash]\n * data hash to pass along with the event\n *\n * @return {boolean|undefined}\n * Returns the opposite of `defaultPrevented` if default was\n * prevented. Otherwise, returns `undefined`\n */\nfunction trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n const elemData = DomData.has(elem) ? DomData.get(elem) : {};\n const parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = {\n type: event,\n target: elem\n };\n } else if (!event.target) {\n event.target = elem;\n }\n\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented && event.target && event.target[event.type]) {\n if (!DomData.has(event.target)) {\n DomData.set(event.target, {});\n }\n const targetData = DomData.get(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event.\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\nfunction one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n const func = function () {\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || newGUID();\n on(elem, type, func);\n}\n\n/**\n * Trigger a listener only once and then turn if off for all\n * configured events\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\nfunction any(elem, type, fn) {\n const func = function () {\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || newGUID();\n\n // multiple ons, but one off for everything\n on(elem, type, func);\n}\n\nvar Events = /*#__PURE__*/Object.freeze({\n __proto__: null,\n fixEvent: fixEvent,\n on: on,\n off: off,\n trigger: trigger,\n one: one,\n any: any\n});\n\n/**\n * @file fn.js\n * @module fn\n */\nconst UPDATE_REFRESH_INTERVAL = 30;\n\n/**\n * A private, internal-only function for changing the context of a function.\n *\n * It also stores a unique id on the function so it can be easily removed from\n * events.\n *\n * @private\n * @function\n * @param {*} context\n * The object to bind as scope.\n *\n * @param {Function} fn\n * The function to be bound to a scope.\n *\n * @param {number} [uid]\n * An optional unique ID for the function to be set\n *\n * @return {Function}\n * The new function that will be bound into the context given\n */\nconst bind_ = function (context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n\n // Create the new function that changes the context\n const bound = fn.bind(context);\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n bound.guid = uid ? uid + '_' + fn.guid : fn.guid;\n return bound;\n};\n\n/**\n * Wraps the given function, `fn`, with a new function that only invokes `fn`\n * at most once per every `wait` milliseconds.\n *\n * @function\n * @param {Function} fn\n * The function to be throttled.\n *\n * @param {number} wait\n * The number of milliseconds by which to throttle.\n *\n * @return {Function}\n */\nconst throttle = function (fn, wait) {\n let last = window$1.performance.now();\n const throttled = function (...args) {\n const now = window$1.performance.now();\n if (now - last >= wait) {\n fn(...args);\n last = now;\n }\n };\n return throttled;\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked.\n *\n * Inspired by lodash and underscore implementations.\n *\n * @function\n * @param {Function} func\n * The function to wrap with debounce behavior.\n *\n * @param {number} wait\n * The number of milliseconds to wait after the last invocation.\n *\n * @param {boolean} [immediate]\n * Whether or not to invoke the function immediately upon creation.\n *\n * @param {Object} [context=window]\n * The \"context\" in which the debounced function should debounce. For\n * example, if this function should be tied to a Video.js player,\n * the player can be passed here. Alternatively, defaults to the\n * global `window` object.\n *\n * @return {Function}\n * A debounced function.\n */\nconst debounce = function (func, wait, immediate, context = window$1) {\n let timeout;\n const cancel = () => {\n context.clearTimeout(timeout);\n timeout = null;\n };\n\n /* eslint-disable consistent-this */\n const debounced = function () {\n const self = this;\n const args = arguments;\n let later = function () {\n timeout = null;\n later = null;\n if (!immediate) {\n func.apply(self, args);\n }\n };\n if (!timeout && immediate) {\n func.apply(self, args);\n }\n context.clearTimeout(timeout);\n timeout = context.setTimeout(later, wait);\n };\n /* eslint-enable consistent-this */\n\n debounced.cancel = cancel;\n return debounced;\n};\n\nvar Fn = /*#__PURE__*/Object.freeze({\n __proto__: null,\n UPDATE_REFRESH_INTERVAL: UPDATE_REFRESH_INTERVAL,\n bind_: bind_,\n throttle: throttle,\n debounce: debounce\n});\n\n/**\n * @file src/js/event-target.js\n */\nlet EVENT_MAP;\n\n/**\n * `EventTarget` is a class that can have the same API as the DOM `EventTarget`. It\n * adds shorthand functions that wrap around lengthy functions. For example:\n * the `on` function is a wrapper around `addEventListener`.\n *\n * @see [EventTarget Spec]{@link https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget}\n * @class EventTarget\n */\nclass EventTarget$2 {\n /**\n * Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a\n * function that will get called when an event with a certain name gets triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to call with `EventTarget`s\n */\n on(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n const ael = this.addEventListener;\n this.addEventListener = () => {};\n on(this, type, fn);\n this.addEventListener = ael;\n }\n /**\n * Removes an `event listener` for a specific event from an instance of `EventTarget`.\n * This makes it so that the `event listener` will no longer get called when the\n * named event happens.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to remove.\n */\n off(type, fn) {\n off(this, type, fn);\n }\n /**\n * This function will add an `event listener` that gets triggered only once. After the\n * first trigger it will get removed. This is like adding an `event listener`\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on itself.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to be called once for each event name.\n */\n one(type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n const ael = this.addEventListener;\n this.addEventListener = () => {};\n one(this, type, fn);\n this.addEventListener = ael;\n }\n /**\n * This function will add an `event listener` that gets triggered only once and is\n * removed from all events. This is like adding an array of `event listener`s\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on all events the\n * first time it is triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to be called once for each event name.\n */\n any(type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n const ael = this.addEventListener;\n this.addEventListener = () => {};\n any(this, type, fn);\n this.addEventListener = ael;\n }\n /**\n * This function causes an event to happen. This will then cause any `event listeners`\n * that are waiting for that event, to get called. If there are no `event listeners`\n * for an event then nothing will happen.\n *\n * If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`.\n * Trigger will also call the `on` + `uppercaseEventName` function.\n *\n * Example:\n * 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call\n * `onClick` if it exists.\n *\n * @param {string|EventTarget~Event|Object} event\n * The name of the event, an `Event`, or an object with a key of type set to\n * an event name.\n */\n trigger(event) {\n const type = event.type || event;\n\n // deprecation\n // In a future version we should default target to `this`\n // similar to how we default the target to `elem` in\n // `Events.trigger`. Right now the default `target` will be\n // `document` due to the `Event.fixEvent` call.\n if (typeof event === 'string') {\n event = {\n type\n };\n }\n event = fixEvent(event);\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n trigger(this, event);\n }\n queueTrigger(event) {\n // only set up EVENT_MAP if it'll be used\n if (!EVENT_MAP) {\n EVENT_MAP = new Map();\n }\n const type = event.type || event;\n let map = EVENT_MAP.get(this);\n if (!map) {\n map = new Map();\n EVENT_MAP.set(this, map);\n }\n const oldTimeout = map.get(type);\n map.delete(type);\n window$1.clearTimeout(oldTimeout);\n const timeout = window$1.setTimeout(() => {\n map.delete(type);\n // if we cleared out all timeouts for the current target, delete its map\n if (map.size === 0) {\n map = null;\n EVENT_MAP.delete(this);\n }\n this.trigger(event);\n }, 0);\n map.set(type, timeout);\n }\n}\n\n/**\n * A Custom DOM event.\n *\n * @typedef {CustomEvent} Event\n * @see [Properties]{@link https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent}\n */\n\n/**\n * All event listeners should follow the following format.\n *\n * @callback EventListener\n * @this {EventTarget}\n *\n * @param {Event} event\n * the event that triggered this function\n *\n * @param {Object} [hash]\n * hash of data sent during the event\n */\n\n/**\n * An object containing event names as keys and booleans as values.\n *\n * > NOTE: If an event name is set to a true value here {@link EventTarget#trigger}\n * will have extra functionality. See that function for more information.\n *\n * @property EventTarget.prototype.allowedEvents_\n * @protected\n */\nEventTarget$2.prototype.allowedEvents_ = {};\n\n/**\n * An alias of {@link EventTarget#on}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#on}\n */\nEventTarget$2.prototype.addEventListener = EventTarget$2.prototype.on;\n\n/**\n * An alias of {@link EventTarget#off}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#off}\n */\nEventTarget$2.prototype.removeEventListener = EventTarget$2.prototype.off;\n\n/**\n * An alias of {@link EventTarget#trigger}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#trigger}\n */\nEventTarget$2.prototype.dispatchEvent = EventTarget$2.prototype.trigger;\n\n/**\n * @file mixins/evented.js\n * @module evented\n */\nconst objName = obj => {\n if (typeof obj.name === 'function') {\n return obj.name();\n }\n if (typeof obj.name === 'string') {\n return obj.name;\n }\n if (obj.name_) {\n return obj.name_;\n }\n if (obj.constructor && obj.constructor.name) {\n return obj.constructor.name;\n }\n return typeof obj;\n};\n\n/**\n * Returns whether or not an object has had the evented mixin applied.\n *\n * @param {Object} object\n * An object to test.\n *\n * @return {boolean}\n * Whether or not the object appears to be evented.\n */\nconst isEvented = object => object instanceof EventTarget$2 || !!object.eventBusEl_ && ['on', 'one', 'off', 'trigger'].every(k => typeof object[k] === 'function');\n\n/**\n * Adds a callback to run after the evented mixin applied.\n *\n * @param {Object} target\n * An object to Add\n * @param {Function} callback\n * The callback to run.\n */\nconst addEventedCallback = (target, callback) => {\n if (isEvented(target)) {\n callback();\n } else {\n if (!target.eventedCallbacks) {\n target.eventedCallbacks = [];\n }\n target.eventedCallbacks.push(callback);\n }\n};\n\n/**\n * Whether a value is a valid event type - non-empty string or array.\n *\n * @private\n * @param {string|Array} type\n * The type value to test.\n *\n * @return {boolean}\n * Whether or not the type is a valid event type.\n */\nconst isValidEventType = type =>\n// The regex here verifies that the `type` contains at least one non-\n// whitespace character.\ntypeof type === 'string' && /\\S/.test(type) || Array.isArray(type) && !!type.length;\n\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the target does not appear to be a valid event target.\n *\n * @param {Object} target\n * The object to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\nconst validateTarget = (target, obj, fnName) => {\n if (!target || !target.nodeName && !isEvented(target)) {\n throw new Error(`Invalid target for ${objName(obj)}#${fnName}; must be a DOM node or evented object.`);\n }\n};\n\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the type does not appear to be a valid event type.\n *\n * @param {string|Array} type\n * The type to test.\n *\n * @param {Object} obj\n* The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\nconst validateEventType = (type, obj, fnName) => {\n if (!isValidEventType(type)) {\n throw new Error(`Invalid event type for ${objName(obj)}#${fnName}; must be a non-empty string or array.`);\n }\n};\n\n/**\n * Validates a value to determine if it is a valid listener. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the listener is not a function.\n *\n * @param {Function} listener\n * The listener to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\nconst validateListener = (listener, obj, fnName) => {\n if (typeof listener !== 'function') {\n throw new Error(`Invalid listener for ${objName(obj)}#${fnName}; must be a function.`);\n }\n};\n\n/**\n * Takes an array of arguments given to `on()` or `one()`, validates them, and\n * normalizes them into an object.\n *\n * @private\n * @param {Object} self\n * The evented object on which `on()` or `one()` was called. This\n * object will be bound as the `this` value for the listener.\n *\n * @param {Array} args\n * An array of arguments passed to `on()` or `one()`.\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n *\n * @return {Object}\n * An object containing useful values for `on()` or `one()` calls.\n */\nconst normalizeListenArgs = (self, args, fnName) => {\n // If the number of arguments is less than 3, the target is always the\n // evented object itself.\n const isTargetingSelf = args.length < 3 || args[0] === self || args[0] === self.eventBusEl_;\n let target;\n let type;\n let listener;\n if (isTargetingSelf) {\n target = self.eventBusEl_;\n\n // Deal with cases where we got 3 arguments, but we are still listening to\n // the evented object itself.\n if (args.length >= 3) {\n args.shift();\n }\n [type, listener] = args;\n } else {\n // This was `[target, type, listener] = args;` but this block needs more than\n // one statement to produce minified output compatible with Chrome 53.\n // See https://github.com/videojs/video.js/pull/8810\n target = args[0];\n type = args[1];\n listener = args[2];\n }\n validateTarget(target, self, fnName);\n validateEventType(type, self, fnName);\n validateListener(listener, self, fnName);\n listener = bind_(self, listener);\n return {\n isTargetingSelf,\n target,\n type,\n listener\n };\n};\n\n/**\n * Adds the listener to the event type(s) on the target, normalizing for\n * the type of target.\n *\n * @private\n * @param {Element|Object} target\n * A DOM node or evented object.\n *\n * @param {string} method\n * The event binding method to use (\"on\" or \"one\").\n *\n * @param {string|Array} type\n * One or more event type(s).\n *\n * @param {Function} listener\n * A listener function.\n */\nconst listen = (target, method, type, listener) => {\n validateTarget(target, target, method);\n if (target.nodeName) {\n Events[method](target, type, listener);\n } else {\n target[method](type, listener);\n }\n};\n\n/**\n * Contains methods that provide event capabilities to an object which is passed\n * to {@link module:evented|evented}.\n *\n * @mixin EventedMixin\n */\nconst EventedMixin = {\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n on(...args) {\n const {\n isTargetingSelf,\n target,\n type,\n listener\n } = normalizeListenArgs(this, args, 'on');\n listen(target, 'on', type, listener);\n\n // If this object is listening to another evented object.\n if (!isTargetingSelf) {\n // If this object is disposed, remove the listener.\n const removeListenerOnDispose = () => this.off(target, type, listener);\n\n // Use the same function ID as the listener so we can remove it later it\n // using the ID of the original listener.\n removeListenerOnDispose.guid = listener.guid;\n\n // Add a listener to the target's dispose event as well. This ensures\n // that if the target is disposed BEFORE this object, we remove the\n // removal listener that was just added. Otherwise, we create a memory leak.\n const removeRemoverOnTargetDispose = () => this.off('dispose', removeListenerOnDispose);\n\n // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n removeRemoverOnTargetDispose.guid = listener.guid;\n listen(this, 'on', 'dispose', removeListenerOnDispose);\n listen(target, 'on', 'dispose', removeRemoverOnTargetDispose);\n }\n },\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will be called once per event and then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n one(...args) {\n const {\n isTargetingSelf,\n target,\n type,\n listener\n } = normalizeListenArgs(this, args, 'one');\n\n // Targeting this evented object.\n if (isTargetingSelf) {\n listen(target, 'one', type, listener);\n\n // Targeting another evented object.\n } else {\n // TODO: This wrapper is incorrect! It should only\n // remove the wrapper for the event type that called it.\n // Instead all listeners are removed on the first trigger!\n // see https://github.com/videojs/video.js/issues/5962\n const wrapper = (...largs) => {\n this.off(target, type, wrapper);\n listener.apply(null, largs);\n };\n\n // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n wrapper.guid = listener.guid;\n listen(target, 'one', type, wrapper);\n }\n },\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will only be called once for the first event that is triggered\n * then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n any(...args) {\n const {\n isTargetingSelf,\n target,\n type,\n listener\n } = normalizeListenArgs(this, args, 'any');\n\n // Targeting this evented object.\n if (isTargetingSelf) {\n listen(target, 'any', type, listener);\n\n // Targeting another evented object.\n } else {\n const wrapper = (...largs) => {\n this.off(target, type, wrapper);\n listener.apply(null, largs);\n };\n\n // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n wrapper.guid = listener.guid;\n listen(target, 'any', type, wrapper);\n }\n },\n /**\n * Removes listener(s) from event(s) on an evented object.\n *\n * @param {string|Array|Element|Object} [targetOrType]\n * If this is a string or array, it represents the event type(s).\n *\n * Another evented object can be passed here instead, in which case\n * ALL 3 arguments are _required_.\n *\n * @param {string|Array|Function} [typeOrListener]\n * If the first argument was a string or array, this may be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function; otherwise, _all_ listeners bound to the\n * event type(s) will be removed.\n */\n off(targetOrType, typeOrListener, listener) {\n // Targeting this evented object.\n if (!targetOrType || isValidEventType(targetOrType)) {\n off(this.eventBusEl_, targetOrType, typeOrListener);\n\n // Targeting another evented object.\n } else {\n const target = targetOrType;\n const type = typeOrListener;\n\n // Fail fast and in a meaningful way!\n validateTarget(target, this, 'off');\n validateEventType(type, this, 'off');\n validateListener(listener, this, 'off');\n\n // Ensure there's at least a guid, even if the function hasn't been used\n listener = bind_(this, listener);\n\n // Remove the dispose listener on this evented object, which was given\n // the same guid as the event listener in on().\n this.off('dispose', listener);\n if (target.nodeName) {\n off(target, type, listener);\n off(target, 'dispose', listener);\n } else if (isEvented(target)) {\n target.off(type, listener);\n target.off('dispose', listener);\n }\n }\n },\n /**\n * Fire an event on this evented object, causing its listeners to be called.\n *\n * @param {string|Object} event\n * An event type or an object with a type property.\n *\n * @param {Object} [hash]\n * An additional object to pass along to listeners.\n *\n * @return {boolean}\n * Whether or not the default behavior was prevented.\n */\n trigger(event, hash) {\n validateTarget(this.eventBusEl_, this, 'trigger');\n const type = event && typeof event !== 'string' ? event.type : event;\n if (!isValidEventType(type)) {\n throw new Error(`Invalid event type for ${objName(this)}#trigger; ` + 'must be a non-empty string or object with a type key that has a non-empty value.');\n }\n return trigger(this.eventBusEl_, event, hash);\n }\n};\n\n/**\n * Applies {@link module:evented~EventedMixin|EventedMixin} to a target object.\n *\n * @param {Object} target\n * The object to which to add event methods.\n *\n * @param {Object} [options={}]\n * Options for customizing the mixin behavior.\n *\n * @param {string} [options.eventBusKey]\n * By default, adds a `eventBusEl_` DOM element to the target object,\n * which is used as an event bus. If the target object already has a\n * DOM element that should be used, pass its key here.\n *\n * @return {Object}\n * The target object.\n */\nfunction evented(target, options = {}) {\n const {\n eventBusKey\n } = options;\n\n // Set or create the eventBusEl_.\n if (eventBusKey) {\n if (!target[eventBusKey].nodeName) {\n throw new Error(`The eventBusKey \"${eventBusKey}\" does not refer to an element.`);\n }\n target.eventBusEl_ = target[eventBusKey];\n } else {\n target.eventBusEl_ = createEl('span', {\n className: 'vjs-event-bus'\n });\n }\n Object.assign(target, EventedMixin);\n if (target.eventedCallbacks) {\n target.eventedCallbacks.forEach(callback => {\n callback();\n });\n }\n\n // When any evented object is disposed, it removes all its listeners.\n target.on('dispose', () => {\n target.off();\n [target, target.el_, target.eventBusEl_].forEach(function (val) {\n if (val && DomData.has(val)) {\n DomData.delete(val);\n }\n });\n window$1.setTimeout(() => {\n target.eventBusEl_ = null;\n }, 0);\n });\n return target;\n}\n\n/**\n * @file mixins/stateful.js\n * @module stateful\n */\n\n/**\n * Contains methods that provide statefulness to an object which is passed\n * to {@link module:stateful}.\n *\n * @mixin StatefulMixin\n */\nconst StatefulMixin = {\n /**\n * A hash containing arbitrary keys and values representing the state of\n * the object.\n *\n * @type {Object}\n */\n state: {},\n /**\n * Set the state of an object by mutating its\n * {@link module:stateful~StatefulMixin.state|state} object in place.\n *\n * @fires module:stateful~StatefulMixin#statechanged\n * @param {Object|Function} stateUpdates\n * A new set of properties to shallow-merge into the plugin state.\n * Can be a plain object or a function returning a plain object.\n *\n * @return {Object|undefined}\n * An object containing changes that occurred. If no changes\n * occurred, returns `undefined`.\n */\n setState(stateUpdates) {\n // Support providing the `stateUpdates` state as a function.\n if (typeof stateUpdates === 'function') {\n stateUpdates = stateUpdates();\n }\n let changes;\n each(stateUpdates, (value, key) => {\n // Record the change if the value is different from what's in the\n // current state.\n if (this.state[key] !== value) {\n changes = changes || {};\n changes[key] = {\n from: this.state[key],\n to: value\n };\n }\n this.state[key] = value;\n });\n\n // Only trigger \"statechange\" if there were changes AND we have a trigger\n // function. This allows us to not require that the target object be an\n // evented object.\n if (changes && isEvented(this)) {\n /**\n * An event triggered on an object that is both\n * {@link module:stateful|stateful} and {@link module:evented|evented}\n * indicating that its state has changed.\n *\n * @event module:stateful~StatefulMixin#statechanged\n * @type {Object}\n * @property {Object} changes\n * A hash containing the properties that were changed and\n * the values they were changed `from` and `to`.\n */\n this.trigger({\n changes,\n type: 'statechanged'\n });\n }\n return changes;\n }\n};\n\n/**\n * Applies {@link module:stateful~StatefulMixin|StatefulMixin} to a target\n * object.\n *\n * If the target object is {@link module:evented|evented} and has a\n * `handleStateChanged` method, that method will be automatically bound to the\n * `statechanged` event on itself.\n *\n * @param {Object} target\n * The object to be made stateful.\n *\n * @param {Object} [defaultState]\n * A default set of properties to populate the newly-stateful object's\n * `state` property.\n *\n * @return {Object}\n * Returns the `target`.\n */\nfunction stateful(target, defaultState) {\n Object.assign(target, StatefulMixin);\n\n // This happens after the mixing-in because we need to replace the `state`\n // added in that step.\n target.state = Object.assign({}, target.state, defaultState);\n\n // Auto-bind the `handleStateChanged` method of the target object if it exists.\n if (typeof target.handleStateChanged === 'function' && isEvented(target)) {\n target.on('statechanged', target.handleStateChanged);\n }\n return target;\n}\n\n/**\n * @file str.js\n * @module to-lower-case\n */\n\n/**\n * Lowercase the first letter of a string.\n *\n * @param {string} string\n * String to be lowercased\n *\n * @return {string}\n * The string with a lowercased first letter\n */\nconst toLowerCase = function (string) {\n if (typeof string !== 'string') {\n return string;\n }\n return string.replace(/./, w => w.toLowerCase());\n};\n\n/**\n * Uppercase the first letter of a string.\n *\n * @param {string} string\n * String to be uppercased\n *\n * @return {string}\n * The string with an uppercased first letter\n */\nconst toTitleCase$1 = function (string) {\n if (typeof string !== 'string') {\n return string;\n }\n return string.replace(/./, w => w.toUpperCase());\n};\n\n/**\n * Compares the TitleCase versions of the two strings for equality.\n *\n * @param {string} str1\n * The first string to compare\n *\n * @param {string} str2\n * The second string to compare\n *\n * @return {boolean}\n * Whether the TitleCase versions of the strings are equal\n */\nconst titleCaseEquals = function (str1, str2) {\n return toTitleCase$1(str1) === toTitleCase$1(str2);\n};\n\nvar Str = /*#__PURE__*/Object.freeze({\n __proto__: null,\n toLowerCase: toLowerCase,\n toTitleCase: toTitleCase$1,\n titleCaseEquals: titleCaseEquals\n});\n\n/**\n * Player Component - Base class for all UI objects\n *\n * @file component.js\n */\n\n/** @import Player from './player' */\n\n/**\n * A callback to be called if and when the component is ready.\n * `this` will be the Component instance.\n *\n * @callback ReadyCallback\n * @returns {void}\n */\n\n/**\n * Base class for all UI Components.\n * Components are UI objects which represent both a javascript object and an element\n * in the DOM. They can be children of other components, and can have\n * children themselves.\n *\n * Components can also use methods from {@link EventTarget}\n */\nclass Component$1 {\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of component options.\n *\n * @param {Object[]} [options.children]\n * An array of children objects to initialize this component with. Children objects have\n * a name property that will be used if more than one component of the same type needs to be\n * added.\n *\n * @param {string} [options.className]\n * A class or space separated list of classes to add the component\n *\n * @param {ReadyCallback} [ready]\n * Function that gets called when the `Component` is ready.\n */\n constructor(player, options, ready) {\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n this.isDisposed_ = false;\n\n // Hold the reference to the parent component via `addChild` method\n this.parentComponent_ = null;\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = merge$1({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = merge$1(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || options.el && options.el.id;\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n const id = player && player.id && player.id() || 'no_player';\n this.id_ = `${id}_component_${newGUID()}`;\n }\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n if (options.className && this.el_) {\n options.className.split(' ').forEach(c => this.addClass(c));\n }\n\n // Remove the placeholder event methods. If the component is evented, the\n // real methods are added next\n ['on', 'off', 'one', 'any', 'trigger'].forEach(fn => {\n this[fn] = undefined;\n });\n\n // if evented is anything except false, we want to mixin in evented\n if (options.evented !== false) {\n // Make this an evented object and use `el_`, if available, as its event bus\n evented(this, {\n eventBusKey: this.el_ ? 'el_' : null\n });\n this.handleLanguagechange = this.handleLanguagechange.bind(this);\n this.on(this.player_, 'languagechange', this.handleLanguagechange);\n }\n stateful(this, this.constructor.defaultState);\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n this.setTimeoutIds_ = new Set();\n this.setIntervalIds_ = new Set();\n this.rafIds_ = new Set();\n this.namedRafs_ = new Map();\n this.clearingTimersOnDispose_ = false;\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n // Don't want to trigger ready here or it will go before init is actually\n // finished for all children that run this constructor\n this.ready(ready);\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n // `on`, `off`, `one`, `any` and `trigger` are here so tsc includes them in definitions.\n // They are replaced or removed in the constructor\n\n /**\n * Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a\n * function that will get called when an event with a certain name gets triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to call with `EventTarget`s\n */\n\n /**\n * Removes an `event listener` for a specific event from an instance of `EventTarget`.\n * This makes it so that the `event listener` will no longer get called when the\n * named event happens.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} [fn]\n * The function to remove. If not specified, all listeners managed by Video.js will be removed.\n */\n\n /**\n * This function will add an `event listener` that gets triggered only once. After the\n * first trigger it will get removed. This is like adding an `event listener`\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on itself.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to be called once for each event name.\n */\n\n /**\n * This function will add an `event listener` that gets triggered only once and is\n * removed from all events. This is like adding an array of `event listener`s\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on all events the\n * first time it is triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {Function} fn\n * The function to be called once for each event name.\n */\n\n /**\n * This function causes an event to happen. This will then cause any `event listeners`\n * that are waiting for that event, to get called. If there are no `event listeners`\n * for an event then nothing will happen.\n *\n * If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`.\n * Trigger will also call the `on` + `uppercaseEventName` function.\n *\n * Example:\n * 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call\n * `onClick` if it exists.\n *\n * @param {string|Event|Object} event\n * The name of the event, an `Event`, or an object with a key of type set to\n * an event name.\n *\n * @param {Object} [hash]\n * Optionally extra argument to pass through to an event listener\n */\n\n /**\n * Dispose of the `Component` and all child components.\n *\n * @fires Component#dispose\n *\n * @param {Object} options\n * @param {Element} options.originalEl element with which to replace player element\n */\n dispose(options = {}) {\n // Bail out if the component has already been disposed.\n if (this.isDisposed_) {\n return;\n }\n if (this.readyQueue_) {\n this.readyQueue_.length = 0;\n }\n\n /**\n * Triggered when a `Component` is disposed.\n *\n * @event Component#dispose\n * @type {Event}\n *\n * @property {boolean} [bubbles=false]\n * set to false so that the dispose event does not\n * bubble up\n */\n this.trigger({\n type: 'dispose',\n bubbles: false\n });\n this.isDisposed_ = true;\n\n // Dispose all children.\n if (this.children_) {\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n this.parentComponent_ = null;\n if (this.el_) {\n // Remove element from DOM\n if (this.el_.parentNode) {\n if (options.restoreEl) {\n this.el_.parentNode.replaceChild(options.restoreEl, this.el_);\n } else {\n this.el_.parentNode.removeChild(this.el_);\n }\n }\n this.el_ = null;\n }\n\n // remove reference to the player after disposing of the element\n this.player_ = null;\n }\n\n /**\n * Determine whether or not this component has been disposed.\n *\n * @return {boolean}\n * If the component has been disposed, will be `true`. Otherwise, `false`.\n */\n isDisposed() {\n return Boolean(this.isDisposed_);\n }\n\n /**\n * Return the {@link Player} that the `Component` has attached to.\n *\n * @return {Player}\n * The player that this `Component` has attached to.\n */\n player() {\n return this.player_;\n }\n\n /**\n * Deep merge of options objects with new options.\n * > Note: When both `obj` and `options` contain properties whose values are objects.\n * The two properties get merged using {@link module:obj.merge}\n *\n * @param {Object} obj\n * The object that contains new options.\n *\n * @return {Object}\n * A new object of `this.options_` and `obj` merged together.\n */\n options(obj) {\n if (!obj) {\n return this.options_;\n }\n this.options_ = merge$1(this.options_, obj);\n return this.options_;\n }\n\n /**\n * Get the `Component`s DOM element\n *\n * @return {Element}\n * The DOM element for this `Component`.\n */\n el() {\n return this.el_;\n }\n\n /**\n * Create the `Component`s DOM element.\n *\n * @param {string} [tagName]\n * Element's DOM node type. e.g. 'div'\n *\n * @param {Object} [properties]\n * An object of properties that should be set.\n *\n * @param {Object} [attributes]\n * An object of attributes that should be set.\n *\n * @return {Element}\n * The element that gets created.\n */\n createEl(tagName, properties, attributes) {\n return createEl(tagName, properties, attributes);\n }\n\n /**\n * Localize a string given the string in english.\n *\n * If tokens are provided, it'll try and run a simple token replacement on the provided string.\n * The tokens it looks for look like `{1}` with the index being 1-indexed into the tokens array.\n *\n * If a `defaultValue` is provided, it'll use that over `string`,\n * if a value isn't found in provided language files.\n * This is useful if you want to have a descriptive key for token replacement\n * but have a succinct localized string and not require `en.json` to be included.\n *\n * Currently, it is used for the progress bar timing.\n * ```js\n * {\n * \"progress bar timing: currentTime={1} duration={2}\": \"{1} of {2}\"\n * }\n * ```\n * It is then used like so:\n * ```js\n * this.localize('progress bar timing: currentTime={1} duration{2}',\n * [this.player_.currentTime(), this.player_.duration()],\n * '{1} of {2}');\n * ```\n *\n * Which outputs something like: `01:23 of 24:56`.\n *\n *\n * @param {string} string\n * The string to localize and the key to lookup in the language files.\n * @param {string[]} [tokens]\n * If the current item has token replacements, provide the tokens here.\n * @param {string} [defaultValue]\n * Defaults to `string`. Can be a default value to use for token replacement\n * if the lookup key is needed to be separate.\n *\n * @return {string}\n * The localized string or if no localization exists the english string.\n */\n localize(string, tokens, defaultValue = string) {\n const code = this.player_.language && this.player_.language();\n const languages = this.player_.languages && this.player_.languages();\n const language = languages && languages[code];\n const primaryCode = code && code.split('-')[0];\n const primaryLang = languages && languages[primaryCode];\n let localizedString = defaultValue;\n if (language && language[string]) {\n localizedString = language[string];\n } else if (primaryLang && primaryLang[string]) {\n localizedString = primaryLang[string];\n }\n if (tokens) {\n localizedString = localizedString.replace(/\\{(\\d+)\\}/g, function (match, index) {\n const value = tokens[index - 1];\n let ret = value;\n if (typeof value === 'undefined') {\n ret = match;\n }\n return ret;\n });\n }\n return localizedString;\n }\n\n /**\n * Handles language change for the player in components. Should be overridden by sub-components.\n *\n * @abstract\n */\n handleLanguagechange() {}\n\n /**\n * Return the `Component`s DOM element. This is where children get inserted.\n * This will usually be the the same as the element returned in {@link Component#el}.\n *\n * @return {Element}\n * The content element for this `Component`.\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get this `Component`s ID\n *\n * @return {string}\n * The id of this `Component`\n */\n id() {\n return this.id_;\n }\n\n /**\n * Get the `Component`s name. The name gets used to reference the `Component`\n * and is set during registration.\n *\n * @return {string}\n * The name of this `Component`.\n */\n name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n *\n * @return {Array}\n * The children\n */\n children() {\n return this.children_;\n }\n\n /**\n * Returns the child `Component` with the given `id`.\n *\n * @param {string} id\n * The id of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `id` or undefined.\n */\n getChildById(id) {\n return this.childIndex_[id];\n }\n\n /**\n * Returns the child `Component` with the given `name`.\n *\n * @param {string} name\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `name` or undefined.\n */\n getChild(name) {\n if (!name) {\n return;\n }\n return this.childNameIndex_[name];\n }\n\n /**\n * Returns the descendant `Component` following the givent\n * descendant `names`. For instance ['foo', 'bar', 'baz'] would\n * try to get 'foo' on the current component, 'bar' on the 'foo'\n * component and 'baz' on the 'bar' component and return undefined\n * if any of those don't exist.\n *\n * @param {...string[]|...string} names\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The descendant `Component` following the given descendant\n * `names` or undefined.\n */\n getDescendant(...names) {\n // flatten array argument into the main array\n names = names.reduce((acc, n) => acc.concat(n), []);\n let currentChild = this;\n for (let i = 0; i < names.length; i++) {\n currentChild = currentChild.getChild(names[i]);\n if (!currentChild || !currentChild.getChild) {\n return;\n }\n }\n return currentChild;\n }\n\n /**\n * Adds an SVG icon element to another element or component.\n *\n * @param {string} iconName\n * The name of icon. A list of all the icon names can be found at 'sandbox/svg-icons.html'\n *\n * @param {Element} [el=this.el()]\n * Element to set the title on. Defaults to the current Component's element.\n *\n * @return {Element}\n * The newly created icon element.\n */\n setIcon(iconName, el = this.el()) {\n // TODO: In v9 of video.js, we will want to remove font icons entirely.\n // This means this check, as well as the others throughout the code, and\n // the unecessary CSS for font icons, will need to be removed.\n // See https://github.com/videojs/video.js/pull/8260 as to which components\n // need updating.\n if (!this.player_.options_.experimentalSvgIcons) {\n return;\n }\n const xmlnsURL = 'http://www.w3.org/2000/svg';\n\n // The below creates an element in the format of:\n // ....\n const iconContainer = createEl('span', {\n className: 'vjs-icon-placeholder vjs-svg-icon'\n }, {\n 'aria-hidden': 'true'\n });\n const svgEl = document$1.createElementNS(xmlnsURL, 'svg');\n svgEl.setAttributeNS(null, 'viewBox', '0 0 512 512');\n const useEl = document$1.createElementNS(xmlnsURL, 'use');\n svgEl.appendChild(useEl);\n useEl.setAttributeNS(null, 'href', `#vjs-icon-${iconName}`);\n iconContainer.appendChild(svgEl);\n\n // Replace a pre-existing icon if one exists.\n if (this.iconIsSet_) {\n el.replaceChild(iconContainer, el.querySelector('.vjs-icon-placeholder'));\n } else {\n el.appendChild(iconContainer);\n }\n this.iconIsSet_ = true;\n return iconContainer;\n }\n\n /**\n * Add a child `Component` inside the current `Component`.\n *\n * @param {string|Component} child\n * The name or instance of a child to add.\n *\n * @param {Object} [options={}]\n * The key/value store of options that will get passed to children of\n * the child.\n *\n * @param {number} [index=this.children_.length]\n * The index to attempt to add a child into.\n *\n *\n * @return {Component}\n * The `Component` that gets added as a child. When using a string the\n * `Component` will get created by this process.\n */\n addChild(child, options = {}, index = this.children_.length) {\n let component;\n let componentName;\n\n // If child is a string, create component with options\n if (typeof child === 'string') {\n componentName = toTitleCase$1(child);\n const componentClassName = options.componentClass || componentName;\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n const ComponentClass = Component$1.getComponent(componentClassName);\n if (!ComponentClass) {\n throw new Error(`Component ${componentClassName} does not exist`);\n }\n\n // data stored directly on the videojs object may be\n // misidentified as a component to retain\n // backwards-compatibility with 4.x. check to make sure the\n // component class can be instantiated.\n if (typeof ComponentClass !== 'function') {\n return null;\n }\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n if (component.parentComponent_) {\n component.parentComponent_.removeChild(component);\n }\n this.children_.splice(index, 0, component);\n component.parentComponent_ = this;\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || component.name && toTitleCase$1(component.name());\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n this.childNameIndex_[toLowerCase(componentName)] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n // If inserting before a component, insert before that component's element\n let refNode = null;\n if (this.children_[index + 1]) {\n // Most children are components, but the video tech is an HTML element\n if (this.children_[index + 1].el_) {\n refNode = this.children_[index + 1].el_;\n } else if (isEl(this.children_[index + 1])) {\n refNode = this.children_[index + 1];\n }\n }\n this.contentEl().insertBefore(component.el(), refNode);\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n }\n\n /**\n * Remove a child `Component` from this `Component`s list of children. Also removes\n * the child `Component`s element from this `Component`s element.\n *\n * @param {Component} component\n * The child `Component` to remove.\n */\n removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n if (!component || !this.children_) {\n return;\n }\n let childFound = false;\n for (let i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n if (!childFound) {\n return;\n }\n component.parentComponent_ = null;\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[toTitleCase$1(component.name())] = null;\n this.childNameIndex_[toLowerCase(component.name())] = null;\n const compEl = component.el();\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n\n /**\n * Add and initialize default child `Component`s based upon options.\n */\n initChildren() {\n const children = this.options_.children;\n if (children) {\n // `this` is `parent`\n const parentOptions = this.options_;\n const handleAdd = child => {\n const name = child.name;\n let opts = child.opts;\n\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options\n // to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n const newChild = this.addChild(name, opts);\n if (newChild) {\n this[name] = newChild;\n }\n };\n\n // Allow for an array of children details to passed in the options\n let workingChildren;\n const Tech = Component$1.getComponent('Tech');\n if (Array.isArray(children)) {\n workingChildren = children;\n } else {\n workingChildren = Object.keys(children);\n }\n workingChildren\n // children that are in this.options_ but also in workingChildren would\n // give us extra children we do not want. So, we want to filter them out.\n .concat(Object.keys(this.options_).filter(function (child) {\n return !workingChildren.some(function (wchild) {\n if (typeof wchild === 'string') {\n return child === wchild;\n }\n return child === wchild.name;\n });\n })).map(child => {\n let name;\n let opts;\n if (typeof child === 'string') {\n name = child;\n opts = children[name] || this.options_[name] || {};\n } else {\n name = child.name;\n opts = child;\n }\n return {\n name,\n opts\n };\n }).filter(child => {\n // we have to make sure that child.name isn't in the techOrder since\n // techs are registered as Components but can't aren't compatible\n // See https://github.com/videojs/video.js/issues/2772\n const c = Component$1.getComponent(child.opts.componentClass || toTitleCase$1(child.name));\n return c && !Tech.isTech(c);\n }).forEach(handleAdd);\n }\n }\n\n /**\n * Builds the default DOM class name. Should be overridden by sub-components.\n *\n * @return {string}\n * The DOM class name for this object.\n *\n * @abstract\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @param {ReadyCallback} fn\n * Function that gets called when the `Component` is ready.\n */\n ready(fn, sync = false) {\n if (!fn) {\n return;\n }\n if (!this.isReady_) {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n return;\n }\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n }\n\n /**\n * Trigger all the ready listeners for this `Component`.\n *\n * @fires Component#ready\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggered asynchronously\n this.setTimeout(function () {\n const readyQueue = this.readyQueue_;\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function (fn) {\n fn.call(this);\n }, this);\n }\n\n // Allow for using event listeners also\n /**\n * Triggered when a `Component` is ready.\n *\n * @event Component#ready\n * @type {Event}\n */\n this.trigger('ready');\n }, 1);\n }\n\n /**\n * Find a single DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {Element|null}\n * the dom element that was found, or null\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n $(selector, context) {\n return $(selector, context || this.contentEl());\n }\n\n /**\n * Finds all DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {NodeList}\n * a list of dom elements that were found\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n $$(selector, context) {\n return $$(selector, context || this.contentEl());\n }\n\n /**\n * Check if a component's element has a CSS class name.\n *\n * @param {string} classToCheck\n * CSS class name to check.\n *\n * @return {boolean}\n * - True if the `Component` has the class.\n * - False if the `Component` does not have the class`\n */\n hasClass(classToCheck) {\n return hasClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the `Component`s element.\n *\n * @param {...string} classesToAdd\n * One or more CSS class name to add.\n */\n addClass(...classesToAdd) {\n addClass(this.el_, ...classesToAdd);\n }\n\n /**\n * Remove a CSS class name from the `Component`s element.\n *\n * @param {...string} classesToRemove\n * One or more CSS class name to remove.\n */\n removeClass(...classesToRemove) {\n removeClass(this.el_, ...classesToRemove);\n }\n\n /**\n * Add or remove a CSS class name from the component's element.\n * - `classToToggle` gets added when {@link Component#hasClass} would return false.\n * - `classToToggle` gets removed when {@link Component#hasClass} would return true.\n *\n * @param {string} classToToggle\n * The class to add or remove. Passed to DOMTokenList's toggle()\n *\n * @param {boolean|Dom.PredicateCallback} [predicate]\n * A boolean or function that returns a boolean. Passed to DOMTokenList's toggle().\n */\n toggleClass(classToToggle, predicate) {\n toggleClass(this.el_, classToToggle, predicate);\n }\n\n /**\n * Show the `Component`s element if it is hidden by removing the\n * 'vjs-hidden' class name from it.\n */\n show() {\n this.removeClass('vjs-hidden');\n }\n\n /**\n * Hide the `Component`s element if it is currently showing by adding the\n * 'vjs-hidden` class name to it.\n */\n hide() {\n this.addClass('vjs-hidden');\n }\n\n /**\n * Lock a `Component`s element in its visible state by adding the 'vjs-lock-showing'\n * class name to it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n lockShowing() {\n this.addClass('vjs-lock-showing');\n }\n\n /**\n * Unlock a `Component`s element from its visible state by removing the 'vjs-lock-showing'\n * class name from it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n unlockShowing() {\n this.removeClass('vjs-lock-showing');\n }\n\n /**\n * Get the value of an attribute on the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to get the value from.\n *\n * @return {string|null}\n * - The value of the attribute that was asked for.\n * - Can be an empty string on some browsers if the attribute does not exist\n * or has no value\n * - Most browsers will return null if the attribute does not exist or has\n * no value.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute}\n */\n getAttribute(attribute) {\n return getAttribute(this.el_, attribute);\n }\n\n /**\n * Set the value of an attribute on the `Component`'s element\n *\n * @param {string} attribute\n * Name of the attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute}\n */\n setAttribute(attribute, value) {\n setAttribute(this.el_, attribute, value);\n }\n\n /**\n * Remove an attribute from the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to remove.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute}\n */\n removeAttribute(attribute) {\n removeAttribute(this.el_, attribute);\n }\n\n /**\n * Get or set the width of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The width that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|undefined}\n * The width when getting, zero if there is no width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n\n /**\n * Get or set the height of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The height that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|undefined}\n * The height when getting, zero if there is no height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n\n /**\n * Set both the width and height of the `Component` element at the same time.\n *\n * @param {number|string} width\n * Width to set the `Component`s element to.\n *\n * @param {number|string} height\n * Height to set the `Component`s element to.\n */\n dimensions(width, height) {\n // Skip componentresize listeners on width for optimization\n this.width(width, true);\n this.height(height);\n }\n\n /**\n * Get or set width or height of the `Component` element. This is the shared code\n * for the {@link Component#width} and {@link Component#height}.\n *\n * Things to know:\n * - If the width or height in an number this will return the number postfixed with 'px'.\n * - If the width/height is a percent this will return the percent postfixed with '%'\n * - Hidden elements have a width of 0 with `window.getComputedStyle`. This function\n * defaults to the `Component`s `style.width` and falls back to `window.getComputedStyle`.\n * See [this]{@link http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/}\n * for more information\n * - If you want the computed style of the component, use {@link Component#currentWidth}\n * and {@link {Component#currentHeight}\n *\n * @fires Component#componentresize\n *\n * @param {string} widthOrHeight\n 8 'width' or 'height'\n *\n * @param {number|string} [num]\n 8 New dimension\n *\n * @param {boolean} [skipListeners]\n * Skip componentresize event trigger\n *\n * @return {number|undefined}\n * The dimension when getting or 0 if unset\n */\n dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n /**\n * Triggered when a component is resized.\n *\n * @event Component#componentresize\n * @type {Event}\n */\n this.trigger('componentresize');\n }\n return;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n const val = this.el_.style[widthOrHeight];\n const pxIndex = val.indexOf('px');\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase$1(widthOrHeight)], 10);\n }\n\n /**\n * Get the computed width or the height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @param {string} widthOrHeight\n * A string containing 'width' or 'height'. Whichever one you want to get.\n *\n * @return {number}\n * The dimension that gets asked for or 0 if nothing was set\n * for that dimension.\n */\n currentDimension(widthOrHeight) {\n let computedWidthOrHeight = 0;\n if (widthOrHeight !== 'width' && widthOrHeight !== 'height') {\n throw new Error('currentDimension only accepts width or height value');\n }\n computedWidthOrHeight = computedStyle(this.el_, widthOrHeight);\n\n // remove 'px' from variable and parse as integer\n computedWidthOrHeight = parseFloat(computedWidthOrHeight);\n\n // if the computed value is still 0, it's possible that the browser is lying\n // and we want to check the offset values.\n // This code also runs wherever getComputedStyle doesn't exist.\n if (computedWidthOrHeight === 0 || isNaN(computedWidthOrHeight)) {\n const rule = `offset${toTitleCase$1(widthOrHeight)}`;\n computedWidthOrHeight = this.el_[rule];\n }\n return computedWidthOrHeight;\n }\n\n /**\n * An object that contains width and height values of the `Component`s\n * computed style. Uses `window.getComputedStyle`.\n *\n * @typedef {Object} Component~DimensionObject\n *\n * @property {number} width\n * The width of the `Component`s computed style.\n *\n * @property {number} height\n * The height of the `Component`s computed style.\n */\n\n /**\n * Get an object that contains computed width and height values of the\n * component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {Component~DimensionObject}\n * The computed dimensions of the component's element.\n */\n currentDimensions() {\n return {\n width: this.currentDimension('width'),\n height: this.currentDimension('height')\n };\n }\n\n /**\n * Get the computed width of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed width of the component's element.\n */\n currentWidth() {\n return this.currentDimension('width');\n }\n\n /**\n * Get the computed height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed height of the component's element.\n */\n currentHeight() {\n return this.currentDimension('height');\n }\n\n /**\n * Retrieves the position and size information of the component's element.\n *\n * @return {Object} An object with `boundingClientRect` and `center` properties.\n * - `boundingClientRect`: An object with properties `x`, `y`, `width`,\n * `height`, `top`, `right`, `bottom`, and `left`, representing\n * the bounding rectangle of the element.\n * - `center`: An object with properties `x` and `y`, representing\n * the center point of the element. `width` and `height` are set to 0.\n */\n getPositions() {\n const rect = this.el_.getBoundingClientRect();\n\n // Creating objects that mirror DOMRectReadOnly for boundingClientRect and center\n const boundingClientRect = {\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left\n };\n\n // Calculating the center position\n const center = {\n x: rect.left + rect.width / 2,\n y: rect.top + rect.height / 2,\n width: 0,\n height: 0,\n top: rect.top + rect.height / 2,\n right: rect.left + rect.width / 2,\n bottom: rect.top + rect.height / 2,\n left: rect.left + rect.width / 2\n };\n return {\n boundingClientRect,\n center\n };\n }\n\n /**\n * Set the focus to this component\n */\n focus() {\n this.el_.focus();\n }\n\n /**\n * Remove the focus from this component\n */\n blur() {\n this.el_.blur();\n }\n\n /**\n * When this Component receives a `keydown` event which it does not process,\n * it passes the event to the Player for handling.\n *\n * @param {KeyboardEvent} event\n * The `keydown` event that caused this function to be called.\n */\n handleKeyDown(event) {\n if (this.player_) {\n // We only stop propagation here because we want unhandled events to fall\n // back to the browser. Exclude Tab for focus trapping, exclude also when spatialNavigation is enabled.\n if (event.key !== 'Tab' && !(this.player_.options_.playerOptions.spatialNavigation && this.player_.options_.playerOptions.spatialNavigation.enabled)) {\n event.stopPropagation();\n }\n this.player_.handleKeyDown(event);\n }\n }\n\n /**\n * Many components used to have a `handleKeyPress` method, which was poorly\n * named because it listened to a `keydown` event. This method name now\n * delegates to `handleKeyDown`. This means anyone calling `handleKeyPress`\n * will not see their method calls stop working.\n *\n * @param {KeyboardEvent} event\n * The event that caused this function to be called.\n */\n handleKeyPress(event) {\n this.handleKeyDown(event);\n }\n\n /**\n * Emit a 'tap' events when touch event support gets detected. This gets used to\n * support toggling the controls through a tap on the video. They get enabled\n * because every sub-component would have extra overhead otherwise.\n *\n * @protected\n * @fires Component#tap\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchleave\n * @listens Component#touchcancel\n * @listens Component#touchend\n */\n emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15,\n // so 10 seems like a nice, round number.\n const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n let couldBeTap;\n this.on('touchstart', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy pageX/pageY from the object\n firstTouch = {\n pageX: event.touches[0].pageX,\n pageY: event.touches[0].pageY\n };\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = window$1.performance.now();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n this.on('touchmove', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n const noTap = function () {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function (event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n const touchTime = window$1.performance.now() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n /**\n * Triggered when a `Component` is tapped.\n *\n * @event Component#tap\n * @type {MouseEvent}\n */\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n\n /**\n * This function reports user activity whenever touch events happen. This can get\n * turned off by any sub-components that wants touch events to act another way.\n *\n * Report user touch activity when touch events occur. User activity gets used to\n * determine when controls should show/hide. It is simple when it comes to mouse\n * events, because any mouse event should show the controls. So we capture mouse\n * events that bubble up to the player and report activity when that happens.\n * With touch events it isn't as easy as `touchstart` and `touchend` toggle player\n * controls. So touch events can't help us at the player level either.\n *\n * User activity gets checked asynchronously. So what could happen is a tap event\n * on the video turns the controls off. Then the `touchend` event bubbles up to\n * the player. Which, if it reported user activity, would turn the controls right\n * back on. We also don't want to completely block touch events from bubbling up.\n * Furthermore a `touchmove` event and anything other than a tap, should not turn\n * controls back on.\n *\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchend\n * @listens Component#touchcancel\n */\n enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n const report = bind_(this.player(), this.player().reportUserActivity);\n let touchHolding;\n this.on('touchstart', function () {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n const touchEnd = function (event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n\n /**\n * A callback that has no parameters and is bound into `Component`s context.\n *\n * @callback Component~GenericCallback\n * @this Component\n */\n\n /**\n * Creates a function that runs after an `x` millisecond timeout. This function is a\n * wrapper around `window.setTimeout`. There are a few reasons to use this one\n * instead though:\n * 1. It gets cleared via {@link Component#clearTimeout} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will gets turned into a {@link Component~GenericCallback}\n *\n * > Note: You can't use `window.clearTimeout` on the id returned by this function. This\n * will cause its dispose listener not to get cleaned up! Please use\n * {@link Component#clearTimeout} or {@link Component#dispose} instead.\n *\n * @param {Component~GenericCallback} fn\n * The function that will be run after `timeout`.\n *\n * @param {number} timeout\n * Timeout in milliseconds to delay before executing the specified function.\n *\n * @return {number}\n * Returns a timeout ID that gets used to identify the timeout. It can also\n * get used in {@link Component#clearTimeout} to clear the timeout that\n * was set.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout}\n */\n setTimeout(fn, timeout) {\n // declare as variables so they are properly available in timeout function\n // eslint-disable-next-line\n var timeoutId;\n fn = bind_(this, fn);\n this.clearTimersOnDispose_();\n timeoutId = window$1.setTimeout(() => {\n if (this.setTimeoutIds_.has(timeoutId)) {\n this.setTimeoutIds_.delete(timeoutId);\n }\n fn();\n }, timeout);\n this.setTimeoutIds_.add(timeoutId);\n return timeoutId;\n }\n\n /**\n * Clears a timeout that gets created via `window.setTimeout` or\n * {@link Component#setTimeout}. If you set a timeout via {@link Component#setTimeout}\n * use this function instead of `window.clearTimout`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} timeoutId\n * The id of the timeout to clear. The return value of\n * {@link Component#setTimeout} or `window.setTimeout`.\n *\n * @return {number}\n * Returns the timeout id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearTimeout}\n */\n clearTimeout(timeoutId) {\n if (this.setTimeoutIds_.has(timeoutId)) {\n this.setTimeoutIds_.delete(timeoutId);\n window$1.clearTimeout(timeoutId);\n }\n return timeoutId;\n }\n\n /**\n * Creates a function that gets run every `x` milliseconds. This function is a wrapper\n * around `window.setInterval`. There are a few reasons to use this one instead though.\n * 1. It gets cleared via {@link Component#clearInterval} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will be a {@link Component~GenericCallback}\n *\n * @param {Component~GenericCallback} fn\n * The function to run every `x` seconds.\n *\n * @param {number} interval\n * Execute the specified function every `x` milliseconds.\n *\n * @return {number}\n * Returns an id that can be used to identify the interval. It can also be be used in\n * {@link Component#clearInterval} to clear the interval.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval}\n */\n setInterval(fn, interval) {\n fn = bind_(this, fn);\n this.clearTimersOnDispose_();\n const intervalId = window$1.setInterval(fn, interval);\n this.setIntervalIds_.add(intervalId);\n return intervalId;\n }\n\n /**\n * Clears an interval that gets created via `window.setInterval` or\n * {@link Component#setInterval}. If you set an interval via {@link Component#setInterval}\n * use this function instead of `window.clearInterval`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} intervalId\n * The id of the interval to clear. The return value of\n * {@link Component#setInterval} or `window.setInterval`.\n *\n * @return {number}\n * Returns the interval id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval}\n */\n clearInterval(intervalId) {\n if (this.setIntervalIds_.has(intervalId)) {\n this.setIntervalIds_.delete(intervalId);\n window$1.clearInterval(intervalId);\n }\n return intervalId;\n }\n\n /**\n * Queues up a callback to be passed to requestAnimationFrame (rAF), but\n * with a few extra bonuses:\n *\n * - Supports browsers that do not support rAF by falling back to\n * {@link Component#setTimeout}.\n *\n * - The callback is turned into a {@link Component~GenericCallback} (i.e.\n * bound to the component).\n *\n * - Automatic cancellation of the rAF callback is handled if the component\n * is disposed before it is called.\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n *\n * @return {number}\n * Returns an rAF ID that gets used to identify the timeout. It can\n * also be used in {@link Component#cancelAnimationFrame} to cancel\n * the animation frame callback.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame}\n */\n requestAnimationFrame(fn) {\n this.clearTimersOnDispose_();\n\n // declare as variables so they are properly available in rAF function\n // eslint-disable-next-line\n var id;\n fn = bind_(this, fn);\n id = window$1.requestAnimationFrame(() => {\n if (this.rafIds_.has(id)) {\n this.rafIds_.delete(id);\n }\n fn();\n });\n this.rafIds_.add(id);\n return id;\n }\n\n /**\n * Request an animation frame, but only one named animation\n * frame will be queued. Another will never be added until\n * the previous one finishes.\n *\n * @param {string} name\n * The name to give this requestAnimationFrame\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n */\n requestNamedAnimationFrame(name, fn) {\n if (this.namedRafs_.has(name)) {\n this.cancelNamedAnimationFrame(name);\n }\n this.clearTimersOnDispose_();\n fn = bind_(this, fn);\n const id = this.requestAnimationFrame(() => {\n fn();\n if (this.namedRafs_.has(name)) {\n this.namedRafs_.delete(name);\n }\n });\n this.namedRafs_.set(name, id);\n return name;\n }\n\n /**\n * Cancels a current named animation frame if it exists.\n *\n * @param {string} name\n * The name of the requestAnimationFrame to cancel.\n */\n cancelNamedAnimationFrame(name) {\n if (!this.namedRafs_.has(name)) {\n return;\n }\n this.cancelAnimationFrame(this.namedRafs_.get(name));\n this.namedRafs_.delete(name);\n }\n\n /**\n * Cancels a queued callback passed to {@link Component#requestAnimationFrame}\n * (rAF).\n *\n * If you queue an rAF callback via {@link Component#requestAnimationFrame},\n * use this function instead of `window.cancelAnimationFrame`. If you don't,\n * your dispose listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} id\n * The rAF ID to clear. The return value of {@link Component#requestAnimationFrame}.\n *\n * @return {number}\n * Returns the rAF ID that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/cancelAnimationFrame}\n */\n cancelAnimationFrame(id) {\n if (this.rafIds_.has(id)) {\n this.rafIds_.delete(id);\n window$1.cancelAnimationFrame(id);\n }\n return id;\n }\n\n /**\n * A function to setup `requestAnimationFrame`, `setTimeout`,\n * and `setInterval`, clearing on dispose.\n *\n * > Previously each timer added and removed dispose listeners on it's own.\n * For better performance it was decided to batch them all, and use `Set`s\n * to track outstanding timer ids.\n *\n * @private\n */\n clearTimersOnDispose_() {\n if (this.clearingTimersOnDispose_) {\n return;\n }\n this.clearingTimersOnDispose_ = true;\n this.one('dispose', () => {\n [['namedRafs_', 'cancelNamedAnimationFrame'], ['rafIds_', 'cancelAnimationFrame'], ['setTimeoutIds_', 'clearTimeout'], ['setIntervalIds_', 'clearInterval']].forEach(([idName, cancelName]) => {\n // for a `Set` key will actually be the value again\n // so forEach((val, val) =>` but for maps we want to use\n // the key.\n this[idName].forEach((val, key) => this[cancelName](key));\n });\n this.clearingTimersOnDispose_ = false;\n });\n }\n\n /**\n * Decide whether an element is actually disabled or not.\n *\n * @function isActuallyDisabled\n * @param element {Node}\n * @return {boolean}\n *\n * @see {@link https://html.spec.whatwg.org/multipage/semantics-other.html#concept-element-disabled}\n */\n getIsDisabled() {\n return Boolean(this.el_.disabled);\n }\n\n /**\n * Decide whether the element is expressly inert or not.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/interaction.html#expressly-inert}\n * @function isExpresslyInert\n * @param element {Node}\n * @return {boolean}\n */\n getIsExpresslyInert() {\n return this.el_.inert && !this.el_.ownerDocument.documentElement.inert;\n }\n\n /**\n * Determine whether or not this component can be considered as focusable component.\n *\n * @param {HTMLElement} el - The HTML element representing the component.\n * @return {boolean}\n * If the component can be focused, will be `true`. Otherwise, `false`.\n */\n getIsFocusable(el) {\n const element = el || this.el_;\n return element.tabIndex >= 0 && !(this.getIsDisabled() || this.getIsExpresslyInert());\n }\n\n /**\n * Determine whether or not this component is currently visible/enabled/etc...\n *\n * @param {HTMLElement} el - The HTML element representing the component.\n * @return {boolean}\n * If the component can is currently visible & enabled, will be `true`. Otherwise, `false`.\n */\n getIsAvailableToBeFocused(el) {\n /**\n * Decide the style property of this element is specified whether it's visible or not.\n *\n * @function isVisibleStyleProperty\n * @param element {CSSStyleDeclaration}\n * @return {boolean}\n */\n function isVisibleStyleProperty(element) {\n const elementStyle = window$1.getComputedStyle(element, null);\n const thisVisibility = elementStyle.getPropertyValue('visibility');\n const thisDisplay = elementStyle.getPropertyValue('display');\n const invisibleStyle = ['hidden', 'collapse'];\n return thisDisplay !== 'none' && !invisibleStyle.includes(thisVisibility);\n }\n\n /**\n * Decide whether the element is being rendered or not.\n * 1. If an element has the style as \"visibility: hidden | collapse\" or \"display: none\", it is not being rendered.\n * 2. If an element has the style as \"opacity: 0\", it is not being rendered.(that is, invisible).\n * 3. If width and height of an element are explicitly set to 0, it is not being rendered.\n * 4. If a parent element is hidden, an element itself is not being rendered.\n * (CSS visibility property and display property are inherited.)\n *\n * @see {@link https://html.spec.whatwg.org/multipage/rendering.html#being-rendered}\n * @function isBeingRendered\n * @param element {Node}\n * @return {boolean}\n */\n function isBeingRendered(element) {\n if (!isVisibleStyleProperty(element.parentElement)) {\n return false;\n }\n if (!isVisibleStyleProperty(element) || element.style.opacity === '0' || window$1.getComputedStyle(element).height === '0px' || window$1.getComputedStyle(element).width === '0px') {\n return false;\n }\n return true;\n }\n\n /**\n * Determine if the element is visible for the user or not.\n * 1. If an element sum of its offsetWidth, offsetHeight, height and width is less than 1 is not visible.\n * 2. If elementCenter.x is less than is not visible.\n * 3. If elementCenter.x is more than the document's width is not visible.\n * 4. If elementCenter.y is less than 0 is not visible.\n * 5. If elementCenter.y is the document's height is not visible.\n *\n * @function isVisible\n * @param element {Node}\n * @return {boolean}\n */\n function isVisible(element) {\n if (element.offsetWidth + element.offsetHeight + element.getBoundingClientRect().height + element.getBoundingClientRect().width === 0) {\n return false;\n }\n\n // Define elementCenter object with props of x and y\n // x: Left position relative to the viewport plus element's width (no margin) divided between 2.\n // y: Top position relative to the viewport plus element's height (no margin) divided between 2.\n const elementCenter = {\n x: element.getBoundingClientRect().left + element.offsetWidth / 2,\n y: element.getBoundingClientRect().top + element.offsetHeight / 2\n };\n if (elementCenter.x < 0) {\n return false;\n }\n if (elementCenter.x > (document$1.documentElement.clientWidth || window$1.innerWidth)) {\n return false;\n }\n if (elementCenter.y < 0) {\n return false;\n }\n if (elementCenter.y > (document$1.documentElement.clientHeight || window$1.innerHeight)) {\n return false;\n }\n let pointContainer = document$1.elementFromPoint(elementCenter.x, elementCenter.y);\n while (pointContainer) {\n if (pointContainer === element) {\n return true;\n }\n if (pointContainer.parentNode) {\n pointContainer = pointContainer.parentNode;\n } else {\n return false;\n }\n }\n }\n\n // If no DOM element was passed as argument use this component's element.\n if (!el) {\n el = this.el();\n }\n\n // If element is visible, is being rendered & either does not have a parent element or its tabIndex is not negative.\n if (isVisible(el) && isBeingRendered(el) && (!el.parentElement || el.tabIndex >= 0)) {\n return true;\n }\n return false;\n }\n\n /**\n * Register a `Component` with `videojs` given the name and the component.\n *\n * > NOTE: {@link Tech}s should not be registered as a `Component`. {@link Tech}s\n * should be registered using {@link Tech.registerTech} or\n * {@link videojs:videojs.registerTech}.\n *\n * > NOTE: This function can also be seen on videojs as\n * {@link videojs:videojs.registerComponent}.\n *\n * @param {string} name\n * The name of the `Component` to register.\n *\n * @param {Component} ComponentToRegister\n * The `Component` class to register.\n *\n * @return {Component}\n * The `Component` that was registered.\n */\n static registerComponent(name, ComponentToRegister) {\n if (typeof name !== 'string' || !name) {\n throw new Error(`Illegal component name, \"${name}\"; must be a non-empty string.`);\n }\n const Tech = Component$1.getComponent('Tech');\n\n // We need to make sure this check is only done if Tech has been registered.\n const isTech = Tech && Tech.isTech(ComponentToRegister);\n const isComp = Component$1 === ComponentToRegister || Component$1.prototype.isPrototypeOf(ComponentToRegister.prototype);\n if (isTech || !isComp) {\n let reason;\n if (isTech) {\n reason = 'techs must be registered using Tech.registerTech()';\n } else {\n reason = 'must be a Component subclass';\n }\n throw new Error(`Illegal component, \"${name}\"; ${reason}.`);\n }\n name = toTitleCase$1(name);\n if (!Component$1.components_) {\n Component$1.components_ = {};\n }\n const Player = Component$1.getComponent('Player');\n if (name === 'Player' && Player && Player.players) {\n const players = Player.players;\n const playerNames = Object.keys(players);\n\n // If we have players that were disposed, then their name will still be\n // in Players.players. So, we must loop through and verify that the value\n // for each item is not null. This allows registration of the Player component\n // after all players have been disposed or before any were created.\n if (players && playerNames.length > 0 && playerNames.map(pname => players[pname]).every(Boolean)) {\n throw new Error('Can not register Player component after player has been created.');\n }\n }\n Component$1.components_[name] = ComponentToRegister;\n Component$1.components_[toLowerCase(name)] = ComponentToRegister;\n return ComponentToRegister;\n }\n\n /**\n * Get a `Component` based on the name it was registered with.\n *\n * @param {string} name\n * The Name of the component to get.\n *\n * @return {typeof Component}\n * The `Component` that got registered under the given name.\n */\n static getComponent(name) {\n if (!name || !Component$1.components_) {\n return;\n }\n return Component$1.components_[name];\n }\n}\nComponent$1.registerComponent('Component', Component$1);\n\n/**\n * @file time.js\n * @module time\n */\n\n/**\n * Returns the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @typedef {Function} TimeRangeIndex\n *\n * @param {number} [index=0]\n * The range number to return the time for.\n *\n * @return {number}\n * The time offset at the specified index.\n *\n * @deprecated The index argument must be provided.\n * In the future, leaving it out will throw an error.\n */\n\n/**\n * An object that contains ranges of time, which mimics {@link TimeRanges}.\n *\n * @typedef {Object} TimeRange\n *\n * @property {number} length\n * The number of time ranges represented by this object.\n *\n * @property {module:time~TimeRangeIndex} start\n * Returns the time offset at which a specified time range begins.\n *\n * @property {module:time~TimeRangeIndex} end\n * Returns the time offset at which a specified time range ends.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges\n */\n\n/**\n * Check if any of the time ranges are over the maximum index.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {number} index\n * The index to check\n *\n * @param {number} maxIndex\n * The maximum possible index\n *\n * @throws {Error} if the timeRanges provided are over the maxIndex\n */\nfunction rangeCheck(fnName, index, maxIndex) {\n if (typeof index !== 'number' || index < 0 || index > maxIndex) {\n throw new Error(`Failed to execute '${fnName}' on 'TimeRanges': The index provided (${index}) is non-numeric or out of bounds (0-${maxIndex}).`);\n }\n}\n\n/**\n * Get the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {string} valueIndex\n * The property that should be used to get the time. should be\n * 'start' or 'end'\n *\n * @param {Array} ranges\n * An array of time ranges\n *\n * @param {Array} [rangeIndex=0]\n * The index to start the search at\n *\n * @return {number}\n * The time that offset at the specified index.\n *\n * @deprecated rangeIndex must be set to a value, in the future this will throw an error.\n * @throws {Error} if rangeIndex is more than the length of ranges\n */\nfunction getRange(fnName, valueIndex, ranges, rangeIndex) {\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n\n/**\n * Create a time range object given ranges of time.\n *\n * @private\n * @param {Array} [ranges]\n * An array of time ranges.\n *\n * @return {TimeRange}\n */\nfunction createTimeRangesObj(ranges) {\n let timeRangesObj;\n if (ranges === undefined || ranges.length === 0) {\n timeRangesObj = {\n length: 0,\n start() {\n throw new Error('This TimeRanges object is empty');\n },\n end() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n } else {\n timeRangesObj = {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n }\n if (window$1.Symbol && window$1.Symbol.iterator) {\n timeRangesObj[window$1.Symbol.iterator] = () => (ranges || []).values();\n }\n return timeRangesObj;\n}\n\n/**\n * Create a `TimeRange` object which mimics an\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges|HTML5 TimeRanges instance}.\n *\n * @param {number|Array[]} start\n * The start of a single range (a number) or an array of ranges (an\n * array of arrays of two numbers each).\n *\n * @param {number} end\n * The end of a single range. Cannot be used with the array form of\n * the `start` argument.\n *\n * @return {TimeRange}\n */\nfunction createTimeRanges$1(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n return createTimeRangesObj([[start, end]]);\n}\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS. Supplying a guide (in\n * seconds) will force a number of leading zeros to cover the length of the\n * guide.\n *\n * @private\n * @param {number} seconds\n * Number of seconds to be turned into a string\n *\n * @param {number} guide\n * Number (in seconds) to model the string after\n *\n * @return {string}\n * Time formatted as H:MM:SS or M:SS\n */\nconst defaultImplementation = function (seconds, guide) {\n seconds = seconds < 0 ? 0 : seconds;\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = h > 0 || gh > 0 ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = ((h || gm >= 10) && m < 10 ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = s < 10 ? '0' + s : s;\n return h + m + s;\n};\n\n// Internal pointer to the current implementation.\nlet implementation = defaultImplementation;\n\n/**\n * Replaces the default formatTime implementation with a custom implementation.\n *\n * @param {Function} customImplementation\n * A function which will be used in place of the default formatTime\n * implementation. Will receive the current time in seconds and the\n * guide (in seconds) as arguments.\n */\nfunction setFormatTime(customImplementation) {\n implementation = customImplementation;\n}\n\n/**\n * Resets formatTime to the default implementation.\n */\nfunction resetFormatTime() {\n implementation = defaultImplementation;\n}\n\n/**\n * Delegates to either the default time formatting function or a custom\n * function supplied via `setFormatTime`.\n *\n * Formats seconds as a time string (H:MM:SS or M:SS). Supplying a\n * guide (in seconds) will force a number of leading zeros to cover the\n * length of the guide.\n *\n * @example formatTime(125, 600) === \"02:05\"\n * @param {number} seconds\n * Number of seconds to be turned into a string\n *\n * @param {number} guide\n * Number (in seconds) to model the string after\n *\n * @return {string}\n * Time formatted as H:MM:SS or M:SS\n */\nfunction formatTime(seconds, guide = seconds) {\n return implementation(seconds, guide);\n}\n\nvar Time = /*#__PURE__*/Object.freeze({\n __proto__: null,\n createTimeRanges: createTimeRanges$1,\n createTimeRange: createTimeRanges$1,\n setFormatTime: setFormatTime,\n resetFormatTime: resetFormatTime,\n formatTime: formatTime\n});\n\n/**\n * @file buffer.js\n * @module buffer\n */\n\n/** @import { TimeRange } from './time' */\n\n/**\n * Compute the percentage of the media that has been buffered.\n *\n * @param {TimeRange} buffered\n * The current `TimeRanges` object representing buffered time ranges\n *\n * @param {number} duration\n * Total duration of the media\n *\n * @return {number}\n * Percent buffered of the total duration in decimal form.\n */\nfunction bufferedPercent(buffered, duration) {\n let bufferedDuration = 0;\n let start;\n let end;\n if (!duration) {\n return 0;\n }\n if (!buffered || !buffered.length) {\n buffered = createTimeRanges$1(0, 0);\n }\n for (let i = 0; i < buffered.length; i++) {\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n bufferedDuration += end - start;\n }\n return bufferedDuration / duration;\n}\n\n/**\n * @file media-error.js\n */\n\n/**\n * A Custom `MediaError` class which mimics the standard HTML5 `MediaError` class.\n *\n * @param {number|string|Object|MediaError} value\n * This can be of multiple types:\n * - number: should be a standard error code\n * - string: an error message (the code will be 0)\n * - Object: arbitrary properties\n * - `MediaError` (native): used to populate a video.js `MediaError` object\n * - `MediaError` (video.js): will return itself if it's already a\n * video.js `MediaError` object.\n *\n * @see [MediaError Spec]{@link https://dev.w3.org/html5/spec-author-view/video.html#mediaerror}\n * @see [Encrypted MediaError Spec]{@link https://www.w3.org/TR/2013/WD-encrypted-media-20130510/#error-codes}\n *\n * @class MediaError\n */\nfunction MediaError(value) {\n // Allow redundant calls to this constructor to avoid having `instanceof`\n // checks peppered around the code.\n if (value instanceof MediaError) {\n return value;\n }\n if (typeof value === 'number') {\n this.code = value;\n } else if (typeof value === 'string') {\n // default code is zero, so this is a custom error\n this.message = value;\n } else if (isObject(value)) {\n // We assign the `code` property manually because native `MediaError` objects\n // do not expose it as an own/enumerable property of the object.\n if (typeof value.code === 'number') {\n this.code = value.code;\n }\n Object.assign(this, value);\n }\n if (!this.message) {\n this.message = MediaError.defaultMessages[this.code] || '';\n }\n}\n\n/**\n * The error code that refers two one of the defined `MediaError` types\n *\n * @type {Number}\n */\nMediaError.prototype.code = 0;\n\n/**\n * An optional message that to show with the error. Message is not part of the HTML5\n * video spec but allows for more informative custom errors.\n *\n * @type {String}\n */\nMediaError.prototype.message = '';\n\n/**\n * An optional status code that can be set by plugins to allow even more detail about\n * the error. For example a plugin might provide a specific HTTP status code and an\n * error message for that code. Then when the plugin gets that error this class will\n * know how to display an error message for it. This allows a custom message to show\n * up on the `Player` error overlay.\n *\n * @type {Array}\n */\nMediaError.prototype.status = null;\n\n/**\n * An object containing an error type, as well as other information regarding the error.\n *\n * @typedef {{errorType: string, [key: string]: any}} ErrorMetadata\n */\n\n/**\n * An optional object to give more detail about the error. This can be used to give\n * a higher level of specificity to an error versus the more generic MediaError codes.\n * `metadata` expects an `errorType` string that should align with the values from videojs.Error.\n *\n * @type {ErrorMetadata}\n */\nMediaError.prototype.metadata = null;\n\n/**\n * Errors indexed by the W3C standard. The order **CANNOT CHANGE**! See the\n * specification listed under {@link MediaError} for more information.\n *\n * @enum {array}\n * @readonly\n * @property {string} 0 - MEDIA_ERR_CUSTOM\n * @property {string} 1 - MEDIA_ERR_ABORTED\n * @property {string} 2 - MEDIA_ERR_NETWORK\n * @property {string} 3 - MEDIA_ERR_DECODE\n * @property {string} 4 - MEDIA_ERR_SRC_NOT_SUPPORTED\n * @property {string} 5 - MEDIA_ERR_ENCRYPTED\n */\nMediaError.errorTypes = ['MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED'];\n\n/**\n * The default `MediaError` messages based on the {@link MediaError.errorTypes}.\n *\n * @type {Array}\n * @constant\n */\nMediaError.defaultMessages = {\n 1: 'You aborted the media playback',\n 2: 'A network error caused the media download to fail part-way.',\n 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.',\n 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.',\n 5: 'The media is encrypted and we do not have the keys to decrypt it.'\n};\n\n/**\n * W3C error code for any custom error.\n *\n * @member MediaError#MEDIA_ERR_CUSTOM\n * @constant {number}\n * @default 0\n */\nMediaError.MEDIA_ERR_CUSTOM = 0;\n\n/**\n * W3C error code for any custom error.\n *\n * @member MediaError.MEDIA_ERR_CUSTOM\n * @constant {number}\n * @default 0\n */\nMediaError.prototype.MEDIA_ERR_CUSTOM = 0;\n\n/**\n * W3C error code for media error aborted.\n *\n * @member MediaError#MEDIA_ERR_ABORTED\n * @constant {number}\n * @default 1\n */\nMediaError.MEDIA_ERR_ABORTED = 1;\n\n/**\n * W3C error code for media error aborted.\n *\n * @member MediaError.MEDIA_ERR_ABORTED\n * @constant {number}\n * @default 1\n */\nMediaError.prototype.MEDIA_ERR_ABORTED = 1;\n\n/**\n * W3C error code for any network error.\n *\n * @member MediaError#MEDIA_ERR_NETWORK\n * @constant {number}\n * @default 2\n */\nMediaError.MEDIA_ERR_NETWORK = 2;\n\n/**\n * W3C error code for any network error.\n *\n * @member MediaError.MEDIA_ERR_NETWORK\n * @constant {number}\n * @default 2\n */\nMediaError.prototype.MEDIA_ERR_NETWORK = 2;\n\n/**\n * W3C error code for any decoding error.\n *\n * @member MediaError#MEDIA_ERR_DECODE\n * @constant {number}\n * @default 3\n */\nMediaError.MEDIA_ERR_DECODE = 3;\n\n/**\n * W3C error code for any decoding error.\n *\n * @member MediaError.MEDIA_ERR_DECODE\n * @constant {number}\n * @default 3\n */\nMediaError.prototype.MEDIA_ERR_DECODE = 3;\n\n/**\n * W3C error code for any time that a source is not supported.\n *\n * @member MediaError#MEDIA_ERR_SRC_NOT_SUPPORTED\n * @constant {number}\n * @default 4\n */\nMediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\n/**\n * W3C error code for any time that a source is not supported.\n *\n * @member MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED\n * @constant {number}\n * @default 4\n */\nMediaError.prototype.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\n/**\n * W3C error code for any time that a source is encrypted.\n *\n * @member MediaError#MEDIA_ERR_ENCRYPTED\n * @constant {number}\n * @default 5\n */\nMediaError.MEDIA_ERR_ENCRYPTED = 5;\n\n/**\n * W3C error code for any time that a source is encrypted.\n *\n * @member MediaError.MEDIA_ERR_ENCRYPTED\n * @constant {number}\n * @default 5\n */\nMediaError.prototype.MEDIA_ERR_ENCRYPTED = 5;\n\n/**\n * Returns whether an object is `Promise`-like (i.e. has a `then` method).\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n *\n * @return {boolean}\n * Whether or not the object is `Promise`-like.\n */\nfunction isPromise(value) {\n return value !== undefined && value !== null && typeof value.then === 'function';\n}\n\n/**\n * Silence a Promise-like object.\n *\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n */\nfunction silencePromise(value) {\n if (isPromise(value)) {\n value.then(null, e => {});\n }\n}\n\n/**\n * @file text-track-list-converter.js Utilities for capturing text track state and\n * re-creating tracks based on a capture.\n *\n * @module text-track-list-converter\n */\n\n/** @import Tech from '../tech/tech' */\n\n/**\n * Examine a single {@link TextTrack} and return a JSON-compatible javascript object that\n * represents the {@link TextTrack}'s state.\n *\n * @param {TextTrack} track\n * The text track to query.\n *\n * @return {Object}\n * A serializable javascript representation of the TextTrack.\n * @private\n */\nconst trackToJson_ = function (track) {\n const ret = ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce((acc, prop, i) => {\n if (track[prop]) {\n acc[prop] = track[prop];\n }\n return acc;\n }, {\n cues: track.cues && Array.prototype.map.call(track.cues, function (cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n })\n });\n return ret;\n};\n\n/**\n * Examine a {@link Tech} and return a JSON-compatible javascript array that represents the\n * state of all {@link TextTrack}s currently configured. The return array is compatible with\n * {@link text-track-list-converter:jsonToTextTracks}.\n *\n * @param {Tech} tech\n * The tech object to query\n *\n * @return {Array}\n * A serializable javascript representation of the {@link Tech}s\n * {@link TextTrackList}.\n */\nconst textTracksToJson = function (tech) {\n const trackEls = tech.$$('track');\n const trackObjs = Array.prototype.map.call(trackEls, t => t.track);\n const tracks = Array.prototype.map.call(trackEls, function (trackEl) {\n const json = trackToJson_(trackEl.track);\n if (trackEl.src) {\n json.src = trackEl.src;\n }\n return json;\n });\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function (track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Create a set of remote {@link TextTrack}s on a {@link Tech} based on an array of javascript\n * object {@link TextTrack} representations.\n *\n * @param {Array} json\n * An array of `TextTrack` representation objects, like those that would be\n * produced by `textTracksToJson`.\n *\n * @param {Tech} tech\n * The `Tech` to create the `TextTrack`s on.\n */\nconst jsonToTextTracks = function (json, tech) {\n json.forEach(function (track) {\n const addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach(cue => addedTrack.addCue(cue));\n }\n });\n return tech.textTracks();\n};\nvar textTrackConverter = {\n textTracksToJson,\n jsonToTextTracks,\n trackToJson_\n};\n\n/**\n * @file modal-dialog.js\n */\n\n/** @import Player from './player' */\n/** @import { ContentDescriptor } from './utils/dom' */\n\nconst MODAL_CLASS_NAME = 'vjs-modal-dialog';\n\n/**\n * The `ModalDialog` displays over the video and its controls, which blocks\n * interaction with the player until it is closed.\n *\n * Modal dialogs include a \"Close\" button and will close when that button\n * is activated - or when ESC is pressed anywhere.\n *\n * @extends Component\n */\nclass ModalDialog extends Component$1 {\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {ContentDescriptor} [options.content=undefined]\n * Provide customized content for this modal.\n *\n * @param {string} [options.description]\n * A text description for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.fillAlways=false]\n * Normally, modals are automatically filled only the first time\n * they open. This tells the modal to refresh its content\n * every time it opens.\n *\n * @param {string} [options.label]\n * A text label for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.pauseOnOpen=true]\n * If `true`, playback will will be paused if playing when\n * the modal opens, and resumed when it closes.\n *\n * @param {boolean} [options.temporary=true]\n * If `true`, the modal can only be opened once; it will be\n * disposed as soon as it's closed.\n *\n * @param {boolean} [options.uncloseable=false]\n * If `true`, the user will not be able to close the modal\n * through the UI in the normal ways. Programmatic closing is\n * still possible.\n */\n constructor(player, options) {\n super(player, options);\n this.handleKeyDown_ = e => this.handleKeyDown(e);\n this.close_ = e => this.close(e);\n this.opened_ = this.hasBeenOpened_ = this.hasBeenFilled_ = false;\n this.closeable(!this.options_.uncloseable);\n this.content(this.options_.content);\n\n // Make sure the contentEl is defined AFTER any children are initialized\n // because we only want the contents of the modal in the contentEl\n // (not the UI elements like the close button).\n this.contentEl_ = createEl('div', {\n className: `${MODAL_CLASS_NAME}-content`\n }, {\n role: 'document'\n });\n this.descEl_ = createEl('p', {\n className: `${MODAL_CLASS_NAME}-description vjs-control-text`,\n id: this.el().getAttribute('aria-describedby')\n });\n textContent(this.descEl_, this.description());\n this.el_.appendChild(this.descEl_);\n this.el_.appendChild(this.contentEl_);\n }\n\n /**\n * Create the `ModalDialog`'s DOM element\n *\n * @return {Element}\n * The DOM element that gets created.\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass(),\n tabIndex: -1\n }, {\n 'aria-describedby': `${this.id()}_description`,\n 'aria-hidden': 'true',\n 'aria-label': this.label(),\n 'role': 'dialog',\n 'aria-live': 'polite'\n });\n }\n dispose() {\n this.contentEl_ = null;\n this.descEl_ = null;\n this.previouslyActiveEl_ = null;\n super.dispose();\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n buildCSSClass() {\n return `${MODAL_CLASS_NAME} vjs-hidden ${super.buildCSSClass()}`;\n }\n\n /**\n * Returns the label string for this modal. Primarily used for accessibility.\n *\n * @return {string}\n * the localized or raw label of this modal.\n */\n label() {\n return this.localize(this.options_.label || 'Modal Window');\n }\n\n /**\n * Returns the description string for this modal. Primarily used for\n * accessibility.\n *\n * @return {string}\n * The localized or raw description of this modal.\n */\n description() {\n let desc = this.options_.description || this.localize('This is a modal window.');\n\n // Append a universal closeability message if the modal is closeable.\n if (this.closeable()) {\n desc += ' ' + this.localize('This modal can be closed by pressing the Escape key or activating the close button.');\n }\n return desc;\n }\n\n /**\n * Opens the modal.\n *\n * @fires ModalDialog#beforemodalopen\n * @fires ModalDialog#modalopen\n */\n open() {\n if (this.opened_) {\n if (this.options_.fillAlways) {\n this.fill();\n }\n return;\n }\n const player = this.player();\n\n /**\n * Fired just before a `ModalDialog` is opened.\n *\n * @event ModalDialog#beforemodalopen\n * @type {Event}\n */\n this.trigger('beforemodalopen');\n this.opened_ = true;\n\n // Fill content if the modal has never opened before and\n // never been filled.\n if (this.options_.fillAlways || !this.hasBeenOpened_ && !this.hasBeenFilled_) {\n this.fill();\n }\n\n // If the player was playing, pause it and take note of its previously\n // playing state.\n this.wasPlaying_ = !player.paused();\n if (this.options_.pauseOnOpen && this.wasPlaying_) {\n player.pause();\n }\n this.on('keydown', this.handleKeyDown_);\n\n // Hide controls and note if they were enabled.\n this.hadControls_ = player.controls();\n player.controls(false);\n this.show();\n this.conditionalFocus_();\n this.el().setAttribute('aria-hidden', 'false');\n\n /**\n * Fired just after a `ModalDialog` is opened.\n *\n * @event ModalDialog#modalopen\n * @type {Event}\n */\n this.trigger('modalopen');\n this.hasBeenOpened_ = true;\n }\n\n /**\n * If the `ModalDialog` is currently open or closed.\n *\n * @param {boolean} [value]\n * If given, it will open (`true`) or close (`false`) the modal.\n *\n * @return {boolean}\n * the current open state of the modaldialog\n */\n opened(value) {\n if (typeof value === 'boolean') {\n this[value ? 'open' : 'close']();\n }\n return this.opened_;\n }\n\n /**\n * Closes the modal, does nothing if the `ModalDialog` is\n * not open.\n *\n * @fires ModalDialog#beforemodalclose\n * @fires ModalDialog#modalclose\n */\n close() {\n if (!this.opened_) {\n return;\n }\n const player = this.player();\n\n /**\n * Fired just before a `ModalDialog` is closed.\n *\n * @event ModalDialog#beforemodalclose\n * @type {Event}\n */\n this.trigger('beforemodalclose');\n this.opened_ = false;\n if (this.wasPlaying_ && this.options_.pauseOnOpen) {\n player.play();\n }\n this.off('keydown', this.handleKeyDown_);\n if (this.hadControls_) {\n player.controls(true);\n }\n this.hide();\n this.el().setAttribute('aria-hidden', 'true');\n\n /**\n * Fired just after a `ModalDialog` is closed.\n *\n * @event ModalDialog#modalclose\n * @type {Event}\n *\n * @property {boolean} [bubbles=true]\n */\n this.trigger({\n type: 'modalclose',\n bubbles: true\n });\n this.conditionalBlur_();\n if (this.options_.temporary) {\n this.dispose();\n }\n }\n\n /**\n * Check to see if the `ModalDialog` is closeable via the UI.\n *\n * @param {boolean} [value]\n * If given as a boolean, it will set the `closeable` option.\n *\n * @return {boolean}\n * Returns the final value of the closable option.\n */\n closeable(value) {\n if (typeof value === 'boolean') {\n const closeable = this.closeable_ = !!value;\n let close = this.getChild('closeButton');\n\n // If this is being made closeable and has no close button, add one.\n if (closeable && !close) {\n // The close button should be a child of the modal - not its\n // content element, so temporarily change the content element.\n const temp = this.contentEl_;\n this.contentEl_ = this.el_;\n close = this.addChild('closeButton', {\n controlText: 'Close Modal Dialog'\n });\n this.contentEl_ = temp;\n this.on(close, 'close', this.close_);\n }\n\n // If this is being made uncloseable and has a close button, remove it.\n if (!closeable && close) {\n this.off(close, 'close', this.close_);\n this.removeChild(close);\n close.dispose();\n }\n }\n return this.closeable_;\n }\n\n /**\n * Fill the modal's content element with the modal's \"content\" option.\n * The content element will be emptied before this change takes place.\n */\n fill() {\n this.fillWith(this.content());\n }\n\n /**\n * Fill the modal's content element with arbitrary content.\n * The content element will be emptied before this change takes place.\n *\n * @fires ModalDialog#beforemodalfill\n * @fires ModalDialog#modalfill\n *\n * @param {ContentDescriptor} [content]\n * The same rules apply to this as apply to the `content` option.\n */\n fillWith(content) {\n const contentEl = this.contentEl();\n const parentEl = contentEl.parentNode;\n const nextSiblingEl = contentEl.nextSibling;\n\n /**\n * Fired just before a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#beforemodalfill\n * @type {Event}\n */\n this.trigger('beforemodalfill');\n this.hasBeenFilled_ = true;\n\n // Detach the content element from the DOM before performing\n // manipulation to avoid modifying the live DOM multiple times.\n parentEl.removeChild(contentEl);\n this.empty();\n insertContent(contentEl, content);\n /**\n * Fired just after a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#modalfill\n * @type {Event}\n */\n this.trigger('modalfill');\n\n // Re-inject the re-filled content element.\n if (nextSiblingEl) {\n parentEl.insertBefore(contentEl, nextSiblingEl);\n } else {\n parentEl.appendChild(contentEl);\n }\n\n // make sure that the close button is last in the dialog DOM\n const closeButton = this.getChild('closeButton');\n if (closeButton) {\n parentEl.appendChild(closeButton.el_);\n }\n\n /**\n * Fired after `ModalDialog` is re-filled with content & close button is appended.\n *\n * @event ModalDialog#aftermodalfill\n * @type {Event}\n */\n this.trigger('aftermodalfill');\n }\n\n /**\n * Empties the content element. This happens anytime the modal is filled.\n *\n * @fires ModalDialog#beforemodalempty\n * @fires ModalDialog#modalempty\n */\n empty() {\n /**\n * Fired just before a `ModalDialog` is emptied.\n *\n * @event ModalDialog#beforemodalempty\n * @type {Event}\n */\n this.trigger('beforemodalempty');\n emptyEl(this.contentEl());\n\n /**\n * Fired just after a `ModalDialog` is emptied.\n *\n * @event ModalDialog#modalempty\n * @type {Event}\n */\n this.trigger('modalempty');\n }\n\n /**\n * Gets or sets the modal content, which gets normalized before being\n * rendered into the DOM.\n *\n * This does not update the DOM or fill the modal, but it is called during\n * that process.\n *\n * @param {ContentDescriptor} [value]\n * If defined, sets the internal content value to be used on the\n * next call(s) to `fill`. This value is normalized before being\n * inserted. To \"clear\" the internal content value, pass `null`.\n *\n * @return {ContentDescriptor}\n * The current content of the modal dialog\n */\n content(value) {\n if (typeof value !== 'undefined') {\n this.content_ = value;\n }\n return this.content_;\n }\n\n /**\n * conditionally focus the modal dialog if focus was previously on the player.\n *\n * @private\n */\n conditionalFocus_() {\n const activeEl = document$1.activeElement;\n const playerEl = this.player_.el_;\n this.previouslyActiveEl_ = null;\n if (playerEl.contains(activeEl) || playerEl === activeEl) {\n this.previouslyActiveEl_ = activeEl;\n this.focus();\n }\n }\n\n /**\n * conditionally blur the element and refocus the last focused element\n *\n * @private\n */\n conditionalBlur_() {\n if (this.previouslyActiveEl_) {\n this.previouslyActiveEl_.focus();\n this.previouslyActiveEl_ = null;\n }\n }\n\n /**\n * Keydown handler. Attached when modal is focused.\n *\n * @listens keydown\n */\n handleKeyDown(event) {\n /**\n * Fired a custom keyDown event that bubbles.\n *\n * @event ModalDialog#modalKeydown\n * @type {Event}\n */\n this.trigger({\n type: 'modalKeydown',\n originalEvent: event,\n target: this,\n bubbles: true\n });\n // Do not allow keydowns to reach out of the modal dialog.\n event.stopPropagation();\n if (event.key === 'Escape' && this.closeable()) {\n event.preventDefault();\n this.close();\n return;\n }\n\n // exit early if it isn't a tab key\n if (event.key !== 'Tab') {\n return;\n }\n const focusableEls = this.focusableEls_();\n const activeEl = this.el_.querySelector(':focus');\n let focusIndex;\n for (let i = 0; i < focusableEls.length; i++) {\n if (activeEl === focusableEls[i]) {\n focusIndex = i;\n break;\n }\n }\n if (document$1.activeElement === this.el_) {\n focusIndex = 0;\n }\n if (event.shiftKey && focusIndex === 0) {\n focusableEls[focusableEls.length - 1].focus();\n event.preventDefault();\n } else if (!event.shiftKey && focusIndex === focusableEls.length - 1) {\n focusableEls[0].focus();\n event.preventDefault();\n }\n }\n\n /**\n * get all focusable elements\n *\n * @private\n */\n focusableEls_() {\n const allChildren = this.el_.querySelectorAll('*');\n return Array.prototype.filter.call(allChildren, child => {\n return (child instanceof window$1.HTMLAnchorElement || child instanceof window$1.HTMLAreaElement) && child.hasAttribute('href') || (child instanceof window$1.HTMLInputElement || child instanceof window$1.HTMLSelectElement || child instanceof window$1.HTMLTextAreaElement || child instanceof window$1.HTMLButtonElement) && !child.hasAttribute('disabled') || child instanceof window$1.HTMLIFrameElement || child instanceof window$1.HTMLObjectElement || child instanceof window$1.HTMLEmbedElement || child.hasAttribute('tabindex') && child.getAttribute('tabindex') !== -1 || child.hasAttribute('contenteditable');\n });\n }\n}\n\n/**\n * Default options for `ModalDialog` default options.\n *\n * @type {Object}\n * @private\n */\nModalDialog.prototype.options_ = {\n pauseOnOpen: true,\n temporary: true\n};\nComponent$1.registerComponent('ModalDialog', ModalDialog);\n\n/**\n * @file track-list.js\n */\n\n/** @import Track from './track' */\n\n/**\n * Common functionaliy between {@link TextTrackList}, {@link AudioTrackList}, and\n * {@link VideoTrackList}\n *\n * @extends EventTarget\n */\nclass TrackList extends EventTarget$2 {\n /**\n * Create an instance of this class\n *\n * @param { Track[] } tracks\n * A list of tracks to initialize the list with.\n *\n * @abstract\n */\n constructor(tracks = []) {\n super();\n this.tracks_ = [];\n\n /**\n * @memberof TrackList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n Object.defineProperty(this, 'length', {\n get() {\n return this.tracks_.length;\n }\n });\n for (let i = 0; i < tracks.length; i++) {\n this.addTrack(tracks[i]);\n }\n }\n\n /**\n * Add a {@link Track} to the `TrackList`\n *\n * @param {Track} track\n * The audio, video, or text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n addTrack(track) {\n const index = this.tracks_.length;\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get() {\n return this.tracks_[index];\n }\n });\n }\n\n // Do not add duplicate tracks\n if (this.tracks_.indexOf(track) === -1) {\n this.tracks_.push(track);\n /**\n * Triggered when a track is added to a track list.\n *\n * @event TrackList#addtrack\n * @type {Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n this.trigger({\n track,\n type: 'addtrack',\n target: this\n });\n }\n\n /**\n * Triggered when a track label is changed.\n *\n * @event TrackList#addtrack\n * @type {Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n track.labelchange_ = () => {\n this.trigger({\n track,\n type: 'labelchange',\n target: this\n });\n };\n if (isEvented(track)) {\n track.addEventListener('labelchange', track.labelchange_);\n }\n }\n\n /**\n * Remove a {@link Track} from the `TrackList`\n *\n * @param {Track} rtrack\n * The audio, video, or text track to remove from the list.\n *\n * @fires TrackList#removetrack\n */\n removeTrack(rtrack) {\n let track;\n for (let i = 0, l = this.length; i < l; i++) {\n if (this[i] === rtrack) {\n track = this[i];\n if (track.off) {\n track.off();\n }\n this.tracks_.splice(i, 1);\n break;\n }\n }\n if (!track) {\n return;\n }\n\n /**\n * Triggered when a track is removed from track list.\n *\n * @event TrackList#removetrack\n * @type {Event}\n * @property {Track} track\n * A reference to track that was removed.\n */\n this.trigger({\n track,\n type: 'removetrack',\n target: this\n });\n }\n\n /**\n * Get a Track from the TrackList by a tracks id\n *\n * @param {string} id - the id of the track to get\n * @method getTrackById\n * @return {Track}\n * @private\n */\n getTrackById(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n const track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n return result;\n }\n}\n\n/**\n * Triggered when a different track is selected/enabled.\n *\n * @event TrackList#change\n * @type {Event}\n */\n\n/**\n * Events that can be called with on + eventName. See {@link EventHandler}.\n *\n * @property {Object} TrackList#allowedEvents_\n * @protected\n */\nTrackList.prototype.allowedEvents_ = {\n change: 'change',\n addtrack: 'addtrack',\n removetrack: 'removetrack',\n labelchange: 'labelchange'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (const event in TrackList.prototype.allowedEvents_) {\n TrackList.prototype['on' + event] = null;\n}\n\n/**\n * @file audio-track-list.js\n */\n\n/** @import AudioTrack from './audio-track' */\n\n/**\n * Anywhere we call this function we diverge from the spec\n * as we only support one enabled audiotrack at a time\n *\n * @param {AudioTrackList} list\n * list to work on\n *\n * @param {AudioTrack} track\n * The track to skip\n *\n * @private\n */\nconst disableOthers$1 = function (list, track) {\n for (let i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n }\n // another audio track is enabled, disable it\n list[i].enabled = false;\n }\n};\n\n/**\n * The current list of {@link AudioTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist}\n * @extends TrackList\n */\nclass AudioTrackList extends TrackList {\n /**\n * Create an instance of this class.\n *\n * @param {AudioTrack[]} [tracks=[]]\n * A list of `AudioTrack` to instantiate the list with.\n */\n constructor(tracks = []) {\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (let i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].enabled) {\n disableOthers$1(tracks, tracks[i]);\n break;\n }\n }\n super(tracks);\n this.changing_ = false;\n }\n\n /**\n * Add an {@link AudioTrack} to the `AudioTrackList`.\n *\n * @param {AudioTrack} track\n * The AudioTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n addTrack(track) {\n if (track.enabled) {\n disableOthers$1(this, track);\n }\n super.addTrack(track);\n // native tracks don't have this\n if (!track.addEventListener) {\n return;\n }\n track.enabledChange_ = () => {\n // when we are disabling other tracks (since we don't support\n // more than one track at a time) we will set changing_\n // to true so that we don't trigger additional change events\n if (this.changing_) {\n return;\n }\n this.changing_ = true;\n disableOthers$1(this, track);\n this.changing_ = false;\n this.trigger('change');\n };\n\n /**\n * @listens AudioTrack#enabledchange\n * @fires TrackList#change\n */\n track.addEventListener('enabledchange', track.enabledChange_);\n }\n removeTrack(rtrack) {\n super.removeTrack(rtrack);\n if (rtrack.removeEventListener && rtrack.enabledChange_) {\n rtrack.removeEventListener('enabledchange', rtrack.enabledChange_);\n rtrack.enabledChange_ = null;\n }\n }\n}\n\n/**\n * @file video-track-list.js\n */\n\n/** @import VideoTrack from './video-track' */\n\n/**\n * Un-select all other {@link VideoTrack}s that are selected.\n *\n * @param {VideoTrackList} list\n * list to work on\n *\n * @param {VideoTrack} track\n * The track to skip\n *\n * @private\n */\nconst disableOthers = function (list, track) {\n for (let i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n }\n // another video track is enabled, disable it\n list[i].selected = false;\n }\n};\n\n/**\n * The current list of {@link VideoTrack} for a video.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist}\n * @extends TrackList\n */\nclass VideoTrackList extends TrackList {\n /**\n * Create an instance of this class.\n *\n * @param {VideoTrack[]} [tracks=[]]\n * A list of `VideoTrack` to instantiate the list with.\n */\n constructor(tracks = []) {\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (let i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].selected) {\n disableOthers(tracks, tracks[i]);\n break;\n }\n }\n super(tracks);\n this.changing_ = false;\n\n /**\n * @member {number} VideoTrackList#selectedIndex\n * The current index of the selected {@link VideoTrack`}.\n */\n Object.defineProperty(this, 'selectedIndex', {\n get() {\n for (let i = 0; i < this.length; i++) {\n if (this[i].selected) {\n return i;\n }\n }\n return -1;\n },\n set() {}\n });\n }\n\n /**\n * Add a {@link VideoTrack} to the `VideoTrackList`.\n *\n * @param {VideoTrack} track\n * The VideoTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n addTrack(track) {\n if (track.selected) {\n disableOthers(this, track);\n }\n super.addTrack(track);\n // native tracks don't have this\n if (!track.addEventListener) {\n return;\n }\n track.selectedChange_ = () => {\n if (this.changing_) {\n return;\n }\n this.changing_ = true;\n disableOthers(this, track);\n this.changing_ = false;\n this.trigger('change');\n };\n\n /**\n * @listens VideoTrack#selectedchange\n * @fires TrackList#change\n */\n track.addEventListener('selectedchange', track.selectedChange_);\n }\n removeTrack(rtrack) {\n super.removeTrack(rtrack);\n if (rtrack.removeEventListener && rtrack.selectedChange_) {\n rtrack.removeEventListener('selectedchange', rtrack.selectedChange_);\n rtrack.selectedChange_ = null;\n }\n }\n}\n\n/**\n * @file text-track-list.js\n */\n\n/** @import TextTrack from './text-track' */\n\n/**\n * The current list of {@link TextTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist}\n * @extends TrackList\n */\nclass TextTrackList extends TrackList {\n /**\n * Add a {@link TextTrack} to the `TextTrackList`\n *\n * @param {TextTrack} track\n * The text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n addTrack(track) {\n super.addTrack(track);\n if (!this.queueChange_) {\n this.queueChange_ = () => this.queueTrigger('change');\n }\n if (!this.triggerSelectedlanguagechange) {\n this.triggerSelectedlanguagechange_ = () => this.trigger('selectedlanguagechange');\n }\n\n /**\n * @listens TextTrack#modechange\n * @fires TrackList#change\n */\n track.addEventListener('modechange', this.queueChange_);\n const nonLanguageTextTrackKind = ['metadata', 'chapters'];\n if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) {\n track.addEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n }\n removeTrack(rtrack) {\n super.removeTrack(rtrack);\n\n // manually remove the event handlers we added\n if (rtrack.removeEventListener) {\n if (this.queueChange_) {\n rtrack.removeEventListener('modechange', this.queueChange_);\n }\n if (this.selectedlanguagechange_) {\n rtrack.removeEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n }\n }\n}\n\n/**\n * @file html-track-element-list.js\n */\n\n/**\n * The current list of {@link HtmlTrackElement}s.\n */\nclass HtmlTrackElementList {\n /**\n * Create an instance of this class.\n *\n * @param {HtmlTrackElement[]} [tracks=[]]\n * A list of `HtmlTrackElement` to instantiate the list with.\n */\n constructor(trackElements = []) {\n this.trackElements_ = [];\n\n /**\n * @memberof HtmlTrackElementList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n Object.defineProperty(this, 'length', {\n get() {\n return this.trackElements_.length;\n }\n });\n for (let i = 0, length = trackElements.length; i < length; i++) {\n this.addTrackElement_(trackElements[i]);\n }\n }\n\n /**\n * Add an {@link HtmlTrackElement} to the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to add to the list.\n *\n * @private\n */\n addTrackElement_(trackElement) {\n const index = this.trackElements_.length;\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get() {\n return this.trackElements_[index];\n }\n });\n }\n\n // Do not add duplicate elements\n if (this.trackElements_.indexOf(trackElement) === -1) {\n this.trackElements_.push(trackElement);\n }\n }\n\n /**\n * Get an {@link HtmlTrackElement} from the `HtmlTrackElementList` given an\n * {@link TextTrack}.\n *\n * @param {TextTrack} track\n * The track associated with a track element.\n *\n * @return {HtmlTrackElement|undefined}\n * The track element that was found or undefined.\n *\n * @private\n */\n getTrackElementByTrack_(track) {\n let trackElement_;\n for (let i = 0, length = this.trackElements_.length; i < length; i++) {\n if (track === this.trackElements_[i].track) {\n trackElement_ = this.trackElements_[i];\n break;\n }\n }\n return trackElement_;\n }\n\n /**\n * Remove a {@link HtmlTrackElement} from the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to remove from the list.\n *\n * @private\n */\n removeTrackElement_(trackElement) {\n for (let i = 0, length = this.trackElements_.length; i < length; i++) {\n if (trackElement === this.trackElements_[i]) {\n if (this.trackElements_[i].track && typeof this.trackElements_[i].track.off === 'function') {\n this.trackElements_[i].track.off();\n }\n if (typeof this.trackElements_[i].off === 'function') {\n this.trackElements_[i].off();\n }\n this.trackElements_.splice(i, 1);\n break;\n }\n }\n }\n}\n\n/**\n * @file text-track-cue-list.js\n */\n\n/**\n * @typedef {Object} TextTrackCueList~TextTrackCue\n *\n * @property {string} id\n * The unique id for this text track cue\n *\n * @property {number} startTime\n * The start time for this text track cue\n *\n * @property {number} endTime\n * The end time for this text track cue\n *\n * @property {boolean} pauseOnExit\n * Pause when the end time is reached if true.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcue}\n */\n\n/**\n * A List of TextTrackCues.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist}\n */\nclass TextTrackCueList {\n /**\n * Create an instance of this class..\n *\n * @param {Array} cues\n * A list of cues to be initialized with\n */\n constructor(cues) {\n TextTrackCueList.prototype.setCues_.call(this, cues);\n\n /**\n * @memberof TextTrackCueList\n * @member {number} length\n * The current number of `TextTrackCue`s in the TextTrackCueList.\n * @instance\n */\n Object.defineProperty(this, 'length', {\n get() {\n return this.length_;\n }\n });\n }\n\n /**\n * A setter for cues in this list. Creates getters\n * an an index for the cues.\n *\n * @param {Array} cues\n * An array of cues to set\n *\n * @private\n */\n setCues_(cues) {\n const oldLength = this.length || 0;\n let i = 0;\n const l = cues.length;\n this.cues_ = cues;\n this.length_ = cues.length;\n const defineProp = function (index) {\n if (!('' + index in this)) {\n Object.defineProperty(this, '' + index, {\n get() {\n return this.cues_[index];\n }\n });\n }\n };\n if (oldLength < l) {\n i = oldLength;\n for (; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n }\n\n /**\n * Get a `TextTrackCue` that is currently in the `TextTrackCueList` by id.\n *\n * @param {string} id\n * The id of the cue that should be searched for.\n *\n * @return {TextTrackCueList~TextTrackCue|null}\n * A single cue or null if none was found.\n */\n getCueById(id) {\n let result = null;\n for (let i = 0, l = this.length; i < l; i++) {\n const cue = this[i];\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n return result;\n }\n}\n\n/**\n * @file track-kinds.js\n */\n\n/**\n * All possible `VideoTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-kind\n * @typedef VideoTrack~Kind\n * @enum\n */\nconst VideoTrackKind = {\n alternative: 'alternative',\n captions: 'captions',\n main: 'main',\n sign: 'sign',\n subtitles: 'subtitles',\n commentary: 'commentary'\n};\n\n/**\n * All possible `AudioTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-kind\n * @typedef AudioTrack~Kind\n * @enum\n */\nconst AudioTrackKind = {\n 'alternative': 'alternative',\n 'descriptions': 'descriptions',\n 'main': 'main',\n 'main-desc': 'main-desc',\n 'translation': 'translation',\n 'commentary': 'commentary'\n};\n\n/**\n * All possible `TextTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-texttrack-kind\n * @typedef TextTrack~Kind\n * @enum\n */\nconst TextTrackKind = {\n subtitles: 'subtitles',\n captions: 'captions',\n descriptions: 'descriptions',\n chapters: 'chapters',\n metadata: 'metadata'\n};\n\n/**\n * All possible `TextTrackMode`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n * @typedef TextTrack~Mode\n * @enum\n */\nconst TextTrackMode = {\n disabled: 'disabled',\n hidden: 'hidden',\n showing: 'showing'\n};\n\n/**\n * @file track.js\n */\n\n/**\n * A Track class that contains all of the common functionality for {@link AudioTrack},\n * {@link VideoTrack}, and {@link TextTrack}.\n *\n * > Note: This class should not be used directly\n *\n * @see {@link https://html.spec.whatwg.org/multipage/embedded-content.html}\n * @extends EventTarget\n * @abstract\n */\nclass Track extends EventTarget$2 {\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid kind for the track type you are creating.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @abstract\n */\n constructor(options = {}) {\n super();\n const trackProps = {\n id: options.id || 'vjs_track_' + newGUID(),\n kind: options.kind || '',\n language: options.language || ''\n };\n let label = options.label || '';\n\n /**\n * @memberof Track\n * @member {string} id\n * The id of this track. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} kind\n * The kind of track that this is. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} language\n * The two letter language code for this track. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n\n for (const key in trackProps) {\n Object.defineProperty(this, key, {\n get() {\n return trackProps[key];\n },\n set() {}\n });\n }\n\n /**\n * @memberof Track\n * @member {string} label\n * The label of this track. Cannot be changed after creation.\n * @instance\n *\n * @fires Track#labelchange\n */\n Object.defineProperty(this, 'label', {\n get() {\n return label;\n },\n set(newLabel) {\n if (newLabel !== label) {\n label = newLabel;\n\n /**\n * An event that fires when label changes on this track.\n *\n * > Note: This is not part of the spec!\n *\n * @event Track#labelchange\n * @type {Event}\n */\n this.trigger('labelchange');\n }\n }\n });\n }\n}\n\n/**\n * @file url.js\n * @module url\n */\n\n/**\n * Resolve and parse the elements of a URL.\n *\n * @function\n * @param {string} url\n * The url to parse\n *\n * @return {URL}\n * An object of url details\n */\nconst parseUrl = function (url) {\n return new URL(url, document$1.baseURI);\n};\n\n/**\n * Get absolute version of relative URL.\n *\n * @function\n * @param {string} url\n * URL to make absolute\n *\n * @return {string}\n * Absolute URL\n */\nconst getAbsoluteURL = function (url) {\n return new URL(url, document$1.baseURI).href;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string\n * if passed an invalid path.\n *\n * @function\n * @param {string} path\n * The fileName path like '/path/to/file.mp4'\n *\n * @return {string}\n * The extension in lower case or an empty string if no\n * extension could be found.\n */\nconst getFileExtension = function (path) {\n if (typeof path === 'string') {\n const splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/;\n const pathParts = splitPathRe.exec(path);\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n return '';\n};\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @function\n * @param {string} url\n * The url to check.\n *\n * @param {URL} [winLoc]\n * the domain to check the url against, defaults to window.location\n *\n * @return {boolean}\n * Whether it is a cross domain request or not.\n */\nconst isCrossOrigin = function (url, winLoc = window$1.location) {\n return parseUrl(url).origin !== winLoc.origin;\n};\n\nvar Url = /*#__PURE__*/Object.freeze({\n __proto__: null,\n parseUrl: parseUrl,\n getAbsoluteURL: getAbsoluteURL,\n getFileExtension: getFileExtension,\n isCrossOrigin: isCrossOrigin\n});\n\n/**\n * @file text-track.js\n */\n\n/** @import Tech from '../tech/tech' */\n\n/**\n * Takes a webvtt file contents and parses it into cues\n *\n * @param {string} srcContent\n * webVTT file contents\n *\n * @param {TextTrack} track\n * TextTrack to add cues to. Cues come from the srcContent.\n *\n * @private\n */\nconst parseCues = function (srcContent, track) {\n const parser = new window$1.WebVTT.Parser(window$1, window$1.vttjs, window$1.WebVTT.StringDecoder());\n const errors = [];\n parser.oncue = function (cue) {\n track.addCue(cue);\n };\n parser.onparsingerror = function (error) {\n errors.push(error);\n };\n parser.onflush = function () {\n track.trigger({\n type: 'loadeddata',\n target: track\n });\n };\n parser.parse(srcContent);\n if (errors.length > 0) {\n if (window$1.console && window$1.console.groupCollapsed) {\n window$1.console.groupCollapsed(`Text Track parsing errors for ${track.src}`);\n }\n errors.forEach(error => log$1.error(error));\n if (window$1.console && window$1.console.groupEnd) {\n window$1.console.groupEnd();\n }\n }\n parser.flush();\n};\n\n/**\n * Load a `TextTrack` from a specified url.\n *\n * @param {string} src\n * Url to load track from.\n *\n * @param {TextTrack} track\n * Track to add cues to. Comes from the content at the end of `url`.\n *\n * @private\n */\nconst loadTrack = function (src, track) {\n const opts = {\n uri: src\n };\n const crossOrigin = isCrossOrigin(src);\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n const withCredentials = track.tech_.crossOrigin() === 'use-credentials';\n if (withCredentials) {\n opts.withCredentials = withCredentials;\n }\n XHR(opts, bind_(this, function (err, response, responseBody) {\n if (err) {\n return log$1.error(err, response);\n }\n track.loaded_ = true;\n\n // Make sure that vttjs has loaded, otherwise, wait till it finished loading\n // NOTE: this is only used for the alt/video.novtt.js build\n if (typeof window$1.WebVTT !== 'function') {\n if (track.tech_) {\n // to prevent use before define eslint error, we define loadHandler\n // as a let here\n track.tech_.any(['vttjsloaded', 'vttjserror'], event => {\n if (event.type === 'vttjserror') {\n log$1.error(`vttjs failed to load, stopping trying to process ${track.src}`);\n return;\n }\n return parseCues(responseBody, track);\n });\n }\n } else {\n parseCues(responseBody, track);\n }\n }));\n};\n\n/**\n * A representation of a single `TextTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack}\n * @extends Track\n */\nclass TextTrack extends Track {\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this TextTrack.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * version of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n constructor(options = {}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n const settings = merge$1(options, {\n kind: TextTrackKind[options.kind] || 'subtitles',\n language: options.language || options.srclang || ''\n });\n let mode = TextTrackMode[settings.mode] || 'disabled';\n const default_ = settings.default;\n if (settings.kind === 'metadata' || settings.kind === 'chapters') {\n mode = 'hidden';\n }\n super(settings);\n this.tech_ = settings.tech;\n this.cues_ = [];\n this.activeCues_ = [];\n this.preload_ = this.tech_.preloadTextTracks !== false;\n const cues = new TextTrackCueList(this.cues_);\n const activeCues = new TextTrackCueList(this.activeCues_);\n let changed = false;\n this.timeupdateHandler = bind_(this, function (event = {}) {\n if (this.tech_.isDisposed()) {\n return;\n }\n if (!this.tech_.isReady_) {\n if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n return;\n }\n\n // Accessing this.activeCues for the side-effects of updating itself\n // due to its nature as a getter function. Do not remove or cues will\n // stop updating!\n // Use the setter to prevent deletion from uglify (pure_getters rule)\n this.activeCues = this.activeCues;\n if (changed) {\n this.trigger('cuechange');\n changed = false;\n }\n if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n });\n const disposeHandler = () => {\n this.stopTracking();\n };\n this.tech_.one('dispose', disposeHandler);\n if (mode !== 'disabled') {\n this.startTracking();\n }\n Object.defineProperties(this, {\n /**\n * @memberof TextTrack\n * @member {boolean} default\n * If this track was set to be on or off by default. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n default: {\n get() {\n return default_;\n },\n set() {}\n },\n /**\n * @memberof TextTrack\n * @member {string} mode\n * Set the mode of this TextTrack to a valid {@link TextTrack~Mode}. Will\n * not be set if setting to an invalid mode.\n * @instance\n *\n * @fires TextTrack#modechange\n */\n mode: {\n get() {\n return mode;\n },\n set(newMode) {\n if (!TextTrackMode[newMode]) {\n return;\n }\n if (mode === newMode) {\n return;\n }\n mode = newMode;\n if (!this.preload_ && mode !== 'disabled' && this.cues.length === 0) {\n // On-demand load.\n loadTrack(this.src, this);\n }\n this.stopTracking();\n if (mode !== 'disabled') {\n this.startTracking();\n }\n /**\n * An event that fires when mode changes on this track. This allows\n * the TextTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec!\n *\n * @event TextTrack#modechange\n * @type {Event}\n */\n this.trigger('modechange');\n }\n },\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} cues\n * The text track cue list for this TextTrack.\n * @instance\n */\n cues: {\n get() {\n if (!this.loaded_) {\n return null;\n }\n return cues;\n },\n set() {}\n },\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} activeCues\n * The list text track cues that are currently active for this TextTrack.\n * @instance\n */\n activeCues: {\n get() {\n if (!this.loaded_) {\n return null;\n }\n\n // nothing to do\n if (this.cues.length === 0) {\n return activeCues;\n }\n const ct = this.tech_.currentTime();\n const active = [];\n for (let i = 0, l = this.cues.length; i < l; i++) {\n const cue = this.cues[i];\n if (cue.startTime <= ct && cue.endTime >= ct) {\n active.push(cue);\n }\n }\n changed = false;\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (let i = 0; i < active.length; i++) {\n if (this.activeCues_.indexOf(active[i]) === -1) {\n changed = true;\n }\n }\n }\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n return activeCues;\n },\n // /!\\ Keep this setter empty (see the timeupdate handler above)\n set() {}\n }\n });\n if (settings.src) {\n this.src = settings.src;\n if (!this.preload_) {\n // Tracks will load on-demand.\n // Act like we're loaded for other purposes.\n this.loaded_ = true;\n }\n if (this.preload_ || settings.kind !== 'subtitles' && settings.kind !== 'captions') {\n loadTrack(this.src, this);\n }\n } else {\n this.loaded_ = true;\n }\n }\n startTracking() {\n // More precise cues based on requestVideoFrameCallback with a requestAnimationFram fallback\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n // Also listen to timeupdate in case rVFC/rAF stops (window in background, audio in video el)\n this.tech_.on('timeupdate', this.timeupdateHandler);\n }\n stopTracking() {\n if (this.rvf_) {\n this.tech_.cancelVideoFrameCallback(this.rvf_);\n this.rvf_ = undefined;\n }\n this.tech_.off('timeupdate', this.timeupdateHandler);\n }\n\n /**\n * Add a cue to the internal list of cues.\n *\n * @param {TextTrack~Cue} cue\n * The cue to add to our internal list\n */\n addCue(originalCue) {\n let cue = originalCue;\n\n // Testing if the cue is a VTTCue in a way that survives minification\n if (!('getCueAsHTML' in cue)) {\n cue = new window$1.vttjs.VTTCue(originalCue.startTime, originalCue.endTime, originalCue.text);\n for (const prop in originalCue) {\n if (!(prop in cue)) {\n cue[prop] = originalCue[prop];\n }\n }\n\n // make sure that `id` is copied over\n cue.id = originalCue.id;\n cue.originalCue_ = originalCue;\n }\n const tracks = this.tech_.textTracks();\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n this.cues_.push(cue);\n this.cues.setCues_(this.cues_);\n }\n\n /**\n * Remove a cue from our internal list\n *\n * @param {TextTrack~Cue} removeCue\n * The cue to remove from our internal list\n */\n removeCue(removeCue) {\n let i = this.cues_.length;\n while (i--) {\n const cue = this.cues_[i];\n if (cue === removeCue || cue.originalCue_ && cue.originalCue_ === removeCue) {\n this.cues_.splice(i, 1);\n this.cues.setCues_(this.cues_);\n break;\n }\n }\n }\n}\n\n/**\n * cuechange - One or more cues in the track have become active or stopped being active.\n *\n * @protected\n */\nTextTrack.prototype.allowedEvents_ = {\n cuechange: 'cuechange'\n};\n\n/**\n * A representation of a single `AudioTrack`. If it is part of an {@link AudioTrackList}\n * only one `AudioTrack` in the list will be enabled at a time.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotrack}\n * @extends Track\n */\nclass AudioTrack extends Track {\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {AudioTrack~Kind} [options.kind='']\n * A valid audio track kind\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.enabled]\n * If this track is the one that is currently playing. If this track is part of\n * an {@link AudioTrackList}, only one {@link AudioTrack} will be enabled.\n */\n constructor(options = {}) {\n const settings = merge$1(options, {\n kind: AudioTrackKind[options.kind] || ''\n });\n super(settings);\n let enabled = false;\n\n /**\n * @memberof AudioTrack\n * @member {boolean} enabled\n * If this `AudioTrack` is enabled or not. When setting this will\n * fire {@link AudioTrack#enabledchange} if the state of enabled is changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n Object.defineProperty(this, 'enabled', {\n get() {\n return enabled;\n },\n set(newEnabled) {\n // an invalid or unchanged value\n if (typeof newEnabled !== 'boolean' || newEnabled === enabled) {\n return;\n }\n enabled = newEnabled;\n\n /**\n * An event that fires when enabled changes on this track. This allows\n * the AudioTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event AudioTrack#enabledchange\n * @type {Event}\n */\n this.trigger('enabledchange');\n }\n });\n\n // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n if (settings.enabled) {\n this.enabled = settings.enabled;\n }\n this.loaded_ = true;\n }\n}\n\n/**\n * A representation of a single `VideoTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotrack}\n * @extends Track\n */\nclass VideoTrack extends Track {\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid {@link VideoTrack~Kind}\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.selected]\n * If this track is the one that is currently playing.\n */\n constructor(options = {}) {\n const settings = merge$1(options, {\n kind: VideoTrackKind[options.kind] || ''\n });\n super(settings);\n let selected = false;\n\n /**\n * @memberof VideoTrack\n * @member {boolean} selected\n * If this `VideoTrack` is selected or not. When setting this will\n * fire {@link VideoTrack#selectedchange} if the state of selected changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n Object.defineProperty(this, 'selected', {\n get() {\n return selected;\n },\n set(newSelected) {\n // an invalid or unchanged value\n if (typeof newSelected !== 'boolean' || newSelected === selected) {\n return;\n }\n selected = newSelected;\n\n /**\n * An event that fires when selected changes on this track. This allows\n * the VideoTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event VideoTrack#selectedchange\n * @type {Event}\n */\n this.trigger('selectedchange');\n }\n });\n\n // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n if (settings.selected) {\n this.selected = settings.selected;\n }\n }\n}\n\n/**\n * @file html-track-element.js\n */\n\n/** @import Tech from '../tech/tech' */\n\n/**\n * A single track represented in the DOM.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement}\n * @extends EventTarget\n */\nclass HTMLTrackElement extends EventTarget$2 {\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this HTMLTrackElement.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * version of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n constructor(options = {}) {\n super();\n let readyState;\n const track = new TextTrack(options);\n this.kind = track.kind;\n this.src = track.src;\n this.srclang = track.language;\n this.label = track.label;\n this.default = track.default;\n Object.defineProperties(this, {\n /**\n * @memberof HTMLTrackElement\n * @member {HTMLTrackElement~ReadyState} readyState\n * The current ready state of the track element.\n * @instance\n */\n readyState: {\n get() {\n return readyState;\n }\n },\n /**\n * @memberof HTMLTrackElement\n * @member {TextTrack} track\n * The underlying TextTrack object.\n * @instance\n *\n */\n track: {\n get() {\n return track;\n }\n }\n });\n readyState = HTMLTrackElement.NONE;\n\n /**\n * @listens TextTrack#loadeddata\n * @fires HTMLTrackElement#load\n */\n track.addEventListener('loadeddata', () => {\n readyState = HTMLTrackElement.LOADED;\n this.trigger({\n type: 'load',\n target: this\n });\n });\n }\n}\n\n/**\n * @protected\n */\nHTMLTrackElement.prototype.allowedEvents_ = {\n load: 'load'\n};\n\n/**\n * The text track not loaded state.\n *\n * @type {number}\n * @static\n */\nHTMLTrackElement.NONE = 0;\n\n/**\n * The text track loading state.\n *\n * @type {number}\n * @static\n */\nHTMLTrackElement.LOADING = 1;\n\n/**\n * The text track loaded state.\n *\n * @type {number}\n * @static\n */\nHTMLTrackElement.LOADED = 2;\n\n/**\n * The text track failed to load state.\n *\n * @type {number}\n * @static\n */\nHTMLTrackElement.ERROR = 3;\n\n/*\n * This file contains all track properties that are used in\n * player.js, tech.js, html5.js and possibly other techs in the future.\n */\n\nconst NORMAL = {\n audio: {\n ListClass: AudioTrackList,\n TrackClass: AudioTrack,\n capitalName: 'Audio'\n },\n video: {\n ListClass: VideoTrackList,\n TrackClass: VideoTrack,\n capitalName: 'Video'\n },\n text: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'Text'\n }\n};\nObject.keys(NORMAL).forEach(function (type) {\n NORMAL[type].getterName = `${type}Tracks`;\n NORMAL[type].privateName = `${type}Tracks_`;\n});\nconst REMOTE = {\n remoteText: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'RemoteText',\n getterName: 'remoteTextTracks',\n privateName: 'remoteTextTracks_'\n },\n remoteTextEl: {\n ListClass: HtmlTrackElementList,\n TrackClass: HTMLTrackElement,\n capitalName: 'RemoteTextTrackEls',\n getterName: 'remoteTextTrackEls',\n privateName: 'remoteTextTrackEls_'\n }\n};\nconst ALL = Object.assign({}, NORMAL, REMOTE);\nREMOTE.names = Object.keys(REMOTE);\nNORMAL.names = Object.keys(NORMAL);\nALL.names = [].concat(REMOTE.names).concat(NORMAL.names);\n\n/**\n * @file tech.js\n */\n\n/** @import { TimeRange } from '../utils/time' */\n\n/**\n * An Object containing a structure like: `{src: 'url', type: 'mimetype'}` or string\n * that just contains the src url alone.\n * * `var SourceObject = {src: 'http://ex.com/video.mp4', type: 'video/mp4'};`\n * `var SourceString = 'http://example.com/some-video.mp4';`\n *\n * @typedef {Object|string} SourceObject\n *\n * @property {string} src\n * The url to the source\n *\n * @property {string} type\n * The mime type of the source\n */\n\n/**\n * A function used by {@link Tech} to create a new {@link TextTrack}.\n *\n * @private\n *\n * @param {Tech} self\n * An instance of the Tech class.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @param {Object} [options={}]\n * An object with additional text track options\n *\n * @return {TextTrack}\n * The text track that was created.\n */\nfunction createTrackHelper(self, kind, label, language, options = {}) {\n const tracks = self.textTracks();\n options.kind = kind;\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n const track = new ALL.text.TrackClass(options);\n tracks.addTrack(track);\n return track;\n}\n\n/**\n * This is the base class for media playback technology controllers, such as\n * {@link HTML5}\n *\n * @extends Component\n */\nclass Tech extends Component$1 {\n /**\n * Create an instance of this Tech.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Function} [ready]\n * Callback function to call when the `HTML5` Tech is ready.\n */\n constructor(options = {}, ready = function () {}) {\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n super(null, options, ready);\n this.onDurationChange_ = e => this.onDurationChange(e);\n this.trackProgress_ = e => this.trackProgress(e);\n this.trackCurrentTime_ = e => this.trackCurrentTime(e);\n this.stopTrackingCurrentTime_ = e => this.stopTrackingCurrentTime(e);\n this.disposeSourceHandler_ = e => this.disposeSourceHandler(e);\n this.queuedHanders_ = new Set();\n\n // keep track of whether the current source has played at all to\n // implement a very limited played()\n this.hasStarted_ = false;\n this.on('playing', function () {\n this.hasStarted_ = true;\n });\n this.on('loadstart', function () {\n this.hasStarted_ = false;\n });\n ALL.names.forEach(name => {\n const props = ALL[name];\n if (options && options[props.getterName]) {\n this[props.privateName] = options[props.getterName];\n }\n });\n\n // Manually track progress in cases where the browser/tech doesn't report it.\n if (!this.featuresProgressEvents) {\n this.manualProgressOn();\n }\n\n // Manually track timeupdates in cases where the browser/tech doesn't report it.\n if (!this.featuresTimeupdateEvents) {\n this.manualTimeUpdatesOn();\n }\n ['Text', 'Audio', 'Video'].forEach(track => {\n if (options[`native${track}Tracks`] === false) {\n this[`featuresNative${track}Tracks`] = false;\n }\n });\n if (options.nativeCaptions === false || options.nativeTextTracks === false) {\n this.featuresNativeTextTracks = false;\n } else if (options.nativeCaptions === true || options.nativeTextTracks === true) {\n this.featuresNativeTextTracks = true;\n }\n if (!this.featuresNativeTextTracks) {\n this.emulateTextTracks();\n }\n this.preloadTextTracks = options.preloadTextTracks !== false;\n this.autoRemoteTextTracks_ = new ALL.text.ListClass();\n this.initTrackListeners();\n\n // Turn on component tap events only if not using native controls\n if (!options.nativeControlsForTouch) {\n this.emitTapEvents();\n }\n if (this.constructor) {\n this.name_ = this.constructor.name || 'Unknown Tech';\n }\n }\n\n /**\n * A special function to trigger source set in a way that will allow player\n * to re-trigger if the player or tech are not ready yet.\n *\n * @fires Tech#sourceset\n * @param {string} src The source string at the time of the source changing.\n */\n triggerSourceset(src) {\n if (!this.isReady_) {\n // on initial ready we have to trigger source set\n // 1ms after ready so that player can watch for it.\n this.one('ready', () => this.setTimeout(() => this.triggerSourceset(src), 1));\n }\n\n /**\n * Fired when the source is set on the tech causing the media element\n * to reload.\n *\n * @see {@link Player#event:sourceset}\n * @event Tech#sourceset\n * @type {Event}\n */\n this.trigger({\n src,\n type: 'sourceset'\n });\n }\n\n /* Fallbacks for unsupported event types\n ================================================================================ */\n\n /**\n * Polyfill the `progress` event for browsers that don't support it natively.\n *\n * @see {@link Tech#trackProgress}\n */\n manualProgressOn() {\n this.on('durationchange', this.onDurationChange_);\n this.manualProgress = true;\n\n // Trigger progress watching when a source begins loading\n this.one('ready', this.trackProgress_);\n }\n\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n */\n manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n this.off('durationchange', this.onDurationChange_);\n }\n\n /**\n * This is used to trigger a `progress` event when the buffered percent changes. It\n * sets an interval function that will be called every 500 milliseconds to check if the\n * buffer end percent has changed.\n *\n * > This function is called by {@link Tech#manualProgressOn}\n *\n * @param {Event} event\n * The `ready` event that caused this to run.\n *\n * @listens Tech#ready\n * @fires Tech#progress\n */\n trackProgress(event) {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(bind_(this, function () {\n // Don't trigger unless buffered amount is greater than last time\n\n const numBufferedPercent = this.bufferedPercent();\n if (this.bufferedPercent_ !== numBufferedPercent) {\n /**\n * See {@link Player#progress}\n *\n * @event Tech#progress\n * @type {Event}\n */\n this.trigger('progress');\n }\n this.bufferedPercent_ = numBufferedPercent;\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n\n /**\n * Update our internal duration on a `durationchange` event by calling\n * {@link Tech#duration}.\n *\n * @param {Event} event\n * The `durationchange` event that caused this to run.\n *\n * @listens Tech#durationchange\n */\n onDurationChange(event) {\n this.duration_ = this.duration();\n }\n\n /**\n * Get and create a `TimeRange` object for buffering.\n *\n * @return {TimeRange}\n * The time range object that was created.\n */\n buffered() {\n return createTimeRanges$1(0, 0);\n }\n\n /**\n * Get the percentage of the current video that is currently buffered.\n *\n * @return {number}\n * A number from 0 to 1 that represents the decimal percentage of the\n * video that is buffered.\n *\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n * Stop manually tracking progress events by clearing the interval that was set in\n * {@link Tech#trackProgress}.\n */\n stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n\n /**\n * Polyfill the `timeupdate` event for browsers that don't support it.\n *\n * @see {@link Tech#trackCurrentTime}\n */\n manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n this.on('play', this.trackCurrentTime_);\n this.on('pause', this.stopTrackingCurrentTime_);\n }\n\n /**\n * Turn off the polyfill for `timeupdate` events that was created in\n * {@link Tech#manualTimeUpdatesOn}\n */\n manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime_);\n this.off('pause', this.stopTrackingCurrentTime_);\n }\n\n /**\n * Sets up an interval function to track current time and trigger `timeupdate` every\n * 250 milliseconds.\n *\n * @listens Tech#play\n * @triggers Tech#timeupdate\n */\n trackCurrentTime() {\n if (this.currentTimeInterval) {\n this.stopTrackingCurrentTime();\n }\n this.currentTimeInterval = this.setInterval(function () {\n /**\n * Triggered at an interval of 250ms to indicated that time is passing in the video.\n *\n * @event Tech#timeupdate\n * @type {Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n\n // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }, 250);\n }\n\n /**\n * Stop the interval function created in {@link Tech#trackCurrentTime} so that the\n * `timeupdate` event is no longer triggered.\n *\n * @listens {Tech#pause}\n */\n stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval);\n\n // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n\n /**\n * Turn off all event polyfills, clear the `Tech`s {@link AudioTrackList},\n * {@link VideoTrackList}, and {@link TextTrackList}, and dispose of this Tech.\n *\n * @fires Component#dispose\n */\n dispose() {\n // clear out all tracks because we can't reuse them between techs\n this.clearTracks(NORMAL.names);\n\n // Turn off any manual progress or timeupdate tracking\n if (this.manualProgress) {\n this.manualProgressOff();\n }\n if (this.manualTimeUpdates) {\n this.manualTimeUpdatesOff();\n }\n super.dispose();\n }\n\n /**\n * Clear out a single `TrackList` or an array of `TrackLists` given their names.\n *\n * > Note: Techs without source handlers should call this between sources for `video`\n * & `audio` tracks. You don't want to use them between tracks!\n *\n * @param {string[]|string} types\n * TrackList names to clear, valid names are `video`, `audio`, and\n * `text`.\n */\n clearTracks(types) {\n types = [].concat(types);\n // clear out all tracks because we can't reuse them between techs\n types.forEach(type => {\n const list = this[`${type}Tracks`]() || [];\n let i = list.length;\n while (i--) {\n const track = list[i];\n if (type === 'text') {\n this.removeRemoteTextTrack(track);\n }\n list.removeTrack(track);\n }\n });\n }\n\n /**\n * Remove any TextTracks added via addRemoteTextTrack that are\n * flagged for automatic garbage collection\n */\n cleanupAutoTextTracks() {\n const list = this.autoRemoteTextTracks_ || [];\n let i = list.length;\n while (i--) {\n const track = list[i];\n this.removeRemoteTextTrack(track);\n }\n }\n\n /**\n * Reset the tech, which will removes all sources and reset the internal readyState.\n *\n * @abstract\n */\n reset() {}\n\n /**\n * Get the value of `crossOrigin` from the tech.\n *\n * @abstract\n *\n * @see {Html5#crossOrigin}\n */\n crossOrigin() {}\n\n /**\n * Set the value of `crossOrigin` on the tech.\n *\n * @abstract\n *\n * @param {string} crossOrigin the crossOrigin value\n * @see {Html5#setCrossOrigin}\n */\n setCrossOrigin() {}\n\n /**\n * Get or set an error on the Tech.\n *\n * @param {MediaError} [err]\n * Error to set on the Tech\n *\n * @return {MediaError|null}\n * The current error object on the tech, or null if there isn't one.\n */\n error(err) {\n if (err !== undefined) {\n this.error_ = new MediaError(err);\n this.trigger('error');\n }\n return this.error_;\n }\n\n /**\n * Returns the `TimeRange`s that have been played through for the current source.\n *\n * > NOTE: This implementation is incomplete. It does not track the played `TimeRange`.\n * It only checks whether the source has played at all or not.\n *\n * @return {TimeRange}\n * - A single time range if this video has played\n * - An empty set of ranges if not.\n */\n played() {\n if (this.hasStarted_) {\n return createTimeRanges$1(0, 0);\n }\n return createTimeRanges$1();\n }\n\n /**\n * Start playback\n *\n * @abstract\n *\n * @see {Html5#play}\n */\n play() {}\n\n /**\n * Set whether we are scrubbing or not\n *\n * @abstract\n * @param {boolean} _isScrubbing\n * - true for we are currently scrubbing\n * - false for we are no longer scrubbing\n *\n * @see {Html5#setScrubbing}\n */\n setScrubbing(_isScrubbing) {}\n\n /**\n * Get whether we are scrubbing or not\n *\n * @abstract\n *\n * @see {Html5#scrubbing}\n */\n scrubbing() {}\n\n /**\n * Causes a manual time update to occur if {@link Tech#manualTimeUpdatesOn} was\n * previously called.\n *\n * @param {number} _seconds\n * Set the current time of the media to this.\n * @fires Tech#timeupdate\n */\n setCurrentTime(_seconds) {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) {\n /**\n * A manual `timeupdate` event.\n *\n * @event Tech#timeupdate\n * @type {Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n }\n\n /**\n * Turn on listeners for {@link VideoTrackList}, {@link {AudioTrackList}, and\n * {@link TextTrackList} events.\n *\n * This adds {@link EventTarget~EventListeners} for `addtrack`, and `removetrack`.\n *\n * @fires Tech#audiotrackchange\n * @fires Tech#videotrackchange\n * @fires Tech#texttrackchange\n */\n initTrackListeners() {\n /**\n * Triggered when tracks are added or removed on the Tech {@link AudioTrackList}\n *\n * @event Tech#audiotrackchange\n * @type {Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link VideoTrackList}\n *\n * @event Tech#videotrackchange\n * @type {Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link TextTrackList}\n *\n * @event Tech#texttrackchange\n * @type {Event}\n */\n NORMAL.names.forEach(name => {\n const props = NORMAL[name];\n const trackListChanges = () => {\n this.trigger(`${name}trackchange`);\n };\n const tracks = this[props.getterName]();\n tracks.addEventListener('removetrack', trackListChanges);\n tracks.addEventListener('addtrack', trackListChanges);\n this.on('dispose', () => {\n tracks.removeEventListener('removetrack', trackListChanges);\n tracks.removeEventListener('addtrack', trackListChanges);\n });\n });\n }\n\n /**\n * Emulate TextTracks using vtt.js if necessary\n *\n * @fires Tech#vttjsloaded\n * @fires Tech#vttjserror\n */\n addWebVttScript_() {\n if (window$1.WebVTT) {\n return;\n }\n\n // Initially, Tech.el_ is a child of a dummy-div wait until the Component system\n // signals that the Tech is ready at which point Tech.el_ is part of the DOM\n // before inserting the WebVTT script\n if (document$1.body.contains(this.el())) {\n // load via require if available and vtt.js script location was not passed in\n // as an option. novtt builds will turn the above require call into an empty object\n // which will cause this if check to always fail.\n if (!this.options_['vtt.js'] && isPlain(vtt) && Object.keys(vtt).length > 0) {\n this.trigger('vttjsloaded');\n return;\n }\n\n // load vtt.js via the script location option or the cdn of no location was\n // passed in\n const script = document$1.createElement('script');\n script.src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js';\n script.onload = () => {\n /**\n * Fired when vtt.js is loaded.\n *\n * @event Tech#vttjsloaded\n * @type {Event}\n */\n this.trigger('vttjsloaded');\n };\n script.onerror = () => {\n /**\n * Fired when vtt.js was not loaded due to an error\n *\n * @event Tech#vttjsloaded\n * @type {Event}\n */\n this.trigger('vttjserror');\n };\n this.on('dispose', () => {\n script.onload = null;\n script.onerror = null;\n });\n // but have not loaded yet and we set it to true before the inject so that\n // we don't overwrite the injected window.WebVTT if it loads right away\n window$1.WebVTT = true;\n this.el().parentNode.appendChild(script);\n } else {\n this.ready(this.addWebVttScript_);\n }\n }\n\n /**\n * Emulate texttracks\n *\n */\n emulateTextTracks() {\n const tracks = this.textTracks();\n const remoteTracks = this.remoteTextTracks();\n const handleAddTrack = e => tracks.addTrack(e.track);\n const handleRemoveTrack = e => tracks.removeTrack(e.track);\n remoteTracks.on('addtrack', handleAddTrack);\n remoteTracks.on('removetrack', handleRemoveTrack);\n this.addWebVttScript_();\n const updateDisplay = () => this.trigger('texttrackchange');\n const textTracksChanges = () => {\n updateDisplay();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n };\n textTracksChanges();\n tracks.addEventListener('change', textTracksChanges);\n tracks.addEventListener('addtrack', textTracksChanges);\n tracks.addEventListener('removetrack', textTracksChanges);\n this.on('dispose', function () {\n remoteTracks.off('addtrack', handleAddTrack);\n remoteTracks.off('removetrack', handleRemoveTrack);\n tracks.removeEventListener('change', textTracksChanges);\n tracks.removeEventListener('addtrack', textTracksChanges);\n tracks.removeEventListener('removetrack', textTracksChanges);\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n }\n });\n }\n\n /**\n * Create and returns a remote {@link TextTrack} object.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @return {TextTrack}\n * The TextTrack that gets created.\n */\n addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n return createTrackHelper(this, kind, label, language);\n }\n\n /**\n * Create an emulated TextTrack for use by addRemoteTextTrack\n *\n * This is intended to be overridden by classes that inherit from\n * Tech in order to create native or custom TextTracks.\n *\n * @param {Object} options\n * The object should contain the options to initialize the TextTrack with.\n *\n * @param {string} [options.kind]\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata).\n *\n * @param {string} [options.label].\n * Label to identify the text track\n *\n * @param {string} [options.language]\n * Two letter language abbreviation.\n *\n * @return {HTMLTrackElement}\n * The track element that gets created.\n */\n createRemoteTextTrack(options) {\n const track = merge$1(options, {\n tech: this\n });\n return new REMOTE.remoteTextEl.TrackClass(track);\n }\n\n /**\n * Creates a remote text track object and returns an html track element.\n *\n * > Note: This can be an emulated {@link HTMLTrackElement} or a native one.\n *\n * @param {Object} options\n * See {@link Tech#createRemoteTextTrack} for more detailed properties.\n *\n * @param {boolean} [manualCleanup=false]\n * - When false: the TextTrack will be automatically removed from the video\n * element whenever the source changes\n * - When True: The TextTrack will have to be cleaned up manually\n *\n * @return {HTMLTrackElement}\n * An Html Track Element.\n *\n */\n addRemoteTextTrack(options = {}, manualCleanup) {\n const htmlTrackElement = this.createRemoteTextTrack(options);\n if (typeof manualCleanup !== 'boolean') {\n manualCleanup = false;\n }\n\n // store HTMLTrackElement and TextTrack to remote list\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack(htmlTrackElement.track);\n if (manualCleanup === false) {\n // create the TextTrackList if it doesn't exist\n this.ready(() => this.autoRemoteTextTracks_.addTrack(htmlTrackElement.track));\n }\n return htmlTrackElement;\n }\n\n /**\n * Remove a remote text track from the remote `TextTrackList`.\n *\n * @param {TextTrack} track\n * `TextTrack` to remove from the `TextTrackList`\n */\n removeRemoteTextTrack(track) {\n const trackElement = this.remoteTextTrackEls().getTrackElementByTrack_(track);\n\n // remove HTMLTrackElement and TextTrack from remote list\n this.remoteTextTrackEls().removeTrackElement_(trackElement);\n this.remoteTextTracks().removeTrack(track);\n this.autoRemoteTextTracks_.removeTrack(track);\n }\n\n /**\n * Gets available media playback quality metrics as specified by the W3C's Media\n * Playback Quality API.\n *\n * @see [Spec]{@link https://wicg.github.io/media-playback-quality}\n *\n * @return {Object}\n * An object with supported media playback quality metrics\n *\n * @abstract\n */\n getVideoPlaybackQuality() {\n return {};\n }\n\n /**\n * Attempt to create a floating video window always on top of other windows\n * so that users may continue consuming media while they interact with other\n * content sites, or applications on their device.\n *\n * @see [Spec]{@link https://wicg.github.io/picture-in-picture}\n *\n * @return {Promise|undefined}\n * A promise with a Picture-in-Picture window if the browser supports\n * Promises (or one was passed in as an option). It returns undefined\n * otherwise.\n *\n * @abstract\n */\n requestPictureInPicture() {\n return Promise.reject();\n }\n\n /**\n * A method to check for the value of the 'disablePictureInPicture'