{"version":3,"sources":["webpack:///./node_modules/es-abstract/es5.js","webpack:///./node_modules/function-bind/index.js","webpack:///./node_modules/has-symbols/shams.js","webpack:///./node_modules/string.prototype.trim/polyfill.js","webpack:///./node_modules/tsml/tsml.js","webpack:///./node_modules/es-abstract/helpers/isNaN.js","webpack:///./node_modules/is-callable/index.js","webpack:///./node_modules/es-abstract/helpers/callBound.js","webpack:///./node_modules/videojs-vtt.js/lib/browser-index.js","webpack:///./node_modules/es-to-primitive/es5.js","webpack:///./node_modules/video.js/dist/video.cjs.js","webpack:///./node_modules/es-abstract/helpers/callBind.js","webpack:///./node_modules/es-to-primitive/helpers/isPrimitive.js","webpack:///./node_modules/has-symbols/index.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./node_modules/string.prototype.trim/implementation.js","webpack:///./node_modules/es-abstract/helpers/sign.js","webpack:///./node_modules/parse-headers/parse-headers.js","webpack:///./node_modules/video.js/node_modules/global/window.js","webpack:///./node_modules/function-bind/implementation.js","webpack:///./node_modules/is-function/index.js","webpack:///./node_modules/safe-json-parse/tuple.js","webpack:///./node_modules/has/src/index.js","webpack:///./node_modules/videojs-vtt.js/lib/vttcue.js","webpack:///./node_modules/object-keys/implementation.js","webpack:///./node_modules/string.prototype.trim/shim.js","webpack:///./node_modules/es-abstract/helpers/isPrefixOf.js","webpack:///./node_modules/es-abstract/helpers/mod.js","webpack:///./node_modules/global/window.js","webpack:///./node_modules/es-abstract/helpers/assertRecord.js","webpack:///./node_modules/es-abstract/helpers/isFinite.js","webpack:///./node_modules/string.prototype.trim/index.js","webpack:///./node_modules/video.js/node_modules/global/document.js","webpack:///./node_modules/for-each/index.js","webpack:///./node_modules/videojs-vtt.js/lib/vtt.js","webpack:///./node_modules/object-keys/isArguments.js","webpack:///./node_modules/object-keys/index.js","webpack:///./node_modules/vue-video-player/dist/vue-video-player.js","webpack:///./node_modules/es-abstract/GetIntrinsic.js","webpack:///./node_modules/xhr/node_modules/global/window.js","webpack:///./node_modules/xhr/index.js","webpack:///./node_modules/define-properties/index.js","webpack:///./node_modules/videojs-vtt.js/lib/vttregion.js","webpack:///./node_modules/es-abstract/helpers/isPropertyDescriptor.js"],"names":["GetIntrinsic","$Object","$EvalError","$TypeError","$String","$Date","$Number","$floor","$DateUTC","$abs","assertRecord","isPropertyDescriptor","$isNaN","$isFinite","sign","mod","isPrefixOf","callBound","IsCallable","toPrimitive","has","$getUTCFullYear","HoursPerDay","MinutesPerHour","SecondsPerMinute","msPerSecond","msPerMinute","msPerHour","msPerDay","ES5","ToPrimitive","ToBoolean","value","ToNumber","ToInteger","number","this","Math","floor","abs","ToInt32","x","ToUint32","ToUint16","posInt","ToString","ToObject","CheckObjectCoercible","optMessage","SameValue","y","Type","IsPropertyDescriptor","Desc","IsAccessorDescriptor","IsDataDescriptor","IsGenericDescriptor","FromPropertyDescriptor","writable","enumerable","configurable","get","set","ToPropertyDescriptor","Obj","desc","getter","TypeError","setter","xType","yType","LeftFirst","px","py","bothStrings","nx","ny","Infinity","msFromTime","t","SecFromTime","MinFromTime","HourFromTime","Day","TimeWithinDay","DayFromYear","TimeFromYear","YearFromTime","WeekDay","DaysInYear","InLeapYear","days","DayWithinYear","MonthFromTime","day","leap","DateFromTime","m","d","MakeDay","year","month","date","NaN","dt","ym","mn","MakeDate","time","MakeTime","hour","min","sec","ms","h","s","milli","TimeClip","modulo","module","exports","implementation","Function","prototype","bind","Symbol","Object","getOwnPropertySymbols","iterator","obj","sym","symObj","toString","call","symVal","keys","length","getOwnPropertyNames","syms","propertyIsEnumerable","getOwnPropertyDescriptor","descriptor","zeroWidthSpace","String","trim","clean","replace","sa","i","arguments","Number","isNaN","a","fnToStr","constructorRegex","isES6ClassFn","fnStr","test","e","tryFunctionObject","toStr","fnClass","genClass","hasToStringTag","toStringTag","strClass","callBind","$indexOf","name","allowMissing","intrinsic","window","vttjs","WebVTT","VTTCue","VTTRegion","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","shim","restore","isPrimitive","isCallable","ES5internalSlots","O","actualHint","methods","input","_interopDefault","ex","document","tsml","safeParseTuple","xhr","vtt","version","USER_AGENT","navigator","userAgent","webkitVersionMap","exec","appleWebkitVersion","parseFloat","pop","IS_IPAD","IS_IPHONE","IS_IPOD","IS_IOS","IOS_VERSION","match","IS_ANDROID","ANDROID_VERSION","major","minor","IS_OLD_ANDROID","IS_NATIVE_ANDROID","IS_FIREFOX","IS_EDGE","IS_CHROME","CHROME_VERSION","IS_IE8","IE_VERSION","result","IS_SAFARI","IS_ANY_SAFARI","TOUCH_ENABLED","isReal","maxTouchPoints","DocumentTouch","BACKGROUND_SIZE_SUPPORTED","createElement","style","browser","freeze","_typeof","constructor","classCallCheck","instance","Constructor","inherits","subClass","superClass","create","setPrototypeOf","__proto__","possibleConstructorReturn","self","ReferenceError","taggedTemplateLiteralLoose","strings","raw","object","isObject","each","fn","forEach","key","reduce","initial","undefined","accum","assign","target","_len","sources","Array","_key","apply","concat","source","isPlain","history","LogByTypeFactory","log","type","level","args","stringify","lvl","levels","lvlRegExp","RegExp","unshift","toUpperCase","push","console","info","map","isArray","JSON","join","createLogger$1","logByType","createLogger","subname","all","off","debug","warn","error","DEFAULT","hasOwnProperty","Error","filter","fname","historyItem","clear","disable","enable","_len2","_key2","_len3","_key3","_len4","_key4","computedStyle","el","prop","getComputedStyle","cs","currentStyle","_templateObject","isNonBlankString","str","throwIfWhitespace","classRegExp","className","isEl","nodeType","isInFrame","parent","createQuerier","method","selector","context","querySelector","ctx","createEl","tagName","properties","attributes","content","propName","val","indexOf","setAttribute","textContent","attrName","appendContent","text","innerText","prependTo","child","firstChild","insertBefore","appendChild","hasClass","element","classToCheck","classList","contains","addClass","classToAdd","add","removeClass","classToRemove","remove","split","c","toggleClass","classToToggle","predicate","setAttributes","attrValue","removeAttribute","getAttributes","tag","knownBooleans","attrs","attrVal","getAttribute","attribute","blockTextSelection","body","focus","onselectstart","unblockTextSelection","getBoundingClientRect","parentNode","rect","k","height","width","findPosition","box","left","top","docEl","documentElement","clientLeft","scrollLeft","pageXOffset","clientTop","scrollTop","pageYOffset","round","getPointerPosition","event","position","boxW","offsetWidth","boxH","offsetHeight","boxY","boxX","pageY","pageX","changedTouches","max","isTextNode","emptyEl","removeChild","normalizeContent","createTextNode","node","insertContent","isSingleLeftClick","button","buttons","$","$$","Dom","_guid","newGUID","elData","elIdAttr","Date","getTime","getData","id","hasData","removeData","_cleanUpEvents","elem","data","handlers","removeEventListener","dispatcher","detachEvent","disabled","_handleMultipleEvents","types","callback","fixEvent","returnTrue","returnFalse","isPropagationStopped","old","preventDefault","srcElement","relatedTarget","fromElement","toElement","returnValue","defaultPrevented","stopPropagation","cancelBubble","stopImmediatePropagation","isImmediatePropagationStopped","clientX","doc","clientY","which","charCode","keyCode","_supportsPassive","opts","defineProperty","addEventListener","passiveEvents","on","guid","hash","handlersCopy","slice","n","options","passive","attachEvent","removeType","splice","trigger","elemData","ownerDocument","bubbles","targetData","one","func","Events","_windowLoaded","videojs$2","autoSetup","vids","getElementsByTagName","audios","divs","mediaEls","_i","_e","_i2","_e2","_i3","_e3","mediaEl","autoSetupTimeout","player","wait","vjs","setTimeout","readyState","createStyleElement","setTextContent","styleSheet","cssText","uid","bound","throttle","last","now","throttled","debounce","immediate","timeout","cancel","clearTimeout","debounced","_later","EventTarget","allowedEvents_","ael","dispatchEvent","isEvented","eventBusEl_","every","isValidEventType","validateTarget","nodeName","validateEventType","validateListener","listener","normalizeListenArgs","isTargetingSelf","shift","listen","EventedMixin","_this","_normalizeListenArgs","removeListenerOnDispose","removeRemoverOnTargetDispose","_this2","_normalizeListenArgs2","wrapper","largs","targetOrType","typeOrListener","evented","eventBusKey","StatefulMixin","state","setState","stateUpdates","changes","from","to","stateful","defaultState","handleStateChanged","toTitleCase","string","charAt","titleCaseEquals","str1","str2","mergeOptions","Component","ready","play","player_","options_","id_","name_","el_","children_","childIndex_","childNameIndex_","initChildren","reportTouchActivity","enableTouchActivity","dispose","localize","tokens","defaultValue","code","language","languages","primaryCode","primaryLang","localizedString","index","ret","contentEl","contentEl_","children","getChildById","getChild","addChild","component","componentName","componentClassName","componentClass","ComponentClass","getComponent","childNodes","refNode","childFound","compEl","parentOptions","handleAdd","playerOptions","newChild","workingChildren","Tech","some","wchild","isTech","buildCSSClass","sync","isReady_","readyQueue_","triggerReady","readyQueue","show","hide","lockShowing","unlockShowing","num","skipListeners","dimension","dimensions","widthOrHeight","pxIndex","parseInt","currentDimension","computedWidthOrHeight","getPropertyValue","rule","currentDimensions","currentWidth","currentHeight","blur","emitTapEvents","touchStart","firstTouch","tapMovementThreshold","touchTimeThreshold","couldBeTap","touches","xdiff","ydiff","touchDistance","sqrt","noTap","touchTime","reportUserActivity","report","touchHolding","clearInterval","setInterval","touchEnd","timeoutId","disposeFn","interval","_this3","intervalId","requestAnimationFrame","_this4","supportsRaf_","cancelAnimationFrame","registerComponent","ComponentToRegister","isComp","isPrototypeOf","reason","components_","Player","players","playerNames","pname","Boolean","rangeCheck","fnName","maxIndex","getRange","valueIndex","ranges","rangeIndex","createTimeRangesObj","start","end","createTimeRanges","bufferedPercent","buffered","duration","bufferedDuration","FullscreenApi","apiMap","specApi","browserApi","MediaError","message","defaultMessages","status","errorTypes","1","2","3","4","5","errNum","isPromise","then","silencePromise","trackToJson_","track","acc","cues","cue","startTime","endTime","textTracksToJson","tech","trackEls","trackObjs","tracks","trackEl","json","src","textTracks","jsonToTextTracks","addedTrack","addRemoteTextTrack","addCue","textTrackConverter","MODAL_CLASS_NAME","ESC","ModalDialog","_Component","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","role","descEl_","description","tabIndex","label","previouslyActiveEl_","handleKeyPress","close","open","fillAlways","fill","wasPlaying_","paused","pauseOnOpen","pause","hadControls_","controls","conditionalFocus_","opened","conditionalBlur_","temporary","closeable_","temp","controlText","fillWith","parentEl","nextSiblingEl","nextSibling","empty","closeButton","content_","activeEl","activeElement","playerEl","handleKeyDown","focusableEls","focusableEls_","focusIndex","shiftKey","allChildren","querySelectorAll","HTMLAnchorElement","HTMLAreaElement","hasAttribute","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLButtonElement","HTMLIFrameElement","HTMLObjectElement","HTMLEmbedElement","TrackList","_EventTarget","_ret","list","tracks_","addTrack","removeTrack","rtrack","l","getTrackById","change","addtrack","removetrack","disableOthers","enabled","AudioTrackList","_TrackList","_prop","changing_","disableOthers$1","selected","VideoTrackList","TextTrackList","nonLanguageTextTrackKind","kind","HtmlTrackElementList","trackElements","trackElements_","addTrackElement_","trackElement","getTrackElementByTrack_","trackElement_","removeTrackElement_","TextTrackCueList","setCues_","length_","oldLength","cues_","defineProp","getCueById","VideoTrackKind","alternative","captions","main","subtitles","commentary","AudioTrackKind","TextTrackKind","descriptions","chapters","metadata","TextTrackMode","hidden","showing","Track","trackProps","_loop","parseUrl","url","props","href","addToBody","host","protocol","div","innerHTML","details","location","getAbsoluteURL","getFileExtension","path","splitPathRe","pathParts","toLowerCase","isCrossOrigin","winLoc","urlInfo","srcProtocol","crossOrigin","Url","parseCues","srcContent","parser","Parser","StringDecoder","errors","oncue","onparsingerror","onflush","parse","groupCollapsed","groupEnd","flush","loadTrack","uri","cors","err","response","responseBody","loaded_","tech_","loadHandler","TextTrack","_Track","settings","srclang","mode","default_","tt","activeCues_","activeCues","changed","timeupdateHandler","newMode","ct","currentTime","active","originalCue","originalCue_","removeCue","_removeCue","cuechange","AudioTrack","newEnabled","VideoTrack","newSelected","NONE","LOADING","LOADED","ERROR","HTMLTrackElement","load","NORMAL","audio","ListClass","TrackClass","capitalName","video","getterName","privateName","REMOTE","remoteText","remoteTextEl","ALL","createTrackHelper","names","hasStarted_","featuresProgressEvents","manualProgressOn","featuresTimeupdateEvents","manualTimeUpdatesOn","nativeCaptions","nativeTextTracks","featuresNativeTextTracks","emulateTextTracks","autoRemoteTextTracks_","initTrackListeners","nativeControlsForTouch","triggerSourceset","onDurationChange","manualProgress","trackProgress","manualProgressOff","stopTrackingProgress","progressInterval","numBufferedPercent","bufferedPercent_","duration_","manualTimeUpdates","trackCurrentTime","stopTrackingCurrentTime","manualTimeUpdatesOff","currentTimeInterval","manuallyTriggered","clearTracks","removeRemoteTextTrack","cleanupAutoTextTracks","reset","error_","played","setCurrentTime","trackListChanges","addWebVttScript_","_this5","script","onload","onerror","_this6","remoteTracks","remoteTextTracks","handleAddTrack","handleRemoveTrack","updateDisplay","textTracksChanges","addTextTrack","createRemoteTextTrack","_this7","manualCleanup","htmlTrackElement","remoteTextTrackEls","getVideoPlaybackQuality","setPoster","playsinline","setPlaysinline","canPlayType","canPlaySource","srcObj","registerTech","techs_","defaultTechOrder_","getTech","videojs","featuresVolumeControl","featuresMuteControl","featuresFullscreenResize","featuresPlaybackRate","featuresSourceset","withSourceHandlers","_Tech","registerSourceHandler","handler","sourceHandlers","can","selectSourceHandler","canHandleSource","sh","deferrable","originalFn","sourceHandler_","setSource","nativeSourceHandler","disposeSourceHandler","currentSource_","handleSource","middlewares","middlewareInstances","TERMINATOR","use","middleware","next","setSourceHelper","setTech","mw","get$1","reduceRight","middlewareIterator","set$1","arg","mediate","callMethod","middlewareValue","terminated","executeRight","allowedGetters","seekable","allowedSetters","allowedMediators","mws","clearCacheForPlayer","getOrCreateFactory","mwFactory","_mws$i","mwf","mwi","lastRun","mwrest","_src","MimetypesKind","opus","ogv","mp4","mov","m4v","mkv","mp3","aac","oga","m3u8","getMimetype","ext","mimetype","findMimetype","cache_","matchingSources","filterSource","newsrc","srcobj","fixSource","MediaLoader","j","techOrder","techName","isSupported","loadTech_","ClickableComponent","tabIndex_","createControlTextEl","controlTextEl_","controlText_","localizedText","nonIconControl","enabled_","handleClick","handleFocus","handleBlur","PosterImage","_ClickableComponent","update","fallbackImg_","poster","setSrc","backgroundImage","darkGray","lightGray","fontMap","monospace","sansSerif","serif","monospaceSansSerif","monospaceSerif","proportionalSansSerif","proportionalSerif","casual","smallcaps","constructColor","color","opacity","hex","tryUpdateStyle","TextTrackDisplay","updateDisplayHandler","toggleDisplay","preselectTrack","modes","trackList","userPref","selectedLanguage","firstDesc","firstCaptions","preferredTrack","clearDisplay","processCues","descriptionsTrack","captionsSubtitlesTrack","updateForTrack","textTrackSettings","overrides","getValues","cueDiv","displayState","textOpacity","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","bottom","fontFamily","fontVariant","LoadingSpinner","isAudio","playerType","dir","Button","BigPlayButton","_Button","mouseused_","handleMouseDown","playPromise","cb","playToggle","playFocus","CloseButton","PlayToggle","handlePlay","handlePause","handleEnded","handleSeeked","defaultImplementation","seconds","guide","gm","gh","setFormatTime","customImplementation","resetFormatTime","formatTime","TimeDisplay","throttledUpdateContent","updateContent","plainName","labelText_","updateTextNode_","textNode_","formattedTime_","formatTime_","updateFormattedTime_","formattedTime","CurrentTimeDisplay","_TimeDisplay","scrubbing","getCache","DurationDisplay","TimeDivider","RemainingTimeDisplay","remainingTimeDisplay","remainingTime","LiveDisplay","updateShowing","Slider","bar","barName","vertical","playerEvent","handleMouseMove","handleMouseUp","progress","getPercent","percentage","toFixed","calculateDistance","stepBack","stepForward","bool","vertical_","LoadProgressBar","partEls_","bufferedEnd","percentify","percent","part","TimeTooltip","seekBarRect","seekBarPoint","tooltipRect","playerRect","seekBarPointPx","spaceLeftOfPoint","spaceRightOfPoint","right","pullTooltipBy","PlayProgressBar","rafId_","timeTooltip","MouseTimeDisplay","STEP_SECONDS","UPDATE_REFRESH_INTERVAL","SeekBar","_Slider","setEventHandlers_","updateInterval","update_","getCurrentTime_","videoWasPlaying","newTime","mouseTimeDisplay","handleAction","ProgressControl","throttledHandleMouseSeek","handleMouseSeek","seekBar","seekBarEl","FullscreenToggle","handleFullscreenChange","fullscreenEnabled","isFullscreen","exitFullscreen","requestFullscreen","checkVolumeSupport","VolumeLevel","VolumeBar","updateLastVolume_","updateARIAAttributes","checkMuted","volume","muted","ariaValue","volumeAsPercentage_","volumeBeforeDrag","lastVolume_","VolumeControl","volumeBar","throttledHandleMouseMove","orientationClass","checkMuteSupport","MuteToggle","vol","lastVolume","volumeToSet","updateIcon_","updateControlText_","soundOff","VolumePanel","inline","volumeControl","volumePanelState_","sliderActive_","sliderInactive_","muteToggle","Menu","menuButton_","menuButton","focusedChild_","addItem","unpressButton","contentElType","append","stepChild","item","haveTitle","MenuButton","buttonClass","handleSubmenuKeyPress","menu","createMenu","buttonPressed_","items","hideThreshold_","title","createItems","buildWrapperCSSClass","menuButtonClass","pressButton","TrackButton","_MenuButton","updateHandler","MenuItem","selectable","isSelected_","multiSelectable","_selected","TextTrackMenuItem","_MenuItem","changeHandler","handleTracksChange","selectedLanguageChangeHandler","handleSelectedLanguageChange","onchange","Event","createEvent","initEvent","kinds","shouldBeSelected","OffTextTrackMenuItem","_TextTrackMenuItem","allHidden","TextTrackButton","_TrackButton","TrackMenuItem","label_","kinds_","kind_","ChaptersTrackMenuItem","ChaptersButton","_TextTrackButton","track_","setTrack","findChaptersTrack","updateHandler_","remoteTextTrackEl","_remoteTextTrackEl","getMenuCaption","mi","DescriptionsButton","SubtitlesButton","CaptionSettingsMenuItem","CaptionsButton","SubsCapsMenuItem","SubsCapsButton","language_","AudioTrackMenuItem","audioTracks","AudioTrackButton","PlaybackRateMenuItem","rate","playbackRate","PlaybackRateMenuButton","updateVisibility","updateLabel","labelEl_","rates","playbackRates","currentRate","newRate","playbackRateSupported","Spacer","CustomControlSpacer","_Spacer","ControlBar","ErrorDisplay","_ModalDialog","LOCAL_STORAGE_KEY","COLOR_BLACK","COLOR_BLUE","COLOR_CYAN","COLOR_GREEN","COLOR_MAGENTA","COLOR_RED","COLOR_WHITE","COLOR_YELLOW","OPACITY_OPAQUE","OPACITY_SEMI","OPACITY_TRANS","selectConfigs","v","parseOptionValue","getSelectedOptionValue","selectedIndex","setSelectedOption","TextTrackSettings","endDialog","setDefaults","persistTextTrackSettings","saveSettings","config","restoreSettings","createElSelect_","legendId","selectLabelledbyIds","o","optionId","createElFgColor_","createElBgColor_","createElWinColor_","createElColors_","createElFont_","createElControls_","defaultsDescription","setValues","values","localStorage","getItem","setItem","removeItem","ttDisplay","controlBar","subsCapsBtn","subsCapsButton","ccBtn","captionsButton","ResizeManager","RESIZE_OBSERVER_AVAILABLE","ResizeObserver","loadListener_","resizeObserver_","debouncedHandler_","resizeHandler","observe","contentWindow","unobserve","disconnect","resizeObserver","sourcesetLoad","srcUrls","innerHTMLDescriptorPolyfill","cloneNode","dummy","docFrag","createDocumentFragment","Element","getDescriptor","priority","getInnerHTMLDescriptor","HTMLMediaElement","firstSourceWatch","resetSourceWatch_","innerDescriptor","appendWrapper","appendFn","retval","srcDescriptorPolyfill","getSrcDescriptor","setupSourceset","resetSourceset_","srcDescriptor","oldSetAttribute","oldLoad","currentSrc","_templateObject$2","Html5","crossoriginTracks","initNetworkState_","handleLateInit_","enableSourceset","setupSourcesetHandling_","hasChildNodes","nodes","nodesLength","removeNodes","proxyNativeTracks_","restoreMetadataTracksInIOSNativePlayer_","setControls","proxyWebkitFullscreen_","disposeMediaElement","metadataTracksPreFullscreenState","takeMetadataTrackSnapshot","storedMode","restoreTrackMode","storedTrack","elTracks","techTracks","listeners","currentTarget","removeOldTracks","removeTracks","found","eventName","playerElIngest","movingMediaElementInDOM","clone","tagAttributes","techId","playerId","preload","settingsAttrs","attr","networkState","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","checkProgress","endFn","beginFn","webkitPresentationMode","supportsFullScreen","webkitEnterFullScreen","enterFullScreen","HAVE_METADATA","exitFullScreen","webkitExitFullScreen","resetMediaElement","videoPlaybackQuality","webkitDroppedFrameCount","webkitDecodedFrameCount","droppedVideoFrames","totalVideoFrames","performance","creationTime","timing","navigationStart","TEST_VID","canControlVolume","canMuteVolume","canControlPlaybackRate","canOverrideAttributes","noop","supportsNativeTextTracks","supportsNativeVideoTracks","videoTracks","supportsNativeAudioTracks","featuresNativeVideoTracks","featuresNativeAudioTracks","mpegurlRE","mp4RE","patchCanPlayType","unpatchCanPlayType","r","_templateObject$1","TECH_EVENTS_RETRIGGER","TECH_EVENTS_QUEUE","canplay","canplaythrough","playing","seeked","BREAKPOINT_ORDER","BREAKPOINT_CLASSES","substring","DEFAULT_BREAKPOINTS","tiny","xsmall","small","medium","large","xlarge","huge","getTagSettings","closest","isPosterFromTech_","queuedCallbacks_","userActive_","languagesToLower","name$$1","languages_","poster_","controls_","autoplay","scrubbing_","lastPlaybackRate","defaultPlaybackRate","playerOptionsCopy","plugins","middleware_","flexNotSupported_","majorVersion","userActive","listenForUserActivity_","handleFullscreenChange_","handleStageClick_","breakpoints","responsive","changingSrc_","playWaitingForReady_","playOnLoadstart_","styleEl_","playerElIngest_","divEmbed","tabindex","VIDEOJS_NO_DYNAMIC_STYLE","defaultsStyleEl","head","fill_","fluid_","fluid","aspectRatio","links","linkEl","_dimension","privDimension","updateStyleEl_","parsedVal","ratio","aspectRatio_","idClass","videoWidth","videoHeight","ratioParts","ratioMultiplier","width_","height_","_width","_height","techEl","unloadTech_","titleTechName","camelTechName","techName_","techOptions","loop","techCanOverridePoster","TechClass","handleTechReady_","textTracksJson_","eventObj","seeking","handleTechLoadStart_","handleTechSourceset_","handleTechWaiting_","handleTechEnded_","handleTechSeeking_","handleTechPlay_","handleTechFirstPlay_","handleTechPause_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechError_","handleTechPosterChange_","handleTechTextData_","handleTechRateChange_","usingNativeControls","techGet_","addTechControlsListeners_","safety","removeTechControlsListeners_","handleTechClick_","handleTechTouchStart_","handleTechTouchMove_","handleTechTouchEnd_","handleTechTap_","techCall_","hasStarted","manualAutoplay_","previouslyMuted","promise","updateSourceCaches_","sourceElSources","sourceEls","matchingSourceEls","sourceObj","updateSourceCaches","playerSrc","currentSource","eventSrc","lastSource_","updateCache","techSrc","techGet","request","queued","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechSeeked_","starttime","userWasActive","PromiseClass","Promise","resolve","play_","_this8","isScrubbing","percentAsDecimal","_muted","defaultMuted","_defaultMuted","isFS","isFullscreen_","fsApi","fullscreenchange","documentFullscreenChange","fullscreenElement","enterFullWindow","exitFullWindow","isFullWindow","docOrigOverflow","overflow","fullWindowOnEscKey","selectSource","_this9","techs","_ref","findFirstPassingTechSourcePair","outerArray","innerArray","tester","outerChoice","innerChoice","foundSourceAndTech","flip","b","finder","_ref2","sourceOrder","_this10","middlewareSource","src_","notSupportedMessage","_this11","sourceTech","currentSources","currentType","techAutoplay","newPoster","usingNativeControls_","errorDisplay","userActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","inactivityTimeout","isAudio_","_ref3","_ref3$track","toJSON","createModal","_this12","modal","updateCurrentBreakpoint_","currentBreakpoint","candidateBreakpoint","maxWidth","breakpoints_","breakpoint_","removeCurrentBreakpoint_","currentBreakpointClass","_breakpoints","responsive_","current","baseOptions","tagOptions","dataSetup","_safeParseTuple","childName","html5","flash","userLanguage","BASE_PLUGIN_NAME","PLUGIN_CACHE_KEY","pluginStorage","pluginExists","getPlugin","markPluginAsActive","triggerSetupEvent","before","createBasicPlugin","plugin","basicPluginWrapper","createPluginFactory","PluginSubClass","getEventHash","Plugin","VERSION","isBasic","p","registerPlugin","deregisterPlugin","getPlugins","getPluginVersion","usingPlugin","hasPlugin","_inherits","super_","extendFn","subClassMethods","HTMLVideoElement","normalizeId","getPlayer","hooks","hookFunction","PlayerComponent","hooks_","hook","hookOnce","original","removeHook","getPlayers","nId","_tag","_player","getAllPlayers","comp","writeable","extend","addLanguage","_mergeOptions","createTimeRange","dom","$Function","$apply","$call","origSymbol","global","hasSymbolSham","ES","leftWhitespace","rightWhitespace","S","headers","row","win","ERROR_MESSAGE","funcType","that","binder","boundLength","boundArgs","Empty","isFunction","alert","confirm","prompt","SafeParseTuple","reviver","autoKeyword","directionSetting","alignSetting","findDirectionSetting","findAlignSetting","align","cobj","isIE8","baseObj","hasBeenReset","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","setting","SyntaxError","getCueAsHTML","convertCueToDOMTree","keysShim","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","isArguments","isString","theKeys","skipProto","skipConstructor","define","getPolyfill","polyfill","$strSlice","prefix","remain","$SyntaxError","predicates","allowed","isData","IsAccessor","recordType","argumentName","isFinite","boundTrim","doccy","minDoc","topLevel","forEachArray","array","receiver","len","forEachString","forEachObject","thisArg","_objCreate","F","ParsingError","errorData","parseTimeStamp","computeSeconds","f","Settings","parseOptions","keyValueDelim","groupDelim","groups","kv","parseCue","regionList","oInput","consumeTimeStamp","ts","Errors","BadTimeStamp","consumeCueSettings","region","alt","vals","vals0","integer","line","lineAlign","snapToLines","size","middle","positionAlign","skipWhitespace","substr","BadSignature","dflt","defaultKey","ESCAPE","TAG_NAME","u","ruby","rt","lang","TAG_ANNOTATION","NEEDS_PARENT","parseContent","nextToken","consume","unescape1","unescape","shouldAdd","localName","annotation","rootDiv","tagStack","createProcessingInstruction","strongRTLRanges","isStrongRTLChar","currentRange","determineBidi","nodeStack","pushNodes","nextTextNode","charCodeAt","computeLinePos","textTrackList","mediaElement","count","StyleBox","CueStyleBox","styleOptions","styles","display","writingMode","unicodeBidi","applyStyles","textAlign","font","whiteSpace","direction","stylesunicodeBidi","textPos","formatStyle","move","BoxPosition","lh","offsetTop","rects","getClientRects","lineHeight","moveBoxToLinePosition","styleBox","containerBox","boxPositions","findBestPosition","axis","bestPosition","specifiedPosition","overlapsOppositeAxis","within","overlapsAny","intersectPercentage","boxPosition","linePos","step","maxPosition","initialAxis","ceil","reverse","calculatedPercentage","toCSSCompatValues","unit","toMove","overlaps","b2","boxes","container","intersectArea","reference","getSimpleBoxPosition","decode","decodeURIComponent","encodeURIComponent","cuetext","FONT_SIZE_PERCENT","FONT_STYLE","CUE_BACKGROUND_PADDING","overlay","paddedOverlay","shouldCompute","margin","decoder","buffer","TextDecoder","reportOrThrowError","collectNextLine","pos","parseRegion","xy","anchor","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseTimestampMap","ontimestampmap","parseHeader","stream","alreadyCollectedLine","hasSubstring","callee","origKeys","originalKeys","keysWorksWithArguments","__esModule","default","customEventName","required","events","globalOptions","progressControl","fullscreenToggle","volumeMenuButton","globalEvents","reseted","mounted","initialize","beforeDestroy","$refs","$emit","__ob__","$nextTick","watch","deep","install","videoPlayer","render","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","beforeCreate","_injectStyles","esModule","$createElement","_self","_c","staticClass","ref","generator","asyncFn","asyncGen","ThrowTypeError","hasSymbols","getProto","getPrototypeOf","generatorFunction","asyncFunction","asyncGenFunction","asyncGenIterator","TypedArray","Uint8Array","INTRINSICS","ArrayBuffer","entries","asyncIterator","Atomics","DataView","decodeURI","encodeURI","eval","EvalError","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Map","valueOf","reject","Proxy","RangeError","Reflect","Set","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakMap","WeakSet","$replace","rePropName","reEscapeChar","stringToPath","quote","subString","getBaseIntrinsic","parts","parseHeaders","xtend","isEmpty","initParams","params","createXHR","_createXHR","called","readystatechange","loadFunc","getBody","responseText","getXml","isJson","errorFunc","evt","timeoutTimer","statusCode","failureResponse","aborted","useXDR","rawRequest","getAllResponseHeaders","XDomainRequest","XMLHttpRequest","onreadystatechange","onprogress","onabort","ontimeout","username","password","withCredentials","abort","setRequestHeader","responseType","beforeSend","send","responseXML","firefoxBugTakenEffect","origDefineProperty","arePropertyDescriptorsSupported","_","supportsDescriptors","defineProperties","scrollSetting","findScrollSetting","isValidPercentValue","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll"],"mappings":"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","file":"js/chunk-7e391d4a.a16c8b39.js","sourcesContent":["'use strict';\n\nvar GetIntrinsic = require('./GetIntrinsic');\n\nvar $Object = GetIntrinsic('%Object%');\nvar $EvalError = GetIntrinsic('%EvalError%');\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $String = GetIntrinsic('%String%');\nvar $Date = GetIntrinsic('%Date%');\nvar $Number = GetIntrinsic('%Number%');\nvar $floor = GetIntrinsic('%Math.floor%');\nvar $DateUTC = GetIntrinsic('%Date.UTC%');\nvar $abs = GetIntrinsic('%Math.abs%');\n\nvar assertRecord = require('./helpers/assertRecord');\nvar isPropertyDescriptor = require('./helpers/isPropertyDescriptor');\nvar $isNaN = require('./helpers/isNaN');\nvar $isFinite = require('./helpers/isFinite');\nvar sign = require('./helpers/sign');\nvar mod = require('./helpers/mod');\nvar isPrefixOf = require('./helpers/isPrefixOf');\nvar callBound = require('./helpers/callBound');\n\nvar IsCallable = require('is-callable');\nvar toPrimitive = require('es-to-primitive/es5');\n\nvar has = require('has');\n\nvar $getUTCFullYear = callBound('Date.prototype.getUTCFullYear');\n\nvar HoursPerDay = 24;\nvar MinutesPerHour = 60;\nvar SecondsPerMinute = 60;\nvar msPerSecond = 1e3;\nvar msPerMinute = msPerSecond * SecondsPerMinute;\nvar msPerHour = msPerMinute * MinutesPerHour;\nvar msPerDay = 86400000;\n\n// https://es5.github.io/#x9\nvar ES5 = {\n\tToPrimitive: toPrimitive,\n\n\tToBoolean: function ToBoolean(value) {\n\t\treturn !!value;\n\t},\n\tToNumber: function ToNumber(value) {\n\t\treturn +value; // eslint-disable-line no-implicit-coercion\n\t},\n\tToInteger: function ToInteger(value) {\n\t\tvar number = this.ToNumber(value);\n\t\tif ($isNaN(number)) { return 0; }\n\t\tif (number === 0 || !$isFinite(number)) { return number; }\n\t\treturn sign(number) * Math.floor(Math.abs(number));\n\t},\n\tToInt32: function ToInt32(x) {\n\t\treturn this.ToNumber(x) >> 0;\n\t},\n\tToUint32: function ToUint32(x) {\n\t\treturn this.ToNumber(x) >>> 0;\n\t},\n\tToUint16: function ToUint16(value) {\n\t\tvar number = this.ToNumber(value);\n\t\tif ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; }\n\t\tvar posInt = sign(number) * Math.floor(Math.abs(number));\n\t\treturn mod(posInt, 0x10000);\n\t},\n\tToString: function ToString(value) {\n\t\treturn $String(value);\n\t},\n\tToObject: function ToObject(value) {\n\t\tthis.CheckObjectCoercible(value);\n\t\treturn $Object(value);\n\t},\n\tCheckObjectCoercible: function CheckObjectCoercible(value, optMessage) {\n\t\t/* jshint eqnull:true */\n\t\tif (value == null) {\n\t\t\tthrow new $TypeError(optMessage || 'Cannot call method on ' + value);\n\t\t}\n\t\treturn value;\n\t},\n\tIsCallable: IsCallable,\n\tSameValue: function SameValue(x, y) {\n\t\tif (x === y) { // 0 === -0, but they are not identical.\n\t\t\tif (x === 0) { return 1 / x === 1 / y; }\n\t\t\treturn true;\n\t\t}\n\t\treturn $isNaN(x) && $isNaN(y);\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8\n\tType: function Type(x) {\n\t\tif (x === null) {\n\t\t\treturn 'Null';\n\t\t}\n\t\tif (typeof x === 'undefined') {\n\t\t\treturn 'Undefined';\n\t\t}\n\t\tif (typeof x === 'function' || typeof x === 'object') {\n\t\t\treturn 'Object';\n\t\t}\n\t\tif (typeof x === 'number') {\n\t\t\treturn 'Number';\n\t\t}\n\t\tif (typeof x === 'boolean') {\n\t\t\treturn 'Boolean';\n\t\t}\n\t\tif (typeof x === 'string') {\n\t\t\treturn 'String';\n\t\t}\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type\n\tIsPropertyDescriptor: function IsPropertyDescriptor(Desc) {\n\t\treturn isPropertyDescriptor(this, Desc);\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8.10.1\n\tIsAccessorDescriptor: function IsAccessorDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn false;\n\t\t}\n\n\t\tassertRecord(this, 'Property Descriptor', 'Desc', Desc);\n\n\t\tif (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8.10.2\n\tIsDataDescriptor: function IsDataDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn false;\n\t\t}\n\n\t\tassertRecord(this, 'Property Descriptor', 'Desc', Desc);\n\n\t\tif (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8.10.3\n\tIsGenericDescriptor: function IsGenericDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn false;\n\t\t}\n\n\t\tassertRecord(this, 'Property Descriptor', 'Desc', Desc);\n\n\t\tif (!this.IsAccessorDescriptor(Desc) && !this.IsDataDescriptor(Desc)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8.10.4\n\tFromPropertyDescriptor: function FromPropertyDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn Desc;\n\t\t}\n\n\t\tassertRecord(this, 'Property Descriptor', 'Desc', Desc);\n\n\t\tif (this.IsDataDescriptor(Desc)) {\n\t\t\treturn {\n\t\t\t\tvalue: Desc['[[Value]]'],\n\t\t\t\twritable: !!Desc['[[Writable]]'],\n\t\t\t\tenumerable: !!Desc['[[Enumerable]]'],\n\t\t\t\tconfigurable: !!Desc['[[Configurable]]']\n\t\t\t};\n\t\t} else if (this.IsAccessorDescriptor(Desc)) {\n\t\t\treturn {\n\t\t\t\tget: Desc['[[Get]]'],\n\t\t\t\tset: Desc['[[Set]]'],\n\t\t\t\tenumerable: !!Desc['[[Enumerable]]'],\n\t\t\t\tconfigurable: !!Desc['[[Configurable]]']\n\t\t\t};\n\t\t} else {\n\t\t\tthrow new $TypeError('FromPropertyDescriptor must be called with a fully populated Property Descriptor');\n\t\t}\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8.10.5\n\tToPropertyDescriptor: function ToPropertyDescriptor(Obj) {\n\t\tif (this.Type(Obj) !== 'Object') {\n\t\t\tthrow new $TypeError('ToPropertyDescriptor requires an object');\n\t\t}\n\n\t\tvar desc = {};\n\t\tif (has(Obj, 'enumerable')) {\n\t\t\tdesc['[[Enumerable]]'] = this.ToBoolean(Obj.enumerable);\n\t\t}\n\t\tif (has(Obj, 'configurable')) {\n\t\t\tdesc['[[Configurable]]'] = this.ToBoolean(Obj.configurable);\n\t\t}\n\t\tif (has(Obj, 'value')) {\n\t\t\tdesc['[[Value]]'] = Obj.value;\n\t\t}\n\t\tif (has(Obj, 'writable')) {\n\t\t\tdesc['[[Writable]]'] = this.ToBoolean(Obj.writable);\n\t\t}\n\t\tif (has(Obj, 'get')) {\n\t\t\tvar getter = Obj.get;\n\t\t\tif (typeof getter !== 'undefined' && !this.IsCallable(getter)) {\n\t\t\t\tthrow new TypeError('getter must be a function');\n\t\t\t}\n\t\t\tdesc['[[Get]]'] = getter;\n\t\t}\n\t\tif (has(Obj, 'set')) {\n\t\t\tvar setter = Obj.set;\n\t\t\tif (typeof setter !== 'undefined' && !this.IsCallable(setter)) {\n\t\t\t\tthrow new $TypeError('setter must be a function');\n\t\t\t}\n\t\t\tdesc['[[Set]]'] = setter;\n\t\t}\n\n\t\tif ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) {\n\t\t\tthrow new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute');\n\t\t}\n\t\treturn desc;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-11.9.3\n\t'Abstract Equality Comparison': function AbstractEqualityComparison(x, y) {\n\t\tvar xType = this.Type(x);\n\t\tvar yType = this.Type(y);\n\t\tif (xType === yType) {\n\t\t\treturn x === y; // ES6+ specified this shortcut anyways.\n\t\t}\n\t\tif (x == null && y == null) {\n\t\t\treturn true;\n\t\t}\n\t\tif (xType === 'Number' && yType === 'String') {\n\t\t\treturn this['Abstract Equality Comparison'](x, this.ToNumber(y));\n\t\t}\n\t\tif (xType === 'String' && yType === 'Number') {\n\t\t\treturn this['Abstract Equality Comparison'](this.ToNumber(x), y);\n\t\t}\n\t\tif (xType === 'Boolean') {\n\t\t\treturn this['Abstract Equality Comparison'](this.ToNumber(x), y);\n\t\t}\n\t\tif (yType === 'Boolean') {\n\t\t\treturn this['Abstract Equality Comparison'](x, this.ToNumber(y));\n\t\t}\n\t\tif ((xType === 'String' || xType === 'Number') && yType === 'Object') {\n\t\t\treturn this['Abstract Equality Comparison'](x, this.ToPrimitive(y));\n\t\t}\n\t\tif (xType === 'Object' && (yType === 'String' || yType === 'Number')) {\n\t\t\treturn this['Abstract Equality Comparison'](this.ToPrimitive(x), y);\n\t\t}\n\t\treturn false;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-11.9.6\n\t'Strict Equality Comparison': function StrictEqualityComparison(x, y) {\n\t\tvar xType = this.Type(x);\n\t\tvar yType = this.Type(y);\n\t\tif (xType !== yType) {\n\t\t\treturn false;\n\t\t}\n\t\tif (xType === 'Undefined' || xType === 'Null') {\n\t\t\treturn true;\n\t\t}\n\t\treturn x === y; // shortcut for steps 4-7\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-11.8.5\n\t// eslint-disable-next-line max-statements\n\t'Abstract Relational Comparison': function AbstractRelationalComparison(x, y, LeftFirst) {\n\t\tif (this.Type(LeftFirst) !== 'Boolean') {\n\t\t\tthrow new $TypeError('Assertion failed: LeftFirst argument must be a Boolean');\n\t\t}\n\t\tvar px;\n\t\tvar py;\n\t\tif (LeftFirst) {\n\t\t\tpx = this.ToPrimitive(x, $Number);\n\t\t\tpy = this.ToPrimitive(y, $Number);\n\t\t} else {\n\t\t\tpy = this.ToPrimitive(y, $Number);\n\t\t\tpx = this.ToPrimitive(x, $Number);\n\t\t}\n\t\tvar bothStrings = this.Type(px) === 'String' && this.Type(py) === 'String';\n\t\tif (!bothStrings) {\n\t\t\tvar nx = this.ToNumber(px);\n\t\t\tvar ny = this.ToNumber(py);\n\t\t\tif ($isNaN(nx) || $isNaN(ny)) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif ($isFinite(nx) && $isFinite(ny) && nx === ny) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (nx === 0 && ny === 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (nx === Infinity) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (ny === Infinity) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (ny === -Infinity) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (nx === -Infinity) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn nx < ny; // by now, these are both nonzero, finite, and not equal\n\t\t}\n\t\tif (isPrefixOf(py, px)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (isPrefixOf(px, py)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn px < py; // both strings, neither a prefix of the other. shortcut for steps c-f\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10\n\tmsFromTime: function msFromTime(t) {\n\t\treturn mod(t, msPerSecond);\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10\n\tSecFromTime: function SecFromTime(t) {\n\t\treturn mod($floor(t / msPerSecond), SecondsPerMinute);\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10\n\tMinFromTime: function MinFromTime(t) {\n\t\treturn mod($floor(t / msPerMinute), MinutesPerHour);\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10\n\tHourFromTime: function HourFromTime(t) {\n\t\treturn mod($floor(t / msPerHour), HoursPerDay);\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2\n\tDay: function Day(t) {\n\t\treturn $floor(t / msPerDay);\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2\n\tTimeWithinDay: function TimeWithinDay(t) {\n\t\treturn mod(t, msPerDay);\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3\n\tDayFromYear: function DayFromYear(y) {\n\t\treturn (365 * (y - 1970)) + $floor((y - 1969) / 4) - $floor((y - 1901) / 100) + $floor((y - 1601) / 400);\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3\n\tTimeFromYear: function TimeFromYear(y) {\n\t\treturn msPerDay * this.DayFromYear(y);\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3\n\tYearFromTime: function YearFromTime(t) {\n\t\t// largest y such that this.TimeFromYear(y) <= t\n\t\treturn $getUTCFullYear(new $Date(t));\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.6\n\tWeekDay: function WeekDay(t) {\n\t\treturn mod(this.Day(t) + 4, 7);\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3\n\tDaysInYear: function DaysInYear(y) {\n\t\tif (mod(y, 4) !== 0) {\n\t\t\treturn 365;\n\t\t}\n\t\tif (mod(y, 100) !== 0) {\n\t\t\treturn 366;\n\t\t}\n\t\tif (mod(y, 400) !== 0) {\n\t\t\treturn 365;\n\t\t}\n\t\treturn 366;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3\n\tInLeapYear: function InLeapYear(t) {\n\t\tvar days = this.DaysInYear(this.YearFromTime(t));\n\t\tif (days === 365) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (days === 366) {\n\t\t\treturn 1;\n\t\t}\n\t\tthrow new $EvalError('Assertion failed: there are not 365 or 366 days in a year, got: ' + days);\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4\n\tDayWithinYear: function DayWithinYear(t) {\n\t\treturn this.Day(t) - this.DayFromYear(this.YearFromTime(t));\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4\n\tMonthFromTime: function MonthFromTime(t) {\n\t\tvar day = this.DayWithinYear(t);\n\t\tif (0 <= day && day < 31) {\n\t\t\treturn 0;\n\t\t}\n\t\tvar leap = this.InLeapYear(t);\n\t\tif (31 <= day && day < (59 + leap)) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ((59 + leap) <= day && day < (90 + leap)) {\n\t\t\treturn 2;\n\t\t}\n\t\tif ((90 + leap) <= day && day < (120 + leap)) {\n\t\t\treturn 3;\n\t\t}\n\t\tif ((120 + leap) <= day && day < (151 + leap)) {\n\t\t\treturn 4;\n\t\t}\n\t\tif ((151 + leap) <= day && day < (181 + leap)) {\n\t\t\treturn 5;\n\t\t}\n\t\tif ((181 + leap) <= day && day < (212 + leap)) {\n\t\t\treturn 6;\n\t\t}\n\t\tif ((212 + leap) <= day && day < (243 + leap)) {\n\t\t\treturn 7;\n\t\t}\n\t\tif ((243 + leap) <= day && day < (273 + leap)) {\n\t\t\treturn 8;\n\t\t}\n\t\tif ((273 + leap) <= day && day < (304 + leap)) {\n\t\t\treturn 9;\n\t\t}\n\t\tif ((304 + leap) <= day && day < (334 + leap)) {\n\t\t\treturn 10;\n\t\t}\n\t\tif ((334 + leap) <= day && day < (365 + leap)) {\n\t\t\treturn 11;\n\t\t}\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.5\n\tDateFromTime: function DateFromTime(t) {\n\t\tvar m = this.MonthFromTime(t);\n\t\tvar d = this.DayWithinYear(t);\n\t\tif (m === 0) {\n\t\t\treturn d + 1;\n\t\t}\n\t\tif (m === 1) {\n\t\t\treturn d - 30;\n\t\t}\n\t\tvar leap = this.InLeapYear(t);\n\t\tif (m === 2) {\n\t\t\treturn d - 58 - leap;\n\t\t}\n\t\tif (m === 3) {\n\t\t\treturn d - 89 - leap;\n\t\t}\n\t\tif (m === 4) {\n\t\t\treturn d - 119 - leap;\n\t\t}\n\t\tif (m === 5) {\n\t\t\treturn d - 150 - leap;\n\t\t}\n\t\tif (m === 6) {\n\t\t\treturn d - 180 - leap;\n\t\t}\n\t\tif (m === 7) {\n\t\t\treturn d - 211 - leap;\n\t\t}\n\t\tif (m === 8) {\n\t\t\treturn d - 242 - leap;\n\t\t}\n\t\tif (m === 9) {\n\t\t\treturn d - 272 - leap;\n\t\t}\n\t\tif (m === 10) {\n\t\t\treturn d - 303 - leap;\n\t\t}\n\t\tif (m === 11) {\n\t\t\treturn d - 333 - leap;\n\t\t}\n\t\tthrow new $EvalError('Assertion failed: MonthFromTime returned an impossible value: ' + m);\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.12\n\tMakeDay: function MakeDay(year, month, date) {\n\t\tif (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) {\n\t\t\treturn NaN;\n\t\t}\n\t\tvar y = this.ToInteger(year);\n\t\tvar m = this.ToInteger(month);\n\t\tvar dt = this.ToInteger(date);\n\t\tvar ym = y + $floor(m / 12);\n\t\tvar mn = mod(m, 12);\n\t\tvar t = $DateUTC(ym, mn, 1);\n\t\tif (this.YearFromTime(t) !== ym || this.MonthFromTime(t) !== mn || this.DateFromTime(t) !== 1) {\n\t\t\treturn NaN;\n\t\t}\n\t\treturn this.Day(t) + dt - 1;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.13\n\tMakeDate: function MakeDate(day, time) {\n\t\tif (!$isFinite(day) || !$isFinite(time)) {\n\t\t\treturn NaN;\n\t\t}\n\t\treturn (day * msPerDay) + time;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.11\n\tMakeTime: function MakeTime(hour, min, sec, ms) {\n\t\tif (!$isFinite(hour) || !$isFinite(min) || !$isFinite(sec) || !$isFinite(ms)) {\n\t\t\treturn NaN;\n\t\t}\n\t\tvar h = this.ToInteger(hour);\n\t\tvar m = this.ToInteger(min);\n\t\tvar s = this.ToInteger(sec);\n\t\tvar milli = this.ToInteger(ms);\n\t\tvar t = (h * msPerHour) + (m * msPerMinute) + (s * msPerSecond) + milli;\n\t\treturn t;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.14\n\tTimeClip: function TimeClip(time) {\n\t\tif (!$isFinite(time) || $abs(time) > 8.64e15) {\n\t\t\treturn NaN;\n\t\t}\n\t\treturn $Number(new $Date(this.ToNumber(time)));\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-5.2\n\tmodulo: function modulo(x, y) {\n\t\treturn mod(x, y);\n\t}\n};\n\nmodule.exports = ES5;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\n/* eslint complexity: [2, 17], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar zeroWidthSpace = '\\u200b';\n\nmodule.exports = function getPolyfill() {\n\tif (String.prototype.trim && zeroWidthSpace.trim() === zeroWidthSpace) {\n\t\treturn String.prototype.trim;\n\t}\n\treturn implementation;\n};\n","function clean (s) {\n return s.replace(/\\n\\r?\\s*/g, '')\n}\n\n\nmodule.exports = function tsml (sa) {\n var s = ''\n , i = 0\n\n for (; i < arguments.length; i++)\n s += clean(sa[i]) + (arguments[i + 1] || '')\n\n return s\n}","'use strict';\n\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isCallable(value) {\n\tif (!value) { return false; }\n\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\tif (typeof value === 'function' && !value.prototype) { return true; }\n\tif (hasToStringTag) { return tryFunctionObject(value); }\n\tif (isES6ClassFn(value)) { return false; }\n\tvar strClass = toStr.call(value);\n\treturn strClass === fnClass || strClass === genClass;\n};\n","'use strict';\n\nvar GetIntrinsic = require('../GetIntrinsic');\n\nvar callBind = require('./callBind');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\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\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","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nvar isPrimitive = require('./helpers/isPrimitive');\n\nvar isCallable = require('is-callable');\n\n// http://ecma-international.org/ecma-262/5.1/#sec-8.12.8\nvar ES5internalSlots = {\n\t'[[DefaultValue]]': function (O) {\n\t\tvar actualHint;\n\t\tif (arguments.length > 1) {\n\t\t\tactualHint = arguments[1];\n\t\t} else {\n\t\t\tactualHint = toStr.call(O) === '[object Date]' ? String : Number;\n\t\t}\n\n\t\tif (actualHint === String || actualHint === Number) {\n\t\t\tvar methods = actualHint === String ? ['toString', 'valueOf'] : ['valueOf', 'toString'];\n\t\t\tvar value, i;\n\t\t\tfor (i = 0; i < methods.length; ++i) {\n\t\t\t\tif (isCallable(O[methods[i]])) {\n\t\t\t\t\tvalue = O[methods[i]]();\n\t\t\t\t\tif (isPrimitive(value)) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new TypeError('No default value');\n\t\t}\n\t\tthrow new TypeError('invalid [[DefaultValue]] hint supplied');\n\t}\n};\n\n// http://ecma-international.org/ecma-262/5.1/#sec-9.1\nmodule.exports = function ToPrimitive(input) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\tif (arguments.length > 1) {\n\t\treturn ES5internalSlots['[[DefaultValue]]'](input, arguments[1]);\n\t}\n\treturn ES5internalSlots['[[DefaultValue]]'](input);\n};\n","/**\n * @license\n * Video.js 6.13.0 \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\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar window = _interopDefault(require('global/window'));\nvar document = _interopDefault(require('global/document'));\nvar tsml = _interopDefault(require('tsml'));\nvar safeParseTuple = _interopDefault(require('safe-json-parse/tuple'));\nvar xhr = _interopDefault(require('xhr'));\nvar vtt = _interopDefault(require('videojs-vtt.js'));\n\nvar version = \"6.13.0\";\n\n/**\n * @file browser.js\n * @module browser\n */\nvar USER_AGENT = window.navigator && window.navigator.userAgent || '';\nvar webkitVersionMap = /AppleWebKit\\/([\\d.]+)/i.exec(USER_AGENT);\nvar appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nvar IS_IPAD = /iPad/i.test(USER_AGENT);\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/\nvar IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\nvar IS_IPOD = /iPod/i.test(USER_AGENT);\nvar IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nvar IOS_VERSION = function () {\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n\n if (match && match[1]) {\n return match[1];\n }\n return null;\n}();\n\nvar IS_ANDROID = /Android/i.test(USER_AGENT);\nvar 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 var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i);\n\n if (!match) {\n return null;\n }\n\n var major = match[1] && parseFloat(match[1]);\n var minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n }\n return null;\n}();\n\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nvar IS_OLD_ANDROID = IS_ANDROID && /webkit/i.test(USER_AGENT) && ANDROID_VERSION < 2.3;\nvar IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nvar IS_FIREFOX = /Firefox/i.test(USER_AGENT);\nvar IS_EDGE = /Edge/i.test(USER_AGENT);\nvar IS_CHROME = !IS_EDGE && (/Chrome/i.test(USER_AGENT) || /CriOS/i.test(USER_AGENT));\nvar CHROME_VERSION = function () {\n var match = USER_AGENT.match(/(Chrome|CriOS)\\/(\\d+)/);\n\n if (match && match[2]) {\n return parseFloat(match[2]);\n }\n return null;\n}();\nvar IS_IE8 = /MSIE\\s8\\.0/.test(USER_AGENT);\nvar IE_VERSION = function () {\n var result = /MSIE\\s(\\d+)\\.\\d/.exec(USER_AGENT);\n var version = result && parseFloat(result[1]);\n\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\n return version;\n}();\n\nvar IS_SAFARI = /Safari/i.test(USER_AGENT) && !IS_CHROME && !IS_ANDROID && !IS_EDGE;\nvar IS_ANY_SAFARI = (IS_SAFARI || IS_IOS) && !IS_CHROME;\n\nvar TOUCH_ENABLED = isReal() && ('ontouchstart' in window || window.navigator.maxTouchPoints || window.DocumentTouch && window.document instanceof window.DocumentTouch);\n\nvar BACKGROUND_SIZE_SUPPORTED = isReal() && 'backgroundSize' in window.document.createElement('video').style;\n\nvar browser = (Object.freeze || Object)({\n\tIS_IPAD: IS_IPAD,\n\tIS_IPHONE: IS_IPHONE,\n\tIS_IPOD: IS_IPOD,\n\tIS_IOS: IS_IOS,\n\tIOS_VERSION: IOS_VERSION,\n\tIS_ANDROID: IS_ANDROID,\n\tANDROID_VERSION: ANDROID_VERSION,\n\tIS_OLD_ANDROID: IS_OLD_ANDROID,\n\tIS_NATIVE_ANDROID: IS_NATIVE_ANDROID,\n\tIS_FIREFOX: IS_FIREFOX,\n\tIS_EDGE: IS_EDGE,\n\tIS_CHROME: IS_CHROME,\n\tCHROME_VERSION: CHROME_VERSION,\n\tIS_IE8: IS_IE8,\n\tIE_VERSION: IE_VERSION,\n\tIS_SAFARI: IS_SAFARI,\n\tIS_ANY_SAFARI: IS_ANY_SAFARI,\n\tTOUCH_ENABLED: TOUCH_ENABLED,\n\tBACKGROUND_SIZE_SUPPORTED: BACKGROUND_SIZE_SUPPORTED\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n\n\n\n\n\n\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar taggedTemplateLiteralLoose = function (strings, raw) {\n strings.raw = raw;\n return strings;\n};\n\n/**\n * @file obj.js\n * @module obj\n */\n\n/**\n * @callback obj:EachCallback\n *\n * @param {Mixed} 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 {Mixed} accum\n * The value that is accumulating over the reduce loop.\n *\n * @param {Mixed} 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 {Mixed}\n * The new accumulated value.\n */\nvar 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 */\nvar keys = function keys(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(function (key) {\n return fn(object[key], key);\n });\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 {Mixed} [initial = 0]\n * Starting value\n *\n * @return {Mixed}\n * The final accumulated value.\n */\nfunction reduce(object, fn) {\n var initial = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n return keys(object).reduce(function (accum, key) {\n return fn(accum, object[key], key);\n }, initial);\n}\n\n/**\n * Object.assign-style object shallow merge/extend.\n *\n * @param {Object} target\n * @param {Object} ...sources\n * @return {Object}\n */\nfunction assign(target) {\n for (var _len = arguments.length, sources = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n if (Object.assign) {\n return Object.assign.apply(Object, [target].concat(sources));\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n target[key] = value;\n });\n });\n\n return target;\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 === 'undefined' ? 'undefined' : _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 * @file create-logger.js\n * @module create-logger\n */\n// This is the private tracking variable for the logging history.\nvar history = [];\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @private\n * @param {string} type\n * The name of the console method to use.\n *\n * @param {Array} args\n * The arguments to be passed to the matching console method.\n */\nvar LogByTypeFactory = function LogByTypeFactory(name, log) {\n return function (type, level, args, stringify) {\n var lvl = log.levels[level];\n var lvlRegExp = new RegExp('^(' + lvl + ')$');\n\n if (type !== 'log') {\n\n // Add the type to the front of the message when it's not \"log\".\n args.unshift(type.toUpperCase() + ':');\n }\n\n // Add console prefix after adding to history.\n args.unshift(name + ':');\n\n // Add a clone of the args at this point to history.\n if (history) {\n history.push([].concat(args));\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.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 var fn = window.console[type];\n\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.console.info || window.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\n // IEs previous to 11 log objects uselessly as \"[object Object]\"; so, JSONify\n // objects and arrays for those less-capable browsers.\n if (stringify) {\n args = args.map(function (a) {\n if (isObject(a) || Array.isArray(a)) {\n try {\n return JSON.stringify(a);\n } catch (x) {\n return String(a);\n }\n }\n\n // Cast to string before joining, so we get null and undefined explicitly\n // included in output (as we would in a modern console).\n return String(a);\n }).join(' ');\n }\n\n // Old IE versions do not allow .apply() for console methods (they are\n // reported as objects rather than functions).\n if (!fn.apply) {\n fn(args);\n } else {\n fn[Array.isArray(args) ? 'apply' : 'call'](window.console, args);\n }\n };\n};\n\nfunction createLogger$1(name) {\n // This is the private tracking variable for logging level.\n var level = 'info';\n\n // the curried logByType bound to the specific log and history\n var logByType = void 0;\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 * Mixed[]\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 {Mixed[]} args\n * One or more messages or objects that should be logged.\n */\n var log = function log() {\n var stringify = log.stringify || IE_VERSION && IE_VERSION < 11;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n logByType('log', level, args, stringify);\n };\n\n // This is the logByType helper that the logging methods below use\n logByType = LogByTypeFactory(name, log);\n\n /**\n * Create a new sublogger which chains the old name to the new name.\n *\n * For example, doing `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} name\n * The name to add call the new logger\n * @return {Object}\n */\n log.createLogger = function (subname) {\n return createLogger$1(name + ': ' + subname);\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 {string} [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 = function (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 = function () {\n return history ? [].concat(history) : [];\n };\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 = function (fname) {\n return (history || []).filter(function (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 = function () {\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 = function () {\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 = function () {\n if (history === null) {\n history = [];\n }\n };\n\n /**\n * Logs error messages. Similar to `console.error`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as an error\n */\n log.error = function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return logByType('error', level, args);\n };\n\n /**\n * Logs warning messages. Similar to `console.warn`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as a warning.\n */\n log.warn = function () {\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return logByType('warn', level, args);\n };\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 {Mixed[]} args\n * One or more messages or objects that should be logged as debug.\n */\n log.debug = function () {\n for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return logByType('debug', level, args);\n };\n\n return log;\n}\n\n/**\n * @file log.js\n * @module log\n */\nvar log = createLogger$1('VIDEOJS');\nvar createLogger = log.createLogger;\n\n/**\n * @file computed-style.js\n * @module computed-style\n */\n/**\n * A safe getComputedStyle with an IE8 fallback.\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 null-check to\n * 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 *\n * @static\n * @const\n */\nfunction computedStyle(el, prop) {\n if (!el || !prop) {\n return '';\n }\n\n if (typeof window.getComputedStyle === 'function') {\n var cs = window.getComputedStyle(el);\n\n return cs ? cs[prop] : '';\n }\n\n return el.currentStyle[prop] || '';\n}\n\nvar _templateObject = taggedTemplateLiteralLoose(['Setting attributes in the second argument of createEl()\\n has been deprecated. Use the third argument instead.\\n createEl(type, properties, attributes). Attempting to set ', ' to ', '.'], ['Setting attributes in the second argument of createEl()\\n has been deprecated. Use the third argument instead.\\n createEl(type, properties, attributes). Attempting to set ', ' to ', '.']);\n\n/**\n * @file dom.js\n * @module dom\n */\n/**\n * Detect if a value is a string with any non-whitespace characters.\n *\n * @param {string} str\n * The string to check\n *\n * @return {boolean}\n * - True if the string is non-blank\n * - False otherwise\n *\n */\nfunction isNonBlankString(str) {\n return typeof str === 'string' && /\\S/.test(str);\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 * @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 *\n */\nfunction throwIfWhitespace(str) {\n if (/\\s/.test(str)) {\n throw new Error('class has illegal whitespace characters');\n }\n}\n\n/**\n * Produce a regular expression for matching a className within an elements className.\n *\n * @param {string} className\n * The className to generate the RegExp for.\n *\n * @return {RegExp}\n * The RegExp that will check for a specific `className` in an elements\n * className.\n */\nfunction classRegExp(className) {\n return new RegExp('(^|\\\\s)' + className + '($|\\\\s)');\n}\n\n/**\n * Whether the current DOM interface appears to be real.\n *\n * @return {Boolean}\n */\nfunction isReal() {\n return (\n\n // Both document and window will never be undefined thanks to `global`.\n document === window.document &&\n\n // In IE < 9, DOM methods return \"object\" as their type, so all we can\n // confidently check is that it exists.\n typeof document.createElement !== 'undefined'\n );\n}\n\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @param {Mixed} value\n * The thing to check\n *\n * @return {boolean}\n * - True if it is a DOM element\n * - 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 *\n */\nfunction isInFrame() {\n\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.parent !== window.self;\n } catch (x) {\n return true;\n }\n}\n\n/**\n * Creates functions to query the DOM using a given method.\n *\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[method](null);\n }\n if (isNonBlankString(context)) {\n context = document.querySelector(context);\n }\n\n var ctx = isEl(context) ? context : document;\n\n return ctx[method] && ctx[method](selector);\n };\n}\n\n/**\n * Creates an element and applies properties.\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 {String|Element|TextNode|Array|Function} [content]\n * Contents for the element (see: {@link dom:normalizeContent})\n *\n * @return {Element}\n * The element that was created.\n */\nfunction createEl() {\n var tagName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'div';\n var properties = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var content = arguments[3];\n\n var el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function (propName) {\n var val = properties[propName];\n\n // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log.warn(tsml(_templateObject, propName, val));\n el.setAttribute(propName, val);\n\n // Handle textContent since it's not supported everywhere and we have a\n // method for it.\n } else if (propName === 'textContent') {\n textContent(el, val);\n } else {\n el[propName] = val;\n }\n });\n\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n if (content) {\n appendContent(el, content);\n }\n\n return el;\n}\n\n/**\n * Injects text into an element, replacing any existing contents entirely.\n *\n * @param {Element} 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 CSS class\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 * - True if the element had the class\n * - False otherwise.\n *\n * @throws {Error}\n * Throws an error if `classToCheck` has white space.\n */\nfunction hasClass(element, classToCheck) {\n throwIfWhitespace(classToCheck);\n if (element.classList) {\n return element.classList.contains(classToCheck);\n }\n return classRegExp(classToCheck).test(element.className);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element\n * Element to add class name to.\n *\n * @param {string} classToAdd\n * Class name to add.\n *\n * @return {Element}\n * The dom element with the added class name.\n */\nfunction addClass(element, classToAdd) {\n if (element.classList) {\n element.classList.add(classToAdd);\n\n // Don't need to `throwIfWhitespace` here because `hasElClass` will do it\n // in the case of classList not being supported.\n } else if (!hasClass(element, classToAdd)) {\n element.className = (element.className + ' ' + classToAdd).trim();\n }\n\n return element;\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element\n * Element to remove a class name from.\n *\n * @param {string} classToRemove\n * Class name to remove\n *\n * @return {Element}\n * The dom element with class name removed.\n */\nfunction removeClass(element, classToRemove) {\n if (element.classList) {\n element.classList.remove(classToRemove);\n } else {\n throwIfWhitespace(classToRemove);\n element.className = element.className.split(/\\s+/).filter(function (c) {\n return c !== classToRemove;\n }).join(' ');\n }\n\n return element;\n}\n\n/**\n * The callback definition for toggleElClass.\n *\n * @callback Dom~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 the `classToToggle` will get added to `element`.\n * - If false the `classToToggle` will get removed from `element`.\n * - If undefined this callback will be ignored\n */\n\n/**\n * Adds or removes a CSS class name on 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 Dom~PredicateCallback}\n *\n * @return {Element}\n * The element with a class that has been toggled.\n */\nfunction toggleClass(element, classToToggle, predicate) {\n\n // This CANNOT use `classList` internally because IE does not support the\n // second parameter to the `classList.toggle()` method! Which is fine because\n // `classList` will be used by the add/remove functions.\n var has = hasClass(element, classToToggle);\n\n if (typeof predicate === 'function') {\n predicate = predicate(element, classToToggle);\n }\n\n if (typeof predicate !== 'boolean') {\n predicate = !has;\n }\n\n // If the necessary class operation matches the current state of the\n // element, no action is required.\n if (predicate === has) {\n return;\n }\n\n if (predicate) {\n addClass(element, classToToggle);\n } else {\n removeClass(element, classToToggle);\n }\n\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 var attrValue = attributes[attrName];\n\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 * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag\n * Element from which to get tag attributes.\n *\n * @return {Object}\n * All attributes of the element.\n */\nfunction getAttributes(tag) {\n var obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n var knownBooleans = ',' + 'autoplay,controls,playsinline,loop,muted,default,defaultMuted' + ',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n var attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n var attrName = attrs[i].name;\n var attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(',' + attrName + ',') !== -1) {\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\n obj[attrName] = attrVal;\n }\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 * 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 while dragging controls\n */\nfunction blockTextSelection() {\n document.body.focus();\n document.onselectstart = function () {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n */\nfunction unblockTextSelection() {\n document.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\n */\nfunction getBoundingClientRect(el) {\n if (el && el.getBoundingClientRect && el.parentNode) {\n var rect = el.getBoundingClientRect();\n var result = {};\n\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(function (k) {\n if (rect[k] !== undefined) {\n result[k] = rect[k];\n }\n });\n\n if (!result.height) {\n result.height = parseFloat(computedStyle(el, 'height'));\n }\n\n if (!result.width) {\n result.width = parseFloat(computedStyle(el, 'width'));\n }\n\n return result;\n }\n}\n\n/**\n * The postion 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 on top\n */\n\n/**\n * Offset Left.\n * getBoundingClientRect technique from\n * 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 var box = void 0;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n var docEl = document.documentElement;\n var body = document.body;\n\n var clientLeft = docEl.clientLeft || body.clientLeft || 0;\n var scrollLeft = window.pageXOffset || body.scrollLeft;\n var left = box.left + scrollLeft - clientLeft;\n\n var clientTop = docEl.clientTop || body.clientTop || 0;\n var scrollTop = window.pageYOffset || body.scrollTop;\n var top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n\n/**\n * x and y coordinates for a dom element or mouse pointer\n *\n * @typedef {Object} 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 pointer position in element\n * Returns an object with x and y coordinates.\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 {EventTarget~Event} event\n * Event object\n *\n * @return {Dom~Coordinates}\n * A Coordinates object corresponding to the mouse position.\n *\n */\nfunction getPointerPosition(el, event) {\n var position = {};\n var box = findPosition(el);\n var boxW = el.offsetWidth;\n var boxH = el.offsetHeight;\n\n var boxY = box.top;\n var boxX = box.left;\n var pageY = event.pageY;\n var pageX = event.pageX;\n\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, (boxY - pageY + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));\n\n return position;\n}\n\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @param {Mixed} value\n * Check if this value is a text node.\n *\n * @return {boolean}\n * - True if it is a text node\n * - 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 * Normalizes content for eventual insertion into the DOM.\n *\n * This allows a wide range of content definition methods, but protects\n * from falling into the trap of simply writing to `innerHTML`, which is\n * 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 {String|Element|TextNode|Array|Function} content\n * - String: Normalized into a text node.\n * - Element/TextNode: Passed through.\n * - Array: A one-dimensional array of strings, elements, nodes, or functions\n * (which return single strings, elements, or nodes).\n * - Function: If the sole argument, is expected to produce a string, element,\n * node, or array as defined above.\n *\n * @return {Array}\n * All of the content that was passed in normalized.\n */\nfunction normalizeContent(content) {\n\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(function (value) {\n\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\n if (isEl(value) || isTextNode(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /\\S/.test(value)) {\n return document.createTextNode(value);\n }\n }).filter(function (value) {\n return value;\n });\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 *\n * @param {String|Element|TextNode|Array|Function} content\n * See the `content` argument of {@link dom:normalizeContent}\n *\n * @return {Element}\n * The element with appended normalized content.\n */\nfunction appendContent(el, content) {\n normalizeContent(content).forEach(function (node) {\n return el.appendChild(node);\n });\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 {String|Element|TextNode|Array|Function} content\n * See the `content` argument of {@link dom:normalizeContent}\n *\n * @return {Element}\n * The element with inserted normalized content.\n *\n */\nfunction insertContent(el, content) {\n return appendContent(emptyEl(el), content);\n}\n\n/**\n * Check if event was a single left click\n *\n * @param {EventTarget~Event} event\n * Event object\n *\n * @return {boolean}\n * - True if a left click\n * - False if not a left click\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\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 if (IE_VERSION === 9) {\n // Ignore IE9\n\n return true;\n }\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\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 */\nvar $ = 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 were found.\n *\n */\nvar $$ = createQuerier('querySelectorAll');\n\n\n\nvar Dom = (Object.freeze || Object)({\n\tisReal: isReal,\n\tisEl: isEl,\n\tisInFrame: isInFrame,\n\tcreateEl: createEl,\n\ttextContent: textContent,\n\tprependTo: prependTo,\n\thasClass: hasClass,\n\taddClass: addClass,\n\tremoveClass: removeClass,\n\ttoggleClass: toggleClass,\n\tsetAttributes: setAttributes,\n\tgetAttributes: getAttributes,\n\tgetAttribute: getAttribute,\n\tsetAttribute: setAttribute,\n\tremoveAttribute: removeAttribute,\n\tblockTextSelection: blockTextSelection,\n\tunblockTextSelection: unblockTextSelection,\n\tgetBoundingClientRect: getBoundingClientRect,\n\tfindPosition: findPosition,\n\tgetPointerPosition: getPointerPosition,\n\tisTextNode: isTextNode,\n\temptyEl: emptyEl,\n\tnormalizeContent: normalizeContent,\n\tappendContent: appendContent,\n\tinsertContent: insertContent,\n\tisSingleLeftClick: isSingleLeftClick,\n\t$: $,\n\t$$: $$\n});\n\n/**\n * @file guid.js\n * @module guid\n */\n\n/**\n * Unique ID for an element or function\n * @type {Number}\n */\nvar _guid = 1;\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 dom-data.js\n * @module dom-data\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 elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nvar elIdAttr = 'vdata' + new Date().getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el\n * Element to store data for.\n *\n * @return {Object}\n * The cache object for that el that was passed in.\n */\nfunction getData(el) {\n var id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el\n * Check if this element has cached data.\n *\n * @return {boolean}\n * - True if the DOM element has cached data.\n * - False otherwise.\n */\nfunction hasData(el) {\n var id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el\n * Remove cached data for this element.\n */\nfunction removeData(el) {\n var id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch (e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\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 * @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 var data = getData(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 removeData(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} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} 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\n function returnTrue() {\n return true;\n }\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) {\n var old = event || window.event;\n\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 // TODO: Probably best to create a whitelist of event props\n for (var 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 if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' && key !== 'webkitMovementX' && key !== 'webkitMovementY') {\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;\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\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\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\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX !== null && event.clientX !== undefined) {\n var doc = document.documentElement;\n var body = document.body;\n\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\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\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Whether passive event listeners are supported\n */\nvar _supportsPassive = false;\n\n(function () {\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n _supportsPassive = true;\n }\n });\n\n window.addEventListener('test', null, opts);\n window.removeEventListener('test', null, opts);\n } catch (e) {\n // disregard\n }\n})();\n\n/**\n * Touch events Chrome expects to be passive\n */\nvar 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 {EventTarget~EventListener} fn\n * Event listener.\n */\nfunction on(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n var data = getData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) {\n data.handlers = {};\n }\n\n if (!data.handlers[type]) {\n data.handlers[type] = [];\n }\n\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash) {\n\n if (data.disabled) {\n return;\n }\n\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var 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.error(e);\n }\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n var options = false;\n\n if (_supportsPassive && passiveEvents.indexOf(type) > -1) {\n options = { passive: true };\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 {EventTarget~EventListener} [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 (!hasData(elem)) {\n return;\n }\n\n var data = getData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) {\n return;\n }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function removeType(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 (var t in data.handlers) {\n if (Object.prototype.hasOwnProperty.call(data.handlers || {}, t)) {\n removeType(elem, t);\n }\n }\n return;\n }\n\n var 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 (var n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\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 prevented\n * - 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 var elemData = hasData(elem) ? getData(elem) : {};\n var 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 = { type: event, target: elem };\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) {\n var targetData = getData(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 var func = function func() {\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\nvar Events = (Object.freeze || Object)({\n\tfixEvent: fixEvent,\n\ton: on,\n\toff: off,\n\ttrigger: trigger,\n\tone: one\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 */\nvar _windowLoaded = false;\nvar videojs$2 = void 0;\n\n/**\n * Set up any tags that have a data-setup `attribute` when the player is started.\n */\nvar autoSetup = function autoSetup() {\n\n // Protect against breakage in non-browser environments and check global autoSetup option.\n if (!isReal() || videojs$2.options.autoSetup === false) {\n return;\n }\n\n // One day, when we stop supporting IE8, go back to this, but in the meantime...*hack hack hack*\n // var vids = Array.prototype.slice.call(document.getElementsByTagName('video'));\n // var audios = Array.prototype.slice.call(document.getElementsByTagName('audio'));\n // var mediaEls = vids.concat(audios);\n\n // Because IE8 doesn't support calling slice on a node list, we need to loop\n // through each list of elements to build up a new, combined list of elements.\n var vids = document.getElementsByTagName('video');\n var audios = document.getElementsByTagName('audio');\n var divs = document.getElementsByTagName('video-js');\n var mediaEls = [];\n\n if (vids && vids.length > 0) {\n for (var i = 0, e = vids.length; i < e; i++) {\n mediaEls.push(vids[i]);\n }\n }\n\n if (audios && audios.length > 0) {\n for (var _i = 0, _e = audios.length; _i < _e; _i++) {\n mediaEls.push(audios[_i]);\n }\n }\n\n if (divs && divs.length > 0) {\n for (var _i2 = 0, _e2 = divs.length; _i2 < _e2; _i2++) {\n mediaEls.push(divs[_i2]);\n }\n }\n\n // Check if any media elements exist\n if (mediaEls && mediaEls.length > 0) {\n\n for (var _i3 = 0, _e3 = mediaEls.length; _i3 < _e3; _i3++) {\n var mediaEl = mediaEls[_i3];\n\n // Check if element exists, has getAttribute func.\n // IE seems to consider typeof el.getAttribute == 'object' instead of\n // 'function' like expected, at least when loading the player immediately.\n if (mediaEl && mediaEl.getAttribute) {\n\n // Make sure this player hasn't already been set up.\n if (mediaEl.player === undefined) {\n var 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$2(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 if (vjs) {\n videojs$2 = vjs;\n }\n\n window.setTimeout(autoSetup, wait);\n}\n\nif (isReal() && document.readyState === 'complete') {\n _windowLoaded = true;\n} else {\n /**\n * Listen for the load event on window, and set _windowLoaded to true.\n *\n * @listens load\n */\n one(window, 'load', function () {\n _windowLoaded = true;\n });\n}\n\n/**\n * @file stylesheet.js\n * @module stylesheet\n */\n/**\n * Create a DOM syle 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 */\nvar createStyleElement = function createStyleElement(className) {\n var style = document.createElement('style');\n\n style.className = className;\n\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 */\nvar setTextContent = function setTextContent(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n\n/**\n * @file fn.js\n * @module fn\n */\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events.\n *\n * @param {Mixed} 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 */\nvar bind = function bind(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 var bound = function bound() {\n return fn.apply(context, arguments);\n };\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\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 * @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 */\nvar throttle = function throttle(fn, wait) {\n var last = Date.now();\n\n var throttled = function throttled() {\n var now = Date.now();\n\n if (now - last >= wait) {\n fn.apply(undefined, arguments);\n last = now;\n }\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 * @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 */\nvar debounce = function debounce(func, wait, immediate) {\n var context = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : window;\n\n var timeout = void 0;\n\n var cancel = function cancel() {\n context.clearTimeout(timeout);\n timeout = null;\n };\n\n /* eslint-disable consistent-this */\n var debounced = function debounced() {\n var self = this;\n var args = arguments;\n\n var _later = function later() {\n timeout = null;\n _later = null;\n if (!immediate) {\n func.apply(self, args);\n }\n };\n\n if (!timeout && immediate) {\n func.apply(self, args);\n }\n\n context.clearTimeout(timeout);\n timeout = context.setTimeout(_later, wait);\n };\n /* eslint-enable consistent-this */\n\n debounced.cancel = cancel;\n\n return debounced;\n};\n\n/**\n * @file src/js/event-target.js\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 */\nvar EventTarget = function EventTarget() {};\n\n/**\n * A Custom DOM event.\n *\n * @typedef {Object} EventTarget~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 EventTarget~EventListener\n * @this {EventTarget}\n *\n * @param {EventTarget~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 * @private\n */\nEventTarget.prototype.allowedEvents_ = {};\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 {EventTarget~EventListener} fn\n * The function to call with `EventTarget`s\n */\nEventTarget.prototype.on = function (type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n on(this, type, fn);\n this.addEventListener = ael;\n};\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.prototype.addEventListener = EventTarget.prototype.on;\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 {EventTarget~EventListener} fn\n * The function to remove.\n */\nEventTarget.prototype.off = function (type, fn) {\n off(this, type, fn);\n};\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.prototype.removeEventListener = EventTarget.prototype.off;\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 {EventTarget~EventListener} fn\n * The function to be called once for each event name.\n */\nEventTarget.prototype.one = function (type, fn) {\n // Remove the addEventListener alialing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n one(this, type, fn);\n this.addEventListener = ael;\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|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 */\nEventTarget.prototype.trigger = function (event) {\n var type = event.type || event;\n\n if (typeof event === 'string') {\n event = { type: type };\n }\n event = fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n trigger(this, event);\n};\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.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\n/**\n * @file mixins/evented.js\n * @module evented\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 */\nvar isEvented = function isEvented(object) {\n return object instanceof EventTarget || !!object.eventBusEl_ && ['on', 'one', 'off', 'trigger'].every(function (k) {\n return typeof object[k] === 'function';\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 */\nvar isValidEventType = function isValidEventType(type) {\n return (\n // The regex here verifies that the `type` contains at least one non-\n // whitespace character.\n typeof type === 'string' && /\\S/.test(type) || Array.isArray(type) && !!type.length\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 target does not appear to be a valid event target.\n *\n * @param {Object} target\n * The object to test.\n */\nvar validateTarget = function validateTarget(target) {\n if (!target.nodeName && !isEvented(target)) {\n throw new Error('Invalid target; 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 */\nvar validateEventType = function validateEventType(type) {\n if (!isValidEventType(type)) {\n throw new Error('Invalid event type; 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 */\nvar validateListener = function validateListener(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Invalid listener; 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 * @return {Object}\n * An object containing useful values for `on()` or `one()` calls.\n */\nvar normalizeListenArgs = function normalizeListenArgs(self, args) {\n\n // If the number of arguments is less than 3, the target is always the\n // evented object itself.\n var isTargetingSelf = args.length < 3 || args[0] === self || args[0] === self.eventBusEl_;\n var target = void 0;\n var type = void 0;\n var listener = void 0;\n\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\n type = args[0];\n listener = args[1];\n } else {\n target = args[0];\n type = args[1];\n listener = args[2];\n }\n\n validateTarget(target);\n validateEventType(type);\n validateListener(listener);\n\n listener = bind(self, listener);\n\n return { isTargetingSelf: isTargetingSelf, target: target, type: type, listener: listener };\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 */\nvar listen = function listen(target, method, type, listener) {\n validateTarget(target);\n\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 capabilites to an object which is passed\n * to {@link module:evented|evented}.\n *\n * @mixin EventedMixin\n */\nvar EventedMixin = {\n\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: function on$$1() {\n var _this = this;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _normalizeListenArgs = normalizeListenArgs(this, args),\n isTargetingSelf = _normalizeListenArgs.isTargetingSelf,\n target = _normalizeListenArgs.target,\n type = _normalizeListenArgs.type,\n listener = _normalizeListenArgs.listener;\n\n listen(target, 'on', type, listener);\n\n // If this object is listening to another evented object.\n if (!isTargetingSelf) {\n\n // If this object is disposed, remove the listener.\n var removeListenerOnDispose = function removeListenerOnDispose() {\n return _this.off(target, type, listener);\n };\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 var removeRemoverOnTargetDispose = function removeRemoverOnTargetDispose() {\n return _this.off('dispose', removeListenerOnDispose);\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 removeRemoverOnTargetDispose.guid = listener.guid;\n\n listen(this, 'on', 'dispose', removeListenerOnDispose);\n listen(target, 'on', 'dispose', removeRemoverOnTargetDispose);\n }\n },\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 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: function one$$1() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var _normalizeListenArgs2 = normalizeListenArgs(this, args),\n isTargetingSelf = _normalizeListenArgs2.isTargetingSelf,\n target = _normalizeListenArgs2.target,\n type = _normalizeListenArgs2.type,\n listener = _normalizeListenArgs2.listener;\n\n // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'one', type, listener);\n\n // Targeting another evented object.\n } else {\n var wrapper = function wrapper() {\n for (var _len3 = arguments.length, largs = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n largs[_key3] = arguments[_key3];\n }\n\n _this2.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\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: function off$$1(targetOrType, typeOrListener, listener) {\n\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 var target = targetOrType;\n var type = typeOrListener;\n\n // Fail fast and in a meaningful way!\n validateTarget(target);\n validateEventType(type);\n validateListener(listener);\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\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\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 * @returns {boolean}\n * Whether or not the default behavior was prevented.\n */\n trigger: function trigger$$1(event, hash) {\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) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var eventBusKey = options.eventBusKey;\n\n // Set or create the eventBusEl_.\n\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', { className: 'vjs-event-bus' });\n }\n\n assign(target, EventedMixin);\n\n // When any evented object is disposed, it removes all its listeners.\n target.on('dispose', function () {\n target.off();\n window.setTimeout(function () {\n target.eventBusEl_ = null;\n }, 0);\n });\n\n return target;\n}\n\n/**\n * @file mixins/stateful.js\n * @module stateful\n */\n/**\n * Contains methods that provide statefulness to an object which is passed\n * to {@link module:stateful}.\n *\n * @mixin StatefulMixin\n */\nvar StatefulMixin = {\n\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 /**\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 * @returns {Object|undefined}\n * An object containing changes that occurred. If no changes\n * occurred, returns `undefined`.\n */\n setState: function setState(stateUpdates) {\n var _this = this;\n\n // Support providing the `stateUpdates` state as a function.\n if (typeof stateUpdates === 'function') {\n stateUpdates = stateUpdates();\n }\n\n var changes = void 0;\n\n each(stateUpdates, function (value, key) {\n\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\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 /**\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: changes,\n type: 'statechanged'\n });\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 * @returns {Object}\n * Returns the `target`.\n */\nfunction stateful(target, defaultState) {\n 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 = 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\n return target;\n}\n\n/**\n * @file to-title-case.js\n * @module to-title-case\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 */\nfunction toTitleCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.charAt(0).toUpperCase() + string.slice(1);\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 */\nfunction titleCaseEquals(str1, str2) {\n return toTitleCase(str1) === toTitleCase(str2);\n}\n\n/**\n * @file merge-options.js\n * @module merge-options\n */\n/**\n * Deep-merge one or more options objects, recursively merging **only** plain\n * object properties.\n *\n * @param {Object[]} sources\n * One or more objects to merge into a new object.\n *\n * @returns {Object}\n * A new object that is the merged result of all sources.\n */\nfunction mergeOptions() {\n var result = {};\n\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n if (!isPlain(value)) {\n result[key] = value;\n return;\n }\n\n if (!isPlain(result[key])) {\n result[key] = {};\n }\n\n result[key] = mergeOptions(result[key], value);\n });\n });\n\n return result;\n}\n\n/**\n * Player Component - Base class for all UI objects\n *\n * @file component.js\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 */\n\nvar Component = function () {\n\n /**\n * A callback that is called when a component is ready. Does not have any\n * paramters and any callback value will be ignored.\n *\n * @callback Component~ReadyCallback\n * @this Component\n */\n\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 {Object[]} [options.children]\n * An array of children objects to intialize 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 {Component~ReadyCallback} [ready]\n * Function that gets called when the `Component` is ready.\n */\n function Component(player, options, ready) {\n classCallCheck(this, Component);\n\n\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\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = mergeOptions({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = mergeOptions(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 var id = player && player.id && player.id() || 'no_player';\n\n this.id_ = id + '_component_' + newGUID();\n }\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\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, { eventBusKey: this.el_ ? 'el_' : null });\n }\n stateful(this, this.constructor.defaultState);\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the `Component` and all child components.\n *\n * @fires Component#dispose\n */\n\n\n Component.prototype.dispose = function dispose() {\n\n /**\n * Triggered when a `Component` is disposed.\n *\n * @event Component#dispose\n * @type {EventTarget~Event}\n *\n * @property {boolean} [bubbles=false]\n * set to false so that the close event does not\n * bubble up\n */\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (var 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\n if (this.el_) {\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n removeData(this.el_);\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 * 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\n\n Component.prototype.player = function 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:mergeOptions}\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 * @deprecated since version 5\n */\n\n\n Component.prototype.options = function options(obj) {\n log.warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(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\n\n Component.prototype.el = function 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\n\n Component.prototype.createEl = function createEl$$1(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\n\n Component.prototype.localize = function localize(string, tokens) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : string;\n\n var code = this.player_.language && this.player_.language();\n var languages = this.player_.languages && this.player_.languages();\n var language = languages && languages[code];\n var primaryCode = code && code.split('-')[0];\n var primaryLang = languages && languages[primaryCode];\n\n var localizedString = defaultValue;\n\n if (language && language[string]) {\n localizedString = language[string];\n } else if (primaryLang && primaryLang[string]) {\n localizedString = primaryLang[string];\n }\n\n if (tokens) {\n localizedString = localizedString.replace(/\\{(\\d+)\\}/g, function (match, index) {\n var value = tokens[index - 1];\n var ret = value;\n\n if (typeof value === 'undefined') {\n ret = match;\n }\n\n return ret;\n });\n }\n\n return localizedString;\n };\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\n\n Component.prototype.contentEl = function 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\n\n Component.prototype.id = function 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\n\n Component.prototype.name = function 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\n\n Component.prototype.children = function 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\n\n Component.prototype.getChildById = function 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\n\n Component.prototype.getChild = function getChild(name) {\n if (!name) {\n return;\n }\n\n name = toTitleCase(name);\n\n return this.childNameIndex_[name];\n };\n\n /**\n * Add a child `Component` inside the current `Component`.\n *\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 * @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\n\n Component.prototype.addChild = function addChild(child) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.children_.length;\n\n var component = void 0;\n var componentName = void 0;\n\n // If child is a string, create component with options\n if (typeof child === 'string') {\n componentName = toTitleCase(child);\n\n var 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 var ComponentClass = Component.getComponent(componentClassName);\n\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\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.splice(index, 0, component);\n\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(component.name());\n\n if (componentName) {\n this.childNameIndex_[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 var childNodes = this.contentEl().children;\n var refNode = childNodes[index] || null;\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\n\n Component.prototype.removeChild = function removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n var childFound = false;\n\n for (var 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\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n var compEl = component.el();\n\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\n\n Component.prototype.initChildren = function initChildren() {\n var _this = this;\n\n var children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n var parentOptions = this.options_;\n\n var handleAdd = function handleAdd(child) {\n var name = child.name;\n var 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 var newChild = _this.addChild(name, opts);\n\n if (newChild) {\n _this[name] = newChild;\n }\n };\n\n // Allow for an array of children details to passed in the options\n var workingChildren = void 0;\n var Tech = Component.getComponent('Tech');\n\n if (Array.isArray(children)) {\n workingChildren = children;\n } else {\n workingChildren = Object.keys(children);\n }\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(function (child) {\n var name = void 0;\n var opts = void 0;\n\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\n return { name: name, opts: opts };\n }).filter(function (child) {\n // we have to make sure that child.name isn't in the techOrder since\n // techs are registerd as Components but can't aren't compatible\n // See https://github.com/videojs/video.js/issues/2772\n var c = Component.getComponent(child.opts.componentClass || toTitleCase(child.name));\n\n return c && !Tech.isTech(c);\n }).forEach(handleAdd);\n }\n };\n\n /**\n * Builds the default DOM class name. Should be overriden by sub-components.\n *\n * @return {string}\n * The DOM class name for this object.\n *\n * @abstract\n */\n\n\n Component.prototype.buildCSSClass = function 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 * @return {Component}\n * Returns itself; method can be chained.\n */\n\n\n Component.prototype.ready = function ready(fn) {\n var sync = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!fn) {\n return;\n }\n\n if (!this.isReady_) {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n return;\n }\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\n\n Component.prototype.triggerReady = function triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggered asynchronously\n this.setTimeout(function () {\n var readyQueue = this.readyQueue_;\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n\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 {EventTarget~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\n\n Component.prototype.$ = function $$$1(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\n\n Component.prototype.$$ = function $$$$1(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\n\n Component.prototype.hasClass = function hasClass$$1(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} classToAdd\n * CSS class name to add\n */\n\n\n Component.prototype.addClass = function addClass$$1(classToAdd) {\n addClass(this.el_, classToAdd);\n };\n\n /**\n * Remove a CSS class name from the `Component`s element.\n *\n * @param {string} classToRemove\n * CSS class name to remove\n */\n\n\n Component.prototype.removeClass = function removeClass$$1(classToRemove) {\n removeClass(this.el_, classToRemove);\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 based on (@link Component#hasClass}\n *\n * @param {boolean|Dom~predicate} [predicate]\n * An {@link Dom~predicate} function or a boolean\n */\n\n\n Component.prototype.toggleClass = function toggleClass$$1(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\n\n Component.prototype.show = function 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\n\n Component.prototype.hide = function 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\n\n Component.prototype.lockShowing = function 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\n\n Component.prototype.unlockShowing = function 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 attibute 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\n\n Component.prototype.getAttribute = function getAttribute$$1(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\n\n Component.prototype.setAttribute = function setAttribute$$1(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\n\n Component.prototype.removeAttribute = function removeAttribute$$1(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|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n\n\n Component.prototype.width = function 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|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n\n\n Component.prototype.height = function 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\n\n Component.prototype.dimensions = function 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}\n * The dimension when getting or 0 if unset\n */\n\n\n Component.prototype.dimension = function 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 {EventTarget~Event}\n */\n this.trigger('componentresize');\n }\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 var val = this.el_.style[widthOrHeight];\n var pxIndex = val.indexOf('px');\n\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(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\n\n Component.prototype.currentDimension = function currentDimension(widthOrHeight) {\n var computedWidthOrHeight = 0;\n\n if (widthOrHeight !== 'width' && widthOrHeight !== 'height') {\n throw new Error('currentDimension only accepts width or height value');\n }\n\n if (typeof window.getComputedStyle === 'function') {\n var computedStyle = window.getComputedStyle(this.el_);\n\n computedWidthOrHeight = computedStyle.getPropertyValue(widthOrHeight) || computedStyle[widthOrHeight];\n }\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 on IE8 and wherever getComputedStyle doesn't exist.\n if (computedWidthOrHeight === 0) {\n var rule = 'offset' + toTitleCase(widthOrHeight);\n\n computedWidthOrHeight = this.el_[rule];\n }\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\n\n Component.prototype.currentDimensions = function 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\n\n Component.prototype.currentWidth = function 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\n\n Component.prototype.currentHeight = function currentHeight() {\n return this.currentDimension('height');\n };\n\n /**\n * Set the focus to this component\n */\n\n\n Component.prototype.focus = function focus() {\n this.el_.focus();\n };\n\n /**\n * Remove the focus from this component\n */\n\n\n Component.prototype.blur = function blur() {\n this.el_.blur();\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 * @private\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\n\n Component.prototype.emitTapEvents = function emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n var touchStart = 0;\n var 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 var tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n var touchTimeThreshold = 200;\n\n var couldBeTap = void 0;\n\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 = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\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 var xdiff = event.touches[0].pageX - firstTouch.pageX;\n var ydiff = event.touches[0].pageY - firstTouch.pageY;\n var touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n var noTap = function noTap() {\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 var touchTime = new Date().getTime() - 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 {EventTarget~Event}\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\n\n Component.prototype.enableTouchActivity = function 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 var report = bind(this.player(), this.player().reportUserActivity);\n\n var touchHolding = void 0;\n\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\n var touchEnd = function touchEnd(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\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\n\n Component.prototype.setTimeout = function setTimeout(fn, timeout) {\n var _this2 = this;\n\n // declare as variables so they are properly available in timeout function\n // eslint-disable-next-line\n var timeoutId, disposeFn;\n\n fn = bind(this, fn);\n\n timeoutId = window.setTimeout(function () {\n _this2.off('dispose', disposeFn);\n fn();\n }, timeout);\n\n disposeFn = function disposeFn() {\n return _this2.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = 'vjs-timeout-' + timeoutId;\n\n this.on('dispose', disposeFn);\n\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\n\n Component.prototype.clearTimeout = function clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n var disposeFn = function disposeFn() {};\n\n disposeFn.guid = 'vjs-timeout-' + timeoutId;\n\n this.off('dispose', disposeFn);\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\n\n Component.prototype.setInterval = function setInterval(fn, interval) {\n var _this3 = this;\n\n fn = bind(this, fn);\n\n var intervalId = window.setInterval(fn, interval);\n\n var disposeFn = function disposeFn() {\n return _this3.clearInterval(intervalId);\n };\n\n disposeFn.guid = 'vjs-interval-' + intervalId;\n\n this.on('dispose', disposeFn);\n\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 inteval 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\n\n Component.prototype.clearInterval = function clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n var disposeFn = function disposeFn() {};\n\n disposeFn.guid = 'vjs-interval-' + intervalId;\n\n this.off('dispose', disposeFn);\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\n\n Component.prototype.requestAnimationFrame = function requestAnimationFrame(fn) {\n var _this4 = this;\n\n // declare as variables so they are properly available in rAF function\n // eslint-disable-next-line\n var id, disposeFn;\n\n if (this.supportsRaf_) {\n fn = bind(this, fn);\n\n id = window.requestAnimationFrame(function () {\n _this4.off('dispose', disposeFn);\n fn();\n });\n\n disposeFn = function disposeFn() {\n return _this4.cancelAnimationFrame(id);\n };\n\n disposeFn.guid = 'vjs-raf-' + id;\n this.on('dispose', disposeFn);\n\n return id;\n }\n\n // Fall back to using a timer.\n return this.setTimeout(fn, 1000 / 60);\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\n\n Component.prototype.cancelAnimationFrame = function cancelAnimationFrame(id) {\n if (this.supportsRaf_) {\n window.cancelAnimationFrame(id);\n\n var disposeFn = function disposeFn() {};\n\n disposeFn.guid = 'vjs-raf-' + id;\n\n this.off('dispose', disposeFn);\n\n return id;\n }\n\n // Fall back to using a timer.\n return this.clearTimeout(id);\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\n\n Component.registerComponent = function 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\n var Tech = Component.getComponent('Tech');\n\n // We need to make sure this check is only done if Tech has been registered.\n var isTech = Tech && Tech.isTech(ComponentToRegister);\n var isComp = Component === ComponentToRegister || Component.prototype.isPrototypeOf(ComponentToRegister.prototype);\n\n if (isTech || !isComp) {\n var reason = void 0;\n\n if (isTech) {\n reason = 'techs must be registered using Tech.registerTech()';\n } else {\n reason = 'must be a Component subclass';\n }\n\n throw new Error('Illegal component, \"' + name + '\"; ' + reason + '.');\n }\n\n name = toTitleCase(name);\n\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n var Player = Component.getComponent('Player');\n\n if (name === 'Player' && Player && Player.players) {\n var players = Player.players;\n var 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(function (pname) {\n return players[pname];\n }).every(Boolean)) {\n throw new Error('Can not register Player component after player has been created.');\n }\n }\n\n Component.components_[name] = ComponentToRegister;\n\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 {Component}\n * The `Component` that got registered under the given name.\n *\n * @deprecated In `videojs` 6 this will not return `Component`s that were not\n * registered using {@link Component.registerComponent}. Currently we\n * check the global `videojs` object for a `Component` name and\n * return that if it exists.\n */\n\n\n Component.getComponent = function getComponent(name) {\n if (!name) {\n return;\n }\n\n name = toTitleCase(name);\n\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n };\n\n return Component;\n}();\n\n/**\n * Whether or not this component supports `requestAnimationFrame`.\n *\n * This is exposed primarily for testing purposes.\n *\n * @private\n * @type {Boolean}\n */\n\n\nComponent.prototype.supportsRaf_ = typeof window.requestAnimationFrame === 'function' && typeof window.cancelAnimationFrame === 'function';\n\nComponent.registerComponent('Component', Component);\n\n/**\n * @file time-ranges.js\n * @module time-ranges\n */\n\n/**\n * Returns the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @function time-ranges:indexFunction\n *\n * @param {number} [index=0]\n * The range number to return the time for.\n *\n * @return {number}\n * The time that offset at the specified index.\n *\n * @depricated index must be set to a value, in the future this will throw an error.\n */\n\n/**\n * An object that contains ranges of time for various reasons.\n *\n * @typedef {Object} TimeRange\n *\n * @property {number} length\n * The number of time ranges represented by this Object\n *\n * @property {time-ranges:indexFunction} start\n * Returns the time offset at which a specified time range begins.\n *\n * @property {time-ranges:indexFunction} 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 * @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 * @param {string} fnName\n * The function name to use for logging\n *\n * @param {string} valueIndex\n * The proprety that should be used to get the time. should be '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 *\n * @depricated 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 * @param {Array} [ranges]\n * An array of time ranges.\n */\nfunction createTimeRangesObj(ranges) {\n if (ranges === undefined || ranges.length === 0) {\n return {\n length: 0,\n start: function start() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function end() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n}\n\n/**\n * Should create a fake `TimeRange` object which mimics an HTML5 time range instance.\n *\n * @param {number|Array} start\n * The start of a single range or an array of ranges\n *\n * @param {number} end\n * The end of a single range.\n *\n * @private\n */\nfunction createTimeRanges(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 * @file buffer.js\n * @module buffer\n */\n/**\n * Compute the percentage of the media that has been buffered.\n *\n * @param {TimeRange} buffered\n * The current `TimeRange` 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 var bufferedDuration = 0;\n var start = void 0;\n var end = void 0;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRanges(0, 0);\n }\n\n for (var 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\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n\n/**\n * @file fullscreen-api.js\n * @module fullscreen-api\n * @private\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 */\nvar FullscreenApi = {};\n\n// browser API methods\nvar apiMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'],\n// WebKit\n['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror'],\n// Old WebKit (Safari 5.1)\n['webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitfullscreenerror'],\n// Mozilla\n['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'],\n// Microsoft\n['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']];\n\nvar specApi = apiMap[0];\nvar browserApi = void 0;\n\n// determine the supported set of functions\nfor (var i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (var _i = 0; _i < browserApi.length; _i++) {\n FullscreenApi[specApi[_i]] = browserApi[_i];\n }\n}\n\n/**\n * @file media-error.js\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\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\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\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\n assign(this, value);\n }\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 * 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_CUSTOM\n * @property {string} 2 - MEDIA_ERR_ABORTED\n * @property {string} 3 - MEDIA_ERR_NETWORK\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// Add types as properties on MediaError\n// e.g. MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\nfor (var errNum = 0; errNum < MediaError.errorTypes.length; errNum++) {\n MediaError[MediaError.errorTypes[errNum]] = errNum;\n // values should be accessible on both the class and instance\n MediaError.prototype[MediaError.errorTypes[errNum]] = errNum;\n}\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, function (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/**\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 */\nvar trackToJson_ = function trackToJson_(track) {\n var ret = ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce(function (acc, prop, i) {\n\n if (track[prop]) {\n acc[prop] = track[prop];\n }\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\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 */\nvar textTracksToJson = function textTracksToJson(tech) {\n\n var trackEls = tech.$$('track');\n\n var trackObjs = Array.prototype.map.call(trackEls, function (t) {\n return t.track;\n });\n var tracks = Array.prototype.map.call(trackEls, function (trackEl) {\n var json = trackToJson_(trackEl.track);\n\n if (trackEl.src) {\n json.src = trackEl.src;\n }\n return json;\n });\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 */\nvar jsonToTextTracks = function jsonToTextTracks(json, tech) {\n json.forEach(function (track) {\n var addedTrack = tech.addRemoteTextTrack(track).track;\n\n if (!track.src && track.cues) {\n track.cues.forEach(function (cue) {\n return addedTrack.addCue(cue);\n });\n }\n });\n\n return tech.textTracks();\n};\n\nvar textTrackConverter = { textTracksToJson: textTracksToJson, jsonToTextTracks: jsonToTextTracks, trackToJson_: trackToJson_ };\n\n/**\n * @file modal-dialog.js\n */\nvar MODAL_CLASS_NAME = 'vjs-modal-dialog';\nvar ESC = 27;\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 */\n\nvar ModalDialog = function (_Component) {\n inherits(ModalDialog, _Component);\n\n /**\n * Create 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 {Mixed} [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.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 function ModalDialog(player, options) {\n classCallCheck(this, ModalDialog);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options));\n\n _this.opened_ = _this.hasBeenOpened_ = _this.hasBeenFilled_ = false;\n\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\n _this.descEl_ = createEl('p', {\n className: MODAL_CLASS_NAME + '-description vjs-control-text',\n id: _this.el().getAttribute('aria-describedby')\n });\n\n textContent(_this.descEl_, _this.description());\n _this.el_.appendChild(_this.descEl_);\n _this.el_.appendChild(_this.contentEl_);\n return _this;\n }\n\n /**\n * Create the `ModalDialog`'s DOM element\n *\n * @return {Element}\n * The DOM element that gets created.\n */\n\n\n ModalDialog.prototype.createEl = function createEl$$1() {\n return _Component.prototype.createEl.call(this, '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 });\n };\n\n ModalDialog.prototype.dispose = function dispose() {\n this.contentEl_ = null;\n this.descEl_ = null;\n this.previouslyActiveEl_ = null;\n\n _Component.prototype.dispose.call(this);\n };\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n ModalDialog.prototype.buildCSSClass = function buildCSSClass() {\n return MODAL_CLASS_NAME + ' vjs-hidden ' + _Component.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Handles `keydown` events on the document, looking for ESC, which closes\n * the modal.\n *\n * @param {EventTarget~Event} e\n * The keypress that triggered this event.\n *\n * @listens keydown\n */\n\n\n ModalDialog.prototype.handleKeyPress = function handleKeyPress(e) {\n if (e.which === ESC && this.closeable()) {\n this.close();\n }\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\n\n ModalDialog.prototype.label = function 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\n\n ModalDialog.prototype.description = function description() {\n var 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\n return desc;\n };\n\n /**\n * Opens the modal.\n *\n * @fires ModalDialog#beforemodalopen\n * @fires ModalDialog#modalopen\n */\n\n\n ModalDialog.prototype.open = function open() {\n if (!this.opened_) {\n var player = this.player();\n\n /**\n * Fired just before a `ModalDialog` is opened.\n *\n * @event ModalDialog#beforemodalopen\n * @type {EventTarget~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\n if (this.options_.pauseOnOpen && this.wasPlaying_) {\n player.pause();\n }\n\n if (this.closeable()) {\n this.on(this.el_.ownerDocument, 'keydown', bind(this, this.handleKeyPress));\n }\n\n // Hide controls and note if they were enabled.\n this.hadControls_ = player.controls();\n player.controls(false);\n\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 {EventTarget~Event}\n */\n this.trigger('modalopen');\n this.hasBeenOpened_ = true;\n }\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\n\n ModalDialog.prototype.opened = function 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\n\n ModalDialog.prototype.close = function close() {\n if (!this.opened_) {\n return;\n }\n var player = this.player();\n\n /**\n * Fired just before a `ModalDialog` is closed.\n *\n * @event ModalDialog#beforemodalclose\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalclose');\n this.opened_ = false;\n\n if (this.wasPlaying_ && this.options_.pauseOnOpen) {\n player.play();\n }\n\n if (this.closeable()) {\n this.off(this.el_.ownerDocument, 'keydown', bind(this, this.handleKeyPress));\n }\n\n if (this.hadControls_) {\n player.controls(true);\n }\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 {EventTarget~Event}\n */\n this.trigger('modalclose');\n this.conditionalBlur_();\n\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\n\n ModalDialog.prototype.closeable = function closeable(value) {\n if (typeof value === 'boolean') {\n var closeable = this.closeable_ = !!value;\n var close = this.getChild('closeButton');\n\n // If this is being made closeable and has no close button, add one.\n if (closeable && !close) {\n\n // The close button should be a child of the modal - not its\n // content element, so temporarily change the content element.\n var temp = this.contentEl_;\n\n this.contentEl_ = this.el_;\n close = this.addChild('closeButton', { controlText: 'Close Modal Dialog' });\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\n\n ModalDialog.prototype.fill = function 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 {Mixed} [content]\n * The same rules apply to this as apply to the `content` option.\n */\n\n\n ModalDialog.prototype.fillWith = function fillWith(content) {\n var contentEl = this.contentEl();\n var parentEl = contentEl.parentNode;\n var nextSiblingEl = contentEl.nextSibling;\n\n /**\n * Fired just before a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#beforemodalfill\n * @type {EventTarget~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 {EventTarget~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 var closeButton = this.getChild('closeButton');\n\n if (closeButton) {\n parentEl.appendChild(closeButton.el_);\n }\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\n\n ModalDialog.prototype.empty = function empty() {\n /**\n * Fired just before a `ModalDialog` is emptied.\n *\n * @event ModalDialog#beforemodalempty\n * @type {EventTarget~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 {EventTarget~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 {Mixed} [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 {Mixed}\n * The current content of the modal dialog\n */\n\n\n ModalDialog.prototype.content = function 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\n\n ModalDialog.prototype.conditionalFocus_ = function conditionalFocus_() {\n var activeEl = document.activeElement;\n var playerEl = this.player_.el_;\n\n this.previouslyActiveEl_ = null;\n\n if (playerEl.contains(activeEl) || playerEl === activeEl) {\n this.previouslyActiveEl_ = activeEl;\n\n this.focus();\n\n this.on(document, 'keydown', this.handleKeyDown);\n }\n };\n\n /**\n * conditionally blur the element and refocus the last focused element\n *\n * @private\n */\n\n\n ModalDialog.prototype.conditionalBlur_ = function conditionalBlur_() {\n if (this.previouslyActiveEl_) {\n this.previouslyActiveEl_.focus();\n this.previouslyActiveEl_ = null;\n }\n\n this.off(document, 'keydown', this.handleKeyDown);\n };\n\n /**\n * Keydown handler. Attached when modal is focused.\n *\n * @listens keydown\n */\n\n\n ModalDialog.prototype.handleKeyDown = function handleKeyDown(event) {\n // exit early if it isn't a tab key\n if (event.which !== 9) {\n return;\n }\n\n var focusableEls = this.focusableEls_();\n var activeEl = this.el_.querySelector(':focus');\n var focusIndex = void 0;\n\n for (var i = 0; i < focusableEls.length; i++) {\n if (activeEl === focusableEls[i]) {\n focusIndex = i;\n break;\n }\n }\n\n if (document.activeElement === this.el_) {\n focusIndex = 0;\n }\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\n\n ModalDialog.prototype.focusableEls_ = function focusableEls_() {\n var allChildren = this.el_.querySelectorAll('*');\n\n return Array.prototype.filter.call(allChildren, function (child) {\n return (child instanceof window.HTMLAnchorElement || child instanceof window.HTMLAreaElement) && child.hasAttribute('href') || (child instanceof window.HTMLInputElement || child instanceof window.HTMLSelectElement || child instanceof window.HTMLTextAreaElement || child instanceof window.HTMLButtonElement) && !child.hasAttribute('disabled') || child instanceof window.HTMLIFrameElement || child instanceof window.HTMLObjectElement || child instanceof window.HTMLEmbedElement || child.hasAttribute('tabindex') && child.getAttribute('tabindex') !== -1 || child.hasAttribute('contenteditable');\n });\n };\n\n return ModalDialog;\n}(Component);\n\n/**\n * Default options for `ModalDialog` default options.\n *\n * @type {Object}\n * @private\n */\n\n\nModalDialog.prototype.options_ = {\n pauseOnOpen: true,\n temporary: true\n};\n\nComponent.registerComponent('ModalDialog', ModalDialog);\n\n/**\n * @file track-list.js\n */\n/**\n * Common functionaliy between {@link TextTrackList}, {@link AudioTrackList}, and\n * {@link VideoTrackList}\n *\n * @extends EventTarget\n */\n\nvar TrackList = function (_EventTarget) {\n inherits(TrackList, _EventTarget);\n\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 * @param {Object} [list]\n * The child object with inheritance done manually for ie8.\n *\n * @abstract\n */\n function TrackList() {\n var tracks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var _ret;\n\n var list = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n classCallCheck(this, TrackList);\n\n var _this = possibleConstructorReturn(this, _EventTarget.call(this));\n\n if (!list) {\n list = _this; // eslint-disable-line\n if (IS_IE8) {\n list = document.createElement('custom');\n for (var prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n }\n }\n\n list.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(list, 'length', {\n get: function get$$1() {\n return this.tracks_.length;\n }\n });\n\n for (var i = 0; i < tracks.length; i++) {\n list.addTrack(tracks[i]);\n }\n\n // must return the object, as for ie8 it will not be this\n // but a reference to a document object\n return _ret = list, possibleConstructorReturn(_this, _ret);\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\n\n TrackList.prototype.addTrack = function addTrack(track) {\n var index = this.tracks_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get$$1() {\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 {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n this.trigger({\n track: track,\n type: 'addtrack'\n });\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\n\n TrackList.prototype.removeTrack = function removeTrack(rtrack) {\n var track = void 0;\n\n for (var 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\n this.tracks_.splice(i, 1);\n\n break;\n }\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 {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was removed.\n */\n this.trigger({\n track: track,\n type: 'removetrack'\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\n\n TrackList.prototype.getTrackById = function getTrackById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var track = this[i];\n\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n };\n\n return TrackList;\n}(EventTarget);\n\n/**\n * Triggered when a different track is selected/enabled.\n *\n * @event TrackList#change\n * @type {EventTarget~Event}\n */\n\n/**\n * Events that can be called with on + eventName. See {@link EventHandler}.\n *\n * @property {Object} TrackList#allowedEvents_\n * @private\n */\n\n\nTrackList.prototype.allowedEvents_ = {\n change: 'change',\n addtrack: 'addtrack',\n removetrack: 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (var event in TrackList.prototype.allowedEvents_) {\n TrackList.prototype['on' + event] = null;\n}\n\n/**\n * @file audio-track-list.js\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 */\nvar disableOthers = function disableOthers(list, track) {\n for (var 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 */\n\nvar AudioTrackList = function (_TrackList) {\n inherits(AudioTrackList, _TrackList);\n\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 function AudioTrackList() {\n var _this, _ret;\n\n var tracks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n classCallCheck(this, AudioTrackList);\n\n var list = void 0;\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].enabled) {\n disableOthers(tracks, tracks[i]);\n break;\n }\n }\n\n // IE8 forces us to implement inheritance ourselves\n // as it does not support Object.defineProperty properly\n if (IS_IE8) {\n list = document.createElement('custom');\n for (var prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n for (var _prop in AudioTrackList.prototype) {\n if (_prop !== 'constructor') {\n list[_prop] = AudioTrackList.prototype[_prop];\n }\n }\n }\n\n list = (_this = possibleConstructorReturn(this, _TrackList.call(this, tracks, list)), _this);\n list.changing_ = false;\n\n return _ret = list, possibleConstructorReturn(_this, _ret);\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\n\n AudioTrackList.prototype.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.enabled) {\n disableOthers(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track);\n // native tracks don't have this\n if (!track.addEventListener) {\n return;\n }\n\n /**\n * @listens AudioTrack#enabledchange\n * @fires TrackList#change\n */\n track.addEventListener('enabledchange', function () {\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 (_this2.changing_) {\n return;\n }\n _this2.changing_ = true;\n disableOthers(_this2, track);\n _this2.changing_ = false;\n _this2.trigger('change');\n });\n };\n\n return AudioTrackList;\n}(TrackList);\n\n/**\n * @file video-track-list.js\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 */\nvar disableOthers$1 = function disableOthers(list, track) {\n for (var 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 */\n\nvar VideoTrackList = function (_TrackList) {\n inherits(VideoTrackList, _TrackList);\n\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 function VideoTrackList() {\n var _this, _ret;\n\n var tracks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n classCallCheck(this, VideoTrackList);\n\n var list = void 0;\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].selected) {\n disableOthers$1(tracks, tracks[i]);\n break;\n }\n }\n\n // IE8 forces us to implement inheritance ourselves\n // as it does not support Object.defineProperty properly\n if (IS_IE8) {\n list = document.createElement('custom');\n for (var prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n for (var _prop in VideoTrackList.prototype) {\n if (_prop !== 'constructor') {\n list[_prop] = VideoTrackList.prototype[_prop];\n }\n }\n }\n\n list = (_this = possibleConstructorReturn(this, _TrackList.call(this, tracks, list)), _this);\n list.changing_ = false;\n\n /**\n * @member {number} VideoTrackList#selectedIndex\n * The current index of the selected {@link VideoTrack`}.\n */\n Object.defineProperty(list, 'selectedIndex', {\n get: function get$$1() {\n for (var _i = 0; _i < this.length; _i++) {\n if (this[_i].selected) {\n return _i;\n }\n }\n return -1;\n },\n set: function set$$1() {}\n });\n\n return _ret = list, possibleConstructorReturn(_this, _ret);\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\n\n VideoTrackList.prototype.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.selected) {\n disableOthers$1(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track);\n // native tracks don't have this\n if (!track.addEventListener) {\n return;\n }\n\n /**\n * @listens VideoTrack#selectedchange\n * @fires TrackList#change\n */\n track.addEventListener('selectedchange', function () {\n if (_this2.changing_) {\n return;\n }\n _this2.changing_ = true;\n disableOthers$1(_this2, track);\n _this2.changing_ = false;\n _this2.trigger('change');\n });\n };\n\n return VideoTrackList;\n}(TrackList);\n\n/**\n * @file text-track-list.js\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 */\n\nvar TextTrackList = function (_TrackList) {\n inherits(TextTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {TextTrack[]} [tracks=[]]\n * A list of `TextTrack` to instantiate the list with.\n */\n function TextTrackList() {\n var _this, _ret;\n\n var tracks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n classCallCheck(this, TextTrackList);\n\n var list = void 0;\n\n // IE8 forces us to implement inheritance ourselves\n // as it does not support Object.defineProperty properly\n if (IS_IE8) {\n list = document.createElement('custom');\n for (var prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n for (var _prop in TextTrackList.prototype) {\n if (_prop !== 'constructor') {\n list[_prop] = TextTrackList.prototype[_prop];\n }\n }\n }\n\n list = (_this = possibleConstructorReturn(this, _TrackList.call(this, tracks, list)), _this);\n return _ret = list, possibleConstructorReturn(_this, _ret);\n }\n\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\n\n TextTrackList.prototype.addTrack = function addTrack(track) {\n _TrackList.prototype.addTrack.call(this, track);\n\n /**\n * @listens TextTrack#modechange\n * @fires TrackList#change\n */\n track.addEventListener('modechange', bind(this, function () {\n this.trigger('change');\n }));\n\n var nonLanguageTextTrackKind = ['metadata', 'chapters'];\n\n if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) {\n track.addEventListener('modechange', bind(this, function () {\n this.trigger('selectedlanguagechange');\n }));\n }\n };\n\n return TextTrackList;\n}(TrackList);\n\n/**\n * @file html-track-element-list.js\n */\n\n/**\n * The current list of {@link HtmlTrackElement}s.\n */\n\nvar HtmlTrackElementList = function () {\n\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 function HtmlTrackElementList() {\n var trackElements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n classCallCheck(this, HtmlTrackElementList);\n\n var list = this; // eslint-disable-line\n\n if (IS_IE8) {\n list = document.createElement('custom');\n\n for (var prop in HtmlTrackElementList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = HtmlTrackElementList.prototype[prop];\n }\n }\n }\n\n list.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(list, 'length', {\n get: function get$$1() {\n return this.trackElements_.length;\n }\n });\n\n for (var i = 0, length = trackElements.length; i < length; i++) {\n list.addTrackElement_(trackElements[i]);\n }\n\n if (IS_IE8) {\n return list;\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\n\n HtmlTrackElementList.prototype.addTrackElement_ = function addTrackElement_(trackElement) {\n var index = this.trackElements_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get$$1() {\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\n\n HtmlTrackElementList.prototype.getTrackElementByTrack_ = function getTrackElementByTrack_(track) {\n var trackElement_ = void 0;\n\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (track === this.trackElements_[i].track) {\n trackElement_ = this.trackElements_[i];\n\n break;\n }\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\n\n HtmlTrackElementList.prototype.removeTrackElement_ = function removeTrackElement_(trackElement) {\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (trackElement === this.trackElements_[i]) {\n this.trackElements_.splice(i, 1);\n\n break;\n }\n }\n };\n\n return HtmlTrackElementList;\n}();\n\n/**\n * @file text-track-cue-list.js\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 */\n\nvar TextTrackCueList = function () {\n\n /**\n * Create an instance of this class..\n *\n * @param {Array} cues\n * A list of cues to be initialized with\n */\n function TextTrackCueList(cues) {\n classCallCheck(this, TextTrackCueList);\n\n var list = this; // eslint-disable-line\n\n if (IS_IE8) {\n list = document.createElement('custom');\n\n for (var prop in TextTrackCueList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, 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(list, 'length', {\n get: function get$$1() {\n return this.length_;\n }\n });\n\n if (IS_IE8) {\n return list;\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\n\n TextTrackCueList.prototype.setCues_ = function setCues_(cues) {\n var oldLength = this.length || 0;\n var i = 0;\n var l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n var defineProp = function defineProp(index) {\n if (!('' + index in this)) {\n Object.defineProperty(this, '' + index, {\n get: function get$$1() {\n return this.cues_[index];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\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\n\n TextTrackCueList.prototype.getCueById = function getCueById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var cue = this[i];\n\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n };\n\n return TextTrackCueList;\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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar TextTrackMode = {\n disabled: 'disabled',\n hidden: 'hidden',\n showing: 'showing'\n};\n\n/**\n * @file track.js\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 */\n\nvar Track = function (_EventTarget) {\n inherits(Track, _EventTarget);\n\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 function Track() {\n var _ret;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, Track);\n\n var _this = possibleConstructorReturn(this, _EventTarget.call(this));\n\n var track = _this; // eslint-disable-line\n\n if (IS_IE8) {\n track = document.createElement('custom');\n for (var prop in Track.prototype) {\n if (prop !== 'constructor') {\n track[prop] = Track.prototype[prop];\n }\n }\n }\n\n var trackProps = {\n id: options.id || 'vjs_track_' + newGUID(),\n kind: options.kind || '',\n label: options.label || '',\n language: options.language || ''\n };\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} label\n * The label of this track. 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 var _loop = function _loop(key) {\n Object.defineProperty(track, key, {\n get: function get$$1() {\n return trackProps[key];\n },\n set: function set$$1() {}\n });\n };\n\n for (var key in trackProps) {\n _loop(key);\n }\n\n return _ret = track, possibleConstructorReturn(_this, _ret);\n }\n\n return Track;\n}(EventTarget);\n\n/**\n * @file url.js\n * @module url\n */\n/**\n * @typedef {Object} url:URLObject\n *\n * @property {string} protocol\n * The protocol of the url that was parsed.\n *\n * @property {string} hostname\n * The hostname of the url that was parsed.\n *\n * @property {string} port\n * The port of the url that was parsed.\n *\n * @property {string} pathname\n * The pathname of the url that was parsed.\n *\n * @property {string} search\n * The search query of the url that was parsed.\n *\n * @property {string} hash\n * The hash of the url that was parsed.\n *\n * @property {string} host\n * The host of the url that was parsed.\n */\n\n/**\n * Resolve and parse the elements of a URL.\n *\n * @param {String} url\n * The url to parse\n *\n * @return {url:URLObject}\n * An object of url details\n */\nvar parseUrl = function parseUrl(url) {\n var props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n var a = document.createElement('a');\n\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n var addToBody = a.host === '' && a.protocol !== 'file:';\n var div = void 0;\n\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = '';\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n var details = {};\n\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (!details.protocol) {\n details.protocol = window.location.protocol;\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n *\n *\n * @param {string} url\n * URL to make absolute\n *\n * @return {string}\n * Absolute URL\n *\n * @see http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n */\nvar getAbsoluteURL = function getAbsoluteURL(url) {\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n var div = document.createElement('div');\n\n div.innerHTML = 'x';\n url = div.firstChild.href;\n }\n\n return url;\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 * @param {string} path\n * The fileName path like '/path/to/file.mp4'\n *\n * @returns {string}\n * The extension in lower case or an empty string if no\n * extension could be found.\n */\nvar getFileExtension = function getFileExtension(path) {\n if (typeof path === 'string') {\n var splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n var pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {string} url\n * The url to check.\n *\n * @return {boolean}\n * Whether it is a cross domain request or not.\n */\nvar isCrossOrigin = function isCrossOrigin(url) {\n var winLoc = window.location;\n var urlInfo = parseUrl(url);\n\n // IE8 protocol relative urls will return ':' for protocol\n var srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol;\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n var crossOrigin = srcProtocol + urlInfo.host !== winLoc.protocol + winLoc.host;\n\n return crossOrigin;\n};\n\nvar Url = (Object.freeze || Object)({\n\tparseUrl: parseUrl,\n\tgetAbsoluteURL: getAbsoluteURL,\n\tgetFileExtension: getFileExtension,\n\tisCrossOrigin: isCrossOrigin\n});\n\n/**\n * @file text-track.js\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 */\nvar parseCues = function parseCues(srcContent, track) {\n var parser = new window.WebVTT.Parser(window, window.vttjs, window.WebVTT.StringDecoder());\n var errors = [];\n\n parser.oncue = function (cue) {\n track.addCue(cue);\n };\n\n parser.onparsingerror = function (error) {\n errors.push(error);\n };\n\n parser.onflush = function () {\n track.trigger({\n type: 'loadeddata',\n target: track\n });\n };\n\n parser.parse(srcContent);\n if (errors.length > 0) {\n if (window.console && window.console.groupCollapsed) {\n window.console.groupCollapsed('Text Track parsing errors for ' + track.src);\n }\n errors.forEach(function (error) {\n return log.error(error);\n });\n if (window.console && window.console.groupEnd) {\n window.console.groupEnd();\n }\n }\n\n parser.flush();\n};\n\n/**\n * Load a `TextTrack` from a specifed 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 */\nvar loadTrack = function loadTrack(src, track) {\n var opts = {\n uri: src\n };\n var crossOrigin = isCrossOrigin(src);\n\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n xhr(opts, bind(this, function (err, response, responseBody) {\n if (err) {\n return log.error(err, response);\n }\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.WebVTT !== 'function') {\n if (track.tech_) {\n var loadHandler = function loadHandler() {\n return parseCues(responseBody, track);\n };\n\n track.tech_.on('vttjsloaded', loadHandler);\n track.tech_.on('vttjserror', function () {\n log.error('vttjs failed to load, stopping trying to process ' + track.src);\n track.tech_.off('vttjsloaded', loadHandler);\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 */\n\nvar TextTrack = function (_Track) {\n inherits(TextTrack, _Track);\n\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 * vesion 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 function TextTrack() {\n var _this, _ret;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, TextTrack);\n\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n var settings = mergeOptions(options, {\n kind: TextTrackKind[options.kind] || 'subtitles',\n language: options.language || options.srclang || ''\n });\n var mode = TextTrackMode[settings.mode] || 'disabled';\n var default_ = settings['default'];\n\n if (settings.kind === 'metadata' || settings.kind === 'chapters') {\n mode = 'hidden';\n }\n // on IE8 this will be a document element\n // for every other browser this will be a normal object\n var tt = (_this = possibleConstructorReturn(this, _Track.call(this, settings)), _this);\n\n tt.tech_ = settings.tech;\n\n if (IS_IE8) {\n for (var prop in TextTrack.prototype) {\n if (prop !== 'constructor') {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n var cues = new TextTrackCueList(tt.cues_);\n var activeCues = new TextTrackCueList(tt.activeCues_);\n var changed = false;\n var timeupdateHandler = bind(tt, function () {\n\n // Accessing this.activeCues for the side-effects of updating itself\n // due to it's 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 });\n\n if (mode !== 'disabled') {\n tt.tech_.ready(function () {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }, true);\n }\n\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 Object.defineProperty(tt, 'default', {\n get: function get$$1() {\n return default_;\n },\n set: function set$$1() {}\n });\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 Object.defineProperty(tt, 'mode', {\n get: function get$$1() {\n return mode;\n },\n set: function set$$1(newMode) {\n var _this2 = this;\n\n if (!TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode !== 'disabled') {\n\n this.tech_.ready(function () {\n _this2.tech_.on('timeupdate', timeupdateHandler);\n }, true);\n } else {\n this.tech_.off('timeupdate', timeupdateHandler);\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 {EventTarget~Event}\n */\n this.trigger('modechange');\n }\n });\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} cues\n * The text track cue list for this TextTrack.\n * @instance\n */\n Object.defineProperty(tt, 'cues', {\n get: function get$$1() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: function set$$1() {}\n });\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 Object.defineProperty(tt, 'activeCues', {\n get: function get$$1() {\n if (!this.loaded_) {\n return null;\n }\n\n // nothing to do\n if (this.cues.length === 0) {\n return activeCues;\n }\n\n var ct = this.tech_.currentTime();\n var active = [];\n\n for (var i = 0, l = this.cues.length; i < l; i++) {\n var cue = this.cues[i];\n\n if (cue.startTime <= ct && cue.endTime >= ct) {\n active.push(cue);\n } else if (cue.startTime === cue.endTime && cue.startTime <= ct && cue.startTime + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (var _i = 0; _i < active.length; _i++) {\n if (this.activeCues_.indexOf(active[_i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n\n\n // /!\\ Keep this setter empty (see the timeupdate handler above)\n set: function set$$1() {}\n });\n\n if (settings.src) {\n tt.src = settings.src;\n loadTrack(settings.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n return _ret = tt, possibleConstructorReturn(_this, _ret);\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\n\n TextTrack.prototype.addCue = function addCue(originalCue) {\n var cue = originalCue;\n\n if (window.vttjs && !(originalCue instanceof window.vttjs.VTTCue)) {\n cue = new window.vttjs.VTTCue(originalCue.startTime, originalCue.endTime, originalCue.text);\n\n for (var 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\n var tracks = this.tech_.textTracks();\n\n for (var i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\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\n\n TextTrack.prototype.removeCue = function removeCue(_removeCue) {\n var i = this.cues_.length;\n\n while (i--) {\n var cue = this.cues_[i];\n\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 return TextTrack;\n}(Track);\n\n/**\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\n\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 */\n\nvar AudioTrack = function (_Track) {\n inherits(AudioTrack, _Track);\n\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 function AudioTrack() {\n var _this, _ret;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, AudioTrack);\n\n var settings = mergeOptions(options, {\n kind: AudioTrackKind[options.kind] || ''\n });\n // on IE8 this will be a document element\n // for every other browser this will be a normal object\n var track = (_this = possibleConstructorReturn(this, _Track.call(this, settings)), _this);\n var enabled = false;\n\n if (IS_IE8) {\n for (var prop in AudioTrack.prototype) {\n if (prop !== 'constructor') {\n track[prop] = AudioTrack.prototype[prop];\n }\n }\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(track, 'enabled', {\n get: function get$$1() {\n return enabled;\n },\n set: function set$$1(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 {EventTarget~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 track.enabled = settings.enabled;\n }\n track.loaded_ = true;\n\n return _ret = track, possibleConstructorReturn(_this, _ret);\n }\n\n return AudioTrack;\n}(Track);\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 */\n\nvar VideoTrack = function (_Track) {\n inherits(VideoTrack, _Track);\n\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 function VideoTrack() {\n var _this, _ret;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, VideoTrack);\n\n var settings = mergeOptions(options, {\n kind: VideoTrackKind[options.kind] || ''\n });\n\n // on IE8 this will be a document element\n // for every other browser this will be a normal object\n var track = (_this = possibleConstructorReturn(this, _Track.call(this, settings)), _this);\n var selected = false;\n\n if (IS_IE8) {\n for (var prop in VideoTrack.prototype) {\n if (prop !== 'constructor') {\n track[prop] = VideoTrack.prototype[prop];\n }\n }\n }\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(track, 'selected', {\n get: function get$$1() {\n return selected;\n },\n set: function set$$1(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 {EventTarget~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 track.selected = settings.selected;\n }\n\n return _ret = track, possibleConstructorReturn(_this, _ret);\n }\n\n return VideoTrack;\n}(Track);\n\n/**\n * @file html-track-element.js\n */\n\n/**\n * @memberof HTMLTrackElement\n * @typedef {HTMLTrackElement~ReadyState}\n * @enum {number}\n */\nvar NONE = 0;\nvar LOADING = 1;\nvar LOADED = 2;\nvar ERROR = 3;\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 */\n\nvar HTMLTrackElement = function (_EventTarget) {\n inherits(HTMLTrackElement, _EventTarget);\n\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 * vesion 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 function HTMLTrackElement() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, HTMLTrackElement);\n\n var _this = possibleConstructorReturn(this, _EventTarget.call(this));\n\n var readyState = void 0;\n var trackElement = _this; // eslint-disable-line\n\n if (IS_IE8) {\n trackElement = document.createElement('custom');\n\n for (var prop in HTMLTrackElement.prototype) {\n if (prop !== 'constructor') {\n trackElement[prop] = HTMLTrackElement.prototype[prop];\n }\n }\n }\n\n var track = new TextTrack(options);\n\n trackElement.kind = track.kind;\n trackElement.src = track.src;\n trackElement.srclang = track.language;\n trackElement.label = track.label;\n trackElement['default'] = track['default'];\n\n /**\n * @memberof HTMLTrackElement\n * @member {HTMLTrackElement~ReadyState} readyState\n * The current ready state of the track element.\n * @instance\n */\n Object.defineProperty(trackElement, 'readyState', {\n get: function get$$1() {\n return readyState;\n }\n });\n\n /**\n * @memberof HTMLTrackElement\n * @member {TextTrack} track\n * The underlying TextTrack object.\n * @instance\n *\n */\n Object.defineProperty(trackElement, 'track', {\n get: function get$$1() {\n return track;\n }\n });\n\n readyState = NONE;\n\n /**\n * @listens TextTrack#loadeddata\n * @fires HTMLTrackElement#load\n */\n track.addEventListener('loadeddata', function () {\n readyState = LOADED;\n\n trackElement.trigger({\n type: 'load',\n target: trackElement\n });\n });\n\n if (IS_IE8) {\n var _ret;\n\n return _ret = trackElement, possibleConstructorReturn(_this, _ret);\n }\n return _this;\n }\n\n return HTMLTrackElement;\n}(EventTarget);\n\nHTMLTrackElement.prototype.allowedEvents_ = {\n load: 'load'\n};\n\nHTMLTrackElement.NONE = NONE;\nHTMLTrackElement.LOADING = LOADING;\nHTMLTrackElement.LOADED = LOADED;\nHTMLTrackElement.ERROR = ERROR;\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\nvar 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};\n\nObject.keys(NORMAL).forEach(function (type) {\n NORMAL[type].getterName = type + 'Tracks';\n NORMAL[type].privateName = type + 'Tracks_';\n});\n\nvar 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};\n\nvar ALL = mergeOptions(NORMAL, REMOTE);\n\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/**\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} Tech~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) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n\n var tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n var track = new ALL.text.TrackClass(options);\n\n tracks.addTrack(track);\n\n return track;\n}\n\n/**\n * This is the base class for media playback technology controllers, such as\n * {@link Flash} and {@link HTML5}\n *\n * @extends Component\n */\n\nvar Tech = function (_Component) {\n inherits(Tech, _Component);\n\n /**\n * Create an instance of this Tech.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} ready\n * Callback function to call when the `HTML5` Tech is ready.\n */\n function Tech() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var ready = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};\n classCallCheck(this, Tech);\n\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n\n // keep track of whether the current source has played at all to\n // implement a very limited played()\n var _this = possibleConstructorReturn(this, _Component.call(this, null, options, ready));\n\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\n ALL.names.forEach(function (name) {\n var props = ALL[name];\n\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/flash player doesn't report it.\n if (!_this.featuresProgressEvents) {\n _this.manualProgressOn();\n }\n\n // Manually track timeupdates in cases where the browser/flash player doesn't report it.\n if (!_this.featuresTimeupdateEvents) {\n _this.manualTimeUpdatesOn();\n }\n\n ['Text', 'Audio', 'Video'].forEach(function (track) {\n if (options['native' + track + 'Tracks'] === false) {\n _this['featuresNative' + track + 'Tracks'] = false;\n }\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\n if (!_this.featuresNativeTextTracks) {\n _this.emulateTextTracks();\n }\n\n _this.autoRemoteTextTracks_ = new ALL.text.ListClass();\n\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\n if (_this.constructor) {\n _this.name_ = _this.constructor.name || 'Unknown Tech';\n }\n return _this;\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\n\n Tech.prototype.triggerSourceset = function triggerSourceset(src) {\n var _this2 = this;\n\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', function () {\n return _this2.setTimeout(function () {\n return _this2.triggerSourceset(src);\n }, 1);\n });\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 {EventTarget~Event}\n */\n this.trigger({\n src: 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\n\n Tech.prototype.manualProgressOn = function manualProgressOn() {\n this.on('durationchange', this.onDurationChange);\n\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\n\n Tech.prototype.manualProgressOff = function manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n\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 {EventTarget~Event} event\n * The `ready` event that caused this to run.\n *\n * @listens Tech#ready\n * @fires Tech#progress\n */\n\n\n Tech.prototype.trackProgress = function 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 var numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n /**\n * See {@link Player#progress}\n *\n * @event Tech#progress\n * @type {EventTarget~Event}\n */\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\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 {EventTarget~Event} event\n * The `durationchange` event that caused this to run.\n *\n * @listens Tech#durationchange\n */\n\n\n Tech.prototype.onDurationChange = function 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\n\n Tech.prototype.buffered = function buffered() {\n return createTimeRanges(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\n\n Tech.prototype.bufferedPercent = function bufferedPercent$$1() {\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\n\n Tech.prototype.stopTrackingProgress = function 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\n\n Tech.prototype.manualTimeUpdatesOn = function manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n\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\n\n Tech.prototype.manualTimeUpdatesOff = function 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\n\n Tech.prototype.trackCurrentTime = function 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 {EventTarget~Event}\n */\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\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\n\n Tech.prototype.stopTrackingCurrentTime = function 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({ type: 'timeupdate', target: this, manuallyTriggered: true });\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\n\n Tech.prototype.dispose = function dispose() {\n\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\n if (this.manualTimeUpdates) {\n this.manualTimeUpdatesOff();\n }\n\n _Component.prototype.dispose.call(this);\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\n\n Tech.prototype.clearTracks = function clearTracks(types) {\n var _this3 = this;\n\n types = [].concat(types);\n // clear out all tracks because we can't reuse them between techs\n types.forEach(function (type) {\n var list = _this3[type + 'Tracks']() || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n\n if (type === 'text') {\n _this3.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\n\n Tech.prototype.cleanupAutoTextTracks = function cleanupAutoTextTracks() {\n var list = this.autoRemoteTextTracks_ || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n\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\n\n Tech.prototype.reset = function reset() {};\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\n\n Tech.prototype.error = function 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 wether 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\n\n Tech.prototype.played = function played() {\n if (this.hasStarted_) {\n return createTimeRanges(0, 0);\n }\n return createTimeRanges();\n };\n\n /**\n * Causes a manual time update to occur if {@link Tech#manualTimeUpdatesOn} was\n * previously called.\n *\n * @fires Tech#timeupdate\n */\n\n\n Tech.prototype.setCurrentTime = function setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) {\n /**\n * A manual `timeupdate` event.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\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\n\n Tech.prototype.initTrackListeners = function initTrackListeners() {\n var _this4 = this;\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link AudioTrackList}\n *\n * @event Tech#audiotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link VideoTrackList}\n *\n * @event Tech#videotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link TextTrackList}\n *\n * @event Tech#texttrackchange\n * @type {EventTarget~Event}\n */\n NORMAL.names.forEach(function (name) {\n var props = NORMAL[name];\n var trackListChanges = function trackListChanges() {\n _this4.trigger(name + 'trackchange');\n };\n\n var tracks = _this4[props.getterName]();\n\n tracks.addEventListener('removetrack', trackListChanges);\n tracks.addEventListener('addtrack', trackListChanges);\n\n _this4.on('dispose', function () {\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\n\n Tech.prototype.addWebVttScript_ = function addWebVttScript_() {\n var _this5 = this;\n\n if (window.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.body.contains(this.el())) {\n\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 var script = document.createElement('script');\n\n script.src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.12.4/vtt.min.js';\n script.onload = function () {\n /**\n * Fired when vtt.js is loaded.\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjsloaded');\n };\n script.onerror = function () {\n /**\n * Fired when vtt.js was not loaded due to an error\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjserror');\n };\n this.on('dispose', function () {\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.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\n\n Tech.prototype.emulateTextTracks = function emulateTextTracks() {\n var _this6 = this;\n\n var tracks = this.textTracks();\n var remoteTracks = this.remoteTextTracks();\n var handleAddTrack = function handleAddTrack(e) {\n return tracks.addTrack(e.track);\n };\n var handleRemoveTrack = function handleRemoveTrack(e) {\n return tracks.removeTrack(e.track);\n };\n\n remoteTracks.on('addtrack', handleAddTrack);\n remoteTracks.on('removetrack', handleRemoveTrack);\n\n this.addWebVttScript_();\n\n var updateDisplay = function updateDisplay() {\n return _this6.trigger('texttrackchange');\n };\n\n var textTracksChanges = function textTracksChanges() {\n updateDisplay();\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n };\n\n textTracksChanges();\n tracks.addEventListener('change', textTracksChanges);\n tracks.addEventListener('addtrack', textTracksChanges);\n tracks.addEventListener('removetrack', textTracksChanges);\n\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\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n\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\n\n Tech.prototype.addTextTrack = function addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\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\n\n Tech.prototype.createRemoteTextTrack = function createRemoteTextTrack(options) {\n var track = mergeOptions(options, {\n tech: this\n });\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=true]\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 * @deprecated The default functionality for this function will be equivalent\n * to \"manualCleanup=false\" in the future. The manualCleanup parameter will\n * also be removed.\n */\n\n\n Tech.prototype.addRemoteTextTrack = function addRemoteTextTrack() {\n var _this7 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var manualCleanup = arguments[1];\n\n var htmlTrackElement = this.createRemoteTextTrack(options);\n\n if (manualCleanup !== true && manualCleanup !== false) {\n // deprecation warning\n log.warn('Calling addRemoteTextTrack without explicitly setting the \"manualCleanup\" parameter to `true` is deprecated and default to `false` in future version of video.js');\n manualCleanup = true;\n }\n\n // store HTMLTrackElement and TextTrack to remote list\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack(htmlTrackElement.track);\n\n if (manualCleanup !== true) {\n // create the TextTrackList if it doesn't exist\n this.ready(function () {\n return _this7.autoRemoteTextTracks_.addTrack(htmlTrackElement.track);\n });\n }\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\n\n Tech.prototype.removeRemoteTextTrack = function removeRemoteTextTrack(track) {\n var 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\n\n Tech.prototype.getVideoPlaybackQuality = function getVideoPlaybackQuality() {\n return {};\n };\n\n /**\n * A method to set a poster from a `Tech`.\n *\n * @abstract\n */\n\n\n Tech.prototype.setPoster = function setPoster() {};\n\n /**\n * A method to check for the presence of the 'playsinine'